2009-7-31 东北大学信息学院 1
第 7章 可编程逻辑器件
7.1 可编程逻辑器件概述
7.2 可编程逻辑器件基础
7.3 通用阵列逻辑 GAL
2009-7-31 东北大学信息学院 2
7.1.1 可编程 ASIC现状与发展专用集成电路 ASIC是面向用户特定用途或特定功能的大规模、超大规模集成电路。 ASIC是其英文
Application Specific Integrated Circuit缩写。
分类:按功能:有数字的、模拟的、数字和模拟混和的。
按制造方式分:有全定制,半定制 ASIC,可编程三种。
7.1 可编程逻辑器件概述
2009-7-31 东北大学信息学院 3
可编程 ASIC,用户可在现场对其编程来实现各种特定逻辑功能。用户可“自制”大规模数字集成电路。
使用可编程 ASIC和相应的 EDA开发系统,用户可以借助计算机实现各种实际的电子系统的设计、功能模拟、时间摸拟以及系统调试。
2009-7-31 东北大学信息学院 4
(一 ) 根据芯片的集成度和结构复杂度分类:
1,简单可编程逻辑器件 SPLD,集成度小于
PALCE22V10或 GAL22V10的 PLD。 它们的特点是都具有可编程的与阵列,不可编程的或阵列,输出逻辑宏单元 OLMC和输入输出逻辑单元 IOC。
Lattice公司的 PAL和 PALCE系列,GAL系列等都属于 SPLD
7.1.2 可编程 ASIC器件分类
2009-7-31 东北大学信息学院 5
2,复杂可编程逻辑器件 CPLD,集成度大于
PAL22V10或 GAL22V10的 PLD都可视为 CPLD。
Lattice公司的 ispLSI / pLSI 1000系列和 MACH5系列,Xilinx公司的 XC9500系列,Altera公司的
MAX7000系列和 MAX9000系列都是 CPLD的代表性产品 。 CPLD在集成度和结构上呈现的特点是具有更大的与阵列和或阵列,增加了大量的宏单元和布线资源,触发器的数量明显增加 。
2009-7-31 东北大学信息学院 6
高速的译码器,多位计数器,寄存器,时序状态机,
网络适配器,总线控制器等较大规模的逻辑设计可选用 CPLD来实现 。 Lattice公司 ispLSI / pLSI 3256,
其集成度达 14000个等效 PLD门,寄存器数量达 480
个 。 Lattice公司的 isP6000系列,其集成度达到
25000个等效 PLD门且具有 320个宏单元 。 Altera的
MAX9000最高集成度可达 24000个等效 PLD门,逻辑宏单元达 1024个 。
2009-7-31 东北大学信息学院 7
因此,具有复杂算法的数字滤波器等数字信号处理单元的逻辑设计也可选用这些具有更高集成度
CPLD来实现 。
3,现场可编程逻辑门阵列 FPGA
现场可编程门阵列 FPGA是集成度和结构复杂度最高的可编程 ASIC。 Xilinx公司的 FPGA
XC4025有 2.5万个等效 PLD门,XC4085集成度可达 8.5万个等效 PLD门。
2009-7-31 东北大学信息学院 8
有资料表明 Xilinx公司最新推出低电压 FPGA
XCV1000 芯片最大门数可达 100万个等效 PLD门 。
Actel公司第二代 Anti-fuse FPGA的集成度达 2万个等效 PLD门 。 Altera的 FPGA FLEX10K250的集成度为 25万 个 等 效 PLD 门 。 Xilinx 公司的
XC5000/4000系列,Actel公司的 ACT系列,Altera
公司的 FLEX8000,FLEX10K和 FLEX20K系列等是 FPGA的代表产品 。
2009-7-31 东北大学信息学院 9
运算器,乘法器,数字滤波器,二维卷积器等具有复杂算法的逻辑单元和信号处理单元的逻辑设计可选用 FPGA实现 。 Xilinx公司和 Altera公司最新开发先进的 IP CORE( IP核 ),为 FPGA在数字系统设计和 DSP技术领域的应用提供了范例 。
2009-7-31 东北大学信息学院 10
(二 ) 按制造技术和编程方式进行分类
1) 双极熔丝制造技术的可编程 ASIC( Lattice的
PAL系列)
2) EECMOS制造技术的可编程 ASIC( Lattice的
GAL和 ispLSI / pLSI)
3) SRAM制造技术的可编程 ASIC( Xilinx的 FPGA,
Altera的 FPGA)
4) 反熔丝制造技术的可编程 ASIC( Actel的 FPGA)
2009-7-31 东北大学信息学院 11
双极熔丝和反熔丝 ASIC通常称为 OTP( one time
programming) 器件而采用 EECMOS和 SRAM制造技术的可编程 ASIC具有用户可重复编程的特性,
可以实现电擦电写。
用 SRAM技术制造的 FPGA则具有数据挥发性,又称易失性。具有挥发性的 FPGA,当系统断电或掉电后,写入 FPGA中的编程数据要丢失。因此,必须把要下载到 FPGA的数据借用编程器固化到与其联用的 EPROM或 EEPROM中,待重新上电时,芯片将编程数据再下载到 FPGA中。
2009-7-31 东北大学信息学院 12
FPGA的数据挥发性,决定有些环境不宜选用。可编程 ASIC的编程方式有两种,一种是采用专用编程器进行编程,一种是在系统编程。后者甩掉了专用编程器,而且也不用将芯片从电路系统取下,只利用计算机和一组下载电缆就可以在系统编程。
Lattice和 Xilinx等几家大公司现在都有在系统可编程 ASIC产品。在系统编程方式方便了用户。
2009-7-31 东北大学信息学院 13
(三 ) 可编程 ASIC的一般开发步骤
( 1) 设计输入 ( entry),逻辑原理图 ( schematic)
输入方式,硬件描述语言 HDL输入方式,状态机输入方式等 。 近几年在 ASIC设计领域十分流行一种电子系统的设计描述语言 ——硬件描述语言 HDL
( Hardware Description Language),它把电子系统设计,仿真综合和测试联系起来,不仅支持电路级别的设计描述,而且还支持对寄存器传输级系统结构级和系统行为级的描述 。
2009-7-31 东北大学信息学院 14
目前 VHDL和 Verilog—VHDL以及 ABEL—HDL
都是广泛使用的设计输入硬件描述语言。设计输入中出现错误,专用的设计软件会自动进行编程并发出警告。国内外近几年采用 VHDL进行系统逻辑设计已成为流行方式。
2009-7-31 东北大学信息学院 15
( 2) 功能模拟 ( function simulation)
在功能模拟阶段主要对所设计的电路及所输入的电路进行功能验证 。 电路中各逻辑门或各单元模块的输入,输出是否有矛盾,是否有扇入,扇出不合理,
违反扇入扇出条件;各单元模块有无未加处理的输入信号端,输出端是否悬空,是否允许使能等项内容均在功能模拟阶段进行检查验证 。
2009-7-31 东北大学信息学院 16
功能模拟也是由相应专门软件完成,如有上述问题,
功能模拟软件自动发出警告,指出错误的信息。
图 7-1 ASIC开发步骤流程图状 态 机 输 入逻 辑 图 输 入波 形 输 入
H D L 输 入设 计 输 入功 能 模 拟逻 辑 分 割时 间 模 拟编 程 下 载设 计 输 入布 局 布 线器 件 验 证
Y
N
N
Y
2009-7-31 东北大学信息学院 17
( 3)逻辑分割 ( partitioning)
逻辑分割的过程就是将复杂电路分解成由若干子逻辑功能块实现的过程 。 例如,器件内部的各子逻辑功能块能够实现 4输入变量的任意逻辑函数,然而设计输入的是要实现 5变量逻辑函数的逻辑电路,这就必须采用逻辑分割的办法,将其用多个子逻辑功能块来实现 。 逻辑分割也是借助专门软件实现的 。
2009-7-31 东北大学信息学院 18
( 4)布局和布线( place and routing)
在布局和布线阶段是用子逻辑功能块将要实现的逻辑电路布置在实际的芯片上。有时,布线不好会造成芯片资源浪费或电路不可实现。布局和布线是一项复杂的工作。电路密度过高,自动布线不易进行。施加一定量的手动布线,以期解决布线浪费和减少布线死区。
2009-7-31 东北大学信息学院 19
( 5) 时间模拟 ( timing simulation)
时间模拟是在布局和布线之后进行 。 布线软件对有相同逻辑功能的电路完全可能给出不同的布线模式 。
因此,其系统的时间特性也完全可能不同 。 有时布线延时还会给电路功能实现带来新的障碍,所以用
FPGA设计实现的电路进行时间模拟是非常必要的 。
2009-7-31 东北大学信息学院 20
在使用简单 SPLD和 CPLD器件实现设计时,由于器件的连线结构属于确定型的,布线延时基本是一定的,
时间模拟不进行有时也能满足设计要求。在设计一个实际的复杂系统时,时间模拟这一步是必不可少的。
通过时间模拟可得到系统内部的延时特性,发现竞争冒险等信息。时间摸拟对提高系统稳定性十分重要。
一个 EDA开发系统,是否具有 timing simulation功能也是衡量这个 EDA开发系统先进性的一项指标。
2009-7-31 东北大学信息学院 21
( 6) 写入下载数据 ( download)
在写入下载数据阶段,所设计的电路或系统即将完成 。 所选用的器件若是 CPLD和S PLD,一般选用在系统编程或使用合适的编程器将相应的 JED下载数据写入到芯片中 。 所选用的器件若是 FPGA,则需要用专门的 EPROM 编 程 器 对与 FPGA 相配 置 的
EPROM芯片进行编程,将 FPGA的配置数据先写入
EPROM中 。
2009-7-31 东北大学信息学院 22
4,TOP—DOWN和 BOTTOM—UP设计思想自顶向下( TOP——DOWN) 设计首先是从系统级开始入手。把系统分成若干基本单元模块,然后再把作为基本单元的这些模块分成下一层的子模块。
TOP——DOWN的设计过程可理解为从硬件的高层次抽象描述向最低层结构描述的一系列转换过程,
直到最后得到可实现的硬件单元描述为止。
2009-7-31 东北大学信息学院 23
采用 TOP—DOWN层次结构化设计方法,设计者可在一个硬件系统的不同层次的模块下进行设计。总体设计师可以在上层模块级别上对其下层模块设计者所做的设计进行行为级摸拟验证。在 TOP—DOWN的设计过程中,划分每一个层次摸块时要对目标摸块做优化,
在实现摸块时要进行摸拟仿真。虽然 TOP—DOWN的设计过程是理想的,但它的缺点是得到的最小可实现的物理单元不标准,成本可能较高。
2009-7-31 东北大学信息学院 24
顶 层 模 块模 块 A 模 块 B 模 块 C
模 块 A 1 模 块 A 2 模 块 B 1 模 块 B 2 模 块 C 1 模 块 C 2 模 块 C 3
图 7-2 top-down设计树
BOTTOM—UP层次结构化设计是 TOP—DOWN设计的逆过程。它虽然也是从系统级开始的,即从图 7-
2中设计树的树根开始,但在层次摸块划分时,首先考虑的是实现摸块的基本物理单元是否存在,划分过程必须是从存在的基本单元出发。
2009-7-31 东北大学信息学院 25
设计树最末枝上的单元要么是已经制造出的单元,
要么是已经开发成功的单元,或者是可以买得到的单元 。 自底向上 ( BOTTOM—UP) 的设计过程采用的全是标准单元,通常比较经济 。 但完全采用自底向上的设计有时不能完全达到指定的设计目标要求 。
用可编程 ASIC实现一个好的电子系统设计通常采用
TOP—DOWN和 BOTTOM—UP两种方法的结合,
充分考虑设计过程中多个指标的平衡 。
2009-7-31 东北大学信息学院 26
5,设计库及库元件
在层次设计中所用的模块有两种:一是预先设计好的标准模块,二是由用户设计的具有特定应用功能的模块 。 前者一般要存放在 EDA开发系统中各种类型的文件库之中,后者必须经过模型仿真和调试证明无误后,建立一个图形符号存放在用户的设计库中准备在更上层的设计中使用 。
2009-7-31 东北大学信息学院 27
也同使用设计库中的逻辑门电路一样,设计库中的一个比较高级模块一般都要由两个模型构成,一个是模块的图形符号,另一个是模块的功能模型。图形符号在建立原理图时使用,功能模型在逻辑模拟仿真时使用。模块的功能模型可以是逻辑图形式,也可以是
VHDL描述的,还可以是真值表或逻辑方程式描述的。
一个已知的图形符号可以用来代表一个或几个功能模型,这些模型的功能相同,参数可以不同。就象 2输入 7400,74LS00,74S00,功能相同,但是传输延时,
功耗不相同。
2009-7-31 东北大学信息学院 28
6,画层次原理图
画层次原理图类似用逻辑门符号画一个逻辑图一样,先将选用的模块符号和连结器符号放在画页上,然后用连线将它们连结起来,最后将选用的符号名放在相应的模块及其结点上 。 选用符号名要注意遵循以下规则:一般把在一个层次原理图中所使用的模块的每一个拷贝叫做这个模块的例化 。
2009-7-31 东北大学信息学院 29
为了模拟仿真和建立设计文件,每个例化都要起一个名字,如在图 7-3中4位全加器模块 FA4起名为 Adder; 名为 Adder的模块由 4个一位全加器子模块 FA1实现,这四个子模块分别起名为 add0,add1、
add2,add3。 同样,构成一位全加器的各个逻辑门及其信号线也要起一个名,它们的名字分别是 X
1,X 2,A1,A2,A3,R1。 为了调试或模拟仿真,
常常要研究模块中的一个指定信号。
2009-7-31 东北大学信息学院 30
A d d e r
M o d u l e,F A 4
K e y p a d
i n p u t
S t o r a g p r
e g i s t e r
D i s p l a y
d i r v e r
A
1
X
1
X
2
R
1
A
2
A
3
a
b
c
i n
s
c
o u t
x
1
a d d 0
M o u d l e,F A
1
a d d
1
M o u d l e,F A
1
a d d
2
M o u d l e,F A
1
a d d 3
M o u d l e,F A
1
a
0
b
0
a
1
a
2
a
3
b
1
b
2
b
3
s
0
s
1
s
2
s
3
G N D
N C
( a)
( c) ( b)
图 7-3 层次设计示意图
( a) 顶层图( b) 模块 FA4的次层图( c) 子模块 FA1的次层原理图
2009-7-31 东北大学信息学院 31
例如,假设要研究图 7-3中1位全加器 FA1的工作情况,需要观察完整系统模拟时的信号 x1 的值 。 因为有4个 FA1的例化,例化名称要被合并成如下的信号名,顶层模块名/次层模块名:信号名 。 因此,
要监视全加器 add2这个例化中信号线 x1的时候,这个信号名应该写成 adder/ add2,x1通过上述的书写规则,就可指定顶层模块中 adder中的模块 add2的信号 x1,这个起名规则可以扩展到任何一个层次 。
2009-7-31 东北大学信息学院 32
7,层次联接器符号和总线为了建立层次原理图,一个抽象级别的模块输入和输出引脚的名称要与次层模块原理图相应信号的名称保持唯一性或者一致性,如图 7-4所示。层次模块
FA1的输入为 a,b,cin,而输出是 s,cout。 信号的名称都要标在同模块的输入和输出引脚联接器符号上。
输入连接器:
输出连接器:
2009-7-31 东北大学信息学院 33
一般输入联接器符号标在原理图左侧,输出联接器符号标在原理图右侧,其底层原理图输入输出引脚的层次联接器符号旁边也要标出相同的名称 a,b、
cin,s,cout。 当模块有多重的输入和输出信号时,
层次的相互连接器就要画成如图 7-5所示的总线形式 。 每条总线都要赋予一个名称以便于模拟仿真,
由图 7-5可以看出 4位加法器模块 FA4有 8个输入和 4
个输出,为了方便,把传送二个 4位输入和一个 4位输出的数据信号线表示成三条总线形式,其定义如下:
2009-7-31 东北大学信息学院 34
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)}
考虑到在逻辑模拟仿真时对每个独立的信号都要进行模拟和监测,总线的每个分支信号线也要给出唯一的名称,在图 7-5中A (0),A(1),A(2)、
A(3),B(0),B(1),B(2),B(3),S(0),S(1)、
S(2),S(3)就是独立信号线的名称 。
2009-7-31 东北大学信息学院 35
图 7-4 全加器符号与原理图之间的层次连接器
( a) 全加器模块符号( b) 全加器原理图
( a) ( b)
A
1
X
1
X
2
R
1
A
2
A
3
a
b
c
i n
s
c
o u t
x
1
M o d u l e
:
F A
1
a
b
c
i n
s
c
o u t
2009-7-31 东北大学信息学院 36
为了进一步简化模块原理图画法,有时常常在模块上定义多重引脚,如图 7-5 ( b) 所示 。 每个多重引脚代表一组相关信号的集合,允许把总线直接联接到模块的引脚上,但是必须清楚每条总线代表的是 4个信号的联接 。
图 7-5 使用总线简化逻辑图
( a) 具有分支的总线 ( b) 多重引脚的总线模型
F A 4
P i n A ( 3,0 )
P i n S ( 3,0 )
P i n B ( 3,0 )
A ( 3,0 )
B ( 3,0 )
A ( 3,0 )
B ( 3,0 )
S ( 3,0 )
S ( 3,0 )
A ( 0 )
A ( 1 )
A ( 2 )
A ( 3 )
B ( 0 )
B ( 1 )
B ( 2 )
B ( 3 )
S ( 0 )
S ( 1 )
S ( 2 )
S ( 3 )
A
0
A
1
A
2
A
3
B
0
B
1
B
2
B
3
S
0
S
1
S
2
S
3
( a )
F A 4
( b )
2009-7-31 东北大学信息学院 37
8,层次化设计的模拟
采用层次设计实现的系统必须进行设计模拟和验证 。 一个层次设计中最底层的元件或模块必须首先进行模拟仿真,当其工作正确之后,再进行高一抽象级别模块的模拟仿真 。 最后还要对最上层系统进行模拟仿真,最终完成系统设计 。 在模拟仿真时,首先要将模块用相应的电路来代替,称为展平,展平工作一直做到最底层模块都要用基本的逻辑门实现为止 。 在展平过程中所有元件及所有的信号线都必须有指定过的名称 。 模拟仿真结果可以是给出正确的波形,也可以是给出一些时延参数 。 图
6给出的是用总线表示的波形 。
2009-7-31 东北大学信息学院 38
0111
1011
1011
0000
0000
S(3:0)
0110
0110
0110
0110
0000
A(3:0)
0001
0001
0101
0101
0000
B(3:0)
12
10
7
5
0
Time
A ( 3,0 )
B ( 3,0 )
S ( 3,0 )
0 0 0 0
0 0 0 0
0 0 0 0
0 1 1 0 0 1 1 0
0 1 0 1 0 0 0 1
1 0 1 1 0 1 1 1
0 5 1 0 1 5
T i m e
(a) (b)
图 7-6 用二进制数表示的总线模拟值
( a) 表格形式的模拟值( b) 波形表示的模拟值
2009-7-31 东北大学信息学院 39
7.2 可编程逻辑器件基础
7.2.1 PLD的逻辑表示
(一 ) PLD中阵列及其阵列交叉点的逻辑表示
1,PLD中阵列交叉点的逻辑表示
PLD逻辑阵列中交叉点的连接方式采用图 7-7所示的几种逻辑表示 。
图 7-7(a〉 表示实体连结,也就是行线和列线在这个交叉点处实在的连接上,这个交叉点是不可编程点,
在交叉点处打上黑实点 。
图 7-7 阵列交叉点的 PLD表示法
( a ) ( b ) ( c )
2009-7-31 东北大学信息学院 40
图 7-7(b)表示可编程连接 。 无论 × 或 ⊕ 表示该符号所在行线和列线交叉处是个可编程点,具有一个可编程单元 。 在采用熔丝工艺的 PLD器件中,器件出厂后用户编程之前,所有可编程点处的熔丝都处于接通状态,习惯上都用 × 表示熔丝接通,因此可编程点上处处都打 × 或 ⊕ 。
( a) 实体连接( b) 可编程连接
( c) 编程后熔丝烧断
2009-7-31 东北大学信息学院 41
然而,PLD器件被用户编程后,可编程点上的熔丝有的烧断,有的接通 。 编程后可在编程点上仍打有 ×,
这时的 × 表示可编程点被编程后熔丝接通 。 熔丝烧断的可编程点上的 × 消失,行线和列线不相接,这种情况用图 (c)表示 。
2009-7-31 东北大学信息学院 42
实际上对于无实体熔丝的 PLD器件,编程后带 × 的行线和列线交叉点同一对 CMOS管的导通相对应,
无 × 的行线和列线交叉点同一对 CMOS管的截止相对应 。
为了讨论问题方便用熔丝来代替一对 CMOS管 。
2009-7-31 东北大学信息学院 43
2.PLD中与阵列和或阵列的逻辑表示
与阵列如图 7-8(a)所示 。 在二极管与门的各支路与输出之间接入熔丝 。 熔丝保留的各支路的输入为有效输入,输出 F是熔丝保留各支路输入的与逻辑函数,
图 7-8(b)是 PLD表示 。 图 7-8(a)和图 7-8(b)是熔丝全部保留的与阵列表示情况 。 F(A,B,C)=0。 图 7-8( c)
是烧断 3个熔丝的情况,图 7-8( d) 是图 7-8(c) 的
PLD表示 。 可编程或阵列,其构成原理与可编程的与阵列相同
F( A,B,C) =AB C
2009-7-31 东北大学信息学院 44
熔丝
+ V
C C
R
F ( A,B,C )
( a )
A
A
B
B
C
C
A A B B C C
( b )
熔丝
+ V
C C
R
( c )
A
A
B
B
C
C
A A B B C C
( d )
F ( A,B,C ) = A B C
F ( A,B,C ) = A B C
F ( A,B,C ) = 0
( a ) 可 编 程 与 阵 列 ; ( b ) 未 编 程 或 编 程 后 熔 丝 全 保 留 与 阵 列 P L D 表示
( c ) 编 程 后 的 与 阵 列 ; ( d ) 实 现 F = A B C 的 与 阵 列 的 P L D 表 示图 7 - 8 与 阵 列 的 P L D 表示
2009-7-31 东北大学信息学院 45
p
1
R
p
2
p
3
f ( p
1,
p
2,
p
3
) = p
1
+ p
2
+ p
3
f ( p
1,
p
2,
p
3
) = p
1
+ p
2
+ p
3
p
1
R
p
2
p
3
f ( p
1,
p
2,
p
3
) = p
1
+ p
3
f ( p
1,
p
2,
p
3
) = p
1
+ p
3
( a )
( b )
( d )
( c )
p
1
p
1
p
2
p
2
p
3
p
3
图 7 - 9 可 编 程 或 阵 列 的 P L D 表 示
( a ) 可 编 程 的 或 阵 列 ( b ) 未 编 程 或 编 程 后 熔 丝 全 保 留 或 阵 列 P L D 表 示
( c ) 实 现 p
1
+ p
3
的 可 编 程 或 阵 列 ( d ) 实 现 p
1
+ p
3
的 可 编 程 或 阵 列 P L D 表 示
2009-7-31 东北大学信息学院 46
1,输入缓冲器和反馈缓冲器
在 PLD中有二种特殊的缓冲器,它们是输入缓冲器和反馈缓冲器,这二种缓冲器有相同的电路构成,图 7-10
给出它们的 PLD表示,它们是单输入,双出的缓冲器单元,一个是高有效输出端,即同极性输出端 。 另一个是低有效输出端,即反极性输出端 。
图 7-10 A
A
A
(二 ) PLD中基本逻辑单元 PLD表示
2009-7-31 东北大学信息学院 47
与曾经学过的输出三态缓冲器不同,虽然输出三态缓冲器也有三个端,但只有一个输入和一个输出端,另一个是使能控制端 。 原则上说,输出三态缓冲器有二个输入端一个输出端 。 注意二者之间的区别 。 输入缓冲器和反馈缓冲器输出只有 0,1两个逻辑状态 。
而输出三态缓冲器除了有 0,1两个逻辑状态外,还有一个称为高阻 (Z)的状态 。
2009-7-31 东北大学信息学院 48
2.输出极性可编程的异或门
在 PLD中为了实现输出极性可编程,常采用图 7-11(a)
所示的异或门结构 。 当熔丝烧断,异或门输出极性为低有效,即 Q0=P⊕ 1=P。 否则异或门输出高有效
Q0=P⊕ 0=P。 图 7 -11(b)是编程后熔丝保留,输出极性编程为高有效 。 图 7-11(c)是编程熔丝烧断,输出极性编程为低有效 。
2009-7-31 东北大学信息学院 49
图 7-11 输出极性可编程异或门的 PLD表示
( a) 输出极性可编程异或门结构 ( b) 编程后熔丝保留输出高有效的 PLD表示
( c) 编程后熔丝烧断,输出低有效的 PLD表示
Q
0
P
R
V
D D
熔 丝
Q
0
P
Q
0
= P
+
0 = P
P
P
Q
0
= P + 1 = P
( a ) ( b )
( c )
2009-7-31 东北大学信息学院 50
3.地址选择可编程的数据选择器
地址选择可编程的数据选择器如图 7-12所示 。 其中地址选择可编程的二选一数据选择器 (MUX)的
PLD表示如图 7-12(a)所示,地址选择可编程的四选一数据选择器 (MUX)的 PLD表示如图 7-12(b)所示 。
地址选择端编程后,若列线与行线相接且接地,其输入为逻辑 0。 否则列线与行线断开其输入为逻辑 1。
根据编程情况,地址选择端的输入有 00,01,10,
11四种情况 。
2009-7-31 东北大学信息学院 51
图 7-12 地址选择可编程数据选择器 PLD表示
M U X M U X
( b )
( a )
M U X M U X
2009-7-31 东北大学信息学院 52
4.可编程数据分配器的逻辑表示在可编程逻辑器件中可编程逻辑分配器也经常使用 。 可编程逻辑分配器如图 7-13所示 。 在图 7-13
中核心部分是可编程逻辑分配器,根据可编程熔丝
S1S0的不同编程情况,乘积项簇分别被分配到 n号,
n+1号,n- 1号,n- 2号宏单元 。 FUSEl正常时
(默认状态 )不熔断,乘积项簇的信号传不到 n号宏单元 。
2009-7-31 东北大学信息学院 53
若编程后 FUSEl熔断,乘积项簇信号可以传到 n号宏单元 。
FUSE2为又一个可编程点 。 如果 FUSE2熔断,异或门反极性传输,否则异或门原极性传输,n号宏单元接收信号与乘积项簇信号同相 。
2009-7-31 东北大学信息学院 54
乘 积 项 簇到 n - 1
到 n - 2
来 自 n - 1
到 n + 1
来 自 n + 1
来 自 n + 2
去 n 号 宏 单 元
R
R
熔 丝 1
熔 丝 2
V
D D
V
D D
S
1
S
0
图 7-13 可编程逻辑分配器
2009-7-31 东北大学信息学院 55
5.激励方式可编程的时序记忆单元的 PLD表示
时序记忆单元有二种,即锁存器和触发器 。 二种时序记忆单元的根本区别是输出状态的变化是否受时钟信号的控制 。 输出的状态只受输入激励信号控制的是锁存器 。 只有在时钟信号控制下输入激励信号才起作用的时序记忆单元是触发器 。
2009-7-31 东北大学信息学院 56
图 7-14是激励方式可编程的时序记忆单元的 PLD
表示。由图 7-14看出,通过编程,若线与行线断开,其输入为逻辑 1。根据编程情况,地址选择端的输入有
00,01,10,11四种情况。使 R/L端为 0,Q端的输出状态只与激励信号有关并受 D决定,图 7-14所示电路为 D
锁存器。通过编程,若使 R/L端为 1,图 7-14所示电路只有在时钟脉冲信号 CLK的驱动下,D端的激励信号才起作用,该电路具有 D触发器功能。
2009-7-31 东北大学信息学院 57
Z
1
= 0
Z
3
= 1
A
B
Z
2
= 0
D Q
C L K
R / L
R e s e t
图 7-14 激励方式可编程的时序记忆单元图 7-15 PLD中与阵列的默认表示
2009-7-31 东北大学信息学院 58
6,PLD中与阵列的缺省表示
在 PLD器件与阵列中常看到图 7-15中给出的几种表示 。 输出为 Z1的与门 4个输入变量全部被编程后输入,4个交叉点均画 × 。 因此,Z1=A·A·B·B=0。 同理:
Z2为 Z1的缺省表示 。 这时的阵列交叉点上均未画 ×,
而在与门符号内却画有 ×,Z2=A·A·B·B=0。
2009-7-31 东北大学信息学院 59
输出为 Z3的与门输入阵列交叉点上无×,与门符号内也无×,这是浮动状态的逻辑表示。浮动输入状态代表与阵列编程后熔丝全部熔断,4个输入全都不同与门相接,相当与门输入悬空,与门输出为高电平,即输出逻辑,1”。
2009-7-31 东北大学信息学院 60
7,双向输入 /输出和反馈输入的逻辑表示
双向输入 /输出和反馈输入结构是 PLD结构的特点之一,在图 7-16(a)中乘积项 Pn+1作为三态输出缓冲器的使能端控制信号 。 由于各阵列交叉点无一个 ×,呈悬浮状态,n+1号与门输出为逻辑,1” 。 Sm作为输出信号 。 同时,Sm信号又通过反馈缓冲器被反馈到与阵列 。
图 7-16(b) 所示为图 7-16(a)的 PLD表示 。
2009-7-31 东北大学信息学院 61

P
1
P
n
P
n + 1
1
n n + 1
I O
m
S
m
( a )
S
m
I O
m
( o u t p u t )
( b )
图 7-16 双向 I/O反馈输入的阵列表示(三态缓冲器有效)
( a) 阵列结构 ( b) 等效 PLD表示
2009-7-31 东北大学信息学院 62
在图 7-17(a)中 n+1号与门输出为逻辑,0",三态输出输出为高阻 。 这时,或阵列输出信号 Sm与 IOm引脚断开,加在 IOm引脚上的输入信号则可通过反馈缓冲器加到与阵列上 。 这种输出三态缓冲器高阻且加在输出引脚上的信号借助反馈缓冲器成为输入信号的组态方式用图 7-17(b)表示 。
2009-7-31 东北大学信息学院 63
S
m
I O
m
( i n p u t )
( b )
I
1
I
2

P
1
P
n
P
n + 1
1
n n + 1
I O
m
S
m
( a )
图 7-17 双向 I/O反馈输入的阵列表示(三态缓冲器禁止)
( a)阵列结构 ( b)等效 PLD表示
2009-7-31 东北大学信息学院 64
二,逻辑阵列的 PLD表示法应用举例
二位串行进位加法器的原理框图如图 7-18(a)所示。
A1,B1,A0,B0,C-1是输入,其相应引脚号为 3,4,1,2,5。
C1,S1,C0,S0为输出。其中 C0是第一级加法器的进位输出,也作为第二级加法器的级联输入,相应引脚号为 7,9,6,8。图中 C-1是第一级加法器的级联输入。
2009-7-31 东北大学信息学院 65
Si=A · B · Ci-1+ A ·B · Ci-1+ A ·B · Ci-1+ A · B ·Ci-1
Ci=Ai ·Bi+Ai · Ci-1+Bi · Ci-1
C
1
( 7 )
F A F A
A
1
B
1
( 3 )
( 4 )
A
0
B
0
( 1 )
( 2 )
C
- 1
( 5 )
S
1
C
0
S
0
( 9 )
( 6 ) ( 8 )
( a )
每一级加法器的标准方程式为:
图 7-18 实现 2位串行进位加法器的 PLD表示
( a)加法器框图
2009-7-31 东北大学信息学院 66
其阵列表示如图 7-18(b)所示 。 由图 7-18(a)看出,该加法器共有 5个输入,而图 7-18(b)中作为阵列的专用输入引脚只有 4个 。 所以,将 C-1输入安排在 5号引脚上 。 5号引脚表面上看是输出引脚,实际上由于 5号引脚上的三态缓冲器受 16号与门输出的逻辑,0”
驱动而输出高阻,或阵列同 5号引脚断开,5号引脚上的 C-1信号借助反馈缓冲器加入到与阵列作为输入 。
2009-7-31 东北大学信息学院 67
16号与门输出逻辑,0”是由于其可编程点编程后熔丝全部保留。 6号引脚上的三态缓冲器受 15号与门输出逻辑,1”驱动而使能,或阵列输出 C0信号加到 6号引脚。同时,6号引脚的 C0信号又借助反馈缓冲器加入到与阵列,与 A1和 B1信号逻辑操作后形成 S1和
C1。 6号引脚成为带反馈的输出引脚。
2009-7-31 东北大学信息学院 68
A
0
( 1 )
B
0
( 2 )
A
1
( 3 )
B
1
( 4 )
C
- 1
C
0
C
1
S
0
S
1
1
2
3
4 5
6
7
8 9
1 0
1 1 1 2
1 3
1 4
1 5 1 6
( 5 )
( 6 )
( 7 )
( 8 )
( 9 )
( b )
1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6
图 7-18 实现 2位串行进位加法器的 PLD表示
2009-7-31 东北大学信息学院 69
7.3 通用阵列逻辑 GAL
7.3.1 GAL的结构及其工作原理
(一 ) GAL的基本阵列结构
图 7-19给出 GAL的基本结构框图 。 由图 7-19看出
GAL是由可编程的与阵列,固定 (不可编程 )的或阵列,可编程的输出逻辑宏单元 (OLMC)三部分主要电路构成 。
2009-7-31 东北大学信息学院 70
可 编 程 与 阵 列可编程宏单元固 定 或 阵 列
I
2
I
1
I
0
O
2
O
1
O
0
图 7 - 1 9 G A L 的 基 本 阵 列 结 构 框 图
2009-7-31 东北大学信息学院 71
1,通用型 GALl6V8的电路结构
图 7-20给出 GALl6V8的逻辑图和引脚图 。
(1) GALl6V8是 20引脚的双列直插式 IC芯片 。
(2) 8个输入缓冲器,8个反馈缓冲器,8个输出三态缓冲器 。
(3) 8个输出逻辑宏单元 (OLMC12~OLMC19)。
2009-7-31 东北大学信息学院 72
(4)与阵列有 64条行线和 32条列输入线,与阵列共分
8个阵列块。每个阵列块有 8条行线,每条行线各接一个与门。与门的输出称为乘积项 (与项 )。每一个阵列块中最上面一个与门的输出称为第一与项。 32条列输入线分别同 8个输入缓冲器和 8个反馈缓冲器的 32
个输出相接,其中偶数号列输入线分别同各缓冲器的原变量输出端相接,而奇数号列输入线分别同各缓冲器的反变量输出端相接。
2009-7-31 东北大学信息学院 73
或阵列由 8个或门组成,8个或门分别画在 8个 OLMC
中。同 GAL16V8相比,GAL20V8的不同之处在于增加了两个输入多路开关 IMUX,增加了 4个引脚和 8条列输入线。其他电路的工作原理均与 GAL16V8相同。
(5)1号引脚 (I/CK)经一级缓冲器引至 OLMC的 CK端和 OLMC19的 m端。
2009-7-31 东北大学信息学院 74
(6)8个 OLMC的内部电路结构完全相同,外部引线稍有不同,每个 OLMC都有一个标有 m(邻级号 )的端子 。 此端子同邻级 OLMC输出端来的引线相接,若用 n表示本级号,用 m表示邻级号,则 OLMC13~OLMC15的邻级号
m=n - 1,OLMC16~OLMC18 的邻级号 m=n+1。 然而
OLMC12的 m端与 11号引脚相接,OLMC19的 m端与 1
号引脚 (经一级缓冲器 ) 相接 。 OLMC15和 OLMC16
与其他 6个宏单元不同之处是没有去邻级引线 。 也就决定与 OLMC15和 OLMC16相接的二个引脚 (15,16)
只能做输出引脚而不能做输入引脚 。
2009-7-31 东北大学信息学院 75
综上可看出 2,3,4,5,6,7,8,9各引脚是专用输入引脚,1,11,12,13,14,17,18,19各引脚可通过编程组态为输入引脚 。 也就是说共有 16个引脚可设置为输入 。
这时,只有 15号和 16号引脚可做输出引脚 。 其中的
12,13,14,17,18,19这 6个引脚可通过组态设置为输出引脚,加上 15和 16二个专用输出引脚共有 8个引脚可做输出引脚 。 这也是 GALl6V8命名的由来 。
2009-7-31 东北大学信息学院 76
(7)行线是与门的输入线,列输入线是输入信号提供线。
与门输出的乘积项受行线和列输入线交叉点处的可编程单元的编程情况决定。应须说明,虽然 GAL的编程单元不是实体熔丝,但是编程单元 CMOS管的导通恰好同实体熔丝编程后熔丝保留相对应,CMOS管截止恰好同实体熔丝熔断相对应。因此,在研究 GAL编程及有关方面问题时,也借用熔丝这一术语。
2009-7-31 东北大学信息学院 77
( a )
1 9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
1
0
0 3
2
7
8
3
1 5
1 6
4
2 3
2 4
5
3 1
3 2
6
4 0
3 9
7
4 7
4 8
8
5 6
5 5
9
6 3
C K
O L M C
( 1 9 )
O L M C
( 1 8 )
O L M C
( 1 7 )
O L M C
( 1 6 )
O L M C
( 1 5 )
O L M C
( 1 4 )
O L M C
( 1 3 )
O L M C
( 1 2 )
m
m
m
m
m
m
m
m
O E
4
7 8
1 1
1 2
1 5
1 6
1 9 2 0 2 3
2 4 2 7 2 8 3 1
3 12 82 72 42 32 01 9
1 61 5
0 3 4 7
8
1 1 1 2
图 7 - 2 0 G A L 1 6 V 8 的 逻 辑 图组成,
8个输入缓冲器
8个输出 /反馈缓冲器
8个三态输出缓冲器
8个输出逻辑宏单元
1个时钟输入 CLK 缓冲器
1个输出使能缓冲器
① 1个可编程的与阵列
2009-7-31 东北大学信息学院 78
I / C L K
G N D









1 0
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
2 0
V c c
I / O E
O
C
/ O
R
/ I
I
( b )
( a )
1 9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
1
0
0 3
2
7
8
3
1 5
1 6
4
2 3
2 4
5
3 1
3 2
6
4 0
3 9
7
4 7
4 8
8
5 6
5 5
9
6 3
C K
O L M C
( 1 9 )
O L M C
( 1 8 )
O L M C
( 1 7 )
O L M C
( 1 6 )
O L M C
( 1 5 )
O L M C
( 1 4 )
O L M C
( 1 3 )
O L M C
( 1 2 )
m
m
m
m
m
m
m
m
O E
4
7 8
1 1
1 2
1 5
1 6
1 9 2 0 2 3
2 4 2 7 2 8 3 1
3 12 82 72 42 32 01 9
1 61 5
0 3 4 7
8
1 1 1 2
图 7 - 2 0 G A L 1 6 V 8 的 逻 辑 图
1个可编程的与阵列
8
个输入缓冲器
8
个输出
/
反馈缓冲器
8
个三态输出缓冲器
8个输出逻辑宏单元
1个时钟输入
CLK 缓冲器
1个输出使能缓冲器引脚图
2009-7-31 东北大学信息学院 79
2,GALl6V8的结构控制字
GAL和 PAL同之处是 GAL的输出电路增加了输出逻辑宏单元 OLMC。 GAL的输出电路可编程 。
GAL的结构控制字有 5种,82位:
SYN,同步控制字 1位,对 8个宏单元是公共的;
AC02,结构控制字 1位,对 8个宏单元是公共的;
AC1(n),结构控制字 8位,每个宏单元一个;
XOR(n),极性控制字 8位,每个宏单元一个;
PTD,乘积项禁止控制字 64位,每个与门一个。
2009-7-31 东北大学信息学院 80
上述 5种结构控制字中,只有
SYN,AC0,AC1(n),X0R(n)参与组态控制。而 PTD
一般情况下总是为 1,控制 64个与门处于使能状态。
OLMC的 3种输出模式下的 7种逻辑组态由前 4种结构控制字的组合决定。 82位结构控制字的值存放在 GAL的 82位结构控制字阵列中
2009-7-31 东北大学信息学院 81
3,GALl6V8的 OLMC的内部电路构成
OLMC的内部电路构成如图 7-21所示 。 由图看出,OLMC内部含有 1个或门,1个异或门,1个 D
触发器,2个控制门,4个多路开关 。
结构控制字的值是 1还是 0是编译软件识别用户源程序的输出引脚逻辑方程式类型后自动生成的。生成后的结构控制字先存放在 JED文件中,编程写入时连同熔丝编程数据一起写入 GAL芯片中。
2009-7-31 东北大学信息学院 82
其中 PTMUX 和 OMUX 是 二 选 一 数 据 选 择器,TSMUX和 FMUX是四选一数据选择器 。 对于
FMUX而言,形式上有 3个控制端,分别受 AC0,AC1
( n),AC1(m)控制 。 当 AC0=0时 AC1(n) 不起作用,
仅有 AC0和 AC1(m)起作用 。 当 AC0=1时,AC1(m)不起作用 。
FMUX的数据输入端上的,—"即表示相对应的结构控制字不起作用。实际上,起作用的控制信号只有 2
个,因此,FMUX实质上是四选一数据选择器。
2009-7-31 东北大学信息学院 83
1
0
P
T
M
U
X
1 1
1 0
0 1
0 0
T
S
M
U
X
D
Q
Q
F
M
U
X
1 0 - -
1 1 - -
0 - - 1
0 - - 0
1
0
O
M
U
X
来 自,与,
阵 列反 馈
C K
C K
G
1
G
2
V
C C
A C 0
A C 1 ( n )
O R 8
X O R ( n )
A C ’ 0
A C 1 ( m )
A C ’ 1 ( n )
O E
O E
来 自 邻 级 输 出 ( m )
I / O ’ ( n )
1个或门
1个异或门(极性控制门)
若 XOR(n)=0 则 I/O( n) =/A
若 XOR(n)=1 则 I/O( n) =A
1个 D触发器
4个多路开关结构控制字
S
Y
N
输出多路开关 OMUX
若 OM=0 则 G3门 输出不经过 D触发器,直通 OX,
成为组合输出。 若 OM=1 则 G3门 输出要经过 D触发器,成为寄存器输出。
反馈多路开关与项多路开关三态多路开关若 TX=0 则 三态输出为高阻若 TX=1 则 三态有输出
2009-7-31 东北大学信息学院 84
4,GALl6V8的 OLMC工作原理
( 1) D触发器,D触发器用来存储异或门的输出信号,进而满足构成各种时序电路的要求。 8个 OLMC
中的 D触发器受来自 1号引脚的时钟信号 CK同步控制。这就决定了 8个 OLMC中只要有一个 D触发器工作那就一定要用到 1号引脚的 CK信号,只有 8个
OLMC全都为组合电路时,1号引脚作为组合电路的一个输入。
2009-7-31 东北大学信息学院 85
( 2) PTMUXP,PTMUX称为乘积项多路开关。当
AC0AC1(n)=11时,,地电平被选中成为或门的输入。 AC0,AC1(n) 中只要有一个为 0
时,,第一与项被选中成为或门的输入。
不难看出 PTMUX主要功能是在 AC0和 AC1( n) 控制下,用来决定第一与项是否成为或门的一个输入信号。
AC0AC1(n)=1
AC0AC1(n)=0
2009-7-31 东北大学信息学院 86
(3)OMUX
OMUX称为输出多路开关 。 OMUX的数据输入信号分别来自 D 触发器的 Q 端 和 异 或 门 的 输 出 。 当
AC0AC1(n)=10时,混合逻辑门 G2的输出为 1,OMUX将 D
触发器的输出与输出三态缓冲器输入接通,这时该输出逻辑宏单元成为时序电路 。 在 AC0和 AC1为其他值时,G2输出为 0,OMUX将异或门输出和三态缓冲器的输入接通,这时宏单元成为组合电路 。 可见 OMUX的功能是在 AC0和 AC1(n)控制下能决定输出逻辑宏单元是时序电路还是组合电路 。
2009-7-31 东北大学信息学院 87
(4)TSMUX
TSMUX 称 为 三 态 多 路 开 关 。 AC0AC1(n)=11
时,TSMUX将标记 11的一路输入信号 (第一与项信号 )
送到它的输出端 。 此时,第一与项信号成为输出三态缓冲器的使能端的控制信号 。 可见,在这个条件下,
对第一与项进行编程写入后,若第一与项输出为 1,输出三态缓冲器导通 。 编程写入后,若第一与项输出为
0,输出三态缓冲器禁止 。 AC0和 AC1(n)对 TSMUX
的全部控制作用见表 7-1。
2009-7-31 东北大学信息学院 88
导 通高 阻
OE=1,导通
OE=0,高阻用户编程决定输出三态缓冲器状态
VCC
地电平
OE
第一与项
0 0
0 1
1 0
1 1
TSMUX
输入信号AC0AC1(n)
表 7-1 AC0AC1(n)对 TSMUX控制表
2009-7-31 东北大学信息学院 89
(5)FMUX
FMUX称为反馈多路开关 。 FMUX用于从寄存器 Q端,
本级输出,邻级输出,地电平这四路信号中选出一路反馈到与阵列 。 当 AC0AC1n)AC1(m)=0—0时,FMUX
上标为 0一 0的输入端 (地电平 )被选通,反馈信号取自地电平,这时的 AC0=0,AC1(n)不起作用,即画,一 "表示相应的控制字 AC1(n)不起作用 。 FMUX的全部控制功能如表 7-2所示 。
2009-7-31 东北大学信息学院 90
Q端信号本级输出端邻级输出地电平反馈缓冲器输入端信号来源寄存器 Q端本级输出邻级输出地电平
1 0 ---
1 1 ---
0 --- 1
0 --- 0
FMUX
输入信号AC0 AC1(n) AC1(m)
表 7-2 AC0AC1对 FMUX控制表
2009-7-31 东北大学信息学院 91
这里需强调指出
GALl6V8的 OLMC12和 OLMC19以及 GAL20V8的
OLMC15和 OLMC22的 AC0是由 SYN代替,AC1(m)
由 SYN代替,也就是说这二个输出逻辑宏单元中
AC0=SYN,AC1(m)=SYN。 对 其 他 6 个 OLMC 来说,AC1(m)等于邻级的 AC1(n)的值 。 例如,OLMC13
的 AC1(n)中 n=13,它的 AC1(m)中 m=12,即 OLMC13
的反馈缓冲器的输入信号取自何处还与 OLMC12中的 AC1(12)有关 。
2009-7-31 东北大学信息学院 92
(二 )GAL的工作模式和逻辑组态
GALl6V8系列器件的 OLMC共有 3种工作模式,它们是寄存器模式,复杂模式,简单模式 。 编译软件根据用户源文件中输出引脚定义方程式的类型,自动设置 SYN
和 AC0的结构控制字的值 。 从而设定 OLMC工作在哪一工作模式 。 因此,3种工作模式的设定对用户而言是透明的 。 换句话说,OLMC工作模式的设定是用户由输出引脚定义方程来决定的 。 用户源文件中输出引脚定义方程有 3种类型,A型,B型,C型 。 图 7-22(a)给出输出引脚定义方程的类型同 3种工作模式的关系 。
2009-7-31 东北大学信息学院 93图 7-22 OLMC的组态和模式之间的关系(a)
SYN=0 AC0=1
寄存器模式
SYN=1 AC0=1
复杂模式
SYN=1 AC0=0
简单模式工 作 模 式引脚名,=逻辑方程式引脚名,=逻辑方程式引脚名,OE=逻辑方程式引脚名 =逻辑方程式
A 型
B 型
C 型输出引脚定义方程式输出引脚方程类型
OLMC的工作量摸式同引脚定义方程的关系:
2009-7-31 东北大学信息学院 94
编译软件见到用户源文件中引脚定义方程式中只要有 A型,就将 SYN和 AC0自动设置为 SYNAC0=01,各
OLMC设定为寄存器模式 。 若源文件中引脚定义方程全是 B型,编译软件将 SYN和 AC0自动设置为
SYNAC0=11,各 OLMC设定为复杂模式 。 若输出引脚定义方程全是 C型,或者部分是 C型,而另一部分输出引脚定义为输入,SYN 和 AC0 被自动设置为
SYNAC0=10,各 OLMC设定为简单模式 。 输出逻辑宏单元 3种模式又细分成 7种逻辑组态,
其隶属关系如图 7-22(b)所示 。
2009-7-31 东北大学信息学院 95
图 7-22 OLMC的组态和模式之间的关系(b)
①寄存器输出组态 ②组合输出组态
③有反馈组合输出④无反馈组合输出
⑤无反馈组合输出组态
⑥本级组合输出邻级输入组态
⑦邻级输入组态寄存器模式:
复杂模式:
简单模式:
三种模式和7种组态的关系:
2009-7-31 东北大学信息学院 96
1,寄存器模式下寄存器输出组态
当用户源文件中输出引脚定义方程全都是 A型时,编译软件除了设定 SYNAC0=01外,还将 AC1(n)全部设置为
0,即 SYNAC0ACl(n)=010,这时各 OLMC都是寄存器输出 。 由于 OLMC内部 FMUX可将 D触发器的 Q端信号返回到与阵列,所以用户可以在一个 OLMC输出引脚定义方程中将另一寄存器输出引脚的信号作为输入使用 。 这种组态下,每个输出引脚的逻辑方程中乘积项个数可达到 8个 。 GAL芯片在这种组态工作时,1号引脚只能做 D触发器的同步脉冲 CK的输入端,11号引脚 OE
必须接低电平,使寄存器输出全部使能 。
2009-7-31 东北大学信息学院 97
(a)寄存器模式寄存器输出组态:
SYN=0; AC0=1XOR=0决定低有效; X0R=1决定高有效,AC1=0决定此宏单元为寄存器输出组态
1脚作为寄存器输出级公共时钟端
11脚作为寄存器输出级的公共使能端
1和 11号引脚总是用来作为公共时钟和使能端
C K
O E
X O R
D
Q
Q
-
( a)
2009-7-31 东北大学信息学院 98
2.寄存器模式下组合输出组态
当用户源文件中 OLMC输出引脚定义方程有 A型,也有 B型时,
编译软件将输出引脚定义方程为 A型的 OLMC的结构控制字置成 SYNAC0AC1(n)=010,而将输出引脚定义方程
B型 SYNAC0AC1(n)=011,即设定 OLMC工作在寄存器模式下的组合输出组态 。 AC1(n)=1的宏单元是组合输出,AC1(n)=0
的宏单元是寄存器输出 。 在这种组态下,用户也可以在一个输出引脚逻辑方程中将另一个输出引脚的信号作为该引脚逻辑方程中的输入使用,从而实现 I/O功能 。 GAL工作在这种组态下,组合输出的 OLMC个数最多是 7个 。 即至少应有一个
OLMC是寄存器输出 。 这就是 1号引脚只能作为同步时钟引脚,11号引脚只能作为使能控制引脚而不能做输入引脚使用的原因 。 在这种组态下每个输出引脚的逻辑方程中含有乘积项个数最多只能有 7个 。 用这种组态能够实现组合和时序混合的逻辑电路设计 。
2009-7-31 东北大学信息学院 99
(b)寄存器模式组合输出组态:
SYN=0.AC0=1XOR=0决定低有效,XOR=1决定高有效
AC1=1决定这级为组合输出
1和 11号总是分别作为时钟 CK端和使能端 OE
X O R
( b )
2009-7-31 东北大学信息学院 100
3.复杂模式有反馈组合输出组态
输出引脚定义为方程全是 B型,SYN和 AC0设置为
SYNAC0=11,各 AC1(n)设置为 1,结果 SYNAC0Acl(n)=111。
0LMC13~OLMC18这 6个宏单元工作在组合 I/O输出组态 。
因为这 6个宏单元 AC0AC1(n〉 =11,它们内部的 FMUX可以将其输出引脚信号反馈到与阵列,用户可以在一个输出引脚的方程中将另外输出引脚的输出信号作为输入 。 因此,0LMC13~0LMC18这 6个宏单元具有 I/O功能 。 需要强调,此处的 I/O功能指的是宏单元输出引脚在输出信号的同时又可借助 FMUX将这个输出信号反馈回到与阵列作为输入 。 这同在输出引脚加专门输入信号是有区别的 。
这 6个 OLMC的输出引脚方程式中最多只能有 7个乘积项 。
由于 AC0AC1(n)=11,第一与项不能作为或门的输入 。 如果用户想将哪个输出引脚定义为专门输入使用,必须将其三态输出缓冲器关闭,其三态选通方程式形式为,引脚名 ·OE=GND。 应指出 OLMC15和 OLMC16上的两个输出引脚无法作为专用输入引脚 。
2009-7-31 东北大学信息学院 101
(c)复杂模式有反馈组合输出组态:
SYN=1; AC0=1; XOR=0决定低有效
XOR=1决定高有效 ; AC1=1
13~18号宏单元可构成这种组态
X O R
( c )
2009-7-31 东北大学信息学院 102
4.复杂模式无反馈组合输出
在复杂模式下,两个最外层的输出逻辑宏单元 OLMC12和
OLMC19与 OLMC13~OLMC18这 6个输出逻辑宏单元不同 。 它们的 FMUX的结构控制字 AC0=SYN=0,AC1(n)失效,AC1(m)=SYN=1。 这二个宏单元的 FMUX的反馈信号来自 11号引脚和 1号引脚的输入信号,而不是这两个宏单元的各自输出信号 。 因此,这二个宏单元是工作在无反馈的组合
输出组态 。 这二个宏单元输出引脚方程中乘积项个数最多只能有 7个 。 这种组态下,芯片的 1号引脚和 11号引脚可作为输入引脚使用 。
2009-7-31 东北大学信息学院 103
(d)复杂模式无反馈组合输出组态:
SYN=1; AC0=1; XOR=0决定低有效 ;
XOR=1决定高有效 ; AC1=1
12,19号宏单元可构成这种组态
X O R
( d )
2009-7-31 东北大学信息学院 104
( 5) 简单模式无反馈输出组态
在简单模式下,输出引脚定义方程全是 C型,编译软件将相应各宏单元的结构控制字置成 SYNAC0AC1(n)=100。 输出引脚定义方程是 C型的各宏单元均为组合输出组态 。
可是,这时的 15号和 16号宏单元的 FMUX只将,地 ',信号反馈到与阵列,它们没有去邻级的引线,无法借助专门输入的邻级构成有效反馈,这种输出组态不具有反馈功能,这也是 OLMC15和 OLMC16两个输出逻辑宏单元对应的二个引脚只能做输出引脚的原因 。 15号和 16号输出逻辑单元工作在这一组态下,其等效电路如图 7-23(e)所示 。
2009-7-31 东北大学信息学院 105
(e)简单模式无反馈组合输出组态:
SYN=1; AC0=0; XOR=0决定低有效
XOR=1决定高有效; AC1=0决定此宏单元为组合输出
15,16号宏单元可构成这种组态
X O R
( e )
V c c
2009-7-31 东北大学信息学院 106
6.简单模式下的本级组合输出邻级输入组态
在简单模式下,输出引脚定义方程全是 C型 。 当某宏单元输出引脚若被定义为输入引脚时,因为编译软件把那些定义 为 输 入 引 脚 的 宏 单 元 的 结 构 控 制 字 置 为
SYNAC0AC1(n) =101,结果同定义为专门输入的宏单元相邻的那个宏单元不能反馈本级的输出信号,但是,它们却给那些邻级的专门输入信号提供了进入与阵列的反馈通路 。 因此,从整体上看有图 7 - 23( f)所示的等效电路,OLMC15和 OLMC16也能构成这种组态 。
2009-7-31 东北大学信息学院 107
(f)简单模式本级组合输出邻级输入组态:
SYN=1; AC0=0; XOR=0决定低有效; XOR=1
决定高有效; AC1=0决定此宏单元构成这种组态; 15和 16号宏单元也能构成这种组态
X O R
( f)
V cc
m
2009-7-31 东北大学信息学院 108
7.简单模式邻级输入组态
输出引脚定义为专门输入的宏单元,编译软件将其结构控制字置为 SYNAC0AC1(n)=101。 这些宏单元的输出三态缓冲器被禁止而输出高阻,内部的 FMUX反馈信号也不是来自本
级宏单元的输出引脚,输入无法通过本级宏单元内部电路加到与阵列 。 而必须借助有反馈组合输出组态的邻级提供的反馈支路加到与阵列 。 因而把输出引脚定义为输入的这些宏单元工作组态称为简单模式邻级输入组态 。
由于外部引线方式限制,致使 OLMC15和 OLMC16不能工作在这种组态,邻级输入组态的等效电路如图 7-23(g)
所示 。
在各种输出组态下,各 OLMC的输出信号的有效极性均受其 XOR(n)决定,当 XOR(n)=1时,OLMC的输出信号有效极性为高有效 。 当 XOR(n)=0时,OLMC的输出信号有效极性为低有效,XOR(n)的控制作用通过异或门实现 。
图 7-23中给出各组态下的等效电路 。
2009-7-31 东北大学信息学院 109
(g)简单模式邻级输入组态:
SYN=1; AC0=0; XOR=0无效; X0R=1无效
AC1=1决定此宏单元构成这种组态
除 15和 16号宏单元外都可构成这种组态
( g)
G N D
2009-7-31 东北大学信息学院 110
(三 )GAL的编程
图 7-24是 GALl6V8的行地址图 。 它是表现 GALl6V8
芯片内部阵列结构的图表 。 行地址图旋转 90o后就同 GAL逻辑图对应起来了 。 行地址图中的,行,,
对应 GAL 逻辑图中的列 。 行 地 址 图 中 的
PT0,PT1,...PT63对应逻辑图中的 0,1,...,63行 。 在行地址图中共有 64行,即 R0W0,R0W1,...,R0W63。 其中 ROW0~ROW31这 32行对应与阵列 。 每行包含 64
位,每一位分别对应逻辑图中一条列输入线同 64条行线交叉点处的一个 E2CMOS编程单元 。
2009-7-31 东北大学信息学院 111
移 位 寄 存 器保 留 地 址 空 间结 构 控 制 字
S
C L K
S
D I N
S
D O U T
P T
3 2
P T
6 3
P T
3 1
P T
0
R O W 0
R O W 3 1
R O W 3 2
R O W 3 3
R O W 5 9
R O W 6 0
R O W 6 1
R O W 6 2
R O W 6 3
阵 列 阵 列电 子 标 签电 子 标 签保 密 单 元备 用整 体 擦 除
1,GAL16V8
行地址图
2009-7-31 东北大学信息学院 112
ROW32是电子标签阵列 (ES),该阵列是用来存储用户定义的有关信息,包括器件完成的电路功能,编程日期,编程者姓名等 。 即或芯片已经加密,该阵列存储的信息也可随时读出 。 ROW33~ROW59这 27行是制造商保留阵列,阵列中的信息,用户只能读出,不能改写 。
ROW60是结构控制字阵列 。
2009-7-31 东北大学信息学院 113
82位结构控制字信息存放在该阵列中,其存放位置如图 7-25所示。图 7-25中下面的数字代表相应的结构控制字控制的 OLMC的序号 。
乘积项禁止
PTD
(32)位
XOR(n)
4位
AC0
1位
SYN
1位
XOR(n)
4位结构控制字
AC1(n)
8位乘积项禁止
PTD
(32)位
82位TP63~ TP32 TP31~ TP0
12 13 14 15 16 17 18 1912 ~ 15 16 ~ 19
2009-7-31 东北大学信息学院 114
ROW61是加密单元,又称加密位 。 其有效位只有 1位,这一位被编程后,可禁止对与阵列 (ROW0~ROW31)作进一步编程或验证 。
ROW63是整体擦除单元,有效位也只有 1位 。 在 GAL编程时,
对该行寻址后,加入高电压执行整体擦除命令 。 整体擦除后,
芯片中信息包括加密单元和电子标签中的信息全部被擦除掉,
芯片处于空白状态 。 ROW62是空位,不编程,是制造厂商保留位 。 行地址图上面的 82位移位寄存器是编程数据写入到 GAL
芯片的必经之路 。 编程数据从 SDIN(9号引脚 )串行移入到移位寄存器中 。 在编程命令控制下,编程数据并行写入被选中一行的 E2CMOS单元中 。 在对与阵列编程时,最先串行移入的数据是 PT0,最后移入的数据是 PT63.GAL的编程是按着行地址图中被选中的行号逐行进行的 。
2009-7-31 东北大学信息学院 115
2.GALl6V8的编程
GAL的编程实质上是借助计算机,通过编程写入器将 *·JED文件中的编程数据写入到芯片中,使其具有逻辑功能 。 同时,GAL的编程还包括将芯片内的数据读出进行校验 。 GAL芯片在编程时,各引脚的功能完全不同于通常使用的功能 。 图 7 - 26示出
GAL16V8编程时芯片各引脚的具体功能 。 由图 7-26
看出 19号引脚 。 (P/V)设置为编程或验证方式控制端 。 当 P/V=H时,为编程写入方式 P/V=L时,是数据读出校验方式 。 9号引脚 SDIN设置为编程数据输入端 。 编程数据在 8号引脚上的同步时钟脉冲信号
SCLK的作用下,串行移入到移位寄存器中 。 先移入的是 PT0的数据,最后读入的是 PT63的数据 。
2009-7-31 东北大学信息学院 116
编程数据被写入到阵列中的哪一行由行地址选择
(18,3,4,5,6,7号引脚 )信号 RAG0,RAGI,...,RAG5控制 。 编程数据写入之前必须将 GAL芯片中已有的数据进行整体擦除 。 为此,首先要对第 63行的整体擦除位进行编程 。 这一位编程后,阵列中原有数据信息全被清除,其结果数据全部为 1。 一般来说,对
GAL编程首先要进行整体擦除这一步 。
2009-7-31 东北大学信息学院 117
1
2
3
4
5
6
7
8
9
2 0
1 9
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
1 0
V
I L
E D I T
R A G
1
R A G
2
R A G
4
R A G
5
R A G
3
S
C L K
S
D I N
G N D
V
C C
( V
C C P
)
R A G
0
V
I L
S
D O U T
S T R
P / V
G
A
L
1
6
V
8
图 7-26 GAL16V8编程时各引脚的功能
2009-7-31 东北大学信息学院 118
整体擦除的过程如下 。
( 1 ) 在 20号 引 脚 加
Vccp=5.25V电压,且置 11号引脚 STR端为高电平 。
(2)在 2号引脚 EDIT端加入编程电压 16.5V(GAL芯片的型号不同,编程电压略有不同 )。
(3)18,3,4,5,6,7号引脚均加高电平,即 RAG0,
RAG1,...,RAG5各端均为 1,
用以选择第 63行 。
(4)将 19号引脚 (P/V)端置为高电平,选择数据编程写入方式 。
设置 SDIN端为 H在 SCLK端加入移位脉冲,将数据,1”,送入移位寄存器 。
(5)在 11号引脚 STR端加入负编程脉冲,将寄存器中的数据写入到指定行的阵列中去 。 GAL
芯片的型号不同,对 STR负脉冲宽度要求也不同 。
(6)将 EDIT端恢复为低电平,结束整体擦除过程中的数据写入阶段 。
2009-7-31 东北大学信息学院 119
(7)为了进行数据校验,在 2号引脚 EDIT端再次加上 16.5V,
将 P/V端置为低电平 。
(8)将 RAG0,RAGI,...,RAG5
再次全置 1,选择第 63行。同时,STR端加入负脉冲,读阵列中的数据。
(9)在 SCLK端加入时钟脉冲,
从 SDOUT端读出数据 。 若全为 1,说明整体擦除成功 。
整体擦除之后的编程过程与上面所述各步基本相同 。 不同之处有两点,其一是行地址
选 择 端 信 号
RAG0,RAGI,...,RAG5从
000000(二 )开始,目的是从与阵列第 0行 (ROW0)开始编程 ;其二是移位寄存器 SDIN数据不应总为 1,而是 *·JED中的实际编程数据,既有 1也有 0。
2009-7-31 东北大学信息学院 120
如果用户要给 GAL芯片加密,还需对 ROW61的加密位进行编程 。 GAL的全部编程过程如图 7-27所示 。
上述编程过程原则上对 GAL20V8也适用 。 不同之处 仅 在 于 对 应 的 引 脚 号 发 生 变 化 。 对
GALl6V8A/B,GAL20V8A/B来说,除在 EDIN端加入的编程电压为 15V外,上述编程过程也适用 。 GAL的上述编程过程一般要借助编程器硬件,在计算机操作下一步一步完成的 。 一般对 GAL器件编程下载的时间只需一秒钟左右就可以完成 。
2009-7-31 东北大学信息学院 121
1 2 ~ 1 8 引 脚 浮 地
V c c = 5,2 5 V
S T R = H
E D I T = 1 6,5 V
设 定 R A G 0,?,R A G 5
为 6 3 P / V = H S
D I N
= H
在 S T R 加 编 辑 脉 冲
E D I T = 0
E D I T = 1 6,5 V
P / V = L 检 验在 R A G 上设 定 地 址在 S T R 上加 编 程 脉 冲用 S
C L K
和 S
D O U T
数 据 校 验设 定 R A G 0,?,R A G 5
用 S
C L K
和 S
D O U T
置 寄 存 器
P / V = H
S T R 加 脉 冲
P / V = L 校 验
S T R 加 脉 冲用 S
C L K
和 S
D O U T
数 据 检 验
1 2 ~ 1 8 引 脚 浮 地
E D I T = 0 V c c = 0
开 始结 束擦除擦除校验编程编程校验图 7 - 2 7   G A L 的 编 程 过 程 流 程 图
2009-7-31 东北大学信息学院 122
(四 ) GAL的输入缓冲器,输出三态缓冲器
(1)GAL的输入缓冲器电路结构如图 7-28所示 。 其基本特点是输入电平可与 TTL电平兼容,输入电流远远低于 TTL门电路的输入电流 。 如果用 TTL门驱动 GAL器件,可以有很高的扇出系数 。 之所以如此是因为 GAL的输入缓冲器的内部电路使用了 CMOS晶体管 。 Q2对管和 Q3对管组成二个反相器,
由 Q2和 Q3输出二个极性互补的信号至内部电路 。 C1称为去耦电容,用来去除噪声信号 。 栅极接地的场效应管 Q1同电阻
R1联合组成过压保护电路 。 当有静电过压时,特殊结构的 Q1
漏源之间产生电压击穿,形成低阻通路,过电压降在电阻身上,
保护其内部电路 。
2009-7-31 东北大学信息学院 123
由于 Q2和 Q3二个对管为 CMOS结构,静态时总有一个 MOS管截止,因此输入缓冲器的电源电流 ICC很小 。 这也是 GAL器件功耗很低的原因之一 。
在使用 GAL器件时不用的输入引脚都要接地或接电源上,可以提高噪声抑制能力,降低静态电流 。
2009-7-31 东北大学信息学院 124
输 入
R
1
I c c
V c c
Q
2 A
Q
2 B
Q
1
C
1
Q
3 A
Q
3 B
至 内 部电 路至 内 部电 路图 7 - 2 8 G A L 输 入 缓 冲 器 电 路 结 构
Ω
6 0 0
( N + )
2009-7-31 东北大学信息学院 125
(2)输出三态缓冲器
GAL的输出三态缓冲器的结构如图 7-29所示 。 电路中 Q3(上拉管 )和 Q2,Q1(下拉管 )采用的都是 NMOS管消除了寄生可控硅自锁导通效应 。 一般若采用 NMOS管上拉和 PMOS管下拉结构容易产生可控自锁导通效应,产生这种效应后就会在电源和地之间形成低阻通路,造成电源电流 ICC急剧上升,甚至器件烧毁 。 GAL的输出电路改进的另一措施就是 Q1和 Q2采用分拍软导通方式 。 当 Q1和 Q2由截止变为导通时,若 Q1和 Q2同时导通且输出电容负载很大,可能产生大的电流变化率,引起感性的动态尖峰脉冲 。 为此,在设计上使二个反相器 I1和 I2的开关速度不同,I1快,I2慢一些,这样 I1由 0变 1快,驱动 Q1迅速导通 。 I2由 0变 1慢,Q2稍有延时导通,这样就减少了输出驱动电流的变化率,抑制了尖峰脉冲的产生 。
2009-7-31 东北大学信息学院 126
2009-7-31 东北大学信息学院 127
( 五 ) GAL的开发中应注意的问题
1.GAL开发的软件和硬件需求
(2)1台 GAL编程器
(3)1套完整的软件开发系统 (软件包 )
(4)GAL芯片及测试工具
2009-7-31 东北大学信息学院 128
2.GAL的开发流程 (开发步骤 )
(1)建立用户源文件用户源文件就是设计者书写的描述所要实现逻辑电路功能的软件程序的集合。其软件程序必须符合某一可编程逻辑设计语言的语法规范。现在广泛使用的有 ABEL-HDL,VHDL,Verilog-VHDL等硬件描述语言。
2009-7-31 东北大学信息学院 129
(2)编译用户源文件
要想使建立起来的用户源文件变成要下载的数据文件 (JEDEC),必须经过若干步的语言处理程序 。 如语法检查,逻辑化简,功能模拟,时间模拟等 。 经过专用软件处理后,证明用户建立的源文件正确无误,最后将其转换成要下载的编程数据文件 (JEDEC〉 。 把上述的一系列处理过程称为编译 。
2009-7-31 东北大学信息学院 130
3.器件编程
在专用的软件系统环境下,启动编程器,使计算机和编程器进行通信。将 JEDEC数据文件下载到编程器上。
选择目标器件的制造厂家、型号进行器件匹配。
将 GAL器件插入插座并锁紧。这一步必须注意芯片引脚序号与插座引脚号要对应。否则器件可能被毁坏。
下载编程。即将下载到编程器上的 JEDEC数据文件写入到 GAL芯片中。
2009-7-31 东北大学信息学院 131
4.实际功能验证
将芯片从编程器取下,放到实验电路中或实际工作的系统中进行实际功能验证,如果功能正确,说明开发工作结束 。 如果功能验证不正确,则还要返回到第一步重新修改设计 。
2009-7-31 东北大学信息学院 132
(六 )GAL器件使用中应注意的问题
1,GAL器件的供电电源要加去耦电容
GAL器件接入到系统电路时,在 GAL的 VCC引脚和地之间要并接一个 0.1μF左右的电容器去耦,以此提高 GAL器件工作的可靠性 。
2,GAL器件不用端的处理
GAL器件的不使用管脚切忌悬空,一律要求接地或接 VCC。 否则会引起附加干扰,影响整个芯片的性能 。
2009-7-31 东北大学信息学院 133
3.充分利用内部反馈在利用 GAL器件进行逻辑设计时,常常利用中间输出变量。所谓中间输出变量是指不是真正输出到外界的变量。可以将中间输出变量设置在不同的输出端上,然后利用内部反馈缓冲器将其引入到与阵列重新组成逻辑操作。
2009-7-31 东北大学信息学院 134
4.防止 I/O引脚过压
当 I/O引脚加入高于 VCC或低于地电平的电压时,在该 I/O
引脚上会产生 latch-up(锁死 )现象,结果损坏内部的
CMOS管 。 一般要求输入信号的高,低电平偏差在容许值 0.5V以内 。 同时要注意 GAL芯片未加电源电压以前不要加输入信号 。
5.保证 GAL输入引脚的信号上升沿和下降沿
GAL的输入引脚所加信号的上升沿和下降沿太慢会将噪声引入芯片内,引起误翻转 。 如果已知输入信号上升沿和下降沿太慢时,可将信号先经过一级施密特触发器,信号经整形后再输入到 GAL的输入端 。
2009-7-31 东北大学信息学院 135
6.必须严格遵循 GAL电源的最大上升时间规定
许多 PLD器件在加电期间要完成寄存器的加电复位操作,GAL
器件就是如此 。 电源电压上升率太慢会引入噪声 。
7.注意 GAL输入端参数对外电路的影响 。
在用 GAL实现单稳和振荡器时,GAL的输入电阻和电容会对单稳和振荡器的参数产生影响,在选择单稳和振荡器参数时要考虑
GAL芯片输入 /输出端的影响 。 最好通过实验确定其参数 。
8.如何修改 GAL逻辑设计
在修改用 GAL实现的逻辑电路设计时,不要直接修改 JED文件,
需先修改源文件,然后再对修改后的源文件进行编译,重新得到修改后的熔丝图和 JED文件 。
2009-7-31 东北大学信息学院 136
9.选用合适的 GAL编程写入器
在选购编程器时必须注意编程器对个入计算机的时钟频率匹配问题 。 有些编程器在 PC586上能正确对 GAL芯片编程写入,
而在 P II上反而不能正确编程写入 。
10.如何解决乘积项不足问题
当某一输出逻辑宏单元的乘积项不足时,可以借用另外宏单元实现扩充乘积项的逻辑操作,然后将其输出再反馈到乘积项不足宏单元的与阵列输入 。
11.GAL的上电复位
上电之前,如果芯片工作在寄存器模式下,必须将 11脚
(GALl6V8)或 13脚 (GAL20V8)接低电平或接地 。 上电之后,工作在寄存器模式下的各输出逻辑宏单元中的 D触发器其 Q端应复位成,0”,相应的输出引脚应为高电平 。 如果状态正确,可继续进行功能验证 。 否则,说明编程有误或芯片出了问题 。
2009-7-31 东北大学信息学院 137
1.设计说明及构思
图 7-30给出了用一片 GALl6V8实现基本逻辑门的要求 。 由图 7-30看出所要实现的电路是简单的组合逻辑电路,选择 GAL16V8的简单模式就可以实现 。
7.3.2,GAL的应用举例
(一 ) 用 GAL实现基本逻辑门的设计
2009-7-31 东北大学信息学院 138
选定模式后要画出引脚配置图,由图可见全部电路共有
12个输入端,6个输出端。其中 8个输入信号安排在
2,3,4,5,6,7,8,9专用输入引脚上,1号和 11号引脚也安排 2
个输入信号。
2 0
1 9
1 8
1 6
1 7
1 5
1 4
1 3
1 2
1 1
1
2
4
5
6
7
8
9
1 0
G N D
图 7 - 3 0
用 G A L 1 6 V 8 代 替基 本 逻 辑 门 引 脚 配 置 图
b
c
d
e
m
n
p
q
h
V c c
a
u
v
w
x
0
y
0
0
j
i
3
z
2009-7-31 东北大学信息学院 139
剩下 2个输入信号安排在
12和 19号引脚。这就意味着 OLMC12和 OLMC19二个宏单元要设置为邻级输入组态。其他 6个 OLMC
均设置为组合输出组态。 6
个门电路的输出信号安排在这 6个宏单元的相应输出引脚上。
2 0
1 9
1 8
1 6
1 7
1 5
1 4
1 3
1 2
1 1
1
2
4
5
6
7
8
9
1 0
G N D
图 7 - 3 0
用 G A L 1 6 V 8 代 替基 本 逻 辑 门 引 脚 配 置 图
b
c
d
e
m
n
p
q
h
V c c
a
u
v
w
x
0
y
0
0
j
i
3
z
2009-7-31 东北大学信息学院 140
2.建立用户源文件
符合 ABEL-HDL语言规范且能实现图 7-30给出的基本逻辑门设计的用户源文件如下,
2009-7-31 东北大学信息学院 141
基本逻辑门引脚配置图设计的用户源文件如下:
2009-7-31 东北大学信息学院 142
2009-7-31 东北大学信息学院 143
(二 )用 GAL实现组合及时序混合的逻辑电路
1.设计说明及构思
2009-7-31 东北大学信息学院 144
附 ----ABEL语言的一些语法规定:
一、源文件的编写格式 —五

1.标题段:模块语句,标题语
句(可选),两端加‘’
2.定义段
常用属性定义关键字:
Buffer—寄存器输出,寄存器
与引脚之间无反相器
Invert--寄存器输出,寄存器
与引脚之间有反相器
Reg—寄存器输出
Com—组合逻辑输出
Reg-d—d触发器输出( d可以
换成 JK或 T)
3.逻辑描述段
4.测试向量段(可选内容)
用来检测逻辑描述段的电路
设计是否能实现预期的功能。
ABEL软件将按照设计编写的
测试向量逐条地对编译文件
时建立的电路模型进行仿真,
并将仿真结果报告给设计者。
5.结束段,END 后面不加;
6.添加注释:每一实际行皆需
要双引号开头,不执行。
二、变量:标识符、大小写
将被视为不同的字。
常量,1,0,X( 任意态)
Z—高阻态,F—浮动态
2009-7-31 东北大学信息学院 145
ABEL—HDL中常用的特殊常量
H—高电平 L—低电平
,C,—时钟输入
,K,—时钟输入
,U,—时钟上升沿
,D,—时钟下降沿
,F.—浮动输入或输出信号
,X.—任意态
点后缀:
,OE—输出使能(输出三态受控)
部分关键字(大小写均可)
MODULE——定义模块名
EQUATIONS——列出布尔逻辑方程
TRUTH-TABLE——对阵真值表进行说明
STATE-DIAGRAM——对状
态机进行说明
FUSES——定义熔丝状态
TEST-VECTORS——说明仿真
用的测试向量
例如:
Module an,建立一个名为 an
的模块
Declarations,说明部分开始
A,B PIN 1,2;,A,B是输入,
分别锁定到 1,2引脚
Out PIN 15 istype ‘com’,out是
组合型输出,锁定到 15引脚
Equations,方程开始
Out=A& B;,out等于 A和 B相与
End,模块 an结束
Goto 0;,无条件转到 0状态
2009-7-31 东北大学信息学院 146
2009-7-31 东北大学信息学院 147
2009-7-31 东北大学信息学院 148
组合和时序混合的逻辑电路如图 7-31所示 。 由图 7-31看出,
组合电路部分包括二个电路,其中一个是实现 X=AS+BS的复合逻辑门,另一个是三态门 。 时序电路部分包括一个 D触发器和一个由 2个 D触发器构成的四进制计数器 。
2009-7-31 东北大学信息学院 149
2 0
V c c

C L D
1 9
1 8 1 7
1 6
1 5
1 4
1 3 1 2 1 1
N C
X
1
Q
D
Q
A
Q
B
Y
N C
O EN C
Q
D
        4 进 位 的 记 数 器
2
3 4
5
6
7
8
9 1 0
A S B D
N C
I
E
G N D
N C
图 7 - 3 1 用 G A L 构 成 逻 辑 电 路 实 例
2009-7-31 东北大学信息学院 150
若用 GAL器件实现该电路,要用 GAL的寄存器组合输出组态 。 在进行设计时有二点必须注意,其一所实现的电路包括 D触发器和四进制计数器,11号引脚只能做这个时序电路的使能控制端 。 在建立用户源文件时,11号引脚要给予引脚定义,不必写出 OE的方程式 。
测试向量包括 OE。 测试或使用时将 11号引脚接地就可保证时序电路使能 。 其二所实现的电路还包括三态门,三态门使能端 E要用独立的乘积项进行控制 。
在设计用户源文件时,要书写有关 E的专用方程式,测试向量也应包括使能信号 E。
2009-7-31 东北大学信息学院 151
由四进制计数器得来,看上面示意图。
QBQA
00 01
11 10
QB
QA 0 1
0
1
10
11 00
01圈 1可得 QBQA
的次态方程
2009-7-31 东北大学信息学院 152
2009-7-31 东北大学信息学院 153
将上面的名为 example2的用户源文件编译后会得到相应的
name.JED下载编程数据文件 。 对 GALl6V8下载后完成设计 。
这个组合和时序混合的逻辑电路在 GAL16V8中的等效电路如图 7-32所示 。 其中四进制计数器的真值表如表 7-3所示 。
2009-7-31 东北大学信息学院 154
2009-7-31 东北大学信息学院 155
Q
B
( d ) 四 进 制 计 数 器 的 等 效 电 路
Q
A
F D
D Q
C
Q
F D
D Q
C
Q
Q
B
Q
A
1
1
Q
B
Q
A
O E
2009-7-31 东北大学信息学院 156
A S*
B * S
A S
+
B S
1
X 1
0
( a ) X 1 输 出 的 等 效 阵 列 图
A S
B
A S B
A S
+
B S
A S
+
B S
1
( b ) Y 输 出 的 等 效 阵 列 图
( c ) D 触 发 器 的 等 效 电 路 图
II
E E
I
I
Y
1
D D
F D
C L K
O E
D
Q
C
1
2009-7-31 东北大学信息学院 157
(三 )用 GAL实现 5位二进制计数器和 N位任意进制计数器设计 1.用 GAL实现 5位二进制计数器的设计图 7-33所示是用可编程 ASIC器件设计二进制计数器的模块化设计框图 。 图 7-33中的 N位 D
触发器在可编程 ASIC器件中已经具备 。 剩下的工作就是应用 PLA模型设计 N位增 1
加法器这一组合电路 。 将增
1加法器的各输出
端与相应的 D触发器的数据输入 d端相接,而 D触发器的各 Q端与增 1加法器的各相应输入端相接就得到 N位二进制计数器。
2009-7-31 东北大学信息学院 158
下面给出用 PLA模型压缩技术进行 5位二进制计数器的设计过程,从中找出规律再给出 N位二进制计数器以及任意 n进制计数器设计方法 。 根据 5位二进制计数器的计数规律写出如表 7-4所示用 T表示输出变量的 PLA模型 。
在表 7-4中,相对输入位而言,若对应的输出位与输入位反极性则对应的输出位写 T;如果对应的输出位与输入位同极性则对应的输出位空 (即什么也不写 ),T是 Toggle(反转 )的意思 。 在表
7-4中 N4,N3,N2,N1,N0是增 1加法器 ( 类似五位加法计数器 ) 的输入,也是 D触发器现状态的输出 。 而 S4,S3,S2,S1,S0是增 1加法器的输出,也是 D触发器的输入数据 。
2009-7-31 东北大学信息学院 159
2009-7-31 东北大学信息学院 160
在表 7-4的基础上采用 PLA
模型压缩技术,得如表 7-5所示简化的用 T表示的 5位二进制计数器的增 1加法器
PLA模型 (化简过程略 )。
由表 7 - 5 看出,在
N3N2N1N0=HHHH 条件下,S4 同 N4 反 极 性 ; 在
N1N0=HH条件下,S2同 N2反极性 ;在 N0=H条件下,S1和
N1反极性 ;S0总是同 N0反极性 。 上面的语言描述用逻辑方程式表达如下:
2009-7-31 东北大学信息学院 161
而把上述逻辑表达式 (7-1)用逻辑门实现得到如图 7-34所示的增 1加法器的逻辑图 。 把图 7-34所示的增 1加法器和 D触发器联接起来,得如图 7-35所示的 5位二进制计数器的逻辑图,其中
Qc是进位输出端。若考虑到计数器的使能控制、清零控制、
并行进位的实际需要,可将增 1加法器的逻辑方程修改成如下形式,
2009-7-31 东北大学信息学院 162
2009-7-31 东北大学信息学院 163
图 7 - 3 4   5 位 增 1 加 法 器 逻 辑 图
S
1
S
2
S
3
S
4
S
0
N
0
N
2
N
1
N
4
N
3
D
Q
C
Q
C
D Q
C
D
C
D Q
C
D
Q
C L K
Q
0
Q
1
Q
2
Q
3
Q
4
图 7 - 3 5 5 位 二 进 制 逻 辑 图
2009-7-31 东北大学信息学院 164
根据式 (7-2)得实用的 5
位二进制计数器的逻辑电路如图 7-36所示 。
本 例 是 选 用 可 编 程
ASIC中的通用阵列逻辑 GALl6V8来实现的 。
编程下载后再经功能仿真验证,其功能完全符合设计要求 。 下面给出的是符合 ABEL语言规范的实用 5位二进制计数器的用户设计源文件 。
2009-7-31 东北大学信息学院 165
D Q
C
D
C
C
D
C
D
Q
C
D
Q
Q
Q
图 7 - 3 6 实 用 的 位 二 进 制 计 数 器 逻 辑 图
C L K
C R
E Q
0
Q
1
Q
2
Q
3
Q
4
2009-7-31 东北大学信息学院 166
2009-7-31 东北大学信息学院 167
2009-7-31 东北大学信息学院 168
2009-7-31 东北大学信息学院 169
2009-7-31 东北大学信息学院 170
上述 5位二进制计数器设计方法可简单地推广到 n位二进制计数器的设计 。 其通用逻辑方程为:
Sn-1=Nn-1⊕ (Nn-2·N n-3....N1·N 0) (7-3)
带有使能控制的 n位二进制计数器的增 1加法器的通用逻辑方程为:
Sn-1=Nn-1⊕ (Nn-2·N n-3....N1·N 0·E) (7-4)
2.用 GAL实现 N位任意进制计数器的设计
用 PLA模型设计二进制计数器具有方法简单,电路结构规律的特点,适合用可编程 ASIC器件实现,可方便地应用到 6,7,...,N位二进制计数器的设计 。 由 Sn-1的二个通用方程式式 (7-3)和式 (7-4)
可知,位数的增加导致逻辑表达式中的或项数量急聚增加 。 这就给具体用可编程 ASIC器件实现增 1加法器时带来影响和麻烦 。
2009-7-31 东北大学信息学院 171
由式 (7-4) 可知,一个 7位的二进制计数器的与或项数已达到 8个 。 所以,用普通型通用阵列逻辑 GAL实现多于 7位的二进制计数器只能采用级联的办法 。 也可用 GAL22V10或者选用可编程 ASIC中的 CPLD或 FPGA(现场编程门阵列 )
等 。
用 PLA模型设计任意 n进制计数器是在 N位二进制计数器设计基础上进行的,且满足 2N> n。 若 n进制计数器的设计采用图 7-37所示方块图,当 n进制计数器计数到 n-1时,清零译码门输出低电平且反馈到输入控制门,第 n个计数脉冲到来后,N位 D触发器全部清零,完成一个计数周期 。 图 7-38
给出用一片 GALl6V8实现的一个 100进制计数器的逻辑图 。
Qc=Q6Q5Q4Q3Q2Q1,CLR为清零信号,通过输入控制门在
CLK作用下实现全部 D触发器清零 。
2009-7-31 东北大学信息学院 172
2009-7-31 东北大学信息学院 173
2009-7-31 东北大学信息学院 174
实现 100进制计数器的用户源文件如下,
2009-7-31 东北大学信息学院 175
2009-7-31 东北大学信息学院 176
2009-7-31 东北大学信息学院 177
2009-7-31 东北大学信息学院 178