1、2022-12-3第七章可编程逻辑器件第七章可编程逻辑器件第七章可编程逻辑器件第七章可编程逻辑器件第七章第七章 可编程逻辑器件可编程逻辑器件n7.1概述n7.2可编程逻辑器件基础nPLD逻辑表示法n逻辑阵列的PLD表示法应用举例n7.3 通用阵列逻辑GAL 第七章可编程逻辑器件7.1 概概 述述n可编程专用集成电路ASIC(Application Specific Integrated Circuit)是面向用户特定用途或特定功能的大规模、超大规模集成电路。n分类:按功能分为数字的、模拟的、数字和模拟混和三种。按制造方式分为全定制、半定制ASIC、可编程三种。第七章可编程逻辑器件根据芯片的集成
2、度和结构复杂度分类根据芯片的集成度和结构复杂度分类n简单可编程逻辑器件SPLD:集成度小于PALCE22V10或 GAL22V10的PLD。n特点是都具有可编程的与阵列、不可编程的或阵列、输出逻辑宏单元OLMC和输入输出逻辑单元IOC。n复杂可编程逻辑器件CPLD:集成度大于PAL22V10或GAL22V10的PLD都可视为CPLD。nCPLD在集成度和结构上呈现的特点是具有更大的与阵列和或阵列,增加了大量的宏单元和布线资源,触发器的数量明显增加。第七章可编程逻辑器件根据芯片的集成度和结构复杂度分类根据芯片的集成度和结构复杂度分类n现场可编程逻辑门阵列 FPGA:现场可编程门阵列FPGA是集成
3、度和结构复杂度最高的可编程ASIC。n运算器、乘法器、数字滤波器、二维卷积器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计可选用FPGA实现。第七章可编程逻辑器件按制造技术和编程方式进行分类按制造技术和编程方式进行分类n双极熔丝制造技术的可编程ASIC(Lattice的PAL系列)nEECMOS制造技术的可编程ASIC(Lattice的GAL和ispLSI/pLSI)nSRAM制造技术的可编程ASIC(Xilinx的FPGA,Altera的FPGA)n反熔丝制造技术的可编程ASIC(Actel的FPGA)第七章可编程逻辑器件按制造技术和编程方式进行分类按制造技术和编程方式进行分类n双极熔丝和
4、反熔丝ASIC通常称为OTP(one time programming)器件而采用EECMOS和SRAM制造技术的可编程ASIC具有用户可重复编程的特性,可以实现电擦电写。第七章可编程逻辑器件按制造技术和编程方式进行分类按制造技术和编程方式进行分类n用SRAM技术制造的FPGA则具有数据挥发性,又称易失性。n具有挥发性的FPGA,当系统断电或掉电后,写入FPGA中的编程数据要丢失。因此,必须把要下载到FPGA的数据借用编程器固化到与其联用的EPROM或EEPROM中,待重新上电时,芯片将编程数据再下载到FPGA中。nFPGA的数据挥发性,决定有些环境不宜选用。第七章可编程逻辑器件可编程可编程A
5、SIC的编程方式的编程方式n可编程ASIC的编程方式有两种:n采用专用编程器进行编程n在系统编程n甩掉了专用编程器,而且也不用将芯片从电路系统取下,只利用计算机和一组下载电缆就可以在系统编程。nLattice和Xilinx等几家大公司现在都有在系统可编程ASIC产品。在系统编程方式方便了用户。第七章可编程逻辑器件可编程可编程ASIC的一般开发步骤的一般开发步骤n设计输入(entry)n功能模拟(function simulation)n逻辑分割(partitioning)n布局和布线(place and routing)n时间模拟(timing simulation)n写入下载数据(downl
6、oad)第七章可编程逻辑器件ASIC开发步骤流程图开发步骤流程图第七章可编程逻辑器件TOPDOWN设计思想设计思想n自顶向下(TOPDOWN)设计首先是从系统级开始入手。把系统分成若干基本单元模块,然后再把作为基本单元的这些模块分成下一层的子模块。图图7-2top-down设计图设计图第七章可编程逻辑器件TOPDOWN设计思想设计思想n采用TOPDOWN层次结构化设计方法,设计者可在一个硬件系统的不同层次的模块下进行设计。总体设计师可以在上层模块级别上对其下层模块设计者所做的设计进行行为级模拟验证。n在TOPDOWN的设计过程中,划分每一个层次模块时要对目标模块做优化,在实现模块时要进行模拟仿
7、真。虽然TOPDOWN的设计过程是理想的,但它的缺点是得到的最小可实现的物理单元不标准,成本可能较高。第七章可编程逻辑器件BOTTOMUP设计思想设计思想nBOTTOMUP层次结构化设计是TOPDOWN设计的逆过程。n它虽然也是从系统级开始的,即从图7-2中设计树的树根开始,但在层次模块划分时,首先考虑的是实现模块的基本物理单元是否存在,划分过程必须是从存在的基本单元出发。第七章可编程逻辑器件BOTTOMUP设计思想设计思想n设计树最末枝上的单元要么是已经制造出的单元,要么是已经开发成功的单元,或者是可以买得到的单元。n自底向上(BOTTOMUP)的设计过程采用的全是标准单元,通常比较经济。n
8、但完全采用自底向上的设计有时不能完全达到指定的设计目标要求。第七章可编程逻辑器件BOTTOMUP设计思想设计思想n用可编程ASIC实现一个好的电子系统设计通常采用TOPDOWN和BOTTOMUP两种方法的结合,充分考虑设计过程中多个指标的平衡。第七章可编程逻辑器件设计库及库元件设计库及库元件n在层次设计中所用的模块有两种:n预先设计好的标准模块n由用户设计的具有特定应用功能的模块n前者一般要存放在EDA开发系统中各种类型的文件库之中,后者必须经过模型仿真和调试证明无误后,建立一个图形符号存放在用户的设计库中准备在更上层的设计中使用。第七章可编程逻辑器件设计库及库元件设计库及库元件n设计库中比较
9、高级的模块一般由两个模型构成:n模块的图形符号n模块的功能模型n图形符号在建立原理图时使用,功能模型在逻辑模拟仿真时使用。第七章可编程逻辑器件设计库及库元件设计库及库元件n模块的功能模型可以是逻辑图形式,也可以是VHDL描述的,还可以是真值表或逻辑方程式描述的。n一个已知的图形符号可以用来代表一个或几个功能模型,这些模型的功能相同,参数可以不同。例如2输入与非门7400、74LS00,74S00,功能相同,但是传输延时,功耗不相同。第七章可编程逻辑器件画层次原理图画层次原理图n画层次原理图类似于用逻辑门符号画一个逻辑图,先将选用的模块符号和连结器符号放在画页上,然后用连线将它们连结起来,最后将
10、选用的符号名放在相应的模块及其结点上。n选用符号名要注意遵循以下规则:一般把在一个层次原理图中所使用的模块的每一个拷贝叫做这个模块的例化。第七章可编程逻辑器件画层次原理图画层次原理图n为了模拟仿真和建立设计文件,每个例化都要起一个名字。位全加器模块位全加器模块FA4起名为起名为Adder。第七章可编程逻辑器件画层次原理图画层次原理图nAdder的模块由4个一位全加器子模块FA1实现,这四个子模块分别起名为add0、add1、add2、add3。第七章可编程逻辑器件画层次原理图画层次原理图n构成一位全加器的各个逻辑门及其信号线也要起一个名,它们的名字分别是1、2、A1、A2、A3、R1。第七章可
11、编程逻辑器件画层次原理图画层次原理图n为了调试或模拟仿真,常常要研究模块中的一个指定信号。例如,假设要研究图7-3中位全加器FA1的工作情况,需要观察完整系统模拟时的信号x1的值。n因为有个FA1的例化,例化名称要被合并成如下的信号名,顶层模块名次层模块名:信号名。因此,要监视全加器add2这个例化中信号线x1的时候,这个信号名应该写成Adderadd2:x1通过上述的书写规则,就可指定顶层模块中adder中的模块add2的信号x1,这个起名规则可以扩展到任何一个层次。第七章可编程逻辑器件层次联接器符号和总线层次联接器符号和总线n为了建立层次原理图,一个抽象级别的模块输入和输出引脚的名称要与次
12、层模块原理图相应信号的名称保持唯一性或者一致性,如图7-所示。输入连接器输入连接器输出输出连接连接器器第七章可编程逻辑器件层次联接器符号和总线层次联接器符号和总线n当模块有多重输入和输出信号时,层次的相互连接器画成如图7-5所示的总线形式。A(3:0)=A(3)A(2)A(1)A(0)B(3:0)=B(3)B(2)B(1)B(0)S(3:0)=S(3)S(2)S(1)S(0)第七章可编程逻辑器件层次联接器符号和总线层次联接器符号和总线n为了进一步简化模块原理图画法,有时常常在模块上定义多重引脚,如图7-5(b)所示。每个多重引脚代表每个多重引脚代表一组相关信号的集一组相关信号的集合,允许把总线
13、直合,允许把总线直接联接到模块的引接联接到模块的引脚上,但是必须清脚上,但是必须清楚每条总线代表的楚每条总线代表的是是4个信号的联接。个信号的联接。第七章可编程逻辑器件层次化设计的模拟层次化设计的模拟n采用层次设计实现的系统必须进行设计模拟和验证。一个层次设计中最底层的元件或模块必须首先进行模拟仿真,当其工作正确之后,再进行高一抽象级别模块的模拟仿真。最后还要对最上层系统进行模拟仿真,最终完成系统设计。第七章可编程逻辑器件层次化设计的模拟层次化设计的模拟n在模拟仿真时,首先要将模块用相应的电路来代替,称为展平,展平工作一直做到最底层模块都用基本的逻辑门实现为止。n在展平过程中所有元件及所有的信
14、号线都必须有指定过的名称。n模拟仿真结果可以是给出正确的波形,也可以是给出一些时延参数。图给出的是用总线表示的波形。第七章可编程逻辑器件层次化设计的模拟层次化设计的模拟n图给出的是用总线表示的波形。01111011101100000000S(3:0)01100110011001100000A(3:0)00010001010101010000B(3:0)1210750Time表格形式的模拟值表格形式的模拟值波形表示的模拟值波形表示的模拟值第七章可编程逻辑器件7.2 可编程逻辑器件基础可编程逻辑器件基础nPLD的逻辑表示nPLD中阵列及其阵列交叉点的逻辑表示nPLD中基本逻辑单元的PLD表示n逻辑
15、阵列的PLD表示法应用举例第七章可编程逻辑器件PLD的逻辑表示的逻辑表示nPLD中阵列及其阵列交叉点的逻辑表示nPLD中阵列交叉点的逻辑表示nPLD中与阵列和或阵列的逻辑表示第七章可编程逻辑器件PLD中阵列交叉点的逻辑表示中阵列交叉点的逻辑表示nPLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。(a)表示实体连结,就是行线和列线在这个交叉点表示实体连结,就是行线和列线在这个交叉点处实在连接,这个交叉点是不可编程点,在交叉点处实在连接,这个交叉点是不可编程点,在交叉点处打上实心点。处打上实心点。第七章可编程逻辑器件PLD中阵列交叉点的逻辑表示中阵列交叉点的逻辑表示nPLD逻辑阵列中
16、交叉点的连接方式采用图7-7所示的几种逻辑表示。(b)表示可编程连接。无论表示可编程连接。无论或或 表示该符表示该符号所在行线和列线交叉处是可编程点,具有一号所在行线和列线交叉处是可编程点,具有一个可编程单元。个可编程单元。第七章可编程逻辑器件PLD中阵列交叉点的逻辑表示中阵列交叉点的逻辑表示nPLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。在采用熔丝工艺的在采用熔丝工艺的PLD器件中,器件出厂后用户器件中,器件出厂后用户编程之前,所有可编程点处的熔丝都处于接通状态,编程之前,所有可编程点处的熔丝都处于接通状态,习惯上都用习惯上都用表示熔丝接通,因此可编程点上处处表示熔丝接通,
17、因此可编程点上处处都打都打或或 。第七章可编程逻辑器件PLD中阵列交叉点的逻辑表示中阵列交叉点的逻辑表示nPLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。PLD器件被用户编程后,可编程点上的熔丝有的器件被用户编程后,可编程点上的熔丝有的烧断,有的接通。编烧断,有的接通。编 程后可在编程点上仍打有程后可在编程点上仍打有,这时的这时的表示可编程点被编程后熔丝接通。表示可编程点被编程后熔丝接通。第七章可编程逻辑器件PLD中阵列交叉点的逻辑表示中阵列交叉点的逻辑表示nPLD逻辑阵列中交叉点的连接方式采用图7-7所示的几种逻辑表示。熔丝烧断的可编程点上的熔丝烧断的可编程点上的消失,行线和
18、列线不消失,行线和列线不相接,这种情况用图相接,这种情况用图(c)表示。表示。第七章可编程逻辑器件PLD中与阵列和或阵列的逻辑表示中与阵列和或阵列的逻辑表示n与阵列如图(a)所示。在二极管与门的各支在二极管与门的各支路与输出之间接入熔丝。路与输出之间接入熔丝。熔丝保留的各支路的输熔丝保留的各支路的输入为有效输入,输出入为有效输入,输出F是熔丝保留各支路输入是熔丝保留各支路输入的与逻辑函数。图的与逻辑函数。图(b)是是PLD表示。表示。图图(a)和图和图(b)是熔丝全部保留的与阵列表示情况。是熔丝全部保留的与阵列表示情况。F(A,B,C)=0。第七章可编程逻辑器件PLD中与阵列和或阵列的逻辑表示
19、中与阵列和或阵列的逻辑表示n图(c)是烧断3个熔丝的情况,图(d)是图(c)的PLD表示。第七章可编程逻辑器件PLD中与阵列和或阵列的逻辑表示中与阵列和或阵列的逻辑表示n可编程或阵列,其构成原理与可编程的与阵列相同。第七章可编程逻辑器件PLD中与阵列和或阵列的逻辑表示中与阵列和或阵列的逻辑表示n可编程或阵列,其构成原理与可编程的与阵列相同。第七章可编程逻辑器件PLD的逻辑表示的逻辑表示nPLD中基本逻辑单元的PLD表示n输入缓冲器和反馈缓冲器n输出极性可编程的异或门n地址选择可编程的数据选择器n可编程数据分配器的逻辑表示n激励方式可编程的时序记忆单元的PLD表示n PLD中与阵列的缺省表示n双
20、向输入/输出和反馈输入的逻辑表示第七章可编程逻辑器件输入缓冲器和反馈缓冲器输入缓冲器和反馈缓冲器n在PLD中有二种特殊的缓冲器,它们是输入缓冲器和反馈缓冲器,这二种缓冲器有相同的电路构成,图7-10给出它们的PLD表示,它们是单输入、双输出的缓冲器单元,一个是高有效输出端,即同极性输出端。另一个是低有效输出端,即反极性输出端。第七章可编程逻辑器件输入缓冲器和反馈缓冲器输入缓冲器和反馈缓冲器n与曾经学过的输出三态缓冲器不同,虽然输出三态缓冲器也有三个端,但只有一个输入和一个输出端,另一个是使能控制端。原则上说,输出三态缓冲器有二个输入端一个输出端。注意二者之间的区别。n输入缓冲器和反馈缓冲器输出
21、只有0、1两个逻辑状态。而输出三态缓冲器除了有0、1两个逻辑状态外,还有一个称为高阻(Z)的状态。第七章可编程逻辑器件输出极性可编程的异或门输出极性可编程的异或门n在PLD中为了实现输出极性可编程,常采用图(a)所示的异或门结构。当熔丝烧断,异或门输出极性为低有效,当熔丝烧断,异或门输出极性为低有效,即即 否则异或门输出高有效否则异或门输出高有效Q0=P 0=P。第七章可编程逻辑器件输出极性可编程的异或门输出极性可编程的异或门n图(b)是编程后熔丝保留,输出极性编程为高有效。图图(c)是编程熔丝烧断,输出极性编程为是编程熔丝烧断,输出极性编程为低有效。低有效。第七章可编程逻辑器件地址选择可编程
22、的数据选择器地址选择可编程的数据选择器n地址选择可编程的数据选择器如图7-12所示。地址选择端编程后,若列线与行线相接且接地,其地址选择端编程后,若列线与行线相接且接地,其输入为逻辑输入为逻辑0。否则,列线与行线断开其输入为逻辑。否则,列线与行线断开其输入为逻辑1。二选一数二选一数据选择器据选择器四选一数四选一数据选择器据选择器根据编程情况,地址选择端的输入有根据编程情况,地址选择端的输入有00,01,10,11四种情况。四种情况。第七章可编程逻辑器件可编程数据分配器的逻辑表示可编程数据分配器的逻辑表示n可编程逻辑分配器如图7-13所示。图图7-13 可编程逻辑分配器可编程逻辑分配器图中的核心
23、部分图中的核心部分是可编程逻辑分配是可编程逻辑分配器器可编程熔丝可编程熔丝S1S0的不同编程值,的不同编程值,使乘积项簇分别被分配到使乘积项簇分别被分配到n+1号、号、n号、号、n-1号、号、n-2号宏单元。号宏单元。FUSE1正常时正常时(默认默认状态状态)不熔断,乘积不熔断,乘积项簇的信号传不到项簇的信号传不到n号宏单元。号宏单元。若编程后若编程后FUSE1熔熔断,乘积项簇信号可断,乘积项簇信号可以传到以传到n号宏单元。号宏单元。如果如果FUSE2熔熔断,异或门反极断,异或门反极性传输,否则异性传输,否则异或门原极性传输,或门原极性传输,n号宏单元接收号宏单元接收信号与乘积项簇信号与乘积项
24、簇信号同相。信号同相。第七章可编程逻辑器件激励方式可编程的时序记忆单元的激励方式可编程的时序记忆单元的PLD表示表示n时序记忆单元有二种,即锁存器和触发器。n输出的状态只受输入激励信号控制的时序记忆单元是锁存器。n只有在时钟信号控制下才能得到受输入激励信号决定的相应输出状态的时序记忆单元是触发器。n二种时序记忆单元的根本区别是输出状态的变化是否取决于时钟信号的控制。第七章可编程逻辑器件激励方式可编程的时序记忆单元的激励方式可编程的时序记忆单元的PLD表示表示n图7-14是激励方式可编程的时序记忆单元的PLD表示。通过编程,使通过编程,使R/L端端为为0,Q端的输出状态只端的输出状态只与激励信号
25、有关并受与激励信号有关并受D决定,图所示电路为决定,图所示电路为D锁存器。锁存器。通过编程,若使通过编程,若使R/L端为端为1,电路只有在时,电路只有在时钟脉冲信号钟脉冲信号CLK的驱的驱动下,动下,Q端的状态变化端的状态变化受受D端的激励信号决定,端的激励信号决定,该电路具有该电路具有D触发器功触发器功能。能。第七章可编程逻辑器件PLD中与阵列的缺省表示中与阵列的缺省表示n在PLD器件与阵列中常看到图7-15中给出的几种表示。输出为Z1的与门4个输入变量全部被编程后输入,4个交叉点均画。因此,第七章可编程逻辑器件PLD中与阵列的缺省表示中与阵列的缺省表示同理:同理:Z2为为Z1的缺省表示。这
26、时的阵列交的缺省表示。这时的阵列交叉点上均未画叉点上均未画,而在与门符号内却画有,而在与门符号内却画有,。第七章可编程逻辑器件PLD中与阵列的缺省表示中与阵列的缺省表示n输出为Z3的与门输入阵列交叉点上无,与门符号内也无,这是浮动状态的逻辑表示。浮动输入状态代表与阵列编程后熔丝全部熔断,4个输入全都不同与门相接,相当与门输入悬空,与门输出为高电平,即输出逻辑“1”第七章可编程逻辑器件双向输入双向输入/输出和反馈输入的逻辑表示输出和反馈输入的逻辑表示n双向输入/输出和反馈输入结构是PLD结构的特点之一,乘积项Pn+1为三态输出缓冲器的使能端控制信号。由于各阵列交叉点无一个由于各阵列交叉点无一个,
27、呈悬浮状态,呈悬浮状态,n+1号与号与门输出为逻辑门输出为逻辑“1”。或阵列。或阵列输出的输出的Sm信号加在信号加在IOm引脚引脚上,作为输出信号。同时,上,作为输出信号。同时,Sm信号又通过反馈缓冲器被信号又通过反馈缓冲器被反馈到与阵列。反馈到与阵列。这个输出带反馈的组态方这个输出带反馈的组态方式采用图式采用图7-16(b)所示的所示的PLD表示。表示。1SmSm第七章可编程逻辑器件双向输入双向输入/输出和反馈输入的逻辑表输出和反馈输入的逻辑表示示n由于各阵列交叉点全打有,所以n+1号与门输出为逻辑“0”,三态输出缓冲器禁止,其输出为高阻。0高高阻阻加到加到与阵列与阵列上上Feedback=
28、Sm第七章可编程逻辑器件逻辑阵列的逻辑阵列的PLD表示法应用举例表示法应用举例n二位串行进位加法器的原理框图如图7-18(a)所示。输入输入输入输入输入输入输入输入输出输出其阵列表示如图其阵列表示如图7-18(b)所示。所示。第七章可编程逻辑器件逻辑阵列的逻辑阵列的PLD表示法应用举例表示法应用举例第七章可编程逻辑器件7.3 通用阵列逻辑通用阵列逻辑GAL nGAL(Generic Array Logic)的结构及其工作原理nGAL的基本阵列结构nGAL的工作模式和逻辑组态nGAL16V8的编程nGAL应用举例第七章可编程逻辑器件7.3 通用阵列逻辑通用阵列逻辑GAL nGAL的结构及其工作原
29、理nGAL的基本阵列结构n通用型GAL16V8的电路结构nGAL16V8的结构控制字nGAL16V8的OLMCnGAL的工作模式和逻辑组态nGAL16V8的编程第七章可编程逻辑器件GAL的基本阵列结构的基本阵列结构n图7-19给出GAL的基本结构框图。第七章可编程逻辑器件逻辑宏单元逻辑宏单元输入输入/输出口输出口输入口输入口时钟信时钟信号输入号输入使能控制使能控制可编程与阵列可编程与阵列固定或阵列固定或阵列2,3,4,5,6,7,8,9是是专用输入引脚专用输入引脚1,11,12,13,14,17,18,19各各引脚可通过编程组引脚可通过编程组态设为输入引脚态设为输入引脚12,13,14,17,
30、18,19各引脚可通各引脚可通过编程组态设为输过编程组态设为输出引脚,出引脚,15,16专专用输出引脚用输出引脚第七章可编程逻辑器件GAL16V8的结构控制字的结构控制字nGAL和PAL不同之处是GAL的输出电路增加了输出逻辑宏单元OLMC(Output Logic MacroCell)。GAL的输出电路可编程。nGAL的结构控制字有5种,82位:nSYN:同步控制字1位,对8个宏单元是公共的;nAC0:结构控制字1位,对8个宏单元是公共的;nAC1(n):结构控制字8位,每个宏单元一个;nXOR(n):极性控制字8位,每个宏单元一个;nPTD:乘积项禁止控制字64位,每个与门一个。第七章可编
31、程逻辑器件GAL16V8的的OLMC的内部电路构成的内部电路构成nOLMC的内部电路构成如图7-21所示。乘积项乘积项多路开多路开关关输出多输出多路开关路开关三态多三态多路开关路开关反馈多反馈多路开关路开关来自来自1号引脚号引脚 第七章可编程逻辑器件nAC0和AC1(n)对TSMUX的全部控制作用见表7-1。导 通高 阻OE=1,导通OE=0,高阻用户编程决定输出三态缓冲器状态VCC地电平OE第一与项0 00 11 01 1TSMUX输入信号AC0AC1(n)表表7-1 AC0AC1(n)对对TSMUX控制表控制表第七章可编程逻辑器件FMUX的全部控制功能如表的全部控制功能如表7-2所示。所示
32、。Q端信号本级输出端邻级输出地电平反馈缓冲器输入端信号来源寄存器Q端本级输出邻级输出地电平1 0 1 1 0 10 0FMUX输入信号AC0 AC1(n)AC1(m)表表7-2 AC0AC1对对FMUX控制表控制表第七章可编程逻辑器件 GAL的工作模式和逻辑组态的工作模式和逻辑组态nGAL16V8、GAL20V8系列器件的OLMC有寄存器模式、复杂模式、简单模式三种工作模式。n用户通过输出引脚定义方程确定OLMC的工作模式。输出引脚定义方程有A型、B型、C型三种。n它们与工作模式的关系如表7-3所示。第七章可编程逻辑器件表表7-3 OLMC的工作模式同引脚定义方程的关系的工作模式同引脚定义方程
33、的关系输出引脚输出引脚方程类型方程类型输出引脚输出引脚定义方程式定义方程式工作模式工作模式A型型B型型C型型引脚名引脚名:=逻辑方程式逻辑方程式引脚名引脚名=逻辑方程式逻辑方程式引脚名引脚名.OE=逻辑方程式逻辑方程式引脚名引脚名=SYN=0,AC0=1寄存器模式寄存器模式SYN=1,AC0=1复杂模式复杂模式SYN=1,AC0=0简单模式简单模式 GAL的工作模式和逻辑组态的工作模式和逻辑组态第七章可编程逻辑器件输出逻辑宏单元三种模式又分为七种逻输出逻辑宏单元三种模式又分为七种逻辑组态,其隶属关系如表辑组态,其隶属关系如表7-4所示。所示。GAL的工作模式和逻辑组态的工作模式和逻辑组态表表7
34、-4 三种模式和七种组态的关系三种模式和七种组态的关系工作模式工作模式逻辑组态逻辑组态寄 存 器 模寄 存 器 模式式复杂模式复杂模式简单模式简单模式寄存器输出组态寄存器输出组态 组合输出组态组合输出组态有反馈组合输出有反馈组合输出 无反馈组合输出无反馈组合输出无反馈组合输出组态无反馈组合输出组态 本级输出邻级输本级输出邻级输入组态入组态 相邻输入组态相邻输入组态第七章可编程逻辑器件(a)寄存器模式寄存器输出组态:寄存器模式寄存器输出组态:寄存器输出010功能AC1(n)AC0SYN低有效高有效01输出极性XOR1脚作为寄存器输出级脚作为寄存器输出级的公共时钟的公共时钟CK端;端;11脚作为寄
35、存器输出级的脚作为寄存器输出级的公共使能公共使能OE端。端。第七章可编程逻辑器件(b)寄存器模式组合输出组态:寄存器模式组合输出组态:在一个带寄存器GAL中的组合输出110功能AC1(n)AC0SYN低有效高有效01输出极性XOR1和11号总是分别作为时钟CK端和使能端OE。第七章可编程逻辑器件引脚1和11为输入,所有输出为组合逻辑输出。1318号宏单元可构成这种组态 (c)复杂模式有反馈组合输出组态:复杂模式有反馈组合输出组态:低有效高有效01输出极性XOR所有输出为组合逻辑111功能AC1(n)AC0SYN第七章可编程逻辑器件12,19号宏单元可构成这种组态(d)复杂模式无反馈组合输出组态
36、:复杂模式无反馈组合输出组态:低有效高有效01输出极性XOR所有输出为组合逻辑101功能AC1(n)失效AC0=SYNSYNAC1(m)=SYN1第七章可编程逻辑器件15,16号宏单元可构成这种组态(e)简单模式无反馈组合输出组态:简单模式无反馈组合输出组态:所有输出为组合逻辑001功能AC1(n)AC0SYN低有效高有效01输出极性XOR第七章可编程逻辑器件15和16号宏单元也能构成这种组态(f)简单模式本级组合输出邻级输入组态:简单模式本级组合输出邻级输入组态:所有输出为组合逻辑001功能AC1(n)AC0SYN低有效高有效01输出极性XOR第七章可编程逻辑器件输出缓冲器失效除15和16号
37、宏单元外都可构成这种组态(g)简单模式邻级输入组态:简单模式邻级输入组态:所有输出为组合逻辑101功能AC1(n)AC0SYN无效无效01输出极性XOR第七章可编程逻辑器件 GAL的开发流程的开发流程(开发步骤开发步骤)n建立用户源文件n用户源文件就是设计者书写的描述所要实现逻辑电路功能的软件程序的集合。其软件程序必须符合某一可编程逻辑设计语言的语法规范。现在广泛使用的有ABEL-HDL,VHDL,Verilog-VHDL等硬件描述语言。n编译用户源文件n要想使建立起来的用户源文件变成要下载的数据文件(JEDEC),必须经过若干步的语言处理程序。如语法检查、逻辑化简、功能模拟、时间模拟等。经过
38、专用软件处理后,证明用户建立的源文件正确无误,最后将其转换成要下载的编程数据文件(JEDEC)。把上述的一系列处理过程称为编译。第七章可编程逻辑器件n器件编程n在专用的软件系统环境下,启动编程器,使计算机和编程器进行通信。将JEDEC数据文件下载到编程器上。n选择目标器件的制造厂家、型号进行器件匹配。n将GAL器件插入插座并锁紧。这一步必须注意芯片引脚序号与插座引脚号要对应。否则器件可能被毁坏。n下载编程。即将下载到编程器上的JEDEC数据文件写入到GAL芯片中。GAL的开发流程的开发流程(开发步骤开发步骤)第七章可编程逻辑器件n实际功能验证n将芯片从编程器取下,放到实验电路中或实际工作的系统
39、中进行实际功能验证,如果功能正确,说明开发工作结束。如果功能验证不正确,则还要返回到第一步重新修改设计。GAL的开发流程的开发流程(开发步骤开发步骤)第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言nABEL(Advanced Boolean Equation Language)是Data I/O公司的注册商标。nABEL程序是包含一些元素的文本文件:n包括程序名和注释;n标识逻辑函数输入、输出的声明;n用来指定要实现逻辑函数的语句;n实现逻辑函数的功能的PLD或其它目标器件的类型声明;n用来指定在一定输入条件下逻辑函数期望输出的测试向量。第七章可编程逻辑器件ABEL硬件描述语言硬件描述语
40、言nABEL程序的典型结构nmodule module namentitle string ndeviceID device devicetype;“器件声明npin declarations “引脚声明nother declarationsnequationsnequationsntest_vectorsntest vectorsnend module name第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言module example1title basic logic gates name device p16v8s;“器件声明a,b,c,d,e pin19,1,2,3,4;“引脚声
41、明m,n,p,q,h pin 5,6,7,8,9;i,j pin 11,12;u,v,w,x,y,z pin 18,17,16,15,14,13;X=.X.;“常数声明,任意态equationsu=!a;“非门INVv=b&c;“二输入与门AND2w=d#e;“二输入或门OR2x=!(m#n);“二输入或非门NOR2y=!(p$q);“二输入异或非门NXOR2z=!(h&i&j);“三输入与非门NAND3Test_vector()end example1第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言n标识符与关键字n标识符(Identifier)n标识符用来标识器件、器件管脚或节点、集合
42、、输入/输出信号、常量、宏及变量。n所有这些标识符都遵从同样的命名规则,具体规则如下:n标识符最多31个字符长,必须以字母或下划线打头,区分大小写。第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言n关键字n关键字是一种特殊的标识符,被ABEL视为保留字,不能用来给器件、管脚、节点、常量、集合、宏定义及信号命名。在源文件中使用关键字时,仅表明这个关键字的作用。一旦关键字被用于错误场合,语言处理程序将标出错误。n硬件描述语言中的关键字不区分大小写,可以用大写、小写或混合字体输入。第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言n下面按字母顺序列出ABEL-HDL的关键字。nasync_re
43、set 异步复位状态描述语句ncase-endcase 条件选择语句ndeclarations 定义段关键字ndevice 器件定义语句*nend 结束语句*nequations 逻辑方程关键字*nfunctional_block 功能模块定义语句第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言nfuses 熔丝状态定义语句ngoto 无条件转移语句nif-then-else 条件转移语句(只能用在状态图中)ninterface 功能模块接口定义语句nistype 属性定义语句*nlibrary 库引用语句nmacro 宏定义语句nmodule 模块语句*nnode 节点定义语句第七章可编
44、程逻辑器件ABEL硬件描述语言硬件描述语言noptions 控制选项定义语句npin 引脚定义语句*nproperty 特征定义语句nstate 状态描述语句nstate_diagram 状态图关键字nstate_register 状态寄存器说明语句nsync_reset 同步复位状态描述语句ntest_vectors 测试向量*ntitle 标题语句*第七章可编程逻辑器件ABEL硬件描述语言规则概要硬件描述语言规则概要 ntruth_table 真值表表头关键字*nwhen-then-else 条件转移语句(只能用在方程中)nwith-endwith 转移方程语句第七章可编程逻辑器件ABEL
45、硬件描述语言硬件描述语言n常量与数值n常量、定值可用于ABEL-HDL的逻辑设计。常量值可用在赋值语句、真值表与测试向量中,有时还可赋给标识符以表示该标识符在整个模块中都有定值。常量值可为数值或非数值型特殊常量。n在ABEL-HDL中的特殊常量输入时必须在字母两边加圆点以表示其为特殊常量,否则特殊常量.C.将被认为是标识符名C。特殊常量可用大写或小写字母。第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言nABEL-HDL中所有数值运算的精度都是128位,因此,有效数值范围是02128-1。n数值可用五种形式中的任一种表示,其中四种是用不同的数制来表示数值,第五种是用字母符号表示数值。第七章
46、可编程逻辑器件ABEL硬件描述语言硬件描述语言n.C.时钟输入电平(按低-高-低变化)n.K.时钟输入电平(按高-低-高变化)n.U.时钟上升沿(电平按低-高变化)n.D.时钟下降沿(电平按高-低变化)n.F.浮动输入或输出信号n.P.寄存器预装载n.X.任意态n.Z.高阻态第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言n当选用四种数制中的一种非默认数制来表示数据时,须在该数据前标明所用数制的符号。n表2-5列出了ABEL-HDL支持的四种数制及它们相应的符号,数制符号可用大写或小写输入。第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言表表7-5 ABEL-HDL中数值的不同进制表示
47、中数值的不同进制表示数制名数制名基数基数数制符号数制符号二进制二进制2B八进制八进制8O十进制十进制10D十六进制十六进制16H第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言n字符串和注释n字符串是用单引号(撇号)括起的一串ASCII码字符。字符串用于模块语句、标题语句、控制选项语句和引脚、节点、属性的定义中。n若要在字符串中使用单引号,要在它前面加一个反斜线“”。n注释是使源文件易读的另一种方式。它常被用来说明源文件本身不易理解之处,注释不影响源文件的内容。第七章可编程逻辑器件ABEL硬件描述语言硬件描述语言n可以有两种方式插入注释:n注释以双引号(“)开始,以另一双引号或行结束标志结
48、束。n注释以双斜线(/)开始,以行结束标志结束。第七章可编程逻辑器件ABEL硬件描述语言规则概要硬件描述语言规则概要 n运算符、表达式和方程nABEL-HDL表达式中可包含常量、信号名等对象。表达式将这些对象进行组合、比较或进行运算,以产生输出信号。这些运算(如加法、逻辑与)在表达式中用运算符来表示。nABEL-HDL的运算符可分为四种基本类型:逻辑运算符、算术运算符、关系运算符与赋值运算符。第七章可编程逻辑器件逻辑运算符逻辑运算符 表表7-6 ABEL-HDL中的逻辑运算符中的逻辑运算符运算符运算符说明说明!非非&与与#或或$异或异或!$异或非异或非第七章可编程逻辑器件算术运算符算术运算符
49、运算运算符符举例举例说说 明明 A求补码求补码(负数负数)AB减法减法+A+B加法加法*A*B乘法乘法/A/B无符号整数除法无符号整数除法%A%B取模取模:A/B的余数的余数AABA右移右移B位,位,零补缺位零补缺位第七章可编程逻辑器件关系运算符关系运算符运算符运算符说说 明明=等等 于于!=不等于不等于小于小于大于大于=大于或等于大于或等于所有关系运算都是无符号运算。所有关系运算都是无符号运算。第七章可编程逻辑器件赋值运算符赋值运算符 运算符运算符说说 明明=组合型赋值组合型赋值(确定态确定态):=寄存器型赋值寄存器型赋值(确定态确定态)?=组合型赋值组合型赋值(任意态任意态)?:=寄存器型
50、赋值寄存器型赋值(任意态任意态)注意:赋值运算符注意:赋值运算符:=和和?:=只能用在引脚到引只能用在引脚到引脚的寄存器方程中。脚的寄存器方程中。在使用详细点后缀的寄存器方程中要使用赋在使用详细点后缀的寄存器方程中要使用赋值运算符值运算符=和和?=。第七章可编程逻辑器件运算符的运算优先级运算符的运算优先级优先级优先级运算符运算符说说 明明1取二进制补码取二进制补码(负数负数)1!非非2&与与2右移右移2*乘法乘法2/无符号整数除法无符号整数除法2%取模取模3+加法加法3减法减法3#或或3$异或异或3!$异或非异或非4=等于等于4!=不等于不等于4小于小于4大于大于4=大于或等于大于或等于若同一