1圖1圖1圖1左是實現原碼一位乘法器的流程圖,右邊根據流程圖設計的概要圖,左邊的迴圈由右邊的計數器cnt控制,每次移位,得出yi的值(i及乘數y的第i位的值,0或1),由右圖可以看出,yi=0時,|x|通道關閉,0通道開啟,a通過alu加0,當yi=1時,0通道關閉,|x|通道開啟,a通過alu加|x|,之後alu再把得出的結果賦給a,依次迴圈這樣的操作,最後所得的結果就在a中(當然,第一次alu求和時a得確保為零)。
圖1可以實現原碼一位乘法器的設計,但是擁有迴圈的它是很低效的,我們必須得改進一下。圖2是我們的手工乘法,我們需從這上面找到新的方法。
圖 2圖2
圖2a*b的部分積部分,有與運算和與項求和,我們如圖3設計運算方法。
3圖3圖3整個圖3均為乘法的部分積部分,從最右邊開始,a0b0得出p0,a1b0+a0b1再加低位進製(由於低位沒有加法,就直接進零)得出p1,且有進製就進製,然後a2b0+a1b1+前面的進製得出的結果(有進製就進製)再加a0b2得出p2(有進製就進製),以此類推可得出全部結果。但我們可以發現每一組部分積都是序列進製,必須先得出低位才能進行下一位計算,這樣的效率還是不高,所以還需改進。
圖 4圖4
圖4我們可以把每一組部分及的進製都接入下一組部分積,這樣同一組部分積就能同時計算了,如圖4,但是最後一組部分積往下就沒有部分積了,那他把進製送到哪呢,我們可以自己再在下面新增一組這樣就能解決這個問題了。
圖 5圖5
圖5我們先將乘數與被乘數各位先與再根據圖4做出n*n原碼乘法陣列,符號位單獨進行異或運算。
圖 6圖6
圖6我想如果看懂了圖一,那麼此圖也一定不在話下。當然,圖6也比較效率低下,我們可以根據改進的原碼陣列乘法器再加以改進做出補碼陣列乘法器(真的很簡單,只需把補碼先變為原碼,得出結果後,再求一次補不就出來了嗎),如圖7
圖 7圖7
圖7
運算器設計(Logisim實現)
實驗平台介紹 1 logisim軟體是一種用於設計和模擬數字邏輯電路的工具。其簡單的工具欄介面和構建它們時的電路 使得它非常簡單,有助於學習與邏輯電路相關的基本概念。由於能夠從較小的子電路構建更大的電路,並通過單個滑鼠拖動來繪製電線束,因此可以達到使用logisim來設計和模擬整個cpu目的。實驗任...
運算方法和運算器
計算機中的資料分為 數值資料和非數值資料,數值資料有確定的值,有大小正負之分,能在數軸上找到它們的位置 非數值資料一般 用來表示符號或者文字,無值的含義。編碼格式 正數的原碼,反碼和補碼都一樣。負數的原碼 符號位為1,其餘不變。負數的反碼 在其原碼的基礎上,符號位不變,數值位取反。負數的補碼 是在其...
模擬簡單運算器
描述 模擬簡單運算器的工作。假設計算器只能進行加減乘除運算,運算數和結果都是整數,4種運算子的優先順序相同,按從左到右的順序計算。輸入 輸入在一行中給出乙個四則運算算式,沒有空格,且至少有乙個運算元。遇等號 說明輸入結束。輸出 在一行中輸出算式的運算結果,或者如果除法分母為0或有非法運算子,則輸出錯...