连续减算法的8位除法器设计Verilog代码Quartus仿真

本文详细介绍了使用Verilog语言在Quartus平台上设计了一个基于连续减算法的8位除法器,通过提供输入被除数和除数,输出商和余数,并展示了部分代码和仿真结果验证其正确性。
摘要由CSDN通过智能技术生成

名称:连续减算法的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
源代码

 扫描文章末尾的公众号二维码

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值