1
数字电子技术实验与课程设计指导
1.6.2.7.3 3)设计项目的仿真

5 现代数字逻辑系统的设计方法

EDA(Electronics Design Automation)技术是随着计算机与超大规模集成电路技术的成熟,借助于可编程逻辑器件(CPLD/FPGA,或ispPAC)应运而生的一门新技术。它实现了无需从电路板上拆除芯片,而改变芯片逻辑内容的在系统(ISP)技术。由此可以缩短电子系统研发时间,降低开发费用,简化生产流程,降低生产成本,并可在现场对系统进行逻辑重构和升级。同时由于硬件随时能够改变组态,实现了硬件设计软件化,革命性地改变了电子系统设计的传统概念和方法。

EDA技术具有完备的开发工具,可以完成电路的合成与仿真,并能自动实现电路的最佳化,提供弹性的设计方式,并允许多次对芯片进行清除与重新烧录。目前对电子线路(数字电路、模拟电路)都实现了可编程设计,开发人员完全可以根据自己的设计来定制芯片内部的电路功能,成为设计者自己的专用集成电路(ASIC,Application Specific IC),因此EDA技术正逐渐成为电子信息等相关专业的工程技术人员所必备的基本技能。

EDA技术使数字系统的分析、设计方法发生了根本的变化,它采用直接设计(对于简单的数字系统,将设计看成一个整体,将其设计成为一个单电路模块),自顶向下设计(对于一些功能复杂的数字逻辑系统,常采用将设计划分为不同的功能子块,每个子块完成不同的特定功能,先进行顶层模块设计,再进行模块详细设计,在子模块设计中可以调用库中已有的模块或设计过程中保存的实例,此方法为自顶向下的设计方法),自底向上设计(此方法与自顶向下的方法相反)。

基于EDA技术的数字逻辑系统设计流程一般分为: ①设计输入——可以有图形、文本、波形等不同输入形式,主要是所实现的数字系统的逻辑功能进行描述;②设计处理——主要进行设计编译、逻辑优化、适配等,生成编程文件;③设计校验——对设计的电路进行检查,验证是否满足设计要求;④器件下载——将适配后生成的数据文件,通过编程器对CPLD/FPGA器件进行下载,进行硬件调试与验证;⑤设计电路硬件调试—将已编程的器件与其他相关器件等连接,以验证可编程器件所实现的逻辑功能是否满足要求。

目前应用较为广泛的是基于可编程逻辑器件的EDA技术,它主要由一台计算机、一套EDA软件开发工具、一片或几片可编程芯片(CPLD/FPGA,或ispPAC)及实验开发系统组成。

EDA软件在EDA技术应用中占有重要的地位,它是利用计算机实现电路设计自动化的保证,现有很多种类,按其应用领域可分为电子电路设计工具、仿真工具、PCB设计软件、PLD设计工具等。

每个CPLD/FPGA生产厂家为了方便用户,往往提供集成开发环境,如: 由Altera 公司提供的Max+plusⅡ/Quartus Ⅱ、Lattic公司提供的ispEXPERT、由Xinlinx公司提供的Foundation,本书所用的EDA软件是Altera 公司提供的Max+plusⅡ/Quartus Ⅱ。

5.1 可编程逻辑器件简介

可编程逻辑器件PLD是大规模集成电路技术发展的产物,是一种半定制的集成电路,自20世纪70年代发展以来,特别是20世纪末,集成技术得到飞速发展,可编程逻辑器件才得以实现。

可编程逻辑器件常按集成度分: 500逻辑门以下的,称为简单PLD器件,如: PROM、PLA、PAL、GAL等。集成度较高的,称为复杂PLD,如目前大量使用的CPLD、FPGA器件。按结构分: 乘积项结构器件,基本结构“与—或”阵列器件,PLD、CPLD一般属于此类;查找表结构器件,简单查找表组成可编程门,再构成阵列形式,如: FPGA。按编程工艺分: 熔丝、反熔丝型器件,是只能编程一次的器件;EPROM、EEPROM: 可多次擦除(编程),前者为紫外光擦除,后者为电擦除;SRAM型: 查找表结构器件,多数FPGA采用此类编程方式,这种编程方法速度快,但是在掉电后,存放在SRAM器件中RAM的编程信息就丢失了;Flash型: 克服反熔丝一次编程的弱点,推出采用Flash工艺的FPGA,可以实现多次编程。

目前,常用CPLD/FPGA器件产品系列主要由Lattice、Xilinx、Altera公司生产。Lattice公司的CPLD产品主要有: ispLSI系列器件;Xilinx公司以CoolRunner、XC9500系列为代表的CPLD,以XC4000、Spartan、Virtex系列为代表的FPGA器件;Altera生产的Classic、MAX、FLEX、APEX、ACEX、APEXⅡ、CycloneⅡ、StratixⅡ等系列。

由于Altera公司的产品性价比高、集成度高,且提供功能全面的开发工具和宏功能库,本书附录中介绍的实验开发系统是采用Altera公司芯片构成的EDA实验开发系统。本章希望通过EDA开发工具Max+plusⅡ的及Quartus Ⅱ的介绍,使大家掌握这一新型的数字逻辑系统设计的技术。

5.2 CPLD/FPGA开发环境之一——Max+plusⅡ

5.2.1 Max+plusⅡ概述

Max+plusⅡ是Altera公司提供的CPLD/FPGA开发集成环境,界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。

Max+plusⅡ开发系统的特点如下:

(1)开放的界面

Max+plusⅡ支持与Cadence、Exemplarlogic、Mentor Graphics、Synplicty、Viewlogic和其他公司所提供的EDA工具接口。

(2)与结构无关

Max+plusⅡ系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000、ACX1K和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。

(3)完全集成化

Max+plusⅡ的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。

(4)丰富的设计库

Max+plusⅡ提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)模块。

(5)模块化工具

设计人员可以从各种设计输入、处理和校验选项中进行选择从而使设计环境用户化。

(6)硬件描述语言(HDL)

Max+plusⅡ软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。

(7)Opencore特征

Max+plusⅡ软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。

5.2.2 Max+plusⅡ 的安装、设置

Max+plusⅡ 的安装简单方便,只要在安装向导的指引下,依次执行操作,就可完成。

一般只要执行安装光盘中的“setup.exe”文件,即可出现安装界面。接着在安装向导(见图5.2.1)的指引下,出现Altera公司与用户的协议、用户名称、安装类型等界面,只要按照向导要求执行即可。

图5.2.1 安装向导

用户可在安装路径选择界面(见图5.2.2),通过单击“Browse”按钮来选择希望的软件安装位置,本书选择路径为C∶\maxplus2 ,名称为“Max+plusⅡ 10.0 Baseline”,如图5.2.3所示。

图5.2.2 安装路径选择

图5.2.3 选择安装程序名

5.2.3 Max+plusⅡ的License设置

特别指出的是:Max+plusⅡ安装完成以后,在第一次运行之前需要设置“License”,否则软件无法使用。为了获取“License.dat”文件,可在安装光盘中将“License.dat”文件拷贝至“Maxplus2”或“Max2work”文件夹中,如果没有“License.dat”文件,可上网申请一个学生版的“License.dat”文件。

图5.2.4 License Setup

第一次运行Max+plusⅡ,会出现授权码提示(License Agreement)窗口,只要在该窗口中单击“Yes”,即可进入Max+plusⅡ的管理窗口,此时从“Option”菜单中选择“License Setup”(见图5.2.4),进入“License”设置窗口。在“License”设置窗口中,单击“Browse”按钮,选择“License.dat”文件,“License”设置完成以后,就可运行Max+plusⅡ。

5.2.4 Max+plusⅡ的设计流程

Max+plus Ⅱ 10.0设计数字电路、数字系统的主要流程分为四个组成部分,如图 5.2.5所示。

图5.2.5 Max+plus Ⅱ 10.0设计流程图

1)设计输入

Max+plus Ⅱ提供图形编辑器和文本编辑器,因此用户可实现用图形输入方式(.gdf文件)、硬件描述语言(VHDL:Verilog HDL;AHDL:the Altera Hardware Description Language)文本输入、波形输入等多种设计输入方法,也可输入网表文件。

2)项目编译

Max+plus Ⅱ提供了一个完全集成的编译器(Compiler),在编译前可对时序、功能两种仿真进行选择。在进行时序模拟时,在编译过程中生成一系列标准文件,集成编译器可提供网络表提取器、数据库编码、逻辑综合、适配、定时时间提取、汇编等功能;可提供网络表提取器、数据库编码、功能提取器等功能。编译器在编译的过程中,会因错误停止编译,并提供产生错误的原因及错误所在的位置等信息。图 5.2.6为Max+plus Ⅱ 10.0 编译器编译窗口,编译过程的各个环节将在后面的有关章节中详细讲述。

