介绍
浮点运算器(英文:floating point unit,简称FPU)是计算机系统的一部分,它是专门用来进行浮点数运算的(CPU中也叫ALU)。
现在很多高端处理器都有自己的FPU,用来做一些特殊的运算,虽然早期的单片机是没有FPU的,但是经过十几年的发展,现在的单片机都有属于自己的FPU,虽然其功能不是特别强大,但是最够其单芯片应用环境下的运算使用。
目前简单的FPU的运算有加减乘除和开方。复杂些还可以计算超越函数,例如指数函数或者三角函数,尽管对大多数现在的处理器,这些功能都由软件的函数库完成。
接下来介绍一些FPU项目。
❝
https://github.com/dawsonjon/fpu
❝
https://opencores.org/projects/fpu100
这是GitHub上排名比较靠前的FPU开源项目,下面是他的介绍:
Verilog 中可合成的 IEEE 754 浮点库。每个算术模块接受两个 32 位数据流 a 和 b,并输出一个数据流 z。
码流接口在下面手册中有描述:
❝
https://github.com/dawsonjon/fpu
提供的运算:
提供除法器、乘法器和加法器
提供 float_to_int 和 int_to_float
支持非正规数
区域优化
超过 100,000,000 个测试向量(每个函数)
二
❝
https://opencores.org/projects/fpu
这是OpenCores上的开源项目:
描述
这是一个单精度浮点单元。它完全符合 IEEE 754 标准。它目前可以执行加/减、乘/除 操作,以及整数到浮点数和浮点数到整数的转换。它支持四种舍入模式:舍入到最近的偶数、舍入到零、舍入到+INF和舍入到-INF。
现在还有一个单独的 FP 比较单元。它位于 fpu/fcmp 目录中。
兼容性
FPU 100% 符合 IEEE 754。已经跑了超过 1400 万测试向量,使用 John R. Hauser 的 SoftFloat 库生成,可在以下网址找到:http ://www.jhauser.us/arithmetic/SoftFloat.html 。
性能
单周期执行
4 阶段流水线
三
❝
https://github.com/danshanley/FPU
这也是符合IEEE 754的FPU项目,相关的测试脚本也很完善。
四
❝
https://github.com/pulp-platform/fpu
这是专门为pulp-platform(基于RISC-V的SoC平台)制作的FPU,是经过流片验证的。
关于pulp-platform的介绍请查看《RISC-V项目介绍》及下方的官方网址:
❝
https://pulp-platform.org//
五
❝
https://github.com/cnrv/CNRV-FPU
❝
https://github.com/jm2000/RISCV-FPU
这也是专门为RISC-V定制的FPU项目。
六
❝
https://github.com/freecores/double_fpu
这是Xilinx器件实现的双精度FPU,使用了FPGA内部的DSP资源。
七
❝
https://github.com/GSejas/Dise-o-ASIC-FPGA-FPU
这也是Xilinx器件实现的FPU,既可以在Xilinx FPGA上使用,也可以作为ASIC设计一部分。
八
❝
https://github.com/SeanZarzycki/openSPARC-FPU
这个从标题就能看出来,这是专门为openSPARC这一CPU设计的FPU。
openSPARC的项目地址:https://www.oracle.com/servers/technologies/opensparc-overview.html
也是开源的CPU。
九
❝
https://github.com/YutaPic/FPU
这也是在Xilinx FPGA上验证的FPU,下面是在KCU105开发板上运行的性能:
总结
今天只介绍了几个FPU的项目,在SoC盛行的时代,有助于集成到你的系统里,同时一些运算的Verilog代码也是值得参考的。运算和数字电路设计,这里推荐一个名为《Computer Arithmetic - Algorithms and Hardware Designs》的PDF,关于这些运算的理论知识都可以在这里学到。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !