




已阅读5页,还剩88页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DSPBuilder工具及设计流程 DSPBuilder是Altera公司提供的一种DSP系统设计工具 是Matlab Simulink设计工具和QuartusII设计工具之间的一个桥梁 把Matlab Simulink中的 系统设计转化为 文件 在QuartusII工具中实现到具体的器件中 产生于Matlab DSPBuilder QuartusII流程的DSP模块或其他功能模块可以成为单片FPGA电路系统中的一个组成部分 担任某个局部电路的功能 通过Matlab DSPBuilder 可以直接为NiosII嵌入式处理器设计各类加速器 成为NiosII系统的一个接口设备 与整个片内嵌入式系统融为一体 DSPBuilder是一个系统级 或算法级 设计工具 它架构在多个软件工具之上 并把系统级和RTL级两个设计领域的设计工具连接起来 最大程度地发挥了两种工具的优势 DSPBuilder及其设计流程 DSPBuilder以Simulink的Blockset出现 可以在Simulink中进行图形化设计和仿真 通过SignalCompiler把Matlab Simulink的设计文件 mdl 转成相应的硬件描述语言VHDL设计文件 vhd 以及用于控制综合与编译的TCL脚本 而对后者的处理可以由FPGA CPLD开发工具QuartusII来完成 在Simulink中搭建系统的模型进行仿真 并可从该模型自动生成可综合的VHDL代码 两者的逻辑功能一一对应 得到可综合的VHDL代码之后 可以按传统的FPGA开发流程那样手工对代码进行综合和适配 在不需要对代码进行修改时 可以使用DSPBuilder提供的自动流程 在Simulink集成环境中直接调用特定的综合器和适配器执行生成的相应脚本在后台进行综合和适配 DSPBuilder还可以输出Simulink中使用的仿真激励 并生成测试平台和在ModelSim中使用的脚本 只需要在ModelSim中执行此脚本就可以使用所输出的Simulink中使用的仿真激励对实现代码的逻辑功能进行测试 利用DSPBuilder进行DSP设计的流程框图 DSPBuilder设计流程 第一步是在Matlab的Simulink环境中建立一个mdl模型文件 调用AlteraDSPBuilder和其它Simulink库中的图形模块 Block 构成设计框图 或称Simulink设计模型 第二步是利用Simulink强大的图形化仿真 分析功能 分析此设计模型的正确性 完成模型仿真 在这两步中 与一般的MatlabSimulink建模过程几乎没有什么区别 所不同的是设计模型库采用AlteraDSPBuilder的Simulink库 DSPBuilder设计流程 第三步是DSPBuilder设计实现的关键一步 通过SignalCompiler把Simulink的模型文件 后缀为 mdl 转化成通用的硬件描述语言VHDL文件 后缀为 vhd 由于EDA工具软件 诸如QuartusII ModelSim 不能直接处理Matlab的 mdl文件 这就需要一个转换过程 转换获得的HDL文件是基于RTL级 寄存器传输级 的VHDL描述 再接下来的几个步骤是对以上设计产生的VHDL的RTL代码和仿真文件进行综合 编译适配以及仿真 为了针对不同用户的设计目的和设计要求 DSPBuilder提供了两种不同的设计流程 主要可以分为自动流程和手动流程 如果采用DSPBuilder的自动流程 几乎可以忽略硬件的具体实现过程 DSPBuilder自动调用QuartusII等EDA设计软件 完成综合 Synthesis 网表 ATOMNetlist 生成和QuartusII适配 甚至在Matlab中完成FPGA的配置下载过程 如果希望使用其它第三方的VHDL综合器和仿真器 除Synplify LeonardoSpectrum和QuartusII综合器及ModelSim外 或是希望完成特定的适配设置 如逻辑锁定 时序驱动编译 ESB特定功能应用等 可以选用手动流程设计 在手动流程中 可以灵活地指定综合 适配条件 不过 需要手动地调用VHDL综合器进行综合 调用QuartusII进行适配 调用ModelSim或者QuartusII进行仿真 最后用QuartusII产生相应的编程文件用于FPGA的配置 采用手动流程时 除了行为级仿真验证和设计输入外 其它过程与标准的基于VHDL的EDA设计流程是完全一致的 由上一步DSPBuilder设计流程得到VHDL文件 由Simulink模型文件 mdl通过SignalCompilder转换而成 送入综合器进行综合 综合器可以是SynplifyPro 也可以是LeonardoSpectrum 或者采用Altera自己的QuartusII 在综合时 可能需要对综合器进行配置或者提供综合的约束条件 由于这个过程操作可能比较繁琐 所以DSPBuilder的SignalCompiler相应提供了一个接口 针对设计 自动产生一个TCL脚本与综合器Synplify或者LeonardoSpectrum相接 综合器在综合操作后会产生一个网表文件 以供下一个流程使用 这里产生的网表文件称为ATOM网表文件 主要是EDIF网表文件 edf电子设计交换格式文件 或VQM vqmVerilogQuartusMappingFile 它们是一种参数可设置的 并含有具体器件系列硬件特征 如逻辑宏单元LCs I O单元 乘积项 嵌入式系统块ESB等 的网表文件 QuartusII可以利用这些ATOM网表文件针对选定的具体器件进行适配 包括布线 布局 结构优化等操作 最后产生时序仿真文件和FPGA目标器件的编程与配置文件 在这一步 设计者可以在QuartusII中完成对Pin 引脚 的锁定 更改一些约束条件 如果用DSPBuilder产生的DSP模型只是庞大设计中的一个子模块 则可以在设计中调用DSPBuilder产生的VHDL文件 以构成完整的设计 在DSPBuilder设计流程的最后一步 可以在DSPBuilder中直接下载到FPGA用户开发板上 或者通过QuartusII完成硬件的下载 测试 DSPBuilder在生成VHDL代码时 可以同时生成用于测试DSP模块的TestBench 测试平台 文件 DSPBuilder生成的TestBench文件采用VHDL语言 测试向量与该DSP模块在Simulink中的仿真激励相一致 通过ModelSim仿真生成的TestBench可以验证生成的VHDL代码与Simulink中DSP模型的一致性 另外 DSPBuilder在产生TestBench的同时 还产生了针对ModelSim仿真的Tcl脚本来简化用户的操作 掩盖ModelSim仿真时的复杂性 在大部分情况下 QuartusII对DSP模块适配后 需要再次验证适配后网表与Simulink中建立的DSP模型的一致性 这就需要再次使用ModelSim进行仿真 这时仿真采用QuartusII适配后带延时信息的网表文件 EDIF格式或者VHDL Verilog格式 DSPBuilder设计向导 以一个简单的可控正弦波发生模块的设计为例 详细介绍DSPBuilder的使用方法 在利用DSPBuilder进行DSP系统相关设计时 关键的设计过程大都在Matlab的图形仿真环境Simulink中进行 一个简单的正弦波发生器 主要由四个部分构成 InCount是阶梯信号发生模块 产生一个按时钟线性递增的地址信号 送往SinLUT SinLUT是一个sin 正弦函数 值的查找表 LUT LookUpTable 模块 由递增的地址获得正弦波的量化值输出 输出的8位正弦波数据经延时模块Delay后送往Product乘法模块 与SinCtrl相乘 SinCtrl是1bit输入 SinCtrl通过Product就完成了对有无正弦波输出的控制 SinOut是整个正弦波发生器模块的输出 送往D A即可获得正弦波的输出 模拟信号 正弦波发生模块原理图 建立一个新的模型 Model 设计时首先需要建立一个新的设计模型 步骤如下 建立工作库 在建立一个新的设计模型前 最好先建立一个新的文件夹 作为work 工作 目录 并把Matlab当前的work目录切换到新建的文件夹下 在Matlab主窗口中的命令窗口中键入 cde mkdir myprj sinwavecd myprj sinwave 其中e myprj sinwave是新建的文件夹 是用来为Matlab建立工作目录的 kdir是一个建立新目录的Matlab命令 cd是切换工作目录的Matlab命令 通过改变Matlab主界面中的 CurrentDirectory 的制定 同样可以改变Matlab的当前工作目录 当成功地把Matlab当前目录切换到新建的设计目录后 可以在Matlab命令窗口键入 Simulink 命令 以开启Matlab的图形化建模仿真环境Simulink 当安装完DSPBuilder后 在Simulink的库浏览器中可以看到 AlteraDSPBuilderBlockset 字样出现在Libraries列表中 其中包括一些基本的算术单元和一些Altera的DSP类的IP核 在DSPBuilder应用中 主要是使用该库中的组件 子模型来完成各项设计 再使用Simulink库来完成模型的仿真验证 Simulink库浏览器 Simulink的模型文件 在打开Simulink库浏览器后 需要新建一个Simulink的模型文件 后缀为mdl 在Simulink的库浏览器中选择 File 菜单 在出现的菜单项中选择 New 在弹出的子菜单项中选择新建模型 Model 放置SignalCompiler 点击Simulink库浏览器左侧的库内树形列表中的AlteraDSPBuilderBlockset条 使之展开DSPBuilder库 这时会出现一长串树形列表 对DSPBuilder库的子模块 Block 进行了分组 点击其中的AltLab项 展开AltLab 选中库浏览器右侧的SignalCompiler组件 按住鼠标右键拖动SignalCompiler到新模型窗口中 放置SignalCompiler 放置IncrementDecrement 将IncrementDecrement模块放置到新模型中 选中AlteraDSPBuilderBlockset库中的Arithmetic 算术 条 则在库浏览器的右侧 可以看到IncrementDecrement模块 把IncrementDecrement模块拖到新建模型窗口中 设置IncCount 用鼠标点击在新建模型窗口中的IncrementDecrement模块下面的文字 IncrementDecrement 将模块名字修改为 IncCount 要把IncCount模块做成一个线性递增 顺序加1 的地址发生器 就需要对IncCount模块的参数进行相应的设置 双击新建模型中的IncCount模块 打开IncCount的模块参数设置对话框 在参数设置对话框的上半部分是该模块的功能描述和使用说明 对话框的下半部分是参数设置部分 对于IncrementDecrement模块 共有下面几种参数可以设置 总线类型 BusType 输出位宽 NumberOfBits 增减方向 Direction 开始值 StartingValue 时钟相位选择 ClockPhaseSelection 对于总线类型 BusType 在其下拉列表框中共有三种选择 有符号整数 SignedInteger 有符号小数 SignedFractional 无符号整数 UnsignedInteger 设置IncDec 一般的D A器件的输入数据都是无符号的正数 因此 为了能在硬件系统上D A的输出也能观察到此波形 设置所有模块的数据类型为无符号 BusType选择 UnsignedInteger 即无符号整数 对于输出位宽 由于在后面接着的正弦查找表 SinLUT 的地址为6位 所以输出位宽设为6 IncCount是一个按时钟增1的计数器 Direction设为Increment 增量方式 ClockPhaseSelection可设置为1 二进制 SpecifyClock不选 通常在simulink图中的原件的复位端和时钟端 如果存在的话 是分别默认接于低电平和与全局时钟相连的 对于其它设置 仍采用IncrementDecrement模块的默认设置 然后点击 OK 按钮确认 注意 若对DSPBuilder库中的模块设置参数值不了解 可以在相应模块的参数设置对话框中点击 Help 按钮 或按F1键 调出DSPBuilder的相应帮助 以便了解详细的模块参数说明 放置正弦查找表 SinLUT 在AlteraDSPBuilderBlockset库的Storage库中找到查找表模块LUT 把LUT拖到新建模型窗口 将LUT模块的名字修改成 SinLUT 双击SinLUT模块 打开模块参数设置对话框 把输出位宽 NumberOfBits 改为10 查找表地址线位宽 AddressWidth 设为6 设置SinLUT 在 MATLABArray 编辑框中输入计算查找表内容的计算式 在此可以直接使用sin 正弦 函数 此处sin函数的调用格式为 sin 起始值 步进值 结束值 SinLUT是一个输入地址为6位 输出值位宽为10的正弦查找表模块 且输入地址总线为无符号数 可以设置起始值为0 结束值为2 步进值为2 26 计算式可写成 511 sin 0 2 pi 2 6 2 pi 512其中pi即为常数 LUT中的公式实现的功能是在原输出的有符号数据上加上了511 原理是将乘法器输出的8位有符号数的最高位取反并以无符号数输出 如果改变地址线宽 如8 以上的2的6次方要改成2的8次方 在 UseLPM 处选择打勾 表示允许QuartusII利用目标器件中的嵌入式RAM 在EAB ESB或M4K模块中 来构成SinLUT 即将生成的正弦波数据放在嵌入式RAM构成的ROM中 这样可以节省大量逻辑资源 否则只能用芯片中的LCs来构成 放置Delay模块 在Simulink库浏览器的AlteraDSPBuilderBlockset库中 选中Storage库下的Delay模块 放置到新建模型窗口 Delay模块 Delay模块是一个延时环节 在这里可以不修改其默认参数设置 在Delay模块的参数设置对话框中 OptionalPorts标签下的ClockPhaseSelection参数是控制采样的 设置为1时表示每一主频脉冲后 数据都能通过 放置端口SinCtrl 在Simulink库浏览器的AlteraDSPBuilderBlockset库中 选中IO Bus库 找到Input模块 放置在新建模型窗口中 Input模块 放置端口SinCtrl 修改Input模块的名字为SinCtrl SinCtrl是一个1位输入端口 双击SinCtrl模块 打开模块参数设置对话框 设置SinCtrl的BusType参数为 SingleBit 设置SinCtrl 放置Product 乘法 模块 在Simulink库浏览器的AlteraDSPBuilderBlockset库中 选中Arithmentic库 找到Product模块 用鼠标拖放到新建模型窗口中 Product模块 Product的两个输入中 一个是经过一个Delay的SinLUT查表的输出 另一个是外部的一位端口SinCtrl 按算法逻辑来看 实现了SinCtrl对SinLUT查找表输出的控制 双击Product模块 打开参数设置对话框 设置Product的参数 UseDedicatedCircuitry 选项用于对FPGA中的专用模块的选择 放置输出端口SinOut 在Simulink库浏览器的AlteraDSPBuilderBlockset库中 选中IO Bus库 找到Output模块 将其放置在新建模型窗口中 修改Output模块的名字为SinOut SinOut是一个10位输出端口 接向FPGA的输出端口 与外面的10位高速D A转换器相接 通过D A把10位数据转换成1路模拟信号 双击SinOut模块 打开模块参数设置对话框 设置SinOut的BusType参数为 UnsignedInteger 修改 NumberOfBits 参数为10 设置SinOut 设计文件存盘 放置完SinOut模块后 把新建模型窗口中的DSPBuilder模块连接起来 这样就完成了一个正弦波发生器的DSPBuilder模型设计 在进行仿真验证和SignalCompiler编译之前 先对设计进行存盘操作 Simulink模型仿真 用DSPBuilderBlockset模块设计好一个新的模型后 可以直接在Simulink中进行算法级 系统级仿真验证 对一个模型进行仿真 需要施加合适的激励 一定的仿真步进和仿真周期 并添加合适的观察点和观察方式 Simulink模型仿真 加入仿真步进模块首先加入一个Step模块 以模拟SinCtrl的按键使能操作 在库浏览器中 展开Simulink库 选中Sources 把Sources库中的Step模块拖放到模型窗口中 把step模块与SinCtrl输入端口相接 注意 凡是来自AlteraDSPBuilder库以外的模块 SignalCompiler都不能将其变成硬件电路 即不会影响生成的VHDL程序 但在启动Simulink仿真后能影响后面产生的仿真记录文件 Step模块 Simulink模型仿真 添加波形观察模块在库浏览器中 展开Simulink库 选中其中的Sinks库 把Scope 示波器 模块拖放到模型窗口中 双击该Scope模块 打开的是一个Scope 示波器 窗口 只有一个信号的波形观察窗口 而若希望可以多观察几路信号 可以通过调用多个Scope模块的方法来实现 也可以通过修改Scope模块参数来在同一个Scope模块中增加观察窗 Simulink模型仿真 Scope参数设置用鼠标点击Scope模块窗口上侧工具栏的第二个工具按钮 Parameters 参数设置 打开Scope参数设置对话框 在Scope参数设置对话框中共有两个选项页 Gerneral 通用 和 Datahistory 数据历史 在 Gerneral 选项页中将 Numberofaxes 参数改为3 在点击 OK 按钮确认后 可以看到Scope窗口增加了两个波形观察窗 每个观察窗都可以分别观察信号波形 而且相对独立 将SinCtrl的信号接向Scope的另一端 以作信号比较 此路信号在生成的VHDL文件中不会有相应语句 因为没有接上输出端口模块 Scope初始显示 设置Scope参数 Simulink模型仿真 设置Mux模块如果需要对某些信号进行对比观察 希望放置在同一个波形观察窗中 以便更好地观察信号之间的异同点 可以使用Mux模块来辅助完成 在Simulink库浏览器中 选中Simulink库 找到SignalRouting库下的Mux模块 拖放到sinout模型窗口 设置Mux模块 把 Numberofinputs 输入数目 参数设定为2 Mux模块 设置Mux Simulink模型仿真 设置仿真激励连接sinwaveout模型的全图 准备开始仿真 在仿真前还需要设置一下与仿真相关的参数 先设置模型的仿真激励 在sinwaveout模型图中只有一个输入端口SinCtrl 需要设置与此相连的Step模块 sinout全图 双击放置在sinwaveout模型窗口中的Step模块 设置对输入端口SinCtrl施加的激励 在打开的Step模块参数设置对话框中 可以看到一些参数 这些参数值的含义如下 Steptime 步进间隔Initialvalue 初始值Finalvalue 终值Sampletime 采样时间 设置Step 在此设置 Steptime 为500 Initialvalue 为0 即初始时不输出正弦波 Finalvalue 为1 Sampletime 为1 把最后两项选择 Interpretvectorparametersas1 D 和 Enablezerocrossingdectection 都设为打勾 在sinwaveout模型窗口中 点击 Simulation 菜单 在下拉菜单中选择 ConfigurationParameters 菜单项 随后 将弹出sinwaveout模型的仿真参数设置对话框中 可设置 Starttime 为0 0 Stoptime 为1000 其它设置取默认值 为了能更好得在波形观察窗中区分不同信号 可以在sinwaveout模型中对连接线进行命名 双击对应的连接线 就会出现一个可以输入文本的小框 在框中输入信号的名称 启动仿真在sinwaveout模型窗口中选择 Simulation 菜单 再选 Start 项开始仿真 待仿真结束 双击Scope模块 打开Scope观察窗 观察仿真结果 SinOut信号是sinwaveout模型的输出 Scope观察窗中模拟了D A的输出波形 SinCtrl信号是sinwaveout模型的输入 可以看出SinOut受到了SinCtrl的控制 当SinCtrl为1时 SinOut波形是正弦波 当SinCtrl为0时 输出为0 SinTemp是sinwaveout模型内部的连接信号 用来观察sinwaveout模型内部的情况 Scope波形 在Scope观察窗中 可以使用工具栏中的按钮来放大 缩小波形 也可以在波形上单击右键使用 Autoscale 使波形自动适配波形观察窗 用鼠标左键可以放大波形 把SinTemp信号波形放大一些可以看到两个波形 一个波形比另一个波形延时了一个周期 波形延时 SignalCompiler的使用 在Simulink中完成仿真验证后 就需要把设计转到硬件上加以实现 这是整个DSPBuilder设计流程中最为关键的一步 在这一步 可以获得针对特定FPGA芯片的VHDL代码 SignalCompiler 双击sinwaveout模型中的SignalCompiler模块 会出现 DSPBuilder SignalCompiler 对话框 双击SignalCompiler后的对话框 设置SignalCompiler 在 Family 器件系列 下拉选择框中选择需要的器件系列 默认为Stratix系列器件 对此可以修改 在此选为CycloneII 在 Device 中默认为Auto 即由QuartusII自动决定使用该器件系列中的某一个具体型号的器件 在此输入EP2C35F672C6 点击Simple标签页中的Compile按钮 等待编译完后点OK 点击 Compile 编译 按钮后 SignalCompiler首先对sinwaveout模型进行分析 检查模型有无错误 并在Matlab命令窗口中给出相关信息 若有错误 Error 存在 SignalCompiler就会停止分析过程 并把错误信息显示在信息框 Message 中 如果有警告 Warning 存在 同错误一样把警告信息显示在信息框 Message 中 把模型文件MDL转换成VHDL完成Simulink文件 mdl 到VHDL文件的转换后 在 Messages 信息提示框中会显示 GeneratingHDL 即顶层文件sinwaveout vhd完成转换 Sinwaveout模型生成的VHDL文件 sinwaveout vhd 可以在文件夹sinwaveout中找到 若有错误 在 Messages 信息提示框中会显示简短的出错提示 出现MDLtoVHDL信息 综合调用QuartusII完成综合过程 综合后生成原子网表供适配器使用 并自动生成QuartusII可调用的工程 QuartusII适配调用QuartusII完成编译适配过程 生成编程文件 pof文件和sof文件 编程文件可以直接用于FPGA的编程配置 SignalCompiler窗口 Message 信息框中提示信息Info GeneratingHDLInfo AnalyzingSimulinkmodelInfo AnalysiswassuccessfulInfo RunningQuartusIIAnalysis SynthesisInfo QuartusIIAnalysis Synthesiswassuccessful 0errors 7warningsInfo RunningQuartusIIFitterInfo QuartusIIFitterwassuccessful 0errors 2warningsInfo RunningQuartusIITimeQuestTimingAnalyzerInfo QuartusIITimeQuestTimingAnalyzerwassuccessful 0errors 2warningsInfo RunningQuartusIIAssemblerInfo QuartusIIAssemblerwassuccessful 0errors 0warnings 在Advance标签页 可手动进行分析 综合 布线和适配过程 Simulink具有较为强大的错误定位能力 对许多错误可以在Sim
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学员 嘉奖申请书
- 项目申请书撰写
- 车站降级申请书
- 商场促销申请书
- 入团申请书400字初二
- 国庆出境申请书
- 权属转移申请书
- 书法奖学金申请书
- 申请更换设备申请书范文
- 各类项目申请书撰写提纲
- 私密线上招商课件
- 兵团面试题目及答案
- 2025贵州贵阳市投资控股集团房地产置业有限公司招聘12人考试参考题库及答案解析
- 2025水发集团有限公司招聘216人考试模拟试题及答案解析
- 智慧加油站物联网综合管控平台建设综合解决方案
- 2025年甘肃省公职人员考试时事政治考试试题(附含答案)
- 花岗岩铺设方案
- 2025年护理疼痛试题及答案
- 桥梁工程监理工作实施方案
- 2025年秋期新教材部编人教版一年级上册道德与法治教学计划+进度表
- 年产5万吨氧化铁新材料(磁性材料及锂电材料)项目报告书
评论
0/150
提交评论