数字逻辑设计(速通版)

Isshiki修’s Notebook

Chapter-1 数字系统与信息

十进制编码

BCD码是 十进制 数,不是二进制数,即使它们都采用二进制位的组合来表示,如

格雷码

相邻两个数字的 格雷码 只有一个 bit 上的 0/1 不同,数字 $x$ 对应的格雷码为

Chapter-2 组合逻辑电路

对偶式

一个表达式的 对偶式 就是将与变为或,或变为与,同时将 0/1 取反
对偶原则 指出,如果将表达式等号两侧 同时 取对偶,表达式仍然成立
求解 反函数 的方法为,先求此函数的对偶式然后将每一个文字取反

标准形式

最小项之和,对应离散数学中的 析取范式,形如:

最大项之积,对应离散数学中和 合取范式,形如:

积之和和之积 的每一个逻辑项可以有 任意数目不同文字,导致 二级门电路

成本标准

(1)文字成本 即与逻辑图一一对应的布尔表达式中文字的个数,记 L
(2)门输入成本 即与给定等式一一对应的实现中所用门的不计非门输入端的个数,记 G
(3)带非门的门输入成本 在门输入成本的基础上计入非门且相同文字只记一次,记 GN

卡诺图的化简

蕴含项 即函数对某个乘积项的每一个最小项都取值为 $1$
主蕴含项 即从蕴含项中去除任意一个变量所得乘积项就不是函数的蕴含项
质主蕴含项 即函数的某个最小项 只包含 在这个主蕴含项中

奇函数与偶函数

多变量异或运算 值等于 $1$ 的条件是由 奇数 个变量的值为 $1$ ,被成为 奇函数
组成奇函数的 反函数 被称为 偶函数 ,可以通过同或门获得

门的传播延迟

参考电压 是电压信号最大值与最小值之间的 中间值,即 $50\%$ 处
$t_{\mathrm{PHL}}$ 是 输出高变低 时,从输入的参考电压到输出的参考电压间的时间差
$t_{\mathrm{PLH}}$ 是 输出低变高 时,从输入的参考电压到输出的参考电压间的时间差
$t_\mathrm{pd}$ 是两个传播时间的 较大值 ,称为 传播延迟

传输延迟 是指输出响应输入的变化,认为输入和输出之间的延迟是一个定值
惯性延迟 引入了 拒绝时间,只有输出在大于拒绝时间间隔内发生才会实际发生变化
惯性延迟可以用于 过滤噪音

延迟计算

门的 总体延迟 取决于两部分:电路自身的 固有延迟输出负载延迟,可以表示为:

在现代高速电路中,由布线电容引起的门延迟部分通常也很可观

Verilog-1

输入输出和其它二进制信号类型有 $4$ 个取值:$0/1/x(未知)/z(高阻)$
buf 反相器 是放大电信号的 放大器,可以用来 驱动大的扇出 或是 减少延迟
Verilog 的描述方法分为 结构化描述数据流描述
在根据电路网表确定门的相互连接之前需要对电路中 所有节点 命名
数据流描述 中语句 assign 的执行顺序与出现的顺序 无关,与右侧信号变化顺序 有关
assign 语句左侧必须是网线类型 不能 是寄存器类型,右侧信号变化会 立刻 反应到左侧

Chapter-3组合逻辑电路设计

工艺映射

一个输出端为或门的电路,采用与非门映射后会在输出端得到一个与非门
一个输出端为或门的电路,采用或非门映射后会得到被或非门驱动的反相器
积之和 式被认为更适合使用 与非门和之积 式更适合使用 或非门

Chapter-4 时序电路

锁存器

不同类型的锁存器或触发器之间的主要区别在于它们拥有的输入信号的 个数 以及输入信号影响其二进制状态的 方式,通常情况下,触发器是由 锁存器 构成的

触发器

在触发器中,输入信号的改变可以控制内部锁存器的状态,把这种现象称为 触发
在触发器中,在输出信号改变之前,输入信号输出信号 之间的通路被断开

门控时钟 技术通过多路复用器使在需要时让时钟脉冲 失效,从而使 D 触发器输出无变化,但会导致 时钟偏移,因而不常用

触发器经常带有对其状态进行 异步置位异步复位 的特殊输入
实现触发器 异步置位 的输入称为 直接置位 或者 预置
实现触发器 异步复位 的输入称为 直接复位 或者 清零

状态表

输出既依赖于 当前状态 也依赖于 输入 的时序电路,称为 Mealy 型电路
输出只依赖于 当前状态 的时序电路,称为 Moore 型电路

无效状态的设计

(1)采用一个 额外的输出 或一个 未使用 的输出代码指明电路进入了无效状态
(2)适当 定义 无效状态的下一个状态行为
(3)按照保证任何由于进入了无效状态和无效状态之间的跳变导致的行为都不会带来危害的原则来定义无效状态的输出

