verilog 浮点转定点_定点数和浮点数

定点数

定点数是指,数字在小数点之后和之前具有固定的位数。

可以用Qm.n表示法进行表示.

  • m位为整数部分 

  • n位小数部分

  • 有符号数的总位数N = m + n + 1

当n=0时,则定点数用来存储整数。

定点数(整数)

定点数可以用来存储整数,包括正整数和负整数。定点(整数)表示的常见格式有unsigned integer, offset binary, sign and magnitude, two’s complement。

假设每个整数都用4个bit来表示,则在上面四种格式下,二进制和十进制之间的关系如下图所示。

2c593b05d8adda9d388c5bfbc428e029.png

Unsigned integer是最直观的二进制格式,用windows自带的计算器就能实现换算。

 13a36a1843b92f979243a8acc06e887a.png

Offset binary与unsigned integer类似,不同之处是相同的二进制表示,offset binary下代表的十进制数与unsigned integer下代表的十进数有一个整体偏移,这样就可以表示负数。

比如在图1中,4 bit二进制数对应于整数-7~8,在offset binary格式下,十进制数整体偏移了7。

对于这个偏移量,没有固定标准,比如上面的偏移量是7,也可以为8。在ADC和DAC中,经常会用到offset binary.

sign and magnitude是表示负整数的另一种简单方法。 最左边的位为符号位,0代表正数,1代表负数。其他位是数字绝对值的标准二进制表示形式。因为对于零有两种表示形式,即0000(正零)和1000(负零),所以会导致一个浪费的位模式。

 7dbfcef00a6a9d668516e43b17d3af1d.png

Two’s complement(二进制补码)是硬件工程师喜欢的格式,也是计算机中通常表示整数的方式。 最左边的位为符号位,0代表数字为正数或0,1代表数字为1。

其编码模式可以理解为:

对于4bit二进制,其二进制表示仍为0000~1111。如上图所示,将圆盘分为16等分,把0000~1111依次带入。然后以0为分界线,按顺时针转,即0000~0111代表0~7;按逆时针转,即1111~1000代表-1~-8。

采用二进制补码时,对于正数,在十进制数和二进制补码之间进行转换很简单,即从十进制到二进制的简单转换。 对于负数,通常使用以下算法:

(1)取十进制数的绝对值,

(2)将其转换为二进制,

(3)对所有位进行补码(1变为零,0变为1),

(4)在二进制数上加1。

二进制补码对人类的大脑来说比较复杂,但是在进行数据处理时,则非常方便。

定点数(小数)

 4f3a19d2c739b0105c225027e481810b.png

以上是当N=16时,不同的m/n值时,所对应的动态范围和精度。

浮点数(实数)

浮点数的编码方案比定点的编码方案复杂,其基本概念与科学计数法中的基本思想相同,两者的不同点,在与浮点数的基为2,科学计数法的基为10。

ANSI/IEEE Std. 754-1985标准将32bit数据形式定义为单精度(single precision),64bit数据形式定义为双精度(double precision)。

以单精度为例,将其32位分为三个独立的组:位0到22形成尾数(记为M),位23到30形成指数(记为E),位31是符号位(记为S)。则:

 3fe38936a2e8faac38256d5fde97f1b6.png

IEEE标准将最大数和最小数的范围略微缩小,分别为fa1e808d828758fcc49b8027766d6126.png819407b77f7760763e320a8f2fc448f0.png

与定点设计相比,浮点设计会消耗更多的FPGA资源,带来更高的消耗。所以在满足指标要求的情况下,优先采用定点设计,可以有助于降低FPGA资源的使用、减少功耗。

文献[3]中,则阐述了,在保证指标的情况下,采用定点设计,可以减少资源使用,进而降低功耗。

f7989ad17252210b7a783a91d558e3b7.png

参考文献:

[1]The Scientist and Engineer's Guide to Digital Signal Processing_Ch4

[2]EE 3610 Digital Systems

[3]Ambrose Finnerty and Hervé Ratigner,Reduce Power and Cost by Converting from Floating Point to Fixed Point

[4]Floating Point Converter:https://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html

相关文献下载,可回复消息:“ 定点、浮点数文献下载“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux的实际操作:用户管理(删除用户userdel userdel -r)

首先需要查看当前有哪些用户 方法1: cat /etc/passwd 方法2: cd /home/ ll第一种删除(温柔式-保留家目录) userdel 用户名 (首先,保证在root用户的前提下去删除) 观察删除后的变化 第二种…

Linux的实际操作:查询用户id切换用户su -

1.查询用户信息:其中 (uid是用户的id号,gid是用户组的id号,属于哪个组) id 用户名 如果没有此用户,控制台就会返回信息“no such user” 2.切换用户: 在Linux操作中,如果当前的用户…

哔哩哔哩公司swot分析_「127」一个简单的工具分析自己的优势与劣势

今天要介绍的就是---SWOT分析方法。何谓SWOT,SWOT是由优势(Strength)、劣势(Weakness)、机会(Opportunity)和威胁(Threat)四个单词的第一个字母组成。SWOT分析是对组织或个人内外部条件各方面内容进行综合和概括,进而分析组织或个人的优劣势、面临的机会…

Linux的实际操作:用户管理(用户组的管理groupadd useradd usermod)

1.类似于管理角色,系统可以有共性的多个用户 2.增加一个用户组usergroup4 groupadd 新的用户组名 将user4指定到usergroup4中 useradd -g 用户组名 用户名 演示: 3.修改用户组 usermod -g 修改到的用户组名 用户名 创建一个usergroup5的用户组 将…

