2007年5月13日 星期日

乘法器執行結果


乘法器執行結果


修改為乘法器

動作和步驟:
Step1;先將r1表乘數,再將乘數設為x(r1﹤﹣x),並且將COUNTER設定為0( r2﹤﹣0)
Step2:Push Bottom 是0或1
為1時,進入Step3。
為0時,返回Step1。
Step3:
判斷r1(乘數)是否大於等於y(此時的y為被乘數)且Push Bottom,這兩項去作邏輯運算。
為1時,進入Step4開始執行。
為0時,返回Step1。
Step4:
r2﹤﹣r2+y(r2本來是COUNTER用來計算聯加了多少次,所以r2等於r2加y)
r1﹤﹣r1-1(每做ㄧ次COMPUTE,r1就減一次,減到r1小於等於y後即停止。)
r3﹤﹣r2(將r2 值給r3)
執行完以上的步驟後,就可以知道被乘數y連加了乘數x(即r1)次,即可修改為乘法器。

divbookb的執行結果


課堂中的除法器


動作和步驟:
Step1;先將r1表除數,再將除數設為x(r1﹤﹣x),並且將COUNTER設定為0( r2﹤﹣0)
Step2:Push Bottom 是0或1
為1時,進入Step3。
為0時,返回Step1。
Step3:
判斷r1(除數)是否大於等於y(此時的y為被除數)且Push Bottom,這兩項去作邏輯運算。
為1時,進入Step4開始執行。
為0時,返回Step1。
Step4:
r1﹤﹣r1-y(將r1被除數減除數y)
r2﹤﹣r2+1(每做ㄧ次COMPUTE,r2就加一次)
r3﹤﹣r2(將r2 值給r3)
執行完以上的步驟後,就可以知道被除數y連減了除數x(即r1)次,並計算於COUNTER,即可修改為除法器。

Non-Restoring Division Example


Non-Restoring Division Algorithm


Non-Restoring Division Algorithm
是由restoring變化過來。在觀察restoring algorithm中,碰到餘數是負的時候不作restoring而是繼續平移一個bit下去在作處理。這樣在restoring每一級所必須的加法器將可省去。
 如果P是負的:
a. 向左平移(P,A)這兩個暫存器一個bit。
b. 加B到P。
如果P是正的:
a. 向左平移(P,A)這兩個暫存器一個bit。
b. 把P減B

商的處理: 如果P是負的設LSB(A)為0反之設LSB(A) to 1

Restoring Division Example


除法演算法


Restoring Division Algorithm

把x放入register A, d 放在register B, 0在register P,然後開始作n次除法的步驟(n 是商的word length)。

每個步驟將包涵:

1. 向左平移暫存器 (P,A) 一個bit。
2. 暫存器P減掉暫存器B, 並把結果再存回暫存器P。
3. 如果結果是負的, 設the low-order bit of A 為0否則為1。
4. 結果是負的確定之後, 把P加回B以回復舊的值P。

2007年4月1日 星期日