搜档网
当前位置:搜档网 › MULTLAB-DSPbuilder硬件模块设计

MULTLAB-DSPbuilder硬件模块设计

第六章Matlab/Dsp builder硬件模块设计

Matlab是国内强大的数学分析工具,广泛用于科学计算和工程计算,还可以进行复杂的数字信号处理系统的建模、参数估计及性能分析。Simulink是Matlab的一个组成部分,用于图形化建模仿真。DSP Builder是Altera公司推出的一个面向DSP开发的系统级工具,它构架在多个软件工具之上,并把系统级(算法级建模)和RTL级(硬件实现)两个设计领域的设计工具连接起来放在Matlab/Simulink平台上,而将QuartrsⅡ作为底层设计工具置于后台,从而最大程度地发挥了这三种工具的优势。DSP Builder作为Simulink中的一个工具箱,使得用FPGA设计DSP系统完全可以通过Simulink的图形化界面进行,只要简单地进行DSP Builder工具箱中的模块调用即可。Matlab/DSP Builder尤其适用于一些在Quartus Ⅱ上不方便完成或不能完成的设计项目(如涉及算法类及模拟信号处理与生产方面的系统处理)。DSP Builder还可以自动完成大部分的设计过程和仿真,直到把设计文件下载到FPGA 中。

DSP Builder提供了Quartus? II软件和MATLAB/Simulink工具之间的接口。其具有如下特性:

1.用于连接Mathwork的MATLAB(信号处理工具箱和滤波器设计工具箱),Simulink环境和Altera? 的Quartus II设计软件环境。

2.支持Altera 的DSP核,这些核均可以从Altera的网站上下载(例如:FIR Compiler、Reed-Solomon Compiler等等)。

3.可以利用Altera的DSP开发板来快速的实现设计的原型。

4.支持SignalTap? II逻辑分析仪(一种嵌入式的信号分析仪,它可以探测到DSP开发板上Altera器件内部的信号,并把数据引入到MATLAB的工作区以便于进行可视化的分析)。

5.包括了用户可以创建的定制的逻辑,用于配合SOPC Builder和Nios? II嵌入式处理器设计。

6.包括了PLL块,用于多时钟设计。

7.包括了状态机块。

8.针对DSP系统的算法和实现,支持统一的表示方法。

9.根据MATLAB和Simulink的测试矢量,可以自动生成VHDL测试激励或Quartus II 矢量文件(.vec)。

10.自动调用VHDL综合器和Quartus II编译器。

11.仿真可以设定为比特或周期精度。

12.提供多种的定点运算和逻辑操作,用于配合使用Simulink 软件。

13.支持多种Altera 的器件: Stratix、Stratix II 和 Stratix GX 器件; Cyclone 和 Cyclone II 器件; APEXII、APEX 20KC 和 APEX 20KE 器件; Mercury器件; ACEX? 1K 器件; FLEX? 10K 和 FLEX 6000 器件。

利用Matlab和DSP Builder进行模块设计也是SOPC技术的一个组成部分。这是由于利用Matlab/DSP Builder/QuartrsⅡ可完成纯硬件的DSP算法模型及实现,从而构成嵌入式系统外围接口的协处理模块,再进一步构成软件程序中的精简指令,DSP模块或其他功能模块可以成为单片FPGA电路系统中的一个组成部分,而且通过Matlab/DSP Builder,可以直接为Nios嵌入式处理器设计各类加速器,并以指令的形式加入到Nios的指令系统,从而成为

Nios系统的一个接口设备,与整个片内嵌入式系统融为一体。即利用DSP Builder和基本的Nios CPU,用户可以根据项目的要求,自己构建自己需要的DSP处理系统。本章主要介绍利用Matlab/ DSP Builder/QuartrsⅡ三个工具软件联合开发的设计流程。图6—1为Matlab/DSP Builder/QuartrsⅡ联合应用框图。

