基于DSP Builder数字信号处理器的FPGA设计
扫描二维码
随时随地手机看文章
DSP技术广泛应用于各个领域,但传统的数字信号处理器由于以顺序方式工作使得数据处理速度较低,且在功能重构及应用目标的修改方面缺乏灵活性。而使用具有并行处理特性的FPGA实现数字信号处理系统,具有很强的实时性和灵活性,因此利用FPGA实现数字信号处理成为数字信号处理领域的一种新的趋势。
以往基于FPGA的数字信号处理系统的模型及算法采用VHDL或VerilogHDL等硬件描述语言描述。但这些硬件描述语言往往比较复杂,而采用Altera公司推出的专门针对数字信号处理器设计工具DSP BuildIer则可大大简化设计过程,提高设计效率。
1 基于DSP Builder的数字信号处理器设计流程
DSP Builder是一个系统级(或者说算法级)设计工具,它架构在多个软件工具之上,并连接系统级的算法仿真建模和RTL级的硬件实现两个设计领域的设计工具,最大程度地发挥了这两种工具的优势。
DSP Builder依赖于Math-Works公司的数学分析工具Matlab/Simulink,以Simulink的Blockset出现,可在simulink中进行图形化设计和仿真,同时又通过signal Compiler把Maltlab/Simulink/DSP Builder的设计文件转成相应的VHDL设计文件,以及用控制综合与编译的tcl脚本。而对后者的处理可以由FPGA/CPLD开发工具QuartusⅡ完成。其设计流程如下:
Step1:在Simulink环境中调用Altera DSP库(非MATLAB自带的DSP库)中的块,进行数学模型设计。
Step2:在MATLAB中进行纯数学上的仿真、验证及修改。
Step3:当仿真符合设计要求后,再加入并运行Signal Compiler模块,将.mdl文件自动转成.vhd文件,进行RTL级的功能仿真和逻辑综合。
Step4:在QuartusⅡ中进行编译设计并进行时序仿真。
Step5:下载到一个硬件开发板上并测试。
2 设计实例
FIR和IIR滤波器是当前数字信号处理巾最常用的2种滤波器,其中FIR因其具有精确的线性相位特性而得到广泛应用。下面以截止频率为5 kHz,采样频率为32 kHz,输入序列位宽为9位(最高位为符号位)的12阶FIR低通数字滤波器为例,阐述基于DSP Builder的数字信号处理器设计方案。
2.1 FIR数字滤波器结构模型
对于N阶FIR数字滤波系统,其冲击响应总是有限长的,系统函数为:
滤波器的差分方程为:
式中,x(n)是输入采样序列,h(n)是滤波器系数,N是滤波器的阶数,y(n)表示滤波器的输出序列。
设计滤波器的任务就是寻找一个因果、物理上可实现的系统函数H(z),使其频率响应满足所希望的频域指标。图1为阶FIR数字滤波器的结构图。可见,FIR的数字滤波过程就是一个信号逐级延迟的过程,将各级的延迟输出加权累计,即得到FIR的输出。
2.2 滤波器系数的确定
滤波器系数使用Matlab的FDNTool设计工具获得。FDATool即为Filter Design&Analysys Tool,可以完成多种滤波器的设计、分析和性能评估。
启动FDATool后就是滤波器的设计界面,设置相应参数,便可生成所需的系数。由于得到的系数均为介于[-1,1]区间的浮点数,而在DSP Builder下建立的FIR滤波器模型需要一个整数(有符号整数类型)作为滤波器系数,故需将其量化为整数。量化后滤波器系数为:
2.3 滤波器模型的建立
在DSP Builder平台上设计FIR滤波器,首先在Matlab的Simulink中建立一个.MDL模型文件,即根据所要设计FIR滤波器的结构调用Al-tera DSP Builder和其他Simulink库中的图形模块,构成设计框图文件。
如果把所有的模块放在一个Simulink图中,设计图会显得非常复杂、庞大,不利于阅读或排错,这时可以利用层次设计方法设计。对于12阶FIR数字滤波器,可以先设计一个3阶FIR滤波器子模块fir3(图2),然后调用3个fir3子模块构造成12阶nR数字滤波器。使用。DSPBuilder工具箱建立的12阶FIR数字滤波器模型,如图3所示。
2.4 基于Simnlink的系统VHDL代码生成
完成模型设计后,先在Simulink中对模型进行系统仿真,即通过Simulink中的2通道示波器Scope模块查看仿真结果。DSP Builder可提供QuartusⅡ软件和MATLAB/Simulink工具之间的接口,即Signal Compiler模块。
若通过系统仿真,该系统已达到设计要求,双击SignalCompiler模块,设置好相关参数后,即可将模型文件.mdl转化为硬件描述语言文件.vhd,并可对其进行综合。之后在OuartusⅡ环境中,打开DSP Builder,建立的QuartusⅡ工程文件,就可以对生成的VHDL代码进行器件配置、引脚设定、编译、时序仿真、硬件下载等工作。
2.5 基于QuartusⅡ的时序仿真
在Simulink中进行的系统仿真是针对算法实现的,与目标器件和硬件系统没有关系,其仿真结果并不能精确反映电路的全部硬件特性,因此,需要对设计进行时序仿真。
在QuartusⅡ环境中,打开DSP Builder建立的QuartusⅡ工程文件,对上述的VHDL代码进行时序仿真。图4为在OuartusⅡ7.O环境下FIR数字滤波器时序仿真图。图4中clock为系统时钟,sclrp为清零信号,xin为输入数据,yout为滤波器的输出结果。
由式(2)知:若xin{1,-5},h(n)={-22,-33,-13,41,108,154,154,108,41,-13,-33,-22},则滤波器的输出yout的理论结果为:yout=xinh(n)={-14,-56,-14,53,128,180,178,124,42,-31,-64,-56,-14,28}。可见,所设计的FIR数字滤波器在QuarmsII 7.0中进行时序仿真得到的输出结果和理论上计算得到的结果是完全一致的。
3 实际硬件测试
只进行工程软件仿真远远不够,还必须进行硬件实时测试。在硬件实际运行时,可以从外部信号源接入器件内部或者在其内部存储正弦波数据。这里采用后者,即在顶层文件中引入LPM_ROM宏模块,在其中存入频率分别为0.5和8 kHz2个正弦波迭加信号数据的.hex文件.FIR滤波器模块直接从ROM中读取数据,测试电路如图5所示。
在QuartusⅡ环境中,对测试电路进行编译,下载到cyclone系列EP1C12Q240C8器件后,就可以对硬件进行测试。采用Ahem公司的Signal-TapⅡ嵌入式逻辑分析仪进行芯片测试,用户无需外接专用仪器,就可以通过FPGA器件内部所有信号和节点的捕获对系统故障进行分析和判断,而又不影响原硬件系统的正常工作。
经嵌入式逻辑分析仪得到的实时波形如图6所示。实际测试发现,经过设计的低通滤波器后,高频信号被滤除,只有低频信号输出,滤波效果满足系统要求。需要注意的是,SignalTapⅡ嵌入式逻辑分析需工作在JTAG方式,在调试完成后,需将SignalTapⅡ移除设计,以免浪费资源。
4 结束语
由以上设计过程可知,基于Matlab/Simulink/DSP Builder/OuartusⅡ的设计流程,可以帮助设计者完成基于FPGA的数字信号处理系统设计。使用相对独立功能的电路模块和子系统进行模块化的设计,避免了繁琐的VHDL语言编程;设计者只要对DSP Builder模块库中相应模块的基本参数进行简单设置,而不需要对各模块具体的实现过程进行详细了解,甚至不需要了解FPGA本身和硬件描述语言,极大缩短了开发周期。而且随着技术的发展,FPGA的性能越来越高,价格则逐步降低,芯片的处理速度更快,片内资源更大,这将给FPGA在信号处理领域的应用提供更为广阔的空间。