C03 · 第 2 章 · 数据与电路

数字逻辑与时序电路

用真值表、全加器、寄存器和状态机分析数字电路,并计算同步路径的周期和时序余量。

预备知识二进制与数值表示

本章目标

  1. 根据真值表写出组合逻辑表达式。
  2. 计算全加器的输出与进位。
  3. 跟踪寄存器和有限状态机的状态变化。
  4. 由路径延迟和建立时间计算时钟周期下限。
页面阅读位置0%
章节未开始
本册完成进度0/6 章 · 0%
本页目录

布尔函数与组合电路

数字电路用电压区间表示逻辑零和逻辑一。逻辑设计先规定输入与输出的布尔关系,再由具体器件满足电气和时序要求。逻辑门的输入变化后,输出需要经过传播延迟才能稳定,因此真值表描述稳定状态,时序分析负责说明稳定状态何时建立。

一个具有有限个二值输入的组合电路,其稳定输出由当前输入确定。我们用真值表列出全部输入组合,再从表中写出逻辑表达式。与运算要求所有输入为一,或运算要求至少一个输入为一,非运算对单个位取反,异或运算判断两个输入是否不同。这里的或采用包含同时为一的定义,不能与自然语言中的二选一混用。

组合逻辑

具有 nn 个输入和 mm 个输出的组合逻辑用函数 f:{0,1}n→{0,1}mf:\{0,1\}^n\to\{0,1\}^m 描述。对固定输入,传播延迟之后的输出应满足这个函数。逻辑等价要求两个电路对全部输入组合给出相同稳定输出。

写出真值表后,最直接的实现方法是为每个输出为一的输入组合构造一个与项,再把这些与项相或。利用分配律和吸收律通常能减少门数,但门数减少未必降低最长传播路径。设计时需要同时记录功能、延迟、扇出与面积等约束,不能仅以表达式长度判断实现优劣。

选择器与算术电路

二选一选择器由控制位 ss 决定输出:当 s=0s=0 时输出 aa,当 s=1s=1 时输出 bb。其布尔式是 y=(¬s∧a)∨(s∧b)y=(\neg s\land a)\lor(s\land b)。把同一个选择信号用于多个位,就得到多位数据选择器,处理器的数据通路用它在寄存器、立即数和运算结果之间选择数据。

全加器的真值计算

一个全加器接收两个数据位 a,ba,b 和低位传来的进位 cc。求输入 a=1,b=0,c=1a=1,b=0,c=1 时的和位与进位,并给出对全部输入成立的公式。三个输入的整数和为二,二进制写成 10,所以和位为零、进位为一。一般情况下,和位 s=a⊕b⊕cs=a\oplus b\oplus c,进位 k=(a∧b)∨(a∧c)∨(b∧c)k=(a\land b)\lor(a\land c)\lor(b\land c)。逐项代入得到 s=0,k=1s=0,k=1,并满足数值关系 a+b+c=s+2ka+b+c=s+2k。对其余七组输入也检查该等式,就能确认全加器真值表完整正确。

串联多个全加器能实现多位加法,每一级的进位作为下一级输入。最低位先产生进位,最高位可能需要等待前面各级,因此串行进位结构的关键路径随位宽增加。改用并行进位结构会改变门的数量与连接方式;无论采用哪种结构,输出仍必须满足同一组位运算关系。

电路中还常出现短暂毛刺:不同路径的信号到达时间不同,输出可能在最终稳定前发生多次跳变。只用真值表无法推导毛刺的时间范围。若输出驱动寄存器,我们需要保证采样时刻满足建立与保持要求;若输出直接作为时钟或异步控制,则必须进行专门设计,避免把组合逻辑毛刺误当成有效事件。

组合逻辑还可以使用统一门型实现。例如与非门先计算与运算,再取反;把它的两个输入接到同一个信号,就得到非运算。利用德摩根律还能构造或运算,因此一组与非门足以表达任意有限布尔函数。这个结论说明实现的表达能力,具体设计仍需比较门的延迟与布线成本。

在软件中模拟逻辑门时,应明确每个值只允许零或一,并先计算全部下一状态,再统一更新寄存器。如果在遍历寄存器时立即写回,后续计算可能读到同一周期的新状态,改变原本的同步语义。把当前状态与下一状态分开保存,就能使模拟步骤与边沿采样模型对应。

寄存器与同步状态

寄存器保存电路状态,在规定时钟边沿更新。同步状态机把计算分成当前状态、输入、下一状态和输出四部分。边沿之间,组合逻辑根据当前状态与输入计算下一状态;时钟边沿到来时,寄存器采样已经稳定的输入,随后形成新的当前状态。

