verilog常用系统任务和函数 |
您所在的位置:网站首页 › mem寄存器 › verilog常用系统任务和函数 |
在FPGA开发中编写仿真测试激励文件,经常会用到verilog的系统函数,使用系统函数会非常方便,本文总结了常用的系统函数,并提供了说明和使用示例。 一、文件操作1、打开文件和关闭文件integer fp; fp = $fopen("file_path/file_name","wb"); $fclose(fp);打开文件$fopen函数: 第1个参数:文件路径,绝对路径和相对路径均可。 第2个参数: 返回值:0表示打开文件成功,非0值表示打开文件失败 关闭文件$fclose函数:参数是$fopen返回的整型变量 2、写入文件$fdisplay(fp,"%d", dout); $fwrite(fp,"%d", dout); $fmonitor(fp, "%h", $time); $fstrobe(fp, "%h", 16'h78)$fdisplay等函数是将数据写入到指定文件中,第1个参数是文件指针,第二个参数是写入数据格式,第3个参数是写入数据。 写入数据格式: 说明: $fdisplay 调用即执行,可以自动换行, $fwrite调用即执行,换行则需写成“%d\n”。 $fmonitor只有在变量发生变化时,才会写入文件,在initial中调用一次即可。 $fstrobe语句执行完毕后写文件 3、读取文件读取文件函数,需要设定存储器用来存储数据,存储器可设定为二维数组。 $fread(mem, fd, start, count)参数说明:mem是存储数组或寄存器变量 ,fp为文件指针,start 为文件起始地址,count 为读取长度。若 start和count省略,数据会全部填充至变量 mem即停。 $readmemh("file_path/file_name",mem,start, end); $readmemb("file_path/file_name",mem,start, end);$readmemb是以2进制读取,$readmemh是以16进制读取 参数说明:file_path/file_name为文件路径,mem是存储数组或寄存器变量 ,start 为起始地址,end 为结束低至。若 start和end省略,数据会全部填充至变量 mem。 $fgetc( fd ) 按字符读取文件,每次执行读取8bit。 $fgets(str, fd) 按行读取文件,每次执行读取一行。 localparam FILE_LEN = 1000; localparam WIDTH = 8; integer num, i; reg [WIDTH-1:0] mem [0:FILE_LEN-1]; reg [WIDTH-1:0] mem_r; reg [31:0] mem_load [3:0] ; reg [99:0] line_buf [9:0] ; //方法1 $fread(mem,fp,0,FILE_LEN);//数组型读取 $fread(mem_r,fp);//单个寄存器 //方法2 $readmemb("file_path/file_name", mem); $readmemb("file_path/file_name", mem,0,FILE_LEN-1); $readmemh("./DATA_WITHNOTE.HEX", mem_load); //方法3 mem[0] = $fgetc(fp); for(i=0;i说明: $display不管是阻塞赋值还是非阻塞赋值,直接打印结果。 $strobe执行等到非阻塞赋值完成后再打印结果。 $monitor用于变量的持续监测,只要变量发生变化,就会打印显示。 三、其它1、随机数产生函数$random,用于产生随机数 //num为范围在 -(b-1):(b-1) 中的随机数, b为十进制整数 num = $random%b; //产生随机正整数, 在 0:(b-1) 中的随机数 num = {$random}%b 2、仿真过程控制函数$finish表示结束当前仿真,$stop表示暂停当前仿真。 $finish; $stop; 3、显示仿真时间$time返回整数时间值,$realtime返回实数时间值,都是以仿真开始时的仿真时间为参考。 $display($time,“ dout=%d”,dout);本文将不断定期更新中,关注,收藏,不走丢哦 有任何问题,都可以在评论区和我交流哦 本文由FPGA入门到精通原创,公众号为“FPGA入门到精通”,github开源代码:“FPGA知识库” 您的支持是我持续创作的最大动力!如果本文对您有帮助,还请多多点赞、评论和收藏。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |