基于Altera FPGA的DSP技术._第1页
基于Altera FPGA的DSP技术._第2页
基于Altera FPGA的DSP技术._第3页
基于Altera FPGA的DSP技术._第4页
基于Altera FPGA的DSP技术._第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章基于Altera FPGA的DSP技术 第第5章章 基于基于Altera FPGA的的DSP技术技术 5.1 DSP Builder 5.2 用用DSP Builder实现实现FIR滤波器滤波器 5.3 在在DSP Builder中定制开发板库中定制开发板库 第5章基于Altera FPGA的DSP技术 5.1 DSP BuilderAltera为用户提供的完整设计平台包括DSP Builder、SOPC Builder和Quartus软件等开发工具套件,使用户无论在构建FPGA协处理器还是构建专用DSP硬件体系结构时,都能够将可编程逻辑的优势发挥得淋漓尽致。此外,Altera与其合作伙

2、伴提供的DSP知识产权(IP)解决方案组合,可以整合在多种视频、图像处理以及高速数字通信等应用中。第5章基于Altera FPGA的DSP技术 Altera DSP Builder是连接Simulink和Quartus开发软件的DSP开发工具。在DSP Builder的无缝设计流程中,设计人员首先在MATLAB软件中进行算法设计,然后在Simulink软件中进行系统集成,最后将设计输出为硬件描述语言(HDL)文件,以便在Quartus软件中使用。DSP Builder工具与SOPC Builder工具紧密结合,使用户能够构建整合了Simulink设计、Altera嵌入式处理器以及IP内核的系统

3、。对于在使用可编程逻辑设计软件方面缺乏经验的设计人员来说,该设计流程非常方便、直观。第5章基于Altera FPGA的DSP技术 DSP Builder的主要特性如下:(1) 实现MATLAB与Simulink软件和Quartus软件的连接。(2) 支持最新的Altera器件系列:Cyclone、Cyclone FPGA、StratixGX、Stratix、Stratix、Stratix GX FPGA和HardCopy结构化ASIC。(3) 采用Altera DSP开发板迅速实现原型设计。(4) Hardware In Loop(HIL)模块加速实现了Simulink系统级协同仿真,并提供了

4、高级调试功能。(5) 支持SignalTap逻辑分析仪,探测DSP板上的Altera器件信号,将数据导入MATLAB工作空间,便于进行直观分析。(6) 构建定制逻辑模块,配合Nios嵌入式处理器和其他SOPC Builder工作。第5章基于Altera FPGA的DSP技术 (7) 支持锁相环(PLL)模块。(8) 包含状态机模块。(9) 支持DSP系统算法和设计实现的统一表征。(10) 从MATLAB和Simulink测试向量中自动生成的VHDL测试台文件或者Quartus向量文件(.vec)。(11) 自动启动Quartus编译。(12) 支持比特和周期精度的设计仿真。(13) 支持Sim

5、ulink软件使用的各种定点算法和逻辑操作。第5章基于Altera FPGA的DSP技术 Altera可编程逻辑器件中的DSP系统设计需要高级算法设计工具与HDL开发工具的良好配合。Altera DSP Builder将MATLAB和Simulink系统级设计工具的算法开发、仿真和验证功能与Quartus的基于Verilog HDL及VHDL语言的设计流程整合在一起,实现了这些工具的集成。DSP Builder开发环境界面友好,可帮助设计人员生成DSP设计硬件表征,从而缩短DSP的设计周期。已有的MATLAB函数和Simulink模块可以和Altera DSP Builder模块以及Alter

6、a知识产权(IP)MegaCore功能相结合,将系统级设计实现和DSP算法开发相连接。DSP Builder支持系统、算法和硬件设计共享一个公共开发平台。第5章基于Altera FPGA的DSP技术 设计人员可以使用DSP Builder模块迅速生成Simulink系统建模硬件。DSP Builder包括比特和周期精度的Simulink模块,涵盖了算法和存储功能等基本操作。可以使用DSP Builder模型中的MegaCore集成复杂的功能。使用DSP Builder完成设计时,首先在MATLAB/Simulink软件中建立模型文件(.mdl),然后DSP Builder SignalComp

7、iler模块读取由DSP Builder和MegaCore模块构建的Simulink建模文件(.mdl),生成VHDL文件和工具命令语言(Tcl)脚本,并进行综合、硬件实施和仿真。图5.1所示为DSP Builder设计流程。第5章基于Altera FPGA的DSP技术 图5.1 DSP Builder设计流程 第5章基于Altera FPGA的DSP技术 DSP Builder设计从在Simulink中建立设计模型开始,设计模型建立之后,DSP Builder将设计转换为Quartus综合与编译或仿真所需要的Verilog HDL或VHDL硬件描述语言。从设计者的角度看,随后的分析与综合、布

