项目3数字逻辑开发工具 本项目是学习FPGA/CPLD可编程逻辑器件的开发工具,包括开发软件与硬件平台。本项目选用的开发工具是Altera公司提供的综合性PLD开发工具——Quartus Ⅱ,选用的硬件平台是中国台湾嵌入式暨单片机系统发展协会数位逻辑设计的认证平台——TEMI数字逻辑设计能力认证开发板。 知识点  FPGA/CPLD基本知识;  QuartusⅡ软件的功能与特点;  QuartusⅡ软件的开发流程;  TEMI数字逻辑设计能力认证开发板的电路结构;  TEMI数字逻辑设计能力认证开发板的功能与特点。 技能点  应用Quartus Ⅱ实施数字逻辑电路的原理图设计与波形仿真;  应用Quartus Ⅱ与FPGA/CPLD硬件开发平台,完成FPGA/CPLD下载电缆的配置与编程文件的下载;  在FPGA/CPLD硬件开发平台上,实施数字逻辑电路的硬件测试。 任务31 Quartus Ⅱ的操作使用 任务说明 以三人表决器为题,由三人表决器的真值表,求解三人表决器的逻辑函数,进行逻辑函数的化简,画出三人表决器的逻辑电路图,以及应用Quartus Ⅱ完成三人表决器的原理图设计、分析综合与波形仿真。 了解FPGA/CPLD的基本知识,系统学习Quartus Ⅱ的开发流程。 相关知识 311FPGA/CPLD简介 可编程逻辑器件(Programmable Logic Device,PLD)是20世纪70年代发展起来的 一种新型器件。它是一种“半定制”集成电路,在其内部集成了大量的门电路和触发器等基本逻辑单元。用户可通过编程改变PLD内部电路的逻辑关系,就可以得到自己所需要的设计。 PLD经历了从一次可编程只读存储器PROM、现场可编程逻辑阵列(Field Programmable Logic Array,FPLA)、可编程阵列逻辑(Programmable Array Logic,PAL)、通用阵列逻辑(Generic Array Logic,GAL),到可擦除的可编程逻辑器件(Erasable Programmable Logic Device,EPLD),直至复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和现场可编程门阵列(Field Programmable Gate Array,FPGA)的发展过程。 CPLD可以认为是从EPLD演变来的,既提高了集成度,又保持了EPLD传输时间可预测的优点,将若干个类似于PAL的功能模块和实现互联开关矩阵集成于同一芯片上,就形成了CPLD。CPLD大多采用E2CMOS工艺制作,可在线编程,属于在系统可编程逻辑器件(ISPPLD)。在系统可编程逻辑器件的最大特点是编程时不需要使用编程器,也不需要从所在系统的电路板上取下,可直接在系统内进行编程。目前,生产CPLD产品的公司主要有Lattice公司、Xilinx公司、Altera公司。 FPGA的电路结构与CPLD完全不同,它由若干个独立的可编程逻辑模块组成。FPGA的集成度达3万门/片以上。FPGA由三种可编程单元(输入/输出模块IOB、可编程逻辑模块CLB、互连资源IR)和一个用于存放编程数据的静态存储器组成。FPGA的主要优点是克服了固定的与或逻辑阵列结构的局限性,加大了可编程I/O端的数目。FPGA本身也存在一些明显的缺点: 它的信号传输延迟时间不是确定的; FPGA中的编程数据存储器是一个静态存储器结构,每次开始工作时都要重新装载编程数据,并需要配备保存编程数据的EPROM; FPGA的编程数据一般存放在EPROM中,使用时需要读出并送到FPGA中的SRAM中,因而不便于保密。目前,生产FPGA产品的公司主要有Xilinx公司、Altera公司。 312Quartus Ⅱ软件简介 QuartusⅡ是Altera公司提供的综合性PLD开发工具,可以完成从设计输入、HDL综合、布线布局(适配)、仿真到硬件下载及测试的完整设计流程,同时也是单芯片可编程系统(SOPC)设计的综合性环境。 QuartusⅡ具备图形与文本等多种输入方式,支持的硬件描述语言有VHDL、Verilog HDL、AHDL(Altera HDL)等。 QuartusⅡ有模块化编译器,包括分析与综合(Analysis & Synthesis)、适配(Fitter)、装配(Assembler)与时序分析(Classic Timing Analyzer)。 QuartusⅡ还具备功能仿真与时序仿真两种不同级别的仿真测试。功能仿真仅考虑电路的逻辑特性,而时序仿真需考虑各逻辑电路的时延。 313Quartus Ⅱ设计流程 基于FPGA/CPLD设计数字逻辑系统,使用Quartus Ⅱ软件设计的基本流程如图311 所示,主要包括建立设计项目与文件、设计输入、设计编译、设计仿真、引脚锁定、编程配置与测试验证等步骤。 图311Quartus Ⅱ设计的基本流程 1. 建立设计项目与文件 QuartusⅡ采用以项目管理的方式管理设计中涉及的各种格式的文件,因此,在项目设计前,首先要建立用于存放项目设计文件的文件夹,建立设计项目。 2. 设计输入 QuartusⅡ支持多种设计输入方式,主要有原理图输入与文本输入。 3. 设计编译 编译前,需根据设计要求设定编译参数,如目标器件类型、逻辑综合方式等,然后再进行编译,包括分析与综合、适配、装配及时序分析,并产生相应的报告文件、延时信息文件及编程文件,供仿真分析和下载编程使用。 4. 设计仿真 仿真用来验证设计项目的逻辑功能是否正确,包括功能仿真、时序仿真与定时分析。 注意: 本书主要采用功能仿真验证项目的逻辑功能,不考虑逻辑电路的延时特性。 5. 引脚锁定 为了将设计结果下载到FPGA/CPLD芯片中进行测试验证,必须根据具体的EDA开发系统硬件的要求对设计项目的输入/输出信号赋予特定的引脚,以便实施实测。 注意: 在锁定引脚后必须对设计文件进行重新编译。 6. 编程配置与测试验证 在锁定引脚并编译成功后,利用Quartus Ⅱ的编程器(Programmer)对PLD器件进行编程和配置,然后在开发系统上测试其实际逻辑功能与特性。 任务实施 1. 任务要求 应用CPLD设计一个三人表决器。 2. 求解三人表决器电路的逻辑函数 根据任务要求有三个输入变量,用I1、I2、I3分别表示三人表决的输入信号,“1”表示同意,“0”表示不同意。 设定O1、O2为输出变量,如有2人以上为同意,表示表决通过,O1输出高电平,O2输出低电平; 否则,表示表决结果不通过,O1输出低电平,O2输出高电平。 (1) 列真值表。 根据任务要求,列出三人表决器的真值表,如表311所示。 表311三人表决器的真值表 I1 I2 I3 O1 O2 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 (2) 根据真值表,求出O1、O2的逻辑函数表达式。 从真值表中可看出,O2的输出是O1的非。因此,只需要求出O1,O2的输出取O1的非即可。 O1= I1I2I3+I1I2I3+I1I2I3+I1I2I3 O2=O1 (3) 卡诺图化简。 经卡诺图化简(略)后,O1的逻辑函数为 O1=I1I2+I1I3+I2I3 3. 应用Quartus Ⅱ设计三人表决器的逻辑电路,并仿真验证 1) 建立工程文件 (1) 创建工程文件夹。 创建用于存放设计工程所涉及的各种文件,如I:\\数字电子技术项目教程\\demo。 (2) 创建工程。 在启动Quartus Ⅱ过程中,会弹出创建工程或打开一个工程文件的引导对话框,如图312所示。单击 Create a New Project(New Project Wizard)按钮,会弹出新建工程对话框,如图313所示,在此对话框中分别输入新建工程所在文件夹(I:\数字电子技术项目教程\demo)、新建工程名称(demo)和顶层实体名称(demo) 。Quartus Ⅱ要求工程文件名一定要与顶层实体名称相同。 注意: 在图312中,如勾选Don’t show this screen again选项,再次启动Quartus Ⅱ时,不再弹出此对话框。在此状况下,若要新建工程,可在启动界面中选择File→New Project Wizard菜单命令。 图312创建工程或打开一个工程文件的引导对话框 图313新建工程对话框 (3) 选择添加的文件和库。 单击图313中的按钮,弹出添加文件和库对话框,如图314所示。如果需要添加文件或库,按提示操作。本任务无须添加,单击图314中的 按钮,进入目标器件选择对话框,如图315所示。 图314添加文件和库对话框 图315目标器件选择对话框 (4) 选择目标器件。 在图315中,在Family下拉列表框中选择器件的种类,本任务中选择MAX7000S系列,在Target device选项组中选择Auto device selected by the Fitter选项,系统会自动根据Show in 'Available device'list中设定的条件筛选器件; 而在Available devices选项列表由用户直接指定目标器件。在Show in 'Available device'list选项组中,通过限制封装(Package)、引脚数(Pin count)、速度等级(Speed grade)等条件,以便快速查找所需器件。本任务是在Available devices选项列表,直接指定EPM7064SLC4410器件。 (5) 选择第三方EDA工具。 在图315中,单击按钮,弹出选择第三方EDA工具对话框,如图316所示。本任务不选择第三方EDA工具,直接单击按钮,进入新建工程完成对话框,如图317所示。 图316选择第三方EDA工具对话框 (6) 完成新建工程。 在图317所示的对话框中,查看新建工程的设置信息是否正确,如正确,单击 按钮,返回Quartus Ⅱ的主窗口,此时可看到新建的工程demo,如图318所示。如设置信息有误,可单击返回前面页面进行重新设置。 图317新建工程完成对话框 2) 设计文件输入 本任务采用原理图输入方法。 (1) 选择原理图设计模式。 在图318所示主窗口中,选择File→New菜单命令,弹出如图319所示的New对话框,打开Design Files分支,共有8种文件输入方式,分别对应相应的编辑器。原理图 输入对应的输入方式是 Block Diagram/Schematic File,用鼠标将其选中,单击 按钮,弹出图形编辑窗口,如图3110所示。 图318新建工程完成后的主窗口界面 图319New对话框 图3110图形编辑窗口 (2) 放置元器件。 图3111选择电路元器件对话框 在图3110所示图形编辑窗口的空白处双击,弹出选择电路元器件对话框,如图3111所示,选择 primitives→logic→and2或者在Name文本框中直接输入元器件符号名称(and2),单击按钮,此时光标上粘着被选中的符号(2输入与门),将其移到合适的位置,单击 放置元器件,如图3112所示。依此方法,根据本任务的逻辑函数,在图中再放置两片AND2、一片OR3、一片NOT、三个输入端(Primitives→Pin→input)和两个输出端(Primitives→Pin→output),如图3113所示。如需调整位置,单击选中需移动的元器件,再拖动即可。 注: Quartus Ⅱ软件元件查找索引详见附录C。 图3112放置好的元器件 图3113放置好的电路所有元器件 (3) 元器件命名。 将鼠标移到需命名的元器件(如INPUT)上,双击或右击在快捷菜单中选择Properties选项,弹出元器件属性对话框,如图3114所示。在该对话框中,单击General标签,在Pin name(s)文本框中输入I1,其他为默认值,这样就将该输入端口命名为I1。依照同样的方法,将其他两个输入端命名为I2、I3,两个输出端命名为O1、O2,3个AND2元件分别命名为U1、U2、U3,OR3元件命名为U4,NOT元件命名为U5,如图3115所示。 图3114元件属性对话框 图3115已命名的元件图 (4) 电路连接。 将光标移到元件I1端口右侧,光标将变为“”,说明系统已处于连线状态,按住鼠标左键不放,将光标移到U1输入端处松开鼠标左键,此时连线两端会出现小方块,这样I1与U1输入端之间就有一根连接导线了。重复上述方法连接其他导线,连接好的电路原理图如图3116所示。