VHDL可以直接定义浮点数或定点小数?verilog不行吧?
时间:10-02
整理:3721RD
点击:
最近想用FPGA作算法,但对于小数和浮点数计算很困惑,有此疑问,请大家多多指教,先谢过。
1:在verilog中定义的接口,都是input、output之类,表示的也都是固定位的整数,但我在何宾老师写的xilinx FPGA数字信号处理权威指南中看到,例子都是用VHDL写的,而且在添加了库声明和库调用语句后,可以直接定义定点数,如ufixed(4 downto 0),或浮点数float32,然后在代码中直接用+ - * /进行运算,这具是可以综合的么?如果VHDL可以直接这么定义小数的话,那作算法是不是用VHDL更好,输入输出直接用小数给定,不用转换成整数了?verilog中有类似功能么?
2:在sysgen中,用模型搭建算法,都有个边界,就是gateway,在个作用是在仿真中将输入的浮点信号转换成定点信号,可是这么作仿真是没问题了,但他生成的模块,我要从别的模块给输入,给的还是定点数啊,那岂不是每个定点小数还得转换成整数给进去才能用?浮点运算IP核也有这样的疑问,他们的输入端口都是定点数吧,用verilog怎么例化,有没有好的参考例子呢?
1:在verilog中定义的接口,都是input、output之类,表示的也都是固定位的整数,但我在何宾老师写的xilinx FPGA数字信号处理权威指南中看到,例子都是用VHDL写的,而且在添加了库声明和库调用语句后,可以直接定义定点数,如ufixed(4 downto 0),或浮点数float32,然后在代码中直接用+ - * /进行运算,这具是可以综合的么?如果VHDL可以直接这么定义小数的话,那作算法是不是用VHDL更好,输入输出直接用小数给定,不用转换成整数了?verilog中有类似功能么?
2:在sysgen中,用模型搭建算法,都有个边界,就是gateway,在个作用是在仿真中将输入的浮点信号转换成定点信号,可是这么作仿真是没问题了,但他生成的模块,我要从别的模块给输入,给的还是定点数啊,那岂不是每个定点小数还得转换成整数给进去才能用?浮点运算IP核也有这样的疑问,他们的输入端口都是定点数吧,用verilog怎么例化,有没有好的参考例子呢?
verilog里是real,不可综合。
感觉vhdl里的浮点数应该也不可综合。
其实在硬件里,浮点数也就是一个32bit或64bit的数(参见IEEE 754 标准)。
谢谢您的回复。如果是定点数,整数和小数都好理解,按加权值都可以容易算出对应的二进制码,或是定义好整数位与小数位,也比较容易从二进制推出十进制的数来,或者说编程的时候很容易转换,但如果是浮点数,根据IEEE的标准,不太容易用一段统一的代码将一个十进制数转换成浮点数表示,除非用浮点IP核吧?
