Verilog MIPS32 CPU(六)-- MDU
- Verilog MIPS32 CPU(一)-- PC寄存器
- Verilog MIPS32 CPU(二)-- Regfiles
- Verilog MIPS32 CPU(三)-- ALU
- Verilog MIPS32 CPU(四)-- RAM
- Verilog MIPS32 CPU(五)-- CP0
- Verilog MIPS32 CPU(六)-- MDU
- Verilog MIPS32 CPU(七)-- DIV、DIVU
- Verilog MIPS32 CPU(八)-- 控制器
module MDU(
input clk,rst,
input [:] mdu,
input [:] rdata1,rdata2,
output [:] mul_out,
output reg pc_ena,
output reg [:] hi,lo); wire div_start,divu_start,div_busy,divu_busy,div_over,divu_over;
wire [:] mult_out,multu_out,div_out,divu_out; assign mul_out = mult_out;
/*
1 mult
2 multu
3 div
4 divu
5 mthi
6 mtlo
*/
//assign pc_ena=1'b1; always@(*)begin
case(mdu)
'h3: pc_ena = div_over ||mdu!=3'h3;
'h4: pc_ena = divu_over||mdu!=3'h4;
default:pc_ena = 'b1;
endcase
end assign div_start = mdu=='h3&&!div_busy;
assign divu_start = mdu=='h4&&!divu_busy; always@(posedge clk or posedge rst)begin
if(rst) begin
hi<='b0;
lo<='b0;
end
else begin
case(mdu)
'h1: {hi,lo} <= mult_out;
'h2: {hi,lo} <= multu_out;
'h3: {lo,hi} <= div_out;
'h4: {lo,hi} <= divu_out;
'h5: hi <= rdata1;
'h6: lo <= rdata1;
endcase
end
end
mult_gen_0 multiplier(
.A(rdata1),
.B(rdata2),
.P(mult_out)); mult_gen_1 multiplier_unsigned(
.A(rdata1),
.B(rdata2),
.P(multu_out)); DIV DIV(
.dividend(rdata1),
.divisor(rdata2),
.clock(clk),
.reset(mdu!='h3),
.start(div_start),
.q(div_out[:]),
.r(div_out[:]),
.over(div_over),
.busy(div_busy)); DIVU DIVU(
.dividend(rdata1),
.divisor(rdata2),
.clock(clk),
.reset(mdu!='h4),
.start(divu_start),
.q(divu_out[:]),
.r(divu_out[:]),
.over(divu_over),
.busy(divu_busy));
endmodule
Verilog MIPS32 CPU(六)-- MDU的更多相关文章
- Verilog MIPS32 CPU(八)-- 控制器
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(七)-- DIV、DIVU
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(五)-- CP0
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(四)-- RAM
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(三)-- ALU
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(二)-- Regfiles
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(一)-- PC寄存器
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- Verilog MIPS32 CPU(九)-- 顶层文件
`timescale 1ns / 1ps /////////////////////////////////////////////////////////////////////////////// ...
- P4-verilog实现mips单周期CPU
最近对学习的掌控可能出现了问题,左支右绌,p2挂了,p2.p3.p4.p5每周在计组花的连续时间少了很多,学习到的东西也少了很多,流水线都还没真正开始写,和别人比落后了一大截,随笔自然就荒废了,我得尽 ...
随机推荐
- Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API log if possible. <class 'sqlalchemy.exc.OperationalError'> (HTTP 500) (Request-ID: req-6ac88345-ce5a
Unexpected API Error. Please report this at http://bugs.launchpad.net/nova/ and attach the Nova API ...
- Spring实战之切面编程
如果要重用通用功能的话,最常见的面向对象技术是继承(inheritance)或委托(delegation).但是,如果在整个应用中都使用相同的基类,继承往往会导致一个脆弱的对象体系:而使用委托可能需要 ...
- git之生成SSH key
git之生成SSH key SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定.利用 SSH 协议可以有效防止远程管理过程中的信 ...
- C#中使用lockbits方法处理图像
转自 使用lockbits方法处理图像(转) 许多图像处理任务即时是最简单的文件类型转换,例如从32位深度到8位深度的格式转化,直接获得像素阵列要比使用GetPixel和SetPixel等方法的效率高 ...
- 「小程序JAVA实战」小程序的表单组件(25)
转自:https://idig8.com/2018/08/18/xiaochengxujavashizhanxiaochengxudebiaodanzujian25/ 来说下 ,小程序的基础组件.源码 ...
- 黑暗之光 Day1
1. 设置鼠标指针图标 Build Setting -> Player Setting 2. 添加雾的效果 Window->Lighting->Settings. 3. 任意键按下事 ...
- Failed to start component [StandardEngine[Catalina].
出现以下的错误的原因: 检查 web.xml文件,应该是<filter>和<filter-mapping>或者<servlet>和<servlet-mappi ...
- PHP中使用CURL模拟文件上传实例
调用实例: 该方法将本地的E盘文件test.doc上传到接口服务器上的 uploadFile方法中,uploadFile会对上传的文件做进一步处理. 若你想自己对上传的文件做操作,将接口uploadF ...
- manta api
Authentication 有几个访问方法. 验证对服务的请求的主要方法是使用TLS上的HTTP签名. 在大多数情况下,您只需使用SSH私钥对HTTP Date标头的小写日期:和值进行签名; 这样做 ...
- 读书笔记 Week7 2018-4-24
<程序员的自我修养> 首先来大致说一下读这本书的感觉,可以说对于我自己而言,是第一次对于编程有了个纯粹的认识,或者说的更明确一点,是对整个操作系统有了一个大致的感觉.虽然自己这一年也算是写 ...