2.5.1  实例的内容及目标 
 
        1.实例的主要内容 
 
        本节旨在通过给定的工程实例——“蜂鸣器播放梁祝音乐”来熟悉Altera Quartus II软件的基本操作、设计、编译及仿真流程。同时使用基于Altera FPGA的开发板将该实例进行下载验证,完成工程设计的硬件实现,熟悉Altera FPGA开发板的使用及配置方式。 
          
        在本节中,将主要讲解下面一些知识点。 
         
-                 Quartus II工程创建及属性设置。        
 
 -                 Quartus II源文件设计输入方式。        
 
 -                 Quartus II约束设计。        
 
 -                 Quartus II工程编译。        
 
 -                 Quartus II功能仿真。        
 
 -                 Quartus II时序仿真。        
 
 -                 Quartus II硬件下载。
 
          通过这些知识点,按照下面提供的训练流程,读者可以迅速地掌握使用Quartus II软件进行FPGA开发的方法。 
          
        2.实例目标 
 
        通过详细的流程讲解,读者应达到下面的目标。 
         
-                 熟悉Quartus II软件的操作环境。        
 
 -                 熟悉Quartus II软件开发FPGA的基本流程。        
 
 -                 可独立使用Quartus II软件开发新工程。
 
            
        2.5.2  平台简介 
 
        本实例基于红色飓风II代Altera板,在此开发板上集成了Altera的Cyclone一代FPGA及相关的丰富外设资源。 
          
        此开发板更加详细的信息、扩展附件及使用方法,可以到红色飓风的官方网站:http://www.fpgadev.com获取更多的信息。 
        本实例将在这个开发板上对Altera的FPGA设计流程做一个全面的介绍,依照此例程的流程便可在该开发板上运行一个FPGA程序。如图2.29所示为此开发板的外观图。 
           
 
        图2.29  红色飓风II代Altera板外观图  
           
        2.5.3  实例详解 
 
        本节将使用图解的方式将整个流程一步一步展现给读者,使读者能够轻松掌握Quartus II的开发流程。 
          
        1.工程创建及属性设置 
 
        (1)启动Quartus II软件。 
        安装Quartus II软件后,在桌面或者程序组中启动Quartus II软件。 
          
        (2)打开新工程向导。 
        启动软件后,选择“File”菜单的“New Project Wizard”选项,打开新建工程向导,如图2.30所示。在新建工程向导的 “介绍”页面中,单击“Next”按钮进入下一页。 
          
        (3)设置工程属性。 
        如图2.31所示,在新建工程向导的第一页对工程工作目录、工程名称以及顶层模块名称进行设置。 
          
 
        图2.30  新建工程  
           
 
            图2.31  设置工程属性  
           
        (4)添加设计文件。 
        在新建工程向导的第二页选择为工程添加设计文件,如图2.32所示。 
           
 
        图2.32  添加设计文件  
           
        (5)选择FPGA器件。 
        在新建工程向导的第三页,为工程配置相应的器件型号和参数,如图2.33所示。选取的器件型号将在完全编译时将工程设计映射到对应的器件逻辑资源上。 
           
 
        图2.33  选择器件型号  
           
        (6)完成工程创建。 
        配置完器件属性后,选择Quartus II默认的综合工具、仿真工具及时序分析工具,完成工程的创建。 
        选择软件左侧的工程浏览器的
 
按钮来管理已添加的文件。如图2.34所示,左边为工程层次窗口,右边为设计文件窗口。 
           
 
        图2.34  工程结构窗口  
           
        2.设计输入 
 
        (1)添加设计文件。 
        如果在创建工程时没有为工程添加设计文件,可以选择“Project”菜单的“Add/Remove Files in Project”选项,为工程添加设计文件。在本实例中,读者可向工程添加实例代码中的liangzhu.v文件。 
          
        添加后,在工程浏览器中双击liangzhu.v图标,即可查看该Verilog设计文件,如图2.35所示。 
           
 
        图2.35  Verilog设计文件  
          
        (2)配置器件属性。 
        同样的,如果在创建工程时没有为工程配置器件型号及属性,可以在工程浏览器的工程实体图标上单击右键,选择“Device”选项,为工程配置器件属性,如图2.36所示。 
          
        若在建立工程时已经配置好,则可单击“Device & Pin Options…”按钮,进一步设置器件的相关属性,如图2.37所示。 
          
 
        图2.36  器件选择                           图2.37  器件属性配置  
           
        在如图2.38所示的对话框中,可对FPGA所使用的配置芯片及未用管脚等进行配置。 
           
 
        图2.38  指定配置模式  
           
        选择“Unused Pins”选项卡,将不使用的管脚配置为三态,如图2.39所示。 
           
 
        图2.39  未用管脚置三态  
           
        (3)分析工程。 
        编写设计输入文件后,首先要进行工程分析,目的是为了检查设计输入的语法。单击
 
