第7章基于FPGA的DSP开发设计在基于FPGA的DSP开发中,Altera提出了基于FPGA的DSP开发平台。这样设计效率大为提高。由Altera与其合作伙伴AMPP(AlteraMegafunctionPartnerProgram)提供了针对DSP设计的各种用于硬件加速的IP核。每一个核都可以进行参数设置,以构成针对特定应用的硬件功能模块。7.1概述在过去很长一段时间,DSP处理器是DSP应用系统核心器件的惟一选择。但DSP处理器由于自身硬件结构的特点,不适合于要求能进行结构特性随时变更的应用场合,在灵活处理各种算法时存在不足之处。主要表现在:其硬件结构的不可变性导致了其总线的不可改变性。而固定的数据总线宽度,已成为DSP处理器一个难以突破的瓶颈。DSP处理器大量运算顺序指令,需要耗费较多的时钟周期,使算法的处理达不到实时性要求。在硬件加速方面,DSP无法根据特定的设计需要来作任何更改,特别是面向当今不断发生的各种技术标准和协议的变更。使用固定的数字信号处理器,需要较多的外设,不利于集成度的提高。7.2DSPBuilder功能简介与设计流程DSPBuilder是Altera公司在2002年推出的面向DSP的开发工具。它将MATLAB的Simulink和QuartusII开发软件连接起来。设计人员首先在Matlab软件中进行算法设计,然后在Simulink软件中进行系统集成,最后将设计转换为硬件描述语言(HDL)文件,利用QuartusII软件中进行综合、编译仿真和硬件测试。7.2.1DSPBuilder功能简介DSPBuilder开发平台具有一个友好的开发环境。它可以帮助设计人员创建一个DSP设计的硬件模型,以此来缩短DSP开发的周期。DSPBuilder开发平台将Matlab的Simulink模块与Altera的DSPBuilder模块和Altera的MegaCore功能模块组合在一起,从而使系统级的设计和DSP算法的实现连接在一起。7.2.2DSPBuilder设计流程DSPBuilder设计首先在Simulink中建立设计模型。设计模型建立之后,DSPBuilder将设计转换为VerilogHDL或VHDL硬件描述语言。随后,DSPBuilder调用QuartusII的相关功能完成综合、布局布线等工作,还可使用SignalTapII在DSPBuilder中在线调试。利用DSPBuilder完成DSP应用设计的设计流程,如图7.1所示。7.3基于DSPBuilder技术的设计示例——调幅电路DSPBuilder技术和Matlab/Simulink技术相结合,可以用图形化模式方便、清晰地建立DSP处理系统的模型,并在Matlab环境中进行算法及仿真。本节以调幅电路的设计为例,介绍这种设计方法。7.3.1在Matlab/Simulink中建立算法模型根据调幅电路的工作原理,建立设计框图,如图7.2所示。7.3.2准备工作在使用DSPBuilder技术做设计之前,需要做一些准备工作。具体步骤如下:7.3.3在新模型窗口中添加单元模块接着就需要根据设计原理图在新模型窗口中添加单元模块,对模块进行参数设置以符合需要。设计中的绝大部分模块都能在库中找到,一些特定模块可以自己设计。下面是本例中添加单元模块的步骤:7.3.4在Simulink环境中仿真Simulink仿真只是理论上的仿真,和实际电路无关。为了完成设计还需要转换成VHDL语言,在FPGA开发软件上做进一步仿真。7.3.5在Modelsim环境中进行功能仿真上一节在Simulink中进行的仿真是属于系统验证性质的仿真,仅仅是对模型文件进行的算法级仿真,并没有对生成的VHDL代码进行过仿真。事实上,生成的VHDL程序是RTL级的,具有针对具体的硬件结构的特点。转换后的VHDL代码实现可能与mdl模型描述的情况不尽相符,针对生成的RTL级的VHDL代码进行功能仿真才是准确的。7.3.6在QuartusⅡ环境中进行时序仿真上面Modelsim完成的只是功能性仿真,要想更精确地反映设计的硬件特性,还是要在QuartusⅡ环境中进行时序仿真。具体步骤如下:7.4基于DSPBuilder的层次化设计——FIR滤波器在设计复杂系统时,常常把复杂系统分解成若干子系统,以便于设计和调试。DSPBuilder技术支持这种层次化设计,可以把设计好模型作为子系统和其他模型集成到一起,组成复杂系统。本节以一个FIR(FiniteImpulseResponse:有限冲激响应)滤波器设计为例,详细介绍层次化设计的方法。7.4.1FIR滤波器的原理FIR滤波器在数字通信系统中被大量使用,以实现各种各样的功能,如低通滤波、带通滤波、抗混叠、抽样和内插等。FIR滤波器的冲激响应总是有限长的,其系统函数可以记为10)()(NnnznhZH7.4.2建立系统设计模型与上一节类似,先建立工作库myfir,启动Matlab环境,把Matlab当前的工作目录切换到工作库文件夹myfir下。打开新模型窗口中,创建新模型文件myfir.mdl。接下来的步骤如下:7.4.3建立子系统的模型双击上面multadd14模块,打开子系统界面,如图7.37所示。7.4.4在Simulink和Modelsim中仿真完成模型设计之后,可以先在Simulink中对模型进行仿真,检验设计结果是否正确,仿真步骤如下。7.5MegacoreFunction函数的使用为了简化设计和缩短测试时间,Altera提供了许多可设置参数的IPMegacore函数。允许用户在获取特许文件之前,在硬件和仿真时,下载和评估AlteraMegacore函数。7.5.1安装Megacore函数AlteraDSPBuilder函数和QuartusⅡ软件一起安装。在安装新的Megacore函数后,需要运行DSPBuilder设置命令。以确定所有新安装的或升级的Megacore函数在DSPBuilder库中。遵循如下步骤:(1)启动MatlabSimulink软件。(2)在Matlab命令窗的提示符下使用cd命令,进入安装DSPBuilder的目录下。(3)在Matlab命令窗的提示符下,键入alt_dspbuilder_setup_megacore,再回车。7.5.2使用Megacore函数的设计流程在MATLAB/Simulink环境中,使用Megacore函数进行仿真的步骤如下:(1)把Megacore函数模块添加到设计模型中,给该模块取名字,确保名字的唯一性。(2)对Megacore函数进行参数设置。(3)生成新的Megacore函数。(4)把新的Megacore函数和模型中的其他模块相连接。(5)在设计模型中对该新的Megacore函数进行仿真。7.5.3使用Megacore函数设计FIR滤波器在本节,使用Megacore函数库中的fircompiler函数模块来设计一个低通FIR滤波器,以此为例,介绍Megacore函数的使用方法。1.创建新的Simulink设计模型2.把FIRCompiler函数添加到你的模型中3.对FirCompiler函数进行参数设置4.添加其它模块,构成系统模型5.在Simulink上仿真6.对设计进行编译7.执行RTL仿真7.6小结在本章中,主要向用户讲解了关于基于FPGA的DSP开发步骤及其方法。其中,主要介绍了DSPBuilder的功能与设计流程、滤波器原理和MegacoreFunction函数的使用方法等。通过本章的学习,用户能够更好地使用DSPBuilder进行开发与设计。