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)


相关推荐

  • Android Studio 中Intel HAXM安装与模拟器创建「建议收藏」

    Android Studio 中Intel HAXM安装与模拟器创建「建议收藏」AndroidStudio中IntelHAXM安装与模拟器创建

  • wing是什么_数独代码

    wing是什么_数独代码原题链接设有 N×N 的方格图,我们在其中的某些方格中填入正整数,而其它的方格中则放入数字0。如下图所示:某人从图中的左上角 A 出发,可以向下行走,也可以向右行走,直到到达右下角的 B 点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。此人从 A 点到 B 点共走了两次,试找出两条这样的路径,使得取得的数字和为最大。输入格式第一行为一个整数N,表示 N×N 的方格图。接下来的每行有三个整数,第一个为行号数,第二个为列号数,第三个为在该行、该列上所放的数。行和列编号从

  • aliddns ipv6_Python实现阿里云域名DDNS支持ipv4和ipv6-阿里云开发者社区

    aliddns ipv6_Python实现阿里云域名DDNS支持ipv4和ipv6-阿里云开发者社区前言然后你的IP必须是公网IP,不然解析了也没用。本文章讲怎样通过阿里云的SDK来添加修改域名解析,检查本机IP与解析的IP是否一致,不一致自动修改解析,达到动态解析的目的,主要用于家庭宽带这些动态IP的地方。安装阿里云SDK和其他第三方库pipinstallaliyun-python-sdk-core-v3pipinstallaliyun-python-sdk-domainpipins…

  • CListCtrl 扩展风格设置方法—SetExtendedStyle和ModifyStyleEx

    CListCtrl 扩展风格设置方法—SetExtendedStyle和ModifyStyleEx想把ListCtr设置为整行高亮显示错误的方法为:1clistctrl.ModifyStyleEx(0,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);正确的方法为:1DWORDdwStyle=clistctrl.GetExtendedStyle();2dwStyle|=LVS_EX_FULLROWSELECT|L…

  • 对红黑树的认识总结

    一、对红黑树的基本理解(一)对红黑树的基本定义理解(二)对红黑树是“近似平衡”的理解1.将红色节点从红黑树中去掉,分析包含黑色节点的红黑树的高度2.把红色节点加回去,分析高度变化(三)红黑树与AVL树的比较:二、实现红黑树的基本思想分析(一)理解左旋(rotateleft)、右旋(rotateright)操作(二)插入操作的平衡调整情况一:如果关注节点是a,它的叔叔节点d是红色情况二:如果关注节点是a,它的叔叔节点d是黑色,关注节点

  • java中String类型转Map类型[通俗易懂]

    java中String类型转Map类型[通俗易懂]importcom.alibaba.fastjson;Stringstr=””;HashMaphashMap=JSON.parseObject(str,HashMap.class);

发表回复

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

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