我有一些48位无符号数字,我想从VHDL测试平台写入文件 . 不幸的是,我过去总是这样做的方式,转换为整数,不适用于大于32位的数字 .
以下是我总是使用小于32位的数字来完成它 .
write(L=>result_line, value=>to_integer(unsigned(C_combo_out)));
这是我想要做的但是不支持unsigned类型 .
write(L=>result_line, value=>unsigned(C_combo_out));
C_combo_out
是一个48位std_logic_vector,表示无符号整数 . 注意,我真的想要输出文件中的数字,而不是'1'和'0'的字符串 .
1 回答
所以你需要10号基数?
导出大量基数16非常简单,特别是如果其他工具或语言对输出进行后处理 . 基数10和大于2 ** 31的数量需要特殊处理 .
您可以使用double dabble algorithmn将如此大的数字转换为BCD表示,然后将BCD编号转换为ASCII以进行文件导出 .
这应该将大的std_logic_vectors转换为十进制数:
扩展版本已上传至PoC's strings package .
附录:在PoC.strings包上运行测试平台
PoC-Library附带测试平台,因此您可以从控制台运行它 . 有4个简单的步骤需要执行:
Download PoC
配置首选模拟器工具链:
Setup:在模板
<PoCRoot>/src/common/my_project.vhdl.template
中的<PoCRoot>/tb/common/
中创建my_project.vhdl . 使用该文件配置两个常量 .Run the simulation:
如果你在没有
-g
的情况下运行模拟,它应该如下所示:(点击)
如果使用选项
-g
运行模拟,它将以GUI模式运行,如下所示:(点击)
Further information:
如果您还有其他问题,请参阅AUTHORS文件并直接与我或我的同事联系 .