名稱(chēng):連續(xù)減算法的8位除法器設(shè)計(jì)Verilog代碼Quartus仿真
軟件:Quartus
語(yǔ)言:Verilog
代碼功能:
連續(xù)減算法的8位除法器設(shè)計(jì)
要求:
1、使用連續(xù)減算法設(shè)計(jì)一個(gè)8位除法器,語(yǔ)言Verilog;
2、輸入為被除數(shù)、除數(shù);
3、輸出為商、余數(shù)。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1.算法介紹
連續(xù)減算法
2.工程文件
3.程序文件
4.程序編譯
5.Testbench
6.RTL圖
7.資源消耗圖
8.仿真圖
上圖17除以4等于4余數(shù)1,結(jié)果正確
上圖255除以12等于21 余數(shù)3 ,結(jié)果正確
上圖95除以31等于3余數(shù)2,結(jié)果正確
上圖167除以23等于7余數(shù)6,結(jié)果正確
需要周期與商有關(guān),商越大,需要時(shí)鐘周期越多
部分代碼展示:
module?Divider_8bit( input?clk,//時(shí)鐘 input?div_en,//開(kāi)始計(jì)算信號(hào),為高電平開(kāi)始 input?[7:0]?Divisor,//被除數(shù)?,Divisor/dividend input?[7:0]?dividend,//除數(shù) output?[7:0]?shang,//商 output?[7:0]?yushu//余數(shù) ); wire?[15:0]?Divisor_extend;//擴(kuò)展為16位 assign?Divisor_extend=Divisor; parameter?state_idle?=3'd0;//空閑狀態(tài) parameter?state_load?=?3'd1;//加載被除數(shù) parameter?state_sub?=?3'd2;//循環(huán)減 parameter?state_judge?=?3'd3;//判斷是否大于除數(shù) parameter?state_end?=?3'd5;//結(jié)束 reg?[2:0]?state=3'd0; reg?[15:0]?data=16'd0; reg?[7:0]?sub_cnt=8'd0;//減次數(shù)累計(jì) reg?[7:0]?shang_reg=8'd0;//商 reg?[7:0]?yushu_reg=8'd0;//余數(shù) always@(posedge?clk) case(state) state_idle:begin sub_cnt<=8'd0; if(div_en==1)//加載被除數(shù) state<=state_load; else state<=state_idle; end state_load:begin data<=Divisor_extend;//加載被除數(shù) state<=state_sub; sub_cnt<=8'd0; end state_sub:begin sub_cnt<=sub_cnt+8'd1;//減次數(shù)累計(jì) data<=data-dividend;//減 state<=state_judge; end
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=536