1 介绍
只作为本人调试笔记使用,如有错误,请指正,感谢。
2 生成IP
软件版本基于2023.2。
使用ooc方式编译IP,会生成cmodel文件,可以直接在matlab中仿真使用:
3 编写HDL测试文件:
以512个数据长度为例:
module tb();
reg clk250 = 1'b0;
always #2 clk250 <= ~clk250;
reg nRst = 1'b0;
reg signed [15:0] mem_data_I[511:0];
reg signed [15:0] mem_data_O[0:511];
integer outputfile;
integer outputfile1;
reg [8:0] n;
initial begin
clk250 <= 1'b0;
nRst <= 1'b0;
#101
nRst <= 1'b1;
$readmemh("G:/FFT/fft_ip_in.txt",mem_data_I);
outputfile = $fopen("G:/FFT/fft_ip_out_re.txt","w");
outputfile1 = $fopen("G:/FFT/fft_ip_out_im.txt","w");
#23000
// for(n=0;n<=511;n=n+1)
// $fwrite(outputfile,"%x\n",mem_data_O);
$fclose(outputfile);
$fclose(outputfile1);
end
reg [9:0] cnt = 'd0;
reg signed [31:0] s_axis_data_tdata = 'd0;
reg s_axis_data_tvalid = 1'b0;
reg s_axis_data_tlast = 1'b0;
wire s_axis_data_tready;
reg m_axis_data_tready = 1'b1;
wire m_axis_data_tvalid;
wire m_axis_data_tlast;
wire signed [31:0] m_axis_data_tdata;
reg [9:0] m_cnt = 'd0;
always@(*) begin
if(cnt == 511) begin
if(s_axis_data_tready) begin
s_axis_data_tvalid <= 1'b1;
s_axis_data_tlast <= 1'b1;
s_axis_data_tdata <= {16'd0,mem_data_I[cnt]};
end else begin
s_axis_data_tvalid <= 1'b0;
s_axis_data_tlast <= 1'