芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片( 二 )


芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
看到没有,很多人认为八卦就是二进制的先驱 。两仪是阴阳,也就是0和1,四象是二进制两位数,八卦是二进制三位数,而伏羲64卦就是二进制的六位数:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
貌似道理还真是一样,咱们的老祖先当时基于什么发明的八卦,说实话这也搞不清楚 。
可有人却翻出了当时莱布尼茨和一位在北京生活的传教士的信,来试图证明莱布尼茨发明二进制是受了中国八卦的启发,而且很多人都信了这个说法 。
实际的过程是这样的:当时莱布尼茨给这位传教士写信,希望他向康熙皇帝介绍二进制,这个传教士一看,这不就是中国的八卦么,给莱布尼茨回信说了八卦的情况 。然后莱布尼茨写了一篇文章论述二进制在中国的实际应用 。
莱布尼茨到底受没受八卦启发,都是猜测,就算莱布尼茨受了八卦的启发,那又怎样?在莱布尼茨发明二进制的时候,我们的康熙大帝正在打吴三桂呢,我们的现代文明还没有开化 。
所以,关于八卦和二进制的事,我们就当它是八卦好了,咱们接着说二进制计算 。
假设有两个一位的二进制数要相加,那么会有四种可能:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
前三种情况不需要进位,后一种情况和S是一个两位二进制数,所以需要进位,我们单独设置一个进位标识C 。
大家发现没有,二进制的加法和上面介绍的布尔运算是一样的:
  • 加法的和就是两个加数的异或运算
  • 加法的进位标识就是两个加数的与运算
我们用布尔运算符做个逻辑图,就是这样的:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
上面就是一个用布尔运算符表示的半加器,可以进一步表示如下:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
为什么叫半加器呢?这是因为计算A+B的时候,没有考虑上一位有没有进位的情况,所以这个半加器只能计算二进制数最末一位上的加法 。
如果A和B不是末位上的数,那就要考虑前一位的计算结果有没有进位(Cin是上一位的进位标识,Cout是当前位计算完向上一位的进位情况),会有8种情况:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
这个过程可以通过2个半加器和一个或运算来实现:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
这就是全加器:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
看,我们只用布尔代数的四个运算符,就实现了一位二进制数的加法 。
其实,我们只用了三个运算符,因为异或运算可以画成与、或、非运算的组合,当然这样太麻烦 。
全加器也是一样,如果我们不怕麻烦,可以细致的画成异或、与、或运算的组合 。
八位二进制加法器大家看吧,关于计算机的数学也不难 。
接下来最神奇的要来了,我们要用刚刚学到的布尔代数知识,设计一个最简单的芯片 。
这是一个能够进行八位二进制数加法的加法器 。
这还是有一些挑战的,这个加法器,如果做出来也算是一个最简单的芯片,真的是芯片哦!
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
这个加法器的输入是2个八位二进制数:
一个用A表示,八位分别是A[0],......,A[7];
另一个用B表示,八位分别是B[0],......,B[7];
还有一个输入是进位标识Cin,如果这个加法器单独使用时,这个输入始终置0 。
输出是S,八位分别是S[0],......,S[7];
输出进位标识是Cout 。
下面请大家看看,这个加法器到底是什么样子:
芯片设计真的很难?科普芯片基础知识,带你亲手设计一个芯片

文章插图
 
这就是一个用8个全加器构成的八位二进制加法器,神奇不神奇?
我们没有添加任何其他的东西,就是刚刚学过的全加器,如果大家有兴趣,可以把每个全加器用2个半加器和一个或运算符展开 。
进一步可以再把每个半加器用异或运算符和与运算符展开,不知道哪位读者有兴趣,反正用手画,我是会崩溃的 。
而这一切,在芯片设计的时候,都是由EDA软件来完成 。


推荐阅读