第 9 章 存储器和可编程逻辑器件 9.1 半导体存储器 9.2 可编程逻辑器件
9.1 半导体存储器 9.1.1 只读存储器(ROM) 1. ROM的结构
图 9-1 ROM的基本结构
存储矩阵是存放信息的主体,它由许多存储单元排列组成。每个存储单元存放一位二值代码(0 或 1),若干个存储单元组成一个“字”(也称一个信息单元)。 地址译码器有n条地址输入线A0~An-1,2n条译码输出线W0~W2n-1,每一条译码输出线Wi称为“字线”,它与存储矩阵中的一个“字”相对应。因此, 每当给定一组输入地址时,译码器只有一条输出字线Wi被选中,该字线可以在存储矩阵中找到一个相应的“字”,并将字中的m位信息Dm-1~D0送至输出缓冲器。读出Dm-1~D0的每条数据输出线Di也称为“位线”,每个字中信息的位数称为“字长”。
ROM的存储单元可以用二极管构成,也可以用双极型三极管或MOS管构成。存储器的容量用存储单元的数目来表示,写成“字数乘位数”的形式。对于图 9-1 的存储矩阵有2n个字, 每个字的字长为m,因此整个存储器的存储容量为2n×m位。 存储容量也习惯用K(1 K=1024)为单位来表示,例如1 K×4、 2 K×8 和 64 K×1的存储器,其容量分别是 1024×4 位、 2048×8 位 和 65 536×1 位。 输出缓冲器是ROM的数据读出电路,通常用三态门构成,它不仅可以实现对输出数据的三态控制,以便与系统总线联接, 还可以提高存储器的带负载能力。
图 9-2 二极管ROM结构图
图9-2 是具有两位地址输入和四位数据输出的ROM结构图, 其存储单元用二极管构成。图中,W0~W3四条字线分别选择存储矩阵中的四个字,每个字存放四位信息。制作芯片时,若在某个字中的某一位存入“1”,则在该字的字线Wi与位线Di之间接入二极管,反之,就不接二极管。 读出数据时,首先输入地址码,并对输出缓冲器实现三态控制,则在数据输出端D3~D0可以获得该地址对应字中所存储的数据。例如,当A1A0=00时,W0=1,W1=W2=W3=0,即此时W0被选中,读出W0对应字中的数据D3D2D1D0=1001。同理,当A1A0分别为01、10、11时,依次读出各对应字中的数据分别为 0111、1110、0101。因此,该ROM全部地址内所存储的数据可用表 9-1 表示。
表 9-1 图 9-2 ROM的数据表 地 址 数 据 A1 A0 D3 D2 D1 D0 0 0 0 1 1 0 1 1 1 0 0 1 数 据 A1 A0 D3 D2 D1 D0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 0 1
2. ROM在组合逻辑设计中的应用 从存储器的角度看,只要将逻辑函数的真值表事先存入ROM,便可用ROM实现该函数。例如,在表 9-1 的ROM数据表中,如果将输入地址A1、A0看成两个输入逻辑变量,而将数据输出D3、D2、D1、D0看成一组输出逻辑变量,则D3、D2、D1、D0就是A1、A0的一组逻辑函数,表 9-1就是这一组多输出组合逻辑函数的真值表,因此该ROM可以实现表 9-1 中的四个函数(D3、D2、D1、D0),其表达式为 (9-1)
从组合逻辑结构来看,ROM中的地址译码器形成了输入变量的所有最小项,即每一条字线对应输入地址变量的一个最小项。在图 9-2 中, 因此式(9-1)又可以写为:
图 9-3 ROM的阵列框图
图 9-4 图 9-2 ROM的阵列图
用ROM实现逻辑函数一般按以下步骤进行: ① 根据逻辑函数的输入、输出变量数目,确定ROM的容量,选择合适的ROM。 ② 写出逻辑函数的最小项表达式,画出ROM的阵列图。 ③ 根据阵列图对ROM进行编程。
【 例 9-1 】用ROM设计一个四位二进制码转换为格雷码的代码转换电路。 解:① 输入是四位自然二进制码B3~B0,输出是四位格雷码G3~G0,故选24×4 的ROM。 ② 四位二进制码转换为格雷码的真值表,即ROM的编程数据表如表 9-2 所示。由此可写出输出函数的最小项之和式为
表 9-2 二进制码转换为格雷码的真值表
(a) 二进制码转为格雷码的阵列图; (b) 逻辑符号图 ③ 用ROM实现码组转换的阵列图及逻辑符号图分别如图 9-5(a)、 (b)所示。 图 9-5 例 9-1 阵列图和逻辑符号图 (a) 二进制码转为格雷码的阵列图; (b) 逻辑符号图
3. ROM的编程及分类 ROM的编程是指将信息存入ROM的过程。根据编程和擦除的方法不同,ROM可分为掩模ROM、可编程ROM(PROM)和可擦除的可编程ROM(EPROM)三种类型。 1) 掩模ROM 掩模ROM中存放的信息是由生产厂家采用掩模工艺专门为用户制作的,这种ROM出厂时其内部存储的信息就已经“固化”在里边了,所以也称固定ROM。它在使用时只能读出,不能写入,因此通常只用来存放固定数据、固定程序和函数表等。
2) 可编程ROM(PROM) PROM在出厂时,存储的内容为全 0(或全 1),用户根据需要,可将某些单元改写为 1(或 0)。 这种ROM采用熔丝或PN结击穿的方法编程,由于熔丝烧断或PN结击穿后不能再恢复, 因此PROM只能改写一次。 熔丝型PROM的存储矩阵中,每个存储单元都接有一个存储管,但每个存储管的一个电极都通过一根易熔的金属丝接到相应的位线上,如图 9-6 所示。用户对PROM编程是逐字逐位进行的。首先通过字线和位线选择需要编程的存储单元,然后通过规定宽度和幅度的脉冲电流,将该存储管的熔丝熔断,这样就将该单元的内容改写了。
图 9-6 熔丝型PROM的存储单元
采用PN结击穿法PROM的存储单元原理图如图 9-7(a)所示,字线与位线相交处由两个肖特基二极管反向串联而成。正常工作时二极管不导通,字线和位线断开,相当于存储了“0”。若将该单元改写为“1”,可使用恒流源产生约 100~150 mA电流使V2击穿短路,存储单元只剩下一个正向连接的二极管V1(见图(b)),相当于该单元存储了“1”;未击穿V2的单元仍存储“0”。
图 9-7 PN结击穿法PROM的存储单元
3) 可擦除的可编程ROM(EPROM) 这类ROM利用特殊结构的浮栅MOS管进行编程,ROM中存储的数据可以进行多次擦除和改写。 最早出现的是用紫外线照射擦除的EPROM(Ultra-Violet Erasable Programmable Read-Only Memory, 简称UVEPROM)。 不久又出现了用电信号可擦除的可编程ROM(Electrically Erasable Programmable Read-Only Memory, 简称E2PROM)。 后来又研制成功的快闪存储器(Flash Memory)也是一种用电信号擦除的可编程ROM。
① EPROM的存储单元采用浮栅雪崩注入MOS管(Floating-gate Avalanche-Injuction Metal-Oxide-Semiconductor, 简称FAMOS管)或叠栅注入MOS管(Stacked-gate Injuction Metal-Oxide-Semiconductor, 简称SIMOS管)。 图 9-8是SIMOS管的结构示意图和符号,它是一个N沟道增强型的MOS管,有Gf和Gc两个栅极。Gf栅没有引出线,而是被包围在二氧化硅(SiO2)中,称之为浮栅,Gc为控制栅,它有引出线。若在漏极D端加上约几十伏的脉冲电压,使得沟道中的电场足够强,则会造成雪崩,产生很多高能量的电子。此时若在Gc上加高压正脉冲,形成方向与沟道垂直的电场,便可以使沟道中的电子穿过氧化层面注入到Gf,于是Gf栅上积累了负电荷。由于Gf栅周围都是绝缘的二氧化硅,泄漏电流很小,所以一旦电子注入到浮栅之后,就能保存相当长时间(通常浮栅上的电荷10年才损失30%)。
图 9-8 SIMOS管的结构和符号
如果浮栅Gf上积累了电子,则使该MOS管的开启电压变得很高。此时给控制栅(接在地址选择线上)加+5V电压时,该MOS管仍不能导通,相当于存储了“0”;反之,若浮栅Gf上没有积累电子,MOS管的开启电压较低,因而当该管的控制栅被地址选中后,该管导通,相当于存储了“1”。可见,SIMOS管是利用浮栅是否积累负电荷来表示信息的。这种EPROM出厂时为全“1”,即浮栅上无电子积累,用户可根据需要写“0”。 擦除EPROM的方法是将器件放在紫外线下照射约20分钟, 浮栅中的电子获得足够能量,从而穿过氧化层回到衬底中, 这样可以使浮栅上的电子消失,MOS管便回到了未编程时的状态,从而将编程信息全部擦去,相当于存储了全“1”。对EPROM的编程是在编程器上进行的,编程器通常与微机联用。
② E2PROM的存储单元如图 9-9 所示,图中V2是选通管,V1是另一种叠栅MOS管,称为浮栅隧道氧化层MOS管(Floating-gate Tunnel Oxide MOS,简称Flotox),其结构如图 9-10 所示。Flotox管也是一个N沟道增强型的MOS管,与SIMOS管相似,它也有两个栅极——控制栅Gc和浮栅Gf,不同的是Flotox管的浮栅与漏极区(N+)之间有一小块面积极薄的二氧化硅绝缘层(厚度在2×10-8m以下)的区域,称为隧道区。当隧道区的电场强度大到一定程度(>107V/cm)时,漏区和浮栅之间出现导电隧道,电子可以双向通过,形成电流。这种现象称为隧道效应。
图 9-9 E2PROM的存储单元
图 9-10 Flotox管的结构和符号
在图 9-9电路中,若使Wi=1, Di接地,则V2导通,V1漏极(D1)接近地电位。此时若在V1控制栅Gc上加21 V正脉冲,通过隧道效应,电子由衬底注入到浮栅Gf,脉冲过后,控制栅加+3V电压, 由于V1浮栅上积存了负电荷,因此V1截止,在位线Di读出高电平“1”; 若V1控制栅接地,Wi=1,Di上加21V正脉冲,使V1漏极获得约 +20 V的高电压,则浮栅上的电子通过隧道返回衬底, 脉冲过后,正常工作时V1导通,在位线上则读出“0”。可见, Flotox管是利用隧道效应使浮栅俘获电子的。E2PROM的编程和擦除都是通过在漏极和控制栅上加一定幅度和极性的电脉冲实现的,虽然已改用电压信号擦除了,但E2PROM仍然只能工作在它的读出状态,作ROM使用。
③ 快闪存储器(Flash Memory)是新一代电信号擦除的可编程ROM。它既吸收了EPROM结构简单、编程可靠的优点,又保留了E2PROM用隧道效应擦除快捷的特性,而且集成度可以做得很高。 图9-11(a)是快闪存储器采用的叠栅MOS管示意图。其结构与EPROM中的SIMOS管相似,两者区别在于浮栅与衬底间氧化层的厚度不同。在EPROM中氧化层的厚度一般为30~40 nm,在快闪存储器中仅为 10~15 nm, 而且浮栅和源区重叠的部分是源区的横向扩散形成的,面积极小, 因而浮栅-源区之间的电容很小,当Gc和S之间加电压时,大部分电压将降在浮栅-源区之间的电容上。快闪存储器的存储单元就是用这样一只单管组成的,如图 9-11(b)所示。
图 9-11 快闪存储器 (a) 叠栅MOS管; (b) 存储单元
快闪存储器的写入方法和EPROM相同, 即利用雪崩注入的方法使浮栅充电。 在读出状态下,字线加上+5V,若浮栅上没有电荷,则叠栅MOS管导通,位线输出低电平;如果浮栅上充有电荷,则叠栅管截止,位线输出高电平。 擦除方法是利用隧道效应进行的,类似于E2PROM写0时的操作。在擦除状态下,控制栅处于0电平,同时在源极加入幅度为 12 V左右、宽度为 100 ms的正脉冲,在浮栅和源区间极小的重叠部分产生隧道效应,使浮栅上的电荷经隧道释放。但由于片内所有叠栅MOS管的源极连在一起,所以擦除时是将全部存储单元同时擦除,这是不同于E2PROM的一个特点。
9.1.2 随机存取存储器(RAM) 随机存取存储器也称随机存储器或随机读/写存储器,简称RAM。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。根据存储单元的工作原理不同, RAM分为静态RAM和动态RAM。 1. 静态随机存储器(SRAM) 1) 基本结构 SRAM主要由存储矩阵、地址译码器和读/写控制电路三部分组成,其框图如图 9-12 所示。
图 9-12 SRAM的基本结构
存储矩阵由许多存储单元排列组成,每个存储单元能存放一位二值信息(0或1),在译码器和读/写电路的控制下,进行读/写操作。 地址译码器一般都分成行地址译码器和列地址译码器两部分, 行地址译码器将输入地址代码的若干位A0~Ai译成某一条字线有效,从存储矩阵中选中一行存储单元;列地址译码器将输入地址代码的其余若干位(Ai+1~An-1)译成某一根输出线有效,从字线选中的一行存储单元中再选一位(或n位),使这些被选中的单元与读/写电路和I/O(输入/输出端)接通,以便对这些单元进行读/写操作。
读/写控制电路用于对电路的工作状态进行控制。CS称为片选信号,当CS=0时,RAM工作,CS=1时,所有I/O端均为高阻状态,不能对RAM进行读/写操作。称为读/写控制信号。R/W=1 时,执行读操作,将存储单元中的信息送到I/O端上;当R/W=0时,执行写操作,加到I/O端上的数据被写入存储单元中。
2) SRAM的静态存储单元 静态RAM的存储单元如图 9-13 所示,图 9-13(a)是由六个NMOS管(V1~V6)组成的存储单元。V1、V2构成的反相器与V3、V4构成的反相器交叉耦合组成一个RS触发器,可存储一位二进制信息。Q和Q是RS触发器的互补输出。V5、V6是行选通管,受行选线X(相当于字线)控制,行选线X为高电平时Q和Q的存储信息分别送至位线D和位线D。V7、V8是列选通管,受列选线Y控制,列选线Y为高电平时,位线D和D上的信息被分别送至输入输出线I/O和I/O,从而使位线上的信息同外部数据线相通。
(a) 六管NMOS存储单元; (b)六管CMOS存储单元 图 9-13 SRAM存储单元 (a) 六管NMOS存储单元; (b)六管CMOS存储单元
读出操作时,行选线X和列选线Y同时为“1”,则存储信息Q和Q被读到I/O线和I/O线上。写入信息时,X、Y线也必须都为“1”,同时要将写入的信息加在I/O线上,经反相后I/O线上有其相反的信息,信息经V7、V8 和V5、V6加到触发器的Q端和Q端,也就是加在了V3和V1的栅极,从而使触发器触发,即信息被写入。 由于CMOS电路具有微功耗的特点,目前大容量的静态RAM中几乎都采用CMOS存储单元,其电路如图9-13(b)所示。 CMOS存储单元结构形式和工作原理与图 9-13(a)相似,不同的是图(b)中,两个负载管V2、V4改用了P沟道增强型MOS管, 图中用栅极上的小圆圈表示V2、V4为P沟道MOS管,栅极上没有小圆圈的为N沟道MOS管。
2. 动态随机存储器(DRAM) 动态RAM的存储矩阵由动态MOS存储单元组成。动态MOS存储单元利用MOS管的栅极电容来存储信息,但由于栅极电容的容量很小,而漏电流又不可能绝对等于0,所以电荷保存的时间有限。为了避免存储信息的丢失,必须定时地给电容补充漏掉的电荷。通常把这种操作称为“刷新”或“再生”,因此DRAM内部要有刷新控制电路,其操作也比静态RAM复杂。尽管如此,由于DRAM存储单元的结构能做得非常简单,所用元件少,功耗低,所以目前已成为大容量RAM的主流产品。
动态MOS存储单元有四管电路、三管电路和单管电路等。四管和三管电路比单管电路复杂,但外围电路简单,一般容量在 4 K以下的RAM多采用四管或三管电路。图 9-14(a)为四管动态MOS存储单元电路。图中,V1和V2为两个N沟道增强型MOS管,它们的栅极和漏极交叉相连,信息以电荷的形式储存在电容C1和C2上,V5、V6 是同一列中各单元公用的预充管,φ是脉冲宽度为 1μs而周期一般不大于2ms的预充电脉冲,CO1、CO2是位线上的分布电容,其容量比C1、C2大得多。
(a) 四管动态MOS存储单元; (b) 单管动态MOS存储单元
若C1被充电到高电位,C2上没有电荷,则V1导通,V2截止,此时Q=0,Q=1这一状态称为存储单元的0状态;反之,若C2充电到高电位,C1上没有电荷,则V2导通,V1截止, Q=1, Q=0, 此时称为存储单元的 1 状态。当字选线X为低电位时,门控管V3、V4均截止。在C1和C2上电荷泄漏掉之前,存储单元的状态维持不变,因此存储的信息被记忆。实际上,由于V3、V4存在着泄漏电流,电容C1、C2 上存储的电荷将慢慢释放,因此每隔一定时间要对电容进行一次充电,即进行刷新。两次刷新之间的时间间隔一般不大于 20ms。
在读出信息之前,首先加预充电脉冲φ,预充管V5、V6导通,电源UDD向位线上的分布电容CO1、CO2充电,使D和D两条位线都充到UDD。预充脉冲消失后,V5、V6截止,CO1、CO2上的信息保持。 要读出信息时,该单元被选中(X、Y均为高电平),V3、V4导通,若原来存储单元处于 0 状态(Q=0,Q=1),即C1上有电荷,V1导通,C2上无电荷,V2截止,这样CO1经V3、V1放电到 0,使位线D为低电平,而CO2因V2截止无放电回路,所以经V4对C1充电,补充了C1漏掉的电荷,结果读出数据仍为D=1, D=0; 反之,若原存储信息为 1(Q=1, Q=0),C2上有电荷,则预充电后CO2经V4、V2放电到 0,而CO1经V3对C2补充充电,读出数据为D=0,D=1,可见位线D、D上读出的电位分别和C2、C1上的电位相同。同时每进行一次读操作,实际上也进行了一次补充充电即刷新。
写入信息时,首先该单元被选中,V3、V4导通,Q和Q分别与两条位线连通。若需要写 0,则在位线D上加高电位,D上加低电位。这样D上的高电位经V4向C1充电,使Q=1,而C2经V3向D放电,使Q=0,于是该单元写入了 0 状态。 图9-14(b)是单管动态MOS存储单元,它只有一个NMOS管和存储电容器CS, CO是位线上的分布电容(CO>>CS)。 显然,采用单管存储单元的DRAM,其容量可以做得更大。写入信息时,字线为高电平,V导通,位线上的数据经过V存入CS。
读出信息时也使字线为高电平,V管导通,这时CS经V向CO充电,使位线获得读出的信息。设位线上原来的电位UO=0,CS原来存有正电荷,电压US为高电平,因读出前后电荷总量相等,因此有USCS=UO(CS+CO),因CO>>CS,所以UO<<US。例如读出前US=5V,CS/CO=1/50,则位线上读出的电压将仅有 0.1V, 而且读出后CS上的电压也只剩下 0.1V,这是一种破坏性读出。因此每次读出后,要对该单元补充电荷进行刷新,同时还需要高灵敏度读出放大器对读出信号加以放大。
9.1.3 存储器容量的扩展 1. 位数的扩展 存储器芯片的字长多数为一位、四位、八位等。当实际的存储系统的字长超过存储器芯片的字长时,需要进行位扩展。 位扩展可以利用芯片的并联方式实现,图9-15是用八片 1024×1 位的RAM扩展为1024×8 位RAM的存储系统框图。 图中八片RAM的所有地址线、R/W、CS分别对应并接在一起, 而每一片的I/O端作为整个RAM的I/O端的一位。 ROM芯片上没有读/写控制端R/W,位扩展时其余引出端的连接方法与RAM相同。
图 9-15 RAM的位扩展连接法
2. 字数的扩展 字数的扩展可以利用外加译码器控制芯片的片选(CS)输入端来实现。图 9 -16 是用字扩展方式将四片256×8 位的RAM扩展为1024×8 位RAM的系统框图。图中,译码器的输入是系统的高位地址A9、A8,其输出是各片RAM的片选信号。若A9A8=01,则RAM(2)片的CS=0,其余各片RAM的CS均为1, 故选中第二片。只有该片的信息可以读出,送到位线上,读出的内容则由低位地址A7~A0决定。显然,四片RAM轮流工作,任何时候,只有一片RAM处于工作状态,整个系统字数扩大了四倍,而字长仍为八位。 ROM的字扩展方法与上述方法相同。
图 9-16 RAM的字扩展
9.2 可编程逻辑器件 9.2.1 概述 自20世纪60年代以来,数字集成电路已经历了从SSI、 MSI、LSI到VLSI的发展过程。数字集成电路按照芯片设计方法的不同大致可以分为三类: ① 通用型中、 小规模集成电路; ② 用软件组态的大规模、 超大规模集成电路, 如微处理器、 单片机等; ③ 专用集成电路(ASIC-Application Specific Integrated Circuit)。 ASIC是一种专门为某一应用领域或为专门用户需要而设计、制造的LSI或VLSI电路,它可以将某些专用电路或电子系统设计在一个芯片上, 构成单片集成系统。
9.2.2 低密度可编程逻辑器件 低密度可编程逻辑器件的集成密度约为每片 700 个等效门以下,它主要包括PROM、FPLA、PAL和GAL四种器件。 1. PLD电路的基本结构 1) PLD电路的表示方法 由于PLD内部电路的连接十分庞大,所以对其进行描述时采用了一种与传统方法不相同的简化方法。
PLD的输入、输出缓冲器都采用了互补输出结构,其表示法如图 9-17 所示。
PLD的与门表示法如图 9-18 所示。图中与门的输入线通常画成行(横)线,与门的所有输入变量都称为输入项,并画成与行线垂直的列线以表示与门的输入。列线与行线相交的交叉处若有“·”,表示有一个耦合元件固定连接;“×”表示编程连接;交叉处若无标记则表示不连接(被擦除)。 与门的输出称为乘积项P,图中与门的输出P=A·B·D。 或门可以用类似的方法表示,也可以用传统的方法表示,如图 9-19 所示。
图 9-18 PLD与门表示法
图 9-19 PLD或门表示法
图 9-20 PLD与门简略表示法
图9-20是PLD中与门的简略表示法。图中与门P1的全部输入项接通,因此P1=A·A·B·B=0,这种状态称为与门的缺省(Default)状态。为简便起见,对于这种全部输入项都接通的缺省状态,可以用带有“×”的与门符号表示,如图中的P2=P1=0 表示缺省状态。P3中任何输入项都不接通,即所有输入都悬空,因此P3=1,也称为“悬浮1”状态。
2) PLD的基本结构 图 9-21 PLD基本结构框图
表 9-3 四种PLD的结构特点 类型 阵 列 输 出 方 式 与 或 PROM FPLA PAL GAL 固定 可编程 TS、 OC TS、 OC、 H、 L TS、 I/O、 寄存器 用户定义
图 9-22 PROM结构
图 9-23 FPLA结构
图 9-24 PAL和GAL基本门阵列
2. 现场可编程逻辑阵列(FPLA) 1970年制成的PROM是最早出现的PLD。由前面分析可知,PROM由全译码的与阵列和可编程的或阵列组成,由于其阵列规模大,速度低,因而它的基本用途是用作存储器,如软件固化、显示查寻等。 FPLA是20 世纪 70 年代中期在PROM基础上发展起来的PLD,它的与阵列和或阵列均可编程。采用FPLA实现逻辑函数时只需要运用化简后的与或式,由与阵列产生与项,再由或阵列完成与项相或的运算后便得到输出函数。
【例9-2】试用FPLA实现例9-1要求的四位二进制码转换为格雷码的代码转换电路。 解: 根据表9-2所示的码组转换真值表,将多输出函数化简后得出最简输出表达式:
图9-25 例 9-2FPLA的阵列图
图 9-26 时序型FPLA结构图
【 例 9-3 】试用 FPLA和JK触发器实现模 4 可逆计数器。 当X=0 时进行加法计数;X=1时进行减法计数。 根据状态图可求得时序电路的激励方程和输出方程为
图 9-27 例 9-3模 4 可逆计数器 (a) 状态图; (b) 阵列图
3. 可编程阵列逻辑(PAL) 1) PAL的输出结构 (1) 专用输出结构 这种结构的输出端只能输出信号,不能兼做输入,例如四个乘积项的或非门输出结构如图9-28(a)所示。输入信号I经过输入缓冲器与“输入行”相连。 图中的输出部分采用或非门, 输出用O标记,表示低电平有效。若输出部分采用或门,则为高电平有效。有的器件还用互补输出的或门,则称为互补型输出。这种输出结构只适用于实现组合逻辑函数。目前常用的产品有PAL10H8(10输入,8 输出,高电平有效)、PAL10L8、 PAL16C1(16输入,1 输出,互补型)等。
(a) 专用输出结构; (b) 可编程I/O结构; (c) 寄存器输出结构; (d) 异或型输出结构 图 9-28 PAL的四种输出结构 (a) 专用输出结构; (b) 可编程I/O结构; (c) 寄存器输出结构; (d) 异或型输出结构
(a) 专用输出结构; (b) 可编程I/O结构; (c) 寄存器输出结构; (d) 异或型输出结构 图 9-28 PAL的四种输出结构 (a) 专用输出结构; (b) 可编程I/O结构; (c) 寄存器输出结构; (d) 异或型输出结构
(2) 可编程I/O结构 可编程I/O结构如图9-28(b)所示。图中,或门经三态缓冲器由I/O端引出,三态门受最上面一个与门所对应的乘积项控制,I/O端的信号也可经过缓冲器反馈到与阵列的输入。 当与门输出为“0”时,三态门禁止,输出呈高阻状态,I/O引脚作输入使用;当与门输出为“1”时,三态门被选通, I/O引脚作输出使用。这种结构的产品有PAL16L8、PAL20L10等。
(3) 寄存器输出结构 寄存器输出结构如图 9-28(c)所示。这种结构输出端有一个D触发器,在时钟上升沿作用下先将或门的输出(输入乘积项的和)寄存在D触发器的Q端,当使能信号EN有效时,Q端的信号经三态缓冲器反相后输出,输出为低电平有效。触发器的Q输出还可以通过反馈缓冲器送至与阵列的输入端, 因而这种结构的PAL能记忆原来的状态,从而实现时序逻辑功能。这种结构的PAL产品有PAL16R4、 PAL16R8 等。
(4) 异或型输出结构 异或型输出结构如图9-28(d)所示。其输出部分有两个或门,它们的输出经异或门进行异或运算后再经D触发器和三态缓冲器输出。这种结构不仅便于对与—或逻辑阵列输出的函数求反,还可以实现对寄存器状态进行保持操作。例如图9-28(d)中,P1=I, P2=Q, F=P1P2。当I=0时,D=F=0Q=Q, 所以Qn+1=Q,即时钟来到时触发器状态保持不变;当I=1时, D=F=1Q=Q,所以Qn+1=Q。这种结构的PAL产品有PAL20X4、 PAL20X8等。 PAL器件除了以上几种结构外,还有算术选通反馈结构。另外,PAL产品有 20 多种不同的型号可供用户选用。
2) PAL的特点 PAL器件是在FPAL器件之后第一个具有典型实用意义的可编程逻辑器件。 PAL和SSI、 MSI通用标准器件相比有许多优点: ① 提高了功能密度,节省了空间。 通常一片PAL可以代替 4~12 片 SSI或 2~4 片MSI。同时PAL只有 20 多种型号,但可以代替 90% 的通用SSI、MSI器件,因而进行系统设计时,可以大大减少器件的种类。② 提高了设计的灵活性,且编程和使用都比较方便。 ③ 有上电复位功能和加密功能,可以防止非法复制。 PAL的主要缺点是由于它采用了双极型熔丝工艺(PROM结构),只能一次性编程,因而使用者仍要承担一定的风险。另外PAL器件输出电路结构的类型繁多,因此也给设计和使用带来一些不便。
4. 通用阵列逻辑(GAL) GAL是Lattice公司于1985年首先推出的新型可编程逻辑器件。它采用了电擦除、电可编程的E2CMOS工艺制作,可以用电信号擦除并反复编程上百次。GAL器件的输出端设置了可编程的输出逻辑宏单元(OLMC-Output Logic Macro Cell),通过编程可以将OLMC设置成不同的输出方式。这样同一型号的GAL器件可以实现PAL器件所有的各种输出电路工作模式,即取代了大部分PAL器件, 因此称为通用可编程逻辑器件。 GAL器件分两大类:一类为普通型GAL,其与或阵列结构与PAL相似,如GAL16V8、ispGAL16Z8、GAL20V8都属于这一类;另一类为新型GAL,其与或阵列均可编程, 与FPLA结构相似,主要有GAL39V8。
1) GAL的基本结构 图 9-29 GAL16V8逻辑图及引脚图 逻辑图; (b) 引脚图
① 8 个输入缓冲器和 8 个输出反馈/输入缓冲器。 ② 8 个输出逻辑宏单元OLMC, 8 个三态缓冲器, 每个OLMC对应 1 个I/O引脚。 ③ 由 8×8 个与门构成的与阵列, 共形成 64 个乘积项, 每个与门有 32 个输入项,由8 个输入的原变量、反变量(16)和 8 个反馈信号的原变量、反变量(16)组成,故可编程与阵列共有 32×8×8=2048 个可编程单元。 ④ 系统时钟CK和三态输出选通信号OE的输入缓冲器。
2) 输出逻辑宏单元(OLMC) (1) OLMC的结构 图 9-30 OLMC的内部结构
每个OLMC包含或门阵列中的一个或门。一个或门有 8 个输入端,和来自与阵列的 8 个乘积项(PT)相对应。其中 7 个直接相连,第一个乘积项(图中最上边的一项)经PTMUX相连或门输出为有关乘积项之和。 异或门的作用是选择输出信号的极性。当XOR(n)为1时, 异或门起反相器作用,否则起同相器作用。XOR(n)是控制字中的一位,n为引脚号。 D触发器(寄存器)对异或门的输出状态起记忆(存储)作用,使GAL适用于时序逻辑电路。 4个多路开关(MUX)在结构控制字段作用下设定输出逻辑宏单元的组态。
PTMUX是乘积项选择器,在AC1(n)·AC0控制下选择第一乘积项或地(0)送至或门输入端。 OMUX是输出类型选择器,在AC1(n)+AC0控制下选择组合型(异或门输出)或寄存型(经D触发器存储后输出)逻辑运算结果送到输出缓冲器。 TSMUX是三态缓冲器的使能信号选择器,在AC1(n)和AC1控制下从UCC、地、OE或第一乘积项中选择 1 个作为输出缓冲器的使能信号。 FMUX是反馈源选择器。在AC1(n)、AC0控制下选择D触发器的Q、本级OLMC输出、邻级OLMC的输出或地电平作为反馈源送回与阵列作为输入信号。
(2) 结构控制字 GAL的结构控制字共 82 位,每位取值为“1”或“0”,如图 9-31 所示。图中XOR(n)和AC1(n)字段下的数字对应各个OLMC的引脚号。 图 9-31 GAL的结构控制字
SYN 决定GAL器件是具有寄存器型(时序型)输出能力(SYN=0),还是纯粹组合型输出能力(SYN=1)。在OLMC(12)和OLMC(19)中,SYN还替代AC1(n),SYN替代AC0作为FMUX的选择输入,以维护与PAL器件的兼容性。 AC0、AC1(n) 方式控制位。8 个OLMC公用1位AC0。AC1(n)共 8 位,每个OLMC(n)有1位,n为引脚号(12~19)。 AC0, AC1(n)两者配合控制各MUX的工作。 XOR(n) 极性控制位,共 8 位,每个OLMC(n)有 1 位,它通过异或门来控制输出极性。XOR(n)=0时,输出低有效; XOR(n)=1 时,输出高有效。
PT(n) 积项禁止位,共 64 位,和与阵列中 64 个乘积项(PT0~PT63)相对应,用以禁止(屏蔽)某些不用的乘积项。 在SYN、AC0、AC1(n)组合控制下,OLMC(n)可组态配置成 5 种工作模式,表 9-4 列出了各种模式下对控制位的配置和选择。图 9-32(a)~(e)分别表示不同配置模式下OLMC的等效电路。OLMC组态的实现,即结构控制字各控制位的设定都是由开发软件和硬件自动完成的。 从以上分析看出GAL器件由于采用了OLMC,所以使用更加灵活,只要写入不同的结构控制字,就可以得到不同类型的输出电路结构。这些电路结构完全可以取代PAL器件的各种输出电路结构。
表 9-4 OLMC工作模式的配置选择
图 9-32 OLMC 5 种工作模式的等效电路 (a) 专用输入模式; (b) 专用组合输出模式; (c) 反馈组合输出模式; (d) 时序电路中的组合输出模式; (e) 寄存器输出模式
3) 行地址映射 图 9-33 GAL16V8 行地址映射图
GAL的逻辑功能、工作模式都是靠编程来实现的。编程时写入的数据按行安排,GAL16V8 共分 64 行,供用户使用的有 36 行。图 9-33 表示GAL16V8 编程单元的地址分配和功能划分情况,因为它并不是实际的空间布局图,所以称为行地址映射图。 第 0~31 行对应与逻辑阵列的编程单元,编程后可产生 0~63 共 64 个乘积项。 第 32 行是电子标签(ES), 供用户存放各种备查的信息。 如器件的编号、电路的名称、编程日期、 编程次数等。 第 33~59 行是制造厂家保留的地址空间, 用户不能利用。
第 60 行是结构控制字,共有 82 位,用于设定 8 个OLMC的工作模式和 64 个乘积项的禁止。 第 61 行是一位加密单元。这一位被编程以后,将不能对与逻辑阵列作进一步的编程或读出验证,因此可以实现对电路设计结果的保密。只有在与逻辑阵列被整体擦除时,才能将加密单元同时擦除。但是电子标签的内容不受加密单元的影响,在加密单元被编程后电子标签的内容仍可读出。 第 63 行只包含一位,用于整体擦除。 对GAL编程时是逐行进行的,被编程的数据从第 9 脚以串行方式送入 64 位移位寄存器,寄存器装满一次,就对GAL阵列写一行。
4) GAL器件的特点 GAL器件有以下优点: ① 采用电擦除工艺和高速编程方法,使编程改写变得方便、 快速,整个芯片改写只需数秒钟,一片可改写 100 次以上。 ② 采用高性能的E2CMOS工艺,保证了GAL的高速度和低功耗。存取速度为 12~40 ns,功耗仅为双极性PAL器件的1/2 或 1/4(90 mA或 45 mA),编程数据可保存 20 年以上。 ③ 采用可编程的输出逻辑宏单元(OLMC),使得GAL器件对复杂逻辑门设计具有极大的灵活性。GAL16V8 可以仿真或代替 20 脚的PAL器件约 21 种。
④ 可预置和加电复位全部寄存器, 具有 100%的功能可测试性。 ⑤ 备有加密单元, 可防止他人抄袭设计电路。 ⑥ 备有电子标签(ES), 方便了文档管理, 提高了生产效率。 GAL和PAL一样都属于低密度PLD,其共同缺点是规模小, 每片相当于几十个等效门电路,只能代替 2~4 片MSI器件, 远达不到LSI和VLSI专用集成电路的要求。另外,GAL在使用中还有许多局限性,如一般GAL只能用于同步时序电路,各OLMC中的触发器只能同时置位或清 0,每个OLMC中的触发器和或门还不能充分发挥其作用,且应用灵活性差等。这些不足之处,都在高密度PLD中得到了较好的解决。
9.2.3 高密度可编程逻辑器件 1. 阵列型高密度可编程逻辑器件 1) 可编程逻辑宏单元 逻辑宏单元内部主要包括与阵列、 或阵列、 可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式。EPLD与GAL相似,其逻辑宏单元和I/O做在一起, 因此称为输出逻辑宏单元;CPLD的宏单元在内部,称为内部逻辑宏单元。这些宏单元除了其密度比PAL、GAL高以外,还有许多优点:
(1) 多触发器结构和“隐埋”触发器结构 GAL器件的每个OLMC中只有一个触发器,而EPLD、 CPLD的宏单元内通常含两个或两个以上触发器,其中一个触发器与输出端相连, 其余触发器的输出不和输出相连, 但可以通过相应的缓冲电路反馈到与阵列,从而与其它触发器构成较复杂的时序电路。这些不与输出端相连的触发器称为“隐埋”触发器。图 9-34 是EPLD ATV750 的OLMC结构, 它有两个触发器都可直接反馈到与阵列。这种“隐埋”触发器结构对于引脚数有限的PLD器件来说,可以增加触发器数目,即增加了内部资源。
图 9-34 ATV750 OLMC电路结构图
(2) 乘积项共享结构 在PAL和GAL的与阵列中,每个或门的输入乘积项最多为7 个或 8 个,当要实现多于 8 个乘积项的“与-或”逻辑函数时,必须将“与-或”函数表达式进行逻辑变换。在EPLD和CPLD的宏单元中,如果输出表达式的与项较多,而对应的或门输入端不够用时,可以借助可编程开关将同一单元(或其它单元)中的其它或门与之联合起来使用,或者在每个宏单元中提供未使用的乘积项供其它宏单元使用和共享。
图 9-35 MAX7128宏单元结构图
图 9-36 MAX7128的乘积项共享结构
(3) 异步时钟和时钟选择 EPLD、CPLD中各触发器的时钟可以异步工作,通常时钟信号可以通过数据选择器或时钟网络进行选择,触发器的异步清 0 和异步置位信号也可以利用乘积项来控制。例如在图9-35 中,7128 宏单元中的触发器可以单独地编程为具有可编程时钟控制的D、T、JK或SR触发器工作方式,每个可编程触发器可以按三种不同方式选择时钟: ① 全局时钟信号; ② 全局时钟,同时由高电平有效的时钟信号所使能; ③ 用乘积项实现阵列的时钟。触发器的异步清 0 功能可以通过选择乘积项反相的低电平信号或全局清除信号来控制;异步置位功能也可通过乘积项反相后的低电平信号来控制。
2) 可编程I/O单元 输入/输出单元简称I/O单元或IOC,它是内部信号到I/O引脚的接口部分。由于CPLD通常只有少数几个专用输入端,大部分端口均为I/O端,而且系统的输入信号常常需要锁存,因此I/O常作为一个独立单元来处理。 通过编程可以使每个I/O引脚单独地配置为输入、输出和双向工作、寄存器输入等各种不同的工作方式,因而使I/O端的使用更为方便、灵活。图 9-37 示出了Lattice公司ispLSI 1016 的输入、输出单元(IOC)的结构图。该单元有输入、输出和双向I/O三类组态,靠控制输出三态门使能的MUX来选择。MUX有两个可编程地址输入A1A0(图中为未编程状态)。
当A1A0=00时,三态缓冲器的输出使能为高电平,IOC处于专用输出组态;若A1A0=01或 10,则将由逻辑块GLB送来的信号控制使能,处于双向I/O组态或具有三态缓冲电路的输出组态;若A1A0=11,则使能端接地,I/O处于专用输入组态。第二行MUX用来选择输出极性和选择信号的输出途径。第三行MUX用来选择输入组态用何种方式输入,即为寄存器输入还是锁存器输入,它靠D触发器中的R/L端编程来确定。以上各种I/O组态可以用图 9-38 所示各电路表示。
图 9-37 ispLSI 1016的IOC结构图
图 9-38 IOC的各种组态
3) 可编程连线阵列 可编程连线阵列的作用是在各逻辑宏单元之间以及各逻辑宏单元和I/O单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自专用输入或输入端的信号,并将宏单元的信号反馈到其需要到达的目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。图 9-39是Altera公司MAX7000A器件的结构框图。MAX7000结构主要由高性能的逻辑阵列块LAB、I/O控制块以及可编程连线阵列PIA组成。每个逻辑阵列块LAB由 16 个宏单元组成,多个LAB通过可编程连线阵PIA和全局总线连接在一起,并构成所需要的逻辑。全局总线由所有的专用输入、I/O控制块和宏单元馈给信号送至PIA, PIA再把这些信号再送到器件内各个地方。
图 9-39 MAX7000A结构框图
2. 现场可编程门阵列FPGA 它由可配置逻辑块(CLB-Confiqurable Logic Block)、输入/输出模块(IOB-I/O Block)和互连资源(IR-Interconnect Resource)三部分组成。可配置逻辑块CLB是实现用户功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源(IR)包括各种长度的连线线段和一些可编程连接开关, 它们将各个CLB之间或CLB、 IOB之间以及IOB之间连接起来,构成特定功能的电路。
图 9-40 FPGA的基本结构
FPGA的功能由逻辑结构的配置数据决定。工作时,这些配置数据存放在片内的SRAM或熔丝图上。基于SRAM的FPGA器件,在工作前需要从芯片外部加载配置数据。配置数据可以存储在片外的EPROM、E2PROM或计算机软、硬盘中。人们可以控制加载过程,在现场修改器件的逻辑功能, 即所谓现场编程。 可配置逻辑块(CLB)一般有三种结构形式: ① 查找表结构; ② 多路开关结构; ③ 多级与非门结构。不同厂家生产的FPGA, 其CLB、 IOB等结构都存在较大的差异,下面以Xilinx公司的产品为例, 简要介绍CLB、 IOB及IR的基本特点。
图 9-41 XC4000的CLB结构图 1) 可配置逻辑块(CLB)
图 9-42 CLB的配置
两个D触发器具有如下特点:每个触发器均通过编程确定为时钟上升沿触发或下降沿触发;每个触发器均有时钟使能信号EC,它可通过信号变换电路受外部信号控制或固定逻辑1电平;通过对S/R控制逻辑的编程,每只D触发器均可经信号变换电路,分别进行异步置位或异步清 0 操作, 也可对一只触发器异步置位而另一只异步清 0。CLB的这种特殊结构,使触发器的时钟、时钟使能、置位和复位均可被独立设置,且可独立工作,彼此之间没有约束关系, 从而为实现不同功能时序逻辑电路提供了可能性。
D触发器激励端的数据来源是由编程确定的,可以从G′、F′、H′或者信号变换电路送来的DIN这 4 个信号中选择一个。触发器的状态经CLB的输出端YQ和XQ输出。
图 9-41 CLB中所示的F和G组合逻辑函数发生器还可作为器件内高速RAM或小的可读/写存储器使用,它由信号变换电路编程控制, 当信号变换电路编程设置存储功能无效时,F和G作为组合逻辑函数发生器使用,4 个控制信号C1~C4分别将图 9-41 所示的H1、DIN、S/R(异步置位/复位)和EC(使能)信号接入CLB中,作为函数发生器的输入可控制信号。 当信号变换电路编程设置存储器功能有效时,F和G作为器件内部存储器使用,4 个控制信号C1~C4分别将WE、D1/A4、D0和EC(不用)信号接入到CLB中,作为存储器的写使能、数据信号或地址信号。此时,F1~F4和G1~G4输入相当于地址输入信号A0~A3,以选择存储器中的特定存储单元。
2) 输入/输出模块(IOB) 图 9-43 XC4000的IOB结构图
(1) 输入通路 当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送至输入缓冲器。缓冲器的输出分成两路:一路可以直接送到MUX;另一路经延迟几纳秒(或者不延迟),送到输入通路D触发器,再送到数据选择器。通过编程给数据选择器不同的控制信号,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。D触发器可通过编程来确定是边沿触发还是电平触发,且配有独立的时钟。与前述CLB中的触发器一样,也可任选上升沿或者下降沿作为有效作用沿。
(2) 输出通路 当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT(或OUT)同样可以有两条传输途径:其一是直接经MUX送至输出缓冲器; 其二是先存入输出通路D触发器,再送至输出缓冲器。输出通路D触发器也有独立的时钟,且可任选触发边沿。输出缓冲器既受CLB阵列送来的OE(或OE)信号控制,使输出引脚有高阻状态,还受转换速率控制电路的控制, 使它可高速或低速运行,后者有抑制噪声的作用。 (3) 输出专用推拉电路 IOB的B输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻或下拉电阻接通UCC、 地线或者不接通,用以改善输出波形和负载能力。
3) 可编程连线(IR) FPGA芯片内部单个CLB输入输出之间、各个CLB之间、 CLB和I/OB之间的连线由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现所需功能的电路连接。 连线通路的数量与器件内部阵列的规模有关,阵列规模越大, 连线数量越多。 互连线按相对长度分为单线、双线和长线三种。 单线和长线主要用于CLB之间的连接。在这种结构中,任意两点间的连接都要通过开关矩阵。它提供了相邻CLB之间的快速互连和复杂互连的灵活性,但传输信号每通过一个可编程开关矩阵,就增加一次时延。因此,FPGA的内部时延与器件结构和逻辑布线等有关,它的信号传输时延不可确定。
(a) 单长线; (b) 双长线; (c) 开关矩阵; (d) 长线 图 9-44 可编程连线 (a) 单长线; (b) 双长线; (c) 开关矩阵; (d) 长线
9.2.4 可编程逻辑器件的开发 1. 可编程逻辑器件的设计过程 图 9-45 PLD设计流程
1) 设计准备 采用有效的设计方案是PLD设计成功的关键,因此在设计输入之前首先要考虑两个问题:① 选择系统方案,进行抽象的逻辑设计;② 选择合适的器件,满足设计的要求。 对于低密度PLD,一般可以进行书面逻辑设计,将电路的逻辑功能直接用逻辑方程、真值表状态图或原理图等方式进行描述,然后根据整个电路输入、输出端数以及所需要的资源(门、触发器数目)选择能满足设计要求的器件系列和型号。器件的选择除了应考虑器件的引脚数、资源外,还要考虑其速度、功耗以及结构特点。
对于高密度PLD,系统方案的选择通常采用“自顶向下”的设计方法。首先在顶层进行功能框图的划分和结构设计,然后再逐级设计低层的结构。一般描述系统总功能的模块放在最上层称为顶层设计;描述系统某一部分功能的模块放在下层, 称为底层设计。底层模块还可以再向下分层。这种“自顶向下”和分层次的设计方法使整个系统设计变得简洁和方便,并且有利于提高设计的成功率。目前系统方案的设计工作和器件的选择都可以在计算机上完成,设计者可以采用国际标准的两种硬件描述语言VHDL或Verilog对系统级进行功能描述,并选用各种不同的芯片进行平衡、比较,选择最佳结果。
2) 设计输入 设计者将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程称为设计输入。它通常有原理图输入、硬件描述语言输入和波形输入等多种方式。 原理图输入是一种最直接的输入方式,它大多数用于对系统或电路结构很熟悉的场合,但系统较大时,这种方法的相对输入效率较低。 硬件描述语言是用文本方式描述设计,它分为普通的硬件描述语言和行为描述语言。普通硬件描述语言有ABEL-HDL、 CUPL等,它们支持逻辑方程、真值表、状态机等逻辑表达方式。行为描述语言是指高层硬件描述语言VHDL和Verilog, 它们有许多突出的优点:如语言的公开可利用性,便于组织大规模系统的设计,具有很强的逻辑描述和仿真功能,而且输入效率高, 在不同的设计输入库之间转换也非常方便。
3) 设计处理 从设计输入完成以后到编程文件产生的整个编译,适配过程通常称为设计处理或设计实现。它是器件设计中的核心环节, 是由计算机自动完成的,设计者只能通过设置参数来控制其处理过程。在编译过程中,编译软件对设计输入文件进行逻辑化简、综合和优化,并适当地选用一个或多个器件自动进行适配和布局、布线,最后产生编程用的编程文件。 编程文件是可供器件编程使用的数据文件。对于阵列型PLD来说,是产生熔丝图文件即JEDEC(简称JED)文件,它是电子器件工程联合会制定的标准格式;对于FPGA来说,是生成位流数据文件(Bitstream Generation)。
4) 设计校验 设计校验过程包括功能仿真和时序仿真,这两项工作是在设计输入和设计处理过程中同时进行的。 功能仿真是在设计输入完成以后的逻辑功能检证,又称前仿真。它没有延时信息,对于初步功能检测非常方便。时序仿真在选择好器件并完成布局、 布线之后进行,又称后仿真或定时仿真。时序仿真可以用来分析系统中各部分的时序关系以及仿真设计性能。
5) 器件编程 编程是指将编程数据放到具体的PLD中去。 对阵列型PLD来说,是将JED文件“下载(Down Load)”到PLD中去;对FPGA来说,是将位流数据文件“配置”到器件中去。 器件编程需要满足一定的条件,如编程电压、编程时序和编程算法等。普通的PLD和一次性编程的FPGA需要专用的编程器完成器件的编程工作。基于SRAM的FPGA可以由EPROM或微处理器进行配置。ISP在系统编程器件则不需要专门的编程器, 只要一根下载编程电缆就可以了。
2. 在系统可编程技术和边界扫描技术 1) 在系统可编程技术 在系统可编程(In-System Programmabile, 简称ISP)技术是 20 世纪 80 年代末Lattice公司首先提出的一种先进的编程技术。 所谓“在系统编程”是指对器件、电路板或整个电子系统的逻辑功能可随时进行修改或重构。这种重构或修改可以在产品设计、制造过程中的每个环节,甚至在交付用户之后进行。支持ISP技术的可编程逻辑器件称为在系统可编程逻辑器件(ispPLD)。 ispPLD不需要使用编程器,只需要通过计算机接口和编程电缆,直接在目标系统或印刷线路板上进行编程。ispPLD可以先装配,后编程。因此ISP技术有利于提高系统的可靠性, 便于系统板的调试和维修。
ISP技术是一种串行编程技术,其编程接口非常简单。例如,Lattice公司的ispLSI、 ispGAL和ispGDS等ISP器件,它们只有五根信号线: 模式控制输入MODE、 串行数据输入SDI、 串行数据输出SDO、串行时钟输入SCLK和在系统编程使能输入ispEN。PC机可以通过这五根信号线完成编程数据传递和编程操作。其中编程使能信号ispEN=1时,ISP器件为正常工作状态;ispEN=0 时,所有IOC的输出均被置为高阻,与外界系统隔离,这时才允许器件进入编程状态。当系统具备多个ispPLD时,还可以采用菊花链形式编程,如图 9-46 所示。 图中,多个器件进行串联编程,从而可以实现用一个接口完成多芯片的编程工作,达到高效率。
图 9-46 多个ispPLD的编程
2) 边界扫描测试技术 边界扫描测试技术主要解决芯片的测试问题。 20 世纪 80 年代后期,对电路板和芯片的测试出现了困难。以往,在生产过程中对电路板的检验是由人工或测试设备进行的,但随着集成电路密度的提高,集成电路的引脚也变得越来越密,测试变得很困难。例如,TQFP封装器件, 管脚的间距仅有 0.6 mm,这样小的空间内几乎放不下一根探针。 同时,由于国际技术的交流和降低产品成本的需要,也要求为集成电路和电路板的测试制订统一的规范。
边界扫描技术正是在这种背景下产生的。 IEEE1149 边界扫描技术正是在这种背景下产生的。 IEEE1149.1 协议是由IEEE组织联合测试行动组(JTAG)在 20 世纪 80 年代提出的边界扫描测试技术标准,用来解决高密度引线器件和高密度电路板上的元件的测试问题。 标准的边界扫描测试只需要四根信号线,能够对电路板上所有支持边界扫描的芯片内部逻辑和边界管脚进行测试。应用边界扫描技术能增强芯片、电路板甚至系统的可测试性。