这是“一生一芯”项目的一个beginning,千里之行始于足下,希望能够通过自己的学习和体会,在下个学期末之前完成流片。如果我的数电的大作业最后是自己搭的一个芯片,我真的觉得那样酷毙了,learn for fun。

处理器本质上是数字电路,而数字电路是用来处理数字信号的电路,而数字信号简单来说就是指0和1这样两种练得信号。0和1并不是数字意义的自然数的前两位,而是电路的高电平和低电平的两种不同的状态,所以有的时候也会把它们称之为逻辑0逻辑1

模拟信号是连续的,像是电流和电压一样。

想要学习数字电路,学习处理器的芯片设计,数字电路的知识是基础,而要学习数字电路,就是要学习信息在数字电路中是如何表示,处理和存储的。

通过晶体管实现0和1

0和1是抽象的,在数字电路中,0和1一般来说依靠晶体管进行实现,我们常常采用MOSFET(金属-氧化物-半导体场效应晶体管),根据用途的不同,一般又分为nMOS ,和pMOS,管两种。在模电中,我们一般运用的是场效应管的放大效应,即其对电压的放大能力,而在数电中,我们一般使用其开关特性。原理不进行赘述,参考模电教材。

接下来我们学习CMOS(Complementary Metal-Oxide-Semiconductor)技术。由于nMOS和pMOS具有互补的特性, 在数字电路中通常将两者联合使用。下面是一个最简单的CMOS电路:
image.png
这里采用的是增强型的MOS管,即当电压为0时,并不存在导电沟道,我们分两种情况进行分析。

  • A加高电压时,下方的MOS管导通,而上方的MOS管截止,所以Y点与地相连,输出低电平
  • A加低电压时,上方的MOS管导通,而下方的MOS管截止,所以Y点与Vcc相连,输出高电平
    这两种状态就是数字逻辑电路的两种基本状态

通过晶体管搭建门电路

非门

unbelievable!!!
相信聪明的你不难发现,上面的那一张图片,竟然是一个彻彻底底的非门电路!!!
高电压时输入低电平,简直fancy!!
image.png
这个门电路就是非门,也叫做反相器。图表是一个三角形加一个圆圈,在门电路的语言中,小圆圈就代表着取反。

与非门

之前的模电的大实验的时候,所使用的74HC00N芯片也是一种14脚与非门器件。一句话概括这个器件就是1和1生成0,其它都是1.
image.png
这是一个与非门的电路,我们对它进行分析。

N1N2是串联架构,而P1P2是并联架构,所以:

  • 如果A和B都是高电平,N1N2导通与地相连,P1P2断开,最终输出为低电平。
  • 如果A和B不全是高电平,N1N2至少有一个断开,即N1N2整体断开,但P1P2至少有一个会导通,所以输出为高电平。
    image.png
    不得不佩服,这一种想法非常牛逼,完美的将开关和串并连结构结合在了一起,非常天才的构思。

与门

有了上述的分析,与门实际上非常简单,就是在与非门上加了一个非门,其结构图和符号表示如下所示,与门的符号就是一个与非门去掉了一个圆圈,实际上是加上了一个非门。
image.png

Q&A

1.尝试分析一下门电路的行为和功能
image.png

  • 当A,B均为0时,P1P2导通,N1N2不通,输出为1
  • 当至少有一个是1时,P1P2整体不导通,N1N2至少有一个导通,输出为0
    这个门电路的结构,依然是与非门
    2.以下是或门的逻辑符号,尝试画出或门的晶体管结构

image.png
很大程度上是上面的那一张图,将VCC与GND的位置交换一下,即:

  • pMOS端,并联
  • nMOS端,串联
    而后再经过一个非门,就得到了或门,思路仍然是参照上一部分

三输入与非门

image.png
我觉得这一个门电路的思路,可能比逻辑表示更好理解,其中只有当ABC三者全部为1时,输入为0,和两输入的与非门几乎是一模一样

异或门

用于计算异或(XOR),通常在处理逻辑数据时进行运用,其逻辑符号如图:

image.png
二者不同时,结果为1,否则为0。
同或门即为在此基础上进行一次取反。

