C03 · 第 2 章 · 数据与电路
数字逻辑与时序电路
用真值表、全加器、寄存器和状态机分析数字电路,并计算同步路径的周期和时序余量。
本章目标
- 根据真值表写出组合逻辑表达式。
- 计算全加器的输出与进位。
- 跟踪寄存器和有限状态机的状态变化。
- 由路径延迟和建立时间计算时钟周期下限。
本页目录
布尔函数与组合电路
数字电路用电压区间表示逻辑零和逻辑一。逻辑设计先规定输入与输出的布尔关系,再由具体器件满足电气和时序要求。逻辑门的输入变化后,输出需要经过传播延迟才能稳定,因此真值表描述稳定状态,时序分析负责说明稳定状态何时建立。
一个具有有限个二值输入的组合电路,其稳定输出由当前输入确定。我们用真值表列出全部输入组合,再从表中写出逻辑表达式。与运算要求所有输入为一,或运算要求至少一个输入为一,非运算对单个位取反,异或运算判断两个输入是否不同。这里的或采用包含同时为一的定义,不能与自然语言中的二选一混用。
具有 个输入和 个输出的组合逻辑用函数 描述。对固定输入,传播延迟之后的输出应满足这个函数。逻辑等价要求两个电路对全部输入组合给出相同稳定输出。
写出真值表后,最直接的实现方法是为每个输出为一的输入组合构造一个与项,再把这些与项相或。利用分配律和吸收律通常能减少门数,但门数减少未必降低最长传播路径。设计时需要同时记录功能、延迟、扇出与面积等约束,不能仅以表达式长度判断实现优劣。
选择器与算术电路
二选一选择器由控制位 决定输出:当 时输出 ,当 时输出 。其布尔式是 。把同一个选择信号用于多个位,就得到多位数据选择器,处理器的数据通路用它在寄存器、立即数和运算结果之间选择数据。
一个全加器接收两个数据位 和低位传来的进位 。求输入 时的和位与进位,并给出对全部输入成立的公式。三个输入的整数和为二,二进制写成 10,所以和位为零、进位为一。一般情况下,和位 ,进位 。逐项代入得到 ,并满足数值关系 。对其余七组输入也检查该等式,就能确认全加器真值表完整正确。
串联多个全加器能实现多位加法,每一级的进位作为下一级输入。最低位先产生进位,最高位可能需要等待前面各级,因此串行进位结构的关键路径随位宽增加。改用并行进位结构会改变门的数量与连接方式;无论采用哪种结构,输出仍必须满足同一组位运算关系。
电路中还常出现短暂毛刺:不同路径的信号到达时间不同,输出可能在最终稳定前发生多次跳变。只用真值表无法推导毛刺的时间范围。若输出驱动寄存器,我们需要保证采样时刻满足建立与保持要求;若输出直接作为时钟或异步控制,则必须进行专门设计,避免把组合逻辑毛刺误当成有效事件。
组合逻辑还可以使用统一门型实现。例如与非门先计算与运算,再取反;把它的两个输入接到同一个信号,就得到非运算。利用德摩根律还能构造或运算,因此一组与非门足以表达任意有限布尔函数。这个结论说明实现的表达能力,具体设计仍需比较门的延迟与布线成本。
在软件中模拟逻辑门时,应明确每个值只允许零或一,并先计算全部下一状态,再统一更新寄存器。如果在遍历寄存器时立即写回,后续计算可能读到同一周期的新状态,改变原本的同步语义。把当前状态与下一状态分开保存,就能使模拟步骤与边沿采样模型对应。
寄存器与同步状态
寄存器保存电路状态,在规定时钟边沿更新。同步状态机把计算分成当前状态、输入、下一状态和输出四部分。边沿之间,组合逻辑根据当前状态与输入计算下一状态;时钟边沿到来时,寄存器采样已经稳定的输入,随后形成新的当前状态。
以两位模四计数器为例,状态依次为零、一、二、三,再返回零。若启用信号为零,下一状态等于当前状态;若启用信号为一,下一状态在模四意义下增加一。复位信号负责建立约定的初态,因此仿真和硬件上电时都需要明确复位方式与优先级。含状态电路的输出依赖此前的状态演变,仅列出外部输入不足以确定输出。
有限状态机还需要处理输入同步。来自按钮、外部设备或另一时钟域的信号可能在采样边沿附近改变,从而使寄存器暂时处于亚稳态。工程中会使用同步器降低这种事件传播到后续逻辑的概率;多位数据的跨时钟域传输通常还需要握手或专用缓冲结构,逐位加同步器无法保证同一个数据字同时被接收。
建立时间与时钟周期
寄存器的输出在时钟边沿后经过一段时间才稳定,这段延迟记为 。组合逻辑最长传播延迟记为 ,接收寄存器在采样前要求输入稳定的时间记为 。在忽略时钟偏斜和抖动的简化模型中,时钟周期应满足
这里各量都使用时间单位,例如纳秒。缩短周期需要缩短最长路径或增加流水寄存器;提高时钟频率同时可能增加功耗,并受到布线、器件和温度等因素影响。保持时间约束检查最快路径,防止新数据过早到达接收端,不能只检查上式中的最长延迟。
设发送寄存器延迟为 ,组合路径最长延迟为 ,接收寄存器建立时间为 ,忽略偏斜和抖动。最短周期为 ,所以频率上限为 ,约为 。若选择 的周期,最长路径还剩 的建立时间余量。把组合逻辑延迟误写成周期会高估频率,因为寄存器两端的时间要求仍需计入。该计算只覆盖最长路径约束,保持时间还应另行验证。
实际验证通常从组合逻辑的穷举真值表开始,再检查状态转换序列和时序约束。测试计数器时应覆盖复位、保持、普通递增和最大值回绕,检查结果与状态表一致。对更大的状态机,逐个列出合法转换以及异常输入处理,能使仿真结果直接对应设计要求。逻辑仿真通过说明功能模型符合测试条件,制造后的器件时序仍依赖具体实现数据。
数字逻辑练习
分别列出两输入异或与或的真值表,指出它们在哪一组输入上不同。
查看解答
四组输入依次为零零、零一、一零、一一。异或的输出依次为零、一、一、零;或的输出依次为零、一、一、一,差别出现在两个输入都为一时。
二选一选择器的数据输入为一和零,分别求控制位为零和一时的输出,说明控制位取反后的变化。
查看解答
控制位为零时,选择器输出第一个输入,结果为一;控制位为一时输出第二个输入,结果为零。把控制位取反会交换两个数据输入的选择条件。
两位模四计数器从复位状态连续计数五次。再把第三次计数改为保持,分别列出状态序列。
查看解答
复位后状态为零。五次启用时钟边沿后的状态依次是一、二、三、零、一。若第三次边沿禁用,则该次保持二,后两次变为三和零。
发送延迟、组合延迟与建立时间分别为 ,求周期下限及对应频率,再计算预留 余量时的频率。
查看解答
最短周期为零点一加零点六加零点一,即零点八纳秒,频率上限一点二五吉赫兹。若额外预留零点二纳秒余量,周期为一纳秒,频率为一吉赫兹。
逻辑设计课程资料
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 的组合逻辑课程提供布尔表达式和逻辑电路练习,时序逻辑课程讨论寄存器、状态和时序约束。阅读时可分别对照本章的全加器真值关系与同步路径计算。