在日常生活中,我们常常需要到正数与负数,比如南北两级气温常年为零度以下,这个时候我们就需要负数来表示温度。那么在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中正负数和定点小数的表示方法相关推荐

  1. 二进制中正负数表示和判断

    二进制中第一位0代表正:1代表负我知道,但是给你一个二进制的数比如101 那么转化成十进制应该是多少? 5?  但不是说首位为1应该是负的吗??? 谁能给我讲讲这个首位什么时候作为符号,什么时候作为数 ...

  2. Java中正负数二进制表示

    在Java/C++中正数和负数的存储方式 正数是以正码的形式存储 负数是以补码的形式存储 正码(正数使用) 正码就是一个数的真实值 假设有一个 int (32位)类型的数,值为5,那么,我们知道它在计 ...

  3. php正负数都转成正数,PHP将数组中负数全部变为正数的方法

    PHP将数组中负数全部变为正数的方法 发布时间:2020-08-21 10:40:56 来源:亿速云 阅读:66 作者:小新 这篇文章主要介绍PHP将数组中负数全部变为正数的方法,文中介绍的非常详细, ...

  4. 学习-Java数组之foreach遍历数组之正负数数量统计

    第1关:学习-Java数组之foreach遍历数组之正负数数量统计 任务描述 相关知识 foreach 语句 编程要求 测试说明 任务描述 本关任务:使用 foreach 语句统计数组中正负数的个数. ...

  5. fpga中例化乘法器_“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛------Spartan3硬件乘法器使用详解(4)...

    h前面已经介绍了Spartan3系列FPGA中硬件乘法器的用途.调用方法.结构特定等等,还介绍了使用一个专用硬件乘法器同时处理两个乘法的方法.接下来对它的一些具体使用方法做更深入的介绍. 1. 使用X ...

  6. FPGA中双向IO端口的应用

    FPGA 是现场可编程门阵列的缩写,它是在PAL,GAL 及 EPLD 等可编程器件的基础上发展起来的.FPGA 具有速度快.密度高.功耗小的特点.采用 FPGA 芯片进行专用集成电路设计,既可以解决 ...

  7. 计算机中的正负数表示

    计算机中的正负数表示 在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位 ...

  8. 正负数在计算机中的表示(原码反码补码)及位运算

    负数在现代计算机里一般用补码表示(正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 ...

  9. c语言int2字节负数类型范围,C语言中的正负数以及数值溢出

    C语言中的正负数以及数值溢出 在数学中,数字有正负之分.在C语言中也是一样.下面是小编分享的C语言中的正负数以及数值溢出,欢迎大家参考! 在C语言中,short.int.long 都可以带上符号,例如 ...

最新文章

  1. 宏基因组蚂蚁森林公益合种树项目,支持祖国绿化事业,让世界更美好
  2. 2009年9月三级网络技术51CTO版考前压轴试题
  3. Testing and Test-First Programming
  4. Java黑皮书课后题第4章:*4.23(金融应用:酬金)编写一个程序,读取下面信息,然后输出一个酬金声明
  5. SAP Spartacus org unit list点击item之后的页面跳转实现
  6. SAP Spartacus产品转盘页面(ProductCarousel)的产品数据批量加载实现细节
  7. hightmaps 按地图上显示的统计数据
  8. 安卓 时间服务器_官方都被惊动!LOL手游日本服务器挤到瘫痪,IOS不得不推迟...
  9. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式...
  10. java 操作日志记录_高效日志系统搭建秘技!架构师必读
  11. GCC编译器的使用方法
  12. 小波分析工具包 matlab,matlab小波工具箱下载|
  13. 电力拖动PLC可编程控制器技能实训QY-DL865
  14. lunix 下编译draco遇到的问题及解决办法
  15. [0x7FFE1E17E050] ANOMALY: meaningless REX prefix used cmd窗口activate报错
  16. 绍兴一中信心赛 T1排列
  17. X线计算机体肺小结节肿瘤,肺小结节影像诊断
  18. Rita Hayworth and Shawshank Redemption
  19. Unable to open underlying table
  20. rocksdb配置参数

热门文章

  1. matlab读气象数据,中国气象数据网
  2. 爱思华宝邮件服务器协同工作服务 功能介绍及其实现方法
  3. 适合企业的免费路由器操作系统
  4. 《ROS机器人程序设计》期末测评试卷 (ROS2)
  5. 微信小程序 实现搜索框功能
  6. Order By文件排序和索引排序
  7. 简单的一个自动化测试脚本
  8. Linux系统查看CPU使用率、内存使用率、磁盘使用率
  9. Mongod 基础知识 + 命令 + 配置文件
  10. vertx和springboot整合案例