学习顺序为:器件与接口条件、门级设计、算术运算模块、编码与译码、数据选择、功能分解、竞争与险象。分析中采用理想逻辑模型或明确规定的延迟模型;实际器件的引脚、供电和时序参数应按对应型号资料核对。
本章学习要求
掌握由功能描述建立真值表与逻辑表达式的方法,理解常用模块的使能、输出极性和级联规则,并能够结合电平兼容性、负载能力与传播延迟评价电路实现。
3.1 逻辑电平与器件电气特性
对应课件第 2—23 页。
逻辑变量只有两个值,而导线上的电压是连续量。真实电路不会要求所有高电平都精确等于某一个电压,而是把一段电压范围解释为高,把另一段解释为低,中间留出未保证的区域。在此约定下,供电或线路存在小幅扰动时,逻辑结果仍可能保持不变。数字电路的抗干扰能力来自这种范围约定,而不是来自电压绝不波动。
器件系列与性能参数
TTL 以双极型晶体管为主要器件;CMOS 使用互补 MOS 管。TTL 与 CMOS 的性能比较必须限定工艺代际、供电、温度和负载条件,不能仅依据逻辑家族作绝对判断。不同器件的速度与功耗需在一致条件下比较。现代 CMOS 器件也可具有很高的工作速度,输入悬空或长时间处于中间电平还可能增加功耗。
以 SN74LS00 为例:SN 是厂商标识,74 是系列,LS 表示低功耗肖特基 TTL,00 表示这一组功能号为二输入与非门。74HC00 的逻辑功能相近,却属于 CMOS 家族,电气参数不因此相同。54 系列通常面向更宽温度范围的军用等级,74 系列常见商用等级;具体温度范围取决于完整型号。ALS 的含义是“先进低功耗肖特基”,不是“高功耗肖特基”。芯片电源脚和地脚的位置应按具体封装引脚图确定。
| 符号 | 含义 | 设计含义 |
|---|---|---|
| VOH(min) | 保证的输出高电平最小值 | 最差条件下的输出高电平下限 |
| VOL(max) | 保证的输出低电平最大值 | 最差条件下的输出低电平上限 |
| VIH(min) | 保证识别为高的输入下限 | 接收端保证识别为高的输入下限 |
| VIL(max) | 保证识别为低的输入上限 | 接收端保证识别为低的输入上限 |
这里的“最小”“最大”是对应指定供电、温度和电流条件的保证边界,不是说每次测得的输出都恰好等于它。VIL 与 VIH 之间的输入不保证按哪一种逻辑解释。一个典型翻转阈值 Vth 也不能代替两端保证值做兼容性判断。
噪声容限与静态电平兼容性
NML = VIL(max) − VOL(max)
高电平传播时需考虑向下的电压扰动,低电平传播时需考虑向上的电压扰动。两个容限均不小于零时,才满足静态电平兼容的基本条件;要容纳噪声,应留有正余量。还必须同时核对电流、供电、绝对最大额定值等条件,单有正噪声容限不等于接口全部合格。
例题:检查一对门的静态接口
设驱动门保证 VOH≥2.7 V、VOL≤0.5 V;接收门要求 VIH≥2.0 V、VIL≤0.8 V。则高容限为 2.7−2.0=0.7 V,低容限为 0.8−0.5=0.3 V。若把接收门改为要求 VIH≥3.5 V 的器件,高容限变成 −0.8 V,驱动端保证的高电平低于接收端要求,不满足静态高电平兼容条件。
扇出、传播延迟与功耗
输出为高时,门向负载提供电流,称为拉电流;输出为低时,门吸收负载送来的电流,称为灌电流。正负号常表示器件手册选用的电流参考方向,计算驱动数量时要比较相同意义下的幅值。若负载都是同一种门,直流扇出近似为:
假设输出高电平允许提供 0.4 mA,每个负载高电平吸收 20 μA,高态可驱动 20 个;低态允许灌入 8 mA,每个负载低态需要 0.4 mA,也可驱动 20 个,故直流扇出上限为 20。若两种计算分别是 20 和 12,就取 12。实际高速接口还受总输入电容、走线电容、边沿速度和时序限制,不能把直流答案当作高速下的保证数量。
传输延迟 tPLH 指输出从低到高对应的延迟,tPHL 指输出从高到低对应的延迟。字母描述的是输出,不是输入。平均值 tpd=(tPLH+tPHL)/2 是粗略比较指标;分析最坏情况的关键路径,应累加实际转换方向下的最大延迟,而不是一律累加平均值。上升时间、下降时间描述同一个边沿自身的快慢,和输入到输出的传输延迟不同。
静态功耗是在稳定逻辑状态下消耗的功率;动态功耗与充放电、短路电流及开关活动有关。CMOS 的一个常见近似是 Pdyn≈αCLVDD2f,其中 α 表示开关活动因子;该式表明负载、频率与供电均会影响动态功耗。速度功耗积 tpdP 的量纲为焦耳,可用于同一条件下的综合比较。
自测:两级门的平均延迟均为 9.5 ns,能否据此确定最坏传播延迟为 19 ns?
不能据此确定。19 ns 是平均延迟相加所得的估计;最坏情况应按该路径每级转换方向对应的最大传播延迟,并考虑负载等规定条件计算。还应以实际信号路径为依据,不能用电路中的门总数代替路径级数。
3.2 输出结构与总线连接
对应课件第 24—39 页。
逻辑符号描述输出的逻辑功能,输出结构决定产生相应电平的电路方式。两者属于不同层面的特性。同一个逻辑功能可以采用不同输出结构,连接方法也会改变。
推挽输出
上拉器件主动提供高电平,下拉器件主动提供低电平。该结构能够主动对负载电容充放电,输出电平明确。两个普通推挽输出不能未经约束直接相连:当一个输出高、另一个输出低时,可能形成从电源到地的低阻通路。逻辑功能相同并不保证切换时刻一致,因此也不能据此直接并联。
OC / OD 输出
OC 为集电极开路,OD 为漏极开路。输出级能主动拉低,却不主动拉高。外接上拉电阻后,任何一个器件导通都把线拉低;全部释放时才由电阻拉高。正逻辑下形成“线与”。这是一种有条件的共享连接方法。
三态输出
有 0、1 和 Z 三种输出状态。Z 表示高阻抗,表示输出级基本退出驱动,不是第三个逻辑值,也不是高电平。共享总线要求同一时刻最多一个输出驱动,其他输出都为 Z;若全部为 Z,总线可能浮空,需要另行确定默认状态。
上拉电阻的选择需同时满足灌电流与恢复时间要求。输出低时电流约为 (VPU−VOL)/R;R 太小,灌电流和功耗可能过大。R 太大,线电容充电慢,高电平恢复时间增加。用 OC/OD 做电平转换还须确认输出引脚可承受上拉电压、输入也兼容该电压。普通推挽输出增加电阻并不必然满足电平转换的电气条件。
例题:三态总线状态判断
两个高有效使能的非反相三态缓冲器接同一根总线,数据分别 D1=1、D2=0。EN1=1、EN2=0 时,输出为 1;两使能均为 0 时,两输出均为 Z,总线电平不能仅由这两只门确定;两使能均为 1 时存在争用,不能按“1 与 0 相与为 0”计算。
高有效使能表示控制输入为 1 时器件工作;低有效使能表示控制输入为 0 时器件工作。符号旁的小圆圈或信号名上的横线提醒该引脚低电平有效。分析功能表时应先判断使能条件,再确定数据对应的输出。正逻辑约定高电平表示 1、低电平表示 0;负逻辑相反。除特别说明,以下采用正逻辑。低有效引脚与负逻辑系统是不同概念。
集成逻辑门的名称可按功能单元数量、与项数量和输入数量逐层解释。例如“双 2 路 2-2 输入与或非门”中,“双”表示两组独立功能单元,“2 路”表示每组有两个与项,“2-2”表示两个与项各有两个输入。不同系列即使同为 51 功能号,其内部输入组合也可能不同。画逻辑图时交点要用实心点表示相连,单纯交叉不默认相连;总线宽度和位序也应标出。
自测:高阻态 Z 与逻辑高电平有何区别?三态总线的使能应满足什么条件?
Z 是不主动驱动,1 是主动维持高电平,两者不同。共享总线中应保证最多一个输出处于驱动状态;不能依赖两路恰好输出相同数据来保证安全,因为切换先后、故障或数据变化都可能产生争用。
3.3 组合逻辑电路的设计与分析方法
对应课件第 40—46、129—131 页。
组合逻辑电路的稳定输出由当前输入决定,没有存储状态。这里的“当前”是理想逻辑模型;真实电路输入变化后要等待传播延迟,输出才稳定。时序逻辑则还与过去形成的状态有关。一般门级组合电路按从输入到输出的无反馈结构构造;不能仅看到若干门就认定它一定是组合电路。
- 定义信号。明确输入和输出的逻辑含义、有效电平、变量编号顺序,以及未使用输入组合是否可能出现。
- 建立模型。列真值表、写算术关系或建立模块框图。互斥条件、无关项及非法输入的处理应在此阶段明确。
- 选择实现方案。小问题可全门级化简;多位运算、译码、数据选择通常适合调用已有模块。表达式最简、器件数量最少与可靠性最优并不必然一致。
- 逐项验证。先用全部输入组合或代表性边界验证功能,再检查使能、极性、级联连接、电平、负载与关键路径。
例题:两位地址选择四路控制信号
输入 B1B0 是 0—3 的二进制地址,要求恰好一条高有效输出 Y0—Y3 为 1。真值表依次为 00→0001、01→0010、10→0100、11→1000,输出串按 Y3Y2Y1Y0 排列。四个输出分别是 Y0=B₁B₀,Y1=B₁B0,Y2=B1B₀,Y3=B1B0。该电路实现高有效 2—4 译码功能。采用低有效器件时,应按输出极性重新确定电平表。
分析电路的顺序相反:给每个中间节点命名,从输入逐级写式,代入得到输出,化简并列真值表,最后概括电路的逻辑功能。例如 Z=A⊕B、F=Z⊕C,可得 F=A⊕B⊕C;当输入 1 的个数为奇数时 F=1,因此它是三输入奇数个 1 判别器。逻辑表达式是分析过程的中间结果,还应根据真值表给出相应的功能说明。
自测:稳定真值表相同的两个电路,其电气与时序特性是否必然相同?
稳定逻辑功能一致,但门级数、扇出、功耗、传播延迟、毛刺及输出结构可能不同。传播延迟、险象及电气特性需要在稳定真值表之外分别分析。
3.4 加法器与进位结构
对应课件第 47—62 页。
半加器与全加器
一位二进制相加时,和的本位与进位不是同一个输出。半加器只处理 A、B:00→和0进0,01或10→和1进0,11→和0进1,因此 S=A⊕B,C=AB。多位相加还要接收低位进位 Ci,这才需要全加器。
Ci+1 = AiBi + AiCi + BiCi
和位为 1 的条件是三个输入中有奇数个 1;进位为 1 的条件是至少有两个 1。后一式是多数表决函数。也可以先用半加器求 P=A⊕B,再把 P 与 Ci 用另一只半加器相加,最后把两个半加器的进位相或。两个中间进位不会同时为 1,因此这种连接准确实现三输入相加。
| A B Ci | 整数总和 | Ci+1 Si |
|---|---|---|
| 000 | 0 | 00 |
| 001 / 010 / 100 | 1 | 01 |
| 011 / 101 / 110 | 2 | 10 |
| 111 | 3 | 11 |
串行进位加法器
将低位进位输出 Ci+1 连接至高一位的进位输入 Ci,可构成串行进位加法器。A、B 各位可以并行输入,但最高位结果可能需要等待低位进位逐级传播后才能确定。位数增加,最坏进位路径变长。
例题:用进位链计算 0111 + 0001
从最低位起:1+1+0=2,写 S0=0、进 C1=1;第二位 1+0+1=2,再写 0 进 1;第三位相同;最高位 0+0+1=1,写 1、最终进位 0,得到 1000。无符号下是 7+1=8;若解释为四位补码,输入为 +7 与 +1,结果却读作 −8,说明发生有符号溢出。全加器算的是位模式,两种解释的溢出标准不同。
超前进位加法器
定义产生项 Gi=AiBi、传播项 Pi=Ai⊕Bi。于是 Ci+1=Gi+PiCi。产生项为 1 时,本位即可独立产生进位;传播项为 1 时,本位能够传播低位进位。
C₂ = G₁ + P₁G₀ + P₁P₀C₀
C₃ = G₂ + P₂G₁ + P₂P₁G₀ + P₂P₁P₀C₀
C₄ = G₃ + P₃G₂ + P₃P₂G₁ + P₃P₂P₁G₀ + P₃P₂P₁P₀C₀
这些表达式直接利用由 A、B 产生的 P、G 与初始 C0,能够并行产生较高位进位,缩短进位链的传播时间。但门扇入、布线和面积增加;位数大时常采用分组超前进位。也有教材把传播项定义为 A+B,在进位方程里同样可用,却不能直接代入 S=P⊕C 的和位式。必须先确认 P 的定义。
四位并行加法器可作为模块使用:A、B 和 C0 输入,S 与 C4 输出。课件使用 7483 家族作例子;不同具体型号的位名与引脚号应单独查表。两片四位加法器组成八位时,低四位的 C4 接高四位的 C0;片内可能采用快速进位,片间这样连接仍是串行传递。片内采用快速进位结构,并不表示片间进位也采用超前结构。
自测:能否根据 0111+0001 的最终进位为 0,断定未发生溢出?
首先应明确输入和输出采用的数值编码。四位无符号范围 0—15,结果 8 可表示,没有无符号溢出;四位补码范围 −8—7,+7+1 超出上限,有有符号溢出。两者不能混用。
3.5 BCD 加法与十进制修正
对应课件第 62—66、72—75、90—92、116—117 页。
8421 BCD 用四位表示一个十进制数字,只允许 0000—1001。二进制四位加法器却按 16 进位,0000—1111 都可能出现。把两个 BCD 数位和一个十进制进位相加,总和 T 在 0—19。二进制加法结果需要进一步转换为合法的十进制数位表示。
- 先做二进制加法 A+B+Cin,得到原始进位 C4 和低四位 S3S2S1S0。
- 判断总和是否至少 10。只要 C4=1,肯定需要十进制进位;当 C4=0 时,低四位大于 9 的判据是 S3(S2+S1)。
- 需要修正时,低四位加 0110;不需要时加 0000。个位输出取修正后的低四位,十进制进位使用修正判据信号 K。
修正加数 = 0 K K 0
十进制进位 C10 = K
修正常数 6 来源于四位二进制模数 16 与十进制数位模数 10 的差。若原始总和为 10—15,加 6 后越过 16,留下 T−10;若原始总和为 16—19,原来的 C4 已经记录一次 16,低四位是 T−16,再加 6 得到 T−10。两种情况都得到合法个位。
例题:8 + 7 + 0
第一级:1000+0111=0 1111,即 C4=0、S=1111。因为 S3=1 且 S2、S1不全为 0,K=1。第二级:1111+0110=1 0101,个位是 0101(5),十进制进位是 1,结果 BCD 为 0001 0101,表示 15。
边界情况:9 + 9 + 1
第一级为 1 0011(19),K=1;第二级低四位 0011+0110=1001,没有新的二进制进位,但十进制进位仍必须为 1。故不能简单把“第二级加法器的进位输出”当作唯一十进制进位;使用 K 最直接。
实验:BCD 加法修正
修正常数 6 来源于四位二进制模数 16 与十进制数位模数 10 的差。若原始总和为 10—15,加 6 后越过 16,留下 T−10;若原始总和为 16—19,原来的 C4 已经记录一次 16,低四位是 T−16,再加 6 得到 T−10。两种情况都得到合法个位。
相同判据可以用不同模块实现:门电路直接实现 K;比较器判断 S>9 再与 C4 相或;译码器枚举使 K 为 1 的组合;MUX 选择合适的数据输入。存在器件种类约束时,应先确定修正函数,再将其映射到允许使用的模块。余 3 码转换为 8421 码也可以用加法器:合法余 3 码减 3,在模 16 运算中等价于加 1101,取低四位。例如余 3 码 1000 表示十进制 5,1000+1101=1 0101,输出低四位 0101。
自测:原始低四位为 0010,能否仅据此判定无需 BCD 修正?
不能,还应考虑第一级进位。总和 2 与 18 的低四位都是 0010;前者不修正,后者 C₄=1,需要修正。K=C₄+S₃S₂+S₃S₁ 保留了这一区别。
3.6 数值比较器及其级联
对应课件第 67—75 页。
比较两个同位宽的无符号二进制数,按最高位到最低位的顺序比较;高位不相等时,低位比较结果不影响最终结论。只有高位相等,低位比较才有意义。令 ei=Ai ⊙ Bi,即同或,表示该位相等。四位相等条件 E=e3e2e1e0。大于条件逐层展开为:
小于式交换 A、B 即可。每个低位判据前面都乘上“所有更高位相等”,这正是自然语言规则的公式化。上述规则适用于无符号比较;若直接把补码符号位当作普通最高数值位,正负数之间的比较可能产生错误,因而需要单独处理符号。
例题:比较 1010 与 1001
最高位 1=1,次高位 0=0,均不能确定大小关系;第三位从高位数起 A1=1、B1=0,所以 A>B。最低位虽是 0<1,也不改变结论。十进制核验为 10>9。
7485 一类比较器通常有 A>B、A=B、A<B 三个级联输入。独立使用时,应给“假想的更低位”设置相等:IG=0、IE=1、IL=0。两片比较八位时,把低四位的三种结果接高四位的级联输入,最终结果取高位芯片的输出。逻辑判断仍然高位优先;线路方向从低片结果传到高片,是因为只有高片本地相等时才需要它。
设计 BCD 四舍五入判据信号:一位十进制数 N≥5 时 R=1,否则为 0。把比较器一侧接 N,另一侧接常量 0100,读 N>4 输出即可。这里输入限定为合法 BCD;若 1010—1111 也可能出现,应另外规定它们的处理,不能自动把它们当正常十进制数位。
自测:八位比较器级联时,能否把高四位结果送入低四位芯片,再直接取低位芯片输出?
对这类以本片位为更高位、级联输入为更低位的比较器,不应这样接。否则可能错误地使低位本地比较结果优先于高位结果。正确方法是低片结果进入高片级联端,取高位芯片输出。
3.7 编码器与优先编码
对应课件第 76 页。
编码器将有效输入线的位置转换为二进制编号。普通 8—3 编码器的前提是同一时刻恰好一条输入有效;三位输出可表示 0—7,无法仅靠编号区分“第 0 条有效”和“无有效请求”。实际电路常额外输出有效标志,或者约定系统保证一位有效。
如果几条输入同时有效,普通编码器的输入约束被破坏;优先编码器则按规定优先级只输出最高优先级请求的编号。例如以 7 号优先级最高,2、5、7 同时请求时输出 7 的编号,而不是把三种编号作或运算。
例题:读 74LS148 的低有效信号
74LS148 是常见八输入优先编码器,输入、使能和编码输出带有低有效约定。设低有效使能端为 0,使器件工作;I5=0、I2=0,其余请求为 1,则有效请求是 5 和 2,5 优先。自然二进制编号 5 是 101;若编码输出采用反码低有效形式,三个实际输出电平为 010。若忽略输出极性而将 010 解释为请求 2,将得到错误结论。课件还标出用于级联的有效输出与使能输出,使用时应逐项对照其完整功能表,不能把两个状态标志当成普通编号位。
相关低有效与优先级规定见 TI SN74LS148 原厂功能表。优先编码器功能表可按以下顺序分析:首先判断使能条件;其次按优先级从高到低确定首个有效输入;随后忽略更低优先级输入;最后结合输出极性与有效标志解释编码结果。在表中“X”常表示该输入在本行不影响结果,不表示实际输入具有第三种稳定电平。
自测:普通编码器与优先编码器在输入约束和处理规则上有何区别?
核心差别是输入约束与多请求处理规则。普通编码器通常要求一位有效;优先编码器允许多条同时有效并选择最高优先级。是否更快取决于具体器件,不能从名称判断。
3.8 译码器与逻辑函数实现
对应课件第 77—93 页。
n—2n 二进制译码器把 n 位地址映射为 2n 个输出之一有效。“有效”可能是高,也可能是低。高有效译码器输出每一个最小项 mi;低有效输出在使能时给出最小项的反。输出极性决定后级逻辑门的选择。
74138 的地址、使能与低有效输出
为避免与厂商端名混淆,本节用 A2A1A0 表示从高到低的地址位。课件的三根使能线可以理解为一根高有效 G1,两根低有效 G₂A、G₂B。当 G1=1 且两根低有效使能脚都接 0 时芯片工作。低有效符号提醒的是“哪种电平有效”,不表示外部连接必须再增加一个反相器。
使能时:yi = mi;禁止时:全部 yi = 1
这里小写 g2A、g2B 表示低有效引脚上实际施加的 0/1 电平,yi 也表示实际输出电平,因此不会在变量名和外部反相之间重复取反。相关使能条件与输出规则见 TI SN74LS138 原厂功能表。地址 101 选择第 5 路时,y5=0,其余为 1;禁止时所有输出都是 1。禁止状态与选中第 0 路具有不同的输出定义。
实验:74138 译码与使能控制
这里小写 g2A、g2B 表示低有效引脚上实际施加的 0/1 电平,yi 也表示实际输出电平,因此不会在变量名和外部反相之间重复取反。相关使能条件与输出规则见 TI SN74LS138 原厂功能表。地址 101 选择第 5 路时,y5=0,其余为 1;禁止时所有输出都是 1。禁止状态与选中第 0 路具有不同的输出定义。
译码器扩展
两片 3—8 构成 4—16:A2A1A0 同时送两片的地址端,最高位 A3 控制互斥使能。A3=0 时只允许低组芯片,输出编号 0—7;A3=1 时只允许高组芯片,输出编号 8—15。可利用 74138 不同极性的使能端形成互斥片选,以减少额外反相器。验证时看两片是否恰好一片使能。
用五个 2—4 译码器构成 4—16 是两级树形结构:第一片译最高两位,选择后级四片中的一片;后级四片都译最低两位,决定各自组内哪条输出有效。若前级输出低有效而后级使能高有效,需要反相或改用适当端口,连接时必须满足前后级的有效电平关系。
用译码器实现任意组合逻辑
高有效输出是 mi,要实现 F=Σm(1,2,4,7),把对应输出送或门。74138 低有效输出是 yi=mi,则由德摩根定律:
所以低有效输出对应的末级应使用与非门,且译码器须处于使能状态。一个译码器可以给多个函数共享最小项,再用不同组合门产生多输出。但共享负载也要满足扇出限制。
例题:用 74138 与与非门实现一位全加器
地址约定 A2A1A0=A B Cin。S 在 001、010、100、111 为 1,即 Σm(1,2,4,7),因此 S=NAND(y1,y2,y4,y7)。进位在 011、101、110、111 为 1,即 Σm(3,5,6,7),因此 Cout=NAND(y3,y5,y6,y7)。用输入 110 核验:选中的 y6=0,只出现在进位门中,因此 S=0、Cout=1,符合 1+1+0=2。
自测:74138 的 y₁、y₂、y₄、y₇ 直接相或,是否等于全加器和位?
不能。使能时这些输出中至少有三根为 1,直接相或通常恒为 1。必须先认识“输出是最小项的反”,再按德摩根定律使用与非门,或先逐路取反后相或。
3.9 显示译码器与数据分配器
对应课件第 93—95 页。
七段显示译码
七段显示器用 a—g 七段构成数字。例如数字 1 需要 b、c 两段点亮,数字 8 需要七段全亮。因此 BCD—七段显示译码器不是一般意义上“十条线中一条有效”的变量译码器,而是把输入代码转换为七条段控制线。常见第八段 dp 是小数点,它通常是单独控制的,不是显示所有数字都必须点亮的段。
共阴极显示器把阴极连接,段端通常加高电平点亮;共阳极把阳极连接,段端通常拉低点亮。还要匹配实际驱动级、电流与限流电阻。若课件的真值表写“1 为亮”,那是其采用的逻辑约定,不能直接套到所有数码管接线。输入 1010—1111 不属于合法单个 BCD 数字,输出可设计成空白、特定符号或其他规定状态;无关项化简仅在系统确实保证不出现这些输入时才合理。
数据分配器的逻辑功能
数据分配器有一条数据输入 D、若干地址线和多条输出。理想高有效 1—4 DEMUX 的输出为 Yi=D·mi(地址)。译码器的“使能”恰好可以承担 D 的作用:D 有效时选中一路,D 无效时所有输出进入非有效状态。若使用低有效译码器,得到的输出极性也随之变化,必须在方程里写出来。
例题:八选一输入再一分八输出
将 I0—I7 中任意一路信号传输至 Z0—Z7 中指定一路,可以先用 8 选 1 MUX 由地址 A 选出数据 D,再把 D 送 1 分 8 DEMUX,由地址 B 选输出去向。A 与 B 独立:A 决定输入通道,B 决定输出通道。如果 DEMUX 非选中输出被定义为 0,当源数据为 0 时,所有输出均可能为 0;该状态仍可符合已规定的通道选择关系。
自测:七段显示译码器有时多段同时点亮,是否违反译码器“一位有效”?
不会。显示译码属于代码转换与显示驱动,不是 n—2ⁿ 变量译码器的一位有效输出模型。真值表的结构应依据器件功能类别确定。
3.10 数据选择器及其应用
对应课件第 96—109 页。
4 选 1 MUX 有四个数据端 D0—D3 和两条地址线 S1S0。地址 00 时输出 D0,01 时输出 D1,10 时输出 D2,11 时输出 D3。数据端传递的是 0/1 或随时间变化的信号,不是“输入编号”。
地址的四个最小项互斥,所以恰好一个数据端被选中。若还有使能,要先按器件功能表处理它;禁止输出可能是固定 0、固定 1 或 Z,不能统称为“没有输出”。课件比较了不同型号 MUX 的三态输出和原反码输出,这些是额外电气/功能特征,不能仅依据数据通道数量推断其余功能。
地址变量覆盖全部函数变量时的实现
例题:8 选 1 实现多数表决
F(A,B,C)=Σm(3,5,6,7),即至少两个输入为 1。令地址 S2S1S0=A B C,将 D3、D5、D6、D7 接 1,其余数据端接 0。对任一地址,MUX 所选择的常量等于相应真值表项的值。地址 101 读取 D5=1,符合 A、C 两个输入为 1。
数据选择器扩展
用两个 4 选 1 和一个 2 选 1 构成 8 选 1:低两位地址同时控制前两只 4 选 1;一只负责 D0—D3,另一只负责 D4—D7;最高位控制末级 2 选 1 选择哪组结果。输入分组与地址位权必须保持一致。
另一种扩展利用三态输出:通过译码使能,让恰好一组 MUX 驱动共享线,其他为 Z。只有器件确实提供三态输出、且使能互斥,才能这样连接。普通推挽 MUX 输出应通过后级选择门合成,不可以直接相连。树形扩展会增加逻辑级数,应将新增传播延迟计入信号路径。
自测:八选一的三个地址位接线顺序换了,数据端仍按原编号接常量,函数是否不变?
通常会改变。最小项编号依赖固定变量顺序。若地址顺序换了,数据表也必须按新映射重排;写清 S₂S₁S₀=ABC 是避免这类错误的关键。
3.11 基于降维法的数据选择器设计
对应课件第 108—117 页。
三变量函数不一定需要 8 选 1。选择其中两变量作 4 选 1 的地址,剩下一变量 X 留在数据端。固定某个地址后,函数只剩关于 X 的一元函数,一共只有四种可能:0、1、X、X。因此,原函数的实现可分解为四个一元余因子的确定。
| 某地址下 F(X=0) | F(X=1) | 该数据端 Di 应接 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | X |
| 1 | 0 | X |
| 1 | 1 | 1 |
例题:4 选 1 实现 F(A,B,C)=Σm(3,5,6,7)
选 A、B 为地址,C 为剩余变量。AB=00 时,看 m0、m1,输出为 0、0,故 D0=0;AB=01 时看 m2、m3,为 0、1,故 D1=C;AB=10 时看 m4、m5,也为 0、1,故 D2=C;AB=11 时看 m6、m7,为 1、1,故 D3=1。于是四路接 0、C、C、1,无需反相器。
降维卡诺图以格内的剩余变量函数表示各地址对应的余因子。原卡诺图里 X=0、X=1 对应的两格值分别为 p、q,合并后填 Xp+Xq。格内标记 C 并非表示 C 的任意取值均对应输出 1;该格表示输出随 C 的取值而变化。
实验:三变量函数的降维实现
降维卡诺图以格内的剩余变量函数表示各地址对应的余因子。原卡诺图里 X=0、X=1 对应的两格值分别为 p、q,合并后填 Xp+Xq。格内标记 C 并非表示 C 的任意取值均对应输出 1;该格表示输出随 C 的取值而变化。
四变量函数的 4 选 1 实现
固定两条地址后,各路 Di 为其余两个变量的函数,需要进一步用门实现。地址变量的选择应兼顾实现可行性与剩余函数的复杂度。若有无关项,可以在不改变所有约束输入的前提下,把它选成能简化数据端的值。不能把已有的 0 擅自改成 1。
例题:课件四变量函数的降维
F(A,B,C,D)=Σm(1,3,5,6,8,9,11,12)+Σd(0,13),选 AB 作地址。逐组按 CD=00、01、10、11 列值:AB=00 为 X,1,0,1,可把 X 取 0,得到 D0=D;AB=01 为 0,1,1,0,得到 D1=C⊕D;AB=10 为 1,1,0,1,得到 D2=C+D;AB=11 为 1,X,0,0,把 X 取 1 可得 D3=C。该方案满足功能要求,但额外器件数量未必最少;若题目限制门种类,应继续比较其他地址选择。
自测:三变量函数改用 4 选 1 后,数据端一定只接 0 或 1 吗?
不一定。每路可能为 0、1、剩余变量 X 或其反。只有地址变量覆盖了全部函数变量时,数据端才可以完全按真值表接常量。
3.12 功能分解与编码转换电路
对应课件第 118—126 页。
当一个大电路直接列真值表会有太多行时,先找出有明确含义的子操作:输入编码转换、核心运算、结果编码转换、异常检测。各子功能均应明确输入、输出及位宽,以便验证整体连接。这是自上而下的功能分解。反过来,从已有电路改造、组合成新系统,是自下而上的构造。两者可以在同一道设计题里交替使用。
符号控制的取反与加一
原码输入 S B3B2B1B0,S 为符号,B 为幅值。把每个幅值位与 S 异或,S=0 时保持原样,S=1 时逐位取反;再加 S,就实现正数不变、负数幅值取反加一的补码变换。符号位单独保留,输出解释为五位补码。
F = (X + S) mod 16
输出补码 = S F₃F₂F₁F₀ (非零负数;原码 −0 需统一处理)
例题:原码 −5 转五位补码
输入 1 0101。S=1,把低四位 0101 异或 1111 得到 1010,再加 1 得到 1011,输出 1 1011,即 11011。用五位补码解释:27−32=−5。若 S=0,低四位不变,进位输入为 0,故 +5 转为 00101。
原码含 +0 和 −0,而补码只需要一种 0。若输入 1 0000,机械地保留符号并只对低四位做模 16 转换,会得到 1 0000,即五位补码 −16,而非 0。因此上述简洁模块默认排除原码 −0,或必须增加零检测,把幅值为 0 的输出符号清零。课件图用于说明方法时省略了这一边界,设计完整电路时不能省略需求。
反码加减运算与循环进位
反码的负数由正数逐位取反得到;反码运算按模 (2n−1) 的方式工作,所以最高位产生的进位要加回最低位,称为循环进位。它与补码“丢弃最高进位”的规则不同。低位进位的连接规则应依据所采用的编码体系确定。
例题:用五位反码计算 7−3 与 3−7
+7=00111,+3=00011,−3 的反码为 11100。00111+11100=1 00011,把最左进位加回低位得 00100,表示 +4。对于 +3+(−7):00011+11000=11011,没有最高进位;最高位为 1,取反得 00100,幅值 4,所以原码结果为 1 0100,表示 −4。
课件把无符号幅值 A、B 的加减分解为 B 的符号控制变换、反码相加及结果转回原码。控制 M=0 表示 A+B,M=1 表示 A−B。减法有最高进位时对应非负结果,循环进位加 1;无最高进位时对应负结果,取反得到幅值。A=B 时可能得到反码的 −0,转回输出时应按设计约定统一为 +0;若保留 −0,也应在输出编码约定中明确。
还要检测输出范围。若输出是符号加四位幅值,加法 A+B>15 不能表示为正的四位幅值,必须给溢出信号或扩位。若题目不处理溢出,必须明确限制输入范围。课件中的相关方案将发生溢出的输入组合作为约束条件。
补码加减器的构造
对于 n 位补码,A−B 等价于 A+B+1。令 B 的每一位与 M 异或,同时 C0=M,便有 M=0 时 A+B、M=1 时 A−B。该结构不采用循环进位,但仍要用符号规则或“符号位入、出进位异或”检测有符号溢出。它与课件的反码方案是两种编码体系,不能把前者的公式混接到后者。
自测:使用取反加一的编码转换电路时,需要明确哪些位宽与零码条件?
应明确取反覆盖哪些位、加法在哪个固定位宽内进行、符号位的处理方式、输入零码是否允许。原码 −0 是检验该模块边界条件的必要输入。
3.13 4×4 无符号乘法器
对应课件第 127—128 页。
无符号 A=A3…A0,B=B3…B0。每一个部分积 pij=AiBj 只需一个与门,权重为 2i+j。四位乘四位共有 16 个部分积,最大结果 15×15=225,需要八位输出。四位输出不足以表示全部合法乘积。
同一权重列有两项时可用半加器;有三项时用全加器,把三位压成一位本列和与一位高列进位。课件展示的典型阵列可用 16 个与门、4 个半加器和 8 个全加器,也可以用全加器替代半加器(未用进位端接 0)。这个数量与特定结构有关,不是所有乘法器电路都唯一采用同样数量。
例题:0011 × 0101
A=3,B=5。B0=1,第一行是 00000011;B1=0,第二行为 0;B2=1,第三行为 A 左移两位即 00001100;B3=0,第四行为 0。相加 00000011+00001100=00001111,即 15。各部分积必须按其权重左移并对齐后相加。
乘法器是功能分解的典型例子:与门产生部分积,全加器归并同权项,最后获得乘积。设计时在每条线上标明权重,有助于检查进位连接的正确性。若改做有符号乘法,最高位是负权,不能直接沿用无符号阵列,需要符号扩展或专门算法。
自测:4×4 无符号乘法器中,部分积数量与结果位宽分别如何确定?
16 是部分积的数量,8 是结果的位宽。多个部分积共享同一权重列,通过相加和进位压缩。最大结果 225 小于 256,八位可表示全部合法结果。
3.14 竞争与静态险象
对应课件第 132—143 页。
逻辑代数默认信号瞬时变化,门没有延迟。真实电路里,同一个变量可能沿不同路径到达输出;路径中的门数、负载和响应不同,就产生竞争。竞争不一定造成错误输出;只有竞争导致不希望的短脉冲时,才出现险象(冒险、毛刺)。不能看到两个路径就断言必定出现某个固定宽度的脉冲,实际是否出现还与延迟大小及门的脉冲响应有关。
| 标准称法 | 应保持的稳定输出 | 异常脉冲 | 课件常用称法 |
|---|---|---|---|
| 静态 1 险象 | 1 → 1 | 中间短暂为 0 | 0 型险象(按错误电平命名) |
| 静态 0 险象 | 0 → 0 | 中间短暂为 1 | 1 型险象(按错误电平命名) |
静态 1 险象与共识项
考虑两级与或实现 F=AB+AC。当 B=C=1 时,逻辑上 F=A+A=1。若 A 从 1 变成 0,直接路径 AB 很快降为 0,而经过非门的 AC 尚未来得及升为 1,两项可能短暂同时为 0,输出出现低脉冲。
BC 是共识项;它不改变稳定真值表,却在 A 切换时提供连续的 1
BC 为冗余项的证明如下。BC=ABC+ABC:第一项已被 AB 覆盖,第二项已被 AC 覆盖,所以加入后稳定函数不变。其在延迟条件下的作用在于:B=C=1 时 BC 恒为 1,不依赖正在切换的 A。因此,对稳定函数冗余的项仍可能对过渡过程中的输出连续性产生作用。
例题:从真值表到无静态险象的与非实现
课件函数 F=Σm(1,2,3,5),变量顺序 ABC。最简与或式是 F=AB+BC。两项在 A=0、C=1、B 切换时出现相同结构,可能有静态 1 险象。加入共识项 AC,得到 F=AB+BC+AC。再用德摩根定律变为与非—与非结构。加入的共识项用于消除相应静态险象,实现时应保留该项。
实验:静态险象与共识项
BC 为冗余项的证明如下。BC=ABC+ABC:第一项已被 AB 覆盖,第二项已被 AC 覆盖,所以加入后稳定函数不变。其在延迟条件下的作用在于:B=C=1 时 BC 恒为 1,不依赖正在切换的 A。因此,对稳定函数冗余的项仍可能对过渡过程中的输出连续性产生作用。
静态险象的卡诺图判别方法
在两级与或电路且每次仅有一个输入改变的条件下,任何两个相邻且输出均为 1 的格子,应至少被同一个与项圈覆盖,才能避免这对转换对应的静态 1 险象。若相邻 1 格只属于两个不同圈,且不存在共同的乘积项覆盖时,相应转换可能产生静态险象。判别依据是相邻转换是否被某个稳定项连续覆盖,不能仅依据圈之间的几何接触作结论。
对两级或与实现,相应检查相邻的 0 格是否由同一个和项覆盖,处理静态 0 险象。例 F=(A+B)(A+C),当 B=C=0 时逻辑输出恒为 0,可增加共识和项 (B+C),形成 F=(A+B)(A+C)(B+C)。这些保证有明确结构与单输入切换条件,不能直接推广为任意多级电路的无险象保证。
自测:能否依据任意等价化简式的卡诺圈,判断原电路是否存在险象?
不能。险象与具体实现及路径有关。分析已经给定的电路时,应按它实际的项和连接分析;一个稳定函数可以有多种等价实现,它们的延迟行为不同。
3.15 功能险象与动态险象
对应课件第 144—151 页。
多输入变化与中间状态
静态险象的经典分析一次只让一个输入变化。若多个输入在系统意图上同时变化,真实导线仍可能有先后次序,电路会经过中间输入组合。只要函数对某个中间组合的规定输出与起点、终点不同,即使所有门都没有内部竞争,也可能观察到脉冲。此类现象称为功能险象。
例题:二选一 MUX 的输入转换
F=D0A+D1A。按 D0D1A 编号,从 011 变到 110,起点和终点输出都为 1。变化的是 D0 与 A。若 D0先变,路径 011→111→110,F 为 1→1→1;若 A 先变,路径 011→010→110,F 为 1→0→1。输入组合 010 对应的函数值已规定为 0,因此不能通过增加一个保持原真值表不变的冗余项,把该中间状态输出改成 1。
列转换路径时,也不能让某个输入位在一次理想单调变化中发生重复切换。若每个改变位只切换一次,路径应只按这些位的先后排列。要分析按键抖动、振铃或多次变化,需要另外规定相应的输入模型。
功能险象的处理方法
- 选通或寄存。等组合输出稳定之后再打开有效信号,或在满足时序约束的时钟边沿采样。前提是给足最坏传播时间及建立、保持时间。
- 控制编码和转换协议。在适合的场景里使相邻状态只改变一位,例如使用格雷码,降低多位同时变化的风险;它不自动保证整个系统所有位置都没有险象。
- 滤波。适当滤波可抑制短脉冲,但会改变边沿与延迟;滤波元件的使用仍须满足驱动、阈值和时序要求。
课件强调功能险象不能靠保持真值表不变的逻辑化简消除。其适用条件为:如果要求在全部中间输入组合上维持原函数,并允许这些多位变化顺序,不能仅靠增加逻辑冗余让不同函数值的中间状态消失;需要改变观察时机、输入变化方式或需求。
动态险象与输入边沿特性
动态险象指输出本应只完成一次 0→1 或 1→0,却在切换中多次翻转。它常见于多级、不等延迟路径。多个输入按不同先后变化也可能造成多次翻转,因此课件末页示例应结合实际输入转换理解,动态翻转的分析必须同时说明输入激励条件。静态险象与动态险象按期望输出是否应变化区分;逻辑竞争与功能竞争按原因区分,两套分类角度不同。
真实输入还有非零上升/下降时间。若互补控制信号的阈值区间不同,某个短时间内可能都不满足预期状态。保证输入边沿、采用合适的施密特触发器、避免悬空、控制时序,是逻辑式之外的工程工作。分析时应区分稳定逻辑功能、单输入切换条件下的静态险象,以及多输入变化引起的中间状态效应。
自测:说明冗余项对静态险象与 011→010→110 功能险象的适用性差异。
静态险象里输入起终点相邻,理论输出应一直不变,冗余路径可以在交接期间维持它。功能险象的中间 010 是一个具有规定输出 0 的输入组合;若仍保持整个真值表,就不能把它改成 1。因此,应通过输入转换约束或输出观察时序处理该问题。
3.16 综合练习
解答时应首先明确输入输出约定,并给出逻辑推导、连接依据与验证过程。
练习 1:用 74138 实现 F(A,B,C)=Σm(0,2,5,7),并说明禁止时的输出
把 A、B、C 按高到低接地址,使能固定为有效。由低有效输出 yi=mi,F=NAND(y0,y2,y5,y7)。例如 ABC=101,只 y5=0,F=1。若译码器被禁止,所有 y=1,末级与非输出为 0。若需求另规定禁止时 F=1,就要增加相应控制,不能沿用这个自然结果。
练习 2:用 4 选 1 MUX 实现三输入异或 F=A⊕B⊕C
选 AB 作地址,逐行固定:00→F=C,01→F=C,10→F=C,11→F=C。所以 D0=C、D1=C、D2=C、D3=C,共享一个非门产生 C。例如 ABC=110,地址 11 读取 C=0,三输入有两个 1,异或为 0,核验正确。
练习 3:BCD 输入 9、8 和进位 1,写出两级加法的全部结果
第一级 1001+1000+0001=1 0010,C4=1,S=0010。K=1,第二级 0010+0110=1000,个位为 8,十进制进位 K=1。BCD 结果为 0001 1000,即 18。第二级没有向外二进制进位,但不能据此丢掉十进制进位。
练习 4:两片四位比较器比较 A=1001 0010、B=1000 1111,解释级联
低片比较 0010<1111,输出低位“小于”;高片比较 1001>1000,本地高位已分出大小,因此忽略低片“小于”,最后 A>B。低片级联输入设等于,高片级联输入接低片三种结果,取高位芯片输出。
练习 5:F=XY+XZ,分析其静态 1 险象产生条件,并给出消除方法。
当 Y=Z=1、X 切换时,稳定输出应保持 1;两条含 X、X 的路径不等延迟可能产生低脉冲。增加共识项 YZ,F=XY+XZ+YZ。对两级与或实现的单输入转换,这个稳定的 YZ 项在两项转换的交接期间维持有效输出。该结论不能直接推广到任意多输入转换或任意多级实现。
练习 6:设计“两个 BCD 数位的和大于 9”指示器,需要哪些模块?
先用四位加法器算 A+B,保留 C4 和低四位 S。然后用 K=C4+S3S2+S3S1 产生指示。可用门实现,也可让比较器判断 S>9 后与 C4 相或。若只输出“是否大于9”,不需要第二级修正加法器;若还要输出合法 BCD 个位,才加修正级。
本章小结
组合逻辑设计应综合运用数制与编码、逻辑函数以及器件特性。主要环节包括功能建模、模块选择、使能与极性处理、级联连接、边界验证,以及电平、负载和传播延迟分析。
参考资料与章节对应
主要参考《CHAPTER3 组合逻辑电路设计》。下表页码为原文档从 1 起的页序。电气参数计算示例采用明确的给定条件;时序图采用相应小节规定的事件模型,不代表器件实测波形。
| 参考页码 | 对应内容 |
|---|---|
| 2—23 | 3.1 器件家族、电平、容限、扇出、延迟与功耗 |
| 24—39 | 3.2 输出结构、使能、总线与符号 |
| 40—62 | 3.3—3.4 设计流程、门级模块、加法与进位 |
| 62—75 | 3.5—3.6 BCD 修正、比较器与级联 |
| 76—95 | 3.7—3.9 编码器、译码、显示与分配 |
| 96—117 | 3.10—3.11 选择器、函数实现与降维 |
| 118—131 | 3.12—3.13 功能分解、编码转换、加减、乘法与分析 |
| 132—151 | 3.14—3.15 各类险象、条件与处理 |
器件系列条件、比较极性、BCD 进位、原码 −0 及静态险象的适用结构是相关结论的必要边界。实体电路设计还应依据完整器件型号核对引脚定义与电气参数。