verilog ifdef_verilog define

verilog ifdef_verilog define注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。https://blog.csdn.net/Chauncey_wu/article/details/902897491.打开文件  int…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

注意feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。

https://blog.csdn.net/Chauncey_wu/article/details/90289749

1.打开文件

  integer file_id;

  file_id = fopen(“file_path/file_name”);

2.写入文件:$fmonitor,$fwrite,$fdisplay,$fstrobe

  //$fmonitor只要有变化就一直记录

  $fmonitor(file_id, “%format_char”, parameter);

  $fmonitor(file_id, “%m: %t in1=%d o1=%h”, $time, in1, o1);

//$fwrite需要触发条件才记录

  $fwrite(file_id, “%format_char”, parameter);

//$fdisplay需要触发条件才记录

  $fdisplay(file_id, “%format_char”, parameter);

$fstrobe();

3.读取文件:$fread

  integer file_id;

  file_id = $fread(“file_path/file_name”, “r”);

4.关闭文件:$fclose

  $fclose(fjile_id);

5.由文件设定存储器初值:$readmemh,$readmemb

  $readmemh(“file_name”, memory_name”); //初始化数据为十六进制

  $readmemb(“file_name”, memory_name”); //初始化数据为二进制

6、文件显示:$monitor,$write,$display

 $display,$write用于输出信息

  $display(“rvel = %h hex %d decimal”,rvel,rvel);

  $monitor($time, ,”rxd = %b txd = %b”,rxd ,txd)

6、文件定位

  $fseek,文件定位,可以从任意点对文件进行操作;

  $fscanf,对文件一行进行读写。

7、退出仿真器$finish

8、随机数据产生:$random

 

