完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嗨朋友..我已经编写了下面的代码将数据写入输入和预期的数据文件,然后读取输出数据文件中的数据写入并比较并将结果写入另一个文件。
任何人请建议我如何在这里使用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个回答
|
|
嗨,任何基本的verilog书都会帮到你。请在这里查看语法http://www.electrosofts.com/verilog/loop_statements.html
谢谢,维杰----------------------------------------------- ---------------------------------------------请将帖子标记为 一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。 |
|
|
|
|
|
|
|
swethasreeb写道:
感谢你回应.. 我用过for循环.., 我无法打印到结果文件中从4'h0000到4'hffff的所有输出。 你可以帮忙解决这个问题 看起来你已经注释掉了整个设计! ----------------------------是的,我这样做是为了谋生。 |
|
|
|
我用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 我无法将整个模拟打印到结果文本文件中。我该如何解决这个问题? |
|
|
|
嗨,
你能分享“随机化”模块的代码吗? 另请详细说明“我无法将整个模拟打印到结果文本文件中”。 --Syed -------------------------------------------------- -------------------------------------------请注意 - 请标记答案 如果提供的信息有用,请“接受为解决方案”。给予您认为有用并回复导向的帖子。感谢Kudos .------------------------ -------------------------------------------------- ------------------- |
|
|
|
|
|
|
|
嗨,您能更清楚地了解您的期望以及您目前看到的输出是什么以及您是如何编码的?
谢谢,维杰----------------------------------------------- ---------------------------------------------请将帖子标记为 一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。 |
|
|
|
我的代码中有4个文件
我在输入和预期文件中写了0到65535。 在我的程序中,我将数据分配给dataout。 并且数据输出正被打印到输出文件。 已经采取了另一个文件,其中我已经写出结果是否输出和预期结果匹配。 但在结果文件中我无法写出所有比较结果。 在这里我附上 text文件 results.txt 3260 KB |
|
|
|
嗨,您是否在无法打印值的那一点之后检查您的模拟是否正在运行?您正在使用哪种工具进行模拟?
谢谢,维杰----------------------------------------------- ---------------------------------------------请将帖子标记为 一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。 |
|
|
|
|
|
|
|
而是在isim.log中写入文件,显示所有值
|
|
|
|
只有小组成员才能发言,加入小组>>
2379 浏览 7 评论
2794 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2261 浏览 9 评论
3335 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2427 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
755浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
543浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
364浏览 1评论
1960浏览 0评论
681浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 04:20 , Processed in 1.350907 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号