8、局布线及编程等工作均可在DSP Builder中实现,还可以通过SignalTap在DSP Builder中在线调试,这些功能都是通过DSP Builder调用Quartus的相关功能来完成的。利用DSP Builder完成DSP应用设计的具体步骤如下:(1) 在MATLAB/Simulink中,用Simulink和DSP Builder模型库中的模型建立设计模型。第5章基于Altera FPGA的DSP技术 (2) 使用SignalCompiler模块分析设计。(3) 在Simulink中仿真设计,可以用Scope模块监视仿真结果。(4) 运行SignalCompiler并建立RTL仿真及综

9、合。(5) 用ModelSim软件仿真设计。(6) 用由DSP Builder SignalCompiler模块生成的输出文件实现RTL综合。(7) 在Quartus软件中编译设计。第5章基于Altera FPGA的DSP技术 5.2 用用DSP Builder实现实现FIR滤波器滤波器本例中用一个移位寄存器和一个乘加器组成一个FIR滤波器;用Simulink模块生成1MHz和16MHz的两个正弦波,它们经加法器合成为一个波形,这个波形经过由硬件电路组成的滤波器后将被滤除16MHz的成分。可以通过Simulink中的示波器模块查看各步骤的中间结果。5.2.1 建立建立FIR滤波器设计滤波器设计

10、使用Simulink库与Altera DSP Builder库,在Simulink中建立一个如图5.2所示的设计模型,具体步骤如下:第5章基于Altera FPGA的DSP技术 图5.2 FIR滤波器模型的顶层文件 第5章基于Altera FPGA的DSP技术 (1) 建立一个目录,用以保存设计文件,注意文件路径中不能出现空格。这里假设建立的目录为C:de2FIR_Filter。(2) 打开MATLAB,如果已经打开,则将MATLAB的当前目录设置为C:de2FIR_Filter。(3) 单击Simulink库浏览器工具按钮,打开Simulink库浏览器(Simulink Library Br

11、owser)。(4) 单击按钮或用FileNewModel菜单打开一个空白的工作空间,即可建立一个新的Simulink模型文件,并将模型文件保存为filter_ex1.mdl。(5) 从Simulink的Source库中找到Sine Wave(正弦波)块,用鼠标拖到工作空间中。在工作空间中双击Sine Wave,参照表5.1改变其参数。没有在表5.1中列出的参数则保持默认值不变。第5章基于Altera FPGA的DSP技术 表 5.1 Sine Wave 和 Sine Wave1 的参数 参 数 名 称 Sine Wave Sine Wave1 Sine Type(采样类型) Sample B

12、ased Sample Based Amplitude(幅值) 2048 2048 Samples Per Period(每周期采样点数) 80 5 Sample Time 1.2108 1.25108 第5章基于Altera FPGA的DSP技术 (6) 重复以上步骤,放置Sine Wave1,Sine Wave和Sine Wave 1的参数设置界面分别如图5.3(a)和图5.3(b)所示。两个正弦波的采样速率都是80MHz(1/(1.25108)s),Sine Wave的频率为1MHz(80MHz/80),Sine Wave1的频率为16MHz(80MHz/5)。第5章基于Altera F

13、PGA的DSP技术 (a) (b)图5.3 Sine Wave和Sine Wave1的参数设置界面(a) Sine Wave的参数设置界面;(b) Sine Wave1的参数设置界面第5章基于Altera FPGA的DSP技术 (7) 从Simulink中的Math Operations(数学运算)库中将一个Sum(求和)模块拖到filter_ex1.mdl中来。可以双击求和模块来改变其参数,这里不需要改变。(8) 从Simulink中的Sink库中将一个Scope(示波器)模块拖到filter_ex1.mdl中来。双击Scope模块,显示示波器界面。在示波器界面中单击工具按钮设置Scope的

14、参数,在General标签中将Number of Axes的值改为5,将Time Range参数改为4104,单击OK按钮。第5章基于Altera FPGA的DSP技术 (9) 所有Simulink模块集中的模块都已添加完成,接下来添加AltLab中的模块。选择Altera DSP Builder模块集中AltLab库的SignalCompiler模块并拖放到filter_ex1.mdl中。所有DSP Builder设计中都应该放置一个SignalCompiler模块,通过它可以将DSP Builder的设计模型转换为HDL代码。(10) 从Altera DSP Builder模块集中的IO

