基于vhdl语言在fir滤波器设计_毕业设计[管理资料]

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
1绪论 (1)
(1)
(1)
(1)
(1)
2 FIR数字滤波器的设计方法 (4)
(4)
(4)
FIR数字滤波器的基础 (4)
(6)
FIR数字滤波器的理论计算方式与参数转换思想: (7)
Matlab直接FDAtool设计方式解析 (12)
FDAtool设计模板及设计结果图 (15)
(15)
FPGA 可编程逻辑元件介绍 (15)
QuartusⅡ及Verilog HDL介绍 (17)
(11阶FIR数字滤波器) (18)
(19)
3滤波器仿真滤波 (27)
(27)
(30)
仿真总结 (32)
4 总结与展望 (32)
设计成果总结 (32)
设计心得 (32)
参考文献 (33)
致谢 (33)
第一章绪论
随着各种精密计算和快速计算的发展,现在的通信对信号处理的实时性、快速性的要求很高。

然而,以前的模拟滤波器克服不了电压漂移、温度漂移和噪声等问题,同时,也带来了许多误差和不稳定因素。

数字滤波器具有稳定性高、精度高、设计灵活、实现方便等突出优点,因此解决了模拟滤波器无法解决的问题。

FPGA元器件在高速并行处理和数据传输中有独特优势,FPGA正在前端信号处理中越来越多地代替ASIC 和DSP。

我们需要的就是这种设计周期短,功能密度高,重组时间短的元器件。

本文在FPGA元器件的基础上,实现现代FIR数字滤波器功能。

并且研究多种快速的FIR数字滤波器的理论设计思想和程序设计方法。

1985年,XilinX公司生产出了第一块FPGA元器件,由于它有着集成度高、方便易用、开发和上市周期短的绝对优势,使得FPGA器件在数字设计和电子生产中得到迅速普及和应用,发展潜力十分巨大。

现在FPGA已经发展到可以利用硬件乘加器、片内储存器、逻辑单元、流水处理技术等特有的硬件结构,高速完成FFT 、FIR 、复数乘加、卷积、三角函数以及矩阵运算等数字信号处理。

这样可以完成信号处理的主要技术,如中频采样、参数估计、自适应滤波、脉冲压缩、自适应波束形成和旁瓣对消等。

通过对目前数字滤波器的几种实现方法的简单分析,本文认为基于FPGA的数字滤波器具有许多优点,本文考虑到信息技术的发展对于数字滤波器的要求越来越高,而目前FIR数字滤波器的性能还不完善,于是选择了基于FPGA的数字滤波器作为主要研究内容,通常滤波器在进行数据处理时用到了卷积运算,在设计中的解决这些乘法运算的思路是将它们转换成加减法,这是目前解决乘法运算的主流思想。

设计初期在Matlab下对滤波器原理进行证明包括(零极点图、时域和频域分析图等),分析FIR 数字滤波器的多种理论设计思想和窗函数选择方法,在设计后期对FIR数字滤波器的小数乘法问题进行单独论证。

然后对分析出来的问题进行论证和解决,最后在QUARTUSⅡ中进行仿真验证。

数字滤波器(Digital filter)是由数字乘法器、加法器和延时单元组成的一种装置。

其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。

可认为是一个离散时间系统按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置FIR(Finite Impulse Response )由线性系统理论可知,
在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。

当我们处理有限的离散数据时,线形系统的响应(包括对冲击的响应)也是有限的。

若线性系统仅是一个空间滤波器,则通过简单地观察它对冲击的响应,我们就可以完全确定该滤波器。

通过这种方式确定的滤波器称为有限冲击响应(FIR)滤波器。

图1-1总体设计流程图
第二章FIR数字滤波器的设计方法
数字滤波器的功能一般是用来变换时域或者频域中某些要求信号的属性,滤除信号中某一部分频率分量。

经过数字滤波器的信号是让其频谱与数字滤波器的频率响应相乘从而得出新的结果。

经过一个线性卷积过程,从时域上输入信号与滤波器的单位冲击响应作一个卷积和。

