FPGA中正负数和定点小数的表示方法
在日常生活中,我们常常需要到正数与负数,比如南北两级气温常年为零度以下,这个时候我们就需要负数来表示温度。那么在FPGA工程里面也是这样,我们如果想要做温度监测工程,自然而然的就会需要到负数来表达零下的温度。当然FPGA中除了数字正负的表达,还需要用到小数。在加减乘除的运算中,小数的出现是不可避免的。作为FPGA工程师,我们无法保证所有设计都不出现负数或者小数的情况,不能避免我们就克服,今天就为大家分享一下FPGA中负数与小数的表达。
一、负数的表达
关于负数,大家都知道在任何正数前加上负号便成了负数,比如“π”前面加上负号为“-π”,“0.178”前面加上负号为“-0.178”。FPGA传输信号使用的是二进制表达,同样二进制的负数表达也是在正数前面增加一个负号。即“1110”加负号为“-1110”,“1010100”前面加负号为“-1010100”。
明确了二进制负数的表达,我们再来考虑如何通过信号传输。在计算机中,数字信号的大小常用有限位的二进制数表示。信号1为高电平,信号0为低电平,高低电平的变化即可得到对应的信号。想要传输多位信号,就增加对应的线即改变位宽。例如我们需要传输五位二进制数10100就需要5条线,第一条线为高电平传输“1”,第二条线为低电平传输“0”,第三条线为高电平传输“1”,第四条线为低电平传输“0”,第五条线为低电平传输“0”。记住信号传输的原理,我们来考虑负数的表示。
在表示负数之前,我们需要明确一个理念—约定,即你我双方一起遵守一个协议从而达成合作。就如手机制造商和耳机制造商合作一样,如果想要耳机与手机达成适配,就需要达成约定使用一个标准。比如一致的使用圆孔,或者约定使用type-c接口;同时也要约定使用国际标准还是国家标准。如果没有达成约定,两个厂家想当然的进行设计,手机使用了国际标准的type-c接口,耳机却是国家标准的圆孔,那想要达成最终合作也只会变成一场空,无论如何都是无法成功传输声音的。关于数据传输也是一样的,甲乙两个模块之间需要传输数据,一起约定了共传输六位数据,但是第一位数据不考虑,只取后五位。即传输信号为“101011”,其实表达的为“01011”。这个时候两个模块之间一方没有遵守约定,就会得出两种截然不同的结果。
理解了约定的概念,我们自然而然就解决了负数的问题。前面说过负数是在数的前面增加一个负数符号,那么我们就可以事先约定一条表示正负的线,并且此线为传输数据的第一条线,高电平1为负,低电平0为正。这时传输的数据就如下表所示:
二进制信号表示 | 约定前的十进制表示 | 约定后的十进制表示 |
---|---|---|
001 | 1 | +1 |
101 | 5 | -1 |
010 | 2 | +2 |
011 | 3 | +3 |
111 | 7 | -3 |
可以看出,我们约定为将第一位表示正负是完全没有问题的,当然我们也发现,约定前和约定后的数值是完全不一样的。因此在设计代码的时候一定要注意,模块与模块之间的传输,一定要同时遵守同一约定。遵守约定后,不论我们是约定第几条线表示正负,都可以达到数据正确传输的效果。
二、小数的表达
学习了负数的表达,感受了约定的力量,那么小数的表达也就迎刃而解了。这里有的同学会问,我也需要增加一根线表示小数点吗,其实是不用的。就算加入了一条线,电平不会有变化,不但给数值的表示增加了困难,还浪费了资源,属于多此一举的行为。但是我们也知道一个3位二进制数字“101”,小数点的位置不同时,对应的值就不同。同样我们需要在事先约定好,这里的约定,即是小数点的位置。并不需要将小数点实际的表示出来,但是传输信号双方需要约定好,并且互相都以小数点位置是已知的为基础进行信号传输的。
比如对于刚刚的3位二进制数字“101”,定位小数点在第二位之后,那么此二进制数字为“10.1”即十进制的“2.5”。我们管小数点位置固定的数称为定点小数。确定了小数点的位置,自然而然我么就确定了小数点后有几位数。我们使用Qn来表示小数点后有n位的定点小数,如同样是5位二进制数字“10101”,将其不同小数位置表示出来如下:
5位二进制数 | 小数点位置 | 对应小数表达 |
---|---|---|
10101 | Q0 | 10101 |
10101 | Q1 | 1010.1 |
10101 | Q2 | 101.01 |
10101 | Q3 | 10.101 |
10101 | Q4 | 1.0101 |
10101 | Q5 | 0.10101 |
因此我们只要定位了小数点后需要跟几位数字,就可以在FPGA中表达小数。比如约定6位二进制数字的小数点之后有4位就叫做Q4格式的定点小数,随机拿一个数字表达即“0.1010”;比如约定10为二进制的小数点之后有7位就叫做Q7格式的定点小数,随机拿一个数字表达即“011.0111010”。
以上就是FPGA中负数和小数的表达,我们再来回顾一下,负数的表达方式为增加一位信号,小数的表达方式则是定位小数点。但是不论是哪种方式,我们都想传达给大家一个思想,就是不论多么复杂的传输内容,传输数据双方都可以对其进行约定,只要约定达成一致,那么传输任何数据都没有问题了。
FPGA中正负数和定点小数的表示方法相关推荐
- 二进制中正负数表示和判断
二进制中第一位0代表正:1代表负我知道,但是给你一个二进制的数比如101 那么转化成十进制应该是多少? 5? 但不是说首位为1应该是负的吗??? 谁能给我讲讲这个首位什么时候作为符号,什么时候作为数 ...
- Java中正负数二进制表示
在Java/C++中正数和负数的存储方式 正数是以正码的形式存储 负数是以补码的形式存储 正码(正数使用) 正码就是一个数的真实值 假设有一个 int (32位)类型的数,值为5,那么,我们知道它在计 ...
- php正负数都转成正数,PHP将数组中负数全部变为正数的方法
PHP将数组中负数全部变为正数的方法 发布时间:2020-08-21 10:40:56 来源:亿速云 阅读:66 作者:小新 这篇文章主要介绍PHP将数组中负数全部变为正数的方法,文中介绍的非常详细, ...
- 学习-Java数组之foreach遍历数组之正负数数量统计
第1关:学习-Java数组之foreach遍历数组之正负数数量统计 任务描述 相关知识 foreach 语句 编程要求 测试说明 任务描述 本关任务:使用 foreach 语句统计数组中正负数的个数. ...
- fpga中例化乘法器_“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(4)...
h前面已经介绍了Spartan3系列FPGA中硬件乘法器的用途.调用方法.结构特定等等,还介绍了使用一个专用硬件乘法器同时处理两个乘法的方法.接下来对它的一些具体使用方法做更深入的介绍. 1. 使用X ...
- FPGA中双向IO端口的应用
FPGA 是现场可编程门阵列的缩写,它是在PAL,GAL 及 EPLD 等可编程器件的基础上发展起来的.FPGA 具有速度快.密度高.功耗小的特点.采用 FPGA 芯片进行专用集成电路设计,既可以解决 ...
- 计算机中的正负数表示
计算机中的正负数表示 在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位 ...
- 正负数在计算机中的表示(原码反码补码)及位运算
负数在现代计算机里一般用补码表示(正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 ...
- c语言int2字节负数类型范围,C语言中的正负数以及数值溢出
C语言中的正负数以及数值溢出 在数学中,数字有正负之分.在C语言中也是一样.下面是小编分享的C语言中的正负数以及数值溢出,欢迎大家参考! 在C语言中,short.int.long 都可以带上符号,例如 ...
最新文章
- 宏基因组蚂蚁森林公益合种树项目,支持祖国绿化事业,让世界更美好
- 2009年9月三级网络技术51CTO版考前压轴试题
- Testing and Test-First Programming
- Java黑皮书课后题第4章:*4.23(金融应用:酬金)编写一个程序,读取下面信息,然后输出一个酬金声明
- SAP Spartacus org unit list点击item之后的页面跳转实现
- SAP Spartacus产品转盘页面(ProductCarousel)的产品数据批量加载实现细节
- hightmaps 按地图上显示的统计数据
- 安卓 时间服务器_官方都被惊动!LOL手游日本服务器挤到瘫痪,IOS不得不推迟...
- Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式...
- java 操作日志记录_高效日志系统搭建秘技!架构师必读
- GCC编译器的使用方法
- 小波分析工具包 matlab,matlab小波工具箱下载|
- 电力拖动PLC可编程控制器技能实训QY-DL865
- lunix 下编译draco遇到的问题及解决办法
- [0x7FFE1E17E050] ANOMALY: meaningless REX prefix used cmd窗口activate报错
- 绍兴一中信心赛 T1排列
- X线计算机体肺小结节肿瘤,肺小结节影像诊断
- Rita Hayworth and Shawshank Redemption
- Unable to open underlying table
- rocksdb配置参数