module test( );
integer fp_r,fp_h,fp_w,fp_z;
integer count;
reg clk,rst;
reg [31:0] reg1,reg2;
reg [31:0] x,y;
wire [32:0] theta;
initial
begin
clk <= 0;
reg1 <= 0;
reg2 <= 0;
count <= 0;
fp_r=$fopen("data.txt","r");//以读的方式打开文件
fp_w=$fopen("data_out.txt","w");//以写的方式打开文件
fp_h=$fopen("data_in.txt","r");//以读的方式打开文件
fp_z=$fopen("data_in_out.txt","w");//以写的方式打开文件
forever #2000 clk = ~clk;
end
always@(posedge clk)
begin
if(count < 500)
begin
$fscanf(fp_r,"%d" ,reg1) ;//每次读一行
$fwrite(fp_w,"%d\n",reg1) ;//写入文件
x = reg1;
$fscanf(fp_h,"%d" ,reg2) ;//每次读一行
$fwrite(fp_z,"%d\n",reg2) ;//写入文件
y = reg2;
count = count + 1;
end
else
begin
$fclose(fp_r);//关闭已打开的文件
$fclose(fp_w);
$fclose(fp_h);//关闭已打开的文件
$fclose(fp_z);
end
end
Cordic_Arctan uut (
.clk(clk),
.rst_n(rst),
.x(x),
.y(y),
.theta(theta)
);
initial
begin
clk = 0;
rst = 0;
#100; rst = 1'b1;
end
endmodule
直接在testbench里面输入几组激励x,y,出来的结果theta是对的,但是把激励x,y存在txt文件里读出来带入公式,结果位跟输入位就对不上了