FPGA通信设计基础DspBuilder使用初步_第1页
FPGA通信设计基础DspBuilder使用初步_第2页
FPGA通信设计基础DspBuilder使用初步_第3页
FPGA通信设计基础DspBuilder使用初步_第4页
FPGA通信设计基础DspBuilder使用初步_第5页
已阅读5页,还剩90页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第2章AlteraDSPBuilder设计2.1Matlab/Simulink简介

Matlab和Mathematic、Mapple并成为三大数学软件。在数学类科技应用软件中尤其是是在数值计算方面首屈一指。

Matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、链接其它编程语言的程序。可以用来进行数值分析、数字与符号计算、工程和科学绘图、控制系统设计与仿真、数字信号处理、通信系统设计与仿真、财务与金融分析。Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。

Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。2.2基于Matlab/SimulinkFPGA开发

在FPGA或与处理器结合的FPGA上实现设计算法时,需要对影响功能性能的定点特性进行准确的建模。可在MATLAB和Simulink中创建浮点算法规格,然后将其转换为位真定点数据类型以供仿真。对设计进行模型级定点优化可用于透彻地研究FPGA设计所涉及的定点权衡。还可以创建有限状态机来对这些算法的控制逻辑进行建模。使用Simulink模型,将其作为测试平台通过联合仿真来验证FPGA实现方案。使用HDL验证工具,可在诸如ModelSim等HDL仿真器中对实现方案进行仿真,还可使用Simulink来创建测试激励、仿真黄金参考模型并将预期仿真结果与实际结果相比较。采用Simulink和自定义HDL仿真器来运行回归测试和进行交互式调试会话。此方法消除了手动传输测试向量的需要,且使您可在设计过程中更早发现设计错误。使用HDL生成工具,能自动从模型生成可自定义的、与目标无关的VHDL和Verilog代码,这些代码可综合以用于FPGA实现。可通过更新模型并重新生成代码来快速修改该代码。生成的代码可传递到下游工具以供综合、布局、布线,并将位流下载到FPGA。Matlab/Simulink支持FPGA的开发方式将Simulink与AlteraDSPBuilder配合使用Simulink与XilinxSystemGeneratorforDSP配合使用将Simulink和HDLCoder与MentorGraphicsFPGA设计工具配合使用在传统的涉及HDL代码的技术的DSP设计过程中,要使得FPGA实现达到最佳性能,整个过程会非常耗时。

在MATLAB和Simulink中进行AlteraFPGA开发,首先使用Altera的DSPBuilder在Simulink环境中进行算法开发、仿真和验证。

2.3Matlab/DSPBuilder及其设计流程

DSPBuilder模块可用于在Simulink中建模的系统构建FPGA硬件实现。通过采用具有位帧和周期准确性的Altera模块集来构建模型,可以在Simulink环境内快速准确地评估AlteraFPGA的硬件实现。Altera模块集包含算术函数、逻辑函数、存储接口以及Avalon内存映射和流接口。可将已有的HDL代码和AlteraMegaCoreIP内核的模型集成到设计中。

DSPBuilder高级功能集可在数分钟之内在Simulink中创建出针对AlteraFPGA优化的设计,且无需直接使用HDL代码。只需在Simulink模型中指定诸如所需的时钟频率和通道数等顶级设计约束,DSPBuilder即会自动生成针对所选的AlteraFPGA器件优化的流水线化的RTL。因为该高级模块集使用时分复用技术来优化逻辑利用率;并自动插入流水线阶段和寄存器以符合设计约束,因此可在AlteraFPGA中获得与手工优化的HDL代码相近的性能。基于Matlab、DSPBuilder进行FPGA开发流程应用Altera模块库在Simulink进行建模仿真添加SignalCompiler到设计中

生成HDLCode代码并产生Testbench进行RTL级仿真综合HDL代码并进行布局布线FPGA期间编程应用SignalTapII进行逻辑分析AlteraDspBuilder设计流程

Altera模块库可用于快速评估设计在Altera器件中的性能、生成时序最佳的HDL代码以及对照Simulink模型验证硬件实现方案。

2.4Altera模块库简介AltLabArithmeticBoardsComplexTypeGate&ControlIO&BusRateChangeSOPCBuilderLinksStateMachineFunctionsStorageMegaCoreFunctionsVideoandImageProcessing1、AltLabLibrarySignalCompilerHDLSubSystemBuildHierarchicalSystemHDLImportSignalTapIIBlockSignalTapIIAnalysisBP:BusProbeDeviceprogrammerHILQuartusIIGlobalProjectAssignmentQuartusIIPinoutAssignmentVcdSinkSubSystemBuilderCreatesBlack-Box1、AltLab库--SignalCompiler模块

