名称:连续减算法的8位除法器设计Verilog代码Quartus仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
连续减算法的8位除法器设计
要求:
1、使用连续减算法设计一个8位除法器,语言Verilog
2、输入为被除数、除数
3、输出为商、余数
1.算法介绍
连续减算法
2.工程文件
3.程序文件
4.程序编译
5.Testbench
6.RTL图
7.资源消耗图
8.仿真图
上图17除以4等于4余数1,结果正确
上图255除以12等于21 余数3 ,结果正确
上图95除以31等于3余数2,结果正确
上图167除以23等于7余数6,结果正确
需要周期与商有关,商越大,需要时钟周期越多
部分代码展示:
module Divider_8bit( input clk,//时钟 input div_en,//开始计算信号,为高电平开始 input [7:0] Divisor,//被除数 ,Divisor/dividend input [7:0] dividend,//除数 output [7:0] shang,//商 output [7:0] yushu//余数 ); wire [15:0] Divisor_extend;//扩展为16位 assign Divisor_extend=Divisor; parameter state_idle =3'd0;//空闲状态 parameter state_load = 3'd1;//加载被除数 parameter state_sub = 3'd2;//循环减 parameter state_judge = 3'd3;//判断是否大于除数 parameter state_end = 3'd5;//结束 reg [2:0] state=3'd0; reg [15:0] data=16'd0; reg [7:0] sub_cnt=8'd0;//减次数累计 reg [7:0] shang_reg=8'd0;//商 reg [7:0] yushu_reg=8'd0;//余数 always@(posedge clk) case(state) state_idle:begin sub_cnt<=8'd0; if(div_en==1)//加载被除数 state<=state_load; else state<=state_idle; end state_load:begin data<=Divisor_extend;//加载被除数 state<=state_sub; sub_cnt<=8'd0; end state_sub:begin sub_cnt<=sub_cnt+8'd1;//减次数累计 data<=data-dividend;//减 state<=state_judge; end
源代码
扫描文章末尾的公众号二维码