等功能。可编程连线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