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

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hadoop平台搭建_eclipse安卓开发环境搭建

    hadoop平台搭建_eclipse安卓开发环境搭建参看:GettingStartedGuideforDM368DM365LeopardBoard参看:DAVINCIDM365-DM368开发攻略——开发环境搭建(DVSDK4.02)一、下载相应软件包下载:相应软件包二、安装Ubuntu10.04网上教程很多,参看:在VMware虚拟机上安装Ubuntu10.04

    2022年8月13日
    5
  • Python—海龟作图

    Python—海龟作图1、因为海龟作图需要用到”turtle”库,所以先介绍库的三种引用方法:(1):from库名import函数名/*;(2):import库名——>使用时:库名.函数名(3):import库名as函数名2、turtle的使用方法:(1)Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。(2)画布:就是海

    2022年6月28日
    41
  • 那些强悍的PHP一句话后门

    那些强悍的PHP一句话后门以一个学习的心态来对待PHP后门程序,很多PHP后门代码让我们看到程序员们是多么的用心良苦。强悍的PHP一句话后门这类后门让网站、服务器管理员很是头疼,经常要换着方法进行各种检测,而很多新出现的编写技术,用普通的检测方法是没法发现并处理的。今天我们细数一些有意思的PHP一句话木马。利用404页面隐藏PHP小马 PHP  1 2 3 4…

    2022年5月11日
    50
  • sqlserver临时表详解_怎么把临时表的数据更新到正式表

    sqlserver临时表详解_怎么把临时表的数据更新到正式表[转自]http://zhengweisincere.blog.163.com/blog/static/498446492009625749522/在SQLServer的性能调优中,有一个不可比面的问题:那就是如何在一段需要长时间的代码或被频繁调用的代码中处理临时数据集?表变量和临时表是两种选择。记得在给一家国内首屈一指的海运公司作SQLServer应用性能评估和调优的时候就看到过

    2022年8月21日
    5
  • 信号带宽和信道带宽_信号带宽大于信道带宽

    信号带宽和信道带宽_信号带宽大于信道带宽信号带宽:一个信号可以分解为一系列不同频率正余弦函数的加权和。带宽,就是那些对应的加权非零部分对应的三角函数的频率宽度。信号频谱的宽度,也就是信号的最高频率分量与最低频率分量之差。例如,比如我们学过的sin(x)函数,就是一个信号,sin(x)是一个三角函数,所以其若用傅里叶级数表示,加权非零部分就是该信号本身。其对应的信号的带宽就是1HZ.(因其只有一个频率)。再例如:一个由数个正弦波叠加成的方…

    2022年10月11日
    4
  • Cocos2d-x项目总结中的一些遇到的问题

    Cocos2d-x项目总结中的一些遇到的问题

    2022年1月1日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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