HDL系列 除法器 2 不恢復餘數法

2021-10-24 02:26:41 字數 1182 閱讀 2454

目錄

一、不恢復餘數法(non-restoring division algorithm)

二、不恢復餘數法流程圖以及例子

上期我們介紹了二進位制除法器中的恢復餘數法,本期介紹不恢復餘數法。

不恢復餘數法商數的選擇使用代替。雖然相比於不恢復餘數法演算法複雜一些,但是硬體實現上更有優勢,每產生乙個商的位元位只需要一次加或減操作,並且在減法操作後不需要進行餘數恢復,使得執行的速度更快。

其中,n為被除數,

d為除數。

r為餘數,

q為商。

商位元位-1一般儲存對映為0,由於餘數r的範圍為:-d <= r < d。比如5/3=?的r和q的結果:

5 = 2*3-1,q=2,r=-1

5 = 1*3+2,q=1,r=2

所以需要通過以下算式校準,將餘數r轉換為正數:

不恢復餘數法的流程圖如下,以下用a替代為中間暫存器,初始化為被除數n:

不恢復餘數法流程圖

使用不恢復餘數法求被除數n=10,除數d=3的商q和餘數r?

10的二進位制為1010

3的二進位制為0011

-3的二進位制為1101

初始化如下:

n  = 4

d  = 000110000

-d = 111010000(忽略低4位)

a  = 000001010(預留一位進製)

謝謝您的閱讀!

原創不易,如果對您有幫助,記得點讚關注哦。歡迎批評指正,謝謝鼓勵!

一起「紙上談芯

」,共同學習:

不恢復餘數除法器

不恢復餘數除法器的基本演算法來自於恢復餘數除法器,區別在於當餘數變負時不停下恢復餘數而是繼續執行迭代,並在迭代中加上移位後除數而不是減去移位後除數,基本演算法如下所示 將除數向左移位到恰好大於被除數 若餘數為正 餘數減去移位後除數 若餘數為負 餘數加上移位後除數 若現餘數為正,該位結果為1,否則為0...

不恢復餘數除法器

不恢復餘數除法器的基本演算法來自於恢復餘數除法器,區別在於當餘數變負時不停下恢復餘數而是繼續執行迭代,並在迭代中加上移位後除數而不是減去移位後除數,基本演算法如下所示 將除數向左移位到恰好大於被除數 若餘數為正 餘數減去移位後除數 若餘數為負 餘數加上移位後除數 若現餘數為正,該位結果為1,否則為0...

恢復餘數除法器

恢復餘數除法器是一種常用的除法器,過程與手算除法的方法很類似,過程為 將除數向左位移直到比被除數大 執行被除數減除數操作,得餘數,並將商向左移位1位,空位補1 若餘數大於0,除數向右移位1位。如餘數小於0,餘數加當前除數,商最後一位置0,除數向右移位1位 重複到2,只到除數比最初的除數小 rtl 就...