首先複習一下全加器的3個輸出和兩個輸入之間的關係;
3個輸出:ia、ib分別為1位資料位,icarry為1位的低位進製;
2個輸出:os為1位的結果值,ocarry為1位的本級進製;
關係運算為:
os=ia ⊕ ib ⊕ icarry
ocarry=ia·ib + (ia⊕ib)·icarry
可見,每乙個全加器的運算中,ia、ib都是已提供的,只有icarry需要低位傳遞過來,這也是效率低的原因,只要將icarry的值通過組合邏輯電路直接計算得到,就可省去等待進製的時間;
設第1位到第2位的進製為c1,輸入分別為a1、b1及c0,設g1=a1·b1,稱為本地進製函式,p1=a1⊕b1稱為傳遞進製函式,則有:
c1=a1·b1+(a1⊕b1)·c0=g1+p1·c0,
同理有:
c2=a2·b2+(a2⊕b2)·c1=g2+p2·c1=g2+p2·(g1+p1·c0)
=g2+p2·g1+p2·p1·c0;即:
c2=g2+p2·g1+p2·p1·c0;
c3=g3+p3·g2+p3·p2·g1+p3·p2·p1·c0;
c4=g4+p4·g3+p4·p3·g2+p4·p3·p2·g1+p4·p3·p2·p1·c0;
c5=g5+p5·g4+p5·p4·g3+p5·p4·p3·g2+p5·p4·p3·p2·g1+p5·p4·p3·p2·p1·c0;
c6=g6+p6·g5+p6·p5·g4+p6·p5·p4·g3+p6·p5·p4·p3·g2+p6·p5·p4·p3·p2·g1+p6·p5·p4·p3·p2·p1·c0;
c7=g7+p7·g6+p7·p6·g5+p7·p6·p5·g4+p7·p6·p5·p4·g3+p7·p6·p5·p4·p3·g2+p7·p6·p5·p4·p3·p2·g1+p7·p6·p5·p4·p3·p2·p1·c0;
c8=g8+p8·g7+p8·p7·g6+p8·p7·p6·g5+p8·p7·p6·p5·g4+p8·p7·p6·p5·p4·g3+p8·p7·p6·p5·p4·p3·g2+p8·p7·p6·p5·p4·p3·p2·g1+p8·p7·p6·p5·p4·p3·p2·p1·c0;
可見位數越多,進製的表示式越複雜,將序列進製變為並行進製是典型的用增加成本的方式加快執行速度,即用money換取time;
如下為4位並行加法器的程式框圖,之所以沒有畫8位並行加法器主要是8位的加法器連線太多,導致根本不能看清楚,有興趣的可以嘗試畫畫,保證您畫到想吐^-^;
另外需要說明,為了使連線盡可能少,故使用了很多的區域性變數,但是labview是資料驅動的語言(實際的計算機執行也類似於資料驅動,即資料流有一定的順序),而使用了全域性變數後,破壞了原來的資料流,所以可能導致運算錯誤,為了解決資料流混亂的問題,使用了順序結構;
第一幀:將整數化為布林陣列;
第二幀:計算本地進製函式g和傳遞進製函式p;
第三幀:將資料送入全加器中進行計算;
該程式中,由於空間有限,沒有畫出該4位加法器的進製c4,ocarry直接輸出為0;
實驗所得前面板如下:
Labview設計計算機 加法器 1
首先,需要說明電路中常用的兩個概念 組合邏輯電路和時序邏輯電路 組合邏輯電路的輸出僅與輸入有關,當輸入發生變化時,輸出幾乎立刻發生變化 時序邏輯電路的輸出不僅與當前輸入有關,還與電路過去的狀態有關,具有一定的記憶能力,通常由乙個時鐘驅動 加法器是乙個簡單的運算部件 加法器的結構由簡單到複雜分別為 半...
重學計算機組成原理(十二) 加法器
下面這些閘電路的標識,你需要非常熟悉,後續的電路都是由這些閘電路組合起來的。這些基本的閘電路,是我們計算機硬體端的最基本的 積木 包含十億級別電晶體的現代cpu,都是由這樣乙個乙個的閘電路組合而成的。基礎閘電路 2個8 位 bit 數的與 或 非邏輯運算 連續擺放8個開關,代表乙個8位數 這樣的兩組...
組建一台計算機1 硬體1 單位加法器
前言 放假有一周的時間,到家也有四五天的時間了,這幾天把 code 好好的看了一遍。儘管之前也有草草翻過,但是把時候我就曾告訴自己,無論如何都是要把書中的這些東西都實現一遍的。於是說幹就幹,這幾天基本上就在搞這些東西了。這些學習成果要感謝餘富帥給我傳的軟體以及一些推薦。1.小學代數相關知識 2.初中...