图5.2.6 编译主控界面

3)项目校验

完成对设计电路的逻辑功能、时序功能仿真,时序仿真是在考虑了设计项目的具体适配器的各种延迟时间的情况下以检验设计项目是否正确,时序仿真对设计项目的逻辑功能、器件内部的时序关系均进行了测试,可以保证器件在设定的外部条件下正常工作。该软件还提供了定时分析器,用来分析器件的引脚及内部节点间的传输路径延时、最高工作频率、最小时钟周期、器件内部各种寄存器的建立/保持时间,定时分析模拟器还可生成一些为其他EDA工具使用的标准文件。

4)器件编程

通过计算机的接口,将所设计的电路下载/配置到选择的器件中去,实现对芯片的编程、配置,即为在系统对芯片的逻辑重构。

5.2.5 图形输入法的设计过程

本节首先通过设计数字电路常见的计数器这一实例,介绍应用Max+plus 10.0的 图形输入法设计数字电路的使用方法及注意事项。

在Max+plus Ⅱ 10.0中,用户每进行一个独立设计,在进入设计前,必须设置一个项目与设计对应。所谓项目是一个用户存放设计文件的文件夹,有时也称为用户库,项目(用户库)的名称一般用英文命名,一个项目可包含一个或多个设计文件,但只有其中一个是顶层文件,顶层文件名、项目名必须相同,注意:编译器是只对项目中的顶层文件进行编译(初次使用该软件,一定要清楚在打开的多个文件中,只有一个文件是顶层文件,至于顶层文件的切换,今后在编译环节操作中详细解释)。项目还管理所有中间文件,所有项目的中间文件后缀名(扩展名)不同,文件名相同。一般来说,每个新的项目放置在所建立的一个单独子目录中。

本例用74161芯片,采用清零法设计一个模为12的计数器。该设计使用图形输入方法,因此项目仅含一个设计文件,设计项目(本例即为文件)放置在目录“D:\mywork”下。

1)项目建立

(1)启动 Max+plus Ⅱ 10.0

从“开始”菜单“程序”中的“Max+plus Ⅱ 10.0 Baseline”组件中的“Max+plus Ⅱ 10.0 Baseline”单击“Max+plus Ⅱ 10.0”项,或已建快捷方式,双击图标,进入Max+plusⅡ的管理窗口,在File菜单中选择 Project的Name项,出现的界面如图5.2.7所示。

图5.2.7 File菜单中的对话框

(2)输入项目名称

单击图5.2.7中的“Name”,出现如图5.2.8所示对话框。

图5.2.8中的“Directories”区显示已经为项目所建的目录,在“Project Name”区输入项目名,此处为“cntm12”。

(3)在图5.2.8中选择“OK”确定。

图5.2.8 指定项目文件对话框

2)图形输入

(1)建立图形输入文件:选择File菜单下 “New…”子菜单或单击按钮,出现新建文件对话框,如图5.2.9所示。

图5.2.9 新建文件对话框

(2)在图5.2.9中选择“Graphic Editor file”后,单击“OK”键后,出现图形编辑窗口如图5.2.10所示,即可开始建立图形输入文件。图5.2.10的图形编辑器窗口,主要由以下几部分组成:

第一行:当前正在设计的项目名及所在的目录;

第二行:图形编辑窗口的菜单;

第三行:图形编辑窗口的基本操作工具栏;

窗口的第一列:绘图专用操作工具栏。

图5.2.10 图形编辑器窗口

3)编辑电路原理图

(1)调入一个元件

如输入一个74161芯片:在图5.2.10图形编辑区双击鼠标左键或单击鼠标右键,可打开“Enter symbol”对话框,如图5.2.11所示。在该对话框可直接键入元件名,调出元件。也可以选择元件库,然后选择元件,因此需先找到元件所在的目录。Max+plus Ⅱ 10.0的元件按库方式存在库文件中,该软件为用户提供了实现不同逻辑功能的库文件,每个库对应一个目录。表5.2.1中列出了相应库的具体功能、大小及特点。

若用户使用的元件在库文件中找不到,用户可自行设计一些自建元件,放在用户库中,用户库名可自定,其具体的设计方法将在后面的层次化设计中详细叙述。

表5.2.1 Max+plus 10.0的器件库

因为现在所选择的元件 74161位于宏功能库,所以在图 5.2.11中的库选择区双击目录“c:\maxplus2\maxlib\mf”,此时在元件列表区列出了该库中所有器件,找到74161,单击该元件。此时74161出现在元件符号名输入区,如图5.2.12所示。

图5.2.11 元件输入对话框

图5.2.12 选中74161

在图5.2.12中单击“OK”键,关闭元件输入对话框,此时在图形编辑器窗口中出现了74161,如图5.2.13所示。此时可以任意拖动元件,放置好后,单击鼠标左键固定元件。

图5.2.13 已调入了74161的图形编辑窗口

(2)保存文件

从File菜单下选择“Save”,出现文件保存对话框,单击“OK”,使用默认的文件名存盘。此处默认的文件名为“ cntm12.gdf”,即项目名“ cntm12”加上图形文件的扩展名“.gdf”,也可单击按钮,进行存盘。

(3)输入其他元件

①输入一个三输入与非门。采用同步置零法,使 74161在“1011”时置零实现模为 12的计数器。故需调用一个三输入与非门,三输入与非门位于库“prim”中,名称为“nand3”(n代表输出反向,and代表与门,3代表输入端的个数,所以“nand3”为一个三输入与非门。同样“or6”代表一个6输入或门;xor代表异或门;当然元件库中含有:21mux二选一多路选择器)。可按照上述步骤输入“nand3”,此时图形编辑区出现了一个三输入与非门。

②输入接地极。同样可输入代表低电平的接地极“gnd”(位于库prim中),也可在图形编辑区双击鼠标左键后,在符号输入对话框中直接输入“gnd”,单击“OK”即可。需要注意的是,在一个数字电路中,必须输入代表低电平的接地极“gnd”。如需要固定的正负电平,也可输入一个确定的电平。

③了解元件的功能。若需了解调入元件的逻辑功能,即阅读元件的功能表,只要使用在线帮助,点击工具栏中的键,移至需要分析的元件,此时元件的功能表就会出现在屏幕上。

在输入“74161”、“nand3”、“gnd”三个符号后,可得图5.2.14。

图5.2.14 在图形编辑窗口中输入三元件图

(4)连线

如果需要连接元件的两个端钮,则将鼠标移到其中的一个端钮上,这时鼠标指示符会自动变为“+”形,然后进行下列步骤:

①按住鼠标左键并拖动鼠标至第二个端钮(或其他需连接的地方);

②松开鼠标左键后,则可画好一条连线;

③若想删除一条连线,只需用鼠标左键点中该线,被点中的线会变为高亮线(变为红色),此时按Delete键即可删除。

④按图5.2.15连好线,并存盘。

(5)添加输入输出引脚

为了今后的仿真,在图5.2.15中,需要将信号输入使能、时钟、清零三个端钮,同时将计数器的计数结果信号输出,所以在连线图上需添加输入、输出引脚。“input” 为输入引脚的符号名, “output” 为输出引脚的符号名,按照前面输入元件 74161的方法,添加输入、输出引脚,如图5.2.16所示。“ input”和“output”皆位于库“prim”下,引脚的方向代表了信息流的方向,不可将输入、输出引脚用错。

图5.2.15 cntm12 连线图

图5.2.16 添加了输入、输出引脚的接线图

在本例中,三个输入引脚将分别被命名为en、clk、clear,分别作为计数使能,清零,时钟输入。五个输出引脚分别被命名为q0、q1、q2、q3、cout,分别作为计数器计数输出、进位输出。引脚名不一定要与库元件的端钮名相同。

双击其中一个输入引脚的“PIN_NAME”,输入“en”,就命名了输入引脚“en”。按同样方法命名其他输入/输出引脚。

命完名后将这些引脚同对应好的元件端口连接好,可得图 5.2.17。图中的复位信号指的是计数器计满回零的信号,即此处LDN是低电平有效,为用发光二极管显示,加一非门。

在绘图过程中,可利用绘图工具条实现元件拖动、交叉线连接、断开功能。绘图工具条将在图5.2.18中加以说明。