SignalCompiler模块为DSPBuilder的核心模块,完成如下功能:将Simulink模型转换为可综合的RTLVHDL;生成VHDLtestbenches;生成Verilogtestbenches;通过Quartus®

II生成VerilogHDL仿真模型;将Simulink激励转换为VHDLtestbench并生成txt格式的期望响应;生成Tcl脚本用于Quartus

II的编译;生成适用于LeonardoSpectrum、PrecisionRTLSynthesis、Synplify和ModelSim®进行仿真的Tcl脚本;生成Quartus

II仿真的波形文件;生成PTF配置文件,可将模型导入SOPCBuilder;允许生成SignalTap

II(.stp)文件;生成QuartusII模块符号文件(.bsf)。UpdateDiagram:SignalCompiler模块是否对Simulink模型重新进行仿真再提取DSPBuilder模块的信息。Analyze:SignalCompiler模块读取当前仿真模型的mdl文件,测试模型的层次信息以及所有DSPBuilder模块的采样时间。每次改变模型后都必须重新进行分析操作。SkipAnalyze:跳过模型分析。

创建完Simulink仿真模型后利用Simulink进行仿真,如果无误需要转换为VHDL实现时,可双击SignalCompiler模块或者调用sc_altera函数。运行界面如下图

1、AltLab库--SignalCompiler模块

在菜单栏左边的工程设置选项中可以选择目标器件的类型、用于综合的综合器、综合与适配的优化目标、主时钟周期、全局复位电平、reset是否接地、是否嵌入SignalTapII逻辑分析仪、是否生成测试激励、是否生成SOPCptf文件、是否生成Verilog文件。在右边的硬件编译部分给出了SignalCompiler模块的工作流程,首先点击第一步,将MDL转换为VHDL,同时会生成Tcl脚本文件;第二步进行VHDL的综合;第三步调用QuartusII进行综合;如果目标器件为DSP开发板则可以直接将代码下载到DSP开发板上。底部的ProjectInfo给出了当前系统的信息;ReportFile给出了SignalCompiler转换后的硬件信息。1、AltLab库--SignalCompiler模块

1、AltLab库--HDLImport模块在Simulin平台上可以利用AlteraDspBuilder中AltLab库中的HDL模块将HDL文本语言设计转换成DspBuilder设计模块。参与整个模块的软件仿真、硬件仿真、VHDL语言转换和硬件实现。HDLImport的设计步骤:完成HDL文本设计调入HDLImport模块双击模块加入HDL设计文件1、AltLab库--HIL硬件环模块在Simulin平台上进行仿真有以下缺点:速度慢不能完全反映硬件特性把设计完全放在Quartus上仿真,激励信号难以获得,仿真结果难以观察。理想的方法是在Simulink平台上将设计模型下载到FPGA芯片中,利用Simulink提供的各类仿真工具进行仿真,即HardwareINLoop。算术库包括二进制补码有符号算术模块,如乘法器、加法器。有些模块有UseDedicatedCircuitry这一选项,即此类模块可以利用Altera®tratix®

II、Stratix、StratixGX、Cyclone

II的模块如DSP模块来实现。2、算术库ArithmeticLibraryComparatorDivideGainIncrementDecrementMagnitudeMultiplyAccumulateMultiplyAddParallelAdderSubtractorProductSumofPartialProductsIntegratorDifferentiatorArithmeticLibrary–MultiplyAdd2-4OptiontouseDSPBlocksiftargetdeviceisStratixOptiontouseconstantvaluesspecifiedasaMATLABarraySignedIntegerUnsignedIntegerSignedFractionalAddAddAddSubSubAddSubSubNoRegisterInputsOnlyMultiplierOnlyAdderOnlyInputsandMultiplierInputsandAdderMultipliersandAdderInputsMultiplierandAdder3、I/O与总线控制模块库主要是控制信号和总线来完成诸如截位、饱和、bit提取、总线类型转换等操作。BusManipulation–AltBusAltBusModesInput&OutputPortDefinesHardwareBoundariesConvertsFloating-PointtoFixed-PointInternalNodeDefinesInternalHardwareNodeWidthsConvertsSBFFormatsConstantImplementsConstantsinHardwareBlackBoxDefinedLaterBusManipulation–BusConversionSignedIntegerUnsignedIntegerSignedFractionalON:Outputisroundedawayfromzero.OFF:LSBtruncated<int>(input+0.5)ON:IfOutput>Max.Positivevalue,Output=MaxPositiveValueElseOutput<Min.NegativevalueOutput=Min.NegativevalueOFF:MSBtruncatedBP:BusProbe4、复信号处理库4、复信号处理库ButterflyComplexMultiplexerComplexConjugateComplexDelayComplexProductComplexAddSubComplexConstantComplextoReal-imagReal-imagtoComplexImplementDecimationinTimeFFTButterflya,b,W,A,BAreComplexNumber(SignedInteger)a=x+jX;b=y+jY;W=v+jVA=a+bW;B=a-bWA=(x+yv)+YV+j(X+Yv-yV)B=(x-yv)-YV+j(X-Yv+yV)

