電路里與非門、或門,從物理層怎樣解讀?具體是什麼?是怎樣實現邏輯運算的?


受邀

數字電路CMOS電路中的與,或,非門等基本邏輯電路是由晶體管搭建起來的,如下圖:

第一個圖是由兩個晶體管搭成與門,第二個圖是兩個晶體管搭成或門。晶體管相當於一個開關控制電路導通截止。

有了基本邏輯門,我們就可以搭建電路,因為一個電路最終可以化成布爾表達式,而布爾表達式就是一堆邏輯運算,每個邏輯操作直接用相應邏輯門代替即可。如下面數據選擇器(MUX)的例子。

  1. 首先,我們想設計一個數據選擇器,根據選擇器的功能,我們可以畫出真值表,然後化簡出布爾表達式:

  2. 如上圖,這個布爾表達式就是基本的邏輯操作,相應操作直接可以用邏輯門代替,如下圖:

    由這個例子可以看到,邏輯運算可以由基本邏輯門搭成。在實際電路設計中,歸功於高度智能的EDA工具,我們並不需要真的寫出電路間每個邏輯門的連接,寫出電路上層功能EDA工具就能生成具體的底層邏輯門連接。如乘法器,我們在verilog中直接寫a = b*c;即可。具體可參見這個回答硬體乘法器的意義何在?乘法直接乘不就可以了嗎。我verilog里編寫a*b即可,為什麼要移位相加去乘? - young cc 的回答

    http://www-inst.eecs.berkeley.edu/~cs61c/sp15/lec/10/2015Sp-CS61C-L10-kavs-FSM-1up.pdf


現代集成電路里基礎邏輯門有很多種不同的搭建方法。

常見的有CMOS互補邏輯、傳輸門邏輯、TTL邏輯等等。

以與非門為例:

CMOS互補邏輯使用PMOS和NMOS互補設計,並互為負載。電路特點是上拉通路和下拉通路不同時導通,靜態功耗極低。

當兩個輸入同為1時,NMOS下拉通路導通,輸出為0;當有至少一個輸入為0 時,PMOS上拉通路導通,輸出為1。

傳輸門邏輯使用傳輸門作為開關,通過一系列開關組合出輸出邏輯。特點是在實現某些邏輯(比如異或門)的時候使用的晶體管數目非常少,但是由於是無源電路,驅動電流全部來自輸入信號,所以驅動能力很差。

當A為1時上方通路導通,輸出	ilde{B} ;當A為0時下方通路導通,輸出1。

TTL邏輯使用的是NPN BJT管,使用電阻做上拉通路。BJT的電流較大,驅動能力強,速度快。但是因為電流大、靜態電流不為0,導致功耗比CMOS大不少。

當A和B同為1時,左側BJT的集電極點位被抬高到1,右側BJT導通,輸出低電平。其他時候左側集電極點位是0,右側BJT關斷,輸出端被電阻上拉到高電平。現在的集成電路基本是CMOS互補邏輯一統江湖。主要是功耗低、工藝集成度高、組合邏輯實現非常簡單。

CMOS互補邏輯能夠根據簡單的規則自動生成任意的複雜邏輯門,這在設計自動化上也是非常大的優勢。

CMOS互補邏輯的基本原則是:所有「與」邏輯,等於NMOS串聯;所有「或」邏輯等於NMOS並聯;PMOS部分是NMOS部分的互補(也就是「與」邏輯並聯,「或」邏輯串聯)。

比如一比特全加器中的進位輸出,邏輯表達式是:

C_{out}=Acdot B+(Aoplus  B)cdot C_{in}

把異或邏輯展開成與、或、非邏輯:

C_{out}=Acdot B+(Acdot ar{B}+ar{A} cdot B)cdot C_{in}

然後構造NMOS:

互補地生成PMOS:

把輸出節點連在一起,再加個反向器,電路就完成了:

這種方法流程上非常簡單,但是生成的電路不一定是最優化的(比如這裡用異或門就能簡化一些)。最典型的缺陷就是PMOS、NMOS不平衡,上拉通路和下拉通路驅動強度不對稱。

對於更大的複雜邏輯常常會拆分成小塊的邏輯來實現,否則可能會出現下拉通路(或上拉通路)太長,驅動能力不足的情況。


具體電路實現方式不說了。這些簡單的門電路可以完成複雜的邏輯運算實際上是得益於眾多的組合邏輯化簡工具(或者說叫方法,如卡諾圖等)和狀態機的概念。

通過邏輯化簡,可以將複雜的組合邏輯表達式或者輸入輸出關係轉化成簡單幾種基本的門電路可實現的組合邏輯電路。(任意組合邏輯通過化簡都可以用 或非門 或者 與非門 一種門電路實現)


拿反相器作例子。

把開關s1當做輸入,當s1=1,開關閉合,輸出0。

當s1=0,開關斷開,輸出1。

把開關換成FET,就是一個實際的反相器原理圖。

把反相器的內部當做一個黑盒,就是你熟悉的反相器電路抽象。


為什麼不用繼電器搭一個門電路?


打開這個黑盒子,裡面是怎麼樣的呢?

◥◤~~~~◥◤  

┃    ┃

≡━ ﹏ ━≡  

┗━━┳∞┳━━┛

 ┏┫ ┣┓


首先你知道二進位嗎?

知道=&>聊聊布爾運算元=&>基礎知識:A與B=A*B,A或B=A+B,非A=A取反=&>與門,或門,非門=&>現實狀況:搭建非門、與非門、或非門來實現邏輯運算

基礎知識:三級管的性質決定,非門比較容易實現

不知道=&>我不知道怎麼解釋=&>遊戲結束


與,或是電阻和二極體的組合,非門是一個三極體和電阻的組合。


推薦閱讀:

Ardunio I/O口的輸出阻抗是多少?其意義是什麼?
開關三極體能替代中間繼電器么?
如何學習模擬電路和電路分析?

TAG:現場可編輯邏輯門陣列FPGA | 晶元集成電路 | 電路原理 | 電路設計 | 電子電路 |