15、& Bus库中选择两个Altbus模块和一个BusConversion模块放置到filter_ex1.mdl中。两个Altbus模块的参数如表5.2所示,BusConversion模块的参数如表5.3所示。第5章基于Altera FPGA的DSP技术 表 5.2 Altbus 模块的参数 参 数 名 称 Altbus Block(input) Altbus Block(output) Bus Type(总线类型) Signed Integer Signed Integer Node Type(节点类型) Input Port Output Port Number of Bits. 16

16、 16 第5章基于Altera FPGA的DSP技术 表 5.3 BusConversion 模块的参数 参 数 名 称 BusConversion Bus Type(总线类型) Signed Integer Input Number of Bits(输入位数) 37 Output Number of Bits(输出位数) 16 Input Bit Connected To Output LSB(输入连接到输出的 LSB) 10 第5章基于Altera FPGA的DSP技术 (11) 从Altera DSP Builder的Storage库中添加Down Sampling及Shift Taps

17、模块。Down Sampling 的Down Sampling Rate参数设为2,Shift Taps的Number of Taps参数设为14,Distance Between Taps参数设为1,调整Shift Taps的尺寸以便能够看到所有的输出端口。这两个模块用来建立14抽头的滤波器。(12) 建立一个HDL子系统以实现14输入的乘加器。从AltLab库中向设计模型中添加一个HDL SubSystem,并将这个模块名改为multadd14,双击这个模块,打开子系统。(13) 先删除子系统中的所有内容,然后参照图5.4建立子系统的模型。从Simulink的Ports & Sub

18、systems库中拖放一个In1模块和一个Out1模块到HDL Subsystem中。第5章基于Altera FPGA的DSP技术 图5.4 HDL子系统的设计 第5章基于Altera FPGA的DSP技术 (14) 从Altera DSP Builder模块集中的IO & Bus库中选择Input和Output模块放置到HDL Subsystem中。(15) 将Input模块的Bit Width(位宽)改为16,单击OK按钮。将In1模块连接到Input模块上。(16) 从Altera DSP Builder模块集中的Arithmetic库中添加一个Multiply Add模块到HD

19、L Sybsystem中,选中One Input is Constant,单击Apply按钮。(17) 参照以上步骤放置In2In14、Input1Input15及Multiply Add1Multiply Add3。(18) 参照表5.4设置四个乘加器的参数。第5章基于Altera FPGA的DSP技术 (19) 从Arithmetic库中添加Parallel Adder Subtractor模块,将Number of Inputs设置成4。(20) 将Output模块设为37位宽,按图5.4连线,结束后保存MultAdd14。(21) 按图5.2完成filter_ex1.mdl的连线,保存

20、filter_ex1.mdl。第5章基于Altera FPGA的DSP技术 表 5.4 四个乘加器的参数 参 数 名 称 Multiply Add Multiply Add 1 Multiply Add 2 Multiply Add 3 Number of Multipliers 4 4 4 2 Bus Type Signed Integer Signed Integer Signed Integer Signed Integer Inputs 16 16 16 16 Adder Mode Add Add Add Add Add Add Add Add Pipeline Register No

21、 Register No Register No Register No Register One Input is Constant Constant Values 6 33 59 84 104 118 127 127 118 104 84 59 33 6 第5章基于Altera FPGA的DSP技术 5.2.2 在在Simulink中仿真并生成中仿真并生成VHDL代码代码完成模型设计之后,可以先在Simulink中对模型进行仿真,检验设计结果是否正确,仿真步骤如下:(1) 在filter_ex1.mdl中使用SimulationConfiguration Parameters菜单打开仿真参

22、数设置对话框,如图5.5所示。第5章基于Altera FPGA的DSP技术 图5.5 设置仿真参数 第5章基于Altera FPGA的DSP技术 (2) 将Start time设为0,将Stop time设为4104(4e4)。(3) 将Solver options中的Type设为Fixed-step,将Solver设为discrete(no continuous states),按OK按钮完成参数设置。(4) 单击工具按钮,启动仿真。(5) 仿真结束后,双击Scope模块打开示波器窗口,点击按钮自动调整示波器窗口的显示比例,显示如图5.6所示的波形。第5章基于Altera FPGA的DSP技