4、复信号处理库--Butterfly4、复信号模块--Complex–Real-ImagtoComplexX=a+BjConjugate:Conjugate(X)=a-BjInvert:Invert(X)=-a-BjX=a+BjY=C+DjMultiply:X*Y=(A*C–B*D)+(A*D+BC)j5、Gate&ControlLibraryCaseStatementIfStatementLogicalBitOperatorLogicalBusOperatorSinglePulseLUTN-to-1Multiplexer1-to-NDemuxDecoderBitwiseLogicalBusOperator5、Gate&ControlLibrary--Ex:ConvolutionalInterleaver5、存储器(Storage)模块库6、StorageLibraryDelayDownSamplingDual-portRAMFIFOLFSRSequenceLUTParalleltoSerialPatternROMEABSerialtoParallelShiftTapsUpSampling6、Storage–ShiftTapsSpecifiestheNumberofRegularlySpacedTapsAlongtheShiftRegisterSpecifiestheDistanceBetweentheRegularlySpacedTapsinClockCyclesUseOutputattheEndofShiftRegisterforCascading7、ROMEAB&ShiftTapsBlocks--Ex:PolyphaseFilter7、RateChange模块库(1)该库模块允许控制DSPBuilder模块如Delay或IncrementDecrement模块的时钟。为保证Simulink和VHDL时钟精度的一致则必须设置Simulink的Solver,参数设置见图:选择Fixed-step;选择discrete(nocontinuousstate);选择SingleTasking模式6、RateChange模块库(2)ClockAltr模块

——用于仿真模型中加入新的硬件时钟。PLL模块——可综合出一个基于某一参考时钟的时钟信号。

Multi-RateDFF模块

——用于采样频率的变化Tsamp模块

——用于指定内部数据的采样时间。6、RateChange模块库(3)Variablepll_output_clock0(definedinblockuntitled/PLL)=1e-008Variablepll_output_clock1(definedinblockuntitled/PLL)=4e-008Variablepll_output_clock2(definedinblockuntitled/PLL)=2e-006RateChange–Multi-RateDFFSynchronizedatapathintersectionsinvolvingmultipleratesRateChange–Tsamp&PLLBlocks

Ex:PolyphaseFilter7、DSP板模块库8、BoardLibrary

8、有限状态机2.5正弦信号发生器设计

2.5.1建立设计模型1、打开Matlab环境

启动Matlab主界面2.5.1建立设计模型2、建立工作库cde:/mkdir/myprj/sinwavecd/myprj/sinwave3、了解simulink库管理器

启动Simulink3、了解simulink库管理器

simulink库管理器4.simulink的模型文件

建立simulink文件5、放置SignalCompilder

6、放置IncrementDecrement

7.设置IncCount总线类型(BusType);输出位宽(Numberofbits);增减方向(Direction);开始值(StartingValue);是否使用控制输入(UseControlInputs)时钟相位选择(ClockPhaseSelection)放置SignalCompiler

递增递减模块改名为IncCount7.设置IncCount设置递增递减模块

7.设置IncCount放置LUT模块7.设置IncCount8、放置正弦查找表(SinLUT)127*sin[0:2*pi/2^6]:2*pi])127*sin[0:2*pi/2^8]:2*pi511*sin[0:2*pi/2^6]:2*pi])+512设置SinLUT

8、放置正弦查找表(SinLUT)Delay模块及其参数设置窗9、放置Delay模块设置SinCtrl

10、放置端口SinCtrl

设置SinCtrl

10、放置端口SinCtrl

设置乘法单元11、放置Product模块设置SinOut

12.放置输出端口SinOut13.设计文件存盘Step模块2.5.2Simulink模型仿真1、加入仿真步进模块

Scope模型

2.5.2Simulink模型仿真2、添加波形观察模块Scope初始显示2、添加波形观察模块设置Scope参数

3、Scope参数设置

sinout全图

3、Scope参数设置

设置仿真步长Step4、设置仿真激励运行simulink仿真

4、设置仿真激励simulink仿真设置

5、启动仿真

有符号输出波形(系统级仿真)5、启动仿真

无符号输出波形(系统级仿真)5、启动仿真

无符号整数SignedInteger输出电路

6、设计成无符号数据输出

SinOut1模块设置7、各模块功能说明

ExtractBit模块设置

7、各模块功能说明

BusConversi

温馨提示

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

评论

0/150

提交评论