• 基于FPGA的FIR滤波器(草稿)


    方案一:QuartusII中的IP核。但是FIR IP没有破解,放弃。

    方案二:用纯硬件描述语言搭建。

    基本上分为MAC(乘积累加结构)和DA(分布式结构)。

    MAC中具体结构有:

    直接型FIR滤波器结构。利用FIR系数对称性特点,先对相应值相加,再做乘积运算,最后累加。该进措施可以是加上流水线结构。

    实例:(参考自《EDA技术与Verilog设计》王金明编著)8KHZ采样率,8Bit输入,8Bit输出,11阶低通滤波器,fL=3.4KHZ。利用MATLAB得到滤波器系数,采用SD编码。Tips:SD(signed digit numbers有符号数字量),通过SD编码可以降低非零元素的数量。SD编码数字值域{1,0,-1},-1用1上面加“-”表示。

    代码如下:

    module Fir02
    (
    	input clk,
    	input [7:0] x,
    	output reg [15:0] y
    );
    
    reg [7:0] tap0,tap1,tap2,tap3,tap4,tap5,tap6,tap7,tap8,tap9,tap10;
    reg [7:0] t0,t1,t2,t3,t4,t5;
    reg [15:0] sum;
    
    always @(posedge clk)
    	begin
    		t0<=tap5;
    		t1<=tap4+tap6;
    		t2<=tap3+tap7;
    		t3<=tap2+tap8;
    		t4<=tap1+tap9;
    		t5<=tap0+tap10;
    		
    		sum<=	(t1<<4)
    				+{t1[7],t1[7:1]}
    				+{t1[7],t1[7],t1[7:2]}
    				+{t1[7],t1[7],t1[7],t1[7:3]}
    				
    				-(t2<<3)
    				-(t2<<2)
    				+t2
    				-{t2[7],t2[7],t2[7:2]}
    				
    				+(t3<<2)
    				+t3
    				+{t3[7],t3[7],t3[7:2]}
    				+{t3[7],t3[7],t3[7],t3[7],t3[7:4]}
    				+{t3[7],t3[7],t3[7],t3[7],t3[7],t3[7:5]}
    				
    				-t4
    				-{t4[7],t4[7:1]}
    				-{t4[7],t4[7],t4[7],t4[7:3]}
    				
    				+{t5[7],t5[7:1]}
    				-{t5[7],t5[7],t5[7],t5[7],t5[7],t5[7:5]}
    				
    				+(t0<<7)
    				-((t0<<2)<<2)
    				-(t0<<2)
    				+{t0[7],t0[7:1]}
    				+{t0[7],t0[7],t0[7:2]}
    				+{t0[7],t0[7],t0[7],t0[7],t0[7:4]};
    				
    		tap10<=tap9;
    		tap9<=tap8;
    		tap8<=tap7;
    		tap7<=tap6;
    		tap6<=tap5;
    		tap5<=tap4;
    		tap4<=tap3;
    		tap3<=tap2;
    		tap2<=tap1;
    		tap1<=tap0;
    		tap0<=x;
    		
    		y<={sum[15],sum[15],sum[15],sum[15],sum[15],sum[15],sum[15],sum[15:7]};
    	end
    
    endmodule 
    
  • 相关阅读:
    Web基础了解版09-Cookie-Session
    Mysql基础04-查询
    Web基础了解版08-JSTL-Core标签库
    Web基础了解版07-EL表达式-运算符-11个隐式对象
    Web基础了解版06-Jsp-指令、标签-九大隐式对象-四个域对象
    Java语法进阶15-反射及API
    Spark原理概述
    Apache Kafka系列(六)客制化Serializer和Deserializer
    Azkaban时区问题导致调度差1天
    impala jdbc驱动执行impala sql的一个坑(不支持多行sql)
  • 原文地址:https://www.cnblogs.com/yuesheng/p/2143678.html
Copyright © 2020-2023  润新知