下面是卷积定义式:
∑∑-
=
-
=
*
=
k k
k f k
n
x
k
n
f
n
x
n
f
n
x
n
y]
[
]
[
]
[
]
[
]
[
]
[
]
[(1)
LTI数字滤波器在一般情况下分为有限脉冲响应(Finite impulse response)和无限脉冲响应(Infinite impulse response),FIR数字滤波器的设计方法和IIR滤波器的设计方法有很大的差别。

因为其设计方向是选择有限长度的h(n),使频率响应函数H(eωj)满足指标。

数字滤波器正在用直接的电子计算机规范和算法进行分析的方式来逐渐代替传统的模拟滤波器的RLC元器件和放大电路。

FIR数字滤波器的基础
首先介绍FIR数字滤波器基本原理,在如下表格中对FIR和IIR数字滤波器进行了全面的比较:
表2-1两种滤波器特点比较分析
通常情况下一般数字滤波器的N阶FIR数字滤波器基于输入信号x(n)的表达式为:
∑==-=1
0)()()(n i i n x i h n y (2)
这个公式给我们了一个非常明了的直接型网络结构,该结构表现出N 个乘法器,每次采样y(n)的内容是n 次乘法和n-1次加法,然后做乘累加之和。

如图2-1所示:
图2-1 FIR 滤波器直接型网络结构
从DSP 的介绍中,第一类线性相位对h(n)的约束条件:
ωτωω
ωj g n j N n j e H e n h e H ---===∑)()()(1
0 (3) )sin )(cos ()sin )(cos (10ωτωτωωωj H
n j n n h N n g -=-∑-= (4)
由公式(3),(4)我们可以推出:
∑∑-=-==101
0cos sin )(sin cos )(N n N n n n h n n h ωτωωτω (5)
移相并利用三角公式化简得到:
∑-==-1
00)](sin[)(N n n n h τω (6)
从数字信号处理学科中知道函数)(sin )(τω-n n h 关于求和区间的中心(N-1)/2奇对称,于是我们要求τ和h(n)满足如下条件:
⎩⎨⎧--=-=)1()()(n N h n h ωτωθ 其中对应的有⎪⎩⎪⎨⎧-≤≤-=1
021N n N τ (7)
图2-2 线性相位FIR 滤波器结构
若h(n)呈现对称特性,即此具有线性相位的滤波器是FIR数字滤波器。

滤波器的基础网络结构可以相互进行转换。

在前面本文已经讨论过, FPGA的实现中将对各种方法进行比较,找出最优设计方式。

从而达到减少资源占有和提高系统作业速度的目的,更好的体现实时性的数字滤波器优势。

在数字信号处理技术的研究中,一般是使用的三种设计方法:窗函数法,FDATool 直接设计法,程序编译法。

本文首先使用窗函数和Matlab软件共同进行设计。

随着软件技术的不断发展,Matlab软件能给设计者带来的数字信号处理工作已经非常的完善和多样了,设计者可以利用Matlab软件进行数字滤波器的设计和仿真,而且还可以用这款软件进行设计的优化。

数字滤波器的一般设计步骤如下:
做任何工程或者设计,设计者都必须要有一个期望的指标用来限制设计范围。

在很多的实际应用中,设计者常常都是使用数字滤波器做选频的工作。

因此,指标的形式一半在频域中给出相位响应和幅度。

相位响应的指标形式,一半是指系统在通频带中药有线性相位。

幅度指标:绝对指标,它给出对幅度响应函数的要求,一般用于FIR 滤波器的设计。

相对指标,以分贝值的形式给出具体限制。

设计者做高频的时候大概都有一个模式,就是首先得到技术指标,然后利用我们的技术和工具让我们的产品去逼近这个指标。

同理我们首先建立以个目标的数字滤波器模型。

一般情况下都是采用理想的数字滤波器模型,然后去逼近我们想要的目标数字滤波器参数。

在工作中我们发现通过(1)、(2)之后本文会得到以差分、系统函数或者冲击响应这三种方式描述的滤波器。

这个时候设计者可以利用计算进行仿真,在系统中分析
技术指标和滤波结果是否是希望得到的结果。

图2-3各种理想数字滤波器的幅度频率响应
FIR 数字滤波器的理论计算方式与参数转换思想
在理论上掌握了FIR 数字滤波器的基本原理之后,本文需要对设计思想进行一个多方位的论证和尝试。

首先设计者设计滤波器要有一个硬性的指标,这个指标可以是直接给出最基本的数据,也有多重表现形式。

于是我例举两种特殊的指标形式然后加以解决设计。

然后我们分别用2种方式来设计不同指标的滤波器。

接下来我首先用程序的方式来实现滤波器:
使用remez 函数设计FIR 低通滤波器
设计滤波器,使逼近低通滤波特性|
)(e H j d ω|。

|)(e H j d ω|=⎩⎨⎧01⎪⎩⎪⎨⎧≤≤≤≤π
ωππω16/54/0 要求通带波纹dB p 3≤α,阻带衰减
dB s 60≥α,并用最小阶数实现。

绘出设计的FIR 数字滤波幅频特性曲线,检验设计指标。

这个指标我们可以以如下计算方法来得出详细指标:从给出的低通滤波特性|
)(e H j d ω|。

我们可以看出设计参数f=[1/4,5/16],m=[1,0];dev 的计算根据公式:Rp=-20
log 10()δδ211/1+->0,于是有Rp=20)]1(1/)1(1[log 10dev dev -+,))2(log(20dev A s -=,所以dev(1),dev(2)可以被表示出来。

有了这几个参数我们现在就可以根据已经设定好的格式来调用函数remezord 和remez 函数了,于是可得如下程序。

clear;close all
fc=1/4;fs=5/16; %输入给定指标
Rp=3;As=60;Fs=2;
f=[fc ,fs];m=[1,0]; %计算remezord 函数所需参数f ,m ,dev
dev=[(10^(Rp/20)-1)/(10^(Rp/20)+1),10^(-As/20)];
[N ,fo ,mo ,W]=remezord(f ,m ,dev ,Fs); %确定remez 函数所需参数
hn=remez(N ,fo ,mo ,W); %调用remez 函数进行设计
hw=fft(hn ,512); %求设计出的滤波器频率特性
w=[0:511] *2/512;
plot(w ,20*log10(abs(hw)));grid; %画对数幅频特性图
axis([0,max(w)/2,-90,5]);
xlabel('w/pi');ylabel('Magnitude(dB)')
line([0,],[-3,-3]); %画线检验设计结果
line([1/4,1/4],[-90,5]);line([5/16,5/16],[-90,5]);
程序结束。

用以上的程序我们可以得到在Matlab中的许多参数和图像,从而进一步分析我们的设计。

首先引入程序输出的幅频特性图:(如图2-4)
图2-4在Matlab中的程序
图2-5程序输出的幅频特性图2-6 Impulse Response
图2-7 Magnitude and Phase Responses 图2-8 Phase Delay
图2-9 Pole,Zero plot
结论:从上面程序运行情况分析,观察程序输出的幅频特性图中横线为-3dB,两条竖线分别位于频率π/4和5π/16。

显然,通带指标有富裕,零极点图反应出大部分零极点在圆内,过渡带宽度和阻带最小衰减刚好满足指标要求。

表2-2窗函数选择指标
名称近似过渡带宽最小阻带衰减精确过渡带宽
矩形4π/M21dB
巴特利特8π/M25dB
汉宁8π/M44dB
哈明8π/M51dB
布莱克曼12π/M74dB 11π/M
取Kaiser窗时用MATLAB中的kaiserord函数来得到长度M
在设计指标中没有直接给出窗函数的,可以利用下面这个表格进行筛选,具体方法如下:
这个表格给出了近似过渡带宽、精确过渡带宽和最小阻带衰减,我们可以根据自己滤波器的参数来选择我们的窗函数,因为选择不同的窗函数设计出来的滤波器生成的过渡带宽度和阻带最小衰减是不同的。

在这里我以一个例子来说明函数的选择方式:
用窗函数法设计FIR 带通滤波器。

指标如下:
高端通带截止频率 πω2.0=ls
高端阻带截止频率 πω35.0=lp
低端阻带截止频率 πω65.0=up
低端通带截止频率 πω8.0=us
通带最大衰减 Rp=1dB
阻带最小衰减 Rs=60dB
在这样一个例子中,可以看到它明确的给出了Rs=60dB 来设置窗函数类型和阶次。

表格中给出的blackman 窗其滤波器阻带最小衰减是74dB ,再利用给出的其他参数计算滤波器阶数。

表中显示窗口长度M 由过渡带宽度B==,而Blackman 窗设计的滤波器过渡带宽度为12π/M,则M=12/=80。

又因M=N+1,所以滤波器阶数N=79。

在了解了怎么选择窗函数和计算滤波器阶数之后,本论文将针对实际FIR 数字滤波器进行研究。

已经给出了设计参数,下面开始利用MATLAB 程序来设计这个滤波器。

程序和对应的解释:
%用窗函数法设计FIR 带通滤波器
clear;close all;
wls=*pi;wlp=*pi;whp=*pi;
B=wlp-wls; %这里是在计算过渡带宽
N=ceil(12/); %计算窗口长度
wc=[wlp/pi-6/N ,whp/pi+6/N]; %设置理想带通截止频率
hn=fir1(N-1,wc ,Blackman(N)); %设计滤波器参数
仿真完成之后,掌握如何去利用已有的指标去设计一个滤波器,总的来说就是四项:
通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。

分析给定参数,计算出滤波器的阶数,频率等等相关指标。

把已经有的参数用程序函数表达出来,利用已经有的各种内置函数架设起滤波器。

参看Matlab 的输出图形和参数是否满足要求。

Matlab 直接FDAtool 设计方式解析
FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,(Filter Design Toolbox)。

FDATool可以设计几乎所有的基本的常规滤波器,包括FIR
和IIR的各种设计方法。

它操作简单,方便灵活。

FDATool界面总共分两大部分,一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。

Design Filter 部分主要分为:
Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。

Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type I(切比雪夫I型)法、 Chebyshev Type II(切比雪夫II型) 法、Elliptic(椭圆滤波器)法和FIR 滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。

Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。

在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1),如果选择Minimum Order则MATLAB根据所选择的滤波器类型自动使用最小阶数。

Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。

它的具体选项由Filter Type选项和Design Method选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。

采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。

Magnitude Specifications选项,可以定义幅值衰减的情况。

例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2
处的幅值衰减)。

