FPGA 知识点
小数计算
小数又叫浮点数在算法中比较常用,在程序设计中有专门的数据类型IEEE754,单精度浮点single和double双精度浮点,单精度浮点在内存中占用4byte,基本结构为1bit符号为+8bit整数位+23bit小数位。-127到128。双精度浮点在内存中占用8byte,基本结构为1bit符号为+11bit整数位+52bit小数位-1024 到+1024之间。
FPGA在处理小数时如果数据范围和精度合适,可以直接使用single 和 double 双精度浮点型IP进行转换,将整形转换成浮点型进行计算。这样做需要的资源略多一些。如果资源富裕是可以使用。另一种情况是手动进行转换。手动转换第一步是确定浮点计算精度,比如精度为0.1 小数部分就需要7个bit机型表示,计算到0.01超出精度一位
,一个bit代表是1/128,根据数据大小确定整数部分的bit宽度,暂定为5bit。例如有一个数据是5.38,确定精度为0.01,小数部分需要7bit表示。将5.38*(2^7) = 688.64 取整为688,这就是一个12bit 的数688。在FPGA内部对其进行乘除计算,得出结果后再除去(2^7)得到原始大小,假设进行乘4操作,688*4=2752,转换成2进制 1010 1100 0000 分解一下,整数部分1_0101、小数部分100_0000。转换成10进制为21.5。如果计算加法需要分别计算正式部分和小数部分。