23、术 图5.6 仿真波形 第5章基于Altera FPGA的DSP技术 从仿真波形可以看出,经过FIR滤波器之后,16MHz的高频信号被很好地滤除了。为了更好地研究所设计的滤波器的特性,可以将仿真结果导入MATLAB的工作空间进行分析。先将Filter_ex1.mdl另存为Filter_ex1b.mdl,然后参照以下步骤将仿真结果导入MATLAB工作空间进行分析:(1) 从Simulink模块集中的Sinks库中选择To Workspace模块并添加到Filter_ex1b中,将To Workspace的Variable name修改为fir_in,将Save format设置为Array;另外

24、再添加一个To Workspace模块,将Variable name修改为fir_out,将Save format设置为Array。参照图5.7连线。第5章基于Altera FPGA的DSP技术 图5.7 将仿真结果输出到MATLAB的工作空间 第5章基于Altera FPGA的DSP技术 (2) 将Altbus模块和Altbus1模块的名称分别更改为fir_in和fir_out。(3) 在Simulink中重新对模型进行仿真,仿真结束后在MATLAB的工作空间中可以看到fir_in和fir_out两个数组。(4) 在MATLAB的命令行中,分别用plot(fir_in)、fftplot(fi

25、r_in)、plot(fir_out)和fftplot (fir_out)命令绘制fir_in、fir_in的频谱、fir_out及fir_out的频谱曲线,结果如图5.8所示。从图中可以看出,经过FIR滤波器之后,16MHz的信号被衰减了40dB以上。第5章基于Altera FPGA的DSP技术 第5章基于Altera FPGA的DSP技术 图5.8 输出到工作空间中的数据分析结果(a) fir_in;(b) fir_in的频谱;(c) fir_out;(d) fir_out的频谱第5章基于Altera FPGA的DSP技术 从仿真结果可以看到,设计达到了预定目标。用SignalCompil

26、er模块,可以将仿真模型转换为VHDL代码,然后可以在Quartus中使用生成的VHDL代码。双击模型中的SignalCompiler图标,弹出SignalCompiler分析窗口,单击Analyze按钮,Compiler对代码进行分析之后,打开如图5.9所示的对话框。在这个对话框中,可以选定目标器件系列、综合工具、优化规则等各种编译过程所需要的主要参数。在对话框的右侧列出了硬件编译的步骤,可以通过点击这些命令按钮分别执行Simulink模型至VHDL代码的转换、综合、布局布线及器件编程等工作。单击1-Convert MDL to VHDL左边的按钮,可将Simulink模型转换为VHDL文件

27、。转换完成后,在Messages框中可以看到生成了名为filter_ex1b.vhd的VHDL代码文件。第5章基于Altera FPGA的DSP技术 图5.9 SignalCompiler对话框 第5章基于Altera FPGA的DSP技术 5.3 在在DSP Builder中定制开发板库中定制开发板库5.3.1 硬件平台与硬件平台与DSP BuilderSimulink使用模块库技术来组织与管理具有某种属性的同一类模块,这给用户带来了很大的方便。所谓的模块库,一般是指具有某种属性的一类模块的集合。Simulink 的库浏览器中包含了大量的用于不同领域的模块库,用户可以使用其中的任何模块来建立

28、自己的动态系统模型并进行动态仿真与分析。Simulink允许用户建立自己的模块库,可将用户定义的一系列模块或其他库中的相关模块放置在其中,以对自定义模块进行有效的组织与管理。自定义模块库的使用方法与Simulink 本身提供的模块库的使用方法完全一致。在进一步介绍之前,首先说明以下几个常用的术语:(1) 模块库:具有某种属性的一类模块的集合。第5章基于Altera FPGA的DSP技术 (2) 库模块:模块库中的一个模块。 (3) 引用块:模块库中的一个模块的副本(从模块库中拖动或复制到系统模型中的模块)。 (4) 关联:引用块与对应模块库中的模块之间的联系。当模块库中的模块发生改变时,Sim

29、ulink会自动更新相应的引用块。第5章基于Altera FPGA的DSP技术 每个从模块库中复制或拖动的模块(引用块)都与模块库中的原始模块(库模块)存在着关联,一旦模块库中的模块被修改,其相应的引用块就会按照同样的方式被修改,并且在没有断开关联之前不能够对引用块进行任何修改。Simulink可以在模型中每个与模块库之间存在关联的引用块的左下角显示一个箭头。如果想要显示引用块与模块库之间的关联,则选择Format 菜单下的Library Link Display。第5章基于Altera FPGA的DSP技术 在DSP Builder 6.0的Boards库中,提供了五款开发平台的DSP Bu

