5.10典型实例9:SignalTapII功用演示
5.10.1实例的内容及方针
1.实例的首要内容
本节旨在经过给定的工程实例——“正弦波发生器”来了解AlteraQuartusII高档调试功用SignalTapII和IntentMemoryContentEditor的运用办法。一起运用根据AlteraFPGA的开发板将该实例进行下载验证,完结工程规划的硬件完结。在本节中,将首要解说下面知识点。
·QuartusII原理图输入办法。
·QuartusII束缚规划。
·QuartusII工程编译。
·QuartusII硬件下载。
·SignalTapII在线调试。
·IntentMemoryContentEditor在线修正片上ROM数据。
经过这些知识点,依照实例的流程,读者能够迅速地把握运用QuartusII软件高档调试技巧。
2.实例方针
经过具体的流程解说,读者应到达下面的方针。
·了解QuartusII原理图规划办法。
·了解SignalTapII在线调试办法。
·了解IntentMemoryContentEditor在线修正片上ROM数据的办法。
5.10.2实例详解
本实例将运用图解的办法将整个流程一步一步展示给读者,使读者能够轻松把握开发的流程。
5.10.2.1工程体系框图
本实例运用QuartusII自带的宏模块(MegaWizardPlug-inManager)来规划逻辑功用,并运用嵌入式硬件逻辑剖析仪调查成果。
正弦函数发生器的原理比较简单,硬件完结也比较简单:首要规划一个ROM用来寄存正弦函数的起伏数据;用一个计数器来指定ROM地址(也便是相位)的增加,输出相应的起伏值。这样在接连的时间内显现的便是一个完好的正弦波形。
体系的电路图如图5.40所示。
图5.40体系电路图
div模块是分频模块,能够用前面规划过的分频器的程序生成模块(symbol),也能够运用Altera的计数器宏模块来生成分频器。
5.10.2.2增加分频器模块
1.将分频文件增加到工程
将分频器模块div.v参加到工程中,在工程中翻开分频器模块div.v(分频器程序由读者完结),如图5.41所示。
2.发生.bsf文件
挑选“File”/“Create/Update”/“CreateSymbolFilesforCurrentFile”选项。软件会主动剖析div.v程序的语法过错,如图5.42所示。
图5.41分频器VerilogHDL文件
图5.42生成模块菜单
3.修正程序语法过错
假如犯错则修正过错,直到没有过错停止。此刻软件会主动生成div.bsf文件,此文件为原理图中的模块图形。
4.在原理图中参加分频器模块div.bsf
在原理图文件中单击“”按钮,就能够参加刚刚树立的模块,如图5.43所示。
图5.43在原理图中增加分频器模块
5.10.2.3增加QuartusII体系自带宏模块
ROM和计数器都能够经过QuartusII自带的宏模块生成。
1.树立ROM初始化文件
在菜单中挑选新建文件,在“OtherFiles”中挑选“MemoryInitializationFile”选项,如图5.44所示。
填入如图5.45所示的正弦波起伏数据。当然也能够用MATLAB、C++或Excel的函数生成数据。保存文件,命名sin.mif。
图5.44新建ROM初始化文件图5.45输入正弦波起伏数据
2.增加自带宏模块
在“Tools”菜单中挑选“MegaWizardPlug-PnManager”选项,呈现如图5.46所示的对话框,挑选新建宏模块单击“Next”按钮。
图5.46引证自带宏对话框
图5.47左边是QuartusII自带的免费的宏模型,能够看到Quartus供给了许多免费的IP核。
其间ROM在storage目录中,计数器counter在arithmetic目录中。
3.增加ROM
在storage中挑选ROM,并在右侧的选项栏中挑选Cyclone系列芯片,outputfile类型挑选VerilogHDL,并在下方挑选ROM文件的生成地址及称号,如图5.48所示。
图5.47挑选体系自带宏模块
图5.48挑选ROM宏模块
单击“Next”按钮,设定ROM根本参数,包含ROM的位宽q、地址位宽(存储深度)和时钟。一般ROM的时钟选为单时钟操控Singleclock,如图5.49所示。
单击“Next”按钮,设定ROM其他参数,设定输出寄存器、时钟使能端和异步清零。假如选中“qoutputport”,则会在输出端加一级寄存器,如图5.50所示。
单击“Next”按钮,接下来在对话框中填入ROM初始化文件,并选中“allowin-systemmemory”选项,并挑选称号为“NONE”,如图5.51所示。
图5.49rom宏模块根本参数设置
图5.50设置ROM宏模块其他参数
图5.51设置ROM宏模块初始化文件
单击“Next”按钮,完结设置,导游生成的文件如图5.52所示。
图5.52设置ROM宏模块完结
4.增加计数器
引进计数器作为ROM的地址,当计数器地址递加时,相应的ROM的地址递加(正弦波的相位增加)。相同的在“MegaWizardPlug-InManager”中挑选arithmetic数学库中的“LPMCOUNTER”宏模块,增加计数器,如图5.53所示。
图5.53新建计数器模块参数
本实例顶用的ROM宽度为8,深度为64,也便是数据宽度是8位,能够存64个数据。ROM有64个地址,因而计数器的位宽要界说为6位,如图5.54所示。
图5.54设置计数器宏模块参数
一向单击“Next”按钮,运用体系默认设置,直到生成如图5.55所示的文件输出。
图5.55完结计数器宏模块设置
5.10.2.4增加端口
要增加输入输出端口,挑选按钮,翻开如图5.56所示的对话框,然后挑选需求增加的端口方式。
图5.56参加输入输出端口
增加后双击端口,给端口命名,总线型端口要命名name[N..0]的格局,如图5.57所示。
图5.57完结工程原理图输入
5.10.2.5编译工程
依照2.5节进行语法剖析,指定FPGA设备,指定管脚,全体编译程序。在本实例中只需求对主时钟管脚进行分配,即pin_153。
5.10.2.6运用SignalTapII调查波形
1.树立SignalTapII文件
在菜单中挑选“Tools”/“SignalTapIILogicAnalyzer”选项,翻开如图5.58所示界面。
图5.58新建SignalTapII文件
作如图5.59所示的设置。
图5.59SignalTapII文件设置
SignalTapII根本设置需注意以下问题。
(1)分频时钟作为采样信号,不要放到被调查的信号中。
(2)采样信号不宜用作主时钟,能够用作分频后的时钟,采样条件可用Centertriggerposition。
下载程序,就能够看仿真的波形了。
2.设置SignalTapII高档触发条件
在如图5-58所示的增加调查信号区域窗口中,将TriggerLevels选项改为Advanced,将Basic改为Advanced,则会弹出高档触发设置页面,如图5.60和图5.61所示。
图5.60翻开SignalTapII文件高档触发设置
图5.61SignalTapII文件高档触发设置
本例中设置为当地址信号address=0时开端触发。从“nodelist”中拖入address信号,在“ObjectLibrary”/“ComparisonOperator”中参加equality,最终参加“InputObjects”/“BusValue”。得到如图5.62所示的触发条件。
图5.62SignalTapII高档触发设置成果
3.运转SignalTapII并调查波形
首要全体编译工程,在菜单栏中单击按钮,开端编译。之后运用JTAG形式将程序下载到FPGA中运转。翻开SignalTapII文件,挑选如图5.63所示的下载电缆。
在InstanceManager中单击按钮进行一次触发,将会得到如图5.64所示的波形。
图5.64调查采样数据数字显现波形
由于开发板硬件没有AD/DA功用,要想看模仿信号的输出也能够用逻辑剖析仪来完结。在信号名(比方q信号)上单击右键,挑选“BusDisplayFormat”/“UnsignedLineChart”选项,如图5.65所示。
图5.65调查采样数据模仿显现波形 图5.66调查采样数据模仿显现波形成果图
此刻,就能够显现如图5.66所示的模仿波形了。
5.10.2.7运用在线ROM编辑器
嵌入式存储数据编辑器是经过JTAG下载电缆来观看FPGA中ROM加载的数据的,不仅能观看,还能在线修正数据,无需从头编译与下载。
1.翻开ROM编辑器
挑选“Tools”/“InsystemMemoryContentEditor”选项,翻开如图5.67所示的rom编辑器。
图5.67翻开在线ROM编辑器窗口
2.挑选下载电缆
运用打印口LPT1下载电缆,如图5.68所示。
图5.68设置下载电缆
3.挑选ROM标号
点击设置ROM参数时指定的none的文件,将呈现FPGA运转之中的ROM的数据,如图5.69所示。
图5.69挑选ROM标号
4.读取ROM数据
右键单击“NONE”,挑选“ReadDatafromSystemMemory”选项,就能够得到ROM中的数据了,如图5.70所示。
图5.70读取ROM数据
5.修正ROM数据
经过编辑器,能够修正ROM中的数据。例如能够把数据中的几个数改成0,然后单击“write”,再回到逻辑剖析仪中调查波形,就能够发现其间的改变,如图5.71所示。
图5.71修正后ROM数据显现
5.10.3小结
上述练习流程便是一个完好的QuartusII硬件调试流程。尽管此练习完结的功用比较简单,但关于初学者来说,是一个不错的入门练习。其首要意图是让初学者对的规划有一个开始的了解。经过该练习来了解QuartusII的高档调试技巧,为往后的学习打下根底。