“Start Analysis & Synthesis”按钮分析工程,如图2.40所示。 
          
 
        图2.40  分析工程选项  
           
        查看信息栏,修改所有出现的错误,直到分析通过,如图2.41所示。 
           
 
        图2.41  分析工程结果,没有报错  
           
        3.约束设计 
 
        (1)管脚分配。 
        管脚分配的作用在于将设计输入文件的端口与实际的器件进行映射,实现设计输入模块端口在实际器件管脚上的实例化。在Quartus II软件中可以在管脚分配主窗口中对管脚的分配进行设置,如图2.42所示。 
          
 
        图2.42  管脚分配  
           
        通过工具栏中的快捷按钮可以帮助用户快速的进行管脚分配,如图2.43所示。 
        通过管脚分配主窗口中的管脚信息可以看到管脚的I/O种类、管脚的序号、Bank所在的位置、I/O使用的电压标准等,如图2.44所示。 
          
 
        图2.43  指定管脚快捷按钮                         图2.44  管脚信息  
           
        (2)其他约束。 
        除了对工程的管脚进行约束外,Quartus II软件还允许用户对其他的一些约束进行设置,例如面积约束、速度约束、时钟约束、资源约束等。这些约束都属于较为严格的工程设置,在本实战训练中无需考虑。 
          
        4.编译工程 
 
        (1)完全编译。 
        有了完整的设计输入、完整的约束条件后,就可以对工程进行完全编译了,如图2.45所示是完全编译的选项。 
          
        根据工程复杂度的不同,Quartus II在进行完全编译时所消耗的时间差异也很大。在工程浏览器中显示了编译的类别及进度,帮助用户了解编译的进程。 
          
 
        图2.45  完全编译选项                          图2.46  编译状态  
           
        若在编译过程中出现错误提示,用户可在信息栏中查看错误的信息,修改所有存在的错误后重新进行编译,直到能够无错误地完成编译,如图2.47所示。 
          
 
        图2.47  编译结果信息栏  
           
        (2)编译报告。 
        Quartus II编译结束后,为用户提供了一个完整而详细的编译报告。通过该报告,用户可以查看工程使用资源的情况及系统可以达到的性能,如图2.48所示。 
          
        5.功能仿真 
 
        (1)建立仿真文件。 
        选择Quartus II软件“File”菜单的“New”选项,打开新建其他文件对话框,选择新建波形图文件,如图2.49所示。 
          
 
        图2.48  编译结果报告                            图2.49  新建波形图  
           
        (2)添加观察信号。 
        用户可以通过双击波形窗口中的空白区域为工程添加需要观察的信号,如图2.50所示。 
           
 
        图2.50  仿真波形窗口  
           
        在打开的插入节点或总线对话框中,打开“Node Finder…”(节点查找器),如图2.51所示。通过节点查找器,用户可以方便地选择需要观察的信号。 
          
 
        图2.51  插入节点或总线对话框  
          
        选择Filter:“Pins:all”,然后点击list列出所用输入/输出端口,如图2.52所示。 
          
 
        图2.52  节点查找器  
           
        选中所有信号,单击
 
按钮,即可将选中信号加入观察目标窗口中,如图2.53所示。 
           
 
        图2.53  已添加好的信号  
           
        (3)设置仿真时间最小间隔。 
        考虑到硬件环境提供的是50MHz的时钟,即时钟周期为20ns,设置“Grid Size”为20ns。选择“Edit”菜单的“Grid Size”选项进行设置,如图2.54所示。 
          
 
           
        (4)设置仿真时间长度。 
        选择“Edit”菜单的“End Time”选项,设置仿真时间长度为10ms,如图2.55所示。 
          
        (5)添加激励信号。 
        选中sys_clk信号,单击
 
