赛灵思
直播中

吴晓成

7年用户 362经验值
私信 关注
[问答]

如何在这里使用for循环而不是随机和重复

嗨朋友..我已经编写了下面的代码将数据写入输入和预期的数据文件,然后读取输出数据文件中的数据写入并比较并将结果写入另一个文件。
任何人请建议我如何在这里使用for循环而不是随机和重复..
我想从4'h0到4'hF写入数据
// module randomise_tb; //整数in_file,expected_file,out_file,results_file,broadcast; //// reg clk; // reg enable; // wire valid; // reg [15:0] din; // reg [15
:0] exp; // wire [15:0] dout; //整数statusI,statusO; ////随机化dut(clk,enable,din,dout,valid); ////// initial // begin
// in_file = $ fopen(“in_data.txt”); // expected_file = $ fopen(“expected_data.txt”); // broadcast = in_file | expected_file; // repeat(100)// begin // din = $
unsigned($ random)%100; // // $ fdisplayb(number); // $ fdisplayh(broadcast,din); // end // $ fclose(in_file); // $ fclose(expected_file); // end
// // initial // begin // clk = 0; // enable = 0; // // in_file = $ fopen(“in_data.txt”,“r”); // out_file = $ fopen(“out_data。
txt“,”w“); // expected_file = $ fopen(”expected_data.txt“,”r“); // results_file = $ fopen(”results.txt“,”w“); //结束//总是
#1 clk = ~clk; // // initial // begin // repeat(100)@(posedge clk); // while(!$ feof(in_file))begin // @(negedge clk); // enable
= 1; // statusI = $ fscanf(in_file,“%h  n”,din [15:0]); // @(negedge clk);
// enable = 0; //结束//重复(100)@(posedge clk); // $ fclose(in_file); // $ fclose(out_file); // $ fclose(expected_file); //#100 $
完成; //结束// //总是@(posedge clk)// if(有效)开始// $ fwrite(out_file,“%h  n”,dout [15:0]); // // $ fwrite
(mon,“%h  n”,exp [15:0]); // statusO = $ fscanf(expected_file,“%h  n”,exp [15:0]); // // if(dout!
== exp)开始// $ fdisplay(results_file,“%0dns错误:输入和输出不匹配”,$ time); // $ fdisplay(results_file,“Got%h”,dout); // $ fdisplay(
results_file,“Exp%h”,exp); //结束其他//开始// $ fdisplay(results_file,“%0dns匹配:输入和输出匹配”,$ time); // $ fdisplay(results_file,“Got%
h“,dout); // $ fdisplay(results_file,”Exp%h“,exp); // end // // end // // endmodule

回帖(11)

陈衡毅

2020-3-23 08:08:46
嗨,任何基本的verilog书都会帮到你。请在这里查看语法http://www.electrosofts.c​​om/verilog/loop_statements.html
谢谢,维杰-----------------------------------------------
---------------------------------------------请将帖子标记为
一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。
举报

李婷

2020-3-23 08:21:02
感谢你回应..
我用过for循环..,
我无法打印到结果文件中从4'h0000到4'hffff的所有输出。
你可以帮忙解决这个问题
举报

黄淳

2020-3-23 08:39:13
swethasreeb写道:
感谢你回应..
我用过for循环..,
我无法打印到结果文件中从4'h0000到4'hffff的所有输出。
你可以帮忙解决这个问题
看起来你已经注释掉了整个设计!
----------------------------是的,我这样做是为了谋生。
举报

李婷

2020-3-23 08:46:36
我用for循环更改了我的代码...
模块randomise_tb;整数in_file,expected_file,out_file,results_file,broadcast;
reg clk;
reg enable;
电线有效;
reg [15:0] din;
reg [15:0] exp;
电线[15:0] dout;
整数statusI,statusO;
整数;
随机化dut(clk,enable,din,dout,valid);
initial begin in_file = $ fopen(“in_data.txt”);
expected_file = $ fopen(“expected_data.txt”);
broadcast = in_file | expected_file;
for(in = 0; in begin din = in; $ fdisplayh(broadcast,din); end $ fclose(in_file); $ fclose(expected_file); end initial begin clk = 0; enable = 0; in_file = $ fopen(“
in_data.txt“,”r“); out_file = $ fopen(”out_data.txt“,”w“); expected_file = $ fopen(”expected_data.txt“,”r“); results_file = $ fopen(”results。
txt“,”w“);结束总是#1 clk = ~clk;初始beginrepeat(65535)
@(posedge clk);
while(!$ feof(in_file))begin @(negedge clk);
enable = 1;
statusI = $ fscanf(in_file,“%h  n”,din [15:0]);
@(negedge clk);
enable = 0;
结束重复(65535)@(posedge clk);
$ FCLOSE(in_file中);
$ FCLOSE(out_file);
$ fclose(expected_file);#30000 $ finish;
end always @(posedge clk)if(valid)begin $ fwrite(out_file,“%h  n”,dout [15:0]);
statusO = $ fscanf(expected_file,“%h  n”,exp [15:0]);
if(dout!== exp)开始$ display(results_file,“%0dns%h%h错误:输入和输出不匹配”,$ time,dout,exp);
// $ fdisplay(results_file,“Got%h”,dout);
// $ fdisplay(results_file,“Exp%h”,exp);
结束其他开始$ display(results_file,“%0dns%h%h匹配:输入和输出匹配”,$ time,dout,exp);
// $ fdisplay(results_file,“Got%h”,dout);
// $ fdisplay(results_file,“Exp%h”,exp);
结束
endmodule
我无法将整个模拟打印到结果文本文件中。我该如何解决这个问题?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分