引言
最近?看了《漫画数字电路》一书,大概记录一下
书上的很多东西,并没有记录在此处(翻译:写的什么玩意)
前述
数字电路分 组合电路 与 时序电路
组合电路:现在输入信息的组合决定输出的电路
时序电路:带有 “记忆” 的电路
MIL 符号
逻辑电路的 与门 与 或门 符号引申为多个输入一个输出
- 符号含义
与门 (ALL) :多个输入全 1,输出为 1
或门 (EXIST) :有一个输入为 1,输入为1
- 电路线
有 圆圈 的为 低电平 (0、L)
无 圆圈 的为 高电平 (1、H)
组合电路的制作
多数表决电路
多个人投票从两个结果中选出一个
- 列出真值表,即所有可能出现的情况
- 在真值表 H 输出的地方添加下划线
- “输入的线” 与 “将输入 NOT 的线” 搭建框架
两列向下的电路线,第二列为 NOT 线,即从第一列连 非门 到第二列
- 连接到 AND (与门)
- 输入为 L 时,从将输入 NOT 的地方开始 (第二列)
- 输入为 H 时,从最开始的地方划线 (第一列)
- 然后,接入 AND
重复此过程将 第二步 所划线的全部做完
- 将 AND 的所有输出连接到 OR
电路的化简
数字电路设计流程:整理问题 – 真值表 – 化简 – 绘制电路
通过 卡诺图 进行化简
- 真值表转化为卡诺图
真值表制作时列从最高开始,例如 [C、B、A],结果为 Z
卡诺图为二维的真值表,一般用 0 与 1 表示电平
如果三个输入,可以行为 B、A,列为 C,然后将结果填入二维表
- 化简前了解
卡诺图的 左右 与 上下 都是连起来的,因为卡诺图的横方向与竖方向都是按 比特 (1 位) 变化的
- 化简
- 将在一起的 1 作为一个集合划分在一起
- 寻找行与列的共同点
- 若共同点为某值为 0 则使用 逆运算 ,即字母上一横杠
- 例如
C\BA | 00 | 01 | 11 | 10 |
---|---|---|---|---|
0 | 1 | 1 | ||
1 |
上表中 共同点为 C 为 0,A 为 1,则表达式为 !C * A
- 化简的规则
- 集合体的形状只能是长、宽为 1、2、4 的矩形 (或正方形)
- 集合体可以相互重叠
- 集合体的个数越少,面积越大越好
注:左右和上下可以构成一个集合体;如果无法进一步 “形成集合体” 则说明电路已经无法再化简
化简后画出电路图,只需要把所有的表达式按上一步的画图步骤 (第三步开始) 走即可
电路的忽略
在刚开始确定输入时,因为二进制数的特性,可能会有不需要考虑的输入
例如输入为月份,需要使用四位二进制数,一共有 16 个输入,其中 0、13、14、15 均为不需要考虑的输入
这样的输入在卡诺图里可以使用 -
代替,可以化简计入集合体
时序电路的制作
时序电路需要 组合电路 与 触发器
关于 时序电路 的 “记忆”,例如自动贩卖机在投币时会记录当前投币总数,若无记忆则仅有最后一个硬币的面值
引入一个触发器,例如 时钟 (CLK),仅在 CLK 触发时,输入才会对输出有影响,否则输出保持不变
以绘制电子骰子为例
- 绘制状态迁移图
随着时间的变化,电子骰子如何变化?
若停止为低电平,从 1 开始到 6 到 1
如果为高电平,则在某点一直停止
- 用二进制数来表示状态
把每种情况或者说状态使用二进制表示,然后绘制出 状态迁移表
通过状态迁移表画出电路,可以使用 D 触发器存储状态
- 设计组合电路
从 现在的状态 决定 下一个状态 事实上就是 组合电路