本次分享的主题是Verilog的语法中用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
如有错误,请大家指正。
结果图: