File 使用VHDL将长整数存储到文件中

File 使用VHDL将长整数存储到文件中,file,vhdl,long-integer,File,Vhdl,Long Integer,我有一个48位的std_logic_vector,我需要将值保存到一个文件中,以便在Matlab中比较FPGA结果。我将值保存到文件中的方式是: -- Variables file write_file_CH1 : text open write_mode is "results.dat"; variable data_write_line_CH1 : line; Variable data_write_CH1 : integer; -- Storing data in

我有一个48位的
std_logic_vector
,我需要将值保存到一个文件中,以便在Matlab中比较FPGA结果。我将值保存到文件中的方式是:

-- Variables
file write_file_CH1 : text open write_mode is "results.dat";
variable data_write_line_CH1 : line;
Variable data_write_CH1  : integer;

-- Storing data in file
data_write_CH1 := to_integer(signed(RX_DATA_FILTERED));
write(data_write_line_CH1, data_write_CH1);
writeline(write_file_CH1, data_write_line_CH1);
但是,当然,如果我理解正确,
integer
数据类型有32位,因此错误在
integer
数据类型中。我尝试只使用定义范围为64位的
有符号
数据类型,但没有实现,因为编译器告诉我这些指令需要
整数
数据类型:

write(data_write_line_CH1, data_write_CH1);
writeline(write_file_CH1, data_write_line_CH1);
我一直在寻找如何通过VHDL在文件中存储长整数,但我没有找到如何做到这一点。。。这怎么可能呢

第一种方法


因为我的
std\u logic\u vector
有一个Q格式点,即45Q43,并且我知道这些值总是低于1,所以我只取
[43:13]
中的位来存储在
整型变量中,显然是有效的。

RX\u数据\u过滤后不代表整型。缺少一个读者只能提供意见。为十进制值提供字符串值的工作量取决于VHDL 2008的工具链支持(IEEE软件包fixed_pkg已签名到sfixed转换和sfixed到real,这是双精度的,可以使用到_字符串进行转换,然后写入到数据_write_line_CH1。提供签名的二进制字符串值将允许在MATLAB中使用转换。Hi@user1155120谢谢!是的,我将用最少的复制来重写我的查询。)可简化的示例。感谢info.VHDL文件,I/O非常有限。如果您想保持简单,那么我只需将二进制或十六进制字符串写入文件(然后在MATLAB中转换为数字类型)。如果您使用的是VHDL-2008(或更高版本),那么您可以使用
到字符串(RX_数据过滤)
(对于二进制)或
到字符串(RX_DATA_FILTERED)
(十六进制)。如果使用较旧的VHDL,则需要更多的工作。例如,您可以循环
RX_DATA_FILTERED
的元素,并使用
std_logic'图像(RX_DATA_FILTERED(i))
将每个位转换为字符。