VHDL中的除法如何實現?
11-04
如何用VHDL來描述整數除法,有哪些演算法邏輯?
精度要求不高的話都是將除法轉換為乘法加移位
例如:a/5=a*(1/5*1024)/1024
即約等於a*205再右移10bit看不懂那就補充下細節,fpga里沒有除法單元,只有乘法單元,這種方式的本質是把除法轉換成了查表、乘法和移位(右移幾n位就是除以2的n次方),a/1=a*(1/1*1024)/1024=a*1024/1024
a/2=a*(1/2*1024)/1024=a*512/1024a/3=a*(1/3*1024)/1024=a*314/1024a/4=a*(1/4*1024)/1024=a*256/1024a/5=a*(1/5*1024)/1024=a*205/1024···
a/255=a*(1/255*1024)/1024=a*4/1024實現計算過程時把(1024,512,314,256,205...,4)存到一個rom里,除以多少就取第幾個數乘a,除1024再等效為右移10bit。整數除法……,提問的,自己的作業具體要求都沒搞清楚吧。如果是沒有時間要求(cycle),就按照小學學到的除法計算方法——比較、減、移位……循環就可以了啊。最後得到商和餘數。這個不需要說明了吧。
如果有拍數要求:
常數除法,就和有一個回答的一樣,轉換為a*m/(2^n);如果是減少範圍的除數,給出一個查找表最簡單,比如只有除2~9,那就做一個1/2~1/9的表即可。a/b就轉化為a*LUT(b),LUT(b)的精度視情況而定;較高精度要求又需要計算速度的就是用牛頓迭代了。不過估計作業沒那麼高要求吧,呵呵。
一切FPGA中的計算都是對加法的各種處理, 除法本質也是一樣
從這個思路出發, 或許你就可以明天它的指數機制
可以看看關於數制的東西,我記得自己動手寫cpu裡面有除法,只不過他是用hdl,,自己轉換一下
我和jacky吳的觀點大體是一樣的如果是做FPGA開發,直接調用IP就好如果是想做個玩具,隨便找本書或者上網搜下有一堆如果是想搞個大新聞,建議參考論文,我以前看過一篇上海交大的碩士畢業論文,等下回家幫你找下
如果做FPGA開發,調用ip好了…想鑽研,你能百度到怎麼手寫
推薦閱讀:
※PCIE開發筆記(七)DLL介紹(上)
※大話Verilog——Verilog入門(一)
※對MOS管驅動電路一知半解?這裡有你想要知道的一切
※北理882數字電路複習_001
※Verilog有限狀態機比較
TAG:數字電路 | VerilogHDL | 微機原理與介面技術 |