Jetbrains全家桶1年46,售后保障稳定

  1. 下面是一些常见的应用:

  2. 1、读写文件

  3. `timescale 1 ns/1 ns

  4. module FileIO_tb;

  5. integer fp_r, fp_w, cnt;

  6. reg [7:0] reg1, reg2, reg3;

  7. initial begin

  8. fp_r = $fopen("data_in.txt", "r");

  9. fp_w = $fopen("data_out.txt", "w");

  10.  
  11. while(!$feof(fp_r)) begin

  12. cnt = $fscanf(fp_r, "%d %d %d", reg1, reg2, reg3);

  13. $display("%d %d %d", reg1, reg2, reg3);

  14. $fwrite(fp_w, "%d %d %d\n", reg3, reg2, reg1);

  15. end

  16.  
  17. $fclose(fp_r);

  18. $fclose(fp_w);

  19. end

  20. endmodule

  21. 2、

  22. integer file, char;

  23. reg eof;

  24. initial begin

  25. file = $fopenr("myfile.txt");

  26. eof = 0;

  27. while (eof == 0) begin

  28. char = $fgetc(file);

  29. eof = $feof (file);

  30. $display ("%s", char);

  31. end

  32. end

  33. 3、文件处理定位

  34. `define SEEK_SET 0

  35. `define SEEK_CUR 1

  36. `define SEEK_END 2

  37. integer file, offset, position, r;

  38. r = $fseek(file, 0, `SEEK_SET);

  39. r = $fseek(file, 0, `SEEK_CUR);

  40. r = $fseek(file, 0, `SEEK_END);

  41. r = $fseek(file, position, `SEEK_SET);

  42.   4、

  43. integer r, file, start, count;

  44. reg [15:0] mem[0:10], r16;

  45. r = $fread(file, mem[0], start, count);

  46. r = $fread(file, r16);

  47.   5、

  48. integer file, position;

  49. position = $ftell(file);

  50. 6、

  51. integer file, r, a, b;

  52. reg [80*8:1] string;

  53. file = $fopenw("output.log");

  54. r = $sformat(string, "Formatted %d %x", a, b);

  55. r = $sprintf(string, "Formatted %d %x", a, b);

  56. r = $fprintf(file, "Formatted %d %x", a, b);

  57. 7、

  58. integer file, r;

  59. file = $fopenw("output.log");

  60. r = $fflush(file);

  61. 8、

  62. // This is a pattern file - read_pattern.pat

  63. // time bin dec hex

  64. 10: 001 1 1

  65. 20.0: 010 20 020

  66. 50.02: 111 5 FFF

  67. 62.345: 100 4 DEADBEEF

  68. 75.789: XXX 2 ZzZzZzZz

  69. `timescale 1ns / 10 ps

  70. `define EOF 32'hFFFF_FFFF

  71. `define NULL 0

  72. `define MAX_LINE_LENGTH 1000

  73.  
  74. module read_pattern;

  75. integer file, c, r;

  76. reg [3:0] bin;

  77. reg [31:0] dec, hex;

  78. real real_time;

  79. reg [8*`MAX_LINE_LENGTH:0] line;

  80.  
  81. initial

  82. begin : file_block

  83. $timeformat(-9, 3, "ns", 6);

  84. $display("time bin decimal hex");

  85. file = $fopenr("read_pattern.pat");

  86. if (file == `NULL) // If error opening file

  87. disable file_block; // Just quit

  88.  
  89. c = $fgetc(file);

  90. while (c != `EOF)

  91. begin

  92.  
  93. if (c == "/")

  94. r = $fgets(line, `MAX_LINE_LENGTH, file);

  95. else

  96. begin

  97. // Push the character back to the file then read the next time

  98. r = $ungetc(c, file);

  99. r = $fscanf(file," %f:\n", real_time);

  100.  
  101. // Wait until the absolute time in the file, then read stimulus

  102. if ($realtime > real_time)

  103. $display("Error - absolute time in file is out of order - %t",

  104. real_time);

  105. else

  106. #(real_time - $realtime)

  107. r = $fscanf(file," %b %d %h\n",bin,dec,hex);

  108. end // if c else

  109. c = $fgetc(file);

  110. end // while not EOF

  111.  
  112. r = $fcloser(file);

  113. end // initial

  114.  
  115. // Display changes to the signals

  116. always @(bin or dec or hex)

  117. $display("%t %b %d %h", $realtime, bin, dec, hex);

  118.  
  119. endmodule // read_pattern

  120. 9、自动比较输出结果

  121. `define EOF 32'hFFFF_FFFF

  122. `define NULL 0

  123. `define MAX_LINE_LENGTH 1000

  124. module compare;

  125. integer file, r;

  126. reg a, b, expect, clock;

  127. wire out;

  128. reg [`MAX_LINE_LENGTH*8:1];

  129. parameter cycle = 20;

  130.  
  131. initial

  132. begin : file_block

  133. $display("Time Stim Expect Output");

  134. clock = 0;

  135.  
  136. file = $fopenr("compare.pat");

  137. if (file == `NULL)

  138. disable file_block;

  139.  
  140. r = $fgets(line, MAX_LINE_LENGTH, file); // Skip comments

  141. r = $fgets(line, MAX_LINE_LENGTH, file);

  142.  
  143. while (!$feof(file))

  144. begin

  145. // Wait until rising clock, read stimulus

  146. @(posedge clock)

  147. r = $fscanf(file, " %b %b %b\n", a, b, expect);

  148.  
  149. // Wait just before the end of cycle to do compare

  150. #(cycle - 1)

  151. $display("%d %b %b %b %b", $stime, a, b, expect, out);

  152. $strobe_compare(expect, out);

  153. end // while not EOF

  154.  
  155. r = $fcloser(file);

  156. $stop;

  157. end // initial

  158.  
  159. always #(cycle / 2) clock = !clock; // Clock generator

  160.  
  161. and #4 (out, a, b); // Circuit under test

  162. endmodule // compare

  163. 10、从文件中读数据到mem(这个好像一般人用的最多了)

  164. `define EOF 32'HFFFF_FFFF

  165. `define MEM_SIZE 200_000

  166. module load_mem;

  167. integer file, i;

  168. reg [7:0] mem[0:`MEM_SIZE];

  169. reg [80*8:1] file_name;

  170. initial

  171. begin

  172. file_name = "data.bin";

  173. file = $fopenr(file_name);

  174. i = $fread(file, mem[0]);

  175. $display("Loaded %0d entries \n", i);

  176. i = $fcloser(file);

  177. $stop;

  178. end endmodule // load_mem

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234533.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm21激活_最新在线免费激活

    (pycharm21激活)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1PA3AFINM4-eyJsaWNlbnNlSWQi…

  • WSGI、Flask及Werkzeug三者之间的关系

    WSGI、Flask及Werkzeug三者之间的关系目录一、WSGI是什么?二、Werkzeug是什么三、Flask的WSGI实现一、WSGI是什么?WSGI是一套接口规范。一个WSGI程序用以接受客户端请求,传递给应用,再返回服务器的响应给客户端。WSGI程序通常被定义成一个函数,当然你也可以使用类实例来实现。下图显示了python中客户端、服务器、WSGI、应用之间的关系:从下往上开始介绍:客户端:浏览器或者app。web服务器:Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务.

  • elasticsearch 入门安装

    elasticsearch 入门安装

  • pycharm向左缩进_pycharm取消缩进快捷键

    pycharm向左缩进_pycharm取消缩进快捷键在使用pycharm时,经常会需要多行代码同时缩进、左移,pycharm提供了快捷方式1、pycharm使多行代码同时缩进鼠标选中多行代码后,按下Tab键,一次向右缩进四个字符2、pycharm使多行代码同时左移鼠标选中多行代码后,同时按住shift+Tab键,一次向左移四个字符另外:在使用pycharm过程中光标变粗,此时变成了改写模式,只需要按下键盘的insert键即可…

  • Android Studio 和 SDK 下载、安装和环境变量配置

    Android Studio 和 SDK 下载、安装和环境变量配置win10下AndroidStudio和SDK下载、安装和环境变量配置                        ——madebysiwuxie0951、首先必须安装Java JDK (JavaJDK下载、安装和环境变量配置,传送阵:点击开始传送)2、本人电脑系统

  • mysql更改表名语句命令[通俗易懂]

    mysql更改表名语句命令[通俗易懂]renametabletablename1totablename2;

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号