我正在爲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