在完成图5.2.17绘制后,为验证项目设计的正确性,一般要进行项目编译。

图5.2.17 cntm12的计数器电路图

图5.2.18 绘图工具条说明

5.2.6 项目编译

完成电路原理图输入后,可开始对用户的设计进行编译。在“ Max+plus Ⅱ 10.0”图形编辑器窗口的菜单中选择“Compiler”,即可打开编译器,选择“Start”就可开始编译。或在“Max+plus Ⅱ 10.0”管理窗口选择“File/Project/Save & Check”,或单击按钮将编辑的文件存盘并运行集成编译器的网表提取器模块检查文件的错误。如果设计项目有错误,编译器将自动停止编译,并在编译器窗口下的信息框中输出错误信息,双击错误信息条,一般可指出错误之处,如图5.2.19所示,此时需要返回编辑区修改,直至完全正确。编译成功后可生成时序模拟文件及器件编程文件。

图5.2.19 编译检查文件

Max+plusⅡ提供的集成编译器由多个模块组成,当编译器运行时,每运行到一个功能模块,下面的指示线变成红色。编译器完成网络表提取、数据库编码、逻辑综合、分割、适配、定时时间提取、汇编等功能。各模块的功能简述如下:

● Compiler Netlist Extractor(编译器网表提取器):该部分完成后生成项目设计的网表文件,若设计的图形连接有错误(如两个输出端钮直接短接等),该过程会指出此类错误。

● Database Builder(数据库建库器):建立相应的数据库。

● Logic Synthesizer(逻辑综合器):对项目设计进行逻辑综合,即选择适当的逻辑化简算法,去除冗余逻辑或无用的逻辑,确保对某种特定的器件结构尽可能有效地使用器件的逻辑资源,用户可通过修改逻辑综合的一些选项,来指导逻辑综合。

● Fitter(适配器):通过一定的算法(或试探法)对项目设计进行布局布线,将通过逻辑综合后的设计用最恰当的一个或多个器件来实现。

● Partitioner(分配器):该功能是直接将项目设计直接分配在多个器件中实现,需要指出的是:学生版的Max+plus Ⅱ 10.0不支持该功能,需要用该功能必须使用专业版的Max+plus Ⅱ 10.0。

● Timing SNF Extractor(时序模拟器/网表文件生成器):它可生成用于时序模拟(项目校验)的标准时延文件。若需进行功能模拟,可在菜单“Processing”中选择“Functional SNF Extractor(功能模拟器)”项,此时编译器仅由三项构成:Compiler Netlist Extractor;Database Builder; Functional SNF Extractor。

● Assembler(适配器/编译器):该适配器与Fitter(适配器)不同,其功能是生成用于器件下裁/配置的文件,是对器件进行逻辑重构的编程器。由于Altera公司的Max+plus 10.0支持的器件种类较多,如:EPF10K、EPF10K10A、MAX7000系列、MAX5000系列、EPM9320、EPF8452A、ClassicTM等系列。由于芯片系列的不同,其内部结构一般分为CPLD结构、FPGA两种结构,对于不同结构器件的下载分别称为下载或适配。

注意:在Assembler(适配器/编译器)自动为用户的设计选择目标器件并进行管脚锁定;但在实际使用中,用户需要根据情况自行选定器件,在下面的器件选定与编程章节中,将详细介绍如何由用户进行目标器件选择和管脚锁定。

5.2.7 项目校验

Max+plusⅡ提供的仿真功能为电路设计带来了革命性的变化,以往设计电路须经多次硬件调试才能定型。调试过程要多次修改电路板,非常繁琐。应用Max+plusⅡ的仿真工具后,可在计算机上对设计的逻辑电路进行仿真,若仿真结果不满意,就可修改电路,然后再仿真、模拟,直至满意。

需要强调的是,设计编译成功以后,只能保证为项目创建一个编译文件,表明设计输入的基本正确性,而不能保证该项目的逻辑关系的正确性,因此作为项目验证的一种手段,仿真是十分必要的。

仿真有时序、功能两种。功能仿真是在不考虑器件的延时理想情况下的一种项目校验法,通过功能仿真来验证项目的逻辑功能是否正确;时序仿真是在考虑设计项目具体适配器的各种延时的情况下的一种项目校验法。时序仿真不仅测试逻辑功能,而且测试目标器件最差情况下的时间关系,若通过时序仿真,电路设计基本能达到设计要求。

1)建立仿真通道文件

从File菜单中选择“New”打开新建文件类型对话框,如图5.2.8所示,选择“Waveform Editor File (波形文件编辑器)(.scf)项后选择“OK”(与图形输入文件相同,波形文件的后缀为scf。一个项目的不同文件,文件名相同,文件后缀不同),则出现如图5.2.20所示的波形文件编辑窗口。

需要指出的是,使用Max+plusⅡ波形编辑器进行输入时,用户可创建以“.wdf”为扩展名的文件,该“.wdf”文件使用输入逻辑量的逻辑电平波形进行项目设计,而不是仿真通道文件“.scf”。

2)仿真通道文件的编辑

(1)输入节点:在图5.2.20波形编辑器窗口的Name下空白处单击鼠标右键,出现浮动菜单,如图5.2.21所示:

图5.2.20 波形文件编辑器窗口

图5.2.21 浮动菜单

在图5.2.21显示的浮动菜单中选择“Cut”、“Copy”、“Paste”进行剪切、复制、粘贴等基本编辑操作,若选择“Insert Node...”(输入观测节点),或选择“ Enter Nodes from SNF…”可打开如图5.2.22所示的对话框,“Enter Nodes from SNF”(从 SNF文件输入观测节点)对话框”。这些观测节点均已经用输入、输出引脚表示。

在图 5.2.22中的“Type”(类型)区选择“ Inputs”和“ Outputs”,默认情况下已选中(其他类型是:“Registered”(寄存器);“Group”(组:一般是总线))。单击“List”(列表)按钮,可在“Availiable Nodes&Groups” (可用于观测的观测节点和观测节点组)区看到用户在设计中已定义的输入/输出信号,如图5.2.23所示,这些信号为蓝色高亮,表示被选中。单击按钮条可将这些信号拷贝到“ Selected Nodes& Groups”(选择的观测节点和观测节点组)区,表示所选择的节点已进入波形编辑器中,所有没选择的输入节点的波形都默认为逻辑低电平,而所有输出节点都默认为定义(X)逻辑电平。

此后单击“ OK”按钮,关闭图5.2.22的对话框。此时图5.2.20波形编辑器窗口变为图5.2.24所示的窗口。

(2)将仿真通道文件存盘:在Flie菜单中选择“Save”命令,将此波形文件保存为默认名:“ctnm12.scf”。

图5.2.22 从SNF文件输入节点对话框

(3)添加节点或组:在图5.2.24的Name域中双击已存在的节点下的空白,出现“Insert Node”对话框,输入节点名和初始值,选择“OK”按钮,新增加的节点就在所选的空白处。

(4)删除节点或组:单击要被删除节点图标,按<Delete>键,即可删除节点或向量组。

(5)波形编辑器中的节点顺序:节点和组是任意排序的,可以按住鼠标拖动,出现一条随光标移动的虚线,移到合适位置放开鼠标左键将节点与组重新排序。

图5.2.23 输入节点对话框

(6)编辑输入节点信号波形:在输入节点以后,得到如图5.2.24所示的波形编辑窗口。在该窗口中,还需对输入节点信号波形进行编辑。

图5.2.24 已建立好波形文件中的输入输出节点

在编辑输入信号波形之前,先了解一下与此操作相关的菜单选项及工具条。

在波形编辑窗口(见图5.2.25),在“Options”(选择)菜单下,可点击“Snap to Grid”子菜单,以左边是否打钩,表示选择该子菜单与否。此时的画线对齐网格、显示网格均指在波形编辑窗口中显示网格与对齐网格(图5.2.26)。图5.2.27所示为绘制波形图用的工具条。其步骤为:

图5.2.25 绘图网格设置菜单条

图5.2.26 网格大小设置对话框

图5.2.27 波形图绘制用工具条说明

①设定时间轴长度:可从File菜单命令下选择“End Time…”来设置模拟时间的长短。在默认情况下,模拟时间为1μs。必须指出的是,设置的模拟时间与网格设置大小要匹配,网格所表示的时间必须小于模拟时间。

②对本例设计的输入信号进行波形编辑。

a. 为信号“en”从0ns到 1000ns赋值高电平“1”。

选中信号“en”,用鼠标左键单击“Name”区的“en”,可看到“en” 信号全部变为黑色,表示信号“en”被选中;