由图6—1可见,设计流程从利用建立DSP电路模型开始,电路模型的建立可以是图形化的,利用Simulink和DSP Builder中提供的丰富的功能模块和IP核进行设计。DSP Builder 中包含了算术和存储功能等设计模块以及IP库中的许多复杂功能模块。电路中的功能模块和IP的技术参数、数据格式、数据类型和总线宽度等都可以直接设置。电路模型设计完成后,可以进行系统级的模型仿真,这与目标器件和硬件系统没有关系,是基于算法的仿真。

下个步骤是利用置于Simulink电路模型界面的DSP Builder的SignalCompiler,将电路模型文件,即Simulink电路模块文件(.mdl)转换成RTL级的VHDL代码表述和工具命令语言(Tcl)脚本。一旦获得转换好的VHDL描述,在Simulink中即可调用VHDL综合器了,目前可选用的综合器有QuartrsⅡ、LeonardoSpectru、和Synplify。由它们生成底层网表文件。在QuartrsⅡ进行编译优化的过程中,会产生两种详细记录电路硬件特点和优化方式的底层电路描述的中间网表文件,即ATOM Netlist。然后调用QuartrsⅡ中的编译器,根据网表文件及设置的优化约束条件进行布线布局和优化设计的适配操作,最后生成编程文件和仿真文件(.pdf和.sof),它们可用于对目标器件的编程配置和硬件实现;与此同时可生成分别用于QuartrsⅡ的门级仿真文件和ModelSim的VHDL时序仿真文件,以及相应的VHDL仿真激励文件,以用于实时测试DSP系统的工作性能。

图6-1 基于Matlab/Dsp builder/QuartrsⅡ等工具

6.1 DSP Builder元件库简介

打开Matlab环境。可以看到Matlab的主窗口界面被分割成三个窗口:命令窗口(Command Window)、工作区(Workspace)、命令历史(Command History)。使Matlab的Current Directory指向所安装的DSPBuilder的Altlib文件夹,点击旁边的simulink图标打开simulink库,如下图6-2所示。

图6-2 Matlab的Current Directory

在Simulink Library Browser的左面展开Altera DSP Builder可以看见DSP Builder 的元件库如图6-3所示,元件库可以分为若干部分。其中有主控元件库(AltLab)、算术元件库(Arithmetic)、开发板库(Boards)、复元件库(Complex Type)、组合元件库(Gate &Control)、总线元件库(IO&Bus)、时钟元件库(Rate Change)、SOPC元件库(SOPC Builder Links)、状态机功能元件库(State Machine Functions)、时序元件和存储器元件库(Storage)、IP核元件库(MegaCore Function)、视频和图象处理元件库(Video and Image Processing)

图6-3 DSP Builder元件库

1、主控元件库(AltLab),包含一些用于控制的模块。主要有:数据观察窗(BP)、FPGA 编程器(Device programmer)、HDL引入模块(HDL Import)、HDL子系统元件模块(HDL SubSystem)、HIL硬件环境模块(HIL)、逻辑分析仪探头(Node)、硬件工程参数设置模块(QuartusⅡ Global Project Assignment)、FPGA引脚锁定模块(QuartusⅡ Poinout Assignment)、MatLab模型至VHDL转换器(SignalCompiler)、逻辑分析仪(SignalTapⅡAnalysis)。

2、算术元件库(Arithmetic),包含一些与运算相关联的器件。主要有比较器(Comparator)、计数器(Counter)、差分器(Differentiator)、除法器(Divider)、增益乘法器(Gain)、地址发生器(Incerement Decrement)、积分器(Integrator)、乘法器(Multiplier)、乘法累加器(Multiply Accumulate)。如图6-4所示。

图6-4 算术元件库

3、SOPC元件库(SOPC Builder Links),在左侧展开加号分别是SOPC AVALON总线模块、SOPC AVALON总线端口模块和SOPC用户自定制指令端口。如图6-5。

图6-5 SOPC元件库

4、IP核元件库(MegaCore Function),包含Altera公司设计好的IP核。可以使一般的设计者在不用全面了解所用IP核相关技术过多细节的情况下,在短期内设计符合要求的系统。

