数字电路第七章答案 - 图文 下载本文

第七章 可编程逻辑器件PLD

第一节 基本内容

一、基本知识点

(一)可编程逻辑器件PLD基本结构

可编程逻辑器件PLD是70年代发展起来的新型逻辑器件,相继出现了只读存储器ROM、可编程只读存储器PROM、可编程逻辑阵列PLA、可编程阵列逻辑PAL、通用阵列逻辑GAL和可擦写编程逻辑器件EPLD等多个品种,它们的组成和工作原理基本相似。PLD的基本结构由与阵列和或阵列构成。与阵列用来产生有关与项,或阵列把所有与项构成“与或”形式的逻辑函数。在数字电路中,任何组合逻辑函数均可表示为与或表达式,因而用“与门-或门”两级电路可实现任何组合电路,又因为任何时序电路是由组合电路加上存储元件(触发器)构成的,因而PLD的“与或”结构对实现数字电路具有普遍意义。

在PLD中,输入电路中为了适应各种输入情况,每一个输入信号都配有一缓冲电路,使其具有足够的驱动能力,同时产生原变量和反变量输出,为与门阵列提供互补信号输入。输出电路的输出方式有多种,可以由或阵列直接输出,构成组合方式输出,也可以通过寄存器输出,构成时序方式输出。输出既可以是低电平有效,也可以是高电平有效;既可以直接接外部电路,也可以反馈到输入与阵列,由此可见PLD的输出电路根据不同的可编程逻辑器件有所不同。

(二)可编程逻辑器件分类 1.按编程部位分类

PLD有着大致相同的基本结构,根据与阵列和或阵列是否可编程,分为三种基本类型: (1)与阵列固定,或阵列可编程 (2)与或阵列均可编程

(3)与阵列可编程,或阵列固定

归纳上述PLD的结构特点,列于表7-1。

表7-1 各种PLD的结构特点

类 型 PROM PLA PAL GAL 阵 与 固定 可编程 可编程 可编程 列 或 可编程 可编程 固定 固定 输出方式 TS,OC TS,OC,H,L TS,I/O,寄存器 用户定义 2.按编程方式分类 (1)掩膜编程

(2)熔丝与反熔丝编程 (3)紫外线擦除、电可编程 (4)电擦除、电可编程 (5)在系统编程(Isp)

(三)高密度可编程逻辑器件HDPLD

243

通常衡量可编程逻辑器件芯片的密度是以芯片能容纳等效逻辑门的数量,一般是以2000为界限,即芯片容纳等效逻辑门小于2000门,称它为低密度可编程逻辑器件或简单的可编程逻辑器件(SPLD),若大于2000等效逻辑门,称为高密度可编程逻辑器件(HDPLD)。在前面按编程部位分类可编程逻辑器件中提及的通用阵列逻辑(GAL)的等效逻辑门一般不超过2000门,习惯上称其为低密度可编程逻辑器件。

通用阵列逻辑GAL是在PAL基础上发展起来的一种具有较高可靠性和灵活性的新型可编程逻辑器件,它采用E2CMOS工艺和灵活的输出结构,能将数片中小规模集成电路集成在芯片内部,并具有电擦写反复编程的特性。在基本阵列结构上仍是与阵列可编程,或阵列固定的结构。GAL在输出结构配置了8个可以任意组态的输出逻辑宏单元OLMC(Output Logic Macro Cell),适当地为输出逻辑宏单元进行编程组态,GAL就可以在功能上代替编程阵列逻辑PAL。

输出逻辑宏单元OLMC 由或门、异或门、D触发器、多路选择器MUX、时钟控制、使能控制和编程元件等组成。

高密度可编程逻辑器件HDPLD(High Density Programmable Logic Device)从芯片密度上有了很大的改进,单片芯片内可以集成成千上万个等效逻辑门,因此在单片高密度可编程逻辑器件内集成数字电路系统成为可能。HDPLD器件在结构上仍延续GAL的结构原理,因而还是电擦写、电编程的EPLD器件。 (四)现场可编程逻辑器件FPGA

可编程逻辑器件基本组成是与阵列、或阵列和输出电路。对这些基本组成电路进行编程就可以实现任何积之和的逻辑函数,再加上触发器则可实现时序电路。现场可编程门阵列的编程单元是基于静态存储器(SRAM)结构,不像PLD那样受结构的限制,它可以靠门与门的连接来实现任何复杂的逻辑电路,更适合实现多级逻辑功能。

现场可编程门阵列FPGA与HDPLD相比较特点如下:

(1)FPGA的编程单元是基于SRAM结构,可以无限次编程,它为易失性元件,掉电后芯片内信息丢失。通电之后,要为FPGA重新配置逻辑。

(2)FPGA中实现逻辑功能的CLB比HDPLD实现逻辑功能的OLMC规模小,制作一个OLMC的面积可以制作多个CLB,因而FPGA内的触发器要多于HDPLD的触发器, 使得FPGA在实现时序电路时要强于HDPLD。

(3)HDPLD的信号汇总于编程内连矩阵,然后分配到各个宏单元,因此信号通路固定,系统速度可以预测。而FPGA的内连线是分布在CLB周围,而且编程的种类和编程点很多,使得布线相当灵活。

(4)由于FPGA的CLB规模小,可分为两个独立的电路,又有丰富的连线,所以系统综合时可进行充分的优化,以达到逻辑最高的利用。 (五)随机存取存储器RAM

随机存取是指可以随时将数据存入(称写入), 和取出(称读出)。随机存储器(RAM)的主要指标是存储器容量和存取时间(周期)。存储容量表示一片RAM存储数据的能力。存放一个二进制数码需要一个存储单元,所以存储容量常用存储单元的总数(bit)来表示。存取时间表示从存储器中开始存取第一个字到能够存取第二个字为止所需的时间,或称为存取周期。存取时间越短,表示存储器的存取速度越高。

RAM的基本结构可以分为三个部分:存储矩阵,地址译码器及读写控制电路。存储矩阵

244

是用来存储要存放的代码,矩阵中每个存储单元都用一个二进制码给以编号,以便查询此单元。译码器可以将输入地址译为电平信号,以选中存储矩阵中的相应的单元。

存储器根据工作原理的不同可分为静态RAM和动态RAM两大类。 (1)静态RAM

静态RAM是在触发器的基础上附加控制线或门控制管构成的,它们是靠电路状态来存储数据。根据使用的器件不同,静态存储单元又分为MOS型和双极型两种。 (2)动态RAM

动态RAM是利用MOS管栅级电容能够存储电荷的原理制成的。电路结构比较简单,但由于栅极电容的容量很小,而漏电流不可能为零,所以电荷的存储时间有限。为了及时补充泄露掉的电荷以避免存储信号丢失,必须定时给栅极电容补充电荷。通常把这种操作叫做刷新或再生。因此,工作时必须辅以比较复杂的刷新电路。

二、重点

1.可编程逻辑器件PLD的基本结构与工作原理基于任何组合逻辑函数均可化为与或式,从而实现与门—或门两级电路实现,而任何时序电路又都是由组合电路加上存储元件(触发器)构成。

2.可编程逻辑器件PLD按编程部位分类、编程方法分类的基本概念及其特征。

3.多次可擦写的可编程逻辑器件PLD主要基于浮栅技术,这种编程方法是一只多晶硅浮栅浮于控制栅和衬底之间的半导体中。当控制栅上的电压加大时,产生很强的电场,足以使电子获得能量穿过半导体进入浮栅住留。这样MOS管因为浮栅上存储负电荷作用使开启电压改变,从而达到逻辑编程“0”和“1”的目的。

4.单片可编程逻辑器件容量总是有限的,所以在设计时,应考虑利用多片PLD,按一定方法连接以扩展其容量。

(1)字长扩展

字长又称为数据位数,对字长的扩展即是地址的位数保持不变,而对数据位增加。 (2)字扩展

字又称为地址位数,对字的扩展即是数据的位数保持不变,而对地址位增加。 在实际应用中,往往需要同时进行地址扩展和数据扩展,例如存储器总容量为16KX16bit,用2KX8bit芯片构成存储器时,必须同时进行地址扩展和数据扩展,用16片2KX8bit的芯片,依据一定的连接方式连接,便可得到总容量为16KX16bit=256Kbit的存储器。

5.可编程逻辑阵列PLA电路的分析方法:

(1)根据题意或者电路图,写出逻辑与-或表达式; (2)若时序电路,则写出激励、驱动和输出方程; (3)写出真值表或者状态图;

(4)根据真值表或者状态图分析其工作原理。

6.可编程阵列逻辑PAL和通用阵列逻辑GAL的基本组成和PAL的各种组态、GAL的输出宏单元各种组态及其特点。

7.高密度可编程逻辑器件HDPLD的基本组成和其工作原理。

8.现场可编程门阵列FPGA工作原理是靠门与门的连接实现任何复杂的逻辑电路,较适于多级逻辑设计。重点在于掌握工作原理及其特点。

9. 可编程逻辑器件设计实质上是设计专用集成电路ASIC,整个设计过程必须伴随着电子

245

设计自动化(EDA)软件平台。本教材第二篇指导读者利用Foundation软件设计平台设计高密度PLD器件,完成可编程逻辑器件的设计。

三、难点

1.可编程逻辑器件的不同分类方法及其各种基本概念。 2.PLA电路的设计方法:

(1)根据题意写出真值表或者状态图; (2)选择触发器;

(3)写出驱动、激励和输出方程; (4)画出PLA电路图。

3.现场可编程门阵列FPGA中的可配置逻辑块CLB不仅可以完成组合逻辑、时序逻辑电路的功能,而且还可以作为RAM使用。当作为RAM使用时,不仅可以配置成电平触发的16位双口或32位单口RAM,而且还可以配置成边沿触发的16位双口或32位单口RAM。

第二节 典型题解

例7-1 试用SD805 32×8bitPROM构成容量为32×32bit的PROM。 解:此题为扩展存储器的数据位(字长),方法比较简单。在驱动器的负载能力允许之内,将每个存储器地址输入端对应连接,且允许输入端S接在一起既可。采用四片SD805PROM构成32×32bit的PROM,其电路连接图如图7-1所示,因为每片SD805输出8位,其中SD805-(1)输出0~7位(32位中的低8位),SD805-(4)输出24~31位(32位中的高8位)。

输出32位数据

15 .……….23 24 .……… 31 0 .………… 7 8 ..………… 15

Y1 Y2 …….. Y8 Y1 Y2 …….. Y8 Y1 Y2 …….. Y8 Y1 Y2 …….. Y8

S SD805(3) S SD805(4) S SD805(1) S SD805(2)

A0 A1 A2 A3 A4 A0 A1 A2 A3 A4 A0 A1 A2 A3 A4 A0 A1 A2 A3 A4

S A B C D E

地址输入

图7-1数据扩展(扩展成32×32bitPROM)连接图

例7-2 试用SD805 32×8bit PROM构成容量为512×8bit PROM。 解:此题为扩大存储器的地址(字数),一个SD805 容量是32字×8位,可利用允许输入来扩展字数,即每片一个字组,通过外加译码器T1154来分别选中每一片,也就将该字组的32个字选中,这样SD805 本来只有五位地址输入,可选中32个字,现采用16片SD805