30、ilder支持库。这些库中包含相关平台特定的信息,如输入/输出引脚定义等。建立模型文件时,通过这些库中的模块将设计与特定的硬件平台关联起来。SignalCompiler的主要工作有两个,一个是将设计模型转换成VHDL代码,另一个就是生成在Quartus中编译设计时所需要的输入/输出引脚定义的脚本文件。第5章基于Altera FPGA的DSP技术 自定义开发板库中包括两种类型的模块,即开发板配置模块(Board Configuration Block)及开发板接口模块(Board Connector Block)。开发板配置模块中包含开发板上的FPGA器件型号、时钟信号、复位信号等控制信号。如果

31、要在Simulink模型中使用开发板,则必须在顶层模型中加入开发板配置模块。开发板接口模块中包含开发板与外界连接的元件,如ADC、DAC、RS232、LED、按键等,每一个模块中应该包含这些接口的方向、位宽、引脚位置等信息。开发板库中必须包含一个开发板配置模块和至少一个开发板接口模块。图5.10是开发板库的一个例子。第5章基于Altera FPGA的DSP技术 图5.10 开发板库的例子 第5章基于Altera FPGA的DSP技术 在Simulink的模块库中,每一个模块都有自己的封装(Mask)。用户使用该模块时,用Simulink的封装编辑器(Mask Editor)可以对模块进行封装,

32、如可以编辑模块的图标(Icon)、参数初始化设置对话框(Initialization)以及帮助文档(Documentation)。通过封装,可为用户提供友好的模块使用界面。在封装编辑器的Parameters页面中可设置模块的参数,在Initialization页面中可设置MATLAB中的初始化脚本文件。封装编辑器的使用方法请参考Simulink相关书籍。开发板配置模块的参数见表5.5。开发板接口模块的参数见表5.6。第5章基于Altera FPGA的DSP技术 表 5.5 开发板配置模块的参数 Prompt (在对话框中的提示) Variable (变量名称) 说 明 取 值 DSP Boar

33、d Library DspBoard 开发板库的名称 字符串 Device Family Family 选择的器件系列 Stratix、Cyclone、 APEX、Mercury、ACEX 或 FLEX Clock Pin In ClockPinIn FPGA 器件的时钟输入引脚 Pin_ Clock Pin Out (D2A_2_CLK) Clock2PinOut 驱动D/A 2的时钟输出信号引脚 (D2A_2) Pin_ Clock Pin Out (D2A_1_CLK) Clock1PinOut 驱动D/A 1的时钟输出信号引脚(D2A_1) Pin_ Clock Pin Out Clo

34、ckPinOut 输出到 FPGA 外部的时钟输出引脚 Pin_ Global Reset Pin GlobalResetPin FPGA 的复位信号引脚 Pin_ Device Device FPGA 的器件编号 可以从 Altera 公司的网站上获得器件编号 JTAGDevice JTAGDevice FPGA 目标器件的 JTAG IDCODE 从目标器件的数据手册中查找 第5章基于Altera FPGA的DSP技术 表 5.6 开发板接口模块的参数 Prompt (在对话框中的提示) Variable (变量名称) 说 明 取 值 Bus Type sgn 总线数据格式 Signed

35、Integer、Unsigned Integer、Single Bit、Signed Binary Fractional Node Type nodetype 节点类型 Input Port, OutputPort number of bits. bwl 二进制小数在小数点左侧的位数 151 .number of bits bwr 二进制小数在小数点右侧的位数 051 Saturate sat 当输出大于最大值或小于最小值时的处理方式选项 On 或 Off Round rnd 输出取整选项 On 或 Off Constant Value cst 将常数调整成总线指定的格式 Double DSP

36、 Board Library DspBoard 开发板库名称 String Pin Location LocPin 接口引脚分配(MSB - LSB) Pin_ componentid Componentid 模块在开发板库中的唯一 ID 字符串 第5章基于Altera FPGA的DSP技术 5.3.2 定制开发板库定制开发板库DSP Builder安装完成后,在 DesignExamplesTutorialsBoard modular_board中有一个Walkthrough目录,该目录中包含了建立用户自定义开发板库的模板文件,在这些模板文件的基础上,可以很方便地建立用户自己的开发板库。将W

