简单CPU设计实践
博客参考:简单CPU设计实践 - Lianera
感谢每一位无私分享知识的笔者。
一、基础
基本逻辑门
(严格意义上,只有不可分割的与、或、非门是基本逻辑门)
AND(与)、OR(或)、NOT(非)、NAND(与非)、NOR(或非)、XOR(异或)、XNOR(同或)
以上门电路真值表可查阅:常见七种逻辑门真值表 - Star、H
组合逻辑电路分析设计方法
分三步,需求分析->方案设计->电路实现
第一步:需求分析->真值表
| A | B | C | F |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
需要列举出所有可能(2^N行,N是输入参数个数),其中ABC是输入,F是输出
第二步:化简逻辑->卡诺图
卡诺图是用来化简表达式的工具
- 把真值表中F=1的项标在卡诺图里
- 圈出最大的相邻1的矩形(2×2、1×4等)
- 写出化简后的表达式
比如上边真值表的例子,化简出来的表达式是:
F = AB + AC + BC
这就好像是有一个仅有三道题的考试(ABC),任意写对两道题,最后的结果就是通过考试
第三步:电路实现->表达式变电路
现在把表达式变成电路,还是上面的例子,AB + AC + BC,这个表达式怎么处理?
实际上这里的关系很清晰简单,只有AND和OR
第一层:用AND门做AB、AC和BC
第二层:用OR门把三个AND结果合并
编码器
高低电平信号向二进制数的转换
普通编码器:任何时刻只允许有一个信号输入
优先编码器:允许同时输入两个以上的编码信号,只对其中优先权最高的一个进行编码
博客资料:自上而下理解优先编码器
译码器
二进制数向高低电平信号的转换