246

与一片译码器T1154,经扩展成九位地址输入后,可选中512个字,其电路连接图如图7-2所示。九位地址码ABCDEFGHI中,I为最高位,A为最低位。当T1154译码器输入FGHI=0000时,Y0输出有效,选中SD805-(1),决定0~31字,当FGHI=1000时,选中SD805-(2),决定32~63字......,其余类推。当FDHI=1111时,选中SD805-(16),即决定479~511字。

1 2 3 4 5 6 7 8

Y1Y2Y3Y4Y5Y6Y7Y8 Y1Y2Y3Y4Y5Y6Y7Y8 Y1Y2Y3Y4Y5Y6Y7Y8

S SD805-(1) S SD805-(2) S SD805-(16)

A0 A1 A2 A3 A4 A0 A1A2 A3 A4 A0 A1 A2 A3 A4

Y0Y1 Y15

T1154 A B C D E A0 A1 A2 A3 SA

F G H I S

地址输入

图7-2 扩大存储器地址连接图

例7-3 试用SD805 32×8bit PROM构成容量为128×2 bit PROM。 解:此题是增加地址(字数)、减少位数。可用一片SD805外加双4选1数据选择器T1153来实现。因为SD805容量为32字×8位,即有32×8=256个存储单元,正好满足128字×2位ROM的容量,电路连接图如图7-3所示。通过七位地址输入端ABCDEFG对128寻址,其中A是最低位,G是最高位,字选地址表如表7-2所示。

例7-4 有两个两位二进制数, 它们都是正整数, 试用ROM实现对这两个数的乘法运算。 解:此例是利用ROM实现组合逻辑电路的设计问题。依照所要求的电路功能,可按两个2位二进制数的乘法运算列出真值表。在用ROM实现电路时,可用输入信号取值组成的代码作为地址代码构成地址译码器,其输出即是存储器的字线,译码器的结构用与阵列表示。对应于输入取值经乘法运算后所得的二进制数,作为一个字的信息存储在相应字线指示的存储单元中。每1位二进制数对应一条位线,各条位线的函数关系用或阵列表示,位线通过输出电路输出。依照题意,分别设这两个二进制数是A1A0和B1B0,设输出函数F,因为输出函数F是十进制数9,所以应该用四位二进制数表示输出函数F。列出电路真值表如表7-3所示,利用ROM实现的乘法器的与或阵列图如图7-4所示。

247

表7-2 字选地址表 AB 地址 C D E F G 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 Y1 Y5 W1 W5 W125 1 0 Y2 Y6 W2 W6 W126 0 1 Y3 Y7 W3 W7 W127 1 1 Y4 Y8 W4 W8 W128

0 0 G MUX 1 3 Y1Y2Y3Y4Y5Y6Y7Y8 S SD805 A0 A1 A2 A3 A4 S C D E F G B A EN 0 1 T1153 2 3 EN 0 1 2 3 1W 输出 2 位 2W 图7-3 用SD805实现128×2位ROM

表7-3 例7-4电路真值表 A1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 与

F0 F1

F2

F3

图7-4 例7-4阵列图

例7-5 芯片CT4161功能和PROM组成图7-5所示电路。要求: (1)分析CT4161功能,说明电路的计数长度。 (2)分析W、X、Y、Z的函数表达式。

(3)在CP作用下,分析W、X、Y、Z端顺序输出的8421BCD码的状态,并说明电路的功能。

解:(1) CT4161是同步16进制计数器,QD、QC、QB、QA状态由0000,0001到1111,

A0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 B1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 B0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 F3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 F2 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 F1 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 F0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1

B0 B0 B1 B1 A0 A0 A1 A1 或 阵 列

248

A B C “1” D S1 S2 QA QB QC QD LD CT4161 QCC CLR A B C D 或 阵 列 CP ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 与 阵 列 W X Y Z

图7-5 例7-5阵列逻辑图

再重复。

(2) W、X、Y、Z的函数表达式为: W = Σm(5,11,12,14)

X = Σm(2,4,7,8,10,13) Y = Σm(0,6,7,9,13,15)

Z = Σm(0,1,3,4,5,8,9,10,12,13,14,15)

(3)WXYZ端顺序输出为3141592653589793的8421BCD码。因此该电路是一个能产生16位的π函数发生器。

例7-6 用EPROM设计一个字符发生器。 解:字符发生器是显示器中常用的逻辑部件。它将各种字母、数字及符号预先存储在ROM中,只要给出适当地址码,就能将这些字符读出来,并驱动显示器显示这些字符。图7-6给出了用7×5字符发生器存储字符“E”的原理。图中存储体有七行五列,构成7×5点阵。

根据字符的形状可在存储单元中存入1或0,然后顺序地给出地址码,就可以读出各行的内容,每读一行,原来存储“1”的地方出现光点,全部光点就组成一个字符。 × × × × ×

A2 地×

址× A1 译× × × × 码× A0 器 ×

× × × × ×

F4 F3 F2 F1 F0

图7-6 7×5“E”字符发生

例7-7 试设计产生图7-7所示四路周期信号的逻辑电路(采用ROM设计电路)。

249

CP

0 1 2 3 4 5 6 78 9 10 1112 1314 15 0 t 0 Y0 Y1 Y2 Y3

0 0 0 0 0 0 0 1 图7-7 四路周期信号

1 0 0 t 0 0 0 0 0 0 0 0 0 t t t t 解:由图7-7看出,要求产生的四路信号是周期为16的四组同步序列,如表7-4所示。 用一个模16同步加法计数器产生四位地址,计数器状态由状态0~15循环转换,每个状态便给出一组四位地址。随着计数器状态的循环转换,地址循环选通,从ROM输出端就得到四组同步序列。为了使四组同步序列符合真值表7-4,必须依据序列要求给ROM正确编程,为此,由表7-4得

Y3 = W1 + W2 + W5 + W6 + W9 + W10 + W13 + W14 Y2 = W2 + W3 + W4 + W5 + W10 + W11 + W12 + W13 Y1 = W4 + W5 + W6 + W7 + W8 + W9 + W10 + W11 Y0 = W8 + W9 + W10 + W11 + W12 + W13 + W14 + W15

表7-4 例7-7真值表 计数器状态 Q3 Q2 Q1 Q0 W 0 0 0 0 W0 0 0 0 1 W1 0 0 1 0 W2 0 0 1 1 W3 0 1 0 0 W4 0 1 0 1 W5 0 1 1 0 W6 0 1 1 1 W7 1 0 0 0 W8 1 0 0 1 W9 1 0 1 0 W10 1 0 1 1 W11 1 1 0 0 W12 1 1 0 1 W13 1 1 1 0 W14 1 1 1 1 W15 字线序列输出 Y3 Y2 Y1 Y0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 1

上式很容易用二极管或多发射极晶体管构成的存储矩阵予以实现,所以用一片中规模四位二进制计数器和一个16字×4位ROM就可以实现题意功能,逻辑框图如图7-8所示。

250

W0 CP 模16 计数器 地址 译码器 Y3

16×4 矩阵 Y2 Y1 Y0

W15

图7-8 例7-7逻辑框图

例7-8 用PLA设计一个四位自然二进制码——格雷码的转换电路。

解:四位自然二进制码与格雷码之间的转换关系如表7-5所示,这是一个多输出函数的问题。对表7-5中的真值表所示的函数进行简化,得到:

G3 = B3

G2 = B2B3 + B2 B3 G1 = B1B2 + B1 B2 G0 = B0B1 + B0 B1

由上面逻辑函数表达式看出,它们包含七个“与”项,即B3,B2B3,B2B3,B1B2,B1B2,B0B1,B0B1用PLA实现上述函数时,其阵列图如图7-9所示。

B3 × × 表7-5 8421码和格雷码对照真值表 B3 B3 B2 B1 B0 G3 G2 G1 G0 × 0 0 0 0 0 0 0 0 与× B2 × × 0 0 0 1 0 0 0 1 阵 0 0 1 0 0 0 1 1 B2 × × 0 0 1 1 0 0 1 0 列

B1 × × 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 B1 × × 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 B × 0 1 0 0 0 1 1 0 0 B0 × 1 0 0 1 1 1 0 1

1 0 1 0 1 1 1 1 × G3 1 0 1 1 1 1 1 0 或

1 1 0 0 1 0 1 0 G2 × × 阵 1 1 0 1 1 0 1 1 G1 1 1 1 0 1 0 0 1 × × 列

1 1 1 1 1 0 0 0 G0 × × 图7-9 例7-8PLA阵列图 例7-9 PLA和D触发器组成的同步时序电路如图7-10所示。要求: (1)写出电路的驱动方程、输出方程。

(2)分析电路功能,画出电路的状态转换图。 解:(1) 根据PLA与—或阵列的输入/输出关系,可直接得到各触发器的激励方程及输出方程:

D0 = Q0 + Q1Q0 D1 = Q1Q0 + Q1Q0 D2 = Q0 Q2+ Q2Q0

QCC = Q0 Q1Q2+ Q0 Q1 Q2

251

× × × × × ×

× × × × × × × × ×

D Q0 × ×

Q0

D Q1 × × Q1

D Q2 × ×

Q2

QCC × × CP

图7-10 例7-9 PLA同步时序电路

(2)先设定电路的状态,根据触发器的激励方程和输出方程,可列出表7-6所示的电路状态转换表,并画出图7-11所示的电路状态转换图。

该电路是能够自启动的同步六进制计数器。

表7-6 例7-9 电路状态转换表

Q2 Q1 Q0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 D2 D1 D0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 0 Q2n+1 Q1n+1 Q0n+1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 1 0 QCC 1 0 0 0 0 0 1 0

100 /0 001 /1 110 /0 011 /0 010 /0 Q2Q1Q0 /0 111

/0 101 /1 000 图7-11 例7-9电路状态转换

例7-10 试用PLA和D触发器设计一个时序逻辑电路,电路的状态转换图如图7-12所示。当输入控制变量C=0时,状态变化按顺时针方向,当C=1时,状态变化方向按逆时针方向。QCC为电路的进位位。

(1)写出电路的驱动方程D0、D1、D2和输出方程QCC。

252

(2)画出相应的电路图。

C=0

0/0 0/0 0/0 Q2Q1Q0 010 110 100 000 1/0 1/0 C/QCC 1/1 C=1 1/0 0/0 0/1 1/0 1/0 1/0 1/0 101 111 011 001 0/0 0/0 0/0

图7-12 例7-10状态转换图

解:(1)按同步可控计数器的设计方法,可得图7-13所示的Qn+1卡诺图。

Q2 Q2 Q1 Q1 × Q0 Q0 × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × × C C × × × Q1Q0 CQ2 00 01 11 10 Q1Q0 CQ2 00 01 11 10 Q1Q0 CQ2 00 01 11 10 00 0 0 0 1 01 1 1 0 1 11 1 1 1 0 10 0 0 1 0 Q2n+1

00 1 0 0 1 01 0 1 1 0 11 1 0 0 1 10 0 1 1 0 Q1n+1

