以前我一般常用到的系统函数只有几个:$readmemb,$readmemh,$display,$fmonitor,$fwrite,$fopen,$fclose等。通常需要对文件作预处理,才能用于Testbench读取。今天又尝试了几个其他的文件输入输出函数,不需要对文件进行预处理,直接使用需要的文件,只对需要的部分进行读取。
$fseek,文件定位,可以从任意点对文件进行操作;
$fscanf,对文件一行进行读写。
module read_write_file();
integer fp_r,fp_w;
integer count;
reg [9:0] reg1;
initial
begin
fp_r=$fopen("data_in.txt","r");//以读的方式打开文件
fp_w=$fopen("data_out.txt","w");//以写的方式打开文件
while(! $feof(fp_r))
begin
count=$fscanf(fp_r,"%b" ,reg1) ;//每次读一行
$display("%d::::%b",count,reg1) ;//打印输出
$fwrite(fp_w,"%b\n",reg1) ;//写入文件
end
$fclose(fp_r);//关闭已打开的文件
$fclose(fp_w);
end
endmodule