verilog 定点数、浮点数是什么?怎么表示?怎么做运算?

本文探讨了在FPGA中如何用Verilog实现定点数和浮点数的运算。定点数通过固定小数点位置提高精度,FPGA中常将其限制在-1到1之间。浮点数则利用指数和尾数表示,具有更大的表示范围和精度,但计算复杂。在Verilog中,加减法、乘法及其他运算需考虑小数点位置,乘法可能综合成硬件乘法器。除法等运算需通过基本操作分解实现。
摘要由CSDN通过智能技术生成

    

目录

1. 定点数

1)定点数概念

2)FPGA中定点数的表示

2. 浮点数

1)浮点数概念

3. VERILOG计算   

1)加减法      

2)乘法运算

3)其他运算


    对于计算机如何表示二进制的定点数的理论,网上及书上都有说明,但是如何用verilog代码写出来呢?这就是本文主要学习的内容。

1. 定点数

1)定点数概念

        定点数主要是确定小数点的位置,小数点后的二进制位数越多,所表示的数据的精度就越高,例如下图能表示的精度就是2^(-5)=0.03125,误差也就<0.03125。下图所表示的数=2^{2}+2^{1}+2^{0}+2^{-1}+2^{-2}+2^{-3}+2^{-4}+2^{-5}=4+2+1+0.5+0.25+0.125+0.0625+0.03125=7.96875.

这里写图片描述

也可以表示为:0xff/2^5= 7.96875.

2)FPGA中定点数的表示

       模块之间的连接是无法传递小数点的。在FPGA中,定点数会通常取绝对值小于1。即,在数字处理时,定点数通常把数限制在-1~1之间,把小数点规定在符号位和数据为之间,而把整数位作为符号位,分别用0,1表示正负,尾数即数的本身只有小数部分。数x的定点数表示为:x=a_{B-1}\Delta a_{B-2}\cdot \cdot \cdot a_{1}a_{0}. B为数据位宽,表示寄存器的长度为B位。a_{B-1}为符号位。

2. 浮点数

1)浮点数概念

        浮点数A由m和e组成,A=m*b^{e}。同时,会有固定的数值基数b和精度B来辅助计算,b为计数系统的基,由国际标准规定,IEEE 754规定b=2;精度B表示使用多少位来存储,m为B位二进制数。

        IEEE 754标准中定义了4种浮点数格式,常用的有单精度(32位浮点数),双精度(64位定点数),其中单精度浮点数格式如下: V=(-1))^{S}*2^{E-127}*(1.M)

       浮点数表示的范围大,精度高,但是加法乘法计算过过程复杂,更占用FPGA的资源。

3. VERILOG计算   

     上面说过,在FPGA中,没办法区分小数点,只是通过线的形式传递数据,最多能在最高位显示符号,而没办法显示小数。verilog会将输入的数据以最低位对齐进行计算。因此,如果需要计算,需要设计者自己隐性规定小数点的位置,且被计算数的小数点必须对齐。

1)加减法      

        在FPGA中,用有无符号的二进制进行加减法得到的二进制结果是一样的,但是转换乘10进制就会根据是否有溢出会有不同,如果没有溢出,那么有无符号的十进制结果相同,如果有溢出,同样的二进制数表示的十进制就会不同。做加减法运算用有无符号数的数没有明显差别,但是在做数据比较时,定义了有无符号会有明显的不同。

2)乘法运算

        如果选用的目标器件内部集成了专用的硬件乘法器核,则verilog语言的乘法运算符在综合成电路时将直接综合成硬件乘法器,否则综合成由LUT等基本原件组成的乘法电路。

3)其他运算

        在FPGA中,除法、指数、求模、求余等操作无法直接进行运算,而是分解成加、减、移位等操作来逐步完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值