在IEEE-754规范(32位和64位)和IEEE-854(可变宽度)规范中,都对浮点数进行了定义。很多年前,处理器和IP中就开始使用浮点数了。浮点格式是一种很容易理解的格式,它是一个符号幅度系统,其中对符号的处理不同于对幅度的处理。
下面给出在Vivado 2017.2中使用VHDL语言添加浮点支持的详细步骤。
(1)在“Sources”窗口中,找到并单击设计文件,如top.vhd文件。在下面的“Source File Properties”窗口中,找到并单击“Type:”右侧的 按钮,出现“Set Type”对话框。
(2)在“Set Type”对话框“File type”右侧的下拉框中找到并选择“VHDL 2008”,将该文件设置为支持VHDL 2008的语法标准。
注 :(1)对于综合而言,需要将浮点运算库的声明语句设置为
library ieee;
use ieee.float_pkg.all;
(2)对于仿真而言,需要将浮点运算库的声明语句设置为
library ieee_proposed;
use ieee_proposed.float_pkg.all;
对于VHDL语言而言,不同精度的浮点数的范围表示为
(1)对于32位浮点数而言,范围为(8 downto-23),声明数据类型为float32。
其中:
① 8表示符号位。
② 7 downto 0表示指数部分,即8位宽度。
③-1 downto-23表示小数部分,即23位宽度。
(2)对于64位浮点数而言,范围为(11 downto-52),声明数据类型为float64。
其中:
① 11表示符号位。
② 10 downto 0表示指数部分,即11位宽度。
③-1 downto-52表示小数部分,即52位宽度。
(3)对于128位浮点数而言,范围为(15 downto-112),声明数据类型为float128。
其中:
① 15表示符号位。
② 14 downto 0表示指数部分,即15位宽度。
③-1 downto-112表示小数部分,即112位宽度。
(4)对于可变长度的浮点数而言,范围为(m downto n)。
其中:
① m为正整数,n为负整数。
② m表示符号位。
③ m-1 downto 0表示指数部分,即m位宽度。
④-1 downto n表示小数部分,即n位宽度。
单精度浮点数加法运算的VHDL描述如代码清单3-25所示。
代码清单3-25 单精度浮点数加法运算的VHDL描述
注 :(1) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_add路径中,打开该设计的可综合文件。
(2) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_add_sim路径中,打开该设计的仿真文件。
单精度浮点数加法运算的仿真结果如代码清单3.31所示。
图3.31 单精度浮点数加法运算的仿真结果
思考与练习3-30 :请分析单精度浮点数加法运算的仿真结果,验证设计的正确性。
单精度浮点数减法运算的VHDL描述如代码清单3-26所示。
代码清单3-26 单精度浮点数减法运算的VHDL描述
注 :(1) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_sub路径中,打开该设计的可综合文件。
(2) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_sub_sim路径中,打开该设计的仿真文件。
单精度浮点数减法运算的仿真结果如图3.32所示。
图3.32 单精度浮点数减法运算的仿真结果
思考与练习3-31 :请分析单精度浮点数减法运算的仿真结果,验证设计的正确性。
单精度浮点数乘法运算的VHDL描述如代码清单3-27所示。
代码清单3-27 单精度浮点数乘法运算的VHDL描述
注 :(1) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_mul路径中,打开该设计的可综合文件。
(2) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_mul_sim路径中,打开该设计的仿真文件。
单精度浮点数乘法运算的仿真结果如图3.33所示。
图3.33 单精度浮点数乘法运算的仿真结果
思考与练习3-32 :请分析单精度浮点数乘法运算的仿真结果,验证设计的正确性。
单精度浮点数除法运算的VHDL描述如代码清单3-28所示。
代码清单3-28 单精度浮点数除法运算的VHDL描述
注 :(1) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_div路径中,打开该设计的可综合文件。
(2) 读者可以定位到本书所提供资料的\fpga_dsp_example\float_point_div_sim路径中,打开该设计的仿真文件。
单精度浮点数除法运算的仿真结果如图3.34所示。
图3.34 单精度浮点数除法运算的仿真结果
思考与练习3-33 :请分析单精度浮点数除法运算的仿真结果,验证设计的正确性。