你好,我是先使用一个512点的单端口ROM存储了512点的数据,然后将数据读出送给FFT核做8192点的快速傅里叶变换,但是最后我用modelsim仿真的结果中,只有第一个结果是正确的,后面的都和matlab结果不一样。而且输入数据也是正确的,但就是不知道错哪里了?求求各位帮帮忙吧!源程序如下: module coeff(  clk,  rst,  dina,  dv_coe,  douta,  xn_re,  xn_im,  rfd,  xn_index,  xk_index,  xk_re_coeff,  xk_im_coeff  );  input clk;input rst; input [15 :0] dina;                //  使能每次和数据一起做fftoutput dv_coe;output [31 :0] douta;output [7 : 0] xn_re;output [7 : 0] xn_im;output rfd;output [12 : 0] xn_index;output [12 : 0] xk_index;output [21 : 0] xk_re_coeff;output [21 : 0] xk_im_coeff;   reg rsta;reg start;reg en;reg [7 : 0] xn_re;reg [7 : 0] xn_im;reg [8 : 0] addra;     //------- 由xn_index控制从rom读数always @(posedge clk)beginaddra <= xn_index[8:0];end   always @(posedge clk)beginxn_re <= douta [15 : 8];xn_im <= douta [7 : 0];end  //-------系数只有512个。不够的后面补零always @(posedge clk)beginif(xn_index>511)rsta <= 1'b1;else  rsta <= 1'b0;end   core_coeff_rom coeff_core (  .clka(clk),               // input clka  .rsta(rsta),              // input rsta  .ena(en),                // input ena   控制每次做系数的fft  .addra(addra),            // input [8 : 0] addra  读数的地址控制  .douta(douta)             // output [15 : 0] douta  系数  实部在高位,虚部在低位);  //---------start使能-----------always @(posedge clk)beginif(rst) start <= 1'b1;elsestart <= 1'b0;end always @(posedge clk)beginif(rfd) en <= 1'b1;elseen <= 1'b0;end  core_coeff_fft coeff_FFT (  .clk(clk),                 // input clk  .start(start),             // input start  .xn_re(xn_re),             // input [7 : 0] xn_re  .xn_im(xn_im),             // input [7 : 0] xn_im  .fwd_inv(1),               // input fwd_inv  .fwd_inv_we(1),            // input fwd_inv_we  .rfd(rfd),                 // output rfd  输入数据有效  .xn_index(xn_index),       // output [12 : 0] xn_index  .busy(busy),               // output busy  .edone(edone),             // output edone  .done(done),               // output done  .dv(dv_coe),               // output dv   输出数据有效  .xk_index(xk_index),       // output [12 : 0] xk_index  .xk_re(xk_re_coeff),       // output [21 : 0] xk_re  .xk_im(xk_im_coeff)        // output [21 : 0] xk_im);   endmodule

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