跳至内容
深圳市捷比信实业有限公司 · 产品选型与采购咨询联系业务人员
Diodes捷比信 · 专业器件主题站

读取和写入由Testbench编写的文件的操作

Testbench写作指南(2)文件读写操作读取txt文件数据并将数据写入txt文件第二个主题是文件读写控制。在仿真过程中,经常有必要从文件中读取测试刺激,并进行仿真。结果存储在文件中,以供其他程序读取和调用。用于读取txt文件数据的示例代码如下:integeri; //数组坐标reg [9:0] stimulus [1:data_num]; //以数组形式initialbegin $ readmemb(“ SinIn.txt”; ,刺激); //将数据存储在数组i = 0中的txt文件中;重复(data_num)开始//重复读取数组中的数据i = i + 1; din = stimulus [i];#clk_period; //每个使用“数组”并不准确在一次读取时钟和结束时钟时用VerilogHDL表达定义,但是大多数人应该更好地理解它。刺激可以看作是存储器,[9:0]定义数据的位宽,[1:data_num]定义存储器的深度。刺激的定义应与txt文件中的数据匹配。 txt文件中的每一行存储一个数据,以上定义对应于txt中存储的data_num数据,每个数据的最大位宽为10bit。系统任务readmemb用于读取二进制格式的文件。 readmemb用于读取十六进制格式的文件; readmemh用于读取十六进制格式的文件。命令是$ readmemb(“ filename”,mem_name),它将文件名的内容读入mem_name。注意,反斜杠“ /”表示反斜杠“ /”。应该在文件名文件路径中使用该文件名,该路径与“在Windows系统的文件路径中使用。如果不指定路径,而是像上面的程序一样直接写文件名,则该文件必须与testbench文件位于同一路径。 eatrepeat(n)begin ... end中的内容应根据设计需要编写。用于将数据写入txt文件的示例代码如下:integerfile_out; initialbeginfile_out = $ fopen(“ mixer_out.txt”); if(!file_out)begin $ display(“ can' topenfile”)); $完成; endendwiresigned [19:0] dout_s = dout; wirerst_write = clk& rst_n; //在重置期间不应该写入任何数据always @(posedgerst_write)$ fdisplay(file_out,“%d”,dout_s);要写入文件,您首先需要使用$ fopen系统任务打开文件,此系统任务将在打开文件时清除文件并返回句柄。如果句柄为0,则表示文件无法打开。如果该文件不存在,它将自动创建。打开文件后可以使用的句柄与KaTeXparseerror的用法非常相似:Expected' EOF' got'' atposition55:... printf函数。上面的过程... fdisplay`将在数据之后插入换行符。