【摘要】
基於計算機組成原理課程實踐環節的建設,以提高學生實踐技能為目的,總結教學經驗,應用數位電路設計方法與技巧,考慮可行性,設計一種定點原碼一位乘法器的實現方案,包含初始化資料,啟動、停止運算,顯示運算過程等功能,用以指導教學實踐。
乘法器、定點原碼一位乘法、計算機組成原理、計算機組成與結構
一、引言
在計算機組成原理知識教學過程中,關於二進位制乘法運算是乙個較難理解的環節,其中又以「定點原碼一位乘法演算法」是最基礎的,針對這一演算法設計實驗方案,為學員提供實踐環境,對深入理解這一問題、以及進一步的學習其他乘法乃至除法演算法都十分重要。
二、定點原碼一位乘法演算法
兩個原碼數相乘,其乘積的符號為相乘兩數符號的異或值,數值則為兩數絕對值之積。例如:
[x]原=x0x1x2…xn,x0
為符號
[y]原
=y0y1y2…yn,y0
為符號
則[x·y]原=
(x0⊕y0)|
(x1x2…xn)·
(y1y2…yn
),符號「
|」表示把符號和數值鄰接起來。
在計算時,符號位和數值位分別進行計算。對於數值位,逐次按乘數每一位(從低位到高位)上的值是1還是
0,決定乙個相加數或者是被乘數或者是
0,並向左偏移一位去加上次計算得到的和(它又被稱為部分積,其初值為
0),如此進行乘數字數次,最終得到乘積。在此需要注意的是:「相加數向左偏移一位後求和」和「上次計算得到的和向右偏移一位後求和」兩種求和的方法是等效的,設計乘法器時採用後一種方法,其目的是尋求部份積與乘數移位方向的一致性。 例如
x的值為
1101,y
的數值為
1011
,求x·y
數值的過程如下:http://download1.csdn.net/down3/20070610/10014047167.jpg
三、定點原碼一位乘法器的邏輯結構
根據以上演算法,設計定點原碼一位乘法器的邏輯結構如下圖所示:http://download1.csdn.net/down3/20070610/10014204349.jpg
其中n位暫存器
s1n稱為部分積暫存器,初值為
0,計算結束時寄存乘積高位;一位暫存器
s0用以寄存乘積符號;
n+1位暫存器
y0n稱為被乘數暫存器;
n位暫存器
x1n稱為乘數暫存器,初值為乘數,計算結束時寄存乘積低位;一位暫存器
x0用以寄存乘數符號。
控制訊號
scr用於
s1n清零,低電平有效;
scp用於
s1n的觸發,上公升沿有效;
s0cp
用於s0
的觸發,上公升沿有效,
x0cp
用於x0
的觸發,上公升沿有效,並且乘法器執行時,要求先產生
x0cp
,然後再產生
s0cp
,所以這兩個訊號正好應用乙個正脈衝的兩個邊沿;
xcp用於
x1n的觸發,上公升沿有效;
ycp用於
y0n的觸發,上公升沿有效;
isc用於控制
x1n是選擇開關組值作輸入還是選擇移位的部分積作輸入。
另外,暫存器
x1n的最低位
xn採用「與」運算用於控制輸入加法器一端的是被乘數還是
0,所以為了防止發生不可預期的連加,
scp和
xcp必須是單穩態邊沿觸發訊號。
應用該電路實現定點原碼一位乘法的計算過程如下: 1)
利用n+1
位開關組使用
ycp初始化被乘數暫存器
y0n為被乘數y。
2)利用n+1
位開關組使用
x0cp
、xcp
始化乘數暫存器x0、
x1n為乘數x。
3)使用s0cp令s0
儲存結果符號。 4)
使用scr
把部分積暫存器
s1n清零。 5)
同時傳送
scp、
xcp訊號
n次後得到計算結果。 6)
停止。
開關組k0…kn
和led
組伴隨計算的進行分別用以輸入被乘數、乘數以及顯示部分積的變化情況以及最終結果。
四、定點原碼一位乘法器的控制電路
由於以上乘法器電路較複雜,使用過程中所需控制訊號較多,操作控制較麻煩的特點,另外設計專門的控制電路為進一步驗證其功能帶來方便,同時也使這一設計方案自成體系,構成乙個完整的應用系統。http://download1.csdn.net/down3/20070610/10014306849.jpg
該控制電路的輸出自然是乘法器所需控制訊號
ycp、
xcp、
s0cp
、x0cp
、scp
、scr
和isc
,考慮到這些控制訊號具體應用的時態有所不同,並且有的是邊沿有效,有的是電平有效,所以設計單穩態觸發按鈕
b和開關組
kc1、
kc2、
kc3作為控制電路的輸入,開關組的不同組合值可以標識計算過程進行的步驟。據此就可以得到如下控制電路的輸入與輸出訊號的真值表。http://download1.csdn.net/down3/20070610/10014334305.jpg
以上真值表第二步「初始化乘數」的同時,也初始化了部分積,這時部分積暫存器
s1n雖然會變成不可預期的結果,但是因其無關性並不至於導致錯誤。因為第四步「清部分積暫存器」又使它改變為正確的初始化值。
根據以上真值表反映的邏輯關係得到控制電路的如下邏輯電路圖:
在該控制電路中,三八解碼器使用
kc1、
kc2、
kc3作由高到低的三路輸入,輸出訊號
正好用以標識計算過程中的前五個步驟,而當
kc1輸入高電平時,不論
kc2、
kc3為何值,
都會失效,自然會使乘法器陷入停止態。
另外,判
n電路會因為計數器出現
n值產生低電平,一方面禁止產生計算時的暫存器移位觸發訊號
scp和
xcp,從而停止計算;另一方面又禁止「加
1計數器」繼續計數,使乘法器可靠的停在結果保持態。
五、定點原碼一位乘法器的物理實現
根據定點原碼一位乘法器的邏輯結構和控制電路,可以選擇目前電子市場上常見的
74ls181
、74ls273
、74ls74
、74ls161
、74ls04
、74ls37
、74ls51
、74ls138
等積體電路晶元,繪製物理佈線圖,並借助數位電路實驗儀器或麵包板連線實驗電路,成功地進行4位、
8位、12位、
……定點原碼一位乘法器的功能驗證。
六、總結
以上遵循分析、設計、實現的思路,環環相扣地設計了一種定點原碼一位乘法器的實現方案,包含了完善的功能,且自成體系,特別是其中關於無關項或無關操作應用、單穩態觸發應用、結果保持、運算停止等實現細節上的方法、技巧的描述,對於指導學習或者改進演算法開發更高效能的乘法器和其他相關器件都具有積極的指導意義。
此文發表於:《電腦知識與技術》(學術交流)
2023年08期
FPGA 設計乙個原碼一位乘法器
一 運算規則 x y p 引入部分積的概念,每次y的一位和x相乘的結果叫做部分積 每次相乘後需要右移一位,再處理y下一位的數值 1.符號位單獨計算 異或運算 符號組合就4種 00.01.11.10 異或運算即相同為0,不同為1 2.被乘數x 和乘數y 都取絕對值計算 3.一般把被乘數x取雙符號位,並...
一位原碼的乘法規則 原碼一位乘法的實現演算法
原碼一位乘法的實現演算法 一 用原碼實現乘法運算是十分方便的。原碼表示的兩個數相乘,其乘積的符號為相乘兩數符號的異或值,數值則為兩數絕對值之積。假定 x 原 xsx1 x2 xn y 原 ysy1y2 yn 則 x y 原 x 原 y 原 xs ys x1x2 xn y1 y2 yn 結果是把符號位...
一種Jingle開源庫的檔案傳輸原理與實現
0引言 隨著即時通訊 im 軟體已經成為網際網路資訊平台的重要組成部分 4 但基於自身利益的考慮,各個im軟體均制定並保守自己支援的通訊協議格式和標準,導致了各個通訊軟體不能互聯互通,客觀上制約了im的發展。xmpp 協議標準解決了不同即時通訊平台資訊互通的難題。基於xmpp擴充套件p2p協議的應用...