00 0 0 1 0 01 1 1 1 0 11 0 0 1 0 10 1 1 1 0 Q0n+1

图7-13 例7-10Q2n+1、Q1n+1、Q0n+1、卡诺图

× × × D Q0 C Q0 × × × × D Q1 C Q1 × × × D Q2 C Q2 × × CP 图7-14 例7-10PLA阵列图

QCC 253

按卡诺图合并规则,可得各触发器的驱动方程,即有 D0 = Q1Q0 + CQ2Q1 + CQ2Q1

D1 = CQ2Q0 + CQ2Q0 + CQ2Q0+ CQ2Q0 D2 = Q2Q1 + CQ1Q0 + CQ1Q0 电路的输出方程QCC为

QCC = CQ2 Q1Q0 + CQ2Q1 Q0

(2)用PLA和D触发器设计的电路图如图7-14所示。

例7-11 用PLA和D触发器设计8421BCD码转换七段字形译码器。

解:七段字形如图7-15(a)所示,七段笔划形状与数字的关系示于图7-15(b),根据图7-15作真值表如表7-7所示。其中“1”为该亮的字段,“0”表示不该亮的字段。再按多输出函数的简化方法,先在每个卡诺图上按单输出函数进行简化,然后再在7个函数的卡诺图上找出公共项,见图7-16所示。

a a a a f b b b b f b

g g g e c f b c e c c

d g d d a a a a a e c b f f f b f b

d g g g g c c e c e c c d (a) d d d

(b)

图7-15 七段字形图与数字关系

表7-7 8421BCD码对应七段译码器真值表 B8 B4 B2 B1 a b c d e f g 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 φ φ φ φ φ φ φ 1 0 1 1 φ φ φ φ φ φ φ 1 1 0 0 φ φ φ φ φ φ φ 1 1 0 1 φ φ φ φ φ φ φ 1 1 1 0 φ φ φ φ φ φ φ 1 1 1 1 φ φ φ φ φ φ φ 通过卡诺图简化后得到逻辑表达式如下: a = B8 + B4B1 + B2B1 + B4B2B1 + B4B2B1 b = B4B1 + B2B1 + B2B1 + B4B1

c = B2B1 + B2B1 + B4B1 + B4B2B1 + B4B2B1

254

B8B4 B2B1 00 01 11 10 B8B4 B2B1 00 01 11 10 B8B4 B2B1 00 01 11 10 00 1 0 φ 1 01 0 1 φ 1 11 1 1 φ φ 10 1 1 φ φ B8B4 B2B1 00 01 11 10 00 1 1 φ 1 01 1 0 φ 1 11 1 1 φ φ 10 1 0 φ φ B8B4 B2B1 00 01 11 10 00 1 1 φ 1 01 1 1 φ 1 11 1 1 φ φ 10 0 1 φ φ B8B4 B2B1 00 01 11 10 a b c 00 1 0 φ 1 01 0 1 φ 1 11 1 0 φ φ 10 1 1 φ φ B8B4 B2B1 00 01 11 10 00 1 0 φ 1 01 0 0 φ 0 11 0 0 φ φ 10 1 1 φ φ e

00 1 1 φ 1 01 0 1 φ 1 11 0 0 φ φ 10 0 1 φ φ f

d 00 0 1 φ 1 01 0 1 φ 1 11 1 0 φ φ 10 1 1 φ φ g

图7-16 例7-10 a、b、c、d、e、f、g卡诺图

d = B4B2 + B4B1 + B4B2B1 + B4B2B1 + B8 e = B4B1 + B4B2B1

f = B8 + B2B1 + B4B2B1 + B4B2B1 g = B8 + B4B2 + B4B2 + B4B2B1 这些表达式中总共有九个与项,即 P0 = B8;P1 = B4B1;P2 = B2B1

3 = B4B2B1;P4 = B4B2B1;P5 = B2B1 P6 = B4B1;P7 = B4B2;P8 = B4B2 由各个与项构成的函数为: a = P0 +P1 + P2 + P3 + P4 b = P1 + P2 + P5 + P6

c = P2 + P3 + P4 + P5 + P6 d = P1 + P3 + P4 + P7 + P0 e = P1 + P4

f = P0 +P3 + P4 + P5 g = P0 +P4 + P7 + P8

B8 B8 B4 B4 B2 B2 B1 B1

× × × × × 与 阵 列

或 阵 列

P0 P1 P2 P3 P4 P5 P6 P7 P8 a × × × × × b × × × × c × × × × d × × × × × e × × f × × × × g × × × × 图7-17 例7-11阵列逻辑图

× × × × × × × × × × × × × × 255

根据上述逻辑函数和各个与项构成的阵列逻辑图示于图7-17。 例7-12 用PAL器件设计一个3位循环码

CP 1 计数器,状态表如表7-8所示。RESET复位信号

可使该计数器初始化为Q3Q2Q1=000状态。OC是 RESET 2 使能控制信号。

3 解:(1)选择PAL器件:3位循环码计数器

AND 有3个状态变量Q3Q2Q1输出,根据题意该计数器4 OR 只有一个输入复位信号RESET。显然,可采用带

5 GATE 有寄存器输出的PAL16R4芯片进行设计。

ARRAY 6 PAL16R4引脚及引脚分配如图7-18(a)所示。

7 (2)电路状态方程:由状态表可得状态方程 Q3n+1 = RQ3Q1 + RQ2Q1

n nnn

Q2n+1 = RQ2Q1 + RQ3Q1

n nnn

Q1n+1 = RQ3Q1 + RQ2Q1 (3) 按照图7-18(b)对PAL16R4编程,即可实现该循环码计数器。本例中若用中、小规模通用器件设计,则至少要使用1片74175和2片7400,这里一片PAL16R4就代替了若干片SSI、MSI集成器件,显然是一种较理想的实施方案。

CP ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ R (RESET) 0 0 0 0 0 0 0 0 1 Q 3n Q 2n Q1 n 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 Φ Φ Φ n

n

nn

20 19 18 D Q 17 Q1

D Q 16 Q2

15 Q3 14 13 12 D Q D Q 8 9 10 11 OC

图7-18(a) PAL16R4实现循环码

计数器的引脚分配图

表7-8 3位循环码计数器状态表 Q 3n+1 Q 2n+1 Q1 n+1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 例7-13 用一片GAL16V8,实现图7-19(a)组合逻辑电路。 解:该电路包括6个基本逻辑门,它们是:或非门、或门、与非门、与门、异或门和同或门。逻辑方程是:

F1 = A1·B1 F2 = A2 + B2 F3 = A3 + B3 F4 = A4·B4 F5 = A5⊕B5 F6 = A6⊙B6

实现这些逻辑方程共需12个输入端和6个输出端,因此可将GAL16V8的6个逻辑宏单元OLMC组态为专用组合输出结构,引脚13、14、15、16、17和18分别为输出端F6、F5、F4、F3、F2和F1;考虑到待实现的电路为12输入的组合函数,故除了用专门的输入端2、3、

256

1 CLK CP 2 RESET 19 18 3 × × D Q Q 4 17 Q1 D Q 5 × × 16 Q2

Q D Q 6 15 Q3

Q D Q 7 14 Q 13 8 12 11 OC 图7-18(b) PAL16R4实现循环码计数器的阵列图

9

257

1 B1 CK 19 A1 2 A2 OLMC (18) 3 B2 A1 18 F1 B1 OLMC (19) OLMC (17) 17 F2 4 A3 OLMC (16) 5 B3 OLMC 15 F4 16 F3 6 A4 (15) OLMC (14) 7 B4 OLMC (13) 8 A5 OLMC (12) 9 B5 A6 OE 图7-19(b) GAL16V8实现组合电路编程后的阵列图

B6 14 F5 13 F6 12 B6 11 A6 258

4、5、6、7、8和9作为信号输入外,又将CP(引脚1)和OE(引脚11)作为两个信号输入端,同时还将剩余的两个OLMC(引脚12、19)组态为专用输入结构,恰好满足了待设计电路的输入端数量的要求,用GAL16V8实现编程后的阵列图如图7-19(b)所示。

例7-14 图7-20是XC4000E系列芯片中的 GAL16V8

20 一个CLB,它实现了16×2电平单口RAM,试 VCC B1 1 ≥1 分析其逻辑功能。 19 A1 A2 2 解:组合逻辑输入F1~F4和G1~G4作为 18 F1 ≥1 B2 3 RAM的地址线输入,可以通过地址的改变来选 17 F2 A3 4 中存储单元的信息,此时CLB控制信号Din、S/R & 16 F3 B3 5 和H1分别作为数据信号D1、D0和写使能信号WE, 15 F4 A4 6 & F′和G′作为RAM的数据输出。 14 F5 B4 7 当RAM写数据时,写使能信号(WE)为高 13 F6 =1 A5 8 电平选通写译码器,使写译码器使能。地址F1~F4 12 B6 B5 9 通过地址译码选中16×1阵列中的某一单元。如当 =1 11 A6 GND 10 F1~F4地址为0000时,并且WE有效,数据D0进 入16×1存储矩阵最上面的存储单元。当RAM读

出数据时,写使能信号WE为低电平,禁止数据写 图7-19(a)GAL16V8实现例7-13组 入。地址信号直接到数据输出选择器选中所需单元 合电路的引脚分配图 从F′读出,形成16×1电平单口RAM,同样

G1~G4对应G′组成另一个16×1电平单口RAM。

C1…C4

4

WE

D1 D0

使能

数据进 16×1 存储矩阵

4

选择器

读地址

数据进 16×1 存储矩阵

4

读地址

G

G1…G4

4

写地址 译码器

使能

4

写地址 译码器

选择

F

F1…F4

图7-20 16×2电平触发单口RAM

例7-15 试用XC4000E系列芯片中的CLB组成16×8的电平触发单口RAM。

解:在例7-14中的一个CLB可以形成16×2的电平触发单口RAM,如要组成16×8的电平触发单口RAM则需要4个CLB,如图7-21所示。

259

WE Din1 Din0 G1…G4 Din3 Din2 4 Din5 Din4 Din7 Din6 D0 D1 D2 D3 D4 D5 D6 D7 或者

F1…F4 16×2 存储矩阵

例7-16 试用5G2112 256×4bitRAM构成容量为512×8bitRAM。5G2112的逻辑示意图如图7-22所示。 A0 行 存储矩阵 A 1

译 A2 32×32

码 A3 I/01 列I/O 输入 I/02

数据 列译码 I/03

控制 A4 A5A6A7 I/04

CS &

R/W 图7-22 5G2112逻辑示意图

解:5G2112是256×4bit静态RAM,由图7-22看出,5G2112是采用二元寻址和三态输出结构。片选信号CS是低电平有效,当电路选通之后,若要写入,则令读/写控制端R/W=0,输入三态门打开,数据便写入存储器;与此同时,输出三态门被关闭,切断了输出与数据总线的联系。若要读出,则令R/W=1,输入三态门被关闭,而输出三态门被打开,因而存储数据被读出(注意:输入三态门是高电平选通,输出三态门是低电平选通)。

