我正在为LFSR编写测试台,并且希望将输出的值写入txt文件,以便稍后可以将它用于某些脚本。在我的波形中,结果的十六进制值是正确的,但输出文件只包含1,而不是实际值。我一直无法确定为什么(刚开始使用verilog)。这里是测试台:Verilog测试台将意外输出写入文件
module lfsr13_tb();
reg clk, rst_n, en;
reg[12:0] seed;
wire[12:0] pseudo_random_val;
integer file, i;
lfsr13 iDUT(.clk(clk), .en(en), .rst_n(rst_n), .seed(seed), .pseudo_random_val(pseudo_random_val));
initial begin
seed = 1;
clk = 0;
rst_n = 0; // assert reset
en = 0; // disabled to start
file = $fopen("lfsr_output.txt", "w");
@(negedge clk) rst_n = 1; // deassert reset
@(posedge clk) en = 1; // assert enable to begin lfsr function
for(i=0; i<=8191; i=i+1) begin
$fwrite(file, "%h\n", pseudo_random_val);
end
$fclose(file);
end
always
#5 clk = ~clk;
endmodule
任何帮助极大的赞赏。我需要在每个周期将“pseudo_random_val”写入输出文件。
它看起来像你写相同的值8192倍的文件...可能会添加一个延迟或事件触发器? (另外,一些缩进将有助于可读性...) – wilcroft
是的,现在我明白了。我希望它将pseudo_random_val(8192个值)的每个唯一值写入输出文件。我应该在for循环中添加时钟延迟吗?令我困惑的是我的波形显示了正确的功能,我只想将这些值输出到文本文件。另外,关于缩进的道歉,modelsim的默认选项卡就像8个空格,所以我不使用它。 – kcinj