1、使用FPGA的芯片EPM240F10015来实现其相应的DA表为:LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_arith.ALL;ENTITY case5p IS PORT ( table_in : IN STD_LOGIC_VECTOR(4 DOWNTO 0); table_out : OUT INTEGER RANGE 0 TO 25);END case5p;ARCHITECTURE LEs OF case5p ISBEGIN- This is the DA CASE table for- the 5 coeffi
2、cients: 1, 3, 5,7,9 - automatically generated with dagen.exe - DO NOT EDIT! PROCESS (table_in) BEGIN CASE table_in IS WHEN 00000 = table_out END CASE; END PROCESS;END LEs;系统程序为: - Using predefined packagesENTITY dafsm IS - Interface PORT (clk, reset : IN STD_LOGIC; x0_in, x1_in, x2_in, x3_in,x4_in :
3、 lut : OUT INTEGER RANGE 0 TO 25; y : OUT INTEGER RANGE 0 TO 1024 );END dafsm;ARCHITECTURE fpga OF dafsm IS COMPONENT case5p - User-defined component END COMPONENT; TYPE STATE_TYPE IS (s0, s1); SIGNAL state : STATE_TYPE; SIGNAL x0, x1, x2,x3,x4, table_in : STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL table_
4、out : INTEGER RANGE 0 TO 31; table_in(0) = x0(0); table_in(1) = x1(0); table_in(2) = x2(0); table_in(3) = x3(0); table_in(4) DA in behavioral style VARIABLE p : INTEGER RANGE 0 TO 63;- temp. register VARIABLE count : INTEGER RANGE 0 TO 5; - counts shifts IF reset = 1 THEN - asynchronous reset state
5、- Initialization step= s1; count : p : x0 = x0_in; x1 = x1_in; x2 = x2_in; x3 = x3_in; x4 - Processing step IF count = 5 THEN - Is sum of product done ? y = p; - Output of result to y and - start next sum of product ELSE= p/2 + table_out *16; FOR k IN 0 TO 3 LOOP - Shift bits x0(k) = x0(k+1); x1(k)
6、= x1(k+1); x2(k) = x2(k+1); x3(k) = x3(k+1); x4(k) table_in, table_out = table_out); lut PORT (clk : x : IN BYTE; OUT BYTE);END fir_srg;ARCHITECTURE flex OF fir_srg IS SIGNAL tap : ARRAY_BYTE := (0,0,0,0,0); - Tapped delay line of bytes p1: PROCESS - Behavioral style WAIT UNTIL clk = ; - Compute out
7、put y with the filter coefficients weight. - The coefficients are 1 3 5 7 9. - Division for Altera VHDL is only allowed for - powers-of-two values!=tap(0)+3*tap(1)+5*tap(2)+7*tap(3)+9*tap(4); FOR I IN 3 DOWNTO 1 LOOP tap(I) = tap(I-1); - Tapped delay line: shift one tap(0) = x; - Input in register 0
8、END flex;其对应脉冲10的滤波器脉冲响应y的仿真结果如图g: (g)也由此可以看出其registered performance 为64.52MHz。四. 基于matlab工具的滤波器系数计算:其指标为:采样频率:64.52MHz 归一化截止频率: 0.4MHz 类型: 低通 输入数据S(n)宽度: 9位 阶数: 5 阶 输出数据y(n)宽度: 10位 Fdatool是Matlab自带的一个数字滤波器的设计分析软件,里面提供了丰富的参数供调整(具体的参阅Matlab的教材),大大降低了数字滤波器的设计难度,同时又可以设计出高质量的滤波器。fdatool虽然不是最好的滤波器设计软件,但是
9、在Matlab响亮的名号下,得到了广泛的使用。FIR Megacore是Altera针对其主流FPGA推出的一款商业化的数字滤波器设计软件,可以直接生成HDL代码,同时其结构针对Altera自己的FPGA做了各种各样的优化。尽管fdatool也可以生成可综合的HDL代码,但是没有针对FPGA的M4K、DSP Block做出相应的优化,所以性能和FIR Megacore生成的FIR滤波器有相当的差距。然而,FIR Megacore的滤波器设计工具相当的简单,只提供了窗函数法,用户只能定义有限的几个参数。而其他的设计方法,比如矩形系数更好的等纹波法则只能在fdatool里面找到。 所幸的是,FIR
10、 Megacore提供了滤波器的Coefficients导入的选项,可以使用第三方工具生成的Coefficients。这使得我们能够用FIR Megacore来实现fdatool生成的滤波器。在matlab命令编辑窗口输入Fdatool指令,敲击回车可以打开Filter Design & Analysis Tool窗口,在该工具的帮助下,我们可以完成f.i.r.滤波器系数的计算工作。Filter Design & Analysis Tool窗口Fdatool界面总共分两大部分,一部分是design filter,在界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,
11、用来显示滤波器的各种特性。design filter部分主要分为:Response Type(响应类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的滤波器。根据本次作业要求,在该选项中选择Lowpass选项。Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type i(切比雪夫i型)法、 Chebyshev Type ii(切比雪夫ii型) 法、Elliptic(椭圆滤波器)法等和FIR滤波器的Equiripple法、Least-squares(最小
12、乘方)法、Window(窗函数)法等多种方法。结合本次作业要求,选择FIR滤波器的窗函数法进行设计。选定窗函数法后,会在右侧出现Options区域,进行窗函数法相关参量的设置,根据作业要求选择Kaiser窗并设置Beta为:0.5。Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify order(指定阶数)和Minimum order(最小阶数)。在Specify order中填入所要设计的滤波器的阶数(n阶滤波器,specify ordern-1),如果选择Minimum order则matlab根据所选择的滤波器类型自动使用最小阶数。本次作业要求设计5阶滤波器,
13、所以选定Specify order并填入4。Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Response Type选项和Design Metho选项决定。我们要求的 Lowpass(低通)滤波器只需要定义Fs、Fc。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。Magnitude Specifications选项,可以定义幅值衰减的情况。采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。滤波类型为:直接型FIR通过点击matlab的FDATool可以看出FIR滤波器的幅频响应为:相频响应与幅频响应的比较:由此图可以看出其时域与频域特性满足要求。五结论 以上理论分析和仿真结果表明,软硬件结合串行执行的DSP算法相比,DA算法具有明显的占用系统资源低和运行速度高的优点,是一种更为有效的FIR 滤波器设计方法;基于DA算法的数字信号处理设计具有DSP算法所无可比拟的优势,在极大的提高了FIR 数字滤波器的处理速度和数据吞吐能力的同时,又可以保证系统很小的处理误差,是一种比较实用可靠高效的设计方法。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1