verilog 除法器
生活随笔
收集整理的這篇文章主要介紹了
verilog 除法器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
verilog 除法器:利用二進制的除法翻譯過來的硬件電路
1.1 實現算法
基于減法的除法器的算法:
? ? ? ? 對于32的無符號除法,被除數a除以除數b,他們的商和余數一定不會超過32位。首先將a轉換成高32位為0,低32位為a的temp_a。把b轉換成高32位為b,低32位為0的temp_b。在每個周期開始時,先將temp_a左移一位,末尾補0,然后與b比較,是否大于b,是則temp_a減去temp_b將且加上1,否則繼續往下執行。上面的移位、比較和減法(視具體情況而定)要執行32次,執行結束后temp_a的高32位即為余數,低32位即為商。(注意spartan—6上只支持16位的除法,也就是最高為65535內的除法)1.2 圖解步驟
附錄:算法推倒(非原創):
假設4bit的兩數相除 a/b,商和余數最多只有4位 (假設1101/0010也就是13除以2得6余1)
我們先自己做二進制除法,則首先看a的MSB,若比除數小則看前兩位,大則減除數,然后看余數,以此類推直到最后看到LSB;而上述算法道理一樣,a左移進前四位目的就在于從a本身的MSB開始看起,移4次則是看到LSB為止,期間若比除數大,則減去除數,注意減完以后正是此時所剩的余數。而商呢則加到了這個數的末尾,因為只要比除數大,商就是1,而商0則是直接左移了,因為會自動補0。這里比較巧因為商可以隨此時的a繼續左移,然后新的商會繼續加到末尾。經過比對會發現移4位后左右兩邊分別就是余數和商。
畫個簡單的圖:
轉載于:https://www.cnblogs.com/wandashuai/p/10741065.html
總結
以上是生活随笔為你收集整理的verilog 除法器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通俗易懂讲解javaSocket编程
- 下一篇: @Transactional 使用