- 2021-03-01 发布 |
- 37.5 KB |
- 142页
申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
电子技术基础数字部分第六康华光组合逻辑电路共节
4 组合逻辑电路 4.1 组合逻辑电路的分析 4.2 组合逻辑电路的设计 4.3 组合逻辑电路中的竞争和冒险 4.4 若干典型的组合逻辑电路 4.5 组合可编程逻辑器件 4.6 用 Verilog HDL 描述组合逻辑电路 教学基本要求 1. 熟练掌握组合逻辑电路的分析方法和设计方法 2. 掌握编码器、译码器、数据选择器、数值比较器和加法器的逻辑功能及其应用; 3. 学会阅读器件的功能表,并能根据设计要求完成电路的正确连接。 4. 掌握可编程逻辑器件的表示方法 , 会用 PLD 实现 组合逻辑电路 组合逻辑电路的一般框图 L i = f ( A 1 , A 2 , …, A n ) ( i=1 , 2, …, m) 工作特征 : 组合逻辑电路工作特点 : 在任何时刻,电路的输出状态只取决于同一时刻的输入状态而与电路原来的状态无关。 4.1.1 组合逻辑电路的定义 结构特征 : 1 、输出、输入之间没有反馈延迟通路, 2 、不含记忆单元 4.1 组合逻辑电路分析 二 . 组合逻辑电路的分析步骤: 1 、 由逻辑图写出各输出端的逻辑表达式; 2 、 化简和变换逻辑表达式; 3 、 列出真值表; 4 、 根据真值表或逻辑表达式,经分析最后确定其功能。 根据已知逻辑电路,经分析确定电路的逻辑功能。 一 . 组合逻辑电路分析 4.1.2 组合逻辑电路的分析方法 三、组合逻辑电路的分析举例 例 1 分析如图所示逻辑电路的功能。 1. 根据逻辑图写出输出函数的逻辑表达式 2. 列写真值表。 1 0 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 C B A 0 0 1 1 1 1 0 0 3. 确定逻辑功能: 解: 输入变量的取值中有奇数 个 1 时, L 为 1 ,否则 L 为 0, 电路具有为奇校验功能。 如要实现偶校验,电路应做何改变? 例 2 试分析下图所示组合逻辑电路的逻辑功能。 解: 1 、根据逻辑电路写出各输出端的逻辑表达式,并进行化简和变换。 X = A 2 、列写真值表 X = A 真值表 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 Z Y X C B A 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 这个电路逻辑功能是对输入的二进制码求反码。最高位为符号位, 0 表示正数, 1 表示负数,正数的反码与原码相同;负数的数值部分是在原码的基础上逐位求反。 3 、确定电路逻辑功能 真值表 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 Z Y X C B A 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 1 、逻辑抽象:根据实际逻辑问题的因果关系确定输入、输出变量,并定义逻辑状态的含义; 2 、 根据逻辑描述列出真值表; 3 、 由真值表写出逻辑表达式 ; 4 、 简化和变换逻辑表达式,画出逻辑图。 二、组合逻辑电路的设计步骤 一、组合逻辑电路的设计:根据实际逻辑问题,求出所要求逻辑 功能的最简单逻辑电路。 4.2 组合逻辑电路的设计 4.2.1 组合逻辑电路的设计过程 例 1 某火车站有特快、直快和慢车三种类型的客运列车进出,试设计一个指示列车等待进站的逻辑电路,当有两种或以上的列车等待进站时,要求发出信号,提示工作人员安排进站事宜。 解:( 1 ) 逻辑抽象 。 输入信号 : A 、 B 、 C 分别表示特快、直快和慢车,且有进站请求时为 1 ,没有请求时为 0 。 输出信号 : L 表示进站状况,有两种以上的车进站为 1 ,否则为 0 。 ( 2 )根据题意列出真值表 (3) 写出输出逻辑表达式 , 并化简。 输 入 输 出 A B C L 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 L = AB+AC+BC (4) 根据输出逻辑表达式画出逻辑图。 表达式为最简与或式,用与门和或门实现两级“与 - 或”结构的最简电路如图。 例 2 试设计一个码转换电路,将 4 位格雷码转换为自然二进 制码。可以采用任何逻辑门电路来实现。 解: (1) 明确逻辑功能,列出真值表。 设输入变量为 G 3 、 G 2 、 G 1 、 G 0 为格雷码, 当输入格雷码按照从 0 到 15 递增排序时, 可列出逻辑电路真值表 输出变量 B 3 、 B 2 、 B 1 和 B 0 为自然二进制码。 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 B 3 B 2 B 1 B 0 G 3 G 2 G 1 G 0 输 出 输 入 1 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 B 3 B 2 B 1 B 0 G 3 G 2 G 1 G 0 输 出 输 入 逻辑电路真值表 (2) 画出各输出函数的卡诺图,并化简和变换。 3 3 G B = = 2 B + 2 G 3 G 2 G 3 G + 2 G 3 G 1 B = 1 G + 2 G 3 G 1 G 2 G 3 G 1 G + 2 G 3 G 1 G =( 2 G 3 G ) + 2 G 3 G 1 G + 2 G 3 G ) + 2 G 3 G 1 G = Å 3 G 2 G Å 1 G 0 B = Å 3 G 2 G Å 1 G Å 0 G (3) 根据逻辑表达式,画出逻辑图 用异或门代替与门和或门能使逻辑电路比较简单。考虑相同乘积项 可以减少门电路数目,降低实现电路的成本。 1 、单输出电路 相同输入端的与非门比与门或者或门所用晶体管少,速度快。图 (b) 电路最优 用指定芯片中特定资源实现逻辑函数,使电路的成本低并且工作速度快。因此需要对逻辑表达式进行变换,以减少芯片资源的数目和连线。 4.2.2 组合逻辑电路的优化实现 2 、多输出电路 (a) 如果分别实现两个逻辑函数,需要 6 个与门和两个或门。 (b) 如果考虑相同乘积项,需要 4 个与门两个或门,如图。 输出多个逻辑函数时需要考虑共享相同乘积项,减少逻辑门数目。 3 、多级逻辑电路 用与门、或门实现时,限定逻辑门的扇入数为 3 ,需要变换成: 当限定逻辑门输入端数目,则需要进行逻辑变换。 ( 1 )提取公因子 图 (a) 电路为 2 级,图 (b) 为 3 级,但电路连线减少了。图 (a)16 根连线,图 (b)13 根。 用与门、或门实现时,限定逻辑门的扇入数为 3 ,需要变换成: ( 2 )函数分解 图 (a) 电路为 2 级,图 (b) 为 5 级。 上述变换方法只适合手工化简,当变量数很多时,优化策略写入程序由计算机完成。 4.3 组合逻辑电路中的竞争冒险 4.3.1 产生的竞争冒险的原因 4.3.2 消去竞争冒险的方法 4.3 组合逻辑电路中的竞争冒险 4.3.1 产生的竞争冒险的原因 不考虑门的延时时间,且 B = A 考虑门的延时时间,且用非门实现 B = A 时 竞争 : 当一个逻辑门的两个输入端的信号同时向相反方向变化,而变化的时间有差异的现象。 冒险 : 两个输入端的信号取值的变化方向是相反时,如门电路输出端的逻辑表达式简化成两个互补信号相乘或者相加, 由竞争而可能产生输出干扰脉冲的现象。 4.3.2 消去竞争冒险的方法 1. 发现并消除互补变量 B = C = 0 时 为消掉 AA ,变换逻辑函数式为 ) )( ( C A B A L + + = 可能出现竞争冒险。 A A F = BC B A AC F + + = A B C L 2. 增加乘积项 , 避免互补项相加 当 A=B =1 时,根据逻辑表达式有 C B AC L + = 当 A=B =1 时 C B AC L + = C B AC L + = + AB C C L + = AB 0 1 A 0 0 0 1 0 1 1 1 L B C 00 01 11 10 3. 输出端并联电容器 如果逻辑电路在较慢速度下工作,为了消去竞争冒险,可以在输出端并联一电容器,致使输出波形上升沿和下降沿变化比较缓慢,可对于很窄的负跳变脉冲起到平波的作用。 4~20pF 4.4 若干典型的组合逻辑电路 4.4.1 编码器 4.4.2 译码器 / 数据分配器 4.4.3 数据选择器 4.4.4 数值比较器 4.4.5 算术运算电路 1 、编码器 (Encoder) 的定义与分类 编码:赋予二进制代码特定含义的过程称为编码。 如: 8421BCD 码中,用 1000 表示数字 8 如: ASCII 码中,用 1000001 表示字母 A 等 编码器:具有编码功能的逻辑电路。 4.4.1 编码器 4.4 若干典型的组合逻辑集成电路 能将每一个编码输入信号变换为不同的二进制的代码输出。 如 8 线 -3 线编码器:将 8 个输入的信号分别编成 8 个 3 位二进 制数码 输出。 如 BCD 编码器:将 10 个编码输入信号分别编成 10 个 4 位码输出。 编码器的逻辑功能 : 1 、编码器 (Encoder) 的定义与分类 编码器的分类:普通编码器和优先编码器。 普通编码器:任何时候只允许输入一个有效编码信号,否则输出就会发生混乱。 优先编码器:允许同时输入两个以上的有效编码信号。当同时输入几个有效编码信号时,优先编码器能按预先设定的优先级别,只对其中优先权最高的一个进行编码。 1 、编码器 (Encoder) 的定义与分类 二进制编码器的结构框图 普通二进制编码器 2 、编码器的工作原理 I 0 I 1 Y n - 1 Y 0 Y 1 1 n 2 - I 二进制 编码器 2 n 个 输入 n 位二进 制码输出 (1) 4 线─ 2 线普通二进制编码器 ( 设计 ) 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Y 0 Y 1 I 3 I 2 I 1 I 0 ( 2 )逻辑功能表 编码器的输入为高电平有效。 ( a )逻辑框图 4 输入 二进制码输出 1 1 0 1 1 0 0 0 2 、编码器的工作原理 该表达式是否可以再简化? 上述是将输入的其它 12 种组合对应的输出看做 0 。如果看做无关项,则表达式为 当只有 I 3 为 1 时, Y 1 Y 0 = ? Y 1 Y 0 = 11 无法输出有效编码。 结论:普通编码器不能同时输入两个以上的有效编码信号 I 1 = I 2 = 1 , I 0 = I 1 = 0 时, Y 1 Y 0 = ? Y 1 Y 0 = 11 若有 2 个以上的输入为有效信号? (2.) 键盘输入 8421BCD 码编码器(分析) 代码输出 使能标志 编码输入 输 入 输 出 S 0 S 1 S 2 S 3 S 4 S 5 S 6 S 7 S 8 S 9 A B C D GS 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 该编码器为输入低电平有效,输出高电平有效, GS 为标志位。 2 . 键盘输入 8421BCD 码编码器 功能表 3. 优先编码器 优先编码器的提出: 实际应用中,经常有两个或更多输入编码信号同时有效。 必须根据轻重缓急,规定好这些外设允许操作的先后次 序,即优先级别。 识别多个编码请求信号的优先级别,并进行相应编码的逻辑部件称为优先编码器。 ( 2) 优先编码器线 (4─2 线优先编码器 ) (设计) ( 1 )列出功能表 输 入 输 出 I 0 I 1 I 2 I 3 Y 1 Y 0 1 0 0 0 0 0 × 1 0 0 0 1 × × 1 0 1 0 × × × 1 1 1 高 低 ( 2 )写出逻辑表达式 ( 3 )画出逻辑电路(略) 输入编码信号高电平有效,输出为二进制代码 输入编码信号优先级从高到低为 I 0 I 3 ~ 输入为编码信号 I 3 I 0 输出为 Y 1 Y 0 3 3 2 1 I I I Y + = 3 3 2 1 0 I I I I Y + = 优先编码器 CD4532 的示意框图 2 典型编码器电路 优先编码器 CD4532 功能表 输 入 输 出 EI I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 Y 2 Y 1 Y 0 GS EO 0 × × × × × × × × 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 × × × × × × × 1 1 1 1 0 1 0 1 × × × × × × 1 1 0 1 0 1 0 0 1 × × × × × 1 0 1 1 0 1 0 0 0 1 × × × × 1 0 0 1 0 1 0 0 0 0 1 × × × 0 1 1 1 0 1 0 0 0 0 0 1 × × 0 1 0 1 0 1 0 0 0 0 0 0 1 × 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 为什么要设计 GS 、 EO 输出信号? 用二片 CD4532 构成 16 线 -4 线优先编码器 , 其逻辑图如下图所示,试分析其工作原理。 。 0 0 0 0 0 0 0 当使能端 EI=0 时,无编码输出。 0 。 1 1 0 0 0 0 0 若无有效电平输入 0 1 1 1 哪块芯片的优先级高? 1 若有效电平输入 。 1 0 1 0 0 0 0 若有效电平输入 1 1 1 1 译码器的分类: 译码 : 译码是编码的逆过程,它能将二进制码翻译成代表某一特定含义的信号 .( 即电路的某种状态 ) 1 译码器的定义与分类 译码器 : 具有译码功能的逻辑电路称为译码器 。 唯一地址译码器 代码变换器 将一系列代码转换成与之一一对应的有效信号。 将一种代码转换成另一种代码。 二进制译码器 二 — 十进制译码器 显示译码器 常见的唯一地址译码器: 4.4.2 译码器 / 数据分配器 ( 1 ) 二进制译码器 n 个输入端 使能输入端 2 n 个输出端 设输入端的个数为 n ,输出端的个数为 M 则有 M =2 n 2. 典型译码器电路及应用 2 线 - 4 线译码器的逻辑电路 ( 分析) 0 1 1 1 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 1 × × 1 Y 3 Y 2 Y 1 Y 0 A 0 A 1 E 输出 输 入 功能表 ---- 逻辑符号说明 逻辑符号框外部的 符号,表示外部输入或输出信号 名称,字母上面的 “ —” 号说明该输入或输出是低电平有效。符号框内部的输入、输出变量表示其内部的逻辑关系。在推导表达式的过程中,如果低有效的输入或输出变量 ( 如 ) 上面的 “ —” 号参与运算 ( 如 E 变为 E ) ,则在画逻辑图或验证真值表时,注意将其还原为低有效符号 。 (a) 2 线 -4 线译码器( 74HC139 ) (b) 3 线 -8 线 译码器( 74HC138 ) 逻辑符号 3 线 -8 线译码器( 74HC138 )功能表 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 × × × × × 0 1 1 1 1 1 1 1 1 × × × 1 X × 1 1 1 1 1 1 1 1 × × × × 1 × A 2 E 3 输 出 输 入 A 1 A 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 × × × × × 0 1 1 1 1 1 1 1 1 × × × 1 X × 1 1 1 1 1 1 1 1 × × × × 1 × A 2 E 3 输 出 输 入 A 1 A 0 1 、 译码器的扩展 用 74X139 和 74X138 构成 5 线 -32 线译码器 ~ 3 线 – 8 线译码器的 ~ 含三变量函数的全部最小项。 Y 0 Y 7 基于这一点用该器件能够方便地实现三变量逻辑函数。 2 、用译码器实现逻辑函数。 . . . 当 E 3 =1 , E 2 = E 1 = 0 时 用一片 74HC138 实现函数 首先将函数式变换为最小项之和的形式 在译码器的输出端加一个与非门,即可实现给定的组合 逻辑函数 . 十进 制数 BCD 输入 输 出 A 3 A 2 A 1 A 0 Y 0 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8 Y 9 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 2 0 0 1 0 1 1 0 1 1 1 1 1 1 1 3 0 0 1 1 1 1 1 0 1 1 1 1 1 1 4 0 1 0 0 1 1 1 1 0 1 1 1 1 1 5 0 1 0 1 1 1 1 1 1 0 1 1 1 1 6 0 1 1 0 1 1 1 1 1 1 0 1 1 1 7 0 1 1 1 1 1 1 1 1 1 1 0 1 1 8 1 0 0 0 1 1 1 1 1 1 1 1 0 1 9 1 0 0 1 1 1 1 1 1 1 1 1 1 0 对于 BCD 代码以外的伪码( 1010 ~ 1111 这 6 个代码) Y 0 ~ Y 9 均为高电平。 ( 2 ) 二 – 十进制译码器的真值表 二 – 十进制译码器 功能:将 8421BCD 码译成为 10 个状态输出。 ( 3 ) 显示译码器 1. 七段显示译码器 ( 1 )最常用的显示器有:半导体发光二极管和液晶显示器。 共阳极显示器 共阴极显示器 a b c d f g e 显示器分段布局图 常用的集成七段显示译码器 ----------CMOS 七段显示译码器 74HC4511 显示译码器与显示器的连接方式 LT 1 1 0 1 1 1 1 1 0 0 1 1 1 0 9 1 1 1 1 1 1 1 0 0 0 1 1 1 0 8 0 0 0 0 1 1 1 1 1 1 0 1 1 0 7 1 1 1 1 1 0 0 0 1 1 0 1 1 0 6 1 1 0 1 1 0 1 1 0 1 0 1 1 0 5 1 1 0 0 1 1 0 0 0 1 0 1 1 0 4 1 0 0 1 1 1 1 1 1 0 0 1 1 0 3 1 0 1 1 0 1 1 0 1 0 0 1 1 0 2 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 g f e d c b a 字形 输 出 输 入 十进制或功能 D 3 D 2 D 1 D 0 BL LE CMOS 七段显示译码器 74HC4511 功能表 * * × × × × 1 1 1 锁 存 熄灭 0 0 0 0 0 0 0 × × × × 1 0 × 灭 灯 1 1 1 1 1 1 1 × × × × 0 × × 灯 测 试 熄灭 0 0 0 0 0 0 0 1 1 1 1 1 1 0 15 熄灭 0 0 0 0 0 0 0 0 1 1 1 1 1 0 14 熄灭 0 0 0 0 0 0 0 1 0 1 1 1 1 0 13 熄灭 0 0 0 0 0 0 0 0 0 1 1 1 1 0 12 熄灭 0 0 0 0 0 0 0 1 1 0 1 1 1 0 11 熄灭 0 0 0 0 0 0 0 0 1 0 1 1 1 0 10 LT g f e d c b a 字形 输 出 输 入 十进制或功能 BL LE D 3 D 2 D 1 D 0 CMOS 七段显示译码器 74HC4511 功能表 ( 续 ) 例 由译码器、显示译码及 4 个七段显示器构成的 4 位动态显示电路如图所示,试分析工作原理。 位选择信号 A1 、 A0 控制 依次产生低电平 ,使 4 个显示器轮流显示。要显示的数据组依次送到 D 3 D 2 D 1 D 0 分别在 4 个显示器上显示。利用人的视觉暂留时间,可以看到稳定的数字。 数据分配器:相当于多输出的单刀多掷开关,是将公共数据线上的数据按需要送到不同的通道上去的逻辑电路。 数据分配器示意图 用 74HC138 组成数据分配器 用译码器实现数据分配器 0 1 0 当 ABC = 010 时, Y 2 = D C B A 输 入 输 出 E 3 E 2 E 1 A 2 A 1 A 0 Y 0 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 0 0 X X X X 1 1 1 1 1 1 1 1 1 0 D 0 0 0 D 1 1 1 1 1 1 1 1 0 D 0 0 1 1 D 1 1 1 1 1 1 1 0 D 0 1 0 1 1 D 1 1 1 1 1 1 0 D 0 1 1 1 1 1 D 1 1 1 1 1 0 D 1 0 0 1 1 1 1 D 1 1 1 1 0 D 1 0 1 1 1 1 1 1 D 1 1 1 0 D 1 1 0 1 1 1 1 1 1 D 1 1 0 D 1 1 1 1 1 1 1 H 1 1 D 74HC138 译码器作为数据分配器时的功能表 例 : 试用门电路设计一个具有低电平使能控制的 1 线 – 4 线数据分配器,使能信号无效时,电路所有的输出为高阻态。当通道选择信号将 1 路输入信号连接到其中 1 路输出端时,其他输出端为高阻状态。 输 入 输 出 E S 1 S 0 Y 3 Y 2 Y 1 Y 0 0 0 0 z z z In 0 0 1 z z In z 0 1 0 z In z z 0 1 1 In z z z 1 x x z z z z 1. 列真值表 输出端有 3 种状态( 0 、 1 、 z ),输出级是 4 个三态门组成。其控制信号由 E 、 S1 、 S0 共同作用产生。 2. 写出 4 个三态门控制端的逻辑表达式 3. 画逻辑电路 4.4.3 数据选择器 1 、数据选择器的定义与功能 数据选择的功能:在通道选择信号的作用下,将多个通道的数据分时传送到公共的数据通道上去的。 数据选择器:能实现数据选择功能的逻辑电路。它的作用相当于多个输入的单刀多掷开关,又称 “ 多路开关 ” 。 2 选 1 数据选择器 1 位地址码输入端 逻辑符号 1 路数据输出端 数 据 输 入 端 4 选 1 数据选择器 2 位地址码输入端 逻辑符号 1 路数据输出端 数 据 输 入 端 ( 1 )逻辑电路 由 3 个 2 选 1 数据选择器构成 4 选 1 数据选择器。 ( 2 )工作原理及逻辑功能 真值表 选择输入 输 出 S 1 S 0 Y 0 0 D 0 0 1 D 1 1 0 D 2 1 1 D 3 ( 3 )数据选择器实现逻辑函数 例 4.4.8 试用数据选择器实现下列逻辑函数 ① 用 4 选 1 数据选择器实现 ② 用 2 选 1 数据选择器和必要的逻辑门实现 ① 2 选 1 数据选择器只有 1 个选通端接输入 A ,表达式有 3 个变量。因此数据端需要输入 2 个变量。考察真值表 B 、 C 与 L 1 的关系。 ② 用 2 选 1 数据选择器和必要的逻辑门实现 输 入 输 出 A B C L 1 0 0 0 0 L 1 = BC 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 利用数据选择器实现函数的一般步骤 : (变量数 = 选通端数) a 、将函数变换成最小项表达式 b 、地址 信号 S 2 、 S 1 、 S 0 作为函数的输入变量 c 、处理数据输入 D 0 ~ D 7 信号电平。逻辑表达式中有 m i , 则相应 D i =1 ,其他的数据输入端均为 0 。 总结 : 当变量数 选通端数,考虑如何将某些变量接入数据端。 ( 4 )数据选择器构成查找表 LUT 构成 FPGA 基本单元的逻辑块主要是查找表 LUT 。 LUT 实质是一个小规模的存储器,以真值表的形式实现给定的逻辑函数。 3 输入 LUT 的结构及逻辑符号如图。 存放 0 或 1 的存储单元 用查找表 LUT 实现逻辑函数 用 LUT 实现逻辑函数,变量 A 、 B 、 C 接选择输入端,对存储单元进行编程。 根据前面例题已知 ( 5 )数据选择器、数据分配器与总线的连接 这种信息传输的基本原理在通信系统、计算机网络系统、以及计算机内部各功能部件之间的信息转送等等都有广泛的应用。 74HC151 逻辑符号 D 7 Y Y E 74 HC 151 D 6 D 5 D 4 D 3 D 2 D 1 D 0 S 2 S 1 S 0 ( 6 )集成电路数据选择器 8 选 1 数据选择器 74HC151 输 入 输 出 使 能 选 择 Y Y E S 2 S 1 S 0 1 X X X L H 0 0 0 0 D 0 0 0 0 1 D 1 0 0 1 0 D 2 0 0 1 1 D 3 0 1 0 0 D 4 0 1 0 1 D 5 0 1 1 0 D 6 0 1 1 1 D 7 74HC151 的功能表 当 E =1 时, Y=1 。 当 E =0 时 用两片 74151 组成二位八选一的数据选择器 数据选择器的扩展 位的扩展 字的扩展 将 两片 74LS151 连接成一个 16 选 1 的数据选择器, 1. 1 位数值比较器 ( 设计 ) 数值比较器:对两个 1 位数字进行比较( A 、 B ),以判断其大小的逻辑电路。 输入:两个一位二进制数 A 、 B 。 输出: F B A > =1 ,表示 A 大于 B F B A < =1 ,表示 A 小于 B F B A = =1 ,表示 A 等于 B 4.4.4 数值比较器 1 位数值比较器 B A = F B A > B A = F B A < AB B A + = F B A = 一位数值比较器真值表 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 F A=B F AB B A 输 出 输 入 2 、 2 位数值比较器: 输入:两个 2 位二进制数 A=A 1 A 0 、 B=B 1 B 0 能否用 1 位数值比较器设计两位数值比较器 ? 比较两个 2 位二进制数的大小的电路 当高位 ( A 1 、 B 1 )不相等时,无需比较低位( A 0 、 B 0 ),高位比较的结果就是两个数的比较结果。 当高位相等时,两数的比较结果由低位比较的结果决定。 用一位数值比较器设计多位数值比较器的原则 真值表 0 0 1 0 1 0 1 0 0 A 0 > B 0 A 0 < B 0 A 0 = B 0 A 1 = B 1 A 1 = B 1 A 1 = B 1 0 1 0 × A 1 < B 1 0 0 1 × A 1 > B 1 F A=B F AB A 0 B 0 A 1 B 1 输 出 输 入 F A>B = ( A 1 > B 1 ) + ( A 1 = B 1 )( A 0 > B 0 ) F A=B =( A 1 = B 1 )( A 0 = B 0 ) F AB = ( A 1 > B 1 ) + ( A 1 = B 1 )( A 0 > B 0 ) F A=B =( A 1 = B 1 )( A 0 = B 0 ) F AB I AB F A B 3 × × × × × × 1 0 0 A 3 < B 3 × × × × × × 0 1 0 A 3 = B 3 A 2 > B 2 × × × × × 1 0 0 A 3 = B 3 A 2 < B 2 × × × × × 0 1 0 A 3 = B 3 A 2 = B 2 A 1 > B 1 × × × × 1 0 0 A 3 = B 3 A 2 = B 2 A 1 < B 1 × × × × 0 1 0 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 > B 0 × × × 1 0 0 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 < B 0 × × × 0 1 0 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 = B 0 1 0 0 1 0 0 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 = B 0 0 1 0 0 1 0 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 = B 0 × × 1 0 0 1 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 = B 0 1 1 0 0 0 0 A 3 = B 3 A 2 = B 2 A 1 = B 1 A 0 = B 0 0 0 0 1 1 0 4 位数值比较器 74HC85 的功能 表 用两 片 74HC85 组成 8 位数值比较器(串联 扩展方式)。 4 、集成数值比较器的位数扩展 输入 : A= A 7 A 6 A 5 A 4 A 3 A 2 A 1 A 0 B= B 7 B 6 B 5 B 4 B 3 B 2 B 1 B 0 输出 : F B A > F B A < F B A = 高位片 输出 低位片 B 3 A 3 ~B 0 A 0 B 7 A 7 ~B 4 A 4 用两 片 74HC85 组成 16 位数值比较器(串联 扩展方式)。 高位片 输出 低位片 B 3 A 3 ~B 0 A 0 B 7 A 7 ~B 4 A 4 B 11 A 11 ~B 8 A 8 B 15 A 15 ~B 12 A 12 采用串联扩展方式 数值比较器 问题:如果每一片延迟时间为 10ns , 16 位串行比较器延迟时间? 用 7 4HC85 组成 16 位数值比较器的并联扩展方式。 B 3 A 3 ~B 0 A 0 B 7 A 7 ~B 4 A 4 B 11 A 11 ~B 8 A 8 B 15 A 15 ~B 12 A 12 输出 问题:如果每一片延迟时间为 10ns , 16 位并行比较器延迟时间? 4.4.5 算术运算电路 两个 1 位二进制数相加时,不考虑低位来的进位的加法 --- 半加 在两个 1 位二进制数相加时,考虑低位进位的加法 --- 全加 加法器分为半加器和全加器两种。 半加器 全加器 1 、半加器和全加器 ( 1 ) 1 位半加器( Half Adder ) 不考虑低位进位,将两个 1 位二进制数 A 、 B 相加的器件。 半加器的真值表 逻辑表达式 1 0 0 0 C 0 1 1 1 1 0 1 0 1 0 0 0 S B A 半加器的真值表 B A B A S + = 如用与非门实现最少要几个门 ? C = AB 逻辑图 ( 2 ) 全加器( Full Adder ) 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 全加器真值表 全加器能进行加数、被加数和低位来的进位信号相加,并根据求和结果给出该位的进位信号。 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 C S C B A 你能用 7415174138 设计 全加器吗 ? 用这两种器件组成逻辑函数产生电路 , 有什么不同 ? 于是可得全加器的逻辑表达式为 加法器的应用 1 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 全加器真值表 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 C S C B A ABC 有奇数个 1 时 S 为 1 ; ABC 有偶数个 1 和全为 0 时 S 为 0 。 ----- 用全加器组成三位二进制代码 奇偶校验器 用全加器组成八位二进制代码 奇偶校验器,电路应如何连接? ( 1 )串行进位加法器 如何用 1 位全加器实现两个四位二进制数相加? A 3 A 2 A 1 A 0 + B 3 B 2 B 1 B 0 =? 低位的进位信号送给邻近高位作为输入信号,采用串行进位加法器运算速度不高。 2 、多位数加法器 0 定义两个中间变量 G i 和 P i : G i = A i B i ( 2 )超前进位加法器 提高运算速度的基本思想:设计进位信号产生电路,在输入每位的加数和被加数时,同时获得该位全加的进位信号,而无需等待最低位的进位信号。 定义第 i 位的进位信号( C i ): C i = G i + P i C i-1 4 位全加器进位信号的产生: C 0 = G 0 + P 0 C -1 C 1 = G 1 + P 1 C 0 C 1 = G 1 + P 1 G 0 + P 1 P 0 C -1 C 2 = G 2 + P 2 C 1 C 2 = G 2 + P 2 G 1 + P 2 P 1 G 0 + P 2 P 1 P 0 C -1 C 3 = G 3 + P 3 C 2 = G 3 + P 3 ( G 2 + P 2 C 1 )= G 3 + P 3 G 2 + P 3 P 2 C 1 = G 3 + P 3 G 2 + P 3 P 2 (G 1 + P 1 C 0 ) C 3 = G 3 + P 3 G 2 + P 3 P 2 G 1 + P 3 P 2 P 1 ( G 0 + P 0 C -1 ) [ G i = A i B i 由于 C i = G i + P i C i-1 进位信号只由被加数、加数和 C-1 决定,而与其它低位的进位无关。提高了速度,但位数增加时,进位电路复杂度增加。 超前进位产生电路 集成 4 位超前进位加法器 74HC283 74 HC28 3 逻辑框图 3 、超前进位 加法器 74LS283 的应用 例 1. 用两片 74LS283 构成一个 8 位二进制数加法器。 在片内是超前进位,而片与片之间是串行进位。 8421 码输入 余 3 码输出 1 1 0 0 例 . 用 74283 构成将 8421BCD 码转换为余 3 码的 码制转换电路 。 8421 码 余 3 码 0000 0001 0010 0011 0100 0101 +0011 +0011 +0011 CO 4 、减法运算 在实际应用中,通常是将减法运算变为加法运算来处理,即采用加补码的方法完成减法运算。 若 n 位二进制的原码为 N 原 ,则与它相对应的 2 的补码为 N 补 =2 N N 原 补码与反码的关系式 N 补 = N 反 +1 设两个数 A 、 B 相减,利用以上两式 可得 A B = A + B 补 2 n = A + B 反 +1 2 n 1 ) A B 0 的情况。 2 ) A B < 0 的情况 。 当 A–B 0 时,舍弃的进位为 1 ,所得 结果就是差的原码,不需再求反补。 当 A–B < 0 时,舍弃的进位 为 0 ,所得结果是补码,要得到原码需再求补。 A =0101 , B =0010 A = 0001 , B =0101 1 0 0 1 1 0 1 1 0 1 舍弃 舍弃 输出为原码的 4 位减法运算逻辑图 4.5 组合可编程逻辑器件 4.5.1 PLD 的结构、表示方法及分类 4.5.2 组合逻辑电路的 PLD 实现 4.5 组合可编程逻辑器件 可编程逻辑器件是一种可以由用户定义和设置 逻辑功能的器件。该类器件具有逻辑功能实现 灵活、集成度高、处理速度快和可靠性高等特点。 4.5.1 PLD 的结构、表示方法及分类 与门 阵列 或门 阵列 乘积项 和项 PLD 主体 输入 电路 输入信号 互补 输入 输出 电路 输出函数 反馈输入信号 可由或阵列直接输出,构成组合输出; 通过寄存器输出,构成时序方式输出 。 1 、 PLD 的基本结构 与门 阵列 或门 阵列 乘积项 和项 互补 输入 2. PLD 的 逻辑符号表示方法 (1) 连接的方式 (2) 基本门电路的表示方式 F 1 =A•B•C 与门 或门 A B C D F 1 A B C F 1 A B C F 2 D F 2 =A+B+C+D 三态输出缓冲器 输出恒等于 0 的与门 输出为 1 的与门 输入缓冲器 (3) 编程连接技术 PLD 表示的与门 熔丝工艺的与门原理图 V CC + (5V) R 3k W L D 1 D 2 D 3 A B C 高电平 A 、 B 、 C 有一个输入低电平 0V A 、 B 、 C 三个都输入高电平 +5V 5V 0V 5V 低电平 L V CC A B C D 5V 5V 5V L=A•B • C 连接 连接 连接 断开 A 、 B 、 C 中有一个为 0 A 、 B 、 C 都为 1 输出为 0 ; 输出为 1 。 L=AC 断开 连接 连接 断开 L=ABC X X 器件的开关状态不同 , 电路实现逻辑函数也就不同 1 0 1 1 1 1 (4) 浮 栅 MOS 管开关 用不同的浮栅 MOS 管连接的 PLD ,编程信息的擦除方法也不同。 SIMOS 管连接的 PLD ,采用紫外光照射擦除; Flotox MOS 管和快闪叠栅 MOS 管,采用电擦除方法。 浮 栅 MOS 管 叠栅注入 MOS(SIMOS) 管 浮栅隧道氧化层 MOS(Flotox MOS) 管 快闪 (Flash) 叠栅 MOS 管 当浮栅上带有负电荷时,使得 MOS 管的开启电压变高,如果给控制栅加上 V T1 控制电压, MOS 管仍处于截止状态。 若要擦除,可用 紫外线或 X 射线,距管子 2 厘米处照射 15-20 分钟。 当浮栅上没有电荷时,给控制栅加上大于 V T1 的控制电压 , MOS 管导通。 a. 叠栅注入 MOS(SIMOS) 管 25V 25V GND 5V 5V GND i D V T1 V T2 v GS 浮栅无电子 O 编程前 i D V T1 V T2 v GS 浮栅无电子 浮栅有电子 O 编程前 编程后 5V 5V GND 5V 5V GND 导通 截止 L=B•C 连接 连接 断开 断开 连接 连接 断开 断开 浮栅延长区与漏区 N+ 之间的交叠处有一个厚度约为 80A ( 埃 ) 的薄绝缘层 —— 遂道区。 当遂道区的电场强度大到一定程度,使漏区与浮栅间出现导电遂道,形成电流将浮栅电荷泄放掉。 遂道 MOS 管 是用电擦除的,擦除速度快。 b. 浮栅隧道氧化层 MOS(Flotox MOS) 管 结构特点 : 1. 闪速存储器存储单元 MOS 管的源极 N+ 区大于漏极 N+ 区,而 SIMOS 管的源极 N+ 区和漏极 N+ 区是对称的; 2. 浮栅到 P 型衬底间的氧化绝缘层比 SIMOS 管的更薄。 c. 快闪 叠栅 MOS 管开关 ( Flash Memory) (自学) 特点:结构简单、集成度高、 编程可靠、擦除快捷。 3.PLD 的分类 PROM PLA PAL GAL 低密度可编程逻辑器件 ( LDPLD ) EPLD CPLD FPGA 高密度可编程逻辑器件 ( HDPLD ) 可编程逻辑器件 ( PLD ) ( 1 )按集成密度划分为 ( 2 )按结构特点划分 简单 PLD (PAL , GAL) 复杂的可编程器件 (CPLD) : CPLD 的代表芯片如: Altera 的 MAX 系列 现场可编程门阵列 (FPGA) PLD 中的三种与、或阵列 与阵列、或阵列 均可编程 (PLA) 与阵列固定,或阵 列可编程 (PROM) 与阵列可编程,或 阵列固定 (PAL 和 GAL 等 ) ( 3 )按 PLD 中的与、或阵列是否编程分 4.5.2 组合逻辑电路的 PLD 实现 例 1 由 PLA 构成的逻辑电路如图所示,试写出该电路的逻辑表达式,并确定其逻辑功能 。 写出该电路的逻辑表达式: A n B n C n A n B n A n C n B n C n 全加器 A n B n C n A n B n C n A n B n C n 试写出该电路的逻辑表达式。 4.6 用 VerilogHDL 描述组合逻辑电路 4.6.1 组合逻辑电路的行为级建模 4.6.2 分模块、分层次的电路设计 4.6.1 组合逻辑电路的行为级建模 组合逻辑电路的行为级描述一般使用 assign 结构和过程赋值语句、条件语句( if-else )、多路分支语句( case-endcase )和 for 循环语句等。 ( 3 ) if (condition_expr1) true_statement1; else if (condition_expr2) true_statement2; else if (condition_expr3) true_statement3; …… else default_statement; 1 、条件语句( if 语句) 条件语句就是根据判断条件是否成立,确定下一步的运算。 ( 1 ) if (condition_expr) true_statement; ( 2 ) if (condition_expr)true_statement; else fale_ statement; Verilog 语言中有 3 种形式的 if 语句: if 后面的条件表达式一般为逻辑表达式或关系表达式。执行 if 语句时,首先计算表达式的值,若结果为 0 、 x 或 z ,按“假”处理;若结果为 1 ,按“真”处理,并执行相应的语句。 例:使用 if-else 语句对 4 选 1 数据选择器的行为进行描述 注意,过程赋值语句只能给寄存器型变量赋值,因此,输出变量 Y 的数据类型定义为 reg 。 module mux4to1_bh(D, S, Y); input [3:0] D; // 输入端口 input [1:0] S; // 输入端口 output reg Y; // 输出端口及变量数据类型 always @(D, S) // 电路功能描述 if (S == 2’b00) Y = D[0]; else if (S== 2’b01) Y = D[1]; else if (S== 2’b10) Y = D[2]; else Y = D[3]; endmodule 是一种多分支条件选择语句,一般形式如下 case (case_expr) item_expr1: statement1; item_expr2: statement2; …… default: default_statement; //default 语句可以省略 endcase 注意:当分支项中的语句是多条语句,必须在最前面写上关键词 begin ,在最后写上关键词 end ,成为顺序语句块。 另外,用关键词 casex 和 casez 表示含有无关项 x 和高阻 z 的情况。 2 、多路分支语句( case 语句) 例:对具有使能端 En 的 4 选 1 数据选择器的行为进行 Verilog 描述。当 En=0 时,数据选择器工作, En=1 时,禁止工作,输出为 0 。 module mux4to1_bh (D, S, Y); input [3:0] D , [1:0] S ; output reg Y ; always @(D, S, En) //2001, 2005 syntax begin if (En==1) Y = 0; //En=1 时,输出为 0 else //En=0 时,选择器工作 case (S) 2’d0: Y = D[0]; 2’d1: Y = D[1]; 2’d2: Y = D[2]; 2’d3: Y = D[3]; endcase end endmodule module priority(W, Y) input [3:0] W ; output reg [1:0] Y; always @(W) casex (W) 4’b1xxx: Y = 3; 4’b01xx: Y = 2; 4’b001x: Y = 1; 4’b0001: Y =0;; default: begin z = 0; Y=2’bx ; end // W 无效时 ,z=0,Y 为高阻 endcase end endmodule 例:对基本的 4 线 -2 线优先编码器的行为进行 Verilog 描述。 一般形式如下 for (initial_assignment; condition; step_assignment) statement ; initial_assignment 为循环变量的初始值。 Condition 为循环的条件,若为真,执行过程赋值语句 statement ,若不成立,循环结束,执行 for 后面的语句。 step_assignment 为循环变量的步长,每次迭代后,循环变量将增加或减少一个步长。 3 、 for 循环语句 module ecoder3to8_bh(A,En,Y); input [2:0] A , En; output reg [7:0]Y; integer k; // 声明一个整型变量 k always @(A, En) // begin Y = 8’b1111_1111; // 设译码器输出的默认值 for(k = 0; k <= 7; k = k+1) // 下面的 if-else 语句循环 8 次 if ((En==1) && (A== k) ) Y[k] = 0; // 当 En=1 时,根据 A 进行译码 else Y[k] = 1; // 处理使能无效或输入无效的情况 end endmodule 试用 Verilog 语言 描述具有高电平使能的 3 线 -8 线译码器 . 循环 8 次 module mux2x1_df (A,B,SEL,L); input A,B,SEL; output L; assign L = SEL ? A : B; endmodule 例:用条件运算符描述了一个 2 选 1 的数据选择器。 在连续赋值语句中,如果 SEL = 1 ,则输出 L = A ;否则 L = B 。 module mux2x1_df (A,B,SEL,L); input A,B,SEL; output reg Y; always @( D1,D0,S ) // 用 always 语句和条件运算符建模 L = S ? D1 : D0; endmodule module decoder_df (A1,A0,E,Y); input A1,A0,E; output [3:0] Y; assign Y[0] = ~(~A1 & ~A0 & ~E); assign Y[1] = ~(~A1 & A0 & ~E); assign Y[2] = ~(A1 & ~A0 & ~E); assign Y[3] = ~(A1 & A0 & ~E); endmodule 例:用数据流建模方法对 2 线 -4 线译码器的行为进行描述。 4.6.2 分模块、分层次的电路设计 4 位全加器的层次结构框图 分层次的电路设计 : 在电路设计中,将两个或多个模块组 合起来描述电路逻辑功能的设计方法。 设计方法: 自顶向下和自底向上两种常用的设计方法 module halfadder (S,C,A,B); input A,B; output S,C; xor (S,A,B); and (C,A,B); endmodule 半加器的门级描述 module fulladder (S,CO,A,B,CI); input A,B,CI; output S,CO; wire S1,D1,D2; // 内部节点信号 halfadder HA1 (S1,D1,A,B); halfadder HA2 (S,D2,S1,CI); or g1(CO,D2,D1); endmodule D1 S1 D2 全加器的描述 - 调用半加器 module _4bit_adder (S,C3,A,B,C_1); input [3:0] A,B; input C_1; output [3:0] S; output C3; wire C0,C1,C2; // 内部进位信号 fulladder FA0 (S[0],C0,A[0],B[0],C_1), FA1 (S[1],C1,A[1],B[1],C0), FA2 (S[2],C2,A[2],B[2],C1), FA3 (S[3],C3,A[3],B[3],C2); endmodule 4 位全加器的描述 -- 调用 1 位全加器查看更多