用鼠标左键单击即可将“en”赋值高电平“1”。

b. 为信号“c1ear ”赋值:从0ns到1000ns赋值高电平“1”。

为观察其清零的作用,可在原“clear”信号已赋值的前提下,改变60~75ns之间的赋值,即在60~75ns之间将其赋“0”(因为该芯片低电平有效)将鼠标移到“clear”信号的60ns处按下鼠标左键并向右拖动鼠标至75ns处,松开鼠标左键。可看到这段区域呈黑色,被选中,用鼠标左键单击工具条中即可,此时“clear”信号在60~70ns之间为“0”,其余均为“1”,在“clear”为“0”电平时起清“0”(复位)作用。

c. 为时钟信号“clk”赋周期为10ns的时钟信号。

选中信号“clk”,设置信号周期:鼠标左键单击工具条中可打开图5.2.28所示的对话框,单击“OK”关闭此对话框即可生成所需时钟。改变“Mltiplied”(乘数),可改变时钟周期。图5.2.28中,“Starting Value”为时钟周期的始点,“Clock period”为时钟周期,“Interval”为项目校验的时钟时间始点,“To”为项目校验的时钟时间结束点。

图5.2.28 时钟周期设置对话框

若不使用图形工具按钮编辑波形,也可使用菜单命令“Edit/Overwrite”,或在待编辑处右击鼠标,在菜单中选择“Overwrite”命令来编辑波形。

(7)保存已编辑的输入信号波形的文件:选择File菜单中“Save”存盘,将编辑好的输入信号波形文件保存。到此完成输入信号的波形编辑,如图5.2.29所示,为后面的时序模拟仿真做好准备。此时单击编辑窗口的关闭按钮,以关闭编辑窗口文件,否则在运行仿真器时可以看到输出波形更新过程,但这会使仿真速度变慢。

图5.2.29 编辑好的输入信号波形图

3)设计项目的仿真

通过对所设计项目的仿真,可以从计算机上得到设计的结果,使设计者对设计项目进行全面的检查,以保证在各种可能的条件下都有正确的响应。设计项目仿真具体步骤如下:

(1)打开模拟仿真器

从 “Max+plus Ⅱ 10.0” 菜单中选择“Simulator”或单击按钮,即可打开模拟仿真器(如图5.2.30(a)),并自动装载当前项目cntm12的仿真网表文件和已创建的与项目同名的仿真通道文件cntm12.scf。

(2)设置模拟仿真时间

①在图5.2.30(a)中的“Start Time”输入开始时间,此时间应在cntm12.scf文件的时间轴范围内,若超出此范围则认为“0”。

②在图5.2.30(a)中的“End Time”输入结束时间,此时间应在cntm12.scf文件的时间轴范围内,并应大于开始时间,否则出错。

(3)创建输出文件

模拟仿真时可指定输入相应的原文件及输出文件(历史文件.hst和日志文件.log)。历史文件记录仿真过程使用的所有命令、选项、按钮,同时记录所有命令的输出和产生的信息;日志文件则记录除命令外的其他信息。只要在打开模拟仿真窗口中,选择命令“File/Input/Output”,就可出现“Input/Output”的对话框,仿真输入文件 自动出现在“Vector Files”栏的“Input”域中,与项目相同的文件名的cntm12.hst和cntm12.log将自动出现在History (.hst)和Log (.log)框中,选择“OK”,设置完毕。

(4)设置建立和保持时间的监控项

选择仿真器窗口中的“Setup/Hold”,即可监控仿真过程中是否有建立时间与保持时间的错误发生。

(5)时序模拟运行

单击图5.2.30(a)中“ Start” 按钮,运行模拟仿真器,即可开始时序模拟。

在仿真过程中,红色的进度指示条将向100%的方向移动,仿真时间域自动更新,输出逻辑电平将记录到cntm12.scf中。仿真过程在后台进行,在仿真较大的、较复杂的项目时,可以切换到其他应用程序。

仿真过程中,可依据要求单击“Pause”暂停仿真,或单击“Stop”终止仿真。

4)仿真结果分析

(1)分析仿真通道文件

在模拟仿真完毕后,单击 图5.2.30(a)窗口中的“ Open Scf”(打开模拟文件)按钮,可打开当前项目的cntm12.scf,此时窗口中就有了模拟仿真结果,图5.2.30(b)即为图5.2.29所示的模拟结果,使用图形编辑窗口周围的工具按钮,进行图形放大、缩小,可对输出波形进行整体、局部观察,检查cntm12项目中,输入、输出关系是否正确。从模拟结果中可见,计数器每经过12个脉冲,输出一个进位脉冲,输出波形是正确的,表示计数器的设计是正确的。

(a)模拟仿真器

(b)模拟仿真结果波形
图5.2.30 模拟仿真器及模拟仿真结果波形

需要指出的是,移动参考线可观察所在位置的逻辑关系,逻辑状态显示在“Value”域,在功能仿真时,逻辑状态是一一对应的,而在时序仿真时,输入、输出之间的状态是有延时的。

为方便观测,可将计数输出中的q3、q2、ql、q0作为一个组来观测。具体步骤为:

①将鼠标移到“Name”区的q3上,按下鼠标左键并往下拖动鼠标至q0处,松开鼠标左键,可选中q3、q2、ql、q0四个信号。

②在选中区(黑色)上单击鼠标右键,打开一个浮动菜单,选择“Enter Group”(输入组)选项,出现图5.2.31所示的对话框。

图5.2.31 设置组的对话框

③选择“ OK”按钮,关闭此对话框,可得到以组输出形式的时序模拟结果(如图5.2.32所示),现在观测、检查就比较容易了。

(2)阅读历史文件

选择菜单命令“File/Open”或“File/Retrieve”,出现“Open”或“Retrieve”对话框,在下拉列表框中选择扩展名为.hst、.log的文件与阅读即可。

如果仿真结果不正确,可修改项目设计。重新编辑仿真器通道文件.scf,直至得到期望的仿真结果。在给设计项目编程以前,应全面测试功能,进行设计项目仿真。

图5.2.32 以组方式显示模拟结果

5.2.8 器件编程

在较为简单的电路模拟仿真通过以后,就可进行器件编程。 “Max+plus Ⅱ 10.0”在对设计项目编译时,可由编译器自动为用户的设计项目选择目标器件并进行管脚锁定;但用户也可自行选择目标器件、进行管脚锁定,下面将详细说明如何由用户选择目标器件和进行管脚锁定。

1)选择器件

Max+plusⅡ支持Altera公司的多种器件,现采用的目标器件为 ACEX1K系列中的EP1K100QC208-3,器件选择步骤如下:

(1)从图形输入编辑窗口的菜单“Assign”下选择“Device”项,可打开图5.2.33所示的器件选择对话框;

图5.2.33 器件选择对话框

(2)单击“Device Family”(器件系列)区的下拉按钮,可进行器件系列选择,选择ACEX1K系列 ;

(3)在选择器件系列后,在具体器件型号列表区双击所要选择的 EP1K100QC208-3,可得到图5.2.34(a)或图5.2.34(b);

(4)单击“OK”按钮,关闭对话框即完成器件选择,下面可进行管脚锁定。

2)管脚锁定

在确定目标器件后,需要将输入/输出信号安排在选定器件的指定管脚上。操作步骤如下:

(1)在图形编辑窗口中,选择“Max+plus Ⅱ 10.0”菜单下 “Floorplan Editor”(平面布置图编辑器)窗口,平面布置图编辑器提供两种显示方式,其一为如图5.2.34(a)所示的逻辑阵列块(LAB)视图,逻辑阵列块视图能够显示器件内部的逻辑阵列块结构,有些封装形式还能够显示引脚的位置。其二为器件视图,如图5.2.30(b)所示,在图5.2.34(a)所示的窗口中可通过在菜单“Layout”(安排)中选择Device View”(器件视图),得到视图区显示器件视图,该图能够明显地看到管脚的位置、功能及锁定情况;单击工具条中的视图可显示器件当前的管脚分配/逻辑分配情况。如此操作以后,可得到图5.2.34(b)所示的窗口。在“Chip Name”栏(项目名“芯片名”)下方用颜色表示管脚的锁定情况,白色表示未锁定,有色表示锁定;在“Unassigned Nodes”(未锁定的节点)栏显示设计项目中未锁定的输入、输出节点。

(a)以逻辑单元显示的器件视图

(b)平面布置图编辑窗口

图5.2.34 以逻辑单元显示的器件视图及平面布置图编辑窗口

