`timescale 1ns/1ns
`define time_period 20
/*
本测试文件是为了将一个包含1023行的32位16进制的数据的文本,导出到modesim中。然后将其转换成带符号的十进制数据输出到另外一个文本中
*/
module data_convert;
reg clk;
reg rst_n;
parameter data_num = 1023;
integer Pattern;
integer file_out;
integer i;
reg signed [31:0] stimulus[1:data_num]; //这样才能导出带符号的数据
reg signed [31:0] data_in [1:data_num]; //导出带符号的数据
always #(`time_period/2)clk=~clk;
initial begin
//时钟和复位初始化
clk=1'b0;
rst_n=1'b0;
#(`time_period/2)
rst_n =1'b1;
//读文件 $readmemh是按照16进制读取文本数据、$readmemb是按照二进制读取文本数据
$readmemh("C:/Users/Administrator/Desktop/digital_control/fifo_data.txt",stimulus);
Pattern=0;
repeat(30) begin
repeat(data_num) begin
Pattern = Pattern+1;
data_in[Pattern] = stimulus[Pattern];
#32;
end
Pattern = 0;
end
//将数据按照带符号的十进制输出到另外一个文本
file_out = $fopen("C:/Users/Administrator/Desktop/digital_control/data_out.txt");
i = 0;
for(i=0;i<=1022;i=i+1)begin
wait(clk);
#20
//这里是输出函数,一行一行输出,循环1023次,将1023行数据输出完成
$fdisplay(file_out,"%d",stimulus[i]);
if(i == 1022)
$fclose(file_out);
end
#((`time_period/2)*100000 );
$stop;
end
endmodule
更多推荐
使用modesim将文本中16进制数据导入,将数据转换成带符号的10进制导出
发布评论