模擬電路可以利用三極管的導通 / 截止實現(xiàn)數(shù)字狀態(tài)的切換,從而實現(xiàn)0和1的邏輯運算。
邏輯運算常用的有3種:與、或、非,它們都是1個二進制位的位運算。
在位運算的基礎上,可以進一步實現(xiàn)加減運算。
位運算的特點是,多個位之間是無關的。
加減運算有進位和借位,多個位之間是相關的。
這里簡單的給一下它們的電路:
1,與門,
電路,與門
2個二極管只要有1個導通(低電位0),輸出電位就是0.7v,為低電位0。
0 & 1 == 1 & 0 == 0.
2個二極管都截止時(高電位1),輸出等于電源電壓,為高電位1。
1 & 1 == 1.
2,或門,
或門正好反過來,二極管接近電源正極,電阻接近電源負極。
電路,或門
2個二極管里只要有一個導通(高電位1),輸出端就是高電位1。
1 | 0 == 0 | 1 == 1.
2個二極管都截止時,輸出端是低電位0。
0 | 0 == 0.
二極管接到電源正極上就會導通,接到負極上就會截止。
3,非門,
非門,利用的是三極管的反相放大器。
當b極為高電位1時,三極管導通,電源電壓大部分加在上拉電阻上,輸出為低電位0。
反之,輸出為高電位1。
電路,非門
位運算的電路都是很簡單的,因為多個位之間不相關。
只要把多個電路并聯(lián)起來,每個處理1個二進制位,就可以實現(xiàn)32位的運算。
4,加法,
加法因為有進位,比單純的位運算要復雜一點。
0 + 0 = 0,
1 + 0 = 1,
0 + 1 = 1,
1 + 1 = 10,
二進制加法的前3種情況就是或運算,所以1個或門就可以處理前3種情況。
復雜的是1+1 = 10的情況,要處理進位:個位要變成0,十位要進位1。
主要說說這種情況:
下圖是我隨手畫的二進制加法的電路
電路,加法
藍色的電阻和2個向右的二極管組成或門,處理前3種情況:
0 + 0時,個位輸出和三極管的b極都是0,結果為0;
0 + 1 == 1 + 0時,個位輸出為1,三極管的b極為0,結果為1。
最后一種情況,1 + 1 == 10 時:
紅色的電阻和2個向左的二極管組成與門,當2個加數(shù)都是1時,三極管的b極為高電位1,
這時三極管導通,三極管的c極為低電位0;
或門的輸出為1,電流將沿著圖中箭頭的流向,經(jīng)過三極管的c-e極流入電源負極,
個位輸出與三極管的c極電壓一樣,為低電位0;
十位輸出與三極管的b極電壓一樣,為高電位1。
這樣就實現(xiàn)了1個二進制位的加法運算:1 + 1 = 10.
如果有多個二進制位,就把上圖的電路并聯(lián)起來,同時把(十位的)進位輸出轉到下一級的輸入,繼續(xù)更高位的運算。
位數(shù)越高電路越復雜,因為加法的各個位之間是可以進位的。
所以,在數(shù)字電路層面不適合處理復雜的邏輯,因為僅僅是加減乘除的實現(xiàn)就已經(jīng)很復雜了。
所以,計算機的設計必然是分層的:
1)數(shù)字電路僅僅實現(xiàn)匯編代碼級的邏輯,
2)更復雜的程序邏輯,放在C語言層面,
3)最復雜的邏輯,放在高級語言層面,畢竟C語言是個掛著高級語言的名頭的大號匯編如果不做分層設計,電子工程師要考慮的情況就太多了,需求的耦合度太大!
一旦耦合度大了之后,工程師們就會考慮分層分模塊的設計。
編譯器被分為詞法、語法、語義、中間代碼、機器碼、目標文件生成、連接器,也是因為不這么劃分的話耦合度太大了。
匯編代碼難寫,是因為它過于底層,與人類平時的思維方式差別很大。
但從數(shù)字電路的角度來看,匯編代碼已經(jīng)很上層了。
-
三極管
+關注
關注
142文章
3611瀏覽量
121961 -
模擬電路
+關注
關注
125文章
1557瀏覽量
102753 -
C語言
+關注
關注
180文章
7605瀏覽量
136905 -
數(shù)字電路
+關注
關注
193文章
1606瀏覽量
80641 -
邏輯運算
+關注
關注
0文章
56瀏覽量
9762
發(fā)布評論請先 登錄
相關推薦
評論