5.启动仿真在SinOut模型窗口中,选恶Simulation菜单下的Start项,开始仿真。
仿真结束后,双击Scope模块,打开Scope观察窗。
出现如图5-15所示的仿真结果。
可以看到SinOut受到了SinCtrl的控制。
6.设计成无符号数据输出由示波器的波形可以看到,输出的正弦波是有符号的数据,在127间变化,但一般的D/A器件的输入数据都是无符号的正数。
因此为了能在硬件系统上D/A的输出也能观察到此波形,必须对此输出做一些改进,以便输出无符号数。
最简单的方法就是将输出波形向上平移127即可,SinLut的BusType设置为”UnsignedInteger”,SinLut的波形数据公式改为:
127*sin([0:
2*pi/(2^6>:
2*pi]>+128。
然后将输出端口Out的BusType改为”Unsignedinteger”类型。
修改完成之后,进行仿真,可以看到输出的波形都在0以上。
5.2.3使用SignalCompiler进行从算法到硬件实现
在Matlab中完成仿真验证后,就要把设计转换到硬件上加以实现。
通过DSPBuilder可以获得针对特定FPGA芯片的HDL代码。
1.分析模型双击SinOut模型中的”SignalCompiler”图标启动DSPBuilder,出现如下的窗口:
单击”Analyze”按钮,SignalCompiler将会对模型进行分析,检查模型有无错误。
如果设计存在错误,将会停止分析过程,并在Matlab软件的命令窗口中给出相关信息。
如果设计不存在错误,则在分析结束后打开”SignalCompiler”窗口。
Simulink具有强大的错误定位能力,对许多错误可以在simulink模型中直接定位,用不同的颜色来标示有错误的模块。
如果SignalCompiler分析当前的DSP模型有错误时,必须修改正确才能继续下面的设计流程。
2.设置SignalCompiler在SignalCompiler窗口中,要进行一些必要的设置。
SignalCompiler窗口大致上可以分为3个功能部分:
左上为工程设置选项——ProjectSettingOptions;右上为硬件的编译流程——HardwareCompilation;下方为信息框——Messages。
SingalCompiler的设置集中在工程设置选项部分。
在Device下拉选择框中选择目标器件的系列。
这里只能选择器件的系列,不能指定具体的器件型号,这需要由QuartusII自动决定使用该器件系列中的某一个具体型号的器件,或在手动流程中由用户指定。
在Synthesis<综合)下拉选择框中,可以选择综合器,共有3个选项:
Mentor的LeonardoSpectrum综合器;Synplicity的Synplify综合器;Altera的QuartusII,QuartusII是FPGA/CPLD的集成开发环境,其内含综合功能。
在Optimization<优化)下拉选择框,指明在综合、适配过程中的优化策略,是优先对面积
工程设置选项部分的下部是一些选项页,包括下面的内容:
MainClock:
系统主时钟的周期的设置;Reset:
系统复位信号的设置;SignalTapII:
嵌入式逻辑分析仪的设置;Testbench:
仿真测试文件生成的选择;SOPCinfo:
SOPC相关设置。
MainClock的缺省值为20ns,即对应50MHz的频率。
如果要使用第三方的仿真软件<如ModelSim)则在Testbench页中,选中”GenerateStimuliforVHDLTestbench.”,生成第三方VHDL仿真软件的激励测试文件。
如若不然不要选择此选项,选择此选项的话,simulink运行会比没选中此选项的情况下慢很多。
3.把模型文件Mdl转化成VHDL文件完成上面的设置之后,信息窗口会提示用户进行Mdl文件到VHDL文件的转换操作。
点击1.ConvertMDLtoVHDL的图标,执行mdl模型文件到VHDL文件的转换。
转换完成后,Message框中会出现如下的提示>Generatedtoplevelfile‘Sinout.vhd’>CompletedMDLtoVHDLconversion>See‘Sinout_DspBuilder_Report.html’reportfileforadditionalinformation以上提示说明了:
产生了Sinout.vhd的顶层文件,完成了mdl文件到VHDL文件的转换,更多的信息,参看Sinout_DspBuilder_Report.htm文件,点击ReportFile按钮即可。
4.综合单击步骤2的图标,执行综合过程,这里选择的综合工具是QuartusII,综合后生成AtomNetlist<网表)文件,以供第三步适配过程使用。
综合过程完成之后,信息框中会给出此工程的一些信息:
如器件的系列,使用的逻辑宏单元的数目、触发器的数目、引脚数、RAM容量等。
详细的信息也是参照上面提到的工程报告文件。
5.QuartusII适配单击步骤3的图标,调用QuartusII完成编译适配过程,生成编程文件:
pof文件和sof文件。
单击Report按钮,查看详细的报告信息。
以上的三个步骤可以分开单步执行,也可以点击’executesteps1,2and3”,一步执行。
6.编程完成了以上三步操作之后,programdevice的图标由不可用编程可用<由灰变亮),连接好硬件便可以进行下载了。
但在下在之前,还要做一些必要的仿真和测试:
使用ModelSim进行RTL级仿真,使用QuartusII进行时序仿真,进行硬件测试等。
5.2.4使用ModelSim进行RTL级仿真
在Simulink中已经对模型进行过仿真验证,但是是属于系统级的验证,并没有对生成的VHDL代码进行过仿真。
事实上,由Mdl文件转化而来的VHDL描述是RTL级的,而在simulink中的模型仿真是算法级的,转换后的代码实现可能与mdl模型描述的情况不完全相符。
这就需要针对生成的RTL级VHDL代码进行功能仿真。
当在SignalCompiler设置窗口中的Testbench页中选中”GenerateStimuliforVHDLTestbench”,DSPBuilder在mdl转换到VHDL的过程中会生成对HDL仿真器ModelSim的测试文件。
ModelSim是MentorGraphics的子公司ModelTechnology的产品,ModelSim是业界最优秀的HDL语言仿真器,具有快速的仿真性能和最先进的调试能力,支持众多的ASIC和FPGA厂家库,是作FPGA、ASIC设计的RTL级和门级电路仿真的首选。
是唯一的单内核支持VHDL和Verilog混合仿真的仿真器,全面支持VHDL和Verilog语言的IEEE标准,以及IEEEVITAL1076.4-95标准,支持C语言功能调用,支持C模型、基于SWIFT的SmartModel逻辑模型和硬件模型的仿真。
它具有丰富而又易用的图形用户界面,提供最友好的调试环境,为加快调试提供强有力的手段。
仿真方法:
启动ModelSim软件,选择Tools菜单下的ExecuteMacro…,在打开的文件选择对话框中切换到SinOut模型SinOut.mdl文件所在的目录,选择tb_SinOut.tcl,ModelSim执行tb_SinOut.tcl,开启仿真,随后会自动打开wave窗口,显示仿真结果。
但是显示的结果是以数字形式显示的,与simulink中的仿真结果没有可比性。
为了能够进行对比,要改变输出波形的显示方式。
选中”tb_sinout/outu”,单击右键,在弹出菜单中选择properties…,出现waveproperties窗口,缺省显示的View页面。
在对话框中将Radix项的内容设为”Unsigned”。
然后点击Format页,在Format页中将Format设成Analog,Height设成100,Scale设成0.4,然后点击OK。
5.2.5使用QuartusII进行时序仿真
ModelSim软件只能实现对设计电路的功能仿真,其仿真结果没有反映电路的硬件的真实情况。
为了使我们的设计与真实的电路更加接近,进行设计的时序仿真是非常必要的。
SignalCompiler已经生成了用于quartusII进行时序仿真的激励文件sinout.vec和相关仿真文件,如sinout_quartus.tcl,可以很容易地在quartusII中实现时序仿真,在quartusII进行时序仿真的步骤如下:
启动quartusII集成开发环境,执行File菜单的OpenProject…的操作,在弹出的OpenProject的对话框中,选择Sinout模型所在的目录,打开该目录,打开DSPBuilder为QuartusII建立的设计工程——Sinout,并在工程中打开VHDL顶层设计文件sinout.vhd。
在SignalCompiler中的编译过程中,我们已经指定了器件为CycloneII系列了,但是在QuartusII中进行时序仿真时,需要指定器件的具体型号。
执行Assignments菜单的Device…命令,为本设计选择目标芯片EP2C35F672C8。
然后执行Processing菜单的StartCompilation命令对sinout.vhd顶层文件进行编译。
编译结束后,执行Processing菜单的StartSimulation命令,启动时序仿真。
在仿真过程结束之后,出现quartusII仿真波形界面,显示仿真结果。
通过观察仿真波形来检查设计的工程是否满足时序要求。
也可以运行TimeQuestTimingAnalyzer,生成时序分析报告,来获取时序仿真的数据。
5.2.6硬件实现与测试
经过RTL级和时序仿真之后,还要将设计下载到芯片中进行实现和测试。
进行硬件测试时,需要使用开发平台上的DAC器件将正弦波信号发生器所输出的数字信号转换为模拟信号,然后将模拟信号接到示波器上。
要使用DAC器件,需要将平台上的拨码开关的MODUL_SEL1设置成“ON”状态,将MODUL_SEL2和MODUL_SEL3设置成“OFF”状态。
开发平台上的DAC模块由一个并行8位DAC器件和一个并行DAC电压基准源组成,并行8位DAC器件采用AnalogDevice公司的AD7302芯片,工作电压为2.7伏到5.5伏,功耗小适合于电池驱动应用,具有高速寄