基于fpga的正整數(shù)除法器設(shè)計

基于fpga的正整數(shù)除法器設(shè)計

ID:18988919

大小:143.00 KB

頁數(shù):5頁

時間:2018-09-27

基于fpga的正整數(shù)除法器設(shè)計_第1頁
基于fpga的正整數(shù)除法器設(shè)計_第2頁
基于fpga的正整數(shù)除法器設(shè)計_第3頁
基于fpga的正整數(shù)除法器設(shè)計_第4頁
基于fpga的正整數(shù)除法器設(shè)計_第5頁
資源描述:

《基于fpga的正整數(shù)除法器設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、1.頂層模塊`timescale1ns/1ps////////////////////////////////////////////////////////////////////////////////////Company:西安電子科技大學(xué)//Engineer:piger朱////CreateDate:16:08:4205/11/2012//DesignName:基于FPGA的正整數(shù)除法器設(shè)計(被除數(shù)8位,除數(shù)4位)//ModuleName:div//ProjectName:div//TargetDevices:virtex-5//To

2、olversions:ISE12.4modelsim6.5se//Description:除法運(yùn)算的過程就是被除數(shù)不斷的減去除數(shù),直到二者的差為負(fù)數(shù)為止//但這樣做有一個缺點,比如100/100,只需要減一次就能得出結(jié)果,//而100/1需要減100次才能得出結(jié)果,如果一個時鐘周期做一次減法的//話,100/1需要100個時鐘周期,效率太低了?。。∥覀兛梢赃@樣做//以23/3為例,23(用a表示)的二進(jìn)制為0001_0111,3(用b表示)的//二進(jìn)制為0011,首先設(shè)置一個16為的寄存器reg16,用以輔助計算//令reg16={8'b0,

3、a}={0000_0000,0001_0111},每個周期令//reg16左移一位,如果reg16的高8位(reg16[15:8])大于b,則令//reg16[15:8]=reg[15:8]-b,同時令reg16的最低位(reg16[0])//等于1;如果reg16的高8位小于b,則reg[16:8]保持不變,同時令//reg16[0]=0....如此重復(fù)8個周期,也就是reg16左移八次之后,//reg16[7:0]中存儲的值就是最終的商,reg16[15:8]>>1的值就是//最終的余數(shù)。至于為什么會這樣,大家把這個流程走一邊自然就能明白

4、了//Dependencies:////Revision://Revision0.01-FileCreated//AdditionalComments:////////////////////////////////////////////////////////////////////////////////////modulediv(clk,rst,start,dividend,divisor,quotient,remainder,sample,error);inputclk;inputrst;inputstart;input[7:0]d

5、ividend;input[3:0]divisor;output[7:0]quotient;output[7:0]remainder;outputsample;outputerror;reg[15:0]divn;reg[3:0]divr;reg[1:0]state;reg[2:0]counter;regdo_sig;parameterIDLE=2'b00,ERROR=2'b01,SHIFT=2'b10;always@(posedgeclk)beginif(!rst)begindivn<=0;divr<=0;counter<=0;state<=

6、IDLE;endelsebegincase(state)IDLE:begincase(start)0:state<=IDLE;1:begindivn<={8'b0,dividend}<<1;divr<=divisor;counter<=0;do_sig<=0;if(divisor==0)state<=ERROR;elsestate<=SHIFT;endendcaseendSHIFT:begincounter<=counter+1;if(divn[15:8]>=divisor)begindivn<={divn[15:8]-divr,divn[7

7、:0]}<<1;divn[0]<=1;endelsebegindivn<=divn<<1;divn[0]<=0;endif(counter==7)beginstate<=IDLE;do_sig<=1;endelsestate<=SHIFT;endERROR:begin//state<=IDLE;enddefault:state<=IDLE;endcaseendendassignquotient=divn[7:0];assignremainder=divn[15:8]>>1;assignsample=do_sig;assignerror=(st

8、ate==ERROR);endmodule2.測試文件`timescale1ns/1psmodulediv_tb;//Inputsregclk;regrst;reg

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。