[Verilog HDL] txt文件数据的读入与输出举例

381 阅读1分钟

本次分享的主题是Verilog的语法中用fscanf函数读取txt文本文件中的数据,用 fscanf函数读取txt文本文件中的数据,用fwrite函数将计算出的数据输出到txt文本文件。因为只是借鉴其他人的,没有深入理解其中的函数。

模块代码:

//简单的累加模块
module read_write(
input clk,//时钟
input rst,//复位
input [4:0]add1,//输入的加数

output reg [4:0]sum//输出的总和
);
initial sum=5'd0;
always@(posedge clk,negedge rst)
begin
	if(!rst)
		begin
			sum<=5'd0;	
		end
	else
		begin
			sum<=sum + add1;
		end
end
endmodule 

测试文件代码:

`timescale 1ns/1ps
module read_write_tb;
reg clk;
reg rst;
reg[4:0]add1;

wire[4:0]sum;

read_write u1(
.add1(add1),
.clk(clk),
.rst(rst),

.sum(sum)
);

integer fp_r;//读的指针
integer flag1;
integer fp_w;//写的指针

reg [15:0] cnt = 0;

initial clk=1;
always#10 clk=!clk;

initial 
begin
	rst=0;
	add1=5'd0;
	#20
	rst=1;
	fp_r=$fopen("G:/shuangpu_FPGA_project/read_write/prj/data_in.txt","r");//读
	fp_w=$fopen("G:/shuangpu_FPGA_project/read_write/prj/data_out.txt","w");/写
	while(cnt<6)
		begin
			flag1 = $fscanf(fp_r,"%d",add1);
			cnt = cnt+1;
			#20;
			$fwrite(fp_w,"%d\n",sum);
		end
	//关闭读和写的文件
	$fclose(fp_r);
	$fclose(fp_w);
	#200
	$stop;
end
endmodule 

如有错误,请大家指正。

结果图: 仿真结果图 输入输出的txt文件