第 2 章 数字逻辑电路基础 和计算机中的逻辑部件 第 2 章 数字逻辑电路基础 和计算机中的逻辑部件 (计算机组成原理课程的预备性知识) 2.1 数字电路基础 2.2 基本逻辑门和布尔代数知识基础 2.3 组合逻辑电路及其应用 2.4 时序逻辑电路及其应用 2.5 现场可编程器件的内部结构和编程
一. 本章的预备性知识 1. 晶体二极管和它的单方向导电特性 2. 晶体三极管与反相器电路 3. 两种最基本的门电路:与非门,或非门 一. 本章的预备性知识 1. 晶体二极管和它的单方向导电特性 2. 晶体三极管与反相器电路 3. 两种最基本的门电路:与非门,或非门 4. 逻辑运算与数字逻辑电路 5. 逻辑功能的表示和等效电路 6. 真值表和逻辑表达式的对应关系 7. 逻辑运算的基本定理、常用公式和逻辑化简 8. 三态门电路
晶体二极管及其单方向导电特性 通常情况下,可把一些物体划分成导体(双向导电)和 绝缘体(不导电)两大类。在这两类物体的两端有电压存在时,会出现有电流流过或无电流流过物体的两种不同情形。 人们也可以制作出另外一类物体,使其同时具备导体和绝 缘体两种特性,其特性取决于在物体两端所施加电压的方向, 当在一个方向上有正的电压(例如 0.7V)存在时,可以允许电 流流过(如图所示),此时该物体表现出导体的特性; 而在相反的方向上施加一定大小的电压时, 该物体中不会产生电流,表现出绝缘体的 的特性,即该物体只能在单个方向上导电, 这样的物体被称为半导体。制作出的器件 被称为二极管。 + - 电流 i
二极管的内部结构及其开关特性 绝缘体和导体不同的导电特性是由于它们不同的原子结构特性造成的。 通过在绝缘材料中有控制地掺加进少量的导电物质,可以使得到的材料有一定的导电特性。例如在 4价的硅材料(每个原子核周围有 4个电子)中掺杂进少量 5价的金属材料形成 N型材料,或者掺杂进少量 3价的金属材料形成 P型材料,使新得到的材料中总的原子核数量与电子的数量不满足 1:4 的关系, N型材料中形成有极少量的带负电荷的多余电子, P型材料中缺少极少量的电子(反过来称为有极少量的带正电的空穴),这些电子和空穴可以成为导电的载流子。当把这样的两种材料结合在一起时,就表现出在单个方向导电的特性,这就是半导体,做成器件就是二极管。当P型材料一端(称为二极管的正极)有比N型材料一端(称为二极管的负极)高 0.7 伏的电压时,就会产生从正极流向负极的电流,小的反向电压则不会产生电流。
2. 晶体三极管和反相器电路 在半导体的基体上,经过人工加工,可以生产出三极管,它类似于 2 个背向相连接的二极管,有 3 个接线端,分别被称为集电极、基极和发射极,其特性是: 电源 +Vcc (+5V) +Vcc 输入电平 = 0.7 V, 三级管导通, 使输出电平为 0 V ; 输入电平 = 0 V , 三级管截止 , 使输出电平 > 4 V ; 这已经构成了反相器线路, 完成逻辑取反功能。 电阻 集电极 输出 输入 基极 发射极 接地
3. 与非门 和 或非门 电源 +Vcc (+5V) 电源 +Vcc (+5V) 输出 输入1 输入2 接地 接地 3. 与非门 和 或非门 与非门: 2 路输入都高,输出才为低; 或非门:任何一路输入为高,输出都为低 (原1个三极管变成串接的2个三极管) (原1个三极管变成并行的2个三极管) 电源 +Vcc (+5V) 电源 +Vcc (+5V) 输出 输入1 输出 输入1 输入2 输入2 接地 接地 当然,也可以制作并使用不带反相功能的 与门 和 或门 电路。
4. 逻辑运算与数字逻辑电路 数字逻辑电路是实现数字计算机的物质基础。 4. 逻辑运算与数字逻辑电路 数字逻辑电路是实现数字计算机的物质基础。 最基本的逻辑电路:与门,或门,非门;用它们可以组合出实现任何复杂的逻辑运算功能的电路。 最基本的逻辑运算有:与运算,或运算,非运算,正好可以选用与门、或门、非门来加以实现。 逻辑关系是可以采用数学公式来表示和运算的,此数学工具就是布尔代数,又称逻辑代数。 例如,A = B • C + E * /F; A为输出(运算结果), B、C、E、F为输入,• 、+、 / 分别代表与、或、非运算符; 运算符的优先级:非运算最高,与运算次之,或运算最低。 这一逻辑运算功能,显然可以用 与门、或门、非门来实现。
5. 逻辑功能的表示和等效电路 逻辑功能可以选用布尔代数式表示, 卡诺图表示, 真值表表示,或者用线路逻辑图表示。 5. 逻辑功能的表示和等效电路 逻辑功能可以选用布尔代数式表示, 卡诺图表示, 真值表表示,或者用线路逻辑图表示。 与门、 或门、 非门 的图形符号: 真值表 A B X 0 0 0 0 1 0 1 0 0 1 1 1 X=A•B X= A•B A A A X X X B B 非门 与门 与非门 A B X 0 0 1 0 1 1 1 0 1 1 1 0 X=A+B X=A+B A A X X B B 或门 或非门
6. 真值表和逻辑表达式的对应关系 真值表、逻辑表达式、线路图是有对应对应关系的, 真值表→表达式→电路图 (用于做出产品) A B X 6. 真值表和逻辑表达式的对应关系 真值表、逻辑表达式、线路图是有对应对应关系的, 真值表→表达式→电路图 (用于做出产品) 真值表 A B X 0 0 0 0 1 0 1 0 0 1 1 1 得出用到的基本门 及其连接关系 用与逻辑写出真值表中每一横行中输出为 1 的逻辑表达式; 用或逻辑汇总真值表中全部输出为 1 的逻辑。 不必理睬那些输出为 0的各行的内容,它们已经隐含在通过 1、2 两步写出的表达式中。 X = A •B A X B 与门 A B X 0 0 1 0 1 1 1 0 1 1 1 0 X = A • B X A B 与非门 X= A * B + A * B + A * B 用于写出功能需求
7. 基本定理和常用公式,逻辑化简 A+0=A A•0=0 A+A=1 A•A=0 A+1=1 A•1=A A+A=A A•A=A 7. 基本定理和常用公式,逻辑化简 A+0=A A•0=0 A+A=1 A•A=0 A+1=1 A•1=A A+A=A A•A=A A+B=B+A A•B=B•A A=A (A+B)+C=A+(B+C) (A•B) •C=A•(B•C) A•(B+C)=A•B+A•C A+ B•C=(A+B) •(A+C) A+A•B=A A•(A+B)= A A+A•B=A+B A•(A+B)=A•B A • B = A + B A + B = A • B 例如:A•B+A•B+A•B = A•(B+B) +A•B=A+A•B = A + B = A•B
8. 三态门电路 三态门电路是一种最重要的总线接口电路,它保留了图腾输出结构电路信号传输速度快、驱动能力强的特性,又有集电极开路电路的输出可以“线与”的优点,是构建计算机总线的理想电路。 “三态”是指电路可以输出正常的 “0” 或 “1”逻辑电平,也可以处于高阻态,取决于输入和控制信号。为高阻态时, “0” 和 “1”的输出极都截止,相当于与所连接的线路断开,便于实现从多个数据输入中选择其一。 总线 例如,当控制信号 /G1为低电平, /G2 和 /G3为高电平时,三态门的输入 A 被送到总线上,另外两个三态门的输出处于高阻态。 /G1 /G2 /G3 A B C
二. 计算机中常用的逻辑电路 专用功能电路 1. 加法器和算术逻辑单元 2. 译码器和编码器 3. 数据选择器 4. 触发器和寄存器、计数器 二. 计算机中常用的逻辑电路 专用功能电路 1. 加法器和算术逻辑单元 2. 译码器和编码器 3. 数据选择器 4. 触发器和寄存器、计数器 阵列逻辑电路 5. 存储器芯片 RAM 和 ROM 6. 通用阵列逻辑 GAL 7. 复杂的可编程逻辑器件 CPLD: MACH器件 8. 现场可编程门阵列 FPGA 器件
计算机中常用的逻辑器件 计算机中常用的逻辑器件,包括组合逻辑和时序逻辑电路两大类别;也可以划分为专用功能和通用功能电路两大类别。 组合逻辑电路的输出状态只取决于当前输入信号的状态,与过去的输入信号的状态无关,例如加法器,译码器,编码器,数据选择器等电路; 时序逻辑电路的输出状态不仅和当前的输入信号的状态有关,还与以前的输入信号的状态有关,即时序逻辑电路有记忆功能,最基本的记忆电路是触发器,包括电平触发器和边沿触发器,由基本触发器可以构成寄存器,计数器等部件; 从器件的集成度和功能区分,可把组合逻辑电路和时序逻辑电路划分成低集成度的、只提供专用功能的器件,和高集成度的、现场可编程的通用功能电路,例如通用阵列逻辑GAL,复杂的可编程逻辑器件 CPLD,包括门阵列器件FPGA,都能实现各种组合逻辑或时序逻辑电路功能,使用更方便和灵活。
1. 加法器和算术逻辑单元 加法器是计算机中最常用的组合逻辑器件,主要完成两个补码数据的相加运算,减法运算也是使用加法器电路完成的。 1. 加法器和算术逻辑单元 加法器是计算机中最常用的组合逻辑器件,主要完成两个补码数据的相加运算,减法运算也是使用加法器电路完成的。 一位的加法器可以对本位两个二进制数据和低一位送上来的一个进位信号的完成相加运算,产生本位的和以及送往高一位的进位输出信号。 由多个一位的加法器,可以构成同时完成对多位数据相加运算的并行加法器,此时需要正确连接高低位数据之间的进位输入与输出信号。 若各数据位之间的进位信号是逐位传送,被称为串行进位,当加法器的位数较多时,会使加法运算的速度大大降低;从加速加法进位信号的传送速度考虑,也可以实现多位的并行进位,各位之间几乎同时产生送到高位的进位输出信号。 乘除法运算,也可以通过多次的循环迭代利用加法器完成。
加法器和算术逻辑单元 计算机不仅要完成对数值数据的算术运算功能,还要完成对逻辑数据的逻辑运算功能,例如与运算,或运算等等。 在计算机中,通常会把对数值数据的算术运算功能和对逻辑数据的逻辑运算功能,合并到一起用同一套电路实现,这种电路就是算术逻辑单元,英文缩写是 ALU,用与、或、非门等电路实现,其设计过程和逻辑表达式在数字电路教材中有详细说明,这些内容是 “数字逻辑和数字集成电路” 的重点知识。 多位的 ALU 不仅要产生算术运算、逻辑运算的结果,还要给出结果特征情况,例如算术运算是否产生了向更高位的进位,结果是否为零,结果的符号为正还是为负,是否溢出等;对逻辑运算通常只能检查结果是否为零,不存在进位和溢出等问题。 要 ALU 运算,就涉及选择参加运算的数据来源,要完成的运算功能,结果的处置方案,特征位的保存等多方面的问题,要有办法控制 ALU 的运行状态。
一位加法器的设计过程 其设计过程可以通过如下3步完成: (1)写出加法器逻辑的真值表; (2)由真值表推导出对应的逻辑表达式; (3)对得到的逻辑表达式进行一定目的的化简或优化,以便选用基本逻辑门电路实现加法器。 Xn Yn Cn Fn Cn+1 0 0 0 0 0 Fn = /Xn · /Yn · Cn + Xn · /Yn · /Cn 0 0 1 1 0 + /Xn · Yn · /Cn + Xn · Yn · Cn 0 1 0 1 0 0 1 1 0 1 Cn+1 = Xn · Yn · /Cn + /Xn · Yn · Cn 1 0 0 1 0 + Xn · /Yn · Cn + Xn · Yn · Cn 1 0 1 0 1 = Xn · Yn + Xn · Cn + Yn · Cn 1 1 0 0 1 由4个或项组成、每个或项是由4个因子实现与运算 1 1 1 1 1 化简为3个或项,每个或项只是2个因子的与运算
一位加法器的逻辑线路图
2. 译码器和编码器 译码器电路,实现对 n 个输入变量译码,给出2n 个输出信号,每个输出信号对应 n 个输入变量的一个最小项。是否需要译码,通常可以用一或几个控制信号加以控制。译码器多用于处理从多个互斥信号中选择其一的场合。 编码器电路,通常实现把 2n 个输入变量编码成 n 个输出信号的功能,可以处理 2n 个输入变量之间的优先级关系,例如在有多个中断请求源信号到来时,可以借助编码器电路给出优先级最高的中断请求源所对应的优先级编码,实现这种功能的电路通常被称为优先级编码器。
139 为两个独立的二- 四译码器。 每个译码器在信号 G 的控制下,执行译码或者不执行译码。 仅当控制信号G 为低电平时,译码器正常译码,依据 A、B 的值,4 个输出信号中的一个为低电平,其余 3 个为高电平。 否则就不执行译码, 4 个输出信号都为高电平。例如: /1Y0 = /1G * /1A * /1B 3个输入信号A、B、C,8个译码输出信号Y0~Y7。 仅当 3 个控制信号G1、G2A、G2B 的组合为 1 0 0 时,译码器正常译码,依据 A、B、C 的值,8 个输出信号中的一个为低电平,其余7个输出为高电平。 否则就不执行译码, 8 个输出信号都为高电平。例如: /Y0 = G1 * /G2A * /G2B * /A * /B * /C
3. 数据选择器 数据选择器又称多路开关,它是以“与-或”门、 “与-或-非”门实现的电路,在选择信号的控制下,实现从多个输入通路中选择某一个通路的数据作为输出。 在计算机中,按照需要从多个输入数据中选择其一作为输出是最常遇到的需求之一。例如,从多个寄存器中,选择指定的一个寄存器中的内容送到 ALU 的一个输入端,选择多个数据中的一个写入指定的寄存器,选择多个数据中的一个送往指示灯进行显示等。
SN74LS257 257 器件通过选择信号实现从两路 4 位的输入数据(用 A、B 表示)中选择一路输出(用 Y 表示),选择信号为低电平,输出的是 A 路数据,选择信号为高电平,输出的是B 路数据。 该器件的输出还有三态控制,输出控制低电平,输出为正常逻辑信号,否则输出为高阻态。
LN74LS245 实现双向传送控制功能 LN74LS244 实现单向传送控制功能 允许信号控制 A 方和 B 方是否连通,为低时双方连通,为高时双方不通,双方向都处于高阻态。 双方连通时,用信号 DIR 控制数据传送的方向,DIR 为低,B 方数据传向 A 方, DIR 为高,A 方数据传向 B 方。 LN74LS244 实现单向传送控制功能 两个分开的 4 位 的输入输出控制,控制信号 G 为低电平时,输出信号 Y 等于输入 A ,否则输出为高阻态。 把两个控制信号连接在一起,可以同时控制 8 位信号的输入输出。
4. R-S 触发器 触发器是典型的时序逻辑电路,有记忆功能,最简单的是由两个交叉耦合的 “与非”门组成的 R-S 触发器,2 个输出分别为 Q和 /Q,两路输入分别为 R 和 S。 Q /Q 当R为低电平,S为高电平时,会使/Q变为高电平,此时 Q 定变成低电平;在 R恢复为高电平后, Q和 /Q将保持不变,即记忆了本次变化。 当S为低电平,R为高电平时,会使Q变为高电平,此时 /Q 定变成低电平;在 S恢复为高电平后, Q和 /Q 也将保持不变,这是 R-S 触发器。 与非A 与非B R S /Q Q 与或非门 与或非门 当把两个输入 S 和 R 变为一个 D 的互补输入后,可以通过控制信号 E 完成对触发器的写入操作,在 E =1时,Q 将随D而变化。 反相器 D E
5. D 型触发器和寄存器、计数器 前面刚介绍的触发器属于电平触发方式,输入 R 和 S 不能同时为低电平,而且 R 、S 和 D 在触发器写入期间应保持不变,否则产生操作错误。 另外一种由 3 个基本触发器构成的是 D 型触发器,它属于边沿触发方式。输入信号 D 在触发脉冲 CP 的正跳变沿期间被写入触发器,其它时间 D 的变化不会影响触发器的状态。 /Q Q D 型触发器又被称为延时触发器,常用于构建寄存器,移位寄存器,计数器等部件。 输入信号 /SD 和 /RD用于触发器的清 0 和置 1操作。 与非1 与非2 与非5 与非3 与非4 与非6 /SD /RD D CP
D触发器的写入过程 输出Q (维持阻塞原理介绍) /Q CP 输入D D 是输入,可经过门5、门5和门6把 /D 和 D这2个互补值分别送到门3、门4的输入端; CP 是触发脉冲,也接到门3、门4的输入端,在脉冲的上升边沿启动写入操作。例如当D为高电平时,在门4的输出将得到一个负跳变跟随低电平,这个变化将把 D 的值写入门1和门2构成的触发器中。由于门3的输入/D处于低电平,门3的输出将处于高电平,不会对触发器产生作用。 输出Q /Q 与非门1 与非门2 与非门3 与非门4 CP 与非门5 与非门6 输入D 若写入操作已经启动,即门4的输出已经为低电平,即使输入信号D发生了变化且门5和门6的输出将跟着变化,但这不会对已经启动的写入操作产生影响。这是因为门4输出的低电平将阻赛门3的输出为低,将维持门6的输出为高电平,能确保本次写入正常完成。这表明D触发器有一个重要功能,在接收输入的同时可以把自己原有输出送出去,可用于实现移位、计数功能。
寄存器、计数器 移位寄存器还多出了左右移位操作的功能。 寄存器是计算机中的重要部件,用于暂存指令和数据等,通常选用多个可同时读写的 D 触发器或锁存器组成。一个寄存器所使用的触发器的数目被称为寄存器的位数,例如 4位、8位等;从使用的角度,还可以通过另外几个控制信号,控制寄存器是否可以接受输入,输出的是正常逻辑电平还是高阻态,是否具有清 0 寄存器内容的功能。 移位寄存器还多出了左右移位操作的功能。 计数器是计算机和数字仪表中经常使用的一种电路,按时钟作用方式,可以分为同步和异步两大类,其中同步计数器线路略复杂但性能更好,用于脉冲分频和需要计数的场合,例如二进制或十进制计数。
Vcc 时钟 OE GND SN74LS374寄存器,8个输入引脚,8个输出引脚,在OE (管脚1) 控制下,输出可为正常电平(OE为低时)或高阻态(OE为高时),在时钟信号的正跳边沿接收输入。 SN74LS377寄存器,引脚定义同上,管脚 1 信号名为G,控制寄存器可(G为低时)可接受输入,或不能(G 为高时)接收输入,输出不能控制。 SN74LS273寄存器,引脚定义同上,管脚 1 信号名为 CR, CR为低时完成对寄存器的清 0 操作,CR为高时,在时钟信号的正跳边沿接收输入,输出不能控制。
多位ALU(加、与) 组合逻辑和时序逻辑 线路应用举例 结果S 二选 一 二选 一 加运算: 减运算: 与运算: 被加数寄存器X 功能选择信号 进位输出C 最低位进位C0 多位ALU(加、与) 加法送0,减法送1 增加锁存功能 二选 一 二选 一 加减、与运算 X→ALU 加减、与运算 Y→ALU 减运算 /Y →ALU 1 输出端 加运算: X→ALU, Y→ALU,C0=0 S→X 减运算: X→ALU, /Y→ALU,C0=1 与运算: X→ALU, Y→ALU,S→X 1 输出端 0 输出端 被加数寄存器X 加数 寄存器Y CP 每位一个 接收控制信号 S→X 组合逻辑和时序逻辑 线路应用举例
阵列逻辑电路 阵列逻辑电路是指逻辑元件在硅芯片上以阵列形式排列的器件,它占用芯片面积小,成品率高,用户可编程,使用灵活。 阵列逻辑电路包括存储器(RAM,ROM),可编程逻辑阵列(PLA),可编程阵列逻辑(PAL),通用阵列逻辑(GAL),可编程门阵列(FPGA),可编程宏单元阵列(PMA)。除RAM和ROM外,其它几种电路统称可编程逻辑器件(programmable logic devices,PLD)。 教学计算机中选用了GAL20V8 和高集成度的多个PAL 电路组成的 MACH芯片,将在后续部分进一步介绍,它们可以实现组合逻辑电路或者时序逻辑电路的功能,都由“与”和“或”两级阵列和触发器线路组成。
5. 存储器芯片RAM和ROM RAM 和 ROM 是典型的阵列逻辑电路,都由 “与”和“或”两级阵列组成,其中的与阵列组成地址译码器,它给出全部地址输入的最小项,用户不可编程,用于选择被读写的存储器单元,或阵列组成存储体,保存写入存储器中的内容。 RAM 和 ROM 的区别:前者对或阵列中的内容可以读写,后者或阵列中的内容主要用于读出,对写操作可能不支持,或者需经过特殊的办法才能执行。 有关存储器芯片的知识,将在介绍存储器的章节中重点讲解,无需在这里对线路部分多加说明,而后面的 GAL20V8 、MACH-4 和 FPGA器件的有关知识不属于本课程的重点内容,只在这里作简要说明。
6. 通用阵列逻辑GAL 通用阵列逻辑 (generic array logic,GAL) 器件,是一种可以电擦出、现场可重复编程、使用灵活的简单 PLD。 它的内部结构包括:输入门,输出三态门,与门阵列,输出逻辑宏单元(内含或阵列),从输出反馈到输入的控制门等。GAL20V8 器件最多支持 20 个输入引脚、8 个输出引脚,支持组合逻辑和时序逻辑两种运行方式,输出有三态、极性可控,支持内部信息加密保护。 在教学计算机中,用于实现那些逻辑内容经常需要变化的组合逻辑的功能,或者经常需要变化的时序逻辑的功能,或者在不同需求环境下,需要在组合逻辑和时序逻辑之间进行切换的线路部分,特别适用于实现由“与-或”两级逻辑完成的线路功能。在实验指导书中对该器件使用方法有更多说明。 对适应变换设计、减少器件类型和数量等方面作用明显。
A= ? A:= 与 A.OE= 阵 列 A= ? /A:= 8 个输出逻辑宏单元,每个宏最多由8个或项支持(项阵列) 并对应一个输出引脚。 引脚1,CLK/I0 引脚13,OE/I11 A= ? A:= 8 个输出逻辑宏单元,每个宏最多由8个或项支持(项阵列) 并对应一个输出引脚。 还有 4 个多路选择器,一个触发器,一些门等线路,用于 1、输出逻辑控制 (组合逻辑 ?时序逻辑) 2、输出允许控制 (正常电平 ?高阻态) 3、反馈源选择控制, (反馈是指是否把输出送到与阵列,若有反馈,本位?邻位) 4、输出极性选择控制 (输出高电平有效 ?低电平有效) 与 阵 列 输 出 三 态 门 A.OE= 64个与项 8 个输出引脚 12个输入引脚 引脚 2,3,4, 5, 6, 7,8,9,10,11 引脚15,16, 17,18,19, 20,21,22 A= ? /A:=
用 GAL20V8 芯片实现 组合逻辑的三_八 译码器的功能 PLD20V8 SHLR Generate Am2901 Shift and Carry Signals 1 2 3 4 5 6 7 8 9 10 11 12 NC NC C B A G1 G2A G2B NC NC NC GRD NC NC Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 NC Vcc /Y0 = G1*/G2A*/G2B * /C * /B * /A /Y1 = G1*/G2A*/G2B * /C * /B * A /Y2 = G1*/G2A*/G2B * /C * B * /A /Y3 = G1*/G2A*/G2B * /C * B * A /Y4 = G1*/G2A*/G2B * C * /B * /A /Y5 = G1*/G2A*/G2B * C * /B * A /Y6 = G1*/G2A*/G2B * C * B * /A /Y7 = G1*/G2A*/G2B * C * B * A DESCRIPTION 三_八 译码器的功能描述 C B A K Y0 Y1 … Y6 Y7 X X X 0 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 其中的K= G1*/G2A*/G2B 采用输出低电平有效方式书写逻辑表达式
时序逻辑电路的例子 用 GAL20V8 芯片实现 8 位的寄存器功能 PLD20V8 Simulate Register SN74LS377 1 2 3 4 5 6 7 8 9 10 11 12 CLK NC I0 I1 I2 I3 I4 I5 I6 I7 NC GRD OE NC Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 NC Vcc Q0 := I0 Q1 := I1 Q2 := I2 Q3 := I3 Q4 := I4 Q5 := I5 Q6 := I6 Q7 := I7 ;第 1 引脚用于送入时钟(脉冲)信号 DESCRIPTION ;第13引脚 OE 信号送入低电平,保证输出信号有效
3位选择码 状 态 位 输 入 说 明 时序逻辑 SST 编码 C Z V S 0 0 0 C Z V S 四个标志位的值保持不变 3位选择码 状 态 位 输 入 说 明 SST 编码 C Z V S 0 0 0 C Z V S 四个标志位的值保持不变 0 0 1 CY ZR OVR F15 接收ALU的标志位输出的值 0 1 0 内部总线对应的一位 恢复标志位原来的现场值 0 1 1 0 Z V S 置"0"C,另三个标志位不变 1 0 0 1 Z V S 置"1"C,另三个标志位不变 1 0 1 RAM0 Z V S 右移操作,另三个标志位不变 1 1 0 RAM15 Z V S 左移操作,另三个标志位不变 1 1 1 Q0 Z V S 联合右移,另三个标志位不变 时序逻辑 4个触发器的接收输入控制, 从 8 个可能的输入中选择接收其一。 PLD20V8 STR( FLAG GAL 20V8B) 2000.4.19 Generate Program Status Word 1 2 3 4 5 6 7 8 9 10 11 12 CLK SST2 SST1 SST0 IB15 IB14 IB13 IB12 Cy ZR OV GND OE F15 NC C0 C Z V S Q0 RAM0 RAM15 Vcc C := /SST2 * /SST1 * /SST0 * C Z := /SST2 * /SST1 * /SST0 * Z + /SST2 * /SST1 * SST0 * Cy + /SST2 * /SST1 * SST0 * ZR + /SST2 * SST1 * /SST0 * IB15 + /SST2 * SST1 * /SST0 * IB14 + SST2 * /SST1 * /SST0 + /SST2 * SST1 * SST0 * Z + SST2 * /SST1 * SST0 * RAM0 + SST2 * Z + SST2 * SST1 * /SST0 * RAM15 + SST2 * SST1 * SST0 * Q0 V:= …. s:= …. DESCRIPTION 13 引脚 OE 信号给低电平,使触发器输出有效
/Reset 时序状态图,用触发器线路实现 1000 PC 0 0000 0011 AR PC PCPC+1 寄存器之间 运算与传送 A B 0010 IR(AR) 0110 0100 ① AR地址 ② 读、写内存 或 I/O 接口 B、D B、C、D ③ ④ C D 0111 0101 读、写内存 AR地址 ⑤ 读、写内存 PC地址
对上图 中的每个符号及其含义进行必要说明。 图中的每一个方框,代表指令的一个执行步骤,即时序状态中的一个状态,方框内部的文字,用于简要说明在该状态中计算机应该完成的主要操作功能,暂不必理会其内容。 每个方框左上角的 4 位数字,是 4个触发器T3~T0电路的输出信号的值,作为这个状态的编码,用来标示不同的状态。方框之间的带箭头的连线表示状态的转换次序和方向。 箭头线旁边有文字说明的,表示从当前状态转换为下一个状态的条件,没有文字说明的,表示无条件地从当前状态转换为下一个状态。例如,当有/RESET信号时,将使系统进到用1000标示的状态,下一步将无条件地进到用0000标示的状态,再下一步将无条件地进到用0010标示的状态。在当前状态为0010时,将依据外部条件信号是A还是B、C、D分别进入用0011和0110标示的不同状态,如此等等。这里总计有9个不同的状态,按照给出的条件在这些状态之间进行转换。
用什么样的线路可以实现这些状态之间的转换呢? 在上述状态转换图中, T3 在只在最左上角的状态中取值为 1,在其他状态中都为0,故其表达式为:T3:= /RESET; T2 在4个状态(0110、0100、0111、0101)中取值为 1,分别是在外部信号为B、C、D(即/A)时从状态0010变换过来,在外部信号为 B、D时从状态0110变换过来,在外部信号为 C 时从状态0110变换过来,无条件地从状态0111变换过来,表达式为: T2 := RESET * /T3 * /T2* T1 * /T0 * /A + RESET * /T3 * T2* T1 * /T0 * B + RESET * /T3 * T2* T1 * /T0 * D 化简为: + RESET * /T3 * T2* T1 * /T0 * C RESET * /T3 * T2* T1 * /T0 + RESET * /T3 * T2*/T1 * /T0 * D + RESET * /T3 * T2* T1 * T0 ① ② ③ ④ ⑤ := 为时序逻辑赋值符,赋值符左面的为触发器下一状态,赋值符右侧的 为触发器当前状态。赋值符两侧的同一个Ti 在时间上是不同的。
7. 复杂的可编程逻辑器件CPLD:MACH器件 MACH (macro array CMOS high-density) 是一种复杂的、电可擦出的、现场可编程逻辑器件 CPLD。 它的内部结构由多个 PAL 块和一个中央开关矩阵互连而成。每个 PAL 块内又含多个宏单元(输出宏单元和隐埋宏单元),中央开关矩阵为 多个PAL 块的信号输入和块间通信提供通路。在实验指导书中对该器件结构有更详细地介绍。 与 GAL20V8 芯片相比,MACH有更多的输入输出引脚和更多的宏单元,支持的逻辑功能更加强大,使用更加方便,还支持在线编程(在电路板上直接写入信息)。在教学计算机中,主要作为组合逻辑控制器的时序控制信号形成部件,用于提供基本指令用到的全部控制信号,也可以把扩展指令使用的控制逻辑添加进去。 对MACH编程要使用功能更强大的工具软件(VHDL或ABEL),可以在表达式源码中使用括号,允许定义宏,书写逻辑表达式更方便,结果更简明,可读性更好。
8. 可在线编程门阵列器件FPGA 这是一种与 PLD 器件在内部结构、功能特性方面都不相同的器件。其内部由许多个独立的可编程逻辑模块 CLB、输入输出模块 IOB 和互连资源 IR 3部分组成。 与 IOB 连接的输入输出引脚更多,大部分入出引脚支持三态逻辑,极性可控,可指定用于输入或输出; 每一个 CLB 的内部都包含一些组合逻辑电路和 1 或 2 个触发器电路,能编程实现不同的组合、时序逻辑线路功能。 内部互连资源由金属线、开关阵列和可编程连接点组成,用于连接众多的 CLB 和 IOB ,以构成不同的复杂系统。 FPGA 芯片的工作状态(提供的逻辑功能)存储在内部的查找表中,这些数据要存在片外的 EPROM 器件中,每次重新加电后都要重新装入。 FPGA 芯片集成度更高,功能更强大,但对决定内部功能的数据不能加密,各信号的延迟时间不是固定的,需要注意。 要选用 VHDL 语言描述芯片内准备实现的功能,需要使用更复杂的编译、优化和综合软件,将功能描述语句转化成线路逻辑,即变成可以写入芯片内的信息格式。 可以用单一 FPGA 芯片实现 CPU 的功能。
--在FPGA芯片中实现的节拍发生器电路的VHDL语言程序源代码 time_keeper:process(clock,reset) --节拍发生器电路 --实现有限状态机的状态转换功能 begin --提供指令执行的步骤标记信号 if (reset=‘1’) then timing<=“100”; --若是系统总清操作 --则进入等待启动的过程 elsif rising_edge(clock) then --否则系统进入正常运行状态, case timing is when "000"=>timing<="001"; --取指周期 when "001"=> if (ir_inter(15)='1') and ((ir_inter(8)='1') --执行周期 or (ir_inter(11 downto 8)="1110") or (ir_inter(14 downto 8)="1100000")) then timing <="011"; else timing<="000"; end if; when "011"=>timing<="000"; --内存读写周期 when others=>timing<=“000”; --非预期周期 end case; end process time_keeper;