“一生一芯”的小巧思

卡诺图化简

属实应该是数字电路的教科书上的必备的一个技术,我们将会因为考试而进行学习,显然的,我们需要在考试中用到,但在“一生一芯”这样的动手实践的项目上,显然是仅存在于理论的一个糟粕。

因为这个技术的课延展性的可扩展性非常的低,在真实的项目中,我们面对的变量和数量大概是五个及其以上的,要用卡诺图进行这样一个东西的化简,效率相比是非常低的。事实上,现代工具通常会采用QMC算法,或者espresso算法对逻辑表达式进行化简。

emm,好像乍一看根本看不懂这两个算法,还是等待上完数电后的自己

In all,还是很有必要对于这一个方法具有一定的了解,我也希望能够,在接下来的数电课程中,少学一点,多做一点。
image.png

注意,卡诺图的顺序一定要是00,01,11,10

image.png
以BC项为例,即为将纵轴01,11和横轴11,10对应的2x2方格进行标注,经过以上的操作,我们得到了如上图所示的卡诺图。
然后进行画圈,有如下的要求:

  • 圈的数量少、范围大
  • 圈可重复圈,但每个圈必须要有新的最小项
  • 每个圈包含的小方格数量必须是2的N次方项,如1 2 4 8

image.png
image.png

  • 看绿圈,CD的值都进行了变化,而AB的值保留为10不变
  • 看蓝圈,AB的值都发生了改变,而C发生了改变,D没有变
  • 看红圈,AB的值都发生了改变,而D发生了改变,C没有变

image.png

感觉卡诺图还是比较有意思的捏

搭建异或门

异或门的确是相当的神奇的一个电路,我们尝试使用其它的门电路去实现它,然后用过仿真检验是否正确,并且计算我的方案使用了多少个晶体管。
d375bc27755b54035a186031635b1c03.jpg
对于11和00而言,最后要进行0和0的运算得到0,而对于01和10而言,最后要通过1和0得到1,显然,这种逻辑关系,我们可以用或门进行实现。所以我们最后的设计电路需要:

  • 两个与非门
  • 一个或门
    与非门需要四个晶体管,而或门需要六个,amazing!刚好十四个
    但好像搞错了,我的logisim如下
    image.png
    image.png

image.png

异或门的全定制电路:

image.png
真真切切的体会到了,什么是0帧开大,这是我能学会的吗。
这和真值表和逻辑的表示是紧密的相关的,通过我们真值表,我们不难看出异或门可以表示为

  • 当A=0时,输出B
  • 当A=1时,输出非B
    最左边的操作是用来生成非A信号,而另外两个,则是相反的传输门。
  • 对于传输门1,P2N2进行分析,如果按照原始的上源下地而言,这个结构是一个基本的反相器,但由于其上源下地的控制电压是由A和非A决定的,所以我们可以分析:A为1时,传输门1对A取反,A为0时,上地下源不满足要求,故不会导通。
  • 但感觉AI说的这个传输门1,似乎更像一个带控制的非门。
  • 传输门2是一个正经的传输门,当控制信号A取0时,上方的控制信号是0,而下方的控制信号是1,上下导通,相反则截止,类似与一个开关。

美妙

同或门

听说最小可以只用6个,真的可以这么恐怖吗。
相比有了上述的那个震惊的结构,这个真的只是去洒洒水啦,只是把刚刚的异或门的全定制电路的A控制信号,正反的控制极性反一下,在A为0时输出非B,在A为1时输出B,就OK啦

进位计数法

我们已经知道,cMOS电路可以用来表示和处理0和1的信号,但我们的物理世界并不只有0和1,因此需要考虑如何用1和0来表示物理世界的各种信息,我们把这样一种表示方法称之为编码(encoding)。二进制和十六进制法,在python的数据结构中我们大概已经有了体会,实际上并不难。我们在这里略去。

参考:

1.卡诺图相关:【卡诺图化简详解】https://www.bilibili.com/video/BV1P7ZYY9EDX?vd_source=0bcaeb0bf7fa61601fea861152f447e7

2.传输器相关:
(7 封私信 / 80 条消息) CMOS反相器7 - 传输门 - 知乎