用四片5G2112RAM构成512×8bitRAM的电路连接示意图如图7-23所示。

先进行字长扩展,为此将片(1)与片(2)的地址A0~A7、片选CS、读/写控制端R/W对应并接起来,数据端I/O分别接到数据总线的低四位D1~D4和高四位D5~D8,这样一来就扩展成256χ8bitRAM;片(3)与片(4)也进行同样的处理。然后再将它们进行地址扩展,这里不必增加译码器,因为只增加一个地址变量A8,所以用一个非门,将非门的输入端A8和输出端A8分别接到片(1)、(2)和片(3)、(4)的CS端,并将R/W端、A0~A7、数据端I/O等对应连接,这样就得到512×8bitRAM。

图7-21 16×8电平触发单口RAM

260

D8 D5 D4

D1

I/05 I/08 I/05 I/08

(2) (4)

I/01~I/04 I/01~I/04 A0 (3) (1) A7 CS R/W CS R/W 1 A8

R/W

图7-23 512×8bitRAM电路连接示意图

例7-17 RAM6116功能分析和应用。

CMOS静态RAM6116(2K×8)芯片的逻辑符号如图 7-24所示。

CS 试用6116芯片和CT4138组成8K×8的RAM,内存 A10 11 A0 单元的寻址范围为:8000~87FFH,9800~9FFFH,C000~

I/O8 8 C7FFH,C800~CFFFH。画出包括和CPU接线在内的8K×8 I/O1 WE 的RAM的接线图。

OE 解:用2K×8的RAM组成8K×8的RAM时,需四 片芯片。

图7-24 RAM6116逻辑符号

将16条地址线和内存单元地址排列成表7-9所示的 形式。由表7-9中内存单元地址和地址线的对应关系,可 将RAM6116的11根地址线A10~A0直接和CPU的低11

位地址线A10~A0相连。其他的接线可参阅图7-25。图中CPU的高5位地址线A15~A11和CT4138的选通输入和地址输入端相连。其中A15接S1端,A13接S3,S2,A14、A12、A11分别接A2~A0。CT4138的输出端Y0、Y1、Y5、Y6分别接四片RAM6116的CS端。这样四片RAM6116的内存单元地址即为:8000~87FFH,9800~9FFFH,C000~C7FFH,C800~CFFFH,满足了题意的要求。

表7-9 内存单元对应CPU分配图 内 存 单 元 地 址 地址线 8000H 87FFH 9800H 9FFFH C000H C7FFH C800H CFFFH A15 A14 A13 A12 A11 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 261

S1 Y7 S2 Y6 S3 & Y5 Y4 Y3 A2 Y2 A1 Y1 A0 Y0 CT4138 A15 A11 A10 11 A0 8 D7~D0 CPU WE RD CS CS A10 A0 I/O8 I/O1 WE OE 11 8 A10 A0 I/O8 I/O1 WE OE 11 8 CS A10 A0 I/O8 I/O1 WE OE CS 11 8 A10 A0 I/O8 I/O1 WE OE 6116-1 6116-2 6116-3 6116-4 图7-25 RAM6116和CPU连接图

RAM6116芯片的OE为输出允许端,在读出内存单元的内容时,OE应加低电平,故应和CPU的RD端相接,RD在读操作时发出低电平,能满足对6116RAM读取数据的时序要求。

需注意:RAM扩展时,除考虑容量(位扩展,字扩展或位、字同时扩展)和内存单元地址的分配方式(采用全译码方式或部分译码方式,后者可能出现地址重叠)以外,还必须考虑速度的配合,即CPU和RAM的存取速度要合适,这主要涉及CPU和RAM之间存取数据的时序问题,此例未作讨论。

例7-18 试分析图7-26所示的随机存取存储器(RAM)电路。 (1)存储器的总容量和字长是多少?

(2)指出当R/W=1,地址码为16H时,哪些RAM芯片将数据送到数据线上。 (3)指出RAM0,RAM1,RAM2,RAM3的存储地址范围各是多少? A7 A6 地 A5

A4 址 A3 A2 线 A1 A0 & &

&

A0 A1 A2 A3 A0 A1 A2 A3 A0 A1 A2 A3 A0 A1 A2 A3 CS1 CS0 CS2 CS3 16×4RAM1 16×4RAM0 16×4RAM2 16×4RAM3 R/W 7 DD6 数D5 D4 据

D3 D2 线 D1 D 0 图7-26 由RAM芯片组成的存储器

262

解:本题采用4片16×4的RAM芯片组成一个容量为32×8位的存储器。由于RAM芯片容量为16×4位,字数及字长均不能满足要求,因此,将4片容量为16×4为的RAM进行两两组合,进行位扩展,组成两个容量为16×8的RAM。然后再用这两个容量为16×8的RAM进行字扩展,组成容量为32×8的RAM。位扩展及字扩展均通过RAM片选信号CS来扩展。

数据线有8位(D7~D0),地址线有8位(A7~A0),地址范围从00H到FFH,故最多有256个字。地址线的高4位A7~A4通过门电路构成两个16×8RAM的片选信号,低四位A3~A0则作为16×8RAM自身的地址。片选信号由下式决定:

CS0 = CS1 = A7 + A6 + A5 + A4 CS2 = CS3 = A7 + A6 + A5 + A4

可见只有当A7A6A5A4 = 0000时,CS0 = CS1 = 0,RAM0,RAM1选中工作;当A7A6A5A4 = 0001时,CS2 = CS3 = 0,RAM2,RAM3选中工作。

(1)此RAM电路的总容量为32×8,字长为8位。

(2)R/W=1表示发出读存储器的命令,当地址为10H时,即

A7A6A5A4A3A2A1A0 = 00010000,所以CS0 = CS1 = 1,RAM0,RAM1被封锁。

CS2 = CS3 = 0,RAM2,RAM3被选中工作,并将地址10H的8位数据读出后送到

数据线上。

(3)RAM0,RAM1的存储地址范围为00H~0FH;RAM2,RAM3的存储地址为10H~1FH。

第三节 习题解答

习题7-1 试述PROM、EPROM和E2PROM的特点。 答:共同之处:(1)均为可以进行编程的只读存储器;

(2)属于非易矢性元件,即掉电之后,所存储的信息不丢失; (3)利用了浮栅编程技术; (4)芯片为有限次写入。 不同之处:

(1)PROM为一次编程器件;EPROM为电编程、紫外线擦除器件、E2PROM是电

编程、电擦写器件; (2)PROM编程元件为容丝或者是PLICE介质;EPROM是用SIMOS浮栅作为编程元件;E2PROM是用FLOTOX浮栅作为编程元件。

习题7-2 试述非易失性元件的种类及特点。

答:非易失性元件应该是可编程逻辑器件PLD,包括只读存储器ROM、编程只读存储器PROM、电编程、紫外线擦除只读存储器EPROM、电编程、电擦除只读存储器E2PROM、在系统编程ISP、编程逻辑阵列PLA、编程阵列逻辑PAL、通用阵列逻辑GAL和高密度可编程逻辑器件HDPLD。它们有相似的基本结构:输入、与阵列、或阵列和输出电路。 按编程部位可将PLD分为:

(1)与阵列可编程、或阵列固定,代表器件为ROM、PROM、EPROM、E2PROM。 (2)与阵列可编程、或阵列可编程,代表器件为PLA。

(3)与阵列固定、或阵列可编程,代表器件为PAL、GAL和HDPLD等。 按编程方法可将PLD分为:

263

(1)固定编程:是由集成电路制造厂家编程后出厂的ROM芯片。

(2)一次编程:是由用户进行编程,且只能编程一次。它的编程单元是容丝或者是反容丝等结构,代表器件为PROM、PAL。

(3)多次编程:是由用户多次进行编程。它的编程单元采用的是浮栅技术,代表器件为EPROM、E2PROM、PLA、GAL和HDPLD等。 特点:(1)减小系统体积;(2)增强逻辑设计的灵活性;(3)缩短设计周期;(4)提高系统处理速度;(5)降低系统成本;(6)提高系统的可靠性;(7)系统具有加密功能。

习题7-3 简述EPROM实现不同规模逻辑函数的特点。

答:EPROM是与阵列固定,输入信号的每个组合都固定连接(不管这个组合是否会被使用),所以与门阵列为全译码阵列,它经常被用来作为数据存储器。还可方便地用EPROM来实现简单的逻辑函数。若实现复杂的逻辑函数,则会随着输入信号的增加,使得芯片面积增大,利用率和工作速度降低等情况发生,例如,输入信号有10个,所需要的函数乘积项仅有40个的时候,由于固定的与阵列所产生的10个信号的乘积项有210=1024个,所以将所有的乘积项(1024)减去所需的乘积项(40)就有984个乘积项被空闲。实际上,大多数组合逻辑函数的最小项不超过40个,则使得PROM芯片的面积利用率不高,功耗增加。

习题7-4 用EPROM实现下列多输出函数

与 A

解: F1 = ABC + BC + AB 阵 A F2 = A + B + C 列 B

B F3 = A B + A B

C

F4 = (A + B + C)(A + B + C)+ A BC

C

解:输入信号是3个A、B、C,输出是4个

F1 或 × F1、F2、F3、F4。阵列规模为6×8+8×4。 × × × × F2 阵 × × × × × × × 输入A、B、C在与阵列进行全译码,产生所

F3 列 × × × × 有的最小项。 F4 × × × × × × × × 在或阵列上,输出F1、F2、F3、F4根据给定的逻 辑函数,得到最小项。然后在或阵列进行编程,得 图7-27 习题7-4ROM阵列图 到图7-27所示的与或阵列图。

习题7-5 用适当规模的EPROM设计两位二进制数乘法器,输入乘数和被乘数分别为

表7-10 习题7-5电路真值表 B1 A2 A1 B2 B1 C4 C3 C2 C1 B1 0 0 0 0 0 0 0 0 B2 0 0 0 1 0 0 0 0 与

B 20 0 1 0 0 0 0 0 阵 A1 0 0 1 1 0 0 0 0 列 A1 0 1 0 0 0 0 0 0

A2 0 1 0 1 0 0 0 1 0 1 1 0 0 0 1 0 A2 0 1 1 1 0 0 1 1

1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 × × × × C1 或 1 0 1 0 0 1 0 0 C2 × × × × × × 阵 1 0 1 1 0 1 1 0 C3 × × × 列 1 1 0 0 0 0 0 0 × C4 1 1 0 1 0 0 1 1 1 1

1 1 1 1 0 1 0 1 1 0 1 0 0 1 264

图7-28 习题7-5二位乘法器阵列图

A2A1和B2B1,输出为四位二进制数C4、C3、C2、C1,并且说明EPROM的容量。

解:本题是利用紫外线擦除、电编程的EPROM实现组合逻辑电路的设计问题。依照所要求的电路功能,可按两个2位二进制数的乘法运算列出真值表。参照例题7-4中表7-3和图7-4改写A1A0 为A2A(作为乘数)、B1B0为B2B(作为被乘数)和输出乘积F3F2F1F0为C4C3C2C1,11