时钟按钮,将该信号设置为时钟波形,周期为20ns,如图2.56所示。此信号代表了系统时钟。 
          
 
        图2.55  设置仿真结束时间                 图2.56  设置时钟  
           
        选中rst_n信号,单击
 
高电平按钮,将该信号设置为1。此信号代表了复位信号。 
        添加激励信号后,选择保存文件,此时的波形如图2.57所示。 
          
 
        图2.57  以设置好的输入波形  
           
        (6)生成功能仿真网表。 
        选择“Tools”菜单的“Simulator Tool”选项,打开仿真器,如图2.58所示。 
        将仿真器的仿真模式设置为“Functional”(功能仿真),如图2.59所示。 
          
 
        图2.58  仿真器选项                             图2.59  仿真对话框  
           
        单击“Generate Functional Simulation Netlist”按钮产生仿真网表。仿真网表是将工程设计文件进行编译及映射后生成的用于进行仿真的文件,仿真器根据仿真网表进行仿真,直接反应了工程设计文件的真实情况。 
          
        (7)开始功能仿真。 
        单击“Start”按钮开始进行功能仿真,如图2.60所示,可以看到仿真的进度,根据工程的复杂度,仿真过程所消耗的时间也有所不同。 
          
 
        图2.60  仿真进度  
           
        仿真完成后单击“open”按钮打开仿真结果,如图2.61所示。 
           
 
        图2.61  仿真波形结果  
           
        6.时序仿真 
 
        功能仿真后,如果波形没有问题,开始做时序仿真,检查波形延时对设计是否有影响。 
        选择“Tools”菜单的“Simulator Tool”选项,打开仿真器,选择仿真模式为“Timing”,即时序仿真模式,如图2.62所示。 
           
 
        图2.62  选择时序仿真  
           
        单击“Start”按钮,开始时序仿真。时序仿真比功能仿真要慢一些。 
        仿真完成后,查看仿真结果。通过波形可以看到产生了7.06ns的延时,如图2.63所示。 
           
 
        图2.63  查看仿真结果  
           
        可以看到,功能仿真并不包含延迟,而时序仿真则会根据具体的器件参数配置及资源使用情况将延迟仿真出来。功能仿真主要用于验证工程设计文件逻辑的正确性,而时序仿真更能体现真实的硬件运行过程中设计文件的执行过程。 
          
        7.下载程序 
 
        仿真验证结束后,用户就可以将工程下载到实际的开发板上进行验证了。 
        选择“Tools”菜单的“Programmer”选项,打开下载器界面,如图2.64所示。 
           
 
        图2.64  下载界面  
           
        首先单击“Hardware Setup”按钮,选择下载电缆,如ByteBlasterII(LPT1),即打印机接口下载线,然后选择下载模式为JTAG(在线调试)模式或者AS(固化至EPCS配置芯片)模式,并选择对应的下载文件。 
          
        连接好下载电缆后,选中“Program/Configure”即可下载。 
          
        8.结果检验 
 
        下载结束后,用户应该可以在开发板的蜂鸣器上听到演奏的梁祝乐曲。如果采用的是JTAG下载模式,那么将开发板断电后,重新上电,则乐曲不会再继续演奏;若使用的是AS下载模式,则乐曲还会再继续演奏。 
          
        若下载后没有听到乐曲,用户应检查几个主要容易出问题的步骤。例如,设计输入是否完整,管脚是否分配,下载电缆是否正确连接等。 
          
        2.5.4  小结 
 
        上述流程就是一个完整的FPGA设计流程。虽然此实例实现的功能比较简单,但对于初学者来说,是一个不错的入门实例。其主要目的是让初学者对FPGA的设计有一个初步的了解。通过该实例来熟悉Quartus II软件的使用,为今后的学习打下基础。 
          
        在实际的FPGA设计中,在每个阶段都会遇到很多问题。为了实现最终的目标,需要充分地利用Quartus II设计软件。这需要一个比较长时间的学习和积累,希望通过这个实例能让初学者更快地入门。 |