以两位模四计数器为例,状态依次为零、一、二、三,再返回零。若启用信号为零,下一状态等于当前状态;若启用信号为一,下一状态在模四意义下增加一。复位信号负责建立约定的初态,因此仿真和硬件上电时都需要明确复位方式与优先级。含状态电路的输出依赖此前的状态演变,仅列出外部输入不足以确定输出。

有限状态机还需要处理输入同步。来自按钮、外部设备或另一时钟域的信号可能在采样边沿附近改变,从而使寄存器暂时处于亚稳态。工程中会使用同步器降低这种事件传播到后续逻辑的概率;多位数据的跨时钟域传输通常还需要握手或专用缓冲结构,逐位加同步器无法保证同一个数据字同时被接收。

建立时间与时钟周期

寄存器的输出在时钟边沿后经过一段时间才稳定,这段延迟记为 tcqt_{cq}。组合逻辑最长传播延迟记为 tlogict_{logic},接收寄存器在采样前要求输入稳定的时间记为 tsetupt_{setup}。在忽略时钟偏斜和抖动的简化模型中,时钟周期应满足

T≥tcq+tlogic+tsetup.T\ge t_{cq}+t_{logic}+t_{setup}.

这里各量都使用时间单位,例如纳秒。缩短周期需要缩短最长路径或增加流水寄存器;提高时钟频率同时可能增加功耗,并受到布线、器件和温度等因素影响。保持时间约束检查最快路径,防止新数据过早到达接收端,不能只检查上式中的最长延迟。

同步路径的周期计算

设发送寄存器延迟为 0.12 ns0.12\,\mathrm{ns},组合路径最长延迟为 0.68 ns0.68\,\mathrm{ns},接收寄存器建立时间为 0.10 ns0.10\,\mathrm{ns},忽略偏斜和抖动。最短周期为 0.90 ns0.90\,\mathrm{ns},所以频率上限为 1/(0.90×10−9) Hz1/(0.90\times10^{-9})\,\mathrm{Hz},约为 1.11 GHz1.11\,\mathrm{GHz}。若选择 1.00 ns1.00\,\mathrm{ns} 的周期,最长路径还剩 0.10 ns0.10\,\mathrm{ns} 的建立时间余量。把组合逻辑延迟误写成周期会高估频率,因为寄存器两端的时间要求仍需计入。该计算只覆盖最长路径约束,保持时间还应另行验证。

实际验证通常从组合逻辑的穷举真值表开始,再检查状态转换序列和时序约束。测试计数器时应覆盖复位、保持、普通递增和最大值回绕,检查结果与状态表一致。对更大的状态机,逐个列出合法转换以及异常输入处理,能使仿真结果直接对应设计要求。逻辑仿真通过说明功能模型符合测试条件,制造后的器件时序仍依赖具体实现数据。

数字逻辑练习

练习

分别列出两输入异或与或的真值表,指出它们在哪一组输入上不同。

查看解答

四组输入依次为零零、零一、一零、一一。异或的输出依次为零、一、一、零;或的输出依次为零、一、一、一,差别出现在两个输入都为一时。

练习

二选一选择器的数据输入为一和零,分别求控制位为零和一时的输出,说明控制位取反后的变化。

查看解答

控制位为零时,选择器输出第一个输入,结果为一;控制位为一时输出第二个输入,结果为零。把控制位取反会交换两个数据输入的选择条件。

练习

两位模四计数器从复位状态连续计数五次。再把第三次计数改为保持,分别列出状态序列。

查看解答

复位后状态为零。五次启用时钟边沿后的状态依次是一、二、三、零、一。若第三次边沿禁用,则该次保持二,后两次变为三和零。

练习

发送延迟、组合延迟与建立时间分别为 0.1,0.6,0.1 ns0.1,0.6,0.1\,\mathrm{ns},求周期下限及对应频率,再计算预留 0.2 ns0.2\,\mathrm{ns} 余量时的频率。

查看解答

最短周期为零点一加零点六加零点一,即零点八纳秒,频率上限一点二五吉赫兹。若额外预留零点二纳秒余量,周期为一纳秒,频率为一吉赫兹。

逻辑设计课程资料

4 Combinational Logic: Computation Structures

Chris Terman · 2017 · Massachusetts Institute of Technology

打开官方来源

5 Sequential Logic: Computation Structures

Chris Terman · 2017 · Massachusetts Institute of Technology

打开官方来源

MIT 6.004 的组合逻辑课程提供布尔表达式和逻辑电路练习,时序逻辑课程讨论寄存器、状态和时序约束。阅读时可分别对照本章的全加器真值关系与同步路径计算。