基于Verilog計算精度可調的整數除法器的設計
0 引 言
除法器是電子技術(shù)領(lǐng)域的基礎模塊,在電子電路設計中得到廣泛應用。目前,實(shí)現除法器的方法有硬件實(shí)現和軟件實(shí)現兩種方法。硬件實(shí)現的方法主要是以硬件的消耗為代價(jià),從而有實(shí)現速度快的特點(diǎn)。用硬件的方法來(lái)實(shí)現除法器的研究很多,如利用微處理器實(shí)現快速乘除法運算,FPGA實(shí)現二進(jìn)制除法運算,模擬除法器等;而通過(guò)軟件實(shí)現的除法器算法,可以大大提高器件的工作頻率和設計的靈活性,可以從總體上提高設計性能,而設計高效實(shí)用的算法是除法器的關(guān)鍵,故除法器的算法研究成為現今熱點(diǎn)。
目前,軟件方面主要是通過(guò)減法算法來(lái)實(shí)現除法運算,把被除數作為被減數,除數作為減數,作減法,直到被減數小于減數為止,記錄能夠相減的次數即得到商的整數部分。將所得的余數乘以10作為被減數,除數作為減數,作減法,差重新置入被減數,反復相減,直到被減數小于減數為止,記錄能夠相減的次數即得到商的十分位數值。依此繼續下去,可得到商的百分位數值,千分位數值,……,要精確到哪一位,就依次做到哪一位。此方法的缺點(diǎn)是速度慢,而且最后一位的精度不高,為了克服以上的缺點(diǎn),這里設計一種算法在軟件上改進(jìn)了除法器運算的準確性和處理速度。
1 設計方法
對于任意給定的兩個(gè)整數fenzi和fenmu,設fenzi為被除數,fenmu為除數。為了得到兩個(gè)數相除的十進(jìn)制結果,本設計主要通過(guò)下面的算法來(lái)實(shí)現,假如要保留小數點(diǎn)后面的n位有效數字,首先把fenzi乘以10的n次方,賦值給寄存器變量dataO;接著(zhù)把fenmu分別乘以10的(n+m),(n+m一1),(n+m一2),…,1,O次方分別賦值給(n+m+1)個(gè)不同的變量data(n+m+1),data(n+m),…,datal,其中m是fenzi和fenmu的位數之差(當fenzi的位數多于fenmu時(shí),m為正,否則為負);先求出商的最高位的值,如果dataO大于data(n+m+1),則計數器自動(dòng)加1,再把dataO和data(n+m+1)的差值賦給data0,再相減直到data0的值小于data(n+m+1),此時(shí)計數器的計數值就是最高位的值;依此用同樣的方法繼續下去,就可得到各個(gè)位上的值。對最后一位進(jìn)行四舍五入處理,當相減后的dataOdatal時(shí),再通過(guò)比較dataO*2是否大于datal,如果大于datal,則最后一位計數器的值加1,否則不變,最后把得到的整體值除以10的n次方,也就是小數點(diǎn)往左移動(dòng)n位。傳統除法算法由于采用多次相減的過(guò)程來(lái)實(shí)現,相減的過(guò)程耗費了大量時(shí)鐘脈沖,而且對運算結果的最后一位沒(méi)有進(jìn)行處理;而本設計是通過(guò)采用位擴展使除數和被除數位數相同,進(jìn)而對每一位進(jìn)行分開(kāi)處理,減少了做減法運算的次數,從而提高運算速度;同時(shí)采用四舍五入的方法對運算結果進(jìn)行處理,提高準確性。上面算法是一種順序方式,用Verilog硬件描述語(yǔ)言很容易實(shí)現,圖1為流程圖,其中假定fenzi為3位的整數,fenmu為2位的整數,除法運算精確到百分位。
2 仿真結果及分析
對上述的流程圖用Verilog描述語(yǔ)言編程,在Ca―dence的NC―Verilog仿真器下仿真,設輸入的Ienzi和fenmu的值分別為128和11,仿真波形如圖2所示。
評論