zoukankan      html  css  js  c++  java
  • 流水线cpu —Verilog HDL

    一.准备工作

    先看看书(《计算机原理与设计 Verilog HDL版》),搞懂一点原理。然后照着书上的代码写一写(用8.4的就可以了,不用8.6的)。

    注意mux2x32,mux4,cla32等可以用单周期的mux,alu。 (cla32就是个加法器,)

    然后dffe32在书上前几章也有。

    pipeimem即为im指令存储器,可以套用单周期的IM。

    pipemem是数据存储器,可以套用单周期的dm

    regfile 可以套用单周期的RF。

    alu可以完全套用单周期的alu。pipecu中的aluc,rij型的wire,以及wreg中的一部分都可以套用单周期的代码。只是注意要调整好,不要多写,少写,导致错误。(我犯过错误就是,alu的功能与pipecu的aluc不一致,少写了一些东西,导致数据读入都出问题。)

    需要理解流水线cpu的各种问题及解决对策。

    比如lw指令从memory读到register,在mem级才可以前推(forward)到id级,这样如果下一条指令要用到寄存器的 结果,需要阻塞(stall)一周期,否则已经进入了exe级了而书上示例的cpu只能forward到id级。

    这里补充一点,用了8.4的代码,然后为了消除控制冒险,要在mars的测试文件(.asm)中,每一条J型指令后加一个nop。这里是因为看8.2.2,采用了延迟槽技术,i指令是跳转类指令,i+1无论如何都会被执行。(提前到在ID级判断是否要跳转),这里加nop,刚好取代了i+1。

    二.调整接口&&细节调整

    写完代码,modelsim编译成功。(或者有问题,按照transcript的提升改一改)。

    然后start simulation、

    simulation失败,提升error loading design。

    error loading design的原因基本上是:模块名错误(定义的和使用的。),参数错误(接口错误,比如参数顺序不一致,参数宽度不一致)

    注意网上看error loading design很多都说没有提示,这是误导了。(导致我自己不看提示改了一天,虽然确实也改好了一些吧)确实提示不多,但是modelsim transricpt 在start simulation 后也会有一些error提示的

    Error: (vsim-3043) E:/pipe3/pipelinecomp_tb.v(55): Unresolved reference to 'ID' in U_SCCOMP.U_SCPU.ID.

    这个就提示ID不知道是啥。

    然后我看了一下pipelinecpu中,pipeid 起名id_stage ,而不是ID。把ID改成id_stage就完事了

    调整接口很困难(对我来说)。要细心。

    比如clrn就是rest等等,需要理解后替换。

    比如因为仍然使用了单周期的顶层例化文件,comp中cpu模块只有一个aluout的例化,那么就不能按照8.4的代码在module cpu里ealu,malu,walu三个输出。其中walu,ealu改为wire型。malu改名为aluout,仍保留为输出。

    还有pipemem(即为DM,data'memory)因为在comp中例化,就不需要像8.4中一样在module pipelinecpu中使用了。

    还有许多细节,需要自己摸索。

    三.效果

    还是学号排序,应该是成功了

    放错图了

     这是mars setting momeryconfiguration text at address,然后assemble,然后dump的结果。


     

    正确的图

    先设置mars setting momeryconfiguration data at address,assemble,不要运行,dump,然后仿真的结果

    单周期的时候也是这么设置的,一开始忘记了...


     
  • 相关阅读:
    MySQL图形化管理工具之Navicat安装以及激活
    切换路由时取消全部或者部分axios请求,并将一些从不需要取消的加入白名单
    使用node-static运行vue打包文件dist
    elementUI使用本地变量进行验证,监测不到本地变量的变化 的问题
    vue-cli3打包时webpack优化
    实现两个对象的深度合并
    第一章:操作系统概述
    IDEA 2020.1 安装教程
    常用DOS命令
    Listener:监听器
  • 原文地址:https://www.cnblogs.com/lqerio/p/11117618.html
Copyright © 2011-2022 走看看