MegaCore是Altera的IP Core计划中的一个组成部分,IP核元件库所包含的IP核不附带在DSP Builder和QuartusⅡ中,需要单独购买。

如图6-6所示,IP核元件库主要有CIC IP核(cic)、FFT IP核(fft)、FIR IP核(fir)、NCO IP核(noc)、RS IP核、VITERBI IP核(viterbi)。

图6-6 MegaCore Function元件库

6.2 FSK调制器设计

二进制频率调制(2FSK),是利用二进制数字基带信号控制载波进行频谱变换的过程。在发送端产生不同频率的载波震荡来传输数字信号“0”、“1”,在接收端,把不同频率的载波振荡还原成相应的数字基带信号。

FSK调制的方法有两种:

1、直接调频法

用数字基带矩形脉冲控制一个振荡器的某些参数,直接改变振荡频率,输出不同的频率信号。

2、频率键控法

用数字矩形脉冲控制电子开关在两个振荡器之间进行转换,从而输出不同频率的信号。

6.2.1 建立设计模型

1、们需要建立一个工作库,所以先新建一个文件夹FSK。

2、使Matlab的Current Directory指向所安装的DSPBuilder的Altlib文件夹点击上方的simulink图标打开simulink库,如下图6-7所示。

图6-7 Matlab的Current Directory

3、在Simulink Library Browser 窗口中选择File菜单,在出现的菜单中选择New,在弹出的子菜单中选择新建模型model。如图6-8

图6-8 新建Model

4、放置SignalCompilder。点击simulink库管理器左侧的数形列表中的Altera DSP Builder条,使之展开DSPBuilder库,这时会出现一串树形列表,对DSPBuider的子模块(Block)进行分组,展开其中的Altlab,选择库管理器右侧的SignalCompilder,拖动到新的模型窗口。如图6-9

图6-9 Simulink库中的DspBuilder

5、图6-5,为所需最终连接的Modle图形。参照图6-10先放置Input2,Input2在DSPBuilder库中的IO&Bus模块中,选择Input拖动到新Model中,点击图形下面的文字Input可以更改名称。双击打开参数设置窗口,Bus type可设为Unsigned Integer(无符号整数),number of bits设为2。如图6-11

图6-10 FSK调制模型

图6-11 input2参数设置

Constant也同样在IO&Bus模块中,constant1设置为无符号整数,number of bits 设

为8,常数值(Constant Value)设置为9,抽样时间(Sample time)为1,如图6-12。 Constant2除了 Constant value设置为3外,其余设置同Constant1,这样可以使数字基带矩形脉冲的峰峰值在3到9之间。

图6-12 constant1参数设置

6 、n-to-1 Multiplexer和LUT同在Gate&Control模块下,将它们拖到新建Model中将LUT改名为ROM10X10S,如图6-13

图6-13 LUE和n-to-1Multiplexer模块

其中n-to-1Multiplexer的数据输入线(Number of input Data Line)设为2,pipeline设为1。ROM10X10S的bus Type设为signed Integer(有符号整数),输出位number of bits 为8位,LUT Address Width(查找表地址线位宽)设为8。在MATLAB Array编辑框中输入计算查找表内容的计算式。在此可以直接使用正弦(sin)函数,在这里sin函数的调用格式为sin([起始值:步进值:结束值])。ROM10X10S为一个输入地址为8位,输出地址为8位的正弦查找表模块,输入地址总线位有符号整数(Signed Interger)。可以设定起始值为0、结束值为2π,步进值为2π/2^8。计算式可以写成127*sin( [0:2*pi/(2^8):2*pi] ),其中pi即位常数π。在Use LPM处打勾,表示允许QuartusⅡ利用目标器件中的嵌入式RAM(在EAB、ESB或M4K模块中)来构成ROM10X10S,即将生成的正弦波数据放在嵌入式RAM 构成的ROM中,这样可以节省大量的逻辑资源。如图6-14。

相关主题