37、alkthrough目录中的内容拷贝到指定位置,就可以开始建立自己的开发板库了。假设我们将这些文件放在C:de2modular_boardwalkthrough目录中,建立开发板库需要以下四个步骤:(1) 建立一个新模块库。(2) 建立开发板配置模块。(3) 建立开发板接口模块。(4) 将模型添加到Simulink模型库浏览器中。第5章基于Altera FPGA的DSP技术 1建立新模块库建立新模块库建立自定义模块库的第一步是建立一个用于容纳开发板配置模块及开发板接口模块的Simulink模型库。参照以下步骤可以建立新模型库文件:(1) 运行MATLAB软件。(2) 单击MATLAB图形界面中

38、Current Directory下拉菜单右侧的浏览工具按钮,将MATLAB的当前工作目录转到C:de2 modular_boardwalkthrough。(3) 用图像编辑软件建立模块库中需要用到的图标文件,包括开发板图标文件DE2.bmp、发光二极管图标文件LED.bmp、按钮图标文件Key.bmp、波段开关图标文件Switch.bmp及数码管图标文件HEX.bmp等,这些图标可以从DE2用户手册上截取。第5章基于Altera FPGA的DSP技术 (4) 单击按钮打开Simulink库浏览器。(5) 用FileNewLibrary菜单建立一个新的模型库。(6) 将新模型库以DE2Boar

39、d.mdl的名字保存在C:de2modular_ boardwalkthrough目录中。第5章基于Altera FPGA的DSP技术 2建立开发板配置模块建立开发板配置模块以DSP Builder中的Stratix DSP Board EP1S25F780C5库作为模板建立新的开发板配置模块。参照以下步骤可以建立开发板配置模块:(1) 从Stratix DSP Board EP1S25F780C5库中选择Stratix DSP Board 1S25 Configuration block并拖放到DE2Board.mdl中,选中这个模块,按鼠标右键,从弹出的菜单中选择Link OptionsD

