B=AK+R
R為餘數, K為除數
想設計一個求餘數電路,
但遇到一個問題,
用Verilog code來說明一下問題所在,
...
R <= (B-K>0)?B-K:B;
..
問題就是, B-K 不一定落在K的範圍,
也就是 B-K 有可能再 大於 K
因此, 要怎麼做, 才能一步搞定 R, 不用再等數個clock才能得到結果
sglee wrote:
B=AK+R
R為餘數, K為除數
想設計一個求餘求餘數電路數電路,
但遇到一個問題,
用Verilog code來說明一下問題所在,
...
R <= (B-K>0)?B-K:B;
..
問題就是, B-K 不一定落在K的範圍,
也就是 B-K 有可能再 大於 K
因此, 要怎麼做, 才能一步搞定 R, 不用再等數個clock才能得到結果
這題在 N 年以前 , 還沒有 VHDL 的年代裡就用 OrCAD 還是啥類似的玩意用手工畫過 4*4 單步硬乘器 , 光是 look-ahead adder 的部份就非常壯觀, 尤其是 MSB 的輸入 , 多得和蜘蛛網一樣密密麻麻 . 單步求餘就是單步硬除器 . 先由最簡單的 2 bits / 2 bits 單步硬除器, 再推導 3 bits / 3 bits 單步硬除器思考吧 .
單步硬乘是以多級移位加法來取代迴圈 , 單步硬除是以多級移位減法來取代迴圈 . 唯有如此才能把序列迴圈操作轉換成單步平行操作 .
101 (被移位) * 011 (決定有無) = 10100 * 0 + 1010 * 1 + 101 * 1
4 bits 因為閘延遲之故 , 模擬的結果還是要至少 2.5 cycle 得到結果 . 當然那是用極速在飆電路 . 如果把 ALU 速度降一半是可以單步跳出答案 .
16 x 16-bit Parallel Multiplier
http://www.logicdevices.com/ps/pdf/lmu18.pdf
Parallel multiplier using skip array and modified wallace tree
http://www.freepatentsonline.com/5181185.pdf (US PAT 5,181,185)
Non-recovery parallel divider circuit
http://www.freepatentsonline.com/5007009.pdf (US PAT 5,007,009)




























































































