• 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 [2:0] mdu,input [31:0] rdata1,rdata2,output [63:0] mul_out,output reg pc_ena,output reg [31:0] hi,lo);wire div_start,divu_start,div_busy,divu_busy,div_over,divu_over;wire [63:0] mult_out,multu_out,div_out,divu_out;assign    mul_out    =    mult_out;/*1    mult2    multu3    div    4    divu5    mthi6    mtlo*///assign pc_ena=1'b1;always@(*)begincase(mdu)3'h3:    pc_ena    =    div_over ||mdu!=3'h3;3'h4:    pc_ena    =    divu_over||mdu!=3'h4;default:pc_ena    =    1'b1;endcaseendassign    div_start    =    mdu==3'h3&&!div_busy;assign    divu_start    =    mdu==3'h4&&!divu_busy;always@(posedge clk or posedge rst)beginif(rst) beginhi<=32'b0;lo<=32'b0;endelse begincase(mdu)3'h1:    {hi,lo}    <=    mult_out;3'h2:    {hi,lo}    <=    multu_out;3'h3:    {lo,hi}    <=    div_out;3'h4:    {lo,hi}    <=    divu_out;3'h5:    hi         <=    rdata1;3'h6:    lo        <=    rdata1;endcaseend endmult_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!=3'h3),
        .start(div_start),.q(div_out[63:32]),.r(div_out[31:0]),.over(div_over),.busy(div_busy));DIVU DIVU(.dividend(rdata1),.divisor(rdata2),.clock(clk),.reset(mdu!=3'h4),
        .start(divu_start),.q(divu_out[63:32]),.r(divu_out[31:0]),.over(divu_over),.busy(divu_busy));
endmodule

转载于:https://www.cnblogs.com/liutianchen/p/7616757.html

Verilog MIPS32 CPU(六)-- MDU相关推荐

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

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

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

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

  3. Verilog流水线CPU设计(超详细)

    上篇:Verilog单周期CPU设计(超详细) 本篇完整工程下载链接,已于19.12.17更新 实验 流水线CPU 一.设计目的与要求 1.1 实验内容 1.2 实验要求 1.3 实验创新 二.课程设 ...

  4. HDL4SE:软件工程师学习Verilog语言(六)

    6 表达式与赋值 我们终于可以继续学习了,也是没有办法,其实工作的80%的时间都是在忙杂事,就像打游戏一样,其实大部分时间都在打小怪,清理现场,真正打终极BOSS的时间是很少的,但是不清小怪,打BOS ...

  5. 怎么运行verilog语言_(六) Verilog入门之有限状态机

    现在让我们回到主线,继续FPGA编程的学习.之前我们我们在测试FPGA是否工作时所用到的代码里面有组合逻辑,如加法器:也有时序逻辑,如将时钟信号分频而得到的闪烁灯. 但如何组合这两种逻辑实现我们所需的 ...

  6. 高性能低功耗服务器cpu,六核仅35W:AMD披露超低功耗服务器CPU

    [IT168 资讯]除了面向双路和四路高性能市场的八/十二核心处理器"马尼库尔"(Magny-Cours),AMD下一代服务器平台还有另一个分支,那就是面向单路和双路节能型领域的四 ...

  7. 程序员职业生涯规划必读的十本书

    参与文末每日话题讨论,赠送异步新书 你所能犯的最大错误就是相信自己是在为别人工作.这样一来你对工作的安全感已然尽失.职业发展的驱动力一定是来自个体本身.记住:工作是属于公司的,而职业生涯却是属于你自己 ...

  8. sign函数的功能oracle,Oracle中sign函数和decode函数的使用

    Time-travel Models 1. Standard Iterative Branching model   Source Code   Butterfly Effect   Next   E ...

  9. HDL4SE:软件工程师学习Verilog语言(十一)

    11 流水线 前面一节介绍了状态机的概念.状态机用于描述事务处理的一个程序性流程,可以组成顺序,分支,循环的事务处理流程.这些概念本来在verilog中的行为级描述中是有的,但是由于不是RTL描述,因 ...

最新文章

  1. 用于自动驾驶的实时 YUV 多任务 CNN
  2. 浅析Java线程的三种实现
  3. element table 表格设置max-height 没有出现滚动条,多渲染了一列。
  4. ORACLE与PostgreSql的区别
  5. 通过GitHub Actions构建和部署Jekyll网站
  6. ShardingSphere-Proxy 主从读写 入门使用
  7. [UVA1374]Power Calculus【迭代加深】
  8. 浏览器中的 HTTP 请求从发起到结束经历的所有阶段
  9. cad2020 开始_中望cad2020发布,附简体中文免费版安装教程
  10. 【滤波器】7. 带通滤波器
  11. 鼠标滑轮成了页面缩放的解决方法
  12. 计算机科技英语论文,计算机科技英语论文大纲模板 计算机科技英语论文提纲怎么写...
  13. Redis Cluster内存爆满
  14. adobe illustrator软件能做什么
  15. P1567统计天数-C++编程解析-数组
  16. mac下如何将adobe acrobat reader dc设为.pdf的默认打开方式?
  17. 这些国外支付方式,你都听过或用过吗?
  18. 一步步制作Arduino智能小车
  19. 奇趣网站收藏家(网站)
  20. QT 5.3.2 + VC2012 中文乱码 完美解决方案

热门文章

  1. 马云退休启示录:第一代互联网创始人老去,谁来接棒?
  2. 单相LCL型并网逆变器电容电流反馈有源阻尼控制实现
  3. 1月6日 9 点!Doris Summit 2022 即将拉开序幕,年度技术盛会即刻报名!
  4. 英语语言学专业学习计算机语言学,英语语言学
  5. 小红帽 oracle,linux 小红帽 一键安装ffmpeg
  6. wfp(微软)对付flash
  7. win10家庭中文正式版输入法切换快捷键设置为Ctrl+Shift
  8. Twitter API: Door To Social Media Analysis I
  9. 我的毕业季:从开始工作到大学毕业
  10. IBM 发布全球首个 2nm 芯片制造技术