当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。

参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10 Hz,通带上限截止频率fc2=20 Hz,过渡带宽6 Hz,,采用凯塞窗设计。

针对一个含有5Hz、15Hz和30Hz的混和正弦波信号已知滤波器的阶数n=38,beta=。

本例中,首先在Filter Type中选择Bandpass;在Design Method选项中选择FIR Window,接着在Window 选项中选取Kaiser,;指定Filter Order项中的Specify order为38;采样频率Fs=100Hz,截止频率Fc1=10Hz,Fc2=20Hz。

设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可以看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等。

我们可以根据FDAtool工具得到我们的滤波器相关增益。

系数转换成二进制码:
若采用乘法器,用1位整数位,1位符号位,共22位定点二进制数进行运算,负数用补码表示,由此将减法运算变成累加求和运算。

各系数可用matlab编程转成二进制补码:
/*
* Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool
*
* Generated by MATLAB(R) and the
*
* Generated on: 22-Mar-2011 20:09:12
*
*/
/*
* Discrete-Time FIR Filter (real)
* -------------------------------
* Filter Structure : Direct-Form FIR
* Filter Order : 38
* Stable : Yes
* Linear Phase : Yes (Type 1)
*/
/* General type conversion for MATLAB generated C-code */
#include ""
/*
* Expected path to
* D:\MATLAB7\extern\include\
*/
const int BL = 39;
const real64_T B[39] = { ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
};
这是一个非常典型的例子,可以清晰的看到利用Matlab提供的FDAtool设计滤波器的方便与快捷。

