module DIVU(
input [:] dividend,
input [:] divisor,
input start,
input clock,
input reset,
output reg over,
output reg busy,
output [:] q,
output [:] r); reg [:] count;
reg [:] reg_q;
reg [:] reg_r;
reg [:] reg_b;
reg r_sign; wire [:] sub_add = r_sign?({reg_r,q[]} + {'b0,reg_b}):({reg_r,q[31]} - {1'b0,reg_b});
assign r = r_sign? reg_r + reg_b : reg_r;
assign q = reg_q; always @ (posedge clock or posedge reset) begin
if (reset) begin
count <= ;
busy <= ;
over <= ;
end
else if (start)begin
reg_r <= ;
r_sign <= ;
reg_q <= dividend;
reg_b <= divisor;
count <= ;
busy <= ;
end
else if (busy) begin
reg_r <= sub_add[:];
r_sign <= sub_add[];
reg_q <= {reg_q[:],~sub_add[]};
count <= count +;
if(count == ) begin
busy <= ;
over <= ;
end
end
end endmodule module DIV(
input signed [:] dividend,
input signed [:] divisor,
input start,
input clock,
input reset,
output reg over,
output reg busy,
output [:] q,
output reg [:] r); reg [:] count;
reg [:] reg_q;
reg [:] reg_r;
reg [:] reg_b;
reg r_sign; wire [:] sub_add = r_sign?({reg_r,q[]} + {'b0,reg_b}):({reg_r,q[31]} - {1'b0,reg_b}); assign q = reg_q; always @ (posedge clock or posedge reset)
if (reset) begin
count <= ;
busy <= ;
over <= ;
end
else begin
if (start) begin
reg_r <= ;
r_sign <= ;
if(dividend<)
reg_q <= -dividend;
else
reg_q <= dividend;
if(divisor<)
reg_b <= -divisor;
else
reg_b <= divisor;
count <= ;
busy <= ;
end
else if(busy) begin
if(count<=) begin
reg_r <= sub_add[:];
r_sign <= sub_add[];
reg_q <= {reg_q[:],~sub_add[]};
count <= count + ;
end
else begin
if(dividend[]^divisor[])
reg_q<=-reg_q;
if(!dividend[])
r<=r_sign? reg_r + reg_b : reg_r;
else
r<=-(r_sign? reg_r + reg_b : reg_r);
busy <= ;
over <= ;
end
end
end
endmodule

Verilog MIPS32 CPU(七)-- DIV、DIVU的更多相关文章

  1. Verilog MIPS32 CPU(八)-- 控制器

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  2. Verilog MIPS32 CPU(六)-- MDU

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  3. Verilog MIPS32 CPU(五)-- CP0

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  4. Verilog MIPS32 CPU(四)-- RAM

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  5. Verilog MIPS32 CPU(三)-- ALU

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  6. Verilog MIPS32 CPU(二)-- Regfiles

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  7. Verilog MIPS32 CPU(一)-- PC寄存器

    Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...

  8. Verilog MIPS32 CPU(九)-- 顶层文件

    `timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...

  9. P4-verilog实现mips单周期CPU

    最近对学习的掌控可能出现了问题,左支右绌,p2挂了,p2.p3.p4.p5每周在计组花的连续时间少了很多,学习到的东西也少了很多,流水线都还没真正开始写,和别人比落后了一大截,随笔自然就荒废了,我得尽 ...

随机推荐

  1. vs2012应用程序的打包和图标设置

    最近用VS2010+QT做了一个小软件,为了把它打包发布,查了很多资料,现在总结下,便于以后查看. 本方法不限于VS2010,也不限于QT,只要你运行你的代码得到exe之后,都可以参照本方法进行. 参 ...

  2. 关于Android的margin(当前视图与周围视图的距离)和padding(当前视图与内部内容的距离)

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  3. IOS Background 之 Background Fetch

    http://www.ithao123.cn/content-1363653.html 定期更新数据的app,比如及时通信类,微博等app. 定期后台获取,等打开后获取的快一些. 30分钟后打开手,获 ...

  4. 集群的session问题解决方案

    一.nginx ip_hash 同一个ip的请求转发到同一个服务器,太low不解释. 二.spring-session 原理:存入session中的key-value,同时存放到redis中,如果se ...

  5. Linux 统计当前目录下文件数

    Linux 统计文件数 linux统计当前目录下文件数 ls -l |grep "^-"|wc -l linux统计当前目录下文件(包括子文件夹下的)数 ls -lR|grep & ...

  6. 封装basedao

    package com.huawei.common; import java.sql.ResultSet;import java.sql.SQLException; public interface ...

  7. bugfree调试

    最近项目用到bugfree  ,一直不能用,原来是session目录的文件权限有问题.

  8. bash's parameter expansion

    [bash's parameter expansion] #: find first from left, remove-left ##: find last from left, remove le ...

  9. 高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例

    概述 从这篇博文起,将带领读者们一起领略Nginx的强大. Nginx 是做什么用的?我相信很多朋友都已经使用过,如果你没有,那么你一定知道以下这些名称之一:Apache,Lighttpd,Tomca ...

  10. UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr!

    UNITY调用安桌方法出现 JNI: Init'd AndroidJavaClass with null ptr! 原因是····· 得运行在一个真正的Android设备上! 得运行在一个真正的And ...