(2)将 clk信号锁定在芯片 EP1K100QC208-3的79号脚上,可先将鼠标移到节点显示区的“clk”左边上,按住鼠标左键,可看到鼠标显示符下有一个灰色的矩形框,此时继续按着鼠标左键,拖动鼠标至视图区中79号管脚的空白矩形处(见图5.2.35),松开左键即可完成信号clk的人工管脚锁定。

图5.2.35 CIK信号锁定

按上述方法可分别将其他信号锁定器件管脚。因本书采用的实验开发系统,目标器件与实验开发系统有一些固定连接,可以让用户使用系统自带的一些硬件资源,且这些连接不可用软件断开,所以在锁定管脚时,用户应参见本书附表器件管脚分配图,需要注意管脚的输入、输出定义,不可用错。

若用户不在指定的实验开发系统上进行器件下载,则管脚不一定按附表分配。若进行多器件配置时,可通过JTAG在系统编程,在此不多赘述。

完成上述各管脚锁定以后,再一次进行编译(这一步一定不能遗漏),使管脚锁定生效。此时回到原来的项目设计文件“cntm12.gdf”,可观察到该文件的输入输出信号旁都标有其对应的管脚号(一般用有色字符标出),如图5.2.36所示。

图5.2.36 锁定后的计数器

图5.2.37 管脚锁定对话框

(3)管脚锁定也可从菜单“Assign”下打开“Pin/location/chip”(芯片管脚布置)编辑器,得到图5.2.37所示的对话框,具体操作步骤为:

①在“node name”(节点名)区,填上信号名,如“clk”。

②在“pin”(管脚名)区,填上管脚号,如“1”。

③在“pin type”(管脚类型)区选择信号输入/输出类型,对于信号“clk”选择“input”类型,因为“clk”是输入信号。

④此时,按钮“Add”变亮(表示有效),单击之,可将信号“clk”锁定在 1号管脚上。

⑤重复上述步骤,可将所有信号锁定好。

(4)如果想删除或改变一个锁定,可在图5.2.37 中“Existing Pin/location/chip Assignments”(现存的芯片管脚分配)区选中需要删除或改变锁定的信号,利用“Delete”和“Change”按钮可对该信号的锁定进行删除或更改。

用此法锁定管脚以后,仍需重新编译使管脚锁定有效。在编译结束后,可再重新进行各项校验,如时序模拟仿真等。若模拟仿真正确,可进行器件编程/配置。

5.2.9 器件编程/配置

在通过项目编译后可生成文件“.sof”(下载文件)用于器件编程/配置。在Altera器件中,有两类不同结构的器件。一类为CPLD结构,编程信息以EEPROM方式保存,此类结构的芯片为MAX系列,故对这类器件的下载称为编程;另一类结构类似于FPGA,其逻辑块LE及内部互连,信息都是通过芯片内部的存储器单元阵列完成的,这些存储器单元阵列可由配置程序装入,存储器单元阵列采用SRAM方式,对这类器件的下载称配置。由于配置信息采用SRAM方式保存,所以系统掉电后,配置信息会丢失,需每次系统上电后重新配置。在介绍的实验系统中,采用ACX1K系列,因此对该芯片需进行配置,具体步骤为:

1)设置硬件编程/配置

(1)将下载电缆一端插入LPTI(并行口,打印机口),现在有些是通过USB口,另一端插入实验箱的系统板,打开系统板电源。

(2)若第一次运行编程器,必须从“Options”菜单下选择“Hardware setup”(启动硬件)对话框,如图5.2.38所示。

图5.2.38 下载时硬件设置对话框

2)创建编程器日志文件

编程器日志文件把所有的编程操作和信息记录下来,具体步骤为:

(1)从“Max+plus Ⅱ”菜单下选择“Programmer”(编程),或单击“”按钮可打开编程器对话框,如图5.2.39所示。

图5.2.39 器件编程对话框

(2)选择菜单“File/Input/Output”,出现“Input/Output”对话框。按<F1>键,进入“Input/Output Command”,可获得相应的帮助信息。

3)器件配置

在图5.2.29中,按下“Configure”键即可完成下载。若下载提示下载不成功信息,可按上述步骤检查设置是否正确,并检查计算机与实验开发系统的硬件连接,排除故障,再次下载。

5.2.10 单元练习

(1)使用74160或74161设计一个模为 9的计数器,锁定管脚到数码管上显示计数结果。

(2)用两片74160设计一个模为60,输出用8421BCD码显示的计数器。

5.3 常用工具介绍

1)工具条简介

“Max+plus Ⅱ”软件为不同的操作阶段提供了不同的工具条,它可方便软件的使用,使用户当前可以完成的操作一目了然。“Max+plus Ⅱ”的工具条中关于文件操作等的工具条与Windows操作系统下的标准一样。当把鼠标移动到工具条某一项上时,在窗口下面可看到该工具按钮的功能提示。下面简单介绍图形编辑窗口常用工具条的功能。

这些与Windows操作系统中功能相同,表示可打开新建设计输入文件类型对话框;其他分别为: 打开一个文件;文件存盘;打印;剪切;复制;取消上次操作。

帮助选择功能,鼠标单击后,会变为此形状,处于帮助选择状态。 此时,用鼠标左键单击某一对象,可获得此对象的帮助主题。例如,单击74161的符号,可获得74161的逻辑功能表。

分别打开编译器和模拟仿真器,与Max+plus Ⅱ/Compiler(编译)和Max+plus Ⅱ/Simulator(模拟仿真)菜单命令相同。

打开时序分析器,可进行时序分析,与Max+plus Ⅱ/Timing Analyzer(时序分析器)菜单命令相同,下面将详细介绍定时分析的操作。

打开平面布置图编辑器窗口,与“Max+plus Ⅱ ”/ “Floorplane Editor”命令相同。

打开编辑/下载窗口,同“Max+plus Ⅱ”菜单下“Programmer”(编程)命令相同。

指定项目名,与File/project/Name 相同,即打开一个项目。

将当前文件指定为项目,与 File/project/Set project to Current File相同。

打开项目的顶层文件,与File/Hierarchy Project Top相同 。

前面已述及编译器是对项目进行编译,因此,若已建立设计文件,必须要将此文件指定为项目,才能对其进行编译。后面将要详述项目需进行层次化设计、编译等等,该软件需要对这些操作进行管理。

保存所有打开的文件,并对当前项目进行语法检查,与File/project/Save & check 相同。

保存所有打开的文件,并对当前项目进行编译,与 File/project/Save & compile相同。

保存打开的模拟器输入文件,并对当前项目进行模拟仿真,与File/project/Save & simulate 相同。

打开层次化管理窗口,可看到当前设计的层次关系,如图5.3.1所示十二进制的计数器由74161组成,在下一个层次是由小规模电路(门电路)组成的计数器原理电路。

图5.3.1 项目的层次显示窗口

对应菜单“Utilities”下的子菜单项,可进行字符搜索、字符替换,在当前文件/当前项目中搜索节点(Node)、符号(Symbol)等。

可利用该工具改变字体及其大小。

2)定时分析

(1)Max+plusⅡ定时分析器提供如下三种分析模式:

①Delay Matrix:延时矩阵分析模式,分析多个源节点和目标节点之间的传输路径延时时间。

②Setup/Hold Matrix:计算从输入引脚到触发器和锁存器的信号输入所需要的最小建立时间和保持时间。

③Registered performance:寄存器的性能分析模式,包括性能上有限定值的延时,可获得最坏的信号路径、系统最小时钟周期和工作频率等信息。

切换上述三种分析模式,可通过工具条切换,也可在如图5.3.2所示的窗口菜单中选择。

(2)运行定时器 ,用鼠标单击后,或选择Max+plusⅡ/ “Time Analysis”,即以默认的延时矩阵方式打开定时分析器,如图5.3.2所示,并自动装入项目文件的定时模拟器网表文件。

在时序分析器上单击“Start”按钮即可进行Delay Matrix分析。在延时矩阵模式下,定时分析器将自动把所有的输入引脚标记为源,若把所有的输出引脚标记为目标,每种分析模式都有自己默认的节点定时标记。也可选择菜单Node/Timing Source 和Node/Timing Destination命令,在图形、文本、波形编辑器中的原始项目设计文件中标记某个特定节点。对于本例项目设计采用默认方式(选用器件 EPF10K10LC 84-3),从clk上升沿到q0的延时为9.4μs(若选用器件 EPF10K10LC84-4,则该值为12.4ns)。

