除法器设计Verilog代码VIVADO仿真
名称:除法器设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
32 位有符号、无符号除法器
了解 32 位有符号、无符号除法器的实现原理
使用 Verilog 实现一个 32 位有符号除法器和一个 32 位无符号除法器
无符号除法器功能为将两个 32 位无符号数相除,得到一个 32 位商和 32 位余数。本实
验分别实现 32 位有符号和无符号除法器,结果为 32 位商 quotient 和 32 位余数 remainder,
分别存放在 CPU 的专用寄存器 LO 和 HI 中。除法器时钟信号下降沿时检查 start 信号,有效
时开始执行,执行除法指令时,busy 标志位置 1。在执行除法指令时,任何情况下不产生算
数异常,当除数为 0 时,运算结果未知,对除法器除数为 0 和溢出情况的发生通过汇编指令
中其他指令进行检查和处理。
带符号除法器功能为:将两个 32 带无符号数相除,得到一个 32 位商和余数,基本
和无符号除法器类似,注意余数符号与被除数符号相同。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 设计代码

2. Testbench

3. 仿真图


1. 设计代码

2. Testbench

3. 仿真图


部分代码展示:
//除法器
module Divider_32bit(
input clock,//时钟
input reset,//复位
input start,//开始计算信号,为高电平开始
input [31:0]dividend,//被除数
input [31:0]divisor,//除数
output [31:0]q,//商
output [31:0]r,//余数
output busy//除法器忙标志位
);
parameter N=32;//N定义除法器位数
parameter M=5;//2^M=N
reg busy_buf=0;
wire [N-1:0] Divisor_unsigned;//无符号被除数 ,dividend/Divisor
wire [N-1:0] dividend_unsigned;//无符号除数
wire [N-1:0] shang;//无符号商
wire [N-1:0] yushu;//无符号余数
//将有符号数转为无符号数,正数不变,负数取反加1
assign dividend_unsigned=(dividend[N-1]==0)?dividend:(~dividend+1);
assign Divisor_unsigned=(divisor[N-1]==0)?divisor:(~divisor+1);
wire [2*N-1:0] Divident_extend;//扩展为2N位
assign Divident_extend=dividend_unsigned;
parameter state_idle =3'd0;//空闲状态
parameter state_load = 3'd1;//加载被除数
parameter state_leftshift = 3'd2;//左移
parameter state_judge = 3'd3;//判断高位是否大于除数
parameter state_sub = 3'd4;//减去
parameter state_end = 3'd5;//结束
reg [2:0] state=3'd0;
reg [2*N-1:0] data=16'd0;
reg [M-1:0] shift_cnt='d0;//移位次数累计
reg [N-1:0] shang_reg=8'd0;//商
reg [N-1:0] yushu_reg=8'd0;//余数
always@(posedge clock or posedge reset)
if(reset==1)
state<=state_idle;
else
case(state)
state_idle:begin
shift_cnt<='d0;
if(start==1)//加载被除数
state<=state_load;
else
state<=state_idle;
end
state_load:begin
data<=Divident_extend;//加载被除数
state<=state_leftshift;
shift_cnt<='d0;
end
state_leftshift:begin
shift_cnt<=shift_cnt+'d1;//移位次数累计
data<={data[2*N-2:0],1'b0};//左移
state<=state_judge;
end代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 除法器设计Verilog代码VIVADO仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 除法器设计Verilog代码VIVADO仿真