第八章 可编程逻辑器件 8.1 可编程逻辑器件的基本特点 数字集成电路从功能上可分为通用型、专用型两大类。 第八章 可编程逻辑器件 8.1 可编程逻辑器件的基本特点 数字集成电路从功能上可分为通用型、专用型两大类。 利用通用芯片设计复杂数字电路时:线路连线多,使电路的可靠性下降;修改的工作量大;保密性差。 专用芯片的优点:体积小、功耗低、可靠性高。缺点:设计制作周期长、成本高。
PLD的特点:是一种按通用器件来生产,但逻辑功能是由用户通过对器件编程来设定的集成电路。 优点:成本低、设计周期短、修改方便等。
可编程逻辑器件的分类 PROM(可编程只读存储器,70年代) PLA(可编程逻辑阵列,70年代中) 简单PLD PAL(可编程阵列逻辑,70年代末) GAL(通用阵列逻辑,80年代中) 复杂PLD CPLD FPGA
8.2 可编程逻辑阵列(PLA) 电路结构: 一个可编程的与逻辑阵列、一个可编程的或逻辑阵列、输入缓冲电路和输出缓冲电路。
PLD门电路的常用画法 注意:图中两条线交叉点上的表示两条线通过编程相连;交叉点上的表示两条线之间是硬件连接的。如果交叉点上没有加注任何连接符号,则表示两条线不相连。
1、组合逻辑型的PLA 一个具有3个输入端、可以产生4个乘积项和3个输出函数的PLA结构图。 输出缓冲电路由一组三态输出的缓冲器组成。 没有存储单元,用于设计组合逻辑电路
2、时序逻辑型PLA电路 缓冲电路中增加了若干触发器 将这些触发器的状态反馈到可编程的与逻辑阵列上
课堂练习:题8.2。 解题思路:由于电路只给出6个与项,因此要将4个输出的与的项不能超过6个。分析观察:将Y2、Y3变换一下。
8.3 可编程阵列逻辑(PAL) PAL由可编程的与阵列、固定的或阵列和输入、输出缓冲电路组成。 8.3.1 PAL的基本结构形式 专用输出结构:输出端只能作为逻辑函数的输出端使用,不能另作它用。
8.3.2 PAL的各种输出电路结构 1. 可编程输入输出结构 1. 可编程输入输出结构 当与逻辑阵列输出的乘积项P编程为1时,三态缓冲器G1处于正常工作状态,I/O端被设置为输出端;而当P编程为0时,三态缓冲器G1处于高阻态,这时I/O端可作为输入端使用,从I/O端输入的信号经过缓冲器G2加到与逻辑阵列上。这样可使器件的引脚得到充分的利用。 如:PAL16L8
2. 异或输出结构 在与或阵列的输出和三态输出缓冲器之间增加一级异或门。 2. 异或输出结构 在与或阵列的输出和三态输出缓冲器之间增加一级异或门。 当编程结果使得X=0时,Y与S同相; 当编程结果使得X=1时,Y与S反相。
3. 寄存器输出结构 增加了一些触发器,并将触发器的状态反馈到与逻辑阵列上,以便为时序逻辑电路提供存储电路。
PAL16R4 输出缓冲电路中含有4个触发器,且触发器的状态全都反馈到与阵列上。 可以设计组合和时序逻辑电路
4. 可配置输出结构 输出电路由一组可编程的输出逻辑宏单元(output logic macrocell,OLMC)组成。通过对OLMC的编程,可以将输出电路的结构设置成不同的形式。 PAL22V10D 的OLMC电路结构图
(a)、(c)为寄存器输出结构; (b)、(d)为输入输出结构。
8.4 通用逻辑阵列( GAL) GAL的设计目标是能将其输出电路设置成PAL的所有输出电路结构形式,并且能替换同样规模的各种型号PAL器件。 GAL可视为PAL的改进形式,它将或逻辑阵列合并到了OLMC(可编程输出逻辑宏单元)当中,并增强了OLMC的可编程功能,使之能够设置成PAL的所有输出结构形式。 GAL的编程单元采用E2CMOS工艺,可重复编程;而多数PAL器件是采用熔丝编程工艺的,不能重复编程。
GAL16V8的OLMC 数据选择器
8.5 复杂可编程逻辑器件(CPLD) 由若干可编程的通用逻辑模块(generic logic block,GLB)、可编程的输入输出模块(input/output block,IOB)和可编程的内部连线组成。
每个GLB中包含8~20个宏单元,规模较大的CPLD中可包含1000多个。 GLB类似于一个具有可配置输出结构的PAL电路。 GLB中的宏单元 每个GLB中包含8~20个宏单元,规模较大的CPLD中可包含1000多个。
CPLD中的IOB结构 由于CPLD中的GLB采用的是类似于PAL的与或逻辑阵列结构,所以在用这些GLB组成所需要的系统时灵活性比较差。而且随着CPLD规模的增加,内部资源的利用率也随之降低。 为了提高芯片的有效利用率并增强编程的灵活性,FPGA采用了另外一种结构形式,即逻辑单元阵列形式。
8.6 现场可编程门阵列(FPGA) 包含若干个可编程逻辑模块(CLB)、可编程输入输出模块IOB和一整套的可编程内部资源。 CLB按阵列形式排列,每个CLB是一个独立的电路模块,可以产生简单的组合逻辑函数或时序逻辑函数。
以Xilinx公司的XC2064为例 1. 可编程逻辑模块CLB
2. 可编程输入输出模块IOB MUX2的作用:可使信号的输入分为同步和异步两种方式。
3. 内部互连资源 SM:可编程的开关矩阵 这些开关矩阵相当于转接开关,通过编程可以有选择地将它的两个引出端接通。在每个CLB的输入端和输出端与连线间、IOB的输入端与连线间、开关矩阵与连线间均设置有可编程的连接点,可以根据要求将这些连接点编程为连接状态或者断开状态。
FPGA的编程方法与CPLD不同: 在对CPLD编程时,是采用PROM或E2PROM技术将每个编程点的编程数据(0或1)写入其中的。而在对FPGA编程时,编程数据是写入片内的RAM中的;每一个编程点的开关状态受RAM中对应的一位数据控制;由于RAM中的数据可以快速地反复写入和擦除,所以即使在工作状态下,也可以通过快速刷新RAM中的数据重构它的电路结构;而且重复编程的次数也几乎没有限制。 大多数情况下,并不需要在线随时刷新RAM中的数据。通常的做法是将编程数据事先存放在一个附加的EPROM中,并将它的地址线、数据线、控制端与FPGA相连。当FPGA接通电源时,会首先启动内部的控制程序,自动地将EPROM中的数据读入FPGA的RAM中,然后再控制FPGA进入正常工作状态。
因此,在工作的便捷和可靠方面FPGA不如CPLD。 (1)由于所设计的系统可能由不同数目的CLB经过不同的连接线路组成,所以不同信号到达同一点所经过的传输延迟时间可能不同,而且事先不能确知。其结果很可能导致竞争-冒险现象的发生。 (2)由于RAM属于易失性存储器,断电后所存数据将自动丢失,所以每次开始工作时都需要重新装入编程数据。 因此,在工作的便捷和可靠方面FPGA不如CPLD。 早期的PLA、PAL、GAL采用的是熔丝型或E2PROM编程工艺,通常需要在专用的编程器上对PLD编程。而后来的CPLD采用了在系统可编程(ISP)技术,把编程控制电路也集成在芯片内部,只需使用电缆和插口将计算机的输出接口和ISPLD相连就可以了。
8.7 PLD编程及硬件描述语言 硬件描述语言(hardware description language,HDL) 对PLD进行编程就是要设置其中每个可编程元件的开关状态;所有PLD的编程工作都是在计算机辅助下进行的。 硬件描述语言(hardware description language,HDL) 一种专门用于描述电路逻辑功能的计算机编程语言,能对任何复杂的数字电路进行全面的逻辑功能描述。 VHDL :针对超高速数字集成电路的硬件描述语言 Verilog HDL:和C语言有很多相似之处,它有较强的描述底层电路单元的能力。
厂商 软件系统名称 适用器件系列 输入方式 AMD Lattice synario MACHGAL、ispLSI、PLSI等 原理图、ABEL、VHDL文本等 ispEXPERT IspLSI、PLSI等 原理图、VHDL文本等 ALTERA MAX+PLUSⅡ MAX、FLEX等 原理图、波形图、VHDL、AHDL文本等 XILINX FOUNDATION XC各系列等 ACTEL ACTEL Designer SX和MX等 原理图、VHDL等 Microsim MACH等 原理图等 Quartus MAX、FLEX、APEX等 原理图、波形图、VHDL、Verilog AHDL文本等 ALLIANCE XILINX各种 CPLD、FPGA 图形、VHDL等多种HDL文本
可编程逻辑器件设计电路过程如下图所示 设计人员完成 电 路 设 计 设 计 输 入 编 译 综 合 仿 真 验 证 数 据 下 载 器时 件序 功检 能查