python 计时_Python time clock()方法

Python time clock()方法描述Python 3.8 已移除 clock() 方法 可以使用 time.perf_counter() 或 time.process_time() 方法替代。Python time clock() 函数以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。这个需要注意&#xf…

Linux的实际操作:用户管理(查看用户和组的配置文件/etc/passwd /etc/group /etc/shadow)

用户和用户组的相关文件 我们可以这样去理解,用户和用户组其实是我们虚构出来的东西,那这些东西肯定需要一个空间来存放他们吧,这个空间就是一些配置文件,里面可以完全查看你的用户或者用户组的信息,有些不过是进行了一…

拦截游戏窗口被移动_「维维足球pro-教案」50个传控踢法练习之(一、二)追球游戏...

如图所示,上方黄色虚线代表球的移动,中间黑色实线代表球员移动,下方黑色虚曲线代表球员带球移动。术语:卡斯特球员(kaasters):荷兰语“回传”。指站在指定地点,在一或两次触球内接到传球并回传的球员。(即进…

Linux:init0和shutdown -h哪个用来关机比较安全【转载】

shutdown - h 时首先会通知当前登陆系统的用户。 结束login.并会杀掉所有进程(有信号SIGTERM),可以让进程更安全的关闭。然后再调用init 0。。 init 0 就直接去执行/etc/rc.d/rc1.d里面的脚本了。 poweroff是halt的符号连接(等于halt -p)h…

30岁学python全栈_知乎热帖!戳痛100万程序员:我30岁了,我还能学Python吗?

"每个人对如何度过一生有着不同的答案,最重要的不是要不要“开始学习Python”,而是认识你自己。——LEWIS"最近,在知乎上看到关于30岁能不能学Python的话题,话题下有很多评论,这些评论既扎心有暖心&#xff…

Linux的实际操作:文件目录类的实用指令(init运行级别和找回root密码)

1.介绍运行级别 设计者把Linux系统设置为7个级别,常用的运行级别是3:(程序员)和5:(普通访问用户),就好像Windows系统杀毒的时候会进入到安全模式一样 0:关机 1:单用户【用于找回丢…

linux内核怎么修改屏幕旋转方向_运维必备:常见的Linux系统故障及其排查的方法...

Linux是当前市场上比较常用的、自由开源操作系统,也是云计算运维人员日常工作中的好帮手。不过很多初学云计算的小伙伴面对Linux系统出现的故障束手无策,接下来千锋广州云计算培训小编就给大家分享几个常见的Linux系统故障及其排查的方法。​1、root密码…

Linux的实际操作:文件目录类的实用指令(帮助指令 man help)

1.人的脑容量有限,需要记忆很多东西,当我们对某个指令不熟悉时,这时候可以通过Linux简单的帮助指令就可以查询到该指令的使用方法 man 获得帮助信息 基本语法:(记忆为,有问题找男人) man ls 通…

json最大长度限制_api接口返回动态的json格式?我太难了,尝试一下 linq to json

一:背景1. 讲故事前段时间和一家公司联调api接口的时候,发现一个奇葩的问题,它的api返回的json会动态改变,简化如下:{"Code":101,"Items":[{"OrderTitle":"订单1"}]}{"C…

Linux命令英文全称解释【转载】

Filesystem Hierarchy Standard(FHS) /:根目录,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。 /bin:bin 就是二进制(binary)英文缩写。在一般的系统当中…

python表格数据的储存和读取_python读取表格存储

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

Linux的实际操作:文件目录类的实用指令 (显示路径pwd 显示文件ls 更改目录cd)

文件目录类的相关指令汇总:(后续会有更新) 1.pwd指令 pwd 功能:显示当前工作目录的绝对路径 2.ls指令 ls ls 横向排列出所有不隐藏的文件与文件夹 ls -l ls -l 以列表的方式显示不隐藏的文件与文件夹的详细信息 ls -a ls -a…

前端wxml取后台js变量值_微信小程序云开发教程WXML入门数据绑定

同学们大家好,我是小伊同学,今天带领大家学习WXML部分一个重要的知识点,数据绑定。简单来讲,数据绑定就是通过双重花括号将一个变量绑定到界面上。首先,我们为什么要将变量绑定到页面上呢?因为在制作一个小…

Linux的实际操作:文件目录类的实用指令(创建目录mkdir 删除目录rmdir 递归删除目录rm -rf)

有时候我们会发现,Linux自带的层级结构的目录就那么几个,但是我们日常使用中不可能就这么几个而已,因此我们还需要主动去创建目录,相当于在原有路径的基础上,创建目录,这个目录值得是文件夹 1.mkdir 目录 …

python重定向cookie_模拟登陆中 302 重定向和 cookies 的一些困惑

我想写一个查询话费和流量的爬虫,关键是实现模拟登陆的这个部分。在登陆过程中,点击登陆之后,登陆表单会 post 到一个地址(这一步浏览器不显示),然后会 302 跳转到登陆成功的页面。我现在想得到登陆成功的 cookies ,不…

python变量名称的规定_Python 趣闻:如何获得变量的名字?

获取变量名今天我们探讨Python中一个看似很简单,实则并不容易的问题。这个问题是:如何获得变量的名字?举例说明,给定一个变量var,给它赋值字符串"foo"。即In [1]: var "foo"现在我们需要得到变量…