微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求助,FIR设计问题。

求助,FIR设计问题。

时间:10-02 整理:3721RD 点击:
WAIT:if(flag) begin
       cstate<=datafilter;
                 ENA<=1'b1;
                 WEA<=1'b0;
                 counter<=9'd0;
                 end
                 else begin
                 ENA<=1'b0;
                 WEA<=1'b0;
                 rdy<=1'b0;
                 cstate<=WAIT;
                 sum<=48'd0;
                 end
  datafilter:begin
               if(counter<=211)///        修改为counter<=105
                                        begin
                                        addra<=counter[7:0];
                                        coef<=h;
                                        data<=temp[counter]; // 修改为data<=temp[counter]+temp[211-counter]
                                        sum<=sum+result;
                                        counter<=counter+9'd1;
                                        end
                                        else begin
                                        counter<=9'd0;
                                        cstate<=WAIT;
                                        dataout<=sum[47:24];
                                        rdy<=1'b1;
                                        addra<=8'b0;
                                        end
             end
        default:cstate<=idle;
        endcase
end
  mul U0 (
        .a(coef), // Bus [23 : 0]
        .b(data), // Bus [23 : 0]
        .p(result)); // Bus [47 : 0]
       
coefRAM U1(
        .clka(clk),
        .ena(ENA),
        .wea(WEA), // Bus [0 : 0]
        .addra(addra), // Bus [7 : 0]
        .dina(DINA), // Bus [23 : 0]
        .douta(h)); // Bus [23 : 0]
endmodule
之前的程序是按照212个系数。
修改:只是系数对称,然后将抽头寄存器中的数据对称相加,然后和系数相乘。
仿真后,原程序能够很好滤除杂信号,修改后基本不能。
各位大大,谢谢了!



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top