比较以上几种类型的滤波器参数,在给定的参数要求下,采用椭圆滤波器可以获得最佳的幅频响应特性,具有阶数低,过渡带窄等优点。

虽然椭圆滤波器在通带也会产生波动,但考虑到波动处在可接受的范围内,仍然符合设计要求。

但由直接型传输函数表达式来实现并不实用。

因此如前所说,将其分解为多个二阶传输函数的级联形式。

借助Matlab 信号处理工具箱中函tf2sos(Transfer function to second- order-
section)将传递函数转换为二阶级联形式。

对于是数字信号,需要对先前分析计算中分解获得的二阶子系统的滤波器系数进行量化,即用一个固定的字长加以表示。

量化过程中由于存在不同程度的量化误差,由此会导致滤波器的频率响应出现偏差,严重时会使滤波器的极点移到单位圆之外,使系统不稳定。

为了获得最优的滤波器系数,量化的精度也相当重要。

FDAtool设计模板及设计结果图
这里把上面的滤波器设计参数的总体图给出,如图2-10
图2-10 FIR带通滤波器总体设计参数
程序分析部分
根据上述FIR低通数字滤波器的原理与滤波特性,我们在上面的软件实践中已经掌握了设计数字滤波器的方法并且成功的使用Matlab/Simulink进行了设计和仿真。