40、isable Link,然后再按鼠标右键,从弹出的菜单中选择Link Options Break Link,断开这个模块与模块库之间的连接。(2) 双击Stratix DSP Board 1S25 Configuration block的文本标签,将文本修改为DE2 Configuration Block。第5章基于Altera FPGA的DSP技术 (3) 选中DE2模块,按右键,从弹出的菜单中选择Edit Mask打开封装编辑器,然后进入Icon页面,如图5.11所示,Drawing commands中的内容用以显示开发板配置模块的图标,将其修改为image(imread(DE2.bmp)

41、,注意区分大小写。第5章基于Altera FPGA的DSP技术 图5.11 设置开发板配置模块图标 第5章基于Altera FPGA的DSP技术 (4) 单击Parameters标签,打开参数设置页面,按照表5.7设置参数,设置之后的界面如图5.12所示。表 5.7 开发板配置模块的参数设置 Prompt (在对话框中的提示) Variable(变量名称) 类型 取值(Popups 中的内容) DSP Board Library DspBoard popup DE2Board Device Family family popup Cyclone Clock Pin In ClockPinIn

42、popup PIN_N2 Any Device Device popup EP2C35F672C6 JTAGDevice JTAGDevice popup 1: EP2C35F672C6 (0 x020B40DD) 第5章基于Altera FPGA的DSP技术 图5.12 设置开发板配置模块的Parameters标签内容 第5章基于Altera FPGA的DSP技术 (5) 单击Initialization标签,进入Initialization页面。该页面可完成两个任务,一个是在使用开发板时,设置窗口中显示的参数;另一个是指定开发板的初始化脚本文件。可在初始化命令框(Initializatio

43、n commands)中输入以下脚本(见图5.13):set_param(gcb, MaskSelfModifiable,on);set_param(gcb, MaskVisibilities,off,off,on,on,off,off);DE2Prog;其中:脚本的第一行表明可以自行更改该模块的封装;脚本的第二行设定在使用该模块时显示的参数,MaskVisibilities的第三个和第四个参数取值为“on”,其余为“off”,表明应该显示ClockPinIn(第三个参数)和GlobalResetIn(第四个参数)这两个参数;脚本的第三行指定开发板的初始化脚本命令,这里指定了DE2Prog.m

44、文件中的DE2Prog()函数作为开发板的初始化脚本。第5章基于Altera FPGA的DSP技术 图5.13 设置开发板配置模块的初始化命令 第5章基于Altera FPGA的DSP技术 (6) 指定开发板初始化的脚本文件之后,需要建立一个对应的脚本文件,我们在MyBoardProg.m的基础上建立这个脚本文件。打开C:de2modular_board walkthrough中的MyBoardProg.m,按照注释行中的提示,进行如下修改: 将第27行的函数名称改为DE2Prog。 将第32行的库模型名称改为DE2Board。 将第41行及第59行的器件名称改为EP2C35F672C6。(7

45、) 将修改后的MyBoardProg.m另存为DE2Prog.m。(8) 返回封装编辑器,单击Documentation标签,在Mask type框中输入DspBoard AlteraBlockSet,在Mask Desicription框中输入关于开发板配置模块的说明,之后单击Apply按钮,然后单击OK按钮退出封装编辑器。至此已完成开发板配置模块的封装。第5章基于Altera FPGA的DSP技术 3建立开发板接口模块建立开发板接口模块同样以DSP Builder中的Stratix DSP Board EP1S25F780C5库为模板,建立新的开发板接口模块。先建立LEDG0模块,然后参照

46、LEDG0模块的步骤可以建立其他模块。建立LEDG0模块的步骤如下:(1) 从Stratix DSP Board EP1S25F780C5库中将LED0拖到DE2Board.mdl中。(2) 选中这个模块,按鼠标右键,从弹出的菜单中选择Link OptionsDisable Link,然后再按鼠标右键,从弹出的菜单中选择Link OptionsBreak Link,断开这个模块与模块库之间的连接。(3) 双击LED0的文本标签,将其内容修改为LEDG0。第5章基于Altera FPGA的DSP技术 (4) 选中模块LEDG0,按鼠标右键,从弹出的菜单中选择Edit Mask来打开封装编辑器。打

47、开后先进入Icon页面, 将Drawing commands中的内容修改为image(imread(LED.bmp),注意区分大小写。(5) 单击Parameters标签,打开参数设置页面,按照表5.8设置参数。第5章基于Altera FPGA的DSP技术 表 5.8 开发板接口模块的参数设置 Prompt (在对话框中的提示) Variable (变量名称) 类型 取值(Popups 中的内容, “/”表示换行) Bus Type sgn popup Signed Integer/Signed Fractional/ Unsigned Integer/Single Bit Node Type

48、 nodetype popup Input Port/Output Port/Constant/ Black Box Input Output/Internal Node number of bits. bwl popup 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/ 17/18/19/20/21/22/23/24/25/26/27/28/29/ 30/31/32/33/34/35/36/37/38/39/40/41/42/ 43/44/45/46/47/48/49/50/51 第5章基于Altera FPGA的DSP技术 .number of bits bw

49、r popup 1/2/3/4/5/6/7/8/9/10/11/12/13/14/15/16/ 17/18/19/20/21/22/23/24/25/26/27/28/29/ 30/31/32/33/34/35/36/37/38/39/40/41/42/ 43/44/45/46/47/48/49/50/51 Saturate sat checkbox Round rnd checkbox Constant Value cst edit DSP Board Library DspBoard popup DE2Board Pin Location LocPin edit componentid c

50、omponentid edit 第5章基于Altera FPGA的DSP技术 (6) 单击Initialization标签,在初始化命令框(Initialization commands)中输入以下脚本:set_param(gcb,MaskSelfModifiable,on);boardimage = DE2Board_init(1);其中:脚本的第一行表明可以自行更改该模块的封装;脚本的第二行指定开发板初始化的脚本命令。这里指定以DE2Board_init.m作为LEDG0的初始化脚本文件,该文件包含一个DE2Board_ init(IoComponent)的函数,所有开发板接口模块都在这个

51、函数中初始化。不同模块通过IoComponent进行区分,LEDG0是第一个,因此初始化函数为DE2Board_init(1)。第5章基于Altera FPGA的DSP技术 (7) 指定开发板接口模块初始化的脚本文件之后,需要建立一个对应的脚本文件。我们在myboard_init.m的基础上建立这个脚本文件。打开C:de2modular_board walkthrough中的myboard_ init.m,将函数名所在行的代码修改为function boardim = DE2Board_init(IoComponent)从这一行开始一直到“if (IoComponent100)”之前的代码,是

52、不同类型开发板接口模块初始化的示例代码,参照这些代码编写LEDG0的初始化代码如代码5.1所示。 第5章基于Altera FPGA的DSP技术 代码5.1 LEDG0初始化代码。% Component (1) : LEDG0param1.sgn = Single Bit;param1.nodetype = Output Port;param1.bwl = 1;param1.bwr = 0;param1.sat = off;param1.rnd = off;param1.cst = 0;param1.LocPin = PIN_AE22;param1.image = led.bmp;ponenti

53、d = LEDG0;param1.vis=off,off,off,off,off,off,off,on,off,off;第5章基于Altera FPGA的DSP技术 (8) 将修改后的myboard_init.m另存为DE2Board_init.m。(9) 返回封装编辑器,单击Documentation标签,在Mask type框中输入AltBus AlteraBlockSet,在Mask Desicription框中输入关于LEDG0模块的说明,之后单击Apply按钮,然后单击OK按钮退出封装编辑器。至此已完成LEDG0模块的封装。参照以上过程建立其他开发板接口模块。这种方法将每一个输入/输

54、出模块单独处理,工作量较大。还有另一种更方便的方法,即在开发板模型库中将同类接口模块当作一个模块对待,在使用该模块时通过改变参数来实现对不同物理接口的使用。第5章基于Altera FPGA的DSP技术 这里以HEX0HEX7为例来说明这个过程:(1) 在前面做好的模型库中复制并粘贴模型LEDG0,DSP Builder会提示错误,忽略该错误,并将该模型的名字修改为HEX。(2) 编辑模块HEX的封装,将Icon的Drawing commands的内容改为image(imread (HEX.bmp)。(3) 切换到Parameters页,选中参数nSgCpl,按对话框左侧的按钮,在参数列表的最后

55、插入一个新的参数,将新参数的Prompt和Variable改为HEX_Index,Type改为popup,在popups中输入0/1/2/3/4/5/6/7(这里“/”表示换行)。第5章基于Altera FPGA的DSP技术 (4) 切换到Initialization页,在Initialization commands框中输入以下代码:index_ta=40+str2num(get_param(gcb,HEX_Index);set_param(gcb,MaskSelfModifiable,on);boardimage = DE2Board_init(index_ta);使用HEX时,首先选择参

56、数HEX_Index,然后计算出index_ta作为IoComponent的值。封装中的其他内容可参照LEDG0的封装步骤进行修改。(5) 在DE2Board_init.m中加入代码5.2所示的初始化代码。第5章基于Altera FPGA的DSP技术 代码5.2 模型HEX的初始化代码。 PinOfHEX= PIN_V13 ,PIN_V14 , PIN_AE11, PIN_AD11,PIN_AC12, PIN_AB12, PIN_AF10,; PIN_AB24,PIN_AA23, PIN_AA24, PIN_Y22 ,PIN_W21 , PIN_V21 , PIN_V20 ,; PIN_Y24

57、 ,PIN_AB25, PIN_AB26, PIN_AC26,PIN_AC25, PIN_V22 , PIN_AB23,; PIN_W24 ,PIN_U22 , PIN_Y25 , PIN_Y26 , PIN_AA26, PIN_AA25, PIN_Y23 ,; PIN_T3 , PIN_R6 , PIN_R7 , PIN_T4 , PIN_U2 , PIN_U1 , PIN_U9 ,; PIN_R3 , PIN_R4 , PIN_R5 , PIN_T9 , PIN_P7 , PIN_P6 , PIN_T2 ,; PIN_M4 , PIN_M5 , PIN_M3 , PIN_M2 , PIN_

58、P3 , PIN_P4 , PIN_R2 ,; PIN_N9 , PIN_P9 , PIN_L7 , PIN_L6 , PIN_L9 , PIN_L2 , PIN_L3 ,;cellPinHEX=cellstr(PinOfHEX);第5章基于Altera FPGA的DSP技术 if(IoComponent=40) paramIoComponent.sgn = Unsigned Integer;paramIoComponent.nodetype = Output Port;paramIoComponent.bwl = 7;paramIoComponent.bwr = 0;paramIoCompo

59、nent.sat = off;paramIoComponent.rnd = off;paramIoComponent.cst = 0;paramIoComponent.LocPin = char(cellPinHEX(IoComponent-39)paramIoComponent.image = HEX.bmp;paramIoCponentid = strcat(HEX,num2str(IoComponent-39);paramIoComponent.vis = off,off,off,off,off,off,off,on,off,off,off,off,off,on;end第5章基于Alte

60、ra FPGA的DSP技术 完成封装后,HEX0HEX7的IoComponent值为4047。使用HEX模块时,双击HEX的图标,显示如图5.14所示的对话框,在HEX_Index下拉菜单中选择所要使用的具体数码管编号即可。参照HEX的封装过程完成KEY、LEDR、LEDG和SW的封装。DE2Board_init.m中除HEX之外其他部分的代码如代码5.3所示。第5章基于Altera FPGA的DSP技术 图5.14 使用HEX模块时的参数设置对话框 第5章基于Altera FPGA的DSP技术 代码5.3 DE2Board_init.m中除HEX之外其他部分的代码。% Component(19) LEDG(08)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论