清华大学电机系唐庆玉 2003年 11月制作盗版剽窃必究清华大学电机系唐庆玉 1997年制作如发现有人剽窃必定追究!
第 15章 可编程逻辑器件( PLD)
千岛湖风光千岛湖画面属唐庆玉个人创作,青山緑水蓝天白云,剽窃必究
1,概述
2,PLD的逻辑表示方法和图形符号
3,PLD阵列结构及编程
4,复杂可编程逻辑器件 (CPLD)
清华大学电机系电工学教研室 唐庆玉 编
2003年 11月
1,PLD概述
PLD— Programmable Logic Devices
大规模集成电路,集成了大量的门电路和触发器,用户可编程构成所需电路。
清华大学电机系唐庆玉
2003年 11月 15日编优点:
( 1)节省集成芯片的数量?节省电路板面积,
节省电耗,减少产品体积,降低成本
( 2)电路保密,不易被他人仿造清华大学电机系唐庆玉
2003年 11月 15日编
PLD类型
( 1) PROM型 ( Programmable ROM)
( 2) PLA型 ( Programmable Logic Array 可编程逻辑阵列 )
( 3) PAL型 ( Programmable Array Logic可编程阵列逻辑)
( 4) GAL型 ( Generic Array Logic通用阵列逻辑)
( 5) CPLD型 ( Complex PLD)最复杂简单较复杂只读存储器补充分类:
( 1)掩膜 ROM
( 2) PROM( Programmable ROM,可编程 ROM)
( 3) EPROM( Erasable PROM,紫外线擦除的 PROM)
( 4) EEPROM( Electric Erasable PROM,电擦除的 PROM)
或写成 E2PROM
只读存储器( Read Only Memory,ROM)
功能,存储程序或数据,掉电后仍保留
( 1)二极管阵列的掩膜 ROM
二极管存贮 矩阵字地址译码器
W0
W1
W2
W3
A1
A0
字线位线地址线输出三态门
D3 D2 D1 D0
数据线输出使能
OE
A1A0 W3W2 W1 W0 D3D2D1D0
0 0 0 0 0 1 1 1 1 0
0 1 0 0 1 0 0 1 0 1
1 0 0 1 0 0 1 1 0 0
1 1 1 0 0 0 0 0 1 1
每个单元所存数据
( 2) PROM(熔丝式)电路原理字线位线熔断丝
2,PLD的逻辑表示方法及图形符号
(1)PLD的 逻辑表示方法固定连接 编程连接 不连接熔丝
( 2) PLD的图形符号缓冲门 A AA
相当于
&
1
A
A
A
ABC
Y与门 A Y&B
C
ABC
Y或门
A Y?1B
C
ABC
Y A Y&B可编程连接或不连接
PLD图形符号(续)
与或门
A B C D
Y
ACCDBCABY
多输入端或门画法多输入端与门画法门电路符号中美对照表
&
≥1
1
&
≥1
=1
与或非与非或非异或清华大学电机系唐庆玉
2003年 11月 15日编
3,PLD阵列结构及编程结构,AND逻辑阵列 +OR逻辑阵列类型 AND阵列 OR阵列 D触发器
PROM 连接固定 可编程 (一次性)
PLA 可编程 (一次性) 可编程 (一次性)
PAL 可编程 (可多次电擦除) 连接固定 8个
GAL 可编程 (可多次电擦除) 连接固定 8个输出比 PAL增加“可编程输出逻辑宏单元”
使编程更灵活。
清华大学电机系唐庆玉
2003年 11月 15日编
(1)PROM的内部结构及编程
AND阵列固定 OR阵列可编程输出输入
O2 O1 O0
I2 I1 I0
例 1 用 PROM实现半加器半加器逻辑式
F=AB+AB=A? B
C=AB
F C
A B
BA
BA
BA
AB
如何用 PROM实现全加器?
例 2 用 PROM实现三变量奇数校验电路
A B C
Y ABCCBACBACBAY
ABC Y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
真值表
ABC
CBA
CBA
CBA
CBA
BCA
CBA
CAB
清华大学电机系唐庆玉
2003年 11月 15日编
(2) PLA的内部结构及编程
AND阵列可编程 OR阵列可编程
O2 O1 O0
I2 I1 I0
输出输入例 3 用 PLA实现三八译码器
A2 A1 A0
0 0 0 只 =0Y0
0 0 1 只 =0Y1
1 1 1 只 =0Y7
输出三八译码器真值表
0120 AAAY
0121 AAAY
0127 AAAY
……
A2 A1 A0
Y0 Y1 Y7
A2
A1
A0
A2
A1
A0
清华大学电机系唐庆玉
2003年 11月 15日编
(3) PAL的内部结构及编程( 专用输出结构型 )
AND阵列可编程 OR阵列固定输出 0
输入
O0
I2 I1 I0
O1 输出 1
实现组合逻辑电路( GAL结构类似)
例 4:写出 PAL( GAL)阵列输出 X的表达式英文教材,数字电子技术,习题选编清华大学电机系 唐庆玉
2002年 9月 16日 X
A B C CBA
×
×
×
×
×
×
×
×
BCBCACBAX
BCCBCACB
CACBB


