1. 文件读写的作用
为什么需要使用Verilog语言读取/写入文件呢,主要是由于我们有时候需要将数据准备和分析的工作从Testbench中隔离出来,便于协同工作,需要调试一些寄存器的值,就需要通过文本中获取数据,然后来调试Verilog程序;这些文本信息可以通过C/C++、Excel表格、Matlab等工具生成测试数据,在代码测试的时候有助于你分析你的程序逻辑是否正确。
2. Testbench文件包括哪些操作
(1)打开文件
系统函数$fopen用于打开一个文件,将文件和integer指针关联,语法如下:
integer file_point = $fopen(file_name); 这里的 file_name 是一个路径,文件名存储的路径,用双引号“”包括。
你可以使用相对路径也可以使用绝对路径,一般将文件放在工程testbench文件同一级的目录下,你只需要在双引号之中写入文件名即可。
(2)关闭文件
系统任务$fclose用于关闭一个文件,格式如下:
$fclose(file_point);
(3) 从文件中读取数据
从文件中读取数据有两类方法,第一类为$fscanf系统任务,第二类为$readmemb 和 $readmemh,上述两种任务都可以从文本文件中读取数据,并将数据加载到存储器,被读取的文件可以包含空白空间、注释、二进制(如$readmemb)或十六进制(如$readmemh)数字,每个数字用空白空间隔离
下面将一下两种类型的语法
【$fscanf】
integer file, count;
count = $fscanf(file, format, args);
【$readmemb 】
readmemb( "文件名", 存储器名, 起始地址,终止地址);