FPGA设计开发软件Quartus II的使用技巧之: 典型实例-SignalTap II功能演示
5.10典型实例9:SignalTap II功能演示5.10.1实例的内容及目标
1.实例的主要内容
本节旨在通过给定的工程实例——“正弦波发生器”来熟悉Altera Quartus II高级调试功能SignalTap II和Intent Memory Content Editor的使用方法。同时使用基于Altera FPGA的开发板将该实例进行下载验证,完成工程设计的硬件实现。在本节中,将主要讲解下面知识点。
·Quartus II原理图输入方式。
·Quartus II约束设计。
·Quartus II工程编译。
·Quartus II硬件下载。
·SignalTap II在线调试。
·Intent Memory Content Editor在线修改片上ROM数据。
通过这些知识点,按照实例的流程,读者可以迅速地掌握使用Quartus II软件高级调试技巧。
2.实例目标
通过详细的流程讲解,读者应达到下面的目标。
·熟悉Quartus II原理图设计方法。
·熟悉SignalTap II在线调试方法。
·熟悉Intent Memory Content Editor在线修改片上ROM数据的方法。
5.10.2实例详解
本实例将使用图解的方式将整个流程一步一步展现给读者,使读者能够轻松掌握开发的流程。
5.10.2.1工程系统框图
本实例使用Quartus II自带的宏模块(MegaWizard Plug-in Manager)来设计逻辑功能,并使用嵌入式硬件逻辑分析仪观察结果。
正弦函数发生器的原理比较简单,硬件实现也比较简单:首先设计一个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”/“Create Symbol Files for Current File”选项。软件会自动分析div.v程序的语法错误,如图5.42所示。
图5.41分频器Verilog HDL文件
图5.42生成模块菜单
3.修改程序语法错误
如果出错则修改错误,直到没有错误为止。此时软件会自动生成div.bsf文件,此文件为原理图中的模块图形。
4.在原理图中加入分频器模块div.bsf
在原理图文件中单击“”按钮,就可以加入刚刚建立的模块,如图5.43所示。
图5.43在原理图中添加分频器模块
5.10.2.3添加Quartus II系统自带宏模块
ROM和计数器都可以通过Quartus II自带的宏模块生成。
1.建立ROM初始化文件
在菜单中选择新建文件,在“Other Files”中选择“Memory Initialization File”选项,如图5.44所示。
填入如图5.45所示的正弦波幅度数据。当然也可以用MATLAB、C++或Excel的函数生成数据。保存文件,命名sin.mif。
图5.44新建ROM初始化文件 图5.45输入正弦波幅度数据
2.添加自带宏模块
在“Tools”菜单中选择“MegaWizard Plug-Pn Manager”选项,出现如图5.46所示的对话框,选择新建宏模块单击“Next”按钮。
图5.46引用自带宏对话框
图5.47左侧是Quartus II自带的免费的宏模型,可以看到Quartus提供了很多免费的IP核。
其中ROM在storage目录中,计数器counter在arithmetic目录中。
3.添加ROM
在storage中选择ROM,并在右侧的选项栏中选择Cyclone系列芯片,output file类型选择Verilog HDL,并在下方选择ROM文件的生成地址及名称,如图5.48所示。
图5.47选择系统自带宏模块
图5.48选择ROM宏模块
单击“Next”按钮,设定ROM基本参数,包括ROM的位宽q、地址位宽(存储深度)和时钟。一般ROM的时钟选为单时钟控制Single clock,如图5.49所示。
单击“Next”按钮,设定ROM其他参数,设定输出寄存器、时钟使能端和异步清零。如果选中“'q' output port”,则会在输出端加一级寄存器,如图5.50所示。
单击“Next”按钮,接下来在对话框中填入ROM初始化文件,并选中“allow in-system memory”选项,并选择名称为“NONE”,如图5.51所示。
图5.49rom宏模块基本参数设置
图5.50设置ROM宏模块其他参数
图5.51设置ROM宏模块初始化文件
单击“Next”按钮,完成设置,向导生成的文件如图5.52所示。
图5.52设置ROM宏模块完成
4.添加计数器
引入计数器作为ROM的地址,当计数器地址递增时,相应的ROM的地址递增(正弦波的相位增加)。同样的在“MegaWizard Plug-In Manager”中选择arithmetic数学库中的“LPM COUNTER”宏模块,添加计数器,如图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的格式,如图5.57所示。
图5.57完成工程原理图输入
5.10.2.5编译工程
按照2.5节进行语法分析,指定FPGA设备,指定管脚,整体编译程序。在本实例中只需要对主时钟管脚进行分配,即pin_153。
5.10.2.6使用SignalTap II观察波形
1.建立SignalTap II文件
在菜单中选择“Tools”/“SignalTap II Logic Analyzer”选项,打开如图5.58所示界面。
图5.58新建SignalTap II文件
作如图5.59所示的设置。
图5.59SignalTap II文件设置
SignalTap II基本设置需注意以下问题。
(1)分频时钟作为采样信号,不要放到被观察的信号中。
(2)采样信号不宜用作主时钟,可以用作分频后的时钟,采样条件可用Center trigger position。
下载程序,就可以看仿真的波形了。
2.设置SignalTap II高级触发条件
在如图5-58所示的添加观察信号区域窗口中,将Trigger Levels选项改为Advanced,将Basic改为Advanced,则会弹出高级触发设置页面,如图5.60和图5.61所示。
图5.60打开SignalTap II文件高级触发设置
图5.61SignalTap II文件高级触发设置
本例中设置为当地址信号address=0时开始触发。从“node list”中拖入address信号,在“Object Library”/“Comparison Operator”中加入equality,最后加入“Input Objects”/“Bus Value”。得到如图5.62所示的触发条件。
图5.62SignalTap II高级触发设置结果
3.运行SignalTap II并观察波形
首先整体编译工程,在菜单栏中单击按钮,开始编译。之后使用JTAG模式将程序下载到FPGA中运行。打开SignalTap II文件,选择如图5.63所示的下载电缆。
在Instance Manager中单击按钮进行一次触发,将会得到如图5.64所示的波形。
图5.64观察采样数据数字显示波形
因为开发板硬件没有AD/DA功能,要想看模拟信号的输出也可以用逻辑分析仪来完成。在信号名(比如q信号)上单击右键,选择“Bus Display Format”/“Unsigned Line Chart”选项,如图5.65所示。
图5.65观察采样数据模拟显示波形 图5.66观察采样数据模拟显示波形结果图
此时,就可以显示如图5.66所示的模拟波形了。
5.10.2.7使用在线ROM编辑器
嵌入式存储数据编辑器是通过JTAG下载电缆来观看FPGA中ROM加载的数据的,不仅能观看,还能在线修改数据,无需重新编译与下载。
1.打开ROM编辑器
选择“Tools”/“In system Memory Content Editor”选项,打开如图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”,选择“Read Data from System Memory”选项,就可以得到ROM中的数据了,如图5.70所示。
图5.70读取ROM数据
5.修改ROM数据
通过编辑器,可以修改ROM中的数据。例如可以把数据中的几个数改成0,然后单击“write”,再回到逻辑分析仪中观察波形,就可以发现其中的变化,如图5.71所示。
图5.71修改后ROM数据显示
5.10.3小结
上述训练流程就是一个完整的Quartus II硬件调试流程。虽然此训练实现的功能比较简单,但对于初学者来说,是一个不错的入门训练。其主要目的是让初学者对的设计有一个初步的了解。通过该训练来熟悉Quartus II的高级调试技巧,为今后的学习打下基础。
页:
[1]