将此式化简例 5,Y=A?B? C,用 PAL( GAL)阵列实现该式。
CBAABCCBACBA
CBAABCBABA
CBACBA
CBAX




)()(
)()(
英文教材,数字电子技术,习题选编清华大学电机系 唐庆玉
2002年 9月 16日
X
A CB
×
×
×
×
×
×
×
×
×
×
×
×
例 6:分别在 PROM和 GAL阵列上画出七段显示译码器逻辑电路图
Y
a a
b
cde
f g译码器
Yb
Yc
Yd
Ye
Yf
Yg
A3
A2
A1
A0
七段显示译码电路七段显示译码电路真值表十进制数 A3A2A1A0 Ya Yb Yc Yd Ye Yf Yg 显示字形
0 0 0 0 0 1 1 1 1 1 1 0 0
1 0 0 0 1 0 1 1 0 0 0 0 1
2 0 0 1 0 1 1 0 1 1 0 1 2
3 0 0 1 1 1 1 1 1 0 0 1 3
4 0 1 0 0 0 1 1 0 0 1 1 4
5 0 1 0 1 1 0 1 1 0 1 1 5
6 0 1 1 0 0 0 1 1 1 1 1 6
7 0 1 1 1 1 1 1 0 0 0 0 7
8 1 0 0 0 1 1 1 1 1 1 1 8
9 1 0 0 1 1 1 1 0 0 1 1 9
用真值表设计 Ya的逻辑表示式A3A2A1A0 Ya
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 0
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 1
用输出为 1的项写出与或表达式,
(不化简)
0123
01230123
01230123
01230123
AAAA
AAAAAAAA
AAAAAAAA
AAAAAAAAY
a



同理写出 Yb— Yg的逻辑表达式用 PROM阵列实现七段显示译码器逻辑
0123
0123
0123
0123
0123
0123
0123
AAAA
AAAA
AAAA
AAAA
AAAA
AAAA
AAAAY
a
A3 A2 A1 A0
Ya
×
×
×
×
×
×
×
Yb
Yg
A3A2
A1A0
00 1101
00
10
01
11
10
1 1 1
1 1
1 1
0
0
0 无所谓项当 1处理用卡诺图化简 Ya的逻辑表示式
Ya=A3+A2A0+A2A1+A2A0
A3A2A1A0 Ya
0 0 0 0 0 1
1 0 0 0 1 0
2 0 0 1 0 1
3 0 0 1 1 1
4 0 1 0 0 0
5 0 1 0 1 1
6 0 1 1 0 0
7 0 1 1 1 1
8 1 0 0 0 1
9 1 0 0 1 1
在 GAL阵列上 实现七段显示译码器逻辑
Ya=A3+A2A0+A2A1+A2A0
英文教材,数字电子技术,习题选编清华大学电机系 唐庆玉
2002年 9月 16日 Ya
A3 A2 A1 A1A2A3 A0 A0
清华大学电机系唐庆玉
2003年 11月 15日编
(4) PAL的内部结构及编程( 寄存器输出结构型 )
功能:可编程组成记忆、计数、移位、寄存等时序逻辑电路
I2 I1 I0
反馈信号
CLK OE输出使能三态输出D Q
Q
D Q
Q
8输入
8输出固定
(G
AL
结构类似

(5) GAL的内部结构及编程
GAL的内部结构与 PAL基本一样,只是在输出端增加了“可编程输出逻辑宏单元”,其输出状态可由用户定义,这样,使编程更灵活。
GAL16V8
I0/CLK I1 I2 I3 I4 I5 I6 I7 I8 GND
VCC F7 F6 F5 F4 F3 F2 F1 F0 I9/OE
20 11
101
2-9脚输入(固定)1脚时钟(可定义成输入)
11脚 输出使能
(可定义成输入)
12-19脚输出(也可定义成输入)
I/O O I/O
清华大学电机系唐庆玉
2003年 11月 15日编例 7 用 PAL(或 GAL)组成二位减法器 CLK FB FA
0 1 1
1 1 0
2 0 1
3 0 0
4 1 1
S
CLK OE 输出使能
FAD Q
Q
D Q
Q
FBQB
QA
QAQAQBQBSS
状态方程
SQSQQ nAnAnA 1
nAnA QQS 1,1
nBnAnBnAnB QQQQQS 1,1
SQSQQQQQ nBnBnAnBnAnB )(1
0011010100,AB QQ
例 8 GAL16V8型 GAL可编程逻辑器件的编程方法介绍
GAL16V8
I0/CLK I1 I2 I3 I4 I5 I6 I7 I8 GND
VCC F7 F6 F5 F4 F3 F2 F1 F0 I9/OE
20 11
101
A0 A1 A2 A3 A4 A5 A6 A7 A8
A11 Y6 Y5 Y4 Y3 Y2 Y1 A10 A9
输入输出定义
FAST MAP GAL编程源文件1,GAL16V8 ;型号
2,Logic Gates;设计电路名称
3,2003.10 ;日期
4,TANG ;设计人
5,A0 A1 A2 A3 A4 A5 A6 A7 A8 GND ; 1-10脚定义
6,A9 A10 Y1 Y2 Y3 Y4 Y5 Y6 A11 VCC ; 11-20脚定义
Y1=A9A10
Y2=A7+A8
Y3=A5A6
Y4=A3 + A4
Y5=A1A2 + A1A2
Y6=A0A11 + A0A11
7,Y1= A9*A10 ;逻辑运算
8,Y2= A7+A8
9,Y3=/A5+/A6
10,Y4=/A3*/A4
11,Y5=A1*/A2+ /A1*A2
12,Y6=A0*A11+ /A0*/A11
13,DESCRIPTION ;结束
4,复杂可编程逻辑器件( CPLD)
CPLD型号,Altera EPF10K10LC84-4
内部有 6000门以上,可编程组成各种 74系列组合逻辑电路、触发器、寄存器、计数器等复杂数字电路
速度达 40MHz ~ 200MHz
84引脚,其中 59个可用于 I/O引脚
可由单片机或 PC机控制
编程语言,MAX+PLUS2 9.23
( 1)特性电路绘图法编程软件( Graphic Editor file)
数字硬件描述语法( AHDL描述语法)
( 2) CPLD实验系统框图按钮,开关,键盘,单脉冲,连续脉冲,数码管,LED
Altera CPLD芯片,EPF10K10LC84-4
串行 E2PROM,SE2PROM,8KB
CPLD
下载板
I/O
实验板RS-232
CPLD下载板元件分布图清华大学电机系唐庆玉
2003年 11月 15日编CPLD
芯片下载板固定插座 单片机插座 晶振
SEEPROM
稳压块
7805
DC7.5V电源
P
01~P
42
引脚插座串行接口
P
43~P
84
引脚插座
CP
LD
芯片的引脚编号
RS232
I/O实验板元件分布图清华大学电机系唐庆玉
2003年 11月 15日编
P55P56P57P58P60P61P62P63P64P65P66P67P69P70P71P72
P01P02P03P04P06P07P08P09P34P35P36P37P39P40P41P42
SWP1 SWP2 SWP3 SWP4
1
0
2
3
5
4
6
7
9
8
A
B
D
C
E
F
6个七段 LED数码管
3个 8位逻辑输入开关
16个逻辑电平检测 LED
3个 CPLD下载板插座
J1
J2 J3
16个逻辑电平检测 LED
1个 5?7点阵
LED显示器
1个米字形
LED显示器
4? 4矩阵键盘
2个连续可调脉冲发生器
4个单脉冲按键
P81 P82 P83 P84
跳线区 CPLD
下载板
RS232串口
DC7.5V电源
I/O板上的引脚编号
1Hz-1kHz 1kHz-1MHz
清华大学电机系唐庆玉
2003年 11月 15日编例 1 用绘图法设计“投币洗衣机电路”
设计思路:
投币数?5,OK=1,洗衣机启动。
只投 1分硬币,用按键 SWP1模拟,按一次投 1分,
用三位计数器 Q1C Q1B Q1A表示;
只投 2分硬币,用按键 SWP2模拟,按一次投 2分,
用二位计数器 Q2B Q2A表示;
只投 5分硬币,用按键 SWP3模拟,按一次投 5分,
用一位计数器 Q5表示;
OK
清 0
1分
2分
5分投币洗衣机电路投币洗衣机电路真值表
Q1C Q1B Q1A Q2B Q2A Q5 OK
1 0 1 1
1 0 0? 1? 1
1 1? 1? 1
1 0 1 0? 1
1 1 0? 1
1 1? 1
1 1
52221
21211
2111
QQQQQ
QQQQQ
QQQQOK
ABBA
BBAAB
ACAC



52221212112111 QQQQQQQQQQQQQQOK ABBABBAABACAC?
逻辑表达式清华大学电机系唐庆玉
2003年 11月 15日编用绘图法设计“投币洗衣机电路”
文件名,wash.gdf
52221212112111 QQQQQQQQQQQQQQOK ABBABBAABACAC?
7490 7490
74175
RESET
SWP3SWP2
SWP1
OK
例 2 用 AHDL描述语法和绘图法设计电路:
将一个 2位 16进制数转换为 2位 10进制数
2位 16进制数 2位 10进制数
00H 00D
01H 01D
0AH 10D
0BH 11D
62H 98D
63H 99D
2位 16进制数和 2位 10进制数的对应关系 转换电路真值表
8位二进制数 二位 BCD码
H7 H6 …H0 DA7 DA6 … DA0
00000000 0000 0000
00000001 0000 0001
00001010 0001 0000
00001011 0001 0001
01100010 1001 1000
01100011 1001 1001
将一个 2位 16进制数转换为 2位 10进制数转换电路真值表
8位二进制数 二位 BCD码
H7 H6 …H0 DA7 DA6 … DA0
00000000 0000 0000
00000001 0000 0001
00001010 0001 0000
00001011 0001 0001
01100010 1001 1000
01100011 1001 1001
hcd.sym
将一个 2位 16进制数转换为 2位 10进制数
hcd.sym
h2cd.sym
组合逻辑电路子系统将一个 2位 16进制数转换为 2位 10进制数
h2cd.sym
组合逻辑电路子文件
012023030 BBBBBBBBD
0112031 BBBBBBD
012032 BBBBBD
021233 BBBBBD
将一个 2位 16进制数转换为 2位 10进制数
h2cd.sym
用 AHDL描述语法设计
h2cd.sym的文本文件
h2cd.tdf
012023030 BBBBBBBBD
0112031 BBBBBBD
012032 BBBBBD
021233 BBBBBD
(B0,B1,B2,B3:INPUT; D0,D1,D2,D3:OUTPUT;)
BEGIN
D0=B3&!B0#!B3&!B2&B0#B2&B1&!B0;
D1=B3&!B0#!B2&B1#B0&B1;
D2=B3&B0#!B0&!B1&B2;
D3=B3#B1&B2#B0&B2;
END;
h2cd.tdf的 AHDL描述语法编程将一个 2位 16进制数转换为 2位 10进制数
DA0
DA5DA6
DA7
DA1DA2
DA3
DA4
H0H1
H2H3
H4
H5H6
H7
hcd.gdf电路文件
h2cd.sym 子文件将一个 2位 16进制数转换为 2位 10进制数
hcd.sym
例 3 将二个 4位二进制数相加,并将和转换为 2位 10进制数
(利用在例 2中自己编的符号文件 hcd.sym)
Mult4.gdf 文件
m1m2
m3m4
n1n2
n3n4
2个 4位二进制数
hcd.sym文件
DA4DA5
DA6DA7
DA3DA2
DA1DA0
2位 10进制数
(BCD码 )
全加器 74283
CPLD设计题目 — 模拟打乒乓球电路左边击球 右边击球
&?1 &
74194L
S1
hitL hitR
Q1
D1
Q0
D0
S0
QA QB QC
QD 74194R
QA QB QC QD
LED