1、清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月制作盗版剽窃必究月制作盗版剽窃必究清华大学电机系唐庆玉清华大学电机系唐庆玉1997年制作年制作如发现有人剽窃必定追究!如发现有人剽窃必定追究!第第15章章 可编程逻辑器件(可编程逻辑器件(PLD)千岛湖风光千岛湖画面属唐庆玉个人创千岛湖画面属唐庆玉个人创作,青山緑水蓝天白云,剽作,青山緑水蓝天白云,剽窃必究窃必究1.概述概述2.PLD的逻辑表示方法和图形符号的逻辑表示方法和图形符号3.PLD阵列结构及编程阵列结构及编程4.复杂可编程逻辑器件复杂可编程逻辑器件(CPLD)清华大学电机系电工学教研室清华大学电机系电工学教研室 唐庆玉唐庆玉
2、编编2003年年11月月1.PLD概述概述PLDProgrammable Logic Devices 大规模集成电路,集成了大量的门电大规模集成电路,集成了大量的门电路和触发器,用户可编程构成所需电路。路和触发器,用户可编程构成所需电路。清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编优点:优点:(1)节省集成芯片的数量)节省集成芯片的数量节省电路板面积,节省电路板面积,节省电耗,减少产品体积,降低成本节省电耗,减少产品体积,降低成本(2)电路保密,不易被他人仿造)电路保密,不易被他人仿造清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编PLD类型
3、类型(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,紫外线
4、擦除的,紫外线擦除的PROM)(4)EEPROM(Electric Erasable PROM,电擦除的,电擦除的PROM)或写成或写成 E2PROM只读存储器(只读存储器(Read Only Memory,ROM)功能:功能:存储程序或数据,掉电后仍保留存储程序或数据,掉电后仍保留(1)二极管阵列的掩膜)二极管阵列的掩膜ROM 二极管存贮矩阵字地址译码器W0W1W2W3A1A0字线位线地址线输出三态门D3 D2 D1 D0数据线输出使能 OEA1A0 W3W2 W1 W0 D3D2D1D00 0 0 0 0 1 1 1 1 00 1 0 0 1 0 0 1 0 11 0 0 1 0 0 1
5、1 0 01 1 1 0 0 0 0 0 1 1每个单元所存数据每个单元所存数据(2)PROM(熔丝式)电路原理(熔丝式)电路原理字线位线熔断丝2.PLD的逻辑表示方法及图形符号的逻辑表示方法及图形符号(1)PLD的的逻辑表示方法逻辑表示方法固定连接固定连接编程连接编程连接不连接不连接熔丝熔丝(2)PLD的图形符号的图形符号缓冲门缓冲门AAA相当于相当于&1AAAABCY与门与门AY&BCABCY或门或门AY1BCABCY AY&B可编程连接可编程连接或不连接或不连接PLD图形符号(续)图形符号(续)与或门与或门A B C DYACCDBCABY多输入端或门画法多输入端或门画法多输入端与门画法
6、多输入端与门画法门电路符号中美对照表&11&1=1与与或或非非与非与非或非或非异或异或清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编3.PLD阵列结构及编程阵列结构及编程结构结构:AND逻辑阵列逻辑阵列+OR逻辑阵列逻辑阵列 类型类型 AND阵列阵列 OR阵列阵列 D触发器触发器PROM 连接固定连接固定 可编程可编程(一次性)(一次性)PLA 可编程可编程(一次性)(一次性)可编程可编程(一次性)(一次性)PAL 可编程可编程(可多次电擦除)(可多次电擦除)连接固定连接固定 8个个GAL 可编程可编程(可多次电擦除)(可多次电擦除)连接固定连接固定 8个个输出比输出
7、比PAL增加增加“可编程输出逻辑宏单元可编程输出逻辑宏单元”使编程更灵活。使编程更灵活。清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编(1)PROM的内部结构及编程的内部结构及编程 AND阵列固定OR阵列可编程输出输入O2 O1 O0I2 I1 I0例例1 用用PROM实现半加器实现半加器半加器逻辑式半加器逻辑式F=AB+AB=A BC=ABF CA B BABABAAB如何用如何用PROM实现全加器?实现全加器?例例2 用用PROM实现三变量奇数校验电路实现三变量奇数校验电路A B CYABCCBACBACBAYABC Y0 0 0 00 0 1 10 1 0 10
8、 1 1 01 0 0 11 0 1 01 1 0 01 1 1 1真值表真值表ABCCBACBACBACBABCACBACAB清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编(2)PLA的内部结构及编程的内部结构及编程 AND阵列可编程OR阵列可编程O2 O1 O0I2 I1 I0输出输入例例3 用用PLA实现三八译码器实现三八译码器A2A1A00 0 0 只只 =0Y00 0 1 只只 =0Y11 1 1 只只 =0Y7输出输出三八译码器真值表三八译码器真值表0120AAAY0121AAAY0127AAAYA2 A1 A0Y0 Y1 Y7A2A1A0A2A1A0清华
9、大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编(3)PAL的内部结构及编程(的内部结构及编程(专用输出结构型专用输出结构型)AND阵列可编程OR阵列固定输出0输入O0I2 I1 I0O1输出1实现组合逻辑电路实现组合逻辑电路(GAL结构类似)结构类似)例例4:写出:写出PAL(GAL)阵列输出)阵列输出X的表达式的表达式英文教材数字电子技术习题选编清华大学电机系 唐庆玉2002年9月16日XABCCBABCBCACBAXBCCBCACBCACBB将此式化简将此式化简例例5:Y=A B C,用,用PAL(GAL)阵列实现该式。)阵列实现该式。CBAABCCBACBACBAA
10、BCBABACBACBACBAX)()()()(英文教材数字电子技术习题选编清华大学电机系 唐庆玉2002年9月16日XACB例例6:分别在:分别在PROM和和GAL阵列上画出七段显示译码器阵列上画出七段显示译码器 逻辑电路图逻辑电路图Y Ya aabcdefg译译 码码 器器YbYbYcYcYdYdYeYeYfYfYgYgA A3 3A A2 2A A1 1A A0 0七段显示译码电路七段显示译码电路七七段段显显示示译译码码电电路路真真值值表表十进制数十进制数 A A3 3A A2 2A A1 1A A0 0 Ya Yb Yc Yd Ye Yf YgYa Yb Yc Yd Ye Yf Yg
11、显示字形显示字形 0 0 0 0 0 00 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 01 0 0 1 1 0 0 0 10 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 2 2 0 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 2 1 0 1 1 0 1 2 3 3 0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 3 1 1 1 0 0 1 3 4 4 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 1 4 1 1 0 0 1 1 4 5 5 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1
12、1 5 0 1 1 0 1 1 5 6 0 1 1 0 6 0 1 1 0 0 0 0 1 1 1 1 1 6 0 1 1 1 1 1 6 7 7 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 0 7 1 1 0 0 0 0 7 8 8 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 8 1 1 1 1 1 1 8 9 9 1 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 9 1 1 0 0 1 1 9 用真值表设计用真值表设计YaYa的逻辑表示式的逻辑表示式 A A3 3A A2 2A A1 1A A0 0 Ya Ya0 0 0 0 0 0 0 0
13、 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 02 0 0 1 0 2 0 0 1 0 1 1 3 0 0 1 1 3 0 0 1 1 1 1 4 0 1 0 0 4 0 1 0 0 0 0 5 0 1 0 15 0 1 0 1 1 1 6 0 1 1 0 6 0 1 1 0 0 0 7 0 1 1 1 7 0 1 1 1 1 1 8 1 0 0 0 8 1 0 0 0 1 1 9 1 0 0 1 9 1 0 0 1 1 1用输出为用输出为1的项写出与或表达式,的项写出与或表达式,(不化简)(不化简)0123012301230123012301230123AAAAAAAAAAA
14、AAAAAAAAAAAAAAAAAYa同理写出同理写出YbYg的逻辑表达式的逻辑表达式用用PROM阵列实现七段显示译码器逻辑阵列实现七段显示译码器逻辑0123012301230123012301230123AAAAAAAAAAAAAAAAAAAAAAAAAAAAYaA3 A2 A1 A0YaYbYgA3A2A1A000110100100111101111111000无所谓项无所谓项当当1 1处理处理用卡诺图化简用卡诺图化简YaYa的逻辑表示式的逻辑表示式Ya=A3+A2A0+A2A1+A2A0 A A3 3A A2 2A A1 1A A0 0 Ya Ya0 0 0 0 0 0 0 0 0 0
15、1 1 1 0 0 0 1 1 0 0 0 1 0 02 0 0 1 0 2 0 0 1 0 1 1 3 0 0 1 1 3 0 0 1 1 1 1 4 0 1 0 0 4 0 1 0 0 0 0 5 0 1 0 15 0 1 0 1 1 1 6 0 1 1 0 6 0 1 1 0 0 0 7 0 1 1 1 7 0 1 1 1 1 1 8 1 0 0 0 8 1 0 0 0 1 1 9 1 0 0 1 9 1 0 0 1 1 1在在GAL阵列上阵列上实现七段显示译码器逻辑实现七段显示译码器逻辑Ya=A3+A2A0+A2A1+A2A0英文教材数字电子技术习题选编清华大学电机系 唐庆玉2002年
16、9月16日YaA3A2A1A1A2A3A0A0清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编(4)PAL的内部结构及编程(的内部结构及编程(寄存器输出结构型寄存器输出结构型)功能:可编程功能:可编程组成记忆、计组成记忆、计数、移位、寄数、移位、寄存等时序逻辑存等时序逻辑电路电路I2 I1 I0反馈信号CLKOE输出使能三态输出DQQDQQ8输入输入8输出输出固定固定(GAL结构类似)结构类似)(5)GAL的内部结构及编程的内部结构及编程GAL的内部结构与的内部结构与PAL基本一样,只是在输基本一样,只是在输出端增加了出端增加了“可编程输出逻辑宏单元可编程输出逻辑宏单元
17、”,其,其输出状态可由用户定义,这样,使编程更灵输出状态可由用户定义,这样,使编程更灵活。活。GAL16V8I0/CLK I1 I2 I3 I4 I5 I6 I7 I8 GNDVCC F7 F6 F5 F4 F3 F2 F1 F0 I9/OE20111012-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
18、SCLKOE 输出使能FADQQDQQFBQBQAQAQAQBQBSS状态方程状态方程SQSQQnAnAnA1nAnAQQS1 ,1nBnAnBnAnBQQQQQS1 ,1SQSQQQQQnBnBnAnBnAnB)(10011010100:ABQQ例例8 GAL16V8型型GAL可编程逻辑器件的编程方法介绍可编程逻辑器件的编程方法介绍 GAL16V8I0/CLK I1 I2 I3 I4 I5 I6 I7 I8 GNDVCC F7 F6 F5 F4 F3 F2 F1 F0 I9/OE2011101A0 A1 A2 A3 A4 A5 A6 A7 A8 A11 Y6 Y5 Y4 Y3 Y2 Y1 A
19、10 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=A9A10Y2=A7+A8Y3=A5A6Y4=A3+A4Y5=A1A2+A1A2Y6=A0A11+A0A117:Y1=A9*A10 ;逻辑运算8:Y2=A7+A89:Y3=/A5+/A610:Y4=/A3*/A411:Y5=A1*/A
20、2+/A1*A212:Y6=A0*A11+/A0*/A1113:DESCRIPTION;结束4.复杂可编程逻辑器件(复杂可编程逻辑器件(CPLD)CPLD型号:型号:Altera EPF10K10LC84-4 内部有内部有6000门以上,可编程组成各种门以上,可编程组成各种74系列组合逻系列组合逻辑电路、触发器、寄存器、计数器等复杂数字电路辑电路、触发器、寄存器、计数器等复杂数字电路 速度达速度达40MHz 200MHz 84引脚,其中引脚,其中59个可用于个可用于I/O引脚引脚 可由单片机或可由单片机或PC机控制机控制 编程语言:编程语言:MAX+PLUS2 9.23(1)特性)特性电路绘图
21、法编程软件(电路绘图法编程软件(Graphic Editor file)数字硬件描述语法(数字硬件描述语法(AHDL描述语法)描述语法)(2)CPLD实验系统框图实验系统框图按钮,开关,键盘,单脉冲,连续脉冲,数码管,LEDAltera CPLD芯片:EPF10K10LC84-4串行E2PROM:SE2PROM ,8KBCPLD下载板I/O实验板RS-232CPLD下载板元件分布图下载板元件分布图清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编CPLD芯片芯片下载板固定插座下载板固定插座 单片机插单片机插座座晶振SEEPROM稳压块稳压块7805DC7.5V电源电源P0
22、1P42引脚插座引脚插座串行接口串行接口P43P84引脚插座引脚插座CPLD芯片的引脚编号芯片的引脚编号RS232I/O实验板元件分布图实验板元件分布图清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编P55P56P57P58P60P61P62P63P64P65P66P67P69P70P71P72P01P02P03P04P06P07P08P09P34P35P36P37P39P40P41P42SWP1 SWP2 SWP3 SWP41023546798ABDCEF6个七段LED数码管3个8位逻辑输入开关16个逻辑电平检测LED3个CPLD下载板插座J1J2J316个逻辑电平检
23、测LED1个57点阵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表示;表
24、示;只投只投2分硬币,用按键分硬币,用按键SWP2模拟,按一次投模拟,按一次投2分,分,用二位计数器用二位计数器Q2B Q2A表示;表示;只投只投5分硬币,用按键分硬币,用按键SWP3模拟,按一次投模拟,按一次投5分,分,用一位计数器用一位计数器Q5表示;表示;OK清清01分分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 152221212112111 QQQQQQQQQQQQQQOKABBABBAABAC
25、AC52221212112111QQQQQQQQQQQQQQOKABBABBAABACAC逻辑表达式逻辑表达式清华大学电机系唐庆玉清华大学电机系唐庆玉2003年年11月月15日编日编用绘图法设计用绘图法设计“投币洗衣机电路投币洗衣机电路”文件名:wash.gdf52221212112111QQQQQQQQQQQQQQOKABBABBAABACAC7490749074175RESETSWP3SWP2SWP1OK例例2 用用AHDL描述语法和绘图法设计电路:描述语法和绘图法设计电路:将一个将一个2位位16进制数转换为进制数转换为2位位10进制数进制数2位位16进制数进制数 2位位10进制数进制数
26、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
27、位二进制数位二进制数 二位二位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组合逻辑电路子文件组合逻辑电路子文件01202303
28、0BBBBBBBBD0112031BBBBBBD012032BBBBBD021233BBBBBD将一个将一个2位位16进制数转换为进制数转换为2位位10进制数进制数 h2cd.sym用用AHDL描述语法设计描述语法设计h2cd.sym的文本文件的文本文件h2cd.tdf012023030BBBBBBBBD0112031BBBBBBD012032BBBBBD021233BBBBBD(B0,B1,B2,B3:INPUT;D0,D1,D2,D3:OUTPUT;)BEGIND 0=B 3&!B 0#!B 3&!B 2&B 0#B 2&B 1&!B 0;D1=B3&!B0#!B2&B1#B0&B1;D2
29、=B3&B0#!B0&!B1&B2;D3=B3#B1&B2#B0&B2;END;h2cd.tdf的的AHDL描述语法编程描述语法编程将一个将一个2位位16进制数转换为进制数转换为2位位10进制数进制数 DA0 DA5 DA6 DA7DA1DA2DA3DA4H0H1H2H3H4H5H6H7 hcd.gdf电路文件电路文件h2cd.sym h2cd.sym 子文件子文件将一个将一个2位位16进制数转换为进制数转换为2位位10进制数进制数 hcd.sym例例3 将二个将二个4位二进制数相加,并将和转换为位二进制数相加,并将和转换为2位位10进制数进制数(利用在例(利用在例2中自己编的符号文件中自己编的符号文件hcd.sym)Mult4.gdf 文件文件 m1 m2 m3 m4 n1 n2 n3 n42个个4位位二进制二进制数数hcd.sym文件文件DA4DA5DA6DA7DA3DA2DA1DA02位位10进制数进制数(BCD码码)全加器全加器74283CPLD设计题目设计题目模拟打乒乓球电路模拟打乒乓球电路左边击球右边击球&1&74194L S1hitL hitRQ1D1Q0D0S0QA QB QC QD 74194RQA QB QC QDLED