fpga float point ip的加法功能

要在FPGA上做浮点运算,Xilinx提供的Float Point IP是必不可少的。它能把16位半精度、32位单精度和64位双精度的加减乘除操作搬到硬件上去,速度比用纯软件执行快很多。今天,我们就来探讨一下这个IP核的加法功能。只要把这个入门级的运算搞清楚了,其他更复杂的操作也就不难了。 先来看一下数字在IP核里的表示方法。比如2.5这个数在手册里会被写成16’h4100,而0.0999755859375会被写成16’h2e66。这两个数值实际上是十六进制表示的,但它们背后有一套明确的规则。 以2.5为例来手算一下:符号位s是0,指数E需要用偏移量来表示,这在手册里都有说明。具体的计算方法是:整数位1加上小数位1.25,结果乘以2的指数次幂。对于这个例子,结果就是1×2^1×1.25=2.5。一旦符号位或者指数写错了,得到的结果就完全错了。 把这个IP核放进Vivado工程后,默认没有自带的例程来帮助我们进行仿真验证。不过不用担心,在demo_tb文件里有现成的测试文件。只要把这个文件拖进工程中,你就有了一个完整的仿真环境。在波形图中还能看到十进制的结果。 运行一次仿真就能看到16’h4100加上16’h3c00等于16’h7700,也就是5.5。这个过程比手算还快很多。 总结一下:先搞清楚浮点数在IP核里是怎么表示的,再谈性能问题。只要掌握了这个基础知识,你就能举一反三:乘除、融合运算还有流水线优化等等高阶玩法都建立在正确表达数据的基础上。把今天的手算步骤走一遍,下次再看到十六进制浮点数时,你脑子里会自动蹦出十进制答案。