即列出电路真值表如表7-10所示,利用EPROM实现的乘法器的与或阵列图如图7-28所示。

习题7-6 用EPROM实现以下码制的变换

B1 (1)8421码至2421码的变换; B1 B2 (2)8421码至5421码的变换。 与 B 2解:利用EPROM实现8421码至2421码 阵 B3 列 的变换和8421码至5421码的变换也是采用与 B3

阵列固定或阵列编程。表7-11列出了8421BCD B4

B 4码转换成5421BCD码和2421BCD码的对应真

值表。

C0 × × × × (1)参照表7-11,画出8421BCD码转换 或

C1 × × × × 阵 成5421BCD码阵列逻辑图,如图7-29所示。 C2 × × 列

(2)参照表7-11,画出8421BCD码转换 C3 × × × × × 成5421BCD码阵列逻辑图,如图7-30所示。

图7-29 8421至2421码阵列图

B1

B1 表7-11 习题7-6真值表 B2 B3 B2 B1 B0 C3 C2 C1 C0 C3 C2 C1 C0 与 B2 8421 5421 2421 阵

B3 0 0 0 0 0 0 0 0 0 0 0 0 列 0 0 0 1 0 0 0 1 0 0 0 1 B3

0 0 1 0 0 0 1 0 1 0 0 0 B4 0 0 1 1 0 0 1 1 1 0 0 1 B 4 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 × × × × × C0 或 0 1 1 1 1 0 1 0 1 1 0 1 × × × × C1 1 0 0 0 1 0 1 1 1 1 1 0 阵 × × × × C2 1 0 0 1 1 1 0 0 1 1 1 1 列

× × × × × × × × C3

图7-30 8421至5421码阵列图

习题7-7 试问256字×32位的EPROM的地址线、数据线、字线各有多少根? 答:256字×32位的EPROM的地址线为8根、数据线为32根、字线256根。

习题7-8 用EPROM2716构成4K×8位的EPROM,共需多少片?画出扩展的EPROM逻辑图。

解:EPROM2716是2K×8位的EPROM,若扩展成4K×8位的EPROM,只需扩展地址位,将地址位加倍,共需2片EPROM2716。扩展的EPROM逻辑图如图7-31所示。

习题7-9 试用EPROM设计一字符发生器,发生的字符为H。 解:字符发生器是显示器中常用的逻辑部件。它将各种字母、数字及符号预先存储在ROM中,只要给出适当地址码,就能将这些字符读出来,并驱动显示器显示这些字符。图7-32给

265

OE/PGM CS

A11

EPROM D0—D7 EPROM D0—D7 A0—A10 2716 2716 (1) (2)

图7-31 EPROM2716地址位扩展

出了用7×5字符发生器存储字符“H”的图形。图中存储体有七行五列,构成7×5点阵。

根据字符的形状可在存储单元中存入1或0,然后顺序地给出地址码,就可以读出各行的内容,每读一行,原来存储“1”的地方出现光点,全部光点就组成一个字符。

× ×

A2 地× ×

址× ×

A1 译× × × × ×

码× ×

A0 器 × ×

× ×

F4 F3 F2 F1 F0

图7-32 7×5“H”字符发生器

习题7-10 用PLA实现习题7-4的多输出逻辑函数,画出PLA阵列图,并和习题7-4作

一比较。

解:通过简化习题7-4多输出函数,得 × × A F1 = AB + BC + AB 与 × × A × 阵 × × B F2 = A + B + C

列 B × × × × F3 = A B + A B

C × F4 = 1 C × 设3个输入信号A、B、C,输出是4个

F1 或 × × × F1、F2、F3、F4。

F2 × × × 阵

乘积项有8个,输出有四个,阵列规模可视 F3 × × 列 为8×6+8×3。 F4 VCC

输入A、B、C在与阵列进行编程,产生所 有的乘积项。 图7-33 习题7-10PLA阵列图

在或阵列,输出F1、F2、F3、F4根据给定的逻 辑函数,然后在或阵列进行编程,得到图7-33所示 的PLA与或阵列图。

习题7-11 用PLA实现习题7-5,画出PLA阵列图,并且说明其规模。

解:本题是一组合逻辑电路,不需要触发器。设四个输入信号A2A1B2B1,输出是四个C4C3C2C1,通过简化习题7-5真值表得

266

C4 = A2A1B2B1

C3 = A2A1B2 + B2B1A2

C2 = A2A1B1 + B2B1A2 + A2A1B2 + B2B1A1 C1 = A1B1

乘积项8个,输出是四个,阵列规模是8×8+8×4。

在或阵列中,输出C1、C2、C3、C4根据简化的逻辑函数,然后在或阵列进行编程,得到图7-34所示的PLA与或阵列图。显然阵列规模比习题7-5要小一半。

B1

B1

B2 与 B 2 阵 A1 列 A1

A2

A 2

C1

或 C2

阵 C3 列 C4

图7-34 习题7-11PLA阵列逻辑图

习题7-12 用PLA及T1161设计一个“111101001000”序列发生器。 解:(1)T1161是一个同步预置十六进制的中规模芯片,若设计序列为“111101001000”序列发生器,首先要设想T1161为12进制,且要清零预置。设QW为输出端,采用置位端LD作为计数控制。真值表如表7-12所示,QW、LD卡诺图如图7-35所示。

表7-12 习题7-12真值表 QD QC QB QA 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 QW 1 1 1 1 0 1 0 0 1 0 0 0 LD 1 1 1 1 1 1 1 1 1 1 1 0 QDQC

01 11 10 QBQA 00 QDQC

01 11 10 QBQA 00 00 1 0 Φ 1 01 1 1 Φ 0 11 1 0 Φ 0 10 1 0 Φ 0

00 1 1 Φ 1 01 1 1 Φ 1 11 1 1 Φ 0 10 1 1 Φ 1 图7-35 QW、LD卡诺图

由QW卡诺图可得:QW = QDQC + QDQBQA+ QCQBQA 由LD卡诺图可得:LD = QD + QB + QA

(2)T1161和PLA阵列图如图7-36所示。

习题7-13 用PLA及若干个D触发器构成可变模计数器(模数从2~16)。

解:可变模值的输入端为D、C、B、A,D为最高位。采用比较的方法,当计数值与可

267

变模值相等时,对触发器清零,重新开始计数。因此可得如图7-37所示的阵列图,其中W4、 W3、W2、W1对应QA、QB、QC、QD作为输出。

CLK C0 R QD D 与阵列 QC C QB B

A QA EP ET QW 或阵列 LD T1161 LD

图7-36 习题7-12序列信号发生器阵列图 A 预B 置C 端 D 与 阵 列 1 LD QCC P CT74163 T CP R A QA B QB C QC D QD W1 或 W2

阵 W3

列 W4

图7-37 习题7-13可变模计数器阵列图

习题7-14 试分析图7-38所示PLA阵列图。 (1)列出时序PLA的状态转换表和状态转换图; (2)画出时序图(初态全为0); (3)简述PLA电路的逻辑功能。

解:图7-38所示的阵列图是一个PLA阵列加JK触发器的时序电路,分析此类习题应先

268

列出状态转换表和状态转换图,然后根据表和图的结果得到电路的逻辑功能。

(1) 图得J1 = Q2+Q3 , K1 = 1 ,

J2 = Q1 , K2 = Q1+Q3 ,

J3 = Q1Q2 , K3 = Q2。 所以得状态转换表如表7-13所示。

图7-38 习题7-14阵列图

表7-13 习题7-14状态转换表 Q3 Q2 Q1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 nnnQ3n+1 Q2 Q1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 n+1 n+1J1 K1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 J2 K2 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 J3 K3 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 状态转换图如图7-39所示。

000

111

001 010 011

101 100 110

图7-39 习题7-14状态转换图

(2)时序图如图7-40所示。

CL

Q1

Q2 Q3

图7-40 习题7-14波形图

269

(3)此电路为自启动的七进制计数器。

习题7-15 试用PLA及D触发器设计4位扭环形计数器。 解:(1)扭循环状态表如表7-14所示。

(2)DA、DB、DC、DD卡诺图如图7-41所示。 (3)阵列图如图7-42所示。

表7-14 习题7-15真值表 QA QB QC QD 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 DA DB DC DD 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0

QDQC

01 11 10 QBQA 00 00 1 Φ 0 0 01 1 Φ Φ Φ 11 1 1 0 Φ 10 Φ Φ 0 Φ

DA= QD

QDQC

01 11 10 QBQA 00

QDQC

QQ 00 01 11 10 BAQDQC

01 11 10 QBQA 00 00 0 Φ 0 0 01 1 Φ Φ Φ 11 1 1 1 Φ 10 Φ Φ 0 Φ

DB= QA

00 0 Φ 0 0 01 0 Φ Φ Φ 11 1 1 1 Φ 10 Φ Φ 1 Φ DC= QB

00 0 Φ 1 0 01 0 Φ Φ Φ 11 0 1 1 Φ 10 Φ Φ 1 Φ

DD= QC

图7-41 习题7-15 DA、DB、DC、DD卡诺图

D QA CK QA D QB CK QB D QC CK QC D QD CK QD × clk × 与

× 阵 列

clk × × × × × 或阵列

图7-42 习题7-15扭环形阵列图

习题7-16 简述PAL的基本结构及命名方法。

答:PAL器件的输入、输出结构以及输入、输出的数目是由集成电路制造商根据实际需

270

要情况大致估计确定。PAL器件的型号很多,它的典型输出结构通常有四种:

(1)专用输出结构; (2)可编程I/O结构;

(3)寄存器型输出结构; (4)带异或门的寄存器输出结构。

一些PAL器件是由数个同一结构类型组成,有的则是由不同类型结构混合组成。如由8个寄存器型输出结构组成的PAL器件命名为PAL16R8,由8个可编程I/O结构组成的PAL器件则命名为PAL16L8。

1

B1 ?

19

F1 2 A2 18

A1 3 B2 ? 17

F2

4

A3 ?

16

F3

5

B3 ?

15

F5 6 A5 ? 14 F4 7

B5

13 8 A4 12 9 B4 图7-43 PAL16L8实现习题7-17的阵列图

11 EN 271

习题7-17 用PAL16L8实现

F1 = A1·B1 F2 = A2 + B2 F3 = A3 + B3 F4 = A4⊕B4 F5 = A5⊙B5 解:实现F1、F2、F3、F4、F5PAL16L8阵列图如图7-43所示。

习题7-18 用PAL16L8实现三位格雷码至二进制码的变换。 解:从略

习题7-19 试用PAL16L8分别实现三位多路表决器和三位二进制数乘方电路。 解:(1)设三位多路表决器的输入为A1、A2、A3分别分配到PAL16L8的1、2、3引脚,F1作为表决器的输出,分配到19引脚。真值表如表7-15所示。

表7-15 表决器和乘方电路真值表 A1 A2 A3 B1 B2 B3 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 F1 F2 F3 F4 F5 F6 F7 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 0 0 1 F1卡诺图如图7-44所示和公式如下: A2 A3 A1 00 01 11 10 0 0 0 1 0 F1 = A2A3 + A1A3 + A1A2

