2017-06-11 70 views
0

我有一个包含数字的字符串,例如3.76,我想将此解析的字符串转换为vhdl中的sfixed值。我使用的技巧是使用real'image(字符串)将字符串转换为实数,然后调用to_fixed(value, integer part, -precision)。但是这种方法不可综合(real'image)。我想知道是否有其他方法,例如将字符串转换为std_logic_vector,然后使用To_slv()将其转换为固定值。在可合成的vhdl中,将字符串例如3.76转换为sfixed表示法的步骤是什么?将字符串类型编号转换为可合成的字符串vhdl

+1

哪里串从何而来?文件?只读存储器?其他IO?你如何看待硬件中的解析?也许你应该解释更多关于你的应用程序和你的设置.. – JHBonarius

+0

该字符串来自一个输入文件。此文件包含此格式的字符串,例如3.344 1.456 4.452。这些值在初始化时加载到固定变量。 –

+1

所以你有一个文件,你想合成代码,将文件中的信息转换为信号。你如何将FPGA映像为文件IO?文件将如何到达FPGA?你连接一个硬盘到FPGA? – JHBonarius

回答

1

FPHDL库,提供例如类型sfixed,提供转换功能from_string。您可以在fixed_ug.pdf文件中找到更多信息。

这些例子来自文档:

signal a : ufixed (3 downto –3); 
begin 
    a <= from_string (“0000.000”, a’high, a’low); 
    a <= from_string (“0001.000”, a); 
    a <= from_string (“0000.100”); -- Works only if size is exact 
+0

是的,但这不是来自输入文件,也不是“3.76”格式。所以它不回答他的问题。 – JHBonarius

+0

他的主要问题是将'string'输入转换为'sfixed'。他的第二个问题是文件I/O的方向。他还表示,他首次尝试使用“真实图像(...)”并不奏效,因此可以假定他已经实现了文件读取。 – Paebbels

+0

也许,但他应该详细说明这一点。显示更多代码示例等。他至少应该显示无法合成的代码。 – JHBonarius