《DSPBuilder系统设计工具实用教案》由会员分享,可在线阅读,更多相关《DSPBuilder系统设计工具实用教案(81页珍藏版)》请在金锄头文库上搜索。
1、7.1 DSP Builder安装(nzhung) 使用DSP Builder创建HDL设计需要有下面的软件支持: Matlab 6.1或6.5版本; Simulink 4.1或5.0版本; Quartus 2.0以上版本; Synplify 7.2以上版本或LeonardoSpectrum 2002c以上版本(综合工具(gngj); ModelSim5.5以上版本(仿真工具(gngj)。第1页/共80页第一页,共81页。软件(run jin)安装 1、找到安装软件所在目录,双击DSPBuilder-v2.1.3.exe文件。 2、在出现(chxin)的安装向导中,根据提示操作即可完成DSP
2、Builder的安装。 如果在安装DSP Builder之前还没有安装Matlab软件,则在DSP Builder安装向导的最后将弹出如图所示的对话框。第2页/共80页第二页,共81页。Matlab软件(run jin)中查看DSP Builder的库第3页/共80页第三页,共81页。DSP Builder安装在磁盘(c pn)上的目录结构第4页/共80页第四页,共81页。授权(shuqun)文件的安装 在使用DSP Builder之前,必须得到Altera的授权文件。如果没有安装DSP Builder的授权文件,用户只能用DSP Builder模块建立( jinl)Simulink模型,但不
3、能生成硬件描述语言(HDL)文件或Tcl脚本文件。 注意:在安装DSP Builder授权之前,必须已经安装了授权的Quartus软件。第5页/共80页第五页,共81页。授权文件(wnjin)的安装 得到DSP Builder授权文件后,可以直接将授权文件的内容粘贴到Quartus授权文件(license.dat)中,或在Quartus软件(run jin)中单独指定DSP Builder授权文件。 第6页/共80页第六页,共81页。授权文件(wnjin)的安装 在Quartus软件中指定DSP Builder授权文件(wnjin),其操作步骤如下: (1) 将DSP Builder的授权文件
4、(wnjin)以一个 不 同 的 文 件 (wnjin)名 单 独 保 存 , 如dsp_builder_license.dat。 (2) 启动Quartus软件。 (3) 选择ToolsLicense Setup命令,弹出Options对话框的License Setup页面。 (4) 在 License File栏 中 , 在 已 经 存 在 的Quartus授权文件(wnjin)后面加一个分号“;”, 在 分 号 后 面 输 入 DSP Builder授 权 文 件(wnjin)所在的目录及文件(wnjin)名。 (5) 点击OK按钮保存设置。 第7页/共80页第七页,共81页。授权(sh
5、uqun)有效性检查 在Matlab命令窗口输入下面的命令: dos (lmutil lmdiag C4D5_512A) 如果授权(shuqun)文件安装正确,则该命令产生的DSP Builder授权(shuqun)状态输出如图所示。第8页/共80页第八页,共81页。7.2 嵌入式DSP设计(shj)流程 Altera DSP设 计 流 程 提 供 了 系 统 (xtng)级 综 合 , 并 且 为 DSP系 统(xtng)的软、硬件分离设计提供了灵活性。另外,Altera支持基于硬件描述语言(HDL)和基于C/C+的设计流程。Altera的整套开发工具提供了完整的设计平台,包括DSP Bui
6、lder、SOPC Builder和Quartus软件,允许用户在系统(xtng)设计中提高性能,并获得软、硬件综合设计的灵活性。第9页/共80页第九页,共81页。Altera DSP设计(shj)总体流程图第10页/共80页第十页,共81页。DSP Builder设计(shj)流程 DSP Builder提供了一个无缝链接的设计流程,允许设计者在Matlab软件中完成(wn chng)算法设计,在Simulink软件中完成(wn chng)系统集成,然后通过SignalCompiler模块生成在Quartus软件中可以使用的硬件描述语言文件。使用DSP Builder工具,设计者可以生成寄存
7、器传输级(RTL)设计,并且在Simulink中自动生成RTL测试文件。这些文件是已经被优化的预验证RTL输出文件,可以直接用于Altera Quartus软件中进行时序仿真比较。第11页/共80页第十一页,共81页。DSP Builder设计流程第12页/共80页第十二页,共81页。 对于DSP Builder设计,Altera提供自动(zdng)和手动两种综合、编译流程。如果DSP Builder模型是顶层设计,则两种综合与编译流程都可以使用;如果DSP Builder模型不是顶层设计,而是非DSP Builder硬件设计中的一个独立模块,则只能使用手动综合、编译流程,在DSP Build
8、er软件之外建立顶层编译设置,包括: 将DSP Builder模型生成的VHDL文件加入顶层综合工程。 将所有用到的IP库加入Quartus工程。第13页/共80页第十三页,共81页。7.3 DSP Builder设计(shj)过程 为了熟悉DSP Builder的基本开发流程,设计一个幅度调制单元,通过Matlab和Simulink仿真出波行,并在Quartus软件中完成(wn chng)编译。第14页/共80页第十四页,共81页。幅度(fd)调制原理 幅度调制是用调制信号去控制高频正弦载波的幅度,使其按调制信号的规律变化的过程。幅度调制器的一般(ybn)模型如图所示。 第15页/共80页第
9、十五页,共81页。实验(shyn)步骤 1创建新模型(mxng)创建新模型(mxng)的步骤如下:(1) 启动Matlab软件。(2) 点击Matlab工具条上的Simulink快捷按钮,或在Matlab命令窗口输入Simulink命令,打开Simulink Library Browser界面,如图所示。 (3) 选择FileNewModel命令,建立一个新的模型(mxng)文件。(4) 选择FileSave命令,保存文件到指定文件夹中,在文件名栏中输入Singen.mdl。第16页/共80页第十六页,共81页。第17页/共80页第十七页,共81页。2加入SignalCompiler模块 (1
10、) 在Simulink Library Browser界面中,打开Altera DSP Builder文件夹。 (2) 在Altera DSP Builder文件夹中选择AltLab库。 (3) 拖动SignalCompiler模块到新建的模型文件中。 (4) 用鼠标左键双击SignalCompiler模块,在弹出的对话框中点击Analyze按钮,弹出Signal Compiler Version 2.2对话框,如图所示。 (5) 在Signal Compiler Version 2.2对话框中选择目标器件(qjin)类型;指定综合工具,可选LeonardoSpectrum、Synplify或
11、Quartus;选择优化条件,可选Speed或Area。 (6) 点击OK按钮。 (7) 选择FileSave命令保存文件。 第18页/共80页第十八页,共81页。第19页/共80页第十九页,共81页。3为SignalCompiler指定综合软件路径信息 在设计模型文件中加入SignalCompiler模块以后,需要指定综合工具软件,如LeonardoSpectrum、Synplify或Quartus。默认情况下,SignalCompiler在执行综合过程中从PC机的注册表中查找指定综合软件所在的安装路径。如果综合过程中SignalCompiler找不到综合软件所在的路径,在Message栏中
12、将提示综合失败。 DSP Builder 2.0以上版本允许用户为SignalCompiler指定综合工具路径。在Altlib文件夹中包含一个XML配置文件edaconfig.xml,其中包含SignalCompiler综合工具的路径信息。通过文本编辑器或任何XML编辑器可以(ky)修改这个配置文件。第20页/共80页第二十页,共81页。XML配置文件中每个EDA工具有三种配置信息(xnx): 第21页/共80页第二十一页,共81页。4加入正弦波产生模块(1) 在Simulink Library Browser界面点击Simulink中的Sources库,从中找到Sine Wave模块。(2)
13、 将Sine Wave模块拖动到Singen.mdl文件中。(3) 在Sine Wave模块上双击鼠标左键,弹出模块属性对话框,如图所示。(4) 设置正弦波模块参数(幅度为16位,频率(pnl)为500 kHz) ,点击OK确定。 第22页/共80页第二十二页,共81页。第23页/共80页第二十三页,共81页。5加入总线端口模块AltBus(1) 在Altera DSP Builder文件夹中选择(xunz)Bus Manipulation库。(2) 从库中选择(xunz)AltBus模块,拖动到Singen.mdl文件中。(3) 点击AltBus模块下面的文本,将AltBus改为SinIn。
14、(4) 双击SinIn模块,弹出模块参数对话框,如图所示,在该对话框中可以设置16位整型输入总线。(5) 设置模块参数,点击OK按钮确定。 第24页/共80页第二十四页,共81页。第25页/共80页第二十五页,共81页。6加入延时模块(1) 在Altera DSP Builder文件夹中选择Storage库。(2) 选择Delay模块,拖动到Singen.mdl文件中。(3) 双击Delay模块,在弹出的模块参数(cnsh)对话框中指定延时深度,如图所示。(4) 点击OK按钮确认。 第26页/共80页第二十六页,共81页。第27页/共80页第二十七页,共81页。7加入正弦波延时输出总线模块(1
15、) 在Altera DSP Builder文件夹中选择Bus Manipulation库。(2) 选择AltBus模块,将其拖动到Singen.mdl文件中。(3) 修改AltBus模块的名称为SinDelay。(4) 双击SinDelay模块,在模块参数(cnsh)对话框中选择Node Type为Output Port。(5) 选择number of bits为16位,并点击OK按钮确定。 第28页/共80页第二十八页,共81页。第29页/共80页第二十九页,共81页。8加入多路复用MUX模块(1) 在Simulink Library Browser界面(jimin)中选择Simulink下
16、面的Signal Routing库。(2) 选择Mux模块,将其拖动到Singen.mdl文件中。(3) 双击Mux模块,设置模块参数,如图所示。(4) 点击OK按钮确定。 第30页/共80页第三十页,共81页。第31页/共80页第三十一页,共81页。9加入随机数模块(m kui)(1) 在Simulink Library Browser界面中选择Simulink下面的Sources库。(2) 选择Random Number模块(m kui),将其拖动到Singen.mdl文件中。(3) 双击Random Number模块(m kui),设置模块(m kui)参数,如图所示,点击OK确定。 第
17、32页/共80页第三十二页,共81页。第33页/共80页第三十三页,共81页。10加入(jir)噪声总线模块(1) 在Altera DSP Builder文件夹中选择Bus Manipulation库。(2) 选择AltBus模块,将其拖动到Singen.mdl文件中。(3) 修改AltBus模块的名称为Noise。(4) 双击Noise模块,在模块参数对话框中选择Bus Type为Single Bit。(5) 选择number of bits为1位,并点击OK按钮确定。 第34页/共80页第三十四页,共81页。11加入BusBuild总线模块(1) 在Altera DSP Builder文件
18、夹中选择(xunz)Bus Manipulation库。(2) 选择(xunz)BusBuild模块,将其拖动到Singen.mdl文件中。(3) 双击BusBuild模块,设置模块参数,如图所示,点击OK按钮确定。 第35页/共80页第三十五页,共81页。第36页/共80页第三十六页,共81页。 1111 0000 10.01 =-1.11 0.01 1001 =-111 0001 1001 0001 第37页/共80页第三十七页,共81页。12加入GND模块(1) 在Altera DSP Builder文件(wnjin)夹中选择Bus Manipulation库。(2) 选择GND模块,将
19、其拖动到Singen.mdl文件(wnjin)中。13加入乘法器(Product)模块(1) 在Altera DSP Builder文件(wnjin)夹中选择Arithmetic库。 (2) 选择Product模块,将其拖动到Singen.mdl文件(wnjin)中。(3) 双击Product模块,设置模块参数,如图所示,点击OK按钮确定。 第38页/共80页第三十八页,共81页。乘法器模块(m kui)(m kui)参数设置 第39页/共80页第三十九页,共81页。14加入乘法器输出总线模块(1) 在Altera DSP Builder文件夹中选择Bus Manipulation库。(2)
20、选择AltBus模块,将其拖动到Singen.mdl文件中。(3) 修改AltBus模块的名称为StreamMod。(4) 双击StreamMod模块,在模块参数对话框中选择Bus Type为Signed Integer,Node Type为Output Port,number of bits为19位,并点击(din j)OK按钮确定。 第40页/共80页第四十页,共81页。15加入示波器模块(1) 在Simulink Library Browser界面中选择Simulink下面(xi mian)的Sinks库。(2) 选择Scope模块,将其拖动到Singen.mdl文件中。(3) 双击Sc
21、ope模块,弹出Scope波形显示对话框。(4) 点击参数设置快捷按钮,Number of axes框中输入3,即以同一时间轴同时显示3个信号波形。 第41页/共80页第四十一页,共81页。第42页/共80页第四十二页,共81页。16连线 将所有模块全部插入Singen.mdl模型文件后,按照要求连接模块,完成模型文件的设计。 17Simulink设计模型仿真 连接好整个设计模型以后,可以在Simulink软件中仿真设计模型。 (1) 选择SimulationSimulation Parameters命令,弹出仿真参数设置对话框。 (2) 在Simulation time栏中的Stop tim
22、e框中输入(shr)0.000004(或4e-6),显示2个信号周期(160个采样点),其他参数采用默认设置。 (3) 点击OK按钮退出仿真参数设置对话框。 (4) 选择SimulationStart命令,或按下Ctrl+T键启动仿真。 (5) 双击模型文件中的Scope模块,打开示波器显示窗口。 (6) 点击示波器显示窗口工具条上的自动范围按钮,则波形显示如图所示。 第43页/共80页第四十三页,共81页。第44页/共80页第四十四页,共81页。 对于DSP Builder设计,Altera提供自动和手动两种综合、编译流程。如果DSP Builder模型是顶层设计,则两种综合与编译流程都可以
23、(ky)使用;如果DSP Builder模型不是顶层设计,而是非DSP Builder硬件设计中的一个独立模块,则只能使用手动综合、编译流程,在DSP Builder软件之外建立顶层编译设置,包括: 将DSP Builder模型生成的VHDL文件加入顶层综合工程。 将所有用到的IP库加入Quartus工程。第45页/共80页第四十五页,共81页。a. 自动综合、编译 Signal Compiler可以将设计模型文件中的每个DSP Builder模块映射(yngsh)为DSP Builder VHDL库。自动综合、编译流程可以直接在Simulink软件中,使用Signal Compiler 对话
24、框中Hardware Compilation框中的按钮操作,后台完成模型的综合、编译过程。 (1) 在Simulink的设计模型文件中(如SinGen.mdl)双击SignalCompiler模块。 (2) 点击Analyze按钮,弹出Signal Compiler Version 2.2对话框。第46页/共80页第四十六页,共81页。(3) 在Device列表中选择目标器件系列,如Stratix。 (4) 在Synthesis列表中选择综合工具,如LeonardoSpectrum,也可以选择Quartus软件综合工具。(5) 在Optimization列表中选择优化条件(tiojin),如S
25、peed。(6) 点击按钮1-Convert MDL to VHDL,由模型设计生成VHDL文件。(7) 点击按钮2-Synthesize,使用综合工具开始综合设计。(8) 点击按钮3-Quartus,使用Quartus软件编译设计。 第47页/共80页第四十七页,共81页。b. 手动综合、编译 在Quartus软件(run jin)中完成设计的编译步骤和普通的HDL程序设计一样,启动Quartus软件(run jin),先新建一个项目,将Signal Compiler生成的VHDL程序加入项目中,进行编译和填加管脚,即可下载到FPGA中了。第48页/共80页第四十八页,共81页。第49页/共
26、80页第四十九页,共81页。7.4 DSP Builder设计(shj)进阶 本节将以一个简单的可控正弦波发生模块的设计为例,在此基础上进一步介绍(jisho)层次化设计的方法。 第50页/共80页第五十页,共81页。 一个简单的正弦波发生器,主要由四个部分构成。InCount是阶梯信号发生模块,产生一个按时钟线性递增的地址(dzh)信号,送往SinLUT。SinLUT,顾名思义是一个sin(正弦函数)值的查找表(LUT:Look Up Table)模块,由递增的地址(dzh)获得正弦波的量化值输出。 SinLUT出来后送Product乘法模块,与SinCtrl相乘。由于SinCtrl是1 b
27、it输入,SinCtrl通过Product就完成了对有无正弦波输出的控制。SinOut是整个正弦波发生器模块的输出,送往D/A即可获得正弦波的输出(模拟信号)。第51页/共80页第五十一页,共81页。-步骤步骤(bzhu)1-第52页/共80页第五十二页,共81页。放置(fngzh)Increment Decrement选中Altera DSP BuilderArithmeticIncrement Decrement模块 总线类型(Bus Type) 输出(shch)位宽(number of bits) 增减方向(Direction) 开始值(Starting Value) 时钟相位选择(Cl
28、ock Phase Selection)对于总线类型(Bus Type),在其下拉列表框中共有三种选择: 有符号整数(Signed Integer) 有符号小数(Signed Fractional) 无符号整数(Unsigned Integer)-步骤步骤(bzhu)2-第53页/共80页第五十三页,共81页。放置正弦查找(ch zho)表选中Altera DSP BuilderGateLUT模块sin(起始值:步进值:结束值) SinLUT是一个输入地址为6位、输出值位宽为10的正弦(zhngxin)查找表模块,且输入地址总线为无符号数,可以设置起始值为0、结束值为2、步进值为2/26。-步
29、骤步骤(bzhu)3-第54页/共80页第五十四页,共81页。放置(fngzh)Delay模块选中Altera DSP Builder Storage Delay-步骤步骤(bzhu)4-参数Depth是描述信号延时深度的参数。当Depth为1时,信号传输函数为1/z,表现为通过Delay模块的信号延时1个时钟周期(Clock Phase Selection参数为1的情况下);当Depth为整数n时,其传输函数为1/zn,表现为通过Delay模块的信号将延时n个时钟周期。Delay模块在硬件上可以采用寄存器来实现(shxin),这也就是为什么把Delay模块放在Storage(存储单元)库中的
30、原因。第55页/共80页第五十五页,共81页。步骤(bzhu)第56页/共80页第五十六页,共81页。 加入一个Step模块,以模拟SinCtrl的按键使能操作。在Simulink库浏览器中,展开(zhn ki)Simulink库,选中Sources库,把Sources库中的Step模块拖放到sinout模型窗口中。 在Simulink的库浏览器中,展开(zhn ki)Simulink库,选中其中的Sinks库,把Scope(示波器)模块拖放到sinout模型窗口中。 第57页/共80页第五十七页,共81页。 Step time:步进间隔( jin g) Initial value:初始值 F
31、inal value:终值 Sample time:采样时间第58页/共80页第五十八页,共81页。 如果需要对某些信号进行对比观察,希望放置在同一个波形观察窗中,以便更好地观察信号之间的异同点,可以使用Mux模块来辅助完成。 在Simulink库浏览器中,选中Simulink库,找到Simulink的Signal Routing库下的Mux模块,拖放到sinout模 型 窗 口 , 设 置 (shzh)Mux模 块 , 把“Number of inputs”(输入数目)参数设定为2。第59页/共80页第五十九页,共81页。 点击“Simulation”菜单(ci dn),在下拉菜单(ci d
32、n)中选择“Simulation parameters”菜单(ci dn)项。第60页/共80页第六十页,共81页。仿真(fn zhn)结果OK第61页/共80页第六十一页,共81页。 双击sinout模型(mxng)中的SignalCompiler模块,出现对话框,点击“Analyze”(分析)按钮后,SignalCompiler就会对sinout模型(mxng)进行分析,检查模型(mxng)有无错误。第62页/共80页第六十二页,共81页。第63页/共80页第六十三页,共81页。第64页/共80页第六十四页,共81页。第65页/共80页第六十五页,共81页。DSP Builder层次化设计
33、(shj) 我们已在Matlab/Simulink中设计了一个简单的正弦波发生器。作为示例(shl),该模型是非常简单的,只需要数个DSP Builder模块就可以构成。但在其它许多实用领域,如通信领域中,实际需要实现的DSP模型往往要复杂得多,如果把所有模块放在同一个Simulink图中,设计图会显得非常复杂、庞大,不利于阅读和排错。这时,就必须采用层次化设计方法来设计模型了。 第66页/共80页第六十六页,共81页。 在subsint模型窗口中,按住鼠标左键,移动鼠标画一个框,选中图中除了SignalCompiler、Step模块(m kui)以外的所有模块(m kui)(可以通过按住键盘
34、上的Shift键,用鼠标左键点击来改变模块(m kui)的选择情况)。接着,在选中的模块(m kui)上点击鼠标右键,在弹出的右键菜单中选择“Create subsystem”,建立子系统。第67页/共80页第六十七页,共81页。用鼠标双击Subsystem子系统模块,就会弹出“subsint/Subsystem”窗口,显示Subsystem子系统模块封装的原理图。可以看出,封装后的图自动(zdng)增加了两个Simulink的端口,即:In1和Out1。第68页/共80页第六十八页,共81页。Offset模块(m kui):(Altbus) 库:Altera DSP Builder中Bus
35、Manipulation库 参数“Bus Type”设为“Unsigned Integer” 参数“Bus Type”设为“Input port” 参数“number of bits”设为“10” 第69页/共80页第六十九页,共81页。Parallel Adder Subtractor模块(m kui):(Parallel Adder Subtractor)库:Altera DSP Builder中Arithmetic库“Add(+)Sub()”设为“”第70页/共80页第七十页,共81页。xSin模块(m kui):(Altbus)库:Altera DSP Builder中Bus Mani
36、pulation库参数“Bus Type”设为“signed Integer”参数“Bus Type”设为“Output port”参数“number of bits”设为“10”第71页/共80页第七十一页,共81页。CtrlIn模块(m kui):(Altbus)库:Altera DSP Builder中Bus Manipulation库参数“Bus Type”设为“Single Bit”参数“Bus Type”设为“Input port”第72页/共80页第七十二页,共81页。Constant模块(m kui):(Constant)库:Simulink中Source库参数“Constan
37、t Value”设为“512”第73页/共80页第七十三页,共81页。subsint模型在sinout模型的基础上增加(zngji)了波形的电压偏移。第74页/共80页第七十四页,共81页。 虽然可以进行Simulink仿真,但是还不能进行SignalCompiler分析。按照前面(qin mian)步骤作的subsint模型中的singen子系统模块,必须进行设置才可以让SignalCompiler识别为DSP Builder的子系统。第75页/共80页第七十五页,共81页。 在打开的subsint模型窗口中,先选中子系统模型singen,然后(rnhu)选择菜单“Edit”“Edit ma
38、sk.”项,打开“Mask editor:singen”设置对话框。 第76页/共80页第七十六页,共81页。 在“Mask editor:singen”对话框中选择“Documentation”选项页,设置“Mask type”为“SubSystem AlteraBlockSet”(子系统 Altera模块(m kui)集)。注意输入时没有引号。第77页/共80页第七十七页,共81页。设置完“Mask type”后,SignalCompiler就可以正常地生成VHDL代码(di m)了。不过,与sinout模型生成的VHDL代码(di m)有所不同,sinout模型在转换时只生成一个VHDL
39、文件(TestBench文件除外),而subsint模型在转换后生成了两个VHDL文件:subsint.vhd和singen.vhd。其中,subsint.vhd是顶层的VHDL文件,singen.vhd是singen子系统的VHDL文件。第78页/共80页第七十八页,共81页。 为了便于设计者管理,Simulink提供(tgng)了“Model Browser”来显示模型的结构。在模型窗口选择“View”“Model Browser Options”“Model Browser”项,在“Model Browser”前打上“”。第79页/共80页第七十九页,共81页。感谢您的欣赏(xnshng)!第80页/共80页第八十页,共81页。内容(nirng)总结7.1 DSP Builder安装。(1) 在Simulink Library Browser界面(jimin)中,打开Altera DSP Builder文件夹。1111 0000。1001 =-111 0001。1001 0001。 Final value:终值第八十一页,共81页。