数字信号处理的FPGA实现课程报告Word下载.docx
《数字信号处理的FPGA实现课程报告Word下载.docx》由会员分享,可在线阅读,更多相关《数字信号处理的FPGA实现课程报告Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
使用FPGA的芯片EPM240F10015来实现其相应的DA表为:
LIBRARYieee;
USEieee.std_logic_1164.ALL;
USEieee.std_logic_arith.ALL;
ENTITYcase5pIS
PORT(table_in:
INSTD_LOGIC_VECTOR(4DOWNTO0);
table_out:
OUTINTEGERRANGE0TO25);
ENDcase5p;
ARCHITECTURELEsOFcase5pIS
BEGIN
--ThisistheDACASEtablefor
--the5coefficients:
1,3,5,7,9
--automaticallygeneratedwithdagen.exe--DONOTEDIT!
PROCESS(table_in)
BEGIN
CASEtable_inIS
WHEN"
00000"
=>
table_out<
=0;
00001"
=1;
00010"
=3;
00011"
=4;
00100"
=5;
00101"
=6;
00110"
=8;
00111"
=9;
01000"
=7;
01001"
01010"
=10;
01011"
=11;
01100"
=12;
01101"
=13;
01110"
=15;
01111"
=16;
10000"
10001"
10010"
10011"
10100"
=14;
10101"
10110"
=17;
10111"
=18;
11000"
11001"
11010"
=19;
11011"
=20;
11100"
=21;
11101"
=22;
11110"
=24;
11111"
=25;
WHENOTHERS=>
ENDCASE;
ENDPROCESS;
ENDLEs;
系统程序为:
--Usingpredefinedpackages
ENTITYdafsmIS------>
Interface
PORT(clk,reset:
INSTD_LOGIC;
x0_in,x1_in,x2_in,x3_in,x4_in:
lut:
OUTINTEGERRANGE0TO25;
y:
OUTINTEGERRANGE0TO1024);
ENDdafsm;
ARCHITECTUREfpgaOFdafsmIS
COMPONENTcase5p--User-definedcomponent
ENDCOMPONENT;
TYPESTATE_TYPEIS(s0,s1);
SIGNALstate:
STATE_TYPE;
SIGNALx0,x1,x2,x3,x4,table_in
:
STD_LOGIC_VECTOR(4DOWNTO0);
SIGNALtable_out:
INTEGERRANGE0TO31;
table_in(0)<
=x0(0);
table_in
(1)<
=x1(0);
table_in
(2)<
=x2(0);
table_in(3)<
=x3(0);
table_in(4)<
=x4(0);
PROCESS(reset,clk)------>
DAinbehavioralstyle
VARIABLEp:
INTEGERRANGE0TO63;
--temp.register
VARIABLEcount:
INTEGERRANGE0TO5;
--countsshifts
IFreset='
1'
THEN--asynchronousreset
state<
=s0;
ELSIFrising_edge(clk)THEN
CASEstateIS
WHENs0=>
--Initializationstep
=s1;
count:
p:
x0<
=x0_in;
x1<
=x1_in;
x2<
=x2_in;
x3<
=x3_in;
x4<
=x4_in;
WHENs1=>
--Processingstep
IFcount=5THEN--Issumofproductdone?
y<
=p;
--Outputofresulttoyand
--startnextsumofproduct
ELSE
=p/2+table_out*16;
FORkIN0TO3LOOP--Shiftbits
x0(k)<
=x0(k+1);
x1(k)<
=x1(k+1);
x2(k)<
=x2(k+1);
x3(k)<
=x3(k+1);
x4(k)<
=x4(k+1);
ENDLOOP;
=count+1;
ENDIF;
LC_Table0:
case5p
PORTMAP(table_in=>
table_in,table_out=>
table_out);
lut<
=table_out;
--Extratestsignal
ENDfpga;
如图f给出了对应序列{2,3,2,6,6}的仿真结果此仿真结果给出了clk,reset等的信号。
以及5个输入信号:
(f)
由上图可以看出在程序中通过case5p来定义分布式算法表,合成器可以使用逻辑单元来实现lut,也由此可以看出其registeredperformance为140.35MHz。
其相应生成的FIR滤波器的RTLviewer为:
2.采用直接型实现5阶FIR滤波器
如分布式一样,直接型算法的时候也采用EPM240F10015,其相应的系统代码为:
PACKAGEeight_bit_intIS--User-definedtypes
SUBTYPEBYTEISINTEGERRANGE-128TO127;
TYPEARRAY_BYTEISARRAY(0TO4)OFBYTE;
ENDeight_bit_int;
LIBRARYwork;
USEwork.eight_bit_int.ALL;
ENTITYfir_srgIS------>
PORT(clk:
x:
INBYTE;
OUTBYTE);
ENDfir_srg;
ARCHITECTUREflexOFfir_srgIS
SIGNALtap:
ARRAY_BYTE:
=(0,0,0,0,0);
--Tappeddelaylineofbytes
p1:
PROCESS------>
Behavioralstyle
WAITUNTILclk='
;
--Computeoutputywiththefiltercoefficientsweight.
--Thecoefficientsare[13579].
--DivisionforAlteraVHDLisonlyallowedfor
--powers-of-twovalues!
=tap(0)+3*tap
(1)+5*tap
(2)+7*tap(3)+9*tap(4);
FORIIN3DOWNTO1LOOP
tap(I)<
=tap(I-1);
--Tappeddelayline:
shiftone
tap(0)<
=x;
--Inputinregister0
ENDflex;
其对应脉冲10的滤波器脉冲响应y的仿真结果如图g:
(g)
也由此可以看出其registeredperformance为64.52MHz。
四.基于matlab工具的滤波器系数计算:
其指标为:
采样频率:
64.52MHz归一化截止频率:
0.4MHz
类型:
低通输入数据S(n)宽度:
9位
阶数:
5阶输出数据y(n)宽度:
10位
Fdatool是Matlab自带的一个数字滤波器的设计分析软件,里面提供了丰富的参数供调整(具体的参阅Matlab的教材),大大降低了数字滤波器的设计难度,同时又可以设计出高质量的滤波器。
fdatool虽然不是最好的滤波器设计软件,但是在Matlab响亮的名号下,得到了广泛的使用。
FIRMegacore是Altera针对其主流FPGA推出的一款商业化的数字滤波器设计软件,可以直接生成HDL代码,同时其结构针对Altera自己的FPGA做了各种各样的优化。
尽管fdatool也可以生成可综合的HDL代码,但是没有针对FPGA的M4K、DSPBlock做出相应的优化,所以性能和FIRMegacore生成的FIR滤波器有相当的差距。
然而,FIRMegacore的滤波器设计工具相当的简单,只提供了窗函数法,用户只能定义有限的几个参数。
而其他的设计方法,比如矩形系数更好的等纹波法则只能在fdatool里面找到。
所幸的是,FIRMegacore提供了滤波器的Coefficients导入的选项,可以使用第三方工具生成的Coefficients。
这使得我们能够用FIRMegacore来实现fdatool生成的滤波器。
在matlab命令编辑窗口输入Fdatool指令,敲击回车可以打开FilterDesign&
AnalysisTool窗口,在该工具的帮助下,我们可以完成f.i.r.滤波器系数的计算工作。
FilterDesign&
AnalysisTool窗口
Fdatool界面总共分两大部分,一部分是designfilter,在界面的下半部分,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
designfilter部分主要分为:
ResponseType(响应类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的滤波器。
根据本次作业要求,在该选项中选择Lowpass选项。
DesignMethod(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、ChebyshevTypei(切比雪夫i型)法、ChebyshevTypeii(切比雪夫ii型)法、Elliptic(椭圆滤波器)法等和FIR滤波器的Equiripple法、Least-squares(最小乘方)法、Window(窗函数)法等多种方法。
结合本次作业要求,选择FIR滤波器的窗函数法进行设计。
选定窗函数法后,会在右侧出现Options区域,进行窗函数法相关参量的设置,根据作业要求选择Kaiser窗并设置Beta为:
0.5。
FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括Specifyorder(指定阶数)和Minimumorder(最小阶数)。
在Specifyorder中填入所要设计的滤波器的阶数(n阶滤波器,specifyorder=n-1),如果选择Minimumorder则matlab根据所选择的滤波器类型自动使用最小阶数。
本次作业要求设计5阶滤波器,所以选定Specifyorder并填入4。
FrenquencySpecifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。
它的具体选项由ResponseType选项和DesignMetho选项决定。
我们要求的Lowpass(低通)滤波器只需要定义Fs、Fc。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
MagnitudeSpecifications选项,可以定义幅值衰减的情况。
采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
。
滤波类型为:
直接型FIR
通过点击matlab的FDATool可以看出FIR滤波器的幅频响应为:
相频响应与幅频响应的比较:
由此图可以看出其时域与频域特性满足要求。
五.结论
以上理论分析和仿真结果表明,软硬件结合串行执行的DSP算法相比,DA算法具有明显的占用系统资源低和运行速度高的优点,是一种更为有效的FIR滤波器设计方法;
基于DA算法的数字信号处理设计具有DSP算法所无可比拟的优势,在极大的提高了FIR数字滤波器的处理速度和数据吞吐能力的同时,又可以保证系统很小的处理误差,是一种比较实用可靠高效的设计方法。