1 0 1 1 1 图7-44 F1卡诺图

(2)设三位二进制乘方电路的输入为B1、B2、B3分别分配到PAL16L8的4、5、6引脚。F2 、F3 、F4 、F5 、F6 、F7作为乘方器的输出,分配到18、17、16、15、14、13引脚。F2 、F3 、F4 、F5 、F6 、F7卡诺图如图7-45所示和公式如下: B2 B3 B2 B3 B1 00 01 11 10 B1 00 01 11 10

0 0 0 0 0 1 0 0 1 1 B2 B3 B1 00 01 11 10 0 0 0 0 0 1 1 1 1 0 F3 = B1B3 +B1B2 B2 B3 B1 00 01 11 10 0 0 F2 = B1B2

0 0 0 1 0 1 0 1 0 0 F4 = B1B2B3 +B1 B2B3

B2 B3 B1 00 01 11 10 0 0 1 1 0 0 0 1 F5 = B2B3 B2 B3 B1 00 01 11 10 0 0 0 0 0 0 0 1 0 0 0 0 F6 = 0

272

1 1 0 1 0 1 1 0 F7 = B3

图7-45 习题7-19 F2、F3、F4、F5、F6、F7卡诺图

PAL16L8实现习题7-19的阵列图如图7-46所示。

1 A1 ? ? ?? ?? 2 A2 ? 19 F1 ? ? ? 18 F2 3 A3 ? ? ? ? 17 F3 4 B1 ?? ? ? 16 F4 5 B2 ? ? ? 15 F5 6 B3 ? 14 F6 7 ? ? 13 F7 8 12 9 11 图7-46 PAL16L8实现习题7-19的阵列图

EN

273

习题7-20 试用8个寄存器输出结构组成的PAL16R8设计四位可逆计数器。 解:此题只给解题步骤: (1)写出真值表; (2)选触发器;

(3)写出激励方程、驱动方程和输出方程; (4)为PAL16R8锁定管脚、编程。

习题7-21 试述PAL和GAL在结构上的不同之处。

答:通用阵列逻辑GAL是在PAL基础上发展起来的一种具有较高可靠性和灵活性的新型可编程逻辑器件,它采用E2CMOS工艺和灵活的输出结构,能将数片中小规模集成电路集成在芯片内部,并具有电擦写反复编程的特性。在基本阵列结构上仍是与阵列可编程,或阵列固定的PAL结构。与PAL相比,GAL的输出结构配置了可以任意组态的输出逻辑宏单元OLMC(Output Logic Macro Cell),适当地为输出逻辑宏单元进行编程,GAL就可以在功能上代替前面讨论过的PAL的四种输出类型及其派生类型,为在同一片GAL中,实现组合逻辑电路和时序逻辑电路的分块设计提供了方便。GAL和PAL在结构上的区别见图7-47所示。图中虚线框外是GAL和PAL 两种结构都具有的输入电路和与阵列。上面虚线框内是PAL的或阵 输出函数 或门输出乘 积阵列 电路 项

互补 PAL结构

输入信号 输入与门输出 GAL结构

阵列 电路 函数

输入 可灵活编程

反 的输出逻辑乘 宏单元馈信积

(OLMC)和 项 输号

或阵列结构

图7-47 PAL和GAL基本结构的比较框

列和输出电路,输出电路的结构是随着芯片的选定而确定;下面虚线框内是GAL的输出逻辑宏单元,它包括或阵列结构和输出结构,输出结构的类型依赖于设计者的编程来确定。

习题7-22 简述GAL的输出逻辑宏单元OLMC有哪几种组态及其特点。

答:输出逻辑宏单元由对AC1(n) 和AC0进行编程决定PTMUX、TSMUX、OMUX和FMUX的输出,共有5种基本组态:专用输入组态、专用输出组态、复合输入/输出组态、寄存器组态和寄存器组合I/O组态。前三个是组合组态,后两个是时序组态。8个宏单元可以处于相同的组态,或者有选择地处于不同组态。

习题7-23 用一片GAL16V8设计一个0~7位可调延时器,延时器电路图如图7-48所示。 解:显然输入是4位S1、S2、S3和Sin,输出是1位D0,而中间传递结果有6个Q1、Q2、Q3、Q4、Q5、Q6和Q7。

274

图7-48 0—7位可调延时器电路图

1 CLK CK OLMC 2 S1 (19) 19 D0 OLMC 3 S2 (18) 18 Q1 4 S3 17 OLMC (17) Q2 16 OLMC 5 Sin OLMC 6 (15) 15 Q4 (16) Q3 OLMC (14) 7 14 Q5 OLMC 13 Q6 (13) 8

12 OLMC Q7 (12) 9

11 OE

CE 图7-49 GAL16V8实现可调延时电路的阵列图 公式

D0=S1S2S3Sin+ S1S2S3Q1+ S1S2S3Q2+ S1S2S3Q3+ S1S2S3Q4+ S1S2S3Q5+ S1S2S3Q6+ S1S2S3Q7

分配管脚D0到19管脚、Q1到18管脚、Q2到17管脚、Q3到16管脚、Q4到15管脚、Q5到

275

14管脚、Q6到13管脚、Q7到12管脚、CLK到1管脚、CE到11管脚、S1到2管脚、S2到3管脚、S3到4管脚、Sin到5管脚。

GAL16V8实现的可调延时电路编程后的阵列图如图7-49所示。 习题7-24 用一片GAL16V8构成2个四选一多路数据选择器。

解:显然输入是10位A10、A20、S10、S20、S30和S40,A11、A21、S11、S21、S31和S41,输出是2位D0和D1。

公式 D0=A10A20S10+ A10A20S20+ A10A20S30+ A10A20S40 D1=A11A21S11+ A11A21S21+ A11A21S31+ A11A21S41

分配管脚:输入是10位,而输出是两位,用GAL16V8可以分配。 阵列图从略。

习题7-25 用GAL16V8设计一个顺序控制器,该控制器状态图如图7-50所示。它有A、B、C三种状态,输入控制信号C和D决定状态之间的转换,输出是W、X 和Y。 解: 参照习题7-23和习题7-24。

习题7-26 Altera可编程逻辑器件EPM7128S由哪几个部分组成,简述其工作原理。

答:EPM7128S器件结构图是由8个相似的逻辑阵列块(Logic Array Block,LAB)、一个可编程内连矩阵(PIA)和多个输入/输出控制块(I/O

图7-50 顺序状态器控制图

Block)组成。每个LAB有16个宏单元(Macrocell)、2个独立的全局时钟和一个全局清除。来自直接输入引脚Input或任何一个I/O引脚的输入信号,既可有6~12条(根据芯片封装确定)进入LAB,又可以有6~12条进入可编程内连矩阵PIA。PIA在芯片的中央,相当于中转调度控制,它既可接收来自I/O控制块(6~12)、逻辑阵列块(16)和全局的时钟、清零和使能信号,又可将36个信号发送至LAB的宏单元中的与阵列,6 个使能信号发送到I/O控制块用以控制它的三态输出缓冲器。 (1)宏单元(Macrocell)

EPM7128S的每个逻辑阵列块LAB中有16个宏单元,宏单元在组态功能上与GAL的OLMC相似,能够单独地组态为时序逻辑或组合逻辑工作方式。宏单元由三个功能块组成:与逻辑阵列、乘积项选择矩阵和可编程寄存器。与逻辑阵列实现组合逻辑,为每个宏单元提供5个乘积项;乘积项选择矩阵将乘积项分配至或门、异或门实现组合逻辑函数。另外,这些乘积项还可作为宏单元中触发器的清除、置位、时钟和时钟使能控制输入。

每个宏单元有一个乘积项反相后反馈回与阵列,这个乘积项能够连到同一个LAB中任何其它乘积项上,称它为可共享乘积项。宏单元中的触发器可以编程为D、T、JK或RS触发器,以实现时序逻辑电路。若适当地编程寄存器旁路数据选择器,可将触发器断开,以实现组合逻辑电路。触发器的清除、置位、时钟和时钟使能控制可来自全局信号或乘积项信号。 (2)扩展乘积项

大多数的逻辑函数由5个乘积项之和就可实现,这样用一个宏单元即可。对于较为复杂

276

的逻辑函数需要附加乘积项,那么用一个宏单元是不够的,若用另一个宏单元的输出,会增加系统的延时。EPM7128S结构中提供了共享和并联扩展乘积项,它可作为附加的乘积项直接送到该LAB的每个宏单元中。

a. 共享扩展乘积项

每个LAB最多有16个共享扩展乘积项。共享扩展乘积项就是由每个宏单元提供一个未投入使用的乘积项,并将它们反相后反馈到与阵列,便于集中使用。

b. 并联扩展乘积项

并联扩展乘积项是一些宏单元没有使用的乘积项,它可分配到邻近的宏单元去快速实现复杂的逻辑函数。并联扩展乘积项最多可达20个乘积项直接馈送到宏单元的或逻辑,其中5个乘积项是由宏单元本身提供的,15个并联扩展乘积项是由LAB中邻近宏单元提供。在一个LAB中有两组宏单元,每组有8个,顺序编号是1到8,并且具有两条借出或借用并联扩展项的链。

(3)可编程内连矩阵PIA

EPM7128S的专用输入引脚、I/O引脚和宏单元输出均可送到PIA,PIA可把这些信号送到各个LAB。

(4)I/O控制块

允许每个I/O引脚单独地配置为输入、输出和双向工作方式。所有引脚都有一个三态缓冲器,它的使能端可直接连在地(GND)、电源(Vcc)上,或6个全局使能信号中的一个。6个使能信号由下列信号驱动:两个输出使能信号、一个I/O引脚的集合或一个宏单元输出的集合,并且也可以是这些信号反相后的信号。当三态缓冲器的控制端接到GND时,其输出为高阻状态并且I/O引脚可作为专用输入引脚使用。当三态缓冲器控制端连到电源VCC上时输出被使能。每一个I/O引脚的输出缓冲器可以调整输出电压摆率,当电压摆率控制端编程后,设置成快的电压摆率,提供了较高的速度转换,这种设置仅用在系统中影响速度的关键输出端,且具有相应的抗噪声措施。当电压摆率控制端没有编程,则电压摆率设置在低噪声状态,这将减少噪声和地线上的毛刺。

习题7-27简述在系统编程芯片的特点,以及设计过程。 答: (1)可以脱离编程器进行编程; (2)减少不必要的物理损失;

(3)断电后,芯片内部信息不丢失。

将选定的在系统编程芯片插入系统,再将设计好的电路通过下载线送入芯片,电路就存在于芯片之中,系统按电路要求进行工作。

习题7-28 EPM7128S的输入/输出模块I/OB可构成哪些组态,试举两例并画出电路图。 答:(1)专用输入组态; (2)专用输出组态;

(3)专用输入/输出组态; (4)双向控制摆率工作方式等等 两例如图7-51所示。

来PIA 到PIA I/O I

到PIA (b)

(a)

图7-51 两例I/OB组态

(a)双向输入/输出方式; (b)直接输入方式。

277

