E N D
不论是简单还是复杂的数字电路系统,一般都由基本门构成,如与门、或门、非门、传输门等。基本门构成的电路有两类:组合电路和时序电路。组合电路都可以采用与或门二级电路来实现,而时序电路则可以在组合电路基础上加上存储元件(如锁存器、触发器、RAM等)。基于这一基本的原理形成了可编程逻辑器件(PLD),PLD是目前集成电路中发展最快的器件之一,其应用设计不需要半导体厂家的参与,一般设计者可自行设计并应用。新买的PLD器件就犹如一张空光盘,不能直接使用,供设计者设计形成复杂的数字逻辑关系。PLD器件一般也分为两类:一类是组合逻辑功能强大的CPLD,另一类是寄存器功能较强并包含RAM的FPGA。不论是简单还是复杂的数字电路系统,一般都由基本门构成,如与门、或门、非门、传输门等。基本门构成的电路有两类:组合电路和时序电路。组合电路都可以采用与或门二级电路来实现,而时序电路则可以在组合电路基础上加上存储元件(如锁存器、触发器、RAM等)。基于这一基本的原理形成了可编程逻辑器件(PLD),PLD是目前集成电路中发展最快的器件之一,其应用设计不需要半导体厂家的参与,一般设计者可自行设计并应用。新买的PLD器件就犹如一张空光盘,不能直接使用,供设计者设计形成复杂的数字逻辑关系。PLD器件一般也分为两类:一类是组合逻辑功能强大的CPLD,另一类是寄存器功能较强并包含RAM的FPGA。 • 本章主要研究CPLD,从结构、原理到开发软件分类分别作阐述,针对CPLD的编程器制作设计做了重点介绍。
5.1 CPLD 概念 • CPLD (Complex Programmable Logic Device)直译的话称为复杂可编程逻辑芯片。它也属于大规模集成电路LSI (Large Scale Integrated Circuit)里的专用集成电路ASIC (Application Specific Integrated Circuit)。适合控制密集型数字型数字系统设计,其时延控制方便。 • FPGA (Field Progarmmable Gate Array)称为现场可编程门阵列,其典型产品有Xilinx公司的XC系列器件,其逻辑功能块较小,适合数据密集型系统的设计,时延设计相对复杂。 • 二者从严格的定义上没有太大区分,只不过是组成分类的基准不同。
表5.1 CPLD和FPGA比较 • 二者比较详细的区别见表5.1
CPLD和FPGA两者使用很相似。在很多一般的应用CPLD已足以满足要求,在此以CPLD为主介绍它的功能及设计法。对于CPLD和FPGA的生产厂家主要有两家。它是Xilinx公司和 Altera公司。本章主要以Xilinx 公司的CPLD XC9500系列和Altera公司的MAX7000系列为例说明它们的特征和使用,同时对开发语言VHDL作说明。无论哪家公司的CPLD,均可用VHDL来设计。
5.1.1 CPLD基本结构 • 复杂的可编程逻辑器件CPLD规模大,结构复杂,属于大规模集成电路范围。 • CPLD有五个主要部分:逻辑阵列块、宏单元、扩展乘积项、可编程连线阵列和I/O控制块。
1.逻辑阵列块(LAB) 一个逻辑阵列块由16个宏单元的阵列组成,多个LAB通过可编程阵列(PIA)和全局总线连接在一起。如图5.1全局总线从所有的专用输入、I/O引脚和宏单元馈入信号。对于每个LAB有下列输入信号。 • 来自作为通用逻辑输入的PIA的36个信号 • 全局控制信号,用于寄存器辅助功能 • 从I/O引脚到寄存器的直接输入通道 图5.1 逻辑块阵列
2.宏单元 MAX7000系列中的宏单元由3个功能块组成:逻辑阵列、乘积项选择矩阵和可编程寄存器。各部分可以被独自配置为时序逻辑和组合逻辑工作方式。其中逻辑阵列实现组合逻辑,可以为每个宏单元提供5个乘积项。乘积项选择矩阵分配这些乘积项作为到“或门”和“异或门”的主要逻辑输入,以实现组合逻辑函数,或者把这些乘积项作为宏单元中寄存器的辅助输入:如清零、置位、时钟和时钟使能控制。 每个宏单元中的触发器可以单独地编程为具有可编程时钟控制的D、T、JK或RS触发器的工作方式。触发器的时钟、清零输入可以通过编程选择使用专用的全局清零和全局时钟,或使用内部逻辑(乘积项逻辑阵列)产生的时钟和清零。触发器也支持异步清零和异步置位功能,乘积项选择矩阵分配乘积项来控制这些操作。如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I/O引脚,以实现组合逻辑工作方式。
3.扩展乘积项 每个宏单元的一个乘积项可以反相回送到逻辑阵列。这个“可共享”的乘积项能够连到同一个LAB中的任何其它乘积项上。尽管大多数逻辑函数能够用每个宏单元中的5个乘积项实现,但在某些复杂的逻辑函数中需要附加乘积项。为提供所需的逻辑资源,可以利用另一个宏单元,MAX70000结构也允许利用共享和并联扩展乘积项,这两种扩展项可作为附加的乘积项直接送到本LAB的任意宏单元中。利用扩展项可保证在实现逻辑综合时,用尽可能少的逻辑资源实现尽可能快的工作速度。
1)共享扩展项 每个LAB有多达16个共享扩展项。共享扩展项就是由每个宏单元提供一个未投入使用的乘积项,并将它们反相后反馈到逻辑阵列,便于集中使用。每个共享扩展项可被LAB内任何(或全部)宏单元使用和共享,以实现复杂的逻辑函数。图5.3给出了共享扩展项是如何馈送到多个宏单元的。 图5.3 共享扩展乘积项结构 图5.2 MAX7000系列的宏单元结构
2)并联扩展项 并联扩展项是一些宏观单元中没有使用的乘积项,并且这些乘积项可分配到邻近的宏单元去实现快速复杂的逻辑函数。并联扩展项允许多达20个乘积项直接馈送到宏单元的“或”逻辑,其中5个乘积项是由宏单元本身提供的,15个并联扩展项是由LAB中邻近宏单元提供的。 每个LAB有两组宏单元,每组含有8个宏单元(例如,一组为1~8,另一组为9~16)。在LAB中形成2个出借或借用并联扩展项的链。一个宏单元可以从较小编号的宏单元中借用并联扩展项。例如,宏单元8能够从宏单元7,或从宏单元7和6,或从宏单元7、6和5中借用并联扩展项。在有8个宏单元的每个组中,最小编号的宏单元仅能出借并联扩展项;而最大编号的宏单元仅能借用并联扩展项。如图5.4给出了并联扩展项是如何从邻近的宏单元中借用的。宏单元中不用的乘积项可分配给邻近的宏单元。 图5.4 并联扩展项馈送方式
4.可编程连线阵列PIA 通过可编程连线阵列可将各LAB相互连接构成所需的逻辑。这个全局总线是可编程的通道,它能把器件中任何信号源连到其目的地。所有MAX7000系列器件的专用输入、I/O引脚和宏单元输出均馈送到PIA,PIA可把这些信号送到整个器件内的各个地方。只有每个LAB所需的信号才真正给它布置从PIA到该LAB的连线,如图5.5是PIA信号布线到LAB的方式。 图5.5 PIA信号布线到LAB的方式
5.I/O控制块 I/O控制块允许每个I/O引脚单独地配置成输入/输出和双向工作方式。所有I/O引脚都有一个三态缓冲器,它能由全局输出使能信号中的一个控制,或者把使能端直接连接到地(GND)或电源(VCC)上。MAX7000系列器件的I/O控制框图如图5.6所示。MAX7000器件有6个全局输出使能信号,它们可以由以下信号驱动:两个输出使能信号、一个I/O引脚的集合、一个I/O宏单元的集合,或者是它“反相”后的信号。 当三态缓冲器的控制端接地(GND)时,其输出为高阻态,而且I/O引脚可作为专用输入引脚。当三态缓冲器的控制端接电源(VCC)时,输出使能有效。 MAX7000结构提供了双I/O反馈,且宏单元和引脚的反馈是相互独立的。当I/O引脚配置成输入时,有关的宏单元可以用于隐含逻辑。 图5.6 I/O控制块
5.1.2 XC9500系列芯片内部构成 如图5.7所示XC9500系列芯片的外观图。它的设计应用等可等效成如图5.8所示的电路。在图5.8中用二片小规模集成电路,分别是7404和7400,通过外部走线完成逻辑组合。 同样的逻辑组合可用CPLD内部逻辑块和内部连线实现同样逻辑功能。 图5.7 Xilinx 公司的CPLD外观图 (XC9572)
XC9500系列包括多种,如XC9536,XC9572和XC95288等。它们内部有Flash存储器用于存储数据,对Flash存储器可反复改写,改写次数可达万次左右。由于CPLD的改写数据端口是专用的,所以即使在实际回路中也可对它进行改写。XC9500系列它们的区别见表5.2。XC9500系列包括多种,如XC9536,XC9572和XC95288等。它们内部有Flash存储器用于存储数据,对Flash存储器可反复改写,改写次数可达万次左右。由于CPLD的改写数据端口是专用的,所以即使在实际回路中也可对它进行改写。XC9500系列它们的区别见表5.2。 对于XC9500系列的选用可根据所需设计的逻辑电路规模来选用。根据经验,可以根据传统设计中使用4000系列或74系列IC数的多少,来决定选用的XC种类。具体如下: 4000,74系列 5-10 个 XC9536 简单逻辑组合 4000,74系列 15-25 个 XC9572 较复杂逻辑组合 4000,74系列 30-50 个 XC95108 复杂逻辑组
在使用XC9500前也许会问,其内部结构是什么?它的控制程序又是如何写入、如何控制的?首先见图5.9所示XC9500的内部功能框图,根据此框图可看到CPLD由输入输出块、JTAG控制块、内部系统程序控制块、高速接续交换阵列、功能块等部分组成。在使用XC9500前也许会问,其内部结构是什么?它的控制程序又是如何写入、如何控制的?首先见图5.9所示XC9500的内部功能框图,根据此框图可看到CPLD由输入输出块、JTAG控制块、内部系统程序控制块、高速接续交换阵列、功能块等部分组成。 图5.9 CPLD XC9500内部功能框图
输入输出块是处于外部端口,缓冲器与内部高速接续交换阵列中间的功能块。它根据控制程序对外部端口与内部功能块接续,遵守程序的控制由高速接续阵列对各功能块进行接续,完成所需逻辑功能。功能块是真正的逻辑电路,XC9500内部有4个功能块,每块中又有18个微逻辑单元。所需逻辑电路均由这些微逻辑单元在控制程序控制下接续完成。输入输出块是处于外部端口,缓冲器与内部高速接续交换阵列中间的功能块。它根据控制程序对外部端口与内部功能块接续,遵守程序的控制由高速接续阵列对各功能块进行接续,完成所需逻辑功能。功能块是真正的逻辑电路,XC9500内部有4个功能块,每块中又有18个微逻辑单元。所需逻辑电路均由这些微逻辑单元在控制程序控制下接续完成。 下面分别介绍各功能块的功能及内部框图。
1.输入输出块 ( I/O Blocks ) 输入输出块由输入缓冲器、输出缓冲器、输出选择器 (OE MUX) 和接地控制单元等构成。如图5.10所示输入输出块由微逻辑单元输出信号和全局三态控制门GTS (Global Three State Control) 端口信号对输出选择器OE MUX进行控制使其处于输出可能或停止状态。其状态可保持1或0。 XC95216和XC95288具有4个GTS端口,其它XC95系列芯片具有2个GTS端口。上升沿有效还是下降沿有效由Throulet控制,其常用于抑制噪声。在输入输出端口需要接地时由接地控制单元控制完成。通常可用接地控制来减轻噪声,但在噪声要求高的电路中,仅靠接地控制是不够的。实际电路中还在输入输出端口使用上拉电阻提升电位。在写入CPLD控制程序时,输入输出端口强制置1使其状态对程序写入不产生不良影响。另外,各输入输出端口流入流出电流最大24 mA。
2.高速接续交换阵(Fast Connect Switch Matrix) 高速接续交换阵功能就是对功能块的输入信号实施控制。该接续阵连接所有的I/O端口信号和功能块的输出信号,由控制程序指定输入功能块的信号,功能块的输出信号也可由AND逻辑缓冲器接入功能块的输入端。该设计使得功能块的输入信号选择更灵活。另外是否使用缓冲器可由开发软件自动选择,据图见图5.11所示。 图5.11 高速接续交换阵
3.功能块(Function Block) 功能块由可编程与(AND)门阵列 (Programmable AND array),积项分配器 (Product Term Allocator) 和微单元 (Macro Cell) 三大部分构成。如图5.12所示输入功能块的36个输入由可编程与门阵列进行真伪分离变成72种输入。积项分配器对此72种输入进行各种组合形成必要的论理信号输入到微单元。 图5.12 逻辑功能块
微单元的内部框图如图5.13所示。微单元由一个独立的D/T type flip-flop触发器构成。该D/T触发器的设置,复位(Reset)条件以及时钟条件等信号均由积项分配器提供。在不需要使用D/T触发器时,逻辑信号可直接接入输出端口。 一个功能块内包含有独立的18个微单元,所以有18个输出。18输出接续到输入输出端口和高速接续阵。 接入功能块的信号还有设置/复位信号及时钟信号 (GCK-Global Clocks)。另外在积项分配器还输出控制信号 (PTOE-Product Term Output Enable) 输出至输入输出块。 功能块数因不同型号芯片具有不同的数量。XC9536具有2个功能块,XC9572有4个功能块,XC95108有6个功能块。通过控制不同端口,就可使用不同的功能块,且功能块也并非全部使用,可使用其中的一部分。具体请参照具体CPLD芯片的端口配置情况。
4.在系统编程控制 (In System Programming) 如图5.14所示为在系统编程控制单元。XC9500系列的CPLD满足IEEE1149.1规定。根据其中JTAG (Joint Test Action Group)协议,对CPLD进行控制编程。由于CPLD的JTAG所用的端口为独立端口,在实际完成的电路板上也可重编CPLD程序。在重编CPLD程序时,所有输入输出端口均置H高电平。供JTAG使用的信号线有如下4条: • TMS (Test Mode Select):使CPLD设置为输入编程模式使用。 • TCK (Test Clock):提供使CPLD动作的测试时钟时使用。 • TDI (Test Data In):编程写入命令或数据时使用。 • TDO (Read Data):对CPLD调式Debug时读出数据时使用。 图5.14系统内编程控制
5.1.3 CPLD器件的选择方法 由于CPLD器件厂商众多,CPLD器件的选择同其它通用逻辑器件不同,除考虑器件本身的性能外,配套软件的支持也是器件选择的重要依据。目前市场上已有的CPLD/FPGA器件生产厂家有20多个,而设计软件除生产厂家自行研制的软件外还有几十多种独立软件。加上高性能器件的价格已经不菲,更不用说设计软件的价格,所以如何选用合适的CPLD器件,不只是一件一次性的工作,还涉及到设计软件的选用以及今后进一步工作的开展。 首先,用户应该根据自身的技术环境、技术条件、使用习惯等选择一种合适的软件工具,同时要兼顾EDA技术的发展。与占据优势的软件供应商同时也与多数芯片制造商建立了良好的合作伙伴关系,所以,拥有一种设计软件,再进一步选择不同的工具库,或增加部分配置,即可对不同厂家的不同种类的FPGA产品进行设计。 其次,用户可根据设计的需要确定选择哪一类可编程器件。如果用于航天、军事领域等性能要求高的领域,反熔丝技术的一次编程型可编程芯片是首选;如果要完成多种算术运算,或是要求在较高速度下,CPLD /FPGA是较好的选择;而对于功能复杂的时序逻辑电路而言,标准门阵列单元型的FPGA具有集成度高、保持灵活和功耗低的优点。
当然,这只是通用准则,关键是所选择的器件能满足设计要求的所有功能,在此基础上,再利用上述准则确定具体的一种器件。当然,这只是通用准则,关键是所选择的器件能满足设计要求的所有功能,在此基础上,再利用上述准则确定具体的一种器件。 最后,选定某一厂家的产品,生产同类器件的厂家很多,一般依据以下准则进行选择。 • 选择有设计软件支持的厂家的芯片,这样可减少资本投入,降低成本。 • 选择产品设计性能改进有余量的。如果所选择的芯片是某一厂家产品中容量最大,或是速度最高的,那么,一但设计需要改进,则有可能在该厂家的芯片中再选不出合适的来了。 • 设计应用的延续性和可扩展性。如果所选厂家的产品具有很大的局限性,则有可能仅仅适用于很少一部分设计,从而造成设计软件投入上的浪费。 • 选择性能价格比最优的。尽管象Xilinx、Altera这样的器件生产厂家都在通过降价来作市场宣传,大多数芯片的价格还是比较高的,所有在满足上述准则的情况下适当考虑价格也是有必要的。 • CPLD以及FPGA等相关可编程器件的发展非常快,上面的选择依据是从市场的角度出发对市场份额较大、行业内目前处于领先地位的部分厂家进行的,具有一定的代表性,但不是十分全面。只有不断跟踪这一领域的技术发展和市场动态才能对可编程芯片有更加全面、不断更新的认识,在应用系统的设计中更好地利用CPLD,以提高产品的设计水平。
5.2 CPLD的发展及设计必要软件 人们很早就曾设想设计一种逻辑可编程的器件,不过由于受当时集成电路工艺技术的限制,一直未能如愿。直到20世纪70年代,集成电路技术有了飞速的发展,可编程逻辑器件才得以实现。可编程逻辑器件PLD是大规模集成电路技术发展的产物,是一种半定制的集成电路。 可编程逻辑器件大致的发展演变过程如图5.15所示。 图5.15 可编程逻辑器件发展历史
PROM(Programmable Read Only Memory)可编程只读存储器 • PLA(Programmable Logic Array)可编程逻辑阵列 • PAL(Pragrammable Array Logic)可编程阵列逻辑 • GAL(Generic Array Logic)通用阵列逻辑器件 • EPLD(Erasable PLD)可擦除编程逻辑器件 • FPGA(Field Programmable Gate Array)现场可编程门阵列 • CPLD(Complex Programmable Logic Device)复杂的可编程逻辑器件 • SOPC(System On Programmable Chip)
可编程逻辑器件的种类很多,几乎每个大的可编程逻辑器件供应商都能提供具有自身结构特点的PLD器件。由于历史原因,无法统一命名。而较常见的分类是按集成度来区分不同的PLD器件。可编程逻辑器件的种类很多,几乎每个大的可编程逻辑器件供应商都能提供具有自身结构特点的PLD器件。由于历史原因,无法统一命名。而较常见的分类是按集成度来区分不同的PLD器件。 按集成度分类:如图5.16,简单PLD的可用逻辑门数大约在500门以下。复杂PLD的门数较高,不同的芯片门数不同。 按结构分类:乘积项结构器件和查找表结构器件。 按编程工艺分:熔丝型器件、反熔丝型器件、EPROM型、EEPROM型和SRAM型。 图5.16 可编程器件分类
5.2.1 CPLD基础及开发软件 目前市场上CPLD的软件种类繁多,软件可以分为厂家集成开发软件、编辑软件,逻辑综合软件、仿真软件及其他测试工具软件等。其中集成开发软件一般是由厂家直接提供,集成了编辑、综合、仿真、布线等功能。其他专门软件属于单项功能的专用软件。
1.集成开发软件 目前CPLD集成开发软件主要有三家公司的软件,分别是Altera公司、Xilinx公司、Lattice公司。 Altera公司提供的开发软件是用户最常用的。此类软件是集成的CPLD开发环境。有多个版本,早期的Max+plusII,MaxplusII Baseline Altera,MaxplusII E+MAX等,基本都可以完成所有的设计输入(原理图或HDL),仿真,综合,布线,下载等工作。而且是免费PLD开发软件,目前Altera公司转向QuartusII软件平台,QuartusII属于新一代PLD开发软件,适合大规模FPGA的开发。 Xilinx公司提供的CPLD软件也有多个版本,早期Foundation软件目前已基本不使用,ISE4.1软件是目前Xilinx公司的主流版本软件。Xilinx公司也提供免费的开发软件,分别是WebPACK ISE 和WebFITTER。 Lattice公司提供的开发软件是ispDesignEXPERT的PLD,目前最新软件改名为ispLEVER。ispLEVER Starter是Lattice公司的免费PLD开发软件,支持600个宏单元以下的Lattice芯片的设计。 为了提高设计效率,优化设计结果,很多厂家提供了各种专业软件,用以配合PLD/FPGA芯片厂家提供工具进行更高效率的设计,最常见的组合同时使用专业HDL逻辑综合软件和PLD/FPGA芯片厂家提供的软件。
2.HDL前端输入与系统管理软件 这类软件主要是帮助用户完成HDL文本的编辑和输入工作,提高输入效率,并不是必须的,更多人更习惯使用集成开发软件或者综合/仿真工具中自带的文本编辑器,甚至可以直接使用普通文本编辑器。UltraEdit是其中使用最为广泛的编辑器。 3.HDL逻辑综合软件 这类软件将把HDL语言翻译成最基本的与或非门的连接关系(网表),输出edf文件,导给PLD/FPGA厂家的软件进行试配和布线。为了优化结果,在进行复杂HDL设计时,基本上都会使用这些专业的逻辑综合软件,而不使用PLD/FPGA厂家的集成开发软件中自带的逻辑综合功能。如Synplicity公司出品提供的Synplify / Synplify Pro软件,使用相当不错。 4.HDL仿真软件 此类软件主要对设计进行校验仿真,包括布线以前的功能仿真(前仿真)和布线以后包含延时的时序仿真(后仿真),对于一些复杂的HDL设计可能需要这些软件专业的仿真功能。 如Model Tech公司提供的VHDL/VerilogHDL仿真软件,功能强大。
5.2.2 MAX+plus Ⅱ软件使用 Altera公司的MAX+plus Ⅱ是一个高度集成的可编程逻辑器件开发系统,是目前较为流行的EDA软件之一。利用MAX+plus Ⅱ来分析设计组合逻辑电路及时序逻辑电路,从而实现数字系统的设计。
1.MAX+plus Ⅱ的安装 Altera公司的网址为:www.altera.com。可下载MAX+plus Ⅱ的最新学生版及注册文件。文件名为license.dat,运行安装包,正确安装后启动MAX+plus Ⅱ,参考界面如图5.17。 第一次使用MAX+plus Ⅱ时需要注册。方法如下:选择option菜单的license setup子菜单,将弹出license setup对话框,单击“Browser”按钮,选择你下载的注册文件(文件名为license.dat)并单击“OK”按钮确认。选择“OK”按钮返回主界面。 图5.17 MAX+plus II 启动界面
2.MAX+plus Ⅱ仿真的实现 MAX+plus Ⅱ环境中实现仿真应经过如下几个步骤: • 建立仿真项目的工程文件 建立仿真项目的工程文件是实现对数字系统仿真分析与设计的前提。可通过建立仿真设计与分析的图形文件(*.GDF)并将仿真项目的工程文件指向该图形文件来完成. 方法如下: 启动MAX+plus Ⅱ(如果首次启动,应注册),选择File菜单的new子菜单,在弹出的对话框中选择文件类型为Graphic Editor file,单击OK进入图形文件编辑状态。 选择File菜单的Save As子菜单,将新创建的未命名的图形文件取个名字(因MAX+plus Ⅱ仿真时要产生文件,最好为仿真项目新建一个子目录),单击OK保存。 选择File菜单Project子菜单下的Set Project To Current File将工程文件指向当前图形文件。
设计图形文件 1)在编辑区任意位置双击,将弹出电路符号放置对话框如图。图5.18中的中间文本框为MAX+plus Ⅱ提供的元件库。各库简要说明如下: prim库:基本库,包括基本的逻辑单元电路及电路符号。如门电路、触发器等。如and2表示2输入与门,nand2表示2输入与非门,or2表示2输入或门,not表示反相器。dff、jkff、srff分别表示D触发器、JK触发器和RS触发器。 mf库:宏单元库,主要提供常用中、小规模器件所对应的宏模块。 Mega-lpm库:参数化的模块库,主要提供了门单元、算术运算单元、存储器单元等模块。 一般主要使用prim库和mf库。 图5.18 电路符号放置对话框
2)联接电路 可参考技术手册进一步熟悉电路联接的技巧,在此仅对绘图各工具的含义予以简要说明 • 编译图形文件 全部连线完成后保存文件,选择MAX+plus Ⅱ菜单的Compile子菜单,将出现图5.19示的界面单击START按钮,如果没有错误,系统将弹出编译成功消息框。 • 创建波形文件 要实现对设计的图形文件的逻辑功能仿真,尚需定义对应的波形文件,具体方法如下: 1)选择File菜单的new子菜单,在弹出的对话框中选择文件类型为Waveform Editor file,单击OK进入波形文件编辑状态。 2)选择File菜单的Save As子菜单,将新创建的未命名的波形文件取个名字(必须与图形文件同名),单击OK保存。 图5.19 Compile 界面
设计波形文件 波形文件是MAX+plus Ⅱ仿真的必须文件,其主要作用是定义各输入信号及要观察的输出信号。图5.20对波形编辑各工具做了详细说明。 图5.20 波形编辑各工具的含义
仿真 保存文件,选择MAX+plus Ⅱ菜单的Simulator子菜单,将出现图附录5.21示的界面。单击START按钮,如果没有错误,系统将弹出仿真成功消息框。确定消息框内容后,单击Open_SCF按钮,可观察仿真波形。 图 5.21 Simulator界面 开发工具软件除了Altera厂家软家以外Xilinx公司也提供了功能强大的开发软件。将在第6章第3节将做详细介绍。 Xilinx厂商开发工具 WebPACK ISE,其标志如下。 Download下载地址http://www.xilinx.co.jp/products/software/webpowered.htm
5.3 CPLD编程器制作 5.3.1 CPLD芯片编程器简述 图5.22 CPLD芯片编程器实物 除了以上介绍的CPLD开发软件外,对它的开发就必须还有CPLD编程器硬件 ( 称 JTAG Programmer )。实物图请见图5.22所示。在第8章中将介绍它的工作原理和具体电路图等。
图5.23 Xilinx公司的CPLD编程写入器联接图 Xilinx公司提供基于IEEE1149.1,JTAG协议 (JTAG Boundary Scan) 的CPLD编程写入器。它由如图5.23中DSUB-25接口和下载电缆组成。被开发的CPLD必须在开发的基板上进行编程。基板上就必须留有JTAG使用的接口 (TMS,TCK,TDI和TDO信号线等)。这样的好处是能实机调试。
Xilinx的实机编程器外,还可设计脱机CPLD编程写入器,如图5.24所示。它能对CPLD进行编程写入,而不需要开发实物基板。在实物基板设计时就不需留有JTAG接口。这样能节约基板,减少产品体积。 在应用Xilinx等芯片进行编程时,除可以应用实机编程器外,也还可设计脱机CPLD编程写入器,CPLD编程器硬件电路连图接如图5.26所示。它能对CPLD进行编程写入,而不需要开发实物基板,在实物基板设计时就不需留有JTAG接口。这样能节约基板,减少产品体积。
5.3.2 并行接口 在设计CPLD编程器时,它与计算机的接续可采用多种接口,如并行(Parallel)接口,Multilinx/Serial串行接口,以及Multilinx/USB接口等。 设计电路采用并行接口连接,该端口也是经常用于连接本地打印机的接口。该端口是具有25 引脚的接口,它的各引脚端口的信号请见图5.25所示。 本设计所使用的引脚与信号对应表,具体各引脚端口信号的说明见表5.3所示。 图5.25 并行接口图
表5.3 CPLD编程器设计引脚说明表 表5.3中所示IN和OUT代表引脚端口是输入或是输出Pin端口。定义均由计算机侧定义,如从写入器侧定义的话刚好相反。
总线/缓冲(Bus/Buffer)电路 JTAG的信号如TMS、TCK、TDI和TDO 均需要设置总线/缓冲电路。具体采用如上图所示的逻辑电路。其真值表在上图中也有所表示。该缓冲电路采用了三态电路。这样设计使的CPLD写入器对计算机的并行接口无不良影响。仅在需要对CPLD写入器要进行数据输入输出时才动作。在不输入输出信号数据时它处于高阻状态。在需输入输出数据时才处于低阻状态,保证对CPLD写入,读出所需电流。 如图5.27所示C端口在H高电平时,输出端口Y处于高阻状态。从接续电路方来考虑如同打开一样。在C端口处于L低电平时输出Y根据输入A状态变化。 图5.27 总线/缓冲电路
器件切换电路 对不同CPLD芯片(如PC84,PC44等)进行编程写入,它的选择由旋转切换开关来完成。它的功能和信号设置请见图5.28所示。 图5.28 器件切换电路
LED表示电路 在CPLD编程写入器电路设计中还设计有各种LED表示电路。如设置有绿色LED来表示电源输入情况。红色LED在TDI信号为L低电平时点灯。在红色LED点灭时表示传送数据中,此时不能关机或拔连接电缆。为不给数据信号产生影响,各LED上直接串接有阻值较大的电阻。