若在图5.3.2菜单中选择“ Analysis/ Registered performance” (寄存器性能),或单击工具条按钮,可进行寄存器的性能分析。单击“Start”开始分析,可得图5.3.3。其中的“Clock”对话框默认显示项目文件的时序逻辑电路的最长延时路径,速度表指示时序逻辑可能的运行速度,当然可在“Clock”对话框中选择一个延时路径,以便在消息窗口中观察。

若在图 5.3.2菜单中选择“Analysis/Setup Hold Matrix”或单击按钮,出现建立/保持矩阵定时分析窗口,如图5.3.4所示。选择“Start”运行定时分析器,结果就会出现在对应的窗口之中。

图5.3.2 时序分析器窗口

图5.3.3 寄存器的性能分析

图5.3.4 建立/保持矩阵的定时分析窗口

5.4 层次化设计及总线

5.4.1 Max+plusⅡ层次化设计

数字逻辑系统设计的一般方法是采用自顶向下的层次化设计。在Max+plus Ⅱ 中,可利用层次化设计方法来实现自顶向下的设计。一般在顶层对系统性能进行描述,再进行底层设计。下面以图形输入为例,阐述层次化设计的过程。

1)用层次化设计方法设计一个数字钟

利用前面叙述的图形输入方法,在设计模为60、24的计数器的基础之上,设计一个含时、分、秒的数字钟。具体步骤是:

(1)完成模为24计数器的库元件设计

①按图5.4.1所示的原理图,输入该计数器原理图,编译、仿真成功。

②执行File菜单下“Create Default Symbol”(创建默认的符号),可生成元件“aaa24”,即将用户设计的模为24的计数器编译成库中的一个元件,以后该24进制的计数器,即可作为一个库元件输入。

(2)完成模为60计数器的库元件设计

①按图5.4.2输入模为60的计数器的原理图,命名为 “aaa60.gdf”,将此文件设置为项目,对其进行编译、仿真来确保设计正确;图5.4.2中为连线进行命名,为的是避免连线的混乱,相同名字的导线代表它们在电气上是相连的。为了给导线命名,可先用鼠标左键单击要命名的连线,连线会变为红色,并有闪烁的黑点,此时键入文字即可为连线命名。

图5.4.1 模为24的计数器的图形设计文件

图5.4.2 模为60的计数器的图形设计文件

图5.4.3 “输入文件”对话框

②完成模为60的计数器设计后,采用第一项中的步骤②生成符号“aaa60”。

(3)建立电子钟的顶层设计文件“Clock.gdf”

①建立一个新的图形文件,保存为“Clock.gdf” 。

②将“Clock.gdf”文件指定为项目文件,执行File菜单下“ Project/Set Project to Current File”命令。

③在“Clock.gdf”的空白处(图形编辑区)双击鼠标左键可打开“Enter Symbol”对话框来选择需要输入的元件,此时看到它与图5.2.11稍有不同,在元件列表区可看到刚才生成的两个元件 aaa24和 aaa60,如图 5.4.3所示。

④因为电子钟的时、分、秒是由一个二十四进制、两个六十进制的计数器组成,所以输入aaa24一次,aaa60两次,经适当连接构成顶层设计文件,如图5.4.4(a)、(b)所示。在图5.4.4中,双击元件“aaa60”,可打开底层设计文件“aaa60.gdf”。其中图5.4.4(a)为同步系统,图5.4.4(b)为异步系统。但是若采用的二十四进制计数器的模块不变的话,该电子钟不能出现23小时,思考为什么?因为此时二十四进制计数器采用置数方法,在下个clk(秒脉冲)出现时,二十四进制归“0”。因此,改进设计为异步系统方式。当然,也可以采用其他方法改进这个电路。

(a)同步系统

(b)异步系统

图5.4.4 Clock.gdf文件

(4)完成“clock.gdf”项目设计

对顶层设计文件“Clock.gdf”构成的项目“Clock”进行编译、仿真,最后配置完成此设计

现在完成了电子钟的整个设计,此时,可通过工具条中或菜单“Max+plus Ⅱ”下“Hierarchy Display”菜单,得到图5.4.5所示的电子钟项目的层次。表明:电子钟项目第一层次是三个计数器;第二层次是每个计数器由74160芯片组成。

在层次显示窗口中,允许将项目设计中的任何一个设计文件及任何一个与项目名称同名的辅助文件快速打开或带至前台。在层次显示窗口中打开文件的同时,Max+plusⅡ自动打开相应的编辑器。

图5.4.5 项目Clock的层次结构

在图5.4.5所示的窗口中,双击“Clock”文件名或后面的“gdf”图标,就可打开图形编辑窗口将文件“Clock.gdf”带至前台,供浏览、编辑用。双击后面的“aaa24” 文件名或后面的“GDF”图标,就会打开“aaa24.gdf”在编辑窗口中。

选择菜单命令“File/Close Editor”或单击鼠标右键,在出现的菜单中选择“Close Editor”,以关闭已打开的文件及相应的编辑器。双击层次显示窗口标题左侧的层次窗口图标或标题条右侧的关闭按钮,以关闭层次显示窗口。

2)层次化设计的注意事项

(1)在同一设计项目中,顶层设计文件名与各底层符号所对应的设计文件必须是惟一的,不能有重名的文件。

(2)设计时自动将当前设计项目定为顶层文件。

(3)顶层文件可通过创建默认符号(打包)的方式降为底层文件,供其他顶层文件调用。

(4)顶层文件中调用的符号所代表的文件为底层设计文件。

(5)在同一设计项目中,不允许出现顶层文件或符号文件自身递归调用,允许顶层及底层文件设计单向调用底层设计符号,不允许出现顶层文件与符号文件之间及符号文件之间相互调用或间接相互调用。

5.4.2 BUS(总线)

此处BUS是指由多个信号线组成的总线,在项目设计中采用BUS可使设计的电路清楚易读,并且可减轻电路图中重复连线的负担。此外,利用BUS可方便地在波形窗口中观测仿真结果。

现在回到底层文件“aaa60.gdf”(六十进制计数器),将输出符号进行更换,如图5.4.6所示。然后重新将“aaa60”生成符号,替换原来的符号。回到顶层设计文件“Clock.gdf”,执行菜单命令“Symbol/update symbol”(符号/更新符号),出现图5.4.7对话框。

选择第二项更新所有符号。经过整理图中的连线并重命名,得到图5.4.8,图中的粗线即为总线。

图5.4.6 总线表示形式

图5.4.7 “更新符号”对话框

图5.4.8 命名总线后的clock.gdf文件

5.4.3 其他输入法

1)文本输入法

Max+plus Ⅱ 10.0支持AHDL(the Alter Hardware Description Language)、VHDL、Verilog HDL 等多种语言输入。AHDL是Altera公司的硬件描述语言,文件扩展名为“.tdf”, VHDL是已成为IEEE工业标准、覆盖最为广泛的硬件描述语言,其文件扩展名为“.vhd”。下面仍以设计模为60的8421BCD计数器为例,说明用文本输入法(VHDL语言)设计电路的一般步骤:

(1)建立项目文件

与图形输入法相同。

(2)建立设计文件

①在Max+plus Ⅱ 管理窗口选择“File/New”命令,出现图5.2.9所示窗口,选择“Text Editor File”后,单击“OK”按钮,出现文本编辑区。

②选择存盘命令,在“File Name”框中输入文件名,选择扩展名“.vhd”即可。

(3)编辑程序

在文本编辑区输入如下VHDL程序:

-A asychronous reset;enable Up;842 1BCD counter

-module=60;

library ieee;

use ieee.std_logic_ll64.all;

use ieee.Std_logic_unsigned.all;

ENTITY cntm60v Is

PORT