状态机

输入条件 可用输入变量的布尔表达式或方程来表示
转移条件 一个状态转移弧上的输入条件称为转换条件,等于 $1$ 时转移发生
输出条件 值为 $1$ 时会引起输出行为发生的输入条件

后面跟有一条斜线的 输出条件(如有)和相应的 输出操作 被放置在从该状态或从一个转移条件 TC 出发的一条直线或曲线的 末尾,多个输出条件/输出动作之间用逗号隔开
Logical Laws

输出行为 状态机表示(见上图)
Moore 型输出行为 ——Output
独立于转换条件的 Mealy 输出行为 ——OC/Output
依赖于转换条件的 Mealy 输出行为 TC——Output
依赖于转换条件和输出条件的 Mealy 输出行为 TC——OC/Output

约束检查

对于每一个状态,它的 转换条件 有两个约束:
(1)给定状态 $S_i$ 的转换条件之间必须是 互斥 的,记转换弧上所有可能条件对为 $(T_{ij},T_{ik})$

(2)一个给定状态的全部转换条件必须覆盖 全部 可能的输入变量组合

对于每一个状态,它的 输出条件 有两个约束:
(1)对于在状态 $S_i$ 里面或者在其转换上的各个输出行为,其输出条件对 互斥

(2)对于每一个输出变量,各输出条件必须覆盖 全部 可能的输入变量组合

注:即 转换条件输出条件 都是全集的 划分

无效输出行为 对于当前时刻,当前节点的输出和出度的输出不能冲突

Verilog-2

initial 进程在 $t=0$ 时刻开始执行并 只执行一次
always 进程在 $t=0$ 时刻开始执行并此后会 重复执行
’#‘ 操作符后跟一个整数,可以用于定义 延迟
’@‘ 操作符后跟一个表达式,描述 引起进程执行 的一个或多个事件的表达式

阻塞赋值语句 用 ’=‘ 作为赋值操作符,顺序执行,类似于过程化语言编写的程序
非阻塞赋值语句 用 ’<=‘ 作为赋值操作符,只有计算完 所有 右侧的值才进行赋值

为了确保所设计的 verilog 模块综合后的行为与模拟一致,应遵守以下原则:
(1)生成 组合逻辑 时,赋值应使用 阻塞赋值语句
(2)生成 时序逻辑 时,赋值应使用 非阻塞赋值语句
(3)阻塞和非阻塞语句 不要 在一个 always 块中 混用
(4)一个特定的变量(寄存器类型)赋值,应该只在一个 always 块中使用
一般由一个 always 块表示时序逻辑,一到两个 always 块表示组合逻辑

进程中的 if-else 语句可以在 进程 中使用,不能 在连续赋值语句中使用
在 always 块中如果出现语句 D<=D 语句,会表现为保持当前值的 触发器
在 verilog 中假定对于 if-else 或 case 语句中未指定行为的条件组合等价于 Q<=Q

触发器定时

建立时间 最小时间 $t_\mathrm{s}$ 让输出发生改变的时钟变化前,$S$ 或 $R$ 或 $D$ 必须维持一段时间不变
保持时间 最小时间 $t_\mathrm{h}$ 让输出发生改变的时钟变化后,$S$ 或 $R$ 或 $D$ 必须维持一段时间不变
时钟脉冲宽度 最小 $t_\mathrm{w}$ 保证主锁存器有足够的时间来正确地捕获输入值
边沿触发式触发器 多用在较快速设计,边沿式触发器的建立时间可比时钟脉冲宽度 小很多
传播延迟时间 时钟触发沿与输出稳定为一个新值之间的时间间隔,最小值应 长于 保持时间

时序电路定时

路径上信号变化的传播延迟一般由三部分组成:
(1)触发器 传播延迟 $t_{\mathrm{pd,\space FF}}$
(2)路径上一系列门产生的 组合逻辑延迟 $t_\mathrm{pd,\space COMB}$
(3)触发器的 建立时间 $t_\mathrm{s}$
Logical Laws
松弛时间 为 $t_\mathrm{slack}$ ,则 $P_{\mathrm{FF,\space FF}}$ 类型路径的时间计算公式为

为了保证信号的变化值能够被接收触发器捕获,所有路径的松弛时间必须大于等于 $0$

Chapter-5 数字硬件实现

常见的可编程技术

课程中介绍的 可编程技术 主要有如下四种:
(1)只读内存 Read only Memory (ROM)
(2)可编程阵列逻辑 Programmable Array Logic (PAL)
(3)可编程逻辑阵列 Programmable Logic Array (PLA)
(4)现场可编程逻辑门阵列 Field-Programmable Gate Array (FPGA)
前三者都属于永久编程技术
Logical Laws

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!