习题7-29 试述EPM7128S在那些方面优于GAL16V8。 答:(1)高集成密度。HDPLD芯片的规模已达上万个等效逻辑门,往往在一片或几片HDPLD内,可以实现功能相当复杂的数字系统,如在一个芯片内设置数据总线和地址总线。

(2)速度高、低功耗、抗噪声容限较大。EPM7128S最快速度的芯片一个引脚经过一个传输门到另一个引脚的延时约为2ns,构成计数器的工作频率大于178.6MHz。

(3)在系统编程能力。

(4)可测试性能力。大部分可编程逻辑芯片具有JTAG(Joint Test Action Group)边界扫描电路,使芯片具有良好的可测试能力,不但可以对芯片内部进行故障监测,而且还可以进行精确的故障定位。

(5)线或功能。EPM7128S为每一个I/O引脚提供了漏极开路操作,使芯片具有由其它芯片提供的系统级控制信号的能力,并且可以提供线或功能。

(6)异步时钟、异步清除功能。PAL和GAL中触发器的时钟信号是外部引脚统一供给,故只能实现同步时序电路,而HDPLD的触发器时钟信号既可由外部快速提供,也可通过编程,形成不同频率的时钟信号提供给触发器。因此既可同步工作,也可异步工作。

(7)乘积项共享功能。PAL和GAL乘积项最多不超过15个(GAL22V10),而EPM7128S具有并联扩展乘积项和共享扩展乘积项分配网络,允许向每个宏单元提供多达32个乘积项。

(8)输出缓冲器多种使能的能力。高密度可编程逻辑器件的三态输出使能控制比PAL、GAL丰富,可以由外部引脚使能、宏单元使能和I/O单元使能,使每个I/O引脚可以组成任何组态。

(9)很强的加密能力。HDPLD像GAL一样具有可编程的加密位,不同的是目前对加密的高密度可编程逻辑器件的解密技术还不成熟,因此,当前高密度可编程逻辑器件对电路系统的加密,全面保护专利设计,仍是一种理想的器件。

习题7-30 如何用EPM7128S的共享和并联扩展乘积项实现乘积项为19的逻辑函数,在编号为5的宏单元输出。

答:(1)根据题意得知函数的输入乘积项为19个,前面已讨论过每个宏单元输入到乘积选择矩阵的乘积项只有5个,所以至少用4个宏单元的乘积项。

(2)通过宏单元的借用通道,向编号较小的宏单元借用乘积项,宏单元5向宏单元4借用5个,向宏单元3借用5个,向宏单元2借用4个,借用的乘积项在并联逻辑扩展乘积项的作用下,进入宏单元5的或门,实现乘积项为19的逻辑函数。

习题7-31 FPGA在结构上有哪些特点?各组成部分的功能是什么?

答:FPGA的编程单元是基于静态存储器(SRAM)结构,从理论上讲,具有无限次重复编程的能力。

它主要由三个基本部分组成:(1)可配置逻辑模块CLB(Configurable Logic Block),(2)输入/输出模块I/OB(Input/Output Block),(3)可编程连线PI(Programmable Interconect)和由它组成的编程开关矩阵PSM(Programmable Switch Matrix)。

可配置逻辑模块CLB以方阵的形式布置在器件的中央,FPGA可以提供n×n个CLB,随着可编程逻辑器件的发展,其阵列规模也在增加。CLB本身包含多种逻辑功能部件,使它既能实现组合逻辑电路和时序逻辑电路,又可实现包括静态RAM的各种运算电路。输入/输出模块I/OB分布在芯片的四周,它是提供外部封装引脚和内部信息的接口电路,该接口电路通过设计编程可以分别组态为输入引脚、输出引脚和双向引脚,并且具有控制速率、降低功耗

278

等功能。可编程连线PI分布在CLB周围和CLB及I/OB之间,它们的主要作用是完成CLB之间逻辑连接以及将信息传递到I/OB。

习题7-32 试分析用一个CLB组成的32×1边沿触发单口RAM的工作原理,如图7-52

图7-52 CLB组成32×1边沿触发单口RAM图

所示。

答:组合逻辑输入F1~F4和G1~G4并联作为RAM的地址线A0~A3输入,D1作为A4

地址。可以通过地址的改变来选中存储单元的信息,此时CLB控制信号S/R和H1分别作为数据信号D0和写使能信号WE,F′、G′和H′作为RAM的数据输出。

当RAM写数据时,写使能信号WE为高电平通过缓冲器进入与门,使与门有效,允许时钟通过。时钟CLOCK进入CLB后,经过边沿选择数据选择器(上升沿或下降沿)给16×1存储单元一个写入脉冲。地址F1~F4等到时钟边沿到达,经过锁存器和地址译码选中16×1阵列中的某一单元。如当F1~F4地址为0000时,且A4=0时,并且WE有效,数据D0经过缓冲器进入最下面的存储单元。当RAM读出数据时,写使能信号WE为低电平,关闭与门,禁止数据写入。地址信号直接到数据输出选择器选中所需单元从F′通过H′读出,形成32×1边沿触发器。

习题7-33 用两个CLB设计一个32×2的边沿触发单口RAM。 解:(1)用习题7-32的两个32×1边沿触发器图形。

(2)除数据输出D0 ,D1 和Din0 ,Din1不并接外,其它均并用,如图7-53所示。

WE 32×1边沿触发器 D0

32×1边沿触发器 A0~A4 D

1

Din0 Din1 (II) 图7-53 32×2的边沿触发单口RAM

习题7-34 用适当数量FPGA(XC4000E系列)的CLB设计一个四位二进制加法电路。 解:由于XC4000E系列的CLB具有进位逻辑链,所以做一位加法时仅需要一个CLB即可,四位二进制加法电路共需要四个CLB。用CLB设计的四位二进制加法示意图如图7-54

279

所示。

习题7-35 用一个XC4000E系列的CLB是否可以实现一个9输入信号的组合逻辑函数和一个4输入信号的组合逻辑函数,若可以绘出简化方框图,若不行说明其原因。

答:可以,但应有条件。

G1~G4可以组成四个输入信号的逻辑函数,而F1~F4也可以组成四个输入信号的逻辑函数,形成8输入的逻辑函数,接着进入三变量的任意逻辑函数功能的函数块,使G1 ~G4、F1~F4和H1形成9输入信号的组合逻辑函数,这是一个独立的逻辑函数。如果再想形成一个独立的4输入信号的组合逻辑函数是不可能的。因此只能形成一个独立的9输入信号的组合逻辑函数F1和拥有共享项的4输入信号的组合逻辑函数F2。如图7-55所示。

Ci Ci+1 Ci+2 Ci-1 进位逻辑 进位逻辑 进位逻辑 进位逻辑 4变量的 4变量的 4变量的 4变量的 S S S S4 123 任意逻辑 任意逻辑 任意逻辑 任意逻辑 a1 a2 a3 a2 b1 函数功能 函数功能 函数功能 b2 b3 b2 函数功能 图7-54 4个CLB组成的四位带进位的加法器

H1 4变量的

任意逻辑

3变量的 函数功能 F1 任意逻辑 4变量的 函数功能 任意逻辑 F2 函数功能

图7-55 9输入组合逻辑和拥有共享项的4输入组合逻辑函数

习题7-36 用若干个XC4000E系列的CLB实现8421BCD码计数器。 解:(1)首先知道用XC4000E系列的CLB做8421BCD码计数器是用D触发器,通过列阵值表、卡诺图得到驱动方程:

D0=Q0 D1= Q1Q0+Q3Q1Q0 D2= Q1Q2+Q2Q1Q0+Q0Q2 D3=Q2Q1Q0+Q3Q1Q0

(2)一个CLB由于其查找表结构,可以用9个信号作为一个乘积项,而D0、D1、D2和D3均可用一个CLB,而且每个CLB中又有D触发器,所以用4个XC4000E系列的CLB实现8421BCD码计数器。

习题7-37 简述HDPLD和FPGA在编程连线方面的不同之处,以及由此产生的特点。 答:HDPLD内部连线汇总于编程内连矩阵,然后分配到各个宏单元,因此信号通路固定,系统速度可以预测。而FPGA的内连线是分布在CLB周围,而且编程的种类和编程点很多,使得布线相当灵活,因此在系统速度方面低于HDPLD的速度。

由于FPGA的CLB规模小,可分为两个独立的电路,又有丰富的连线,所以系统综合时可进行充分的优化,以达到逻辑最高的利用。

习题7-38 用XC4000E系列的I/OB构成为双向寄存器出/寄存器进,且需有较强的负载能

280

力和具有抗噪声的能力。

答:此题要求I/OB的输入、输出均带寄存器,而且带有摆率控制和上、下拉电路。图7-56是I/OB编程后的示意图。

摆率开 拉阻开 来自内 部电路

来自内 D Q 部电路 三态输出 CLK 缓冲器 引脚 触发器 去内 Q D 部电路 输入缓冲器

触发器 CLK 图7-56 习题7-38编程后I/OB的示意图

第四节 自我检测

一、自检习题

自检7-1 RAM的功能是什么?它通常由哪几部分组成?RAM静态存储单元和动态存储单元有何不同,各有什么特点?

自检7-2 试回答下列问题。

(1)将一个包含有32768个基本单元的存储电路设计成4096个字节的RAM。 a. 该RAM有几根数据线? b. 该RAM有几根地址线?

(2)将一个包含有16384个基本单元的存储电路设计成8位为一个字节的ROM。 a. 该ROM有多少个地址?

b. 该ROM有多少个数据读出线?

(3)有一个容量为256×4位的RAM。 a. 该RAM有多少个基本存储单元?

b. 该RAM每次访问几个基本存储单元? c. 该RAM有多少地址线?

自检7-3 有一个64×1位的RAM。????????

(1)该RAM仅有一套基本译码电路,则地址译码器中应有多少个或非门?每个或非门应有多少个输入端?

(2)若该RAM中的基本存储单元排列成16×4存储阵列,则行、列译码器各应有多少个或非门?每个或非门应有多少个输入端??????????????????????

(3)若该RAM中的基本存储单元排列成8×8存储阵列,那么行、列译码器各应有多少个或非门?每个或非门应有多少个输入端?

(4)上述方案中哪一种最佳?为什么? ??????????????

281

自检7-4 判断下列叙述是否正确: (1) FPGA是可编程逻辑器件。

(2) PLA实现逻辑函数时,要求产生所有输入变量的最小项。 (3) PAL器件仅对逻辑宏单元OLMC进行编程。 (4) GAL是通用阵列逻辑器件,可以进行反复编程。 (5) 用ROM实现组合逻辑时不对函数作任何简化。

自检7-5 试用若干个XC4000E的CLB构成一个16通路12位移位寄存器。 自检7-6 比较浮栅编程技术中的SIMOS和Flash,各有什么特点。

自检7-7 有一个由三位二进制计数器和一个ROM构成的如图7-57所示电路,请画出输出F的波形。设计数器初态为0。

m0

Q 2二m1 进m2 Q 1制m3 ROM CP

计m4

Q 数m5 0器 m6

m7

图7-57 自检7-7电路图

