DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1870|回复: 0
打印 上一主题 下一主题

[待整理] FPGA设计开发软件Quartus II的使用技巧之: 典型实例-SignalTap II功能演示

[复制链接]
跳转到指定楼层
楼主
发表于 2015-4-27 16:40:12 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
                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.49  rom宏模块基本参数设置

       
               

       
                图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[N..0]的格式,如图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.59  SignalTap 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.61  SignalTap II文件高级触发设置

       
                 

                         本例中设置为当地址信号address=0时开始触发。从“node list”中拖入address信号,在“Object Library”/“Comparison Operator”中加入equality,最后加入“Input Objects”/“Bus Value”。得到如图5.62所示的触发条件。
       
               

       
                图5.62  SignalTap 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的高级调试技巧,为今后的学习打下基础。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-5-18 19:13 , 耗时 0.130327 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表