( en:IN std_logic ;

clear:IN std_logic ;

clk:IN std_logic ;

cout :out std_logic ;

qh:buffer std_logic-vector (3 downto 0);

ql: buffer std_logic-vector (3 downto 0);

END cntm60v

ARCHITECTURE behave OF cntm60v Is

BEGIN

cout<=“1” when(qh=“0101” and q1=“1001” and en=“1”)else “0”;

PROCESS(clk ,clear)

BEGIN

IF(clear=“0”)THEN

qh<=“0000”;

q1<=“0000”;

ELSEIF(clk EVENT AND elk=“1”)THEN

if(en=“1”)then

if(q1=9)then

q1<=“0000”;

if(qh=5)then

qh<=“0000”;

else

qh<=qh+ 1;

end if;

else

q1<=q1+1

end if;

end if;—end if (en)

END IF;--end if.clear

END PROCESS;

END behave;

(4)保存文件并检查语法错误

在“Max+plus Ⅱ 10.0”管理窗口选择“File/Project/Save & Check”,或单击按钮,可将编辑的文件cntm 60.vhd存盘并检查语法错误,如有错误则返回编辑区修改。

(5)建立默认符号及包含文件

①在Max+plus Ⅱ 10.0 管理窗口选择“File/Create Default Symbol”(创建默认的符号)命令,建立一个符号文件供以后的顶层图形设计文件中调用。

②选择“File/Create Default Include Filel”命令,可产生一个包含文件。

(6)仿真、下载

与图输入设计方法相同,也可建立模拟文件cntm60.scf来仿真此计数器。在编译、仿真成功以后,最后下载等。

对于用Verilog HDL设计,其过程与VHDL完全相同,但在存盘时其文件后缀为“.v”。至于文中的VHDL语言的含义,可参看有关书籍。

2)波形输入法

使用Max+plusⅡ波形编辑器进行设计输入时,用户必须创建以“.wdf”为扩展名的波形设计文件。如:设计描述四相四拍步进电机电路中的步进脉冲分配电路的状态机。此方法与图形、文本输入法相似,只是在编辑输入、输出节点时,需要创建隐埋节点来提供输入、输出之间的逻辑关系。

3)混合设计输入法

所谓混合设计是指由VHDL设计的电路生成一个文件,然后在图形设计中调用,即在一个设计中采用不同的方式实现。如果将已完成的顶层设计文件“clock.gdf”中由图形输入方式实现的aaa60,改为用VHDL实现的 aaa60,即完成VHDL与图形两种输入的混合设计。此时打开顶层文件,从文件中可见前两个计数器是由文本输入实现的。单击工具条中工具或菜单“Max+plus Ⅱ”下“Hierarchy Display”命令,可看到此时的层次结构中有两个VHD构成的底层,点击底层的文本文件可对其进一步编辑、修改。

5.5 CPLD/FPGA开发软件之二——Quartus Ⅱ

Quartus Ⅱ是Altera公司推出的新型FPGA/CPLD开发工具,是继Max+puls后开发的一种CPLD/FPGA器件的设计、仿真、编程的工具软件。该软件界面友好,功能强大,使用方便,是开放、多平台、丰富的设计库、多种输入、多种编程语言接口、模块化设计的EDA工具软件。

5.5.1 Quartus Ⅱ简介

1)Quartus Ⅱ的主要特点:

(1)最易使用的CPLD设计软件

Quartus Ⅱ支持MAX Ⅱ器件及其他MAX CPLD系列,提供从开始到结束的整个CPLD设计环境,提供和业界领先的第三方综合和仿真工具的无缝集成。

(2)器件支持

Quartus Ⅱ软件支持Altera公司的MAX、ACEX、APEX、FLEX6000、FLEX10K等系列器件外,还支持MAX Ⅱ CPLD、Cyclone、CycloneⅡ、 Syratix 、SyratixⅡ等最新的FPGA系列器件。

(3)高效的设计流程

Altera的Quartus Ⅱ是领先的FPGA设计软件,易于使用,设计效率高,是第一个来自(PLD)供应商的FPGA和结构化ASIC规划工具。Altera的Quartus Ⅱ软件是第一个支持基于知识产权(IP)系统的软件,设计者可利用此特点,在很短的时间内将构想成为运行的系统。

Altera的Quartus Ⅱ包含SOPC Builder、DSP Builder等系统设计工具,以及其他现成的IP核。

(4)Quartus Ⅱ集成主要的第三方EDA验证工具与方法。

(5)Quartus Ⅱ具有强大的软件开发工具。

(6)Quartus Ⅱ给Max+puls Ⅱ 用户带来便利。

Quartus Ⅱ提供内置的Max+puls Ⅱ外观选项,用户在Max+puls Ⅱ界面中,获得Quartus Ⅱ软件的性能与高级功能所带的优势。

2)Quartus Ⅱ安装

(1)Quartus Ⅱ安装平台要求(见图5.5.1)

图5.5.1 Modelsim安装环境变量设置界面

PC: 运行速度大于400MHz;操作系统: Windows 2000或Windows XP;有效内存: 512MB;硬盘: 10 GB以上;端口: 一个或多个ByteBlaster 并口、USB端口等。

(2)Quartus Ⅱ 的安装步骤

①license.dat获得

安装Quartus Ⅱ,首先获得license.dat许可文件,该文件可以通过订购Altera公司的软件获得,当然也可以选择30天试用版,30天试用期后,必须获得有效的许可文件才能使用该软件。

②运行Quartus Ⅱ的安装程序,按步骤操作,直至完成。

打开Quartus Ⅱ,进入Tools->License Setup...,指定license.dat文件的路径,路径不允许出现中文! 至此,Quartus Ⅱ 安装已经完成。

(3)Modelsim模拟器安装

使用Quartus Ⅱ软件自带的仿真软件进行功能和时序仿真时,需要手工加入波形文件(这与MAX+PLUS相同)比较麻烦,可以采用第三方仿真工具进行仿真,常用的是Modelsim,其安装步骤为: 点击Modelsim安装文件setup.exe,按照提示进行软件安装。软件安装完后进行环境变量设置。

Windows2000和 Windows XP系统中需要设置的是环境变量。以WindowsXP为例,可打开“我的电脑”属性,高级选项,单击环境变量,就会出现图5.5.1所示界面。

列在上面的是用户变量,下面的是环境变量,建议在用户变量栏设置较好。栏内有两项,一项是变量,一项是值。可以看到它只是将Windows 98下的格式中的“set” 和 “=”去掉了,其他并没有变: 在变量栏中填入变量名称,如LM_LICENSE_FILE、SYNPLICITY_LICENSE_FILE,再在值一栏中输入完整路径和license文件名就可!如果EDA软件在安装时没有生成设置变量栏,则可以点击新建按钮,按照上述格式输入就行了。

3)Quartus Ⅱ的设计特点及流程(见图5.5.2)

(1)Quartus Ⅱ的设计特点

图5.5.2 Quartus Ⅱ的设计流程

Quartus Ⅱ是单芯片可编程系统(SOPC)设计的综合性环境,可以满足特定的设计需要,在设计的每个阶段允许使用Quartus Ⅱ图形用户、EDA工具或命令行界面,可以只使用这些界面中的一个,也可以选择在不同阶段使用不同的选项。

Quartus Ⅱ具有数字逻辑设计的全部特性,可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件; 芯片(电路)平面布局连线编辑; LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块;功能强大的逻辑综合工具; 完备的电路功能仿真与时序逻辑仿真工具; 定时/时序分析与关键路径延时分析;可使用SignalTap Ⅱ逻辑分析工具进行嵌入式的逻辑分析;支持软件源文件的添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程; 自动定位编译错误; 高效的器件编程与验证工具; 可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件; 能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。

(2)Quartus Ⅱ的设计流程

Quartus Ⅱ的设计主要流程是: 设计输入、综合、布局布线、仿真、时序分析、编程与配置。

5.5.2 Quartus Ⅱ使用方法

1)在Quartus Ⅱ软件中建立项目

在File选项中选择建立新项目,按照软件提示进行,并选择所用器件型号(如: 为FLEX系列EPF10K10LC84-4芯片)。在第三方工具中可以选择EDA仿真工具为Modelsim(也可以不用Modelsim而使用Quartus Ⅱ自带的仿真工具),如图5.5.3所示。

图5.5.3 建立项目

2)添加设计输入

在File表单中添加设计文件如图5.5.4所示。

或者通过点击File⟹New⟹Device Design File创建HDL文件进行设计输入。

3)编译

点击Processing⟹Start Compilation进行编译。

4)静态时序分析

如图5.5.5所示观察静态时序分析的结果。

5)进行仿真

点击File⟹New⟹Other Files,创建Vector Waveform File(波形文件,这与MAX+PLUS的仿真相似)。选择View⟹ Utility Windows ⟹Node Finder。在Filter中选择Pins: all,然后点击list后,选择信号添加进波形文件中。手动输入数据后,点击Processing⟹Start Simulation。进行仿真可以在仿真设定中选择功能仿真(Functional)或时序仿真(Timing)。

图5.5.4 添加设计输入

图5.5.5 静态时序分析

6)编程下载

在仿真完成后,将验证正确的电路下载到指定的器件中,就可以进行电路的硬件测试。打开下载窗口Tools⟹Open Programmer后设置JTAG,如图5.5.6所示:

图5.5.6 编程下载设置

然后进行下载,如图5.5.7所示。

图5.5.7 编程下载界面

7)利用Modelsim进行功能仿真

为避免使用Quartus Ⅱ软件自带的仿真软件进行功能和时序仿真时,需要手工加入波形文件的麻烦,常采用第三方仿真工具进行仿真。

在Modelsim中建立Project。如图5.5.8所示,点击File⟹New⟹Project,得到Create Project的弹出窗口,如图5.5.9所示。在Project Name栏中填写项目名字,如: myalu,建议和顶层文件名字一致。Project Location是工作目录,可通过Brose按钮来选择或改变。Default Library Name可以采用工具默认的work。

图5.5.8 在ModelSim中建立Project

图5.5.9 建立Project的对话框

图5.5.10 添加文件界面

(1)添加文件到project下

Modelsim会自动弹出“Add Items to the project”窗口,如图5.5.10所示。选择“Add Existing File”后,根据相应提示将文件加到该Project中。

(2)编译

编译(包括源代码和库文件的编译),编译可点击Compile=>Compile All来完成。

(3)装载文件

如图5.5.11,双击myalu_tb库进行装载。

图5.5.11 装载文件

(4)仿真

如图5.5.12添加信号到仿真波形中。

图5.5.12 添加信号界面

在命令窗口中输入仿真命令“run 5us”,如图5.5.13所示。

图5.5.13 仿真命令窗口

仿真波形如图5.5.14所示。

图5.5.14 仿真波形图

(5)波形信号的保存

有时,在波形窗口内拖放了较多的信号,可以保存起来以便以后调入。在wave窗口中,选择File=>Save format,保存成*.do文件。以后需要调入时,在modelsim主窗口命令行内执行: do *.do即可。

8)利用Modelsim进行时序仿真

在功能仿真的基础上加入时延文件“.sdf"文件的仿真就是时序仿真。优点是: 比较真实地反映逻辑的时延与功能;缺点是: 速度比较慢,如果逻辑系统比较大,那么就会需要很长的时间。

图5.5.15 时序仿真建立的新库

利用经过综合布局布线的网表和具有时延信息的反标文件进行仿真,可以比较精确地仿真逻辑的时序是否满足要求(现以Altera芯片为例)。为了利用Modelsim进行时序仿真,需要在Quartus Ⅱ项目中第三方仿真工具中选择要使用的仿真工具,Modelsim在Quartus Ⅱ中重新编译myalu项目。

在Quartus项目目录下simulation\modelsim\下就会出现延时文件myalu_vhd.sdo和网表文件myalu.vho。将这两个文件拷贝到Modelsim项目目录中。同时将Quartus安装目录下(altera\quartus42\eda\sim_lib)的库文件拷贝到Modelsim项目目录中。需要拷贝的文件如下: stratixii_components.vhd、stratixii_atoms.vhd。将myalu.vho、stratixii_components.vhd、stratixii_atoms.vhd三个文件添加到项目工作区中,按照stratixii_atoms.vhd、stratixii_components.vhd、myalu.vho的顺序对项目文件进行编译。说明: 在编译stratixii_atoms.vhd、stratixii_components.vhd文件之前先建立一个新的库,名字为stratixii,如图5.5.15所示。

修改stratixii_atoms.vhd、stratixii_components.vhd文件编译库为stratixii,如图5.5.16所示。

进行编译,编译结束后,启动仿真,如图5.5.17、图5.5.18所示进行设定。

图5.5.16 编译设置

图5.5.17 仿真设置(加入SDF文件)

也可以在命令窗口使用命令进行仿真设定:

vsim -sdftyp /myalu_tb/uut=D:/mywork/examination/modelsim/src/myalu_vhd.sdo \

work.myalu_tb(myalu_tb)

现在可以按前面的方法添加信号进行仿真,仿真结果如图5.5.19所示。

图5.5.18 仿真设置(仿真类型设置)

图5.5.19 时序仿真结果

图中可以看出时序输出q,同功能仿真的输出q不同,其输出包含延迟信息。

5.5.3 Max+plus Ⅱ与Quartus Ⅱ的功能比较与转换

Max+plus Ⅱ与Quartus Ⅱ均为Atera公司推出的EDA设计软件,相比而言,后者新增了许多功能,支持更多器件,是现今使用最为广泛的开发工具。

1)Max+plus Ⅱ与Quartus Ⅱ的功能比较

(1)支持的器件

Quartus Ⅱ 支持更多的CPLD/FPGA器件,如: Stratix Ⅱ、Stratix GX、Max Ⅱ、Cyclone等系列器件,提供比Max+plus Ⅱ更好的设计性能,对于给定的设计平均减少5%的器件资源,设计速度平均快15%。

(2)新增功能

①在设计输入阶段增加如下功能:

● Block Editor: 可在Quartus Ⅱ中打开Max+plus Ⅱ图形设计文件并将其另存为原理图设计文件,有助于设计者利用原理图设计文件时连接块与基本单元。

● SOPC Builder 、DSP Builder: SOPC Builder为设计SOPC提供标准化的图形环境,可构建CPU、I/O外设等嵌入式微处理系统;DSP Builder: 帮助设计者在Matlab环境中建立DSP的硬件表示。

②在设计实现与优化阶段增加如下功能:

● Logic Lock: 便于设计者对设计进行模块划分,在基于块的从下到上设计流程中,每个块有单独的网表,可独立优化,实现不同的性能,然后整合到最高设计中。

● I/O Assignment Planning Analysis : 可帮助设计者有效地进行管脚分配,检查分配是否正确。

● Assignment Editor: 用于建立、编辑Assignment(Assignment: 指定各种包括位置、时序、参数、仿真、引脚分配等选项与设置)的界面。

③在系统设计增加如下功能:

● Design Space Explorer: 帮助设计者自动寻找合适的设置与算法来使设计达到最好性能。

● Power Estimation: 帮助设计者分析、计算器件的功率开支,根据功率预算设计系统的电源电路、制冷系统。

④在板级设计调试阶段增加如下功能:

● Singnal Tap Ⅱ、 Singnal Probe: Singnal Tap Ⅱ逻辑分析仪可捕捉和显示实时信号行为,观察系统设计中硬件、软件的交互作用。Singnal Probe: 允许在不影响设计中的现有布局布线的前提下将特定的信号路由至输出引脚。

● Chip Editor: 查看设计布局布线的详细信息。

除了上述新增的功能外,Quartus Ⅱ还有与其他EDA软件的无缝连接、更短的编译时间、更好的布局及时序性能等,用户可缩短设计周期、提高效率。

2)Max+plus Ⅱ与Quartus Ⅱ的转换

在Quartus Ⅱ环境中很容易使Max+plus Ⅱ 的设计者过渡到软件设计环境中去。

(1)改变GUI风格

Quartus Ⅱ允许改变操作界面类似于Max+plus Ⅱ,使Quartus Ⅱ在菜单、工具栏、图标及控制命令布局等与Max+plus Ⅱ相似,具体步骤为:

①启动Quartus Ⅱ。

②在主菜单中,执行Tools|Customize 命令,在打开的Customize对话框General项的Look & Feel栏选中Max+plus Ⅱ,在Quick menue 栏的Max+plus Ⅱ下拉列表选择Left。单击Apply按钮,Quartus Ⅱ弹出一个消息框,提示界面风格已改变,再退出系统,重新启动Quartus Ⅱ后,设置生效。

(2)转换Max+plus Ⅱ工程

Quartus Ⅱ可以自动转换整个Max+plus Ⅱ工程及其分配信息,Quartus Ⅱ可以导入一个Max+plus Ⅱ工程的所有文件,但不能将设计文件保存为Max+plus Ⅱ格式的设计文件,也不能在Max+plus Ⅱ中打开Quartus Ⅱ工程。

在Max+plus Ⅱ中,工程指定和配置信息保存在Max+plus Ⅱ ACF文件(.acf)中,当工程转换为Quartus Ⅱ工程后,Quartus Ⅱ生成一个Quartus Ⅱ工程文件(.gpf),保存设计项目的Assignments。

Max+plus Ⅱ的顶层设计文件为GDF文件(.gdf),仿真文件为SCF文件(.scf)。在转换Max+plus Ⅱ工程时,Quartus Ⅱ不修改这些文件,但如果在Quartus Ⅱ中修改Max+plus Ⅱ设计文件,保存这些文件时,Quartus Ⅱ会将这些文件保存为Quartus Ⅱ格式文件。

详细的转换步骤可查阅有关书籍。