我生成随机浮点数(十进制格式)并将它们保存在文本文件中。我用VHDL编写了一个用于读取该文件的代码。现在我想将这些浮点数转换为IEEE格式(32位或64位)。有没有我可以用来工作的图书馆。 或者VHDL中有任何代码。?
由于
答案 0 :(得分:0)
有一个VHDL浮点包:
答案 1 :(得分:0)
您可以通过纯软件脚本将浮点数转换为IEEE 754(例如1.0 - > 0x3F800000):
matlab脚本:
Matlab程序,用于将实数转换为IEEE 754浮点格式的数字 http://users.eecs.northwestern.edu/~ismail/courses/c92/fpu/
lisp脚本:http://common-lisp.net/project/ieee-floats/
使用ieee-floats中定义的 encode-float32 ,可以快速转换。
(defun fix2float (fp)
(format t "~%~x~T~x" fp (ieee-floats:encode-float32 fp)))
(fix2float 1.1)
至于硬件库,Vfloat(Xiaojun Wang,2010)值得一试。
答案 2 :(得分:-1)
如果要在VHDL中使用随机数,为什么不使用* math_real *库中的UNIFORM函数?统一是你的功能,用法在定义中解释
procedure UNIFORM (variable Seed1,Seed2:inout integer; variable X:out real);
-- returns a pseudo-random number with uniform distribution in the
-- interval (0.0, 1.0).
-- Before the first call to UNIFORM, the seed values (Seed1, Seed2) must
-- be initialized to values in the range [1, 2147483562] and
-- [1, 2147483398] respectively. The seed values are modified after
-- each call to UNIFORM.
-- This random number generator is portable for 32-bit computers, and
-- it has period ~2.30584*(10**18) for each set of seed values.
--
-- For VHDL-1992, the seeds will be global variables, functions to
-- initialize their values (INIT_SEED) will be provided, and the UNIFORM
-- procedure call will be modified accordingly.
如果这不是您所需要的,请使用* std_textio *包来读取数据:
procedure READ(L:inout LINE; VALUE: out real; GOOD : out BOOLEAN);
procedure READ(L:inout LINE; VALUE: out real);