通过以上的过程我们可以导出一定性能的FIR滤波器频率响应与抽头系数,然后用Verilog HDL语言设计和QUARTUSⅡ仿真FIR低通数字滤波器,实现用软件描述硬件的动作及功能,应用软件来实现数字滤波器的功能和时
序仿真。

FPGA 可编程逻辑元件介绍
EDA是Electronic Design Automation的缩写,意为电子设计自动化,即利用计算机自动完成电子系统的设计。

EDA技术是以计算机和微电子技术为先导,汇集了计算机图形学、拓扑、逻辑学、微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术。

它与电子技术、微电子技术的发展密切相关,吸收了计算机领域的大多数最新研究成果,以高性能的计算机作为工作工具,在EDA软件平台土,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

可编程逻辑器PLD(Programmable Logic Devices)是ASIC(Application Specific Integrated Circuits的一个重要分支。

ASIC按制造方法又可分为全定制(Full Custom)产品、半定制
(semi-custom)产品和可编程逻辑器件(PLD)。

前两种ASIC的设计和制造都离不开器件生产厂家,用户主动性较差。

随着微电子技术的发展,设计师们更愿意自己设计专用集成电路芯片,并尽可能缩短设计周期,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,在使用中也能比较方便的对设计进行修改。

可编程逻辑器件就是为满足用户的这一需求应运而生的。

使用FPGA器件设计数字电路,不仅可以简化设计过程,而且可以降低整个系统的体积和成本,增加系统的可靠性。

它们无需花费传统意义下制造集成电路所需大量时间和精力,避免了投资风险,成为电子器件行业中发展最快的一族。

使用FPGA器件设计数字系统电路的主要优点如下:
使用FPGA器件,可不受标准系列器件在逻辑功能上的限制。

而且修改逻辑可在系统设计和使用过程的任一阶段中进行,并且只须通过对所用的FPGA器件进行重新编程即可完成,给系统设计提供了很大的灵活性。

功能密集度是指在给定的空间能集成的逻辑功能数量。

可编程逻辑芯片内的组件门数高,一片FPGA可代替几片、几十片乃至几百片中小规模的数字集成电路芯片。

用FPGA器件实现数字系统时用的芯片数量少,从而减少芯片的使用数目,减少印刷线路板面积和印刷线路板数目,最终导致系统规模的全面缩减。

减少芯片和印刷板数目,不仅能缩小系统规模,而且它还极大的提高了系统的可靠性。

具有较高集成度的系统比用许多低集成度的标准组件设计的相同系统具有高得多的可靠性。

使用FPGA器件减少了实现系统所需要的芯片数目,在印刷线路板上的引线以及焊点数量也随之减少,所以系统的可靠性得以提高。

基于FPGA器件的可编程性和灵活性,用它来设计一个系统所需时间比传统方法大为缩短。

FPGA 器件集成度高,使用时印刷线路板电路布局布线简单。

同时,在样机设计成功后,由于开发工具先进,自动化程度高,对其进行逻辑修改也十分简便迅速。

因此,使用FPGA器件可大大缩短系统的设计周期,加快产品投放市场的速度,提高产品的竞争能力。

FPGA/CPLD器件的工作速度快,一般可以达到几百兆赫兹,远远大于DPS器件。

同时,使用FPGA 器件后实现系统所需要的电路级数又少,因而整个系统的工作速度会得到提高。

很多FPGA器件都具有加密功能,在系统中广泛的使用FPGA器件可以有效防止产品被他人非法仿制。

使用FPGA器件实现数字系统设计时,如果仅从器件本身的价格考虑,有时还看不出来它的优势,但是影响系统成本的因素是多方面的,综合考虑,使用FPGA的成本优越性是很明显的。

首先,使用FPGA器件修改设计方便,设计周期缩短,使系统的研制开发费用降低;其次,FPGA器件可使印刷线路板面积和需要的插件减少,从而使系统的制造费用降低;再次,使用FPGA器件能使系统的可靠性提高,维修工作量减少,进而使系统的维修服务费用降低。

总之,使用FPGA器件进行系统设计能节约成本。

QuartusⅡ及Verilog HDL介绍
Quartus II 属于Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor 和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。

Altera Quartus II 作为一种可编程逻辑的设计环境,由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。

Verilog HDL是目前应用最为广泛的硬件描述语言。

Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。

该语言适合算法级,寄存器级,
逻辑级,门级和版图级等各个层次的设计和描述。

Verilog HDL进行设计最大的优点是其工艺无关性。

这使得我们在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路。

VerilogHDL是一种硬件描述语言(hardware description language),为了制作数字电路而用来描述ASIC和FPGA的设计之用。

VerilogHDL 的设计者想要以 C 编程语言为基础设计一种语言,可以使工程师比较容易学习。

(11阶FIR数字滤波器)
FPGA实现FIR滤波器,首先进行指标选定和Matlab软件参数仿真,然后执行基于Verilog
方法的硬件实现中用移位方法代替了乘法运算。

表2-3设计指标要求
设计指标高低通截止频率阶数据宽度
低通
(1对应Fs/2)
11 8bits
根据以上指标,利用MATLAB中的FIR滤波器系数设计命令fir1(10,)所设计滤波器的系数。

表2-4 Matlab中导出的滤波器系数
MATLAB软件仿真的滤波器的抽头系数及其幅度频响特性如下图2-11所示。

图2-11 11阶FIR滤波器的抽头系数和幅频特性曲线
可见抽头系数是奇对称的,即:
,。

FIR滤波器采用对称结构,每个抽头的输出分别乘以相应加权的二进制值,再将结果相加。

同时,利用滤波器系数的及对称的特性,对输入信号进行如下等效:
,。

VerilogHDL的实现
这个方法的实现中,使用了移位代替乘法运算来实现滤波器乘加的方法。

由于滤波器系数都是小数,所以我们先左移7位(即放大128倍),再用相应的移位来近似这些系数,最后经过乘加运算得到结果,对这个结果再右移7位(即缩小128倍)即可得出正确的结果。

各个系数的移位情况如下:其中2表示左移1位,1表示不移位,,其他依次类推:
128×h(0)=128×==
128×h(1)=128×==1++
128×h(2)=128×==4+1+++
128×h(3)=128×==8+4-1+
128×h(4)=128×==16+
128×h(5)=128×==128-16-4++
这样,我们就可以把这个11阶FIR数字滤波器的输出用一下的算式得到
表2-5 Verilog方法设计FIR的实验数据。

相关文档
最新文档