自检7-8 分析图7-58所示的RAM读写控制电路。结合电路的结构,分析电路的工作原理,并总结出控制电路在读出和写入时控制线所应处的状态。

G1 G4 G2 R/W 1 1 &

G5 G3

1 & CS -VDG6 T2 & G8 T 1 & 1 G7

G13 G11

1 & D

G9 G10 G14 G12 I/O 1 1 D 1 & 图7-58 自检7-8RAM读写控制电路

282

自检7-9 试用可编程阵列PLA实现图7-59所示电路的功能。 & ≥1 F1

A ≥1 & B

=1 F2 C

图7-59 自检7-10电路图

自检7-10 四位移位寄存器电路如图7-60所示。试用PLA及D触发器实现这一电路的功能,要求画出PLA的阵列图。

Q Q Q Q Q Q Q Q

4 3 2 1 D D D D RD CP ≥1 ≥1 ≥1 ≥1

& & & &

& & & 1

M

A B C D

图7-60 自检7-10四位移位寄存器电路图

自检7-11 现有A、B、C三台设备,其功率均为10kW,由F1、F2两台发电机组供电,已知F1功率为10kW,F2功率为20kW,为节省电能,试根据投入运行的设备数,用可编程逻辑阵列PLA设计一个控制电路以决定发电机组的启停。

(1) 列真值表;

(2)列控制电路的输出函数表达式; (3)画出PLA阵列图。

自检7-12 试用触发器和PLA组成可编程逻辑阵列式的计数器及译码电路(高电平输出有效)。

(1) 设计五位扭环行计数及译码电路。设Q4Q3Q2Q1Q0=00000为十进制数0。 (2) 若PLA输出a~h经八个同相缓冲驱动器与发光二极管数码管连接,问数码管应选用共阳极还是共阴极,才能显示数码?

自检7-13 试用ROM设计下面组合逻辑电路,已知函数F1~F4,并画出相应的电路。 F1(A,B,C,D)= AB + BD + ACD + BCD F2(A,B,C,D)= AD + BCD + ABCD

F3(A,B,C,D)= ABC+ ACD + ACD + ABC F4(A,B,C,D)= AC + AC + B + D

283

自检7-14 设计一个用ROM实现的电路,判断一个四位二进制数D3D2D1D0的状态。 (1)是否能被3整除:被3整除时,输出Y1=1。 (2)是否大于12:大于12时,输出Y2=1。 (3)是否为奇数:为奇数时,输出Y3=1。

(4)是否有奇数个1:有奇数个1时,输出Y4=1。

自检7-15 用EPROM设计序列信号发生器。假设实现的序列信号如图7-61所示。

0 1 2 3 4 5 6 7 8

F4

F3 F2

F1

图7-61 自检7-15给定电路序列信号图

二、自检习题答案

自检7-1 答:RAM为随机读写存储器,可随时从内存中读出数据,也可随时将数据写入内存中某个单元。通常包括地址译码器、存储矩阵和输入/输出电路三部分。静态存储单元由单元中的触发器保存信息,读出过程不影响单元中存储的内容。动态存储单元利用MOS管栅极电容保存信息,需要定时刷新。

自检7-2 答:(1) a. 8根 b. 12根。

(2) a. 2048个地址 b. 8个。

(3) a. 1024个 b. 4个 c. 8个。 自检7-3 答:(1) 六输入或非门64个。

(2) 行译码器:四输入或非门16个;列译码器:二输入或非门4个。 (3) 行、列译码器各应有三输入或非门8个。

(4) 最后一个方案最佳,因为用的或非门最少,且输入端个数最少。 自检7-4 答:(1) 错:FPGA是现场可编程门阵列。

(2) 错:PLA实现逻辑函数时,要求进行简化。 (3) 错:PAL器件仅对与阵列进行编程。 (4) 对。 (5) 对。

自检7-5 答:由于只是做移位寄存器,CLB本身的查找表足以完成控制函数的要求,所以一个CLB可以完成2个移位寄存器。12位移位寄存器可以用6个CLB,16通路12位移位寄存器用16×6(96)个CLB。

自检7-6 答:SIMOS的浮栅到衬底的距离大约200埃,当向浮栅注入电子之后,去掉编程电压,浮栅上的电子无泄放回路,即使反向加电压也不行。要想浮栅上的电子去掉,必须紫外线照射。而Flash的浮栅到衬底的距离大约100埃,当向浮栅注入电子之后,去掉编程电压,浮栅上的电子无泄放回路,但反向加电压后可以放掉浮栅上的电子,并且由于漏、源的

284

不对称性,使得快速分级扩散。

自检7-7 解:计数器的状态转换如表7-16所示。输出函数F的逻辑表达式为 F(Q2,Q1,Q0)=m1+m3+m4+m6+m7,波形图如图7-62所示。

表7-16 真值表 Q2 Q1 Q0 CP 被选中的ROM字线 m0 0 0 0 0 CP m1 1 0 0 1 m2 2 0 1 0 F m3 3 0 1 1 m 4 1 0 0 4 m5 图7-62 自检7-7波形图 5 1 0 1 m 66 1 1 0 m7 7 1 1 1

自检7-8 答:从电路的结构可知,门G1~G5为读出、写入的控制部分,门G6,G7和MOS管T1,T2组成三态输出,为读出数据通道,而门G9~G14为写入数据通道。

在CS=0条件下,R/W的状态将决定G2,G3哪个门开。

当R/W=1时,G2开,输出为1,G3关,输出为0,于是G4输出为0,G5输出为1。G4

输出0使G6,G7中有一个处于开的状态。如D=0(D=1),则G8输出1,G7关,G6开,使T1截止,T2导通,I/O=1,即内存单元的内容送往I/O线,I/O状态同D的状态。因为G5输出为1,故G11,G12关,即I/O向内存单元传送数据的通道被切断,这种情况称为读出。

当R/W=0时,G3开,G2关。G5输出为0,G4输出1,G6,G7被关,内存向I/O线传送数据的通道被切断,而G11,G12中有一个处于开的状态。当I/O=0时,G11关,G12开,D=0;当I/O=1时,G11开,G12关,D=1,I/O单元向内存传送数据。这时称为写入。

在CS=1条件下,G3,G2都被关闭,G4 ,G5输出均为高,门G6,G7和G11,G12全关,即I/O线和内存单元传送数据的通道均被切断,不能进行读出和写入的操作。

根据以上分析可知,读、写控制电路读出和写入的条件是: 读操作: CS=0 R/W=1 写操作: CS=0 R/W=0 自检7-9 解:根据图7-59所示电路,可得

F1 = A + B +C

F2 = ABC + AC + BC

由此可得图7-59所示电路功能的PLA逻辑阵列图,如图7-63所示。

自检7-10 解:此题给出的电路是由D触发器和门电路组成,具有并行输入及串行输入左移位功能的4位移位寄存器,要求利用PLA和D触发器实现这一电路功能。 (1)依照图7-60所示电路可得出:

D4 = AM + MQ3 D3 = BM + MQ2 D2 = CM + MQ1 D1 = DM

当M = 0时,并行输入数据信号ABCD。 当M = 1时,左移位操作。

(2)现以寄存器功能选择信号M,并行输入数据信号A,B,C,D及触发器状态信号Q4,Q3,Q2,Q1作为PLA输入构成与阵列;并以各触发器的激励函数作为PLA的输出构成其或阵列,再与各触发器相连接,即可做出PLA的阵列图如图7-64所示。

285

A × B × C × × × × × × 与阵列

× × × × × × × F1 × F2

或阵列 图7-63 自检7-9PLA阵列图

A B C D M M Q1 Q2 Q3

× × × × × × × × × × × × × × × × D Q 4 Q × × D Q 3 Q × × D Q 2 Q × D Q 1 Q CP RD 图7-64 自检7-10的PLA阵列逻辑图

自检7-11解: (1) A、B、C工作时为1,停止时为0;发电机组F1、F2启动为1,停止为0。真值表如表7-17所示。

(2) F1 = ABC + ABC + ABC + ABC F2 = AB + AC + BC

286

(3)控制电路的PLA阵列图如图7-65所示。

表-17 自检7-11真值表 A B C F1 F2 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 A × × × × × × × × × 或阵列 × × × × × × × × × 与

× × 阵 列

× ×

B C

F1

× × × × F2

图7-65 自检7-11PLA阵列图

× × × × × × × × × × ×

× × × × × ×

× × × × × × × × × × × × × × × ×

× × × × × × × × × × × × × × × × ×

× × × × ×

× D0 Q0 D1 × Q1 D2 × Q2

D3 ×

Q3

D4 ×

Q4

CP

× × × × × × × × a × × × × × × × × b a × × × × × × × × × c f g b

× × × × × × × d h

e × × × × e c

f × × × × × × d g × × × × × × ×

h ×

图7-66 自检7-12 PLA阵列图

自检7-12 解: (1) 五位扭环行计数器计数态序表如表7-18所示。根据态序表画计数器次态卡诺图,简化后可推出触发器的驱动方程如下:

287

表7-18 状态表 D0 = Q4

十进制数 Q4 Q3Q2 Q1 Q0 D1 = Q0

0 0 0 0 0 0 D2 = Q1 1 0 0 0 0 1 2 0 0 0 1 1 D3 = Q2

3 0 0 1 1 1 D4 = Q3 4 0 1 1 1 1 5 1 1 1 1 1 五位扭环行计数及译码电路PLA阵列图如图7-66所

6 1 1 1 1 0 示。 7 1 1 1 0 0 8 1 1 0 0 0 (2)应选用共阴极发光二极管数码管。

9 1 0 0 0 0 自检7-13 解:输入变量是四个A、B、C、D,输出四个为F1~F4,由函数F1~F4写成最小项之和的形式,为 F1= Σm(0,1,2,3,7,8,9,10,13,15) F2= Σm(0,2,4,6,9,14)

F3= Σm(3,4,5,7,9,13,14,15)

F4= Σm(0,1,2,3,4,6,7,8,9,10,11,12,13,14) 矩阵容量为8×16+4×16=192(存储单元)

根据ROM的与阵列固定,或阵列可编程的特点,可知与阵列为全译码阵列,而或阵列和函数F1~F4有关,按函数F1至F4的顺序,其相应的内存单元中应有10,6,8,14个单元的内容为1。图7-67为用ROM实现的函数F1~F4的电路。 A D3 B 地 址 D2 C 译 D1 码 D 器 D0 F1 F2

Y1 Y2 Y3 Y4 F3

F4 图7-68 自检7-14用ROM实现的电路 图7-67 自检7-13 ROM阵列m0 m1 m2 m3 m4 m5 m6 m7

2 自检7-14 解:用ROM实现的电路图如图7-68 AA2 A1 所示。

A1 自检7-15 解:对图7-61给定的序列信号,按其 A0 A 变化特征可分为8组,若每组内4个序列信号的高、 0低 电 平 分别对应1和0, 将它们按地址顺序写入 F4 × × × × F3 × × × × EPROM,即可得到所要求的序列信号发生器,其阵列 F2 × × × × × × × × F1 逻辑如图7-69所示。

图7-69 自检7-15阵列逻辑电路图

288