1、第八章 可编程逻辑器件 8.1 概述 8.2 可编程逻辑器件的基本结构和电路表示方法 8.3 可编程阵列逻辑(PAL) 8.4 可编程通用阵列逻辑(GAL) 8.5 复杂可编程逻辑器件(CPLD) 8.6 现场编程门阵列(FPGA) 8.7 在系统可编程逻辑器件(ISP-PLD),8.1 概述可编程逻辑器件(Programmable Logic D evice,PLD)是20世纪70年代发展起来的一种新 型逻辑器件,是目前数字系统设计的主要硬件基 础。目前生产和使用的PLD产品主要有PROM、 现场可编程逻辑阵列(Field Programmable Log ic Array,FPLA)、可编
2、程阵列逻辑(Programm able Array Logic,PAL)、通用阵列逻辑(Gene ric Array Logic,GAL)、可擦除的可编程逻辑 器件(Erasable Programmable Logic Device,EPLD)、复杂可编程逻辑器件(Complex Progra mmable Logic Device,CPLD)、现场可编程 门阵列(Field Programmable Gate Array,FP GA)等几种类型。其中EPLD、CPLD、 FPGA 的集成度较高属于高密度PLD。可编程只读存储器PROM(包括EPROM、 EEPROM)其内部结构是由“与阵列
3、”和“或阵列” 组成。它可以用来实现任何“以积之和”形式表示 的各种组合逻辑。,可编程逻辑阵列(PLA)是一种基于“与或 阵列”的一次性编程器件,由于器件内部的资源 利用率低,现已不常使用。可编程阵列逻辑(PAL)也是一种基于“与 或阵列”的一次性编程器件组成。PAL具有多种 的输出结构形式,在数字逻辑设计上具有一定的 灵活性。,通用可编程阵列逻辑(GAL)是一种电可擦 写、可重复编程、可设置加密位的PLD器件。G AL器件有一个可编程的输出逻辑宏单元OLMC, 通过对OLMC配置可以得到多种形式的输出和反 馈。比较有代表性的GAL芯片是GAL16V8、GA L20V8和GAL22V10,这几
4、种GAL几乎能够仿真 所有类型的PAL器件,并具有100的兼容性。 在实际应用中GAL可完全取代PAL器件。,可擦除的可编程逻辑器件(EPLD)的基本逻 辑单位是宏单元,它由可编程的与或阵列、可 编程寄存器和可编程IO三部分组成。由于EPL D特有的宏单元结构、大量增加的输出宏单元数 和大的与阵列,使其在一块芯片内能够更灵活性 的实现较多的逻辑功能。,复杂可编程逻辑器件(CPLD)是EPLD的改 进型器件,一般情况下,CPLD器件至少包含三 种结构: 可编程逻辑宏单元、可编程IO单元 和可编程内部连线。部分CPLD器件还集成了 RAM、FIFO或双口RAM等存储器,以适应DSP 应用设计的要求
5、。,现场可编程门阵列(FPGA)在结构上由逻辑 功能块排列为阵列,并由可编程的内部连线连接 这些功能块来实现一定的逻辑功能。FPGA的功 能由逻辑结构的配置数据决定,在工作时,这些 配置数据存放在片内的SRAM或者熔丝图上。使 用SRAM的FPGA器件,在工作前需要从芯片外 部加载配置数据,这些配置数据可以存放在片外 的EPROM或其他存储体上,人们可以控制加载 过程,在现场修改器件的逻辑功能。,可编程逻辑器件按照编程工艺又可分为四 类: 熔丝(Fuse)或反熔丝(Antifuse)编程器 件; UEPROM编程器件; EEPROM编程器件; SRAM编程器件。前三类器件称为非易失性器件,它们
6、在编 程后,配置数据保持在器件上;第四类器件为易 失性器件,每次掉电后配置数据会丢失,因而在 每次通电时需要重新进行数据配置。,8.2 可编程逻辑器件的基本结构和电路表 示方法 8.2.1 可编程逻辑器件的基本结构可编程逻辑器件(PLD)器件由输入缓冲 电路、与阵列、或阵列、输出缓冲电路等四部分 组成,其基本结构如下图所示。,8.2.2 PLD电路的表示方法1.PLD连接的表示法PLD中阵列交叉点上有三种连接方式: 硬 线连接、接通连接和断开连接。表示方法如下图 所示,其中硬线连接是固定连接方式,是不可编 程的,而接通和断开连接是可编程的。,2.输入反馈缓冲单元表示法PLD的输入缓冲器和反馈缓
7、冲器都采用互 补的输出结构,以产生原变量和反变量两个互补 的信号,如右下图所示。A是输入,B和C是输 出,真值表如左下表所示。,3.PLD与门表示法与阵列是PLD中的基本逻辑阵列,它们由 若干个与门组成,每个与门都是多输入、单输出 形式。以三输入与门为例,其PLD表示法如下图 所示,图中D=ABC。 图8.2.5为4输入端与门电路,P=ABD。 图8.2.6为4输入端与门电路,P=A B =0。,图8.2.5为4输入端与门电路图8.2.6为4输入端与门电路,4. PLD或门表示法或阵列也是PLD中的基本逻辑阵列,它们 由若干个或门组成,每个或门都是多输入、单输 出形式。以4输入与门为例,其PL
8、D表示法如下 图所示,图中YP1+P3+P4。例如,一个PLD异或门电路如图8.2.8所示. 图中FX1 + X2X1 X2。,8.3 可编程阵列逻辑(PAL)PAL是上世纪70年代末期推出的一种可编 程逻辑器件。PAL器件由可编程的与逻辑阵列、 固定的或逻辑阵列和输出电路三部分组成。通过 对与逻辑阵列编程可以获得不同形式的组合逻辑 函数。另外,在有些型号的PAL器件中,输出电 路中设置有触发器和从触发器输出到与逻辑阵列 的反馈线,利用这种PAL器件还可以很方便地构 成各种时序逻辑电路。,8.3.1 基本的PAL电路PAL器件当中最简单一种电路结构形式如 图8.3.1所示。图中PAL芯片型号为
9、PAL16L8AM, 电路方框图如图8.3.1(b)所示,内部电路如图 8.3.1(c)所示。电路包含有一个3264位的可编 程与逻辑阵列、10个输入缓冲器、8个三态输出 缓冲器、6个输入输出缓冲器,核心是一个可 编程的与逻辑阵列和一个固定的或逻辑阵列。由 图可见,在尚未编程之前,与逻辑阵列的所有交 叉点上均有熔丝接通。编程将有用的熔丝保留,,将无用的熔丝熔断,即得到所需的电路。图8.3.2是经过编程后的一个PAL器件的结 构图。它所产生的逻辑函数为Y1= + + +Y2= + + + Y3= + Y4= +,图8.3.1 基本的PAL电路,图8.3.1 基本的PAL电路,图8.3.2 编程后
10、的PAL电路,8.3.2 带寄存器输出的PAL电路一个带寄存器输出的PAL电路例如图8.3.3 所示。图中PAL芯片型号为PAL16R8AM,电路 方框图如图8.3.3(b)所示,内部电路如图8.3.3(c) 所示。电路与最简单电路结构形式不同,在输出 三态缓冲器和与或逻辑阵列的输出之间加入了 8个由D触发器组成的寄存器,电路包含有一个 3264位的可编程与逻辑阵列、8个输入缓冲 器、8个三态输出缓冲器、8个输入输出缓冲 器,8个D触发器,利用这种输出结构不仅可以,存储与或逻辑阵列的输出状态,也可以方便地 组成各种时序逻辑电路。可编程的与逻辑阵列在 尚未编程之前,与逻辑阵列的所有交叉点上均有
11、熔丝接通。编程将有用的熔丝保留,将无用的熔 丝熔断,即得到所需的电路。,图8.3.3 带寄存器输出的PAL电路,图8.3.3 带寄存器输出的PAL电路,8.3.3 两种输出结构的PAL电路一个具有两种输出结构的PAL电路如图8.3 .5所示。图中PAL芯片为PAL16R4AM,电路方 框图如图8.3.5(b)所示,内部电路如图8.3.5(c)所 示。电路的输出结构有两种形式,一种是4路输 出直接通过输出三态门输出,另外一种是4路输 出在输出三态缓冲器和与一或逻辑阵列的输出之 间加入了4个由D触发器组成的寄存器,电路包 含有一个3264位的可编程与逻辑阵列、8个输 入缓冲器、 8个三态输出缓冲器
12、、8个输入输,出缓冲器,4个D触发器,利用这种输出结构可 以方便地组合逻辑电路和时序逻辑电路功能。可 编程的与逻辑阵列在尚未编程之前,与逻辑阵列 的所有交叉点上均有熔丝接通。编程将有用的熔 丝保留,将无用的熔丝熔断,即得到所需的电路.,图8.3.5 两种输出结构的PAL电路,图8.3.5 两种输出结构的PAL电路,8.3.4 带异或输出的PAL电路一个带异或输出的PAL电路的典型实例如所示。图中PAL芯片型号为PAL20X8, 内部电路如图8.3.7所示。电路与最简单电路结 构形式和带寄存器输出的PAL电路不同,在输出 三态缓冲器和与或逻辑阵列的输出之间加入了 8个异或门和8个由D触发器组成的
13、寄存器,电路 包含有一个4076位的可编程与逻辑阵列、10 个输入缓冲器、10个三态输出缓冲器、10个输 入输出缓冲器,8个D触发器,利用这种输出,图8.3.6,结构不仅可以对与或逻辑阵列的输出的函数求 反,还可以对寄存器状态进行保持的操作。可编 程的与逻辑阵列在尚未编程之前,与逻辑阵列的 所有交叉点上均有熔丝接通。编程将有用的熔丝 保留,将无用的熔丝熔断,即得到所需的电路。,图8.3.7带异或输出的PAL电路,例如在图8.3.8所示的编程情况下,当 =0 时D1=Q1,所以Q1n+1=Q1n,在时钟信号到来时 触发器的状态始终保持不变。当 =1时有D1= , 所以 。对于下边一个触发器,当
14、=0时,有D2= Y2=Q1 + ;而当 =1时,有D2= = ; 即得到Y2的反函数。,图8.3.8 带异或 输出的PAL电路编程例,8.3.5 运算选通反馈结构在异或输出结构的基础上再增加一组反馈 逻辑电路,就构成了如图8.3.9所示的运算选通 反馈结构。反馈选通电路分别给出了输入变量B和反 馈变量A产生的(A+B)、(A+B)、(A+B)、(A+B)4 个反馈量,并接至与逻辑阵列的输入端。通过对 与逻辑阵列的编程,能产生A和B的16种算术运 算和逻辑运算的结果。图8.3.10给出了产生这16种运算的编程情 况。,图8.3.9 PAL的运算选通反馈结构,图8.3.10 产生16种算数、逻辑
15、运算的编程情况,8.3.6 PAL的应用举例 【例8.3.1】用PAL器件设计一个数值判别电路. 要求判断4位二进制数DCBA的大小属于05、 610、1116三个区间的哪一个之内。解:若用Y0=1表示DCBA的数值在05之间; 以Y1=1表示DCBA的数值在610之间;以Y2=1 表示DCBA的数值在1115之间,则得到表8.3.1 中的函数真值表。,表8.3.1 例8.3.1的函数真值表,从真值表写出Y0、Y1、Y2的逻辑函数式,经化 简后得到Y0=Y1= (8.3.2)Y2=DC+DBA这是一组有4个输入变量,3个输出的组合 逻辑函数。如果用一片PAL器件产生这一组逻辑 函数,就必须选用
16、有4个以上输入端和3个以上 输出端的器件。而且由式(8.3.2)可以看到,至少 还应当有一个输出包含3个以上乘积项。,根据上述理由,选用PAL14H4比较合适。 PAL14H4有14个输入端、4个输出端。每个输 出包含4个乘积项。图8.3.11是按照式(8.3.2)编 程后的逻辑图。图8.3.11中画“”的与门表示编程时没有 利用。由于未编程时这些与门的所有输入端均有 熔丝与列线相连,所以它们的输出恒为0。为简 化做图起见,所有输入端交叉点上的“”就不画 了,而用与门符号里面的“”来代替。,图8.3.11 PAL14H4按照式(8.3.2)编程后的逻辑图,【例8.3.2】用PAL设计一个升位循
17、环码计数器, 并要求所设计的计数器具有置零和对输出进行三 态控制的功能。解:根据循环码的计数顺序可以列出在一系列 时钟信号作用下4位循环码的变化顺序表,如表 8.3.2所示。如果用PAL器件设计这个计数器,则所用 的器件中至少应包含4个触发器和相应的与或 逻辑阵列。从手册上可以查到,PAL16R4可以 满足上述要求。,由图8.3.13可见,PAL16R4的电路中有4个 触发器,而且触发器的输出端设置有三态缓冲器. 它有8个变量输入端,除了4个寄存器输出端以 外还有4个可编程I/O端。因为输出缓冲器是反相器,所以4个触发器 Q端的状态与表8.3.2中Y的状态相反。因此Q3Q2 Q1Q0的状态转换
18、顺序应如表8.3.3所示。这也就 是Q3Q2Q1Q0状态转换表。,表8.3.2 4位循环码的记数顺序表,表8.3.3 PAL触发器的状态转换表,图8.3.13 例8.3.2中编程后的PAL16R4的逻辑图,根据表8.3.3画出4个触发器次态的卡诺图, 如图8.3.12所示。经化简后得到各个触发器的状 态方程为(8.3.3)从上式即可写出每个触发器的驱动方程, 即D端的逻辑函数式。同时,考虑到要求具有置 零功能,故应在驱动方程中加入一项R。置零输,图8.3.12 例8.3.2 输出状态 的卡诺图,入信号R=1时,在时钟信号到达后将所有的触发 器置1,反相后的输出得到Y3Y2Y1Y0=0000。于
19、 是得到驱动方程为D3=Q3 +Q3 +Q2Q1Q0+RD2=Q2 +Q2Q1+ Q0+R (8.3.4)D1=Q1Q0+Q3 + Q2 +RD0= + Q2Q1+Q3Q2 +Q3 Q1+R进位输出信号的逻辑函数式为(8.3.5)按照式(8.3.4)和式(8.3.5)编程后PAL16R4,的逻辑图如图8.3.13所示。图中1脚接时钟输入, 亦即计数输入;11脚接输出缓冲器的三态控制 信号 ;2脚接置零信号R,正常计数的R应处 于低电平;17、16、15、14脚分别为输出Y3、 Y2、Y1、Y0;18脚为 输出端。若从Y3Y2Y1Y0= 0000开始计数,则输入16个时钟信号时 从低 电平跳回高
20、电平,给出一个正跳变的进位输出信 号。以上所讲的设计工作都可以在开发系统上 自动进行。只要按照编程软件规定的格式输入逻 辑真值表,后面的工作都由计算机去完成。,8.4 可编程通用阵列逻辑(GAL) 8.4.1 GAL器件的基本结构。普通型GAL器件有GAL16V8AB、GA L20V8AB。下面以GAL16V8为例,介绍 GAL器件的基本结构。从图8.4.1可见,GAL16V8有10个输入缓 冲器、8个输出逻辑宏单元OLMC(Output LogicMacro Cell)、8个三态输出缓冲器和8个输出反 馈缓冲器,一个3264位的可编程与逻辑阵列() 8个输入的正负信号和X1X88个输出反馈,
21、的正负信号22832,每个OLMC有8个与 门输入8864)。3264位的可编程与逻辑阵 列的每个交叉点上设有EECMOS编程单元。这 种编程单元的结构和工作原理与EEPROM的存 储单元相同。可编程与阵列由88个与门构成. 每个与门的输入端既可以接收8个固定的输入信 号(29引脚),也可以接收将输出端(1219引 脚)配置成输入模式的8个信号。因此,GAL16V 8最多有16个输入信号,8个输出信号。组成或 逻辑阵列的8个或门分别包含于8个OLMC中,,它们和与逻辑阵列的连接是固定的。,图8.4.1 GAL16V8逻辑图,8.4.2 输出逻辑宏单元OLMC输出逻辑宏单元OLMC的结构图如图8
22、.4.2 所示。从图8.4.2可见,OLMC是由一个8输入或 门、一个异或门、一个D触发器和4个数据选择 器组成。8输入或门接收来自可编程与阵列的7 或8个与门输出,完成乘积项或运算。异或门用 来控制输出极性。,图8.4.2 输出逻辑宏单元OLMC的结构图,8.4.3 GAL器件的结构控制字GAL器件的输出形式取决于它的输出逻辑 宏单元中的控制信号AC0、AC1(n)及XOR(n)。 在GAL器件中,这些控制信号的取值是由它的 结构控制字编程确定的。GAL16V8的结构控制 字如图8.4.3所示。结构控制字各位功能如下:同步位SYN:1位,确定GAL器件的输出将 具有寄存器型输出或纯组合型输出
23、。结构控制位AC0:1位,这一位对于8个OL,图8.4.3 GAL16V8的结构控制字,MC是公共的,它与每个OLMC(n)各自的AC1(n) 配合,控制上述各个数据选择器。结构控制位AC1(n):8位,每个OLMC(n) 都有自己的AC1(n),其中n对应于它的输出引脚 号。极性控制位XOR(n):8位,XOR(n)通过O L MC中间的异或门控制逻辑操作结果的输出极 性。乘积项PT禁止位:共64位。分别控制逻辑 图中“与”阵列的64个乘积项(PT0PT63)以便屏 蔽某些不用的乘积项。,8.4.4 输出逻辑宏单元(OLMC)的组态表8.4.1列出了控制信号SYN、AC0、 AC1 (n)及
24、XOR(n)与OLMC(n)的配置关系。图8.4.4 给出输出逻辑宏单元5种工作模式下的简化电路.,表8.4.1 SYN、AC0、 AC1(n)及XOR(n)与OLMC(n)的配置关系,图8.4.4输出逻辑宏单元(OLMC)5种工作模式下的简化电路,8.4.5 GAL器件行地址映射图GAL器件是提供行地址映射图(行地址图) 供编程时使用,GAL16V8的行地址分配如图8.4 .5所示。当对GAL16V8器件编程时,用户可用 的行地址共有36个,现分别介绍如下: 行地址031: 32个行地址对应于逻辑图 (图8.4.1)上与阵列的32个输入。每个行地址单元 有64位,对应于与阵列的64个乘积项。
25、用户编 程实现阵列的逻辑功能。,图8.4.5 GAL16V8的行地址分配图,行地址32: 电子标签,共64位。该电子标 签可供用户存放各种备查的信息例如设计者姓 名、设计标题、器件的编号、电路的名称、编程 日期、编程次数等。电子标签字(32行)不受加密 位的影响,该单元只有在门阵列整体擦除时才能 一起被擦除。行地址3359: GAL器件制造厂家保留的 地址空间,用户不可以使用。行地址60: 结构控制字,82位,用于设定 8个OLMC的工作模式和64个乘积项的禁止。前 面已经做过介绍。,行地址61: 保密单元,1位,用来防止未 经许可抄袭阵列的编程设计。保密单元一旦被编 程,就禁止对门阵列(03
26、1)作进一步的编程或 验证。这样就无法测出原始的电路结构。行地址62: 备用。行地址63: 整体擦除单元,1位。在器件 编程期间访问行63,就可执行整体擦除功能。 整体擦除后器件恢复到末使用的状态。整体擦除 由编程硬件自动执行,不需要特别的擦除操作。,8.5 复杂可编程逻辑器件(CPLD)复杂可编程逻辑器件(Complex Program mable Logic Device,CPLD)主要是由可编程 逻辑宏单元(Logic Macro Cell,LMC)围绕中心 的可编程互连矩阵单元组成,并具有复杂的I/O 单元互连结构,可由用户根据需要生成特定的电 路结构,完成一定的功能。由于CPLD内部
27、采用 固定长度的金属线进行各逻辑块的互连,所以设 计的逻辑电路具有时间可预测性,避免了分段式 互连结构时序不完全预测的缺点。,目前CPLD不仅具有电擦除特性,而且出现 了边界扫描及在线可编程等高级特性。本章以Xilinx公司的XC9500系列为例,介 绍CPLD器件。,8.5.1 XC9500系列器件结构XC9500系列器件结构框图如图8.5.1所示, 从图中可见XC9500系列器件内包含有多个功能 块FB(Function Block)、输入输出块IOB、开 关矩阵Fast CONNECT、JTAG控制器和在系统 可编程控制器。每个FB提供具有36个输入和18 个输出的可编程逻辑;IOB提供
28、器件输入和输出 的缓冲;Fast CONNECT开关矩阵将所有输入 信号及FB的输出连到FB的输入端。对于每个FB, 有12或18个(取决于封装的引脚数)输出及相关的 输出使能信号直接驱动IOB。,图8.5.1 XC9500系列器件结构框图,8.5.2 功能块FB功能块FB如图8.5.2所示,每个功能块FB 由18个独立的宏单元组成,每个宏单元可实现 一个组合电路或寄存器的功能。FB能接收来自F ast CONNECT的输入、接收全局时钟、输出使 能和复位置位信号。FB产生18个输出驱动Fast CONNECT开关矩阵,这18个信号和相应的输出 使能信号也可以驱动IOB。,图8.5.2 XC9
29、500功能块FB,FB利用一个积之和的表达式(即与或阵列) 来实现FB的逻辑。36个输入连同其互补信号共 72个信号在可编程与阵列中可形成90个乘积项. 乘积项分配器则可分配任何数目的乘积项到每个 宏单元。每个FB支持局部反馈通道,它允许任何数 目的FB输出驱动到它本身的可编程与阵列,而 不是输出到FB的外部。这一特性便于实现非常 快速的计数器或状态机。,8.5.3 宏单元XC9500器件的每个宏单元 (Macro cell) 可以单独配置成组合逻辑或时序逻辑功能,宏单 元和相应的FB逻辑如图8.5.3所示。来自与阵列 的5个直接乘积项用作原始的数据输入(到OR或 XOR门)来实现组合逻辑功能
30、,也可用做时钟、 复位置位和输出使能的控制输入。乘积项分配 器的功能与每个宏单元如何选择利用这5个直接 乘积项有关。如图8.5.4所示,宏单元寄存器的时钟来源 于3个全局时钟的任意一个或乘积项时钟。,图8.5.3 宏单元和相应的FB逻辑,图8.5.4 宏单元时钟和复位置位,8.5.4 乘积项分配器(PT)乘积项分配器(Product Term,PT)控制5 个直接的乘积项如何分配到每个宏单元。例如图 8.5.5所示,所有五个直接项可以驱动OR函数。 乘积项分配器可以重新分配FB内其他的乘积项 来增加宏单元的逻辑能力,每个宏单元可最多有 15个乘积项,此时将有一个小的增量延时tPTA, 如图8.
31、5.6所示。乘积项分配器也可以重新分配 FB内来自任何宏单元的乘积项,将部分积之和 组合到数个宏单元,如图8.5.7所示。 乘积项分配器的内部逻辑如图8.5.8所示。,图8.5.5 使用直接乘积项的宏单元逻辑,图8.5.6 15个乘积项的乘积项分配,图8.5.7通过数个宏单元的乘积项分配,图8.5.8 乘积项分配器的内部逻辑,8.5.5 Fast CONNECT开关矩阵Fast CONNECT开关矩阵连接信号到FB的 输入端,如图8.5.9所示。所有IOB(对应于用户 输入引脚)和所有FB的输出驱动Fast CONNECT 开关矩阵。开关矩阵的所有输出都可通过编程选 择以驱动FB,每个FB则最
32、多可接收36个来自开 关矩阵的输入信号。所有从开关矩阵到FB的信 号延时是相同的。,图8.5.9Fast CONNECT开关矩阵,8.5.6 输入/输出块(IOB)输入输出块(IOB)提供内部逻辑电路到用户I O引脚之间的接口。每个IOB包括一个输入缓 冲器、输出驱动器、输出使能数据选择器和用户 可编程接地控制,如图8.5.10所示。图中输出使能信号由输出使能数据选择器 提供,它可由以下四个选项之一产生:(1)来自 宏单元的乘积项信号PTOE;(2)全局输出使能信 号(全局OE1OE4)中的任意一个;(3)高电平 1;(4)低电平0。图8.5.10的结构图中只有一个,输出使能信号,它对应的是宏
33、单元数小于144个 的器件;当器件的宏单元数达到144个时应有两 个输出使能信号;当宏单元数大于等于180个时 则有四个输出使能信号。每个IOB提供用户编程接地引脚,允许将 器件IO引脚配置为附加的接地引脚。把关键 处设置的编程接地引脚与外部的地连接,可以减 少由大量瞬时转换输出产生的系统噪声。 控制上拉电阻(典型值为10k)接到每个器 件的IO引脚,用来防止器件在非正常工作时,引脚出现悬浮情况。在器件编程模式和系统加电 期间这个电阻是有效的,擦除器件时它也是有效 的。在正常运行器件时这个电阻将无效。输出驱动器具有支持24mA输出驱动的能 力,在器件中的所有输出驱动器可以配置为5V TTL电平
34、或3.3V电平。,图8.5.10 输入/输出块和输出使能,8.5.7 JTAG边界扫描接口XC9500器件完全支持IEEE1149.1边界扫 描(JTAG)。每个器件支持Extest、Intest、Sm plepreload、Bypass、Usercode、Idcode 和Highz指令。所有的系统内编程、擦除和校验 指令作为完全兼容的扩充1149.1指令集被执行.XC9500器件通过标准的JTAG协议实现在 系统内编程。系统内编程提供快速和有效的设计 重复,而不需要进行拆装。XILINX开发系统提 供编程的数据序列,对器件进行编程可以利用提,供的下载电缆、第三方JTAG开发系统、JTAG 兼
35、容的板级测试仪或仿真JTAG指令系列的简单 微处理器接口。IEEE边界扫描标准1149.1(JTAG)是利用软 件来减少成本的测试标准,此标准的主要好处是 它能够把印制板测试问题转换成为软件容易执行 的构造好的有效方案。标准定义了硬件结构和利 用它的机构。JTAG标准定义了用来执行互连测 试的指令和内部自测试的程序。专门扩充的标准, 允许执行维修和诊断应用及编程重新配置器件的,算法。按边界扫描连接的所有器件共享TCK和TM S信号。系统的TDI信号连接到边界扫描链中的 第一个器件,来自第一个器件的TDO信号连接 到链中第二个器件的TDI信号,依次类推。链中 最后一个器件的TDO输出到连接到系统
36、的TDO 引脚。,8.6 现场编程门阵列(FPGA)现场可编程门阵列FPGA(Field Programm able Gate Array),是美国Xilinx公司1984年首 先推出的大规模可编程集成逻辑器件。Xilinx的 FPGA根据其基本结构IOB、CLB、及PI的结构 不同,分为XC2000、XC3000和XC4000系列以 及在此基础上发展起来的Spartan、Virtex系列. XC2000与XC3000系列的FPGA结构基本相同XC3000系列器件内有15007500个逻辑 单元,触发器数量为2561320个,最大可用,I/O引脚数为64176个。XC4000X系列器件内带有高
37、速片内RAM 18270Kbit,器件内有136820102个逻辑单 元,13000250000个系统门,触发器数量为 153618400个,最大可用IO引脚数为192 448个。Spartan系列器件带有片内RAM 3 25Kb it,器件内有2381862个逻辑单元,5000 40000个系统门,触发器数量为3602016个, 最大可用IO引脚数为77205个。,Virtex系列器件带有片内RAM57 524Kbi t,器件内有172827648个逻辑单元, 58000 1120000个系统门,触发器数量为1536245 76个,最大可用IO引脚数为180660个以Xilinx公司的产品为
38、例介绍FPGA的基本 组成原理及其开发系统的实际应用。,8.6.1 FPGA的基本结构FPGA器件采用逻辑单元阵列LCA(Logic Cell Array)结构,它由三个可编程基本模块阵 列组成:输入输出块IOB(Input/output Block )阵列、可配置逻辑块CLB(Configurable Logic Block)阵列及可编程互连网络PI(Programmabl e Interconnect)。图8.6.1是LCA型FPGA的基本结构示意图. 从图8.6.1可见,LCA结构的FPGA,其输入/输 出块I/OB排列在芯片周围,它是可配逻辑块CLB,图8.6.1 LCA型FPGA的基
39、本结构示意图,与外部引脚的接口。可配逻辑块CLB以矩阵形式 排列在芯片中心。每个CLB可独立完成简单的逻 辑功能,构成基本的逻辑功能单元。各CLB之间 通过互连网络PI编程连接,以实现更复杂的逻辑 功能。不同系列的FPGA其IOB、CLB、及PI的 结构不同。Spartan系列器件的基本结构示意图如图 8.6.2所示,它与LCA型的FPGA结构基本相同。 配置逻辑功能块CLB的可编程逻辑单元,由分层 的通用布线通道(Routing Channel)连接,由可,图8.6.2 Spartan系列器件的基本结构示意图,编程输入/输出功能块IOB围绕来实现。其中CLB 提供引脚到内部信号线的接口;布线
40、通道则提供 CLB和IOB的互连通道。Virtex系列器件的基本结构示意图如图8.6. 3所示,可配逻辑块(CLB)提供构造逻辑的功能 单元,输入/输出块(IOB)提供封装引脚到CLB的 接口, CLB之间的互连通过布线矩阵GRM(Gen Eral Routing Matrix)来完成。GRM是一个由水 平和垂直布线通道节点构成的布线开关阵列。,图8.6.3 Virtex系列器件的基本结构示意图,8.6.2 可配置逻辑块(CLB)结构可配置逻辑块(CLB)是FPGA的核心 一、XC3000的可配置逻辑块(CLB)结构XC3000系列的CLB结构如图8.6.4所示。由图可知,XC3000系列的C
41、LB由三部分组 成:一个组合逻辑块、两个触发器存储单元和一 组内部连线控制逻辑。组合逻辑块有5个输入变 量,其内部是静态存储阵列SRAM,每个静态存 储单元电路如图8.6.5所示。图8.6.5中,两个CM OS反相器构成一个静态存储单元,MOS管构成,图8.6.4 XC3000系列的CLB结构,图8.6.5 FPGA的静态存储单元电路,三态输出门。平时,MOS管不导通,存储单元 与数据线之间呈高阻状态,保证存储单元不受数 据线的影响。当需要读出或写入时, MOS管导 通,用于将数据线上的信息存入存储单元(称为 写入) ,或者将存储单元的内容送至数据线输出( 称为读出)。每个CLB根据内部连线控
42、制不同,可配置 成三种不同模式:F模式、FG模式和FGM模式.在F模式中,F和G输出同一个函数,其5个 输入变量:A、D、E以及由程序控制选择的B或,QX和QY以及C或QX和QY。在FG模式中,F和G各输出一个函数,其 输入变量均为4个:A,B或QX和QY中一个,C 或QX和QY一个,D、E中一个。具体选哪一个 变量由编程决定。在FGM模式中,F和G输出同一个函数,组 合逻辑块输出的两个4变量(A、D,B或QX和QY 中一个,C或QX和QY一个)逻辑函数F和G,经 二选一数据选择器输出,其中E为二选一数据选 择器控制端信号。,由图8.6.4可知,XC3000系列CLB的输出 端X、Y可以由程序
43、控制选择F端或G端直接输出, 称为组合型输出。也可以经过触发器由触发器Q 端输出,称为寄存器输出。 图8.6.6是XC3000系列CLB的三种配置模 式示意图。,图8.6.6 XC3000系列CLB的三种配置模式,二、XC4000的可配置逻辑块CLB结构XC4000系列的CLB结构如图8.6.7所示。 它有三个组合逻辑块(F、G和H),其中F和G 是两个独立的4输入函数发生器,可实现F1F4、 G1G44变量任意逻辑函数。函数发生器(H)可 实现F、G和H1三输入的任意逻辑函数。三个组 合逻辑块(F、G和H)可实现9变量逻辑函数。 两个D触发器共用一个时钟信号,时钟信号允许 选择高电平或低电平
44、有效,输入信号可以在F、 G、H以及直接输入信号DIN中选择,时钟使能 EC端和直接置位复位端SR受程序控制。,图8.6.7 XC4000系列的CLB结构,三、Spartan系列器件的可配置逻辑块(CLB)结 构Spartan系列器件的可配置逻辑块(CLB)结 构如图8.6.8所示。从图中可以看出,CLB中包 含三个用做函数发生器的查找表(F-LUT、G-LU T和H-LUT)、两个触发器和两组信号数据选择器.CLB的输入端有四个数据选择器,如图8.6. 9所示,四个全局控制信号(C1C4)通过这些数 据选择器驱动CLB内部的四个控制信号(H1、DI N、SR和EC)。,图8.6.8 Spar
45、tan系列器件 CLB结构,图8.6.8 CLB全局控制信号接口,每个CLB的函数发生器(F-LUT和G-LUT)可 被配置成随机存取存储器(RAM)。存储器的配置 有两种模式:单端口RAM和双端口RAM。这两 种模式中,写操作均为同步(边沿触发),读操作 均为异步的。单端口RAM的逻辑图如图8.6.10所 示。 CLB单端口RAM有三种配置方式:161 位,(161位)2和321位。单端口RAM信号 如表8.6.1所示。,图8.6.10 单端口RAM的逻辑图,表8.6.1 单端口RAM信号,CLB的函数发生器可配置成一个161位的 双端口RAM。两组4位的地址线分别用于两个端 口的寻址。其中
46、一个端口则包含一个用于写数据 的输入线和用于读数据的输出线,另一个端口则 包含一个独立寻址的输出。双端口RAM功能框 图如图8.6.11所示。双端口RAM信号及相关的C LB信号如表8.6.2所示。,图8.6.11 双端口RAM功能框图,表8.6.1 双端口RAM信号及相关的CLB信号,四、Virtex系列器件的可配置逻辑块CLB结构Virtex系列器件的可配置逻辑块CLB由两 个切片(Slice)(图8.6.12中的Slice0和Slice1)组 成,每个切片(Slice)由两个逻辑单元(Logic Cel l,LC)组成。LC是CLB的基本模快。每个LC包 括一个4输入函数发生器、一个进位
47、逻辑和一个 存储单元。每个LC中函数发生器的输出同时作 为CLB的输出和触发器的D输入。除四个基本的 LC外,CLB中还包括一些逻辑电路,与函数发 生器一起实现任意5输入或6输入的逻辑函数。,图8.6.12 Virtex系列器件的CLB结构,Virtex Slice的详细结构如图8.6.13所示。 查找表(LUT)作为函数发生器,每个LUT能提供 1个161位同步RAM,每个Silce中的两个LUT 可以组合成一个162位或321位的双端口同 步RAM。LUT还能提供一个16位移位寄存器, 可用来捕捉高速突发数据。,图8.6.13 Virtex Slice的详细结构,Virtex FPGA内集
48、成了“Block SelectRAM +”块RAM。块数量从832。块RAM是一个完全 同步的双口4096位RAM,每个端口有一个独立 的控制信号,两个端口的数据宽度可以独立配置. Virtex器件中的“Block SelectRAM+”块RAM如 图8.6.14所示。每四个CLB中有一个块RAM。,图8.6.14 Virtex FPGA器件中的 “Block SelectRAM+”块RAM,8.6.3 输入输出块(IOB)结构 一、 XC3000的输入输出块IOBXC3000的输入输出块IOB结构如图8.6.15 所示,可编程输入通道由驱动器、触发器及程序 制多路开关组成,可能通过程序控制选
49、择直接输 入或通过寄存器输入。可编程输出通道由多路开 关和输出缓冲器组成,可以通过程序控制选择三 态输出、常开(ON)或常闭(OFF)三种工作状态, 通过输出选择程序控制触发器确定直接输出或触 发器输出。一组程序控制存储单元,用于实现输,出极性选择、三态控制极性选择、输出选择、传 递速度选择和上拉电阻选择。输入、输出两个D 触发器共享两路时钟资源。,图8.6.15 XC3000的输入输出块IOB结构,二、XC4000的输入/输出块IOBXC4000系列IOB结构框图如图8.6.16所示, 在输入通道中分为寄存器输入和直接输入两种方 式,输入信号允许有选择地编程延时,通过程序 控制可选择输入寄存器的时钟极性、置位、复位 端及输入上拉或下拉电阻等。在输出通道中,每 个输出端都有一个三态输出缓冲器。通过程序控 制可选择寄存器输出或直接输出方式,以及输出 反相控制、转移速度控制、三态控制反相、时钟 反相和触发器初始化状态控制等。,