流水线cpu设计

计算机组成原理 实验(llxx 老师)

虽然说verilog语言使用有诸多困难,但计算机组成原理课程的学习还是很有意思的,亲手(应该是)写一个 cpu 的感觉还是很有收获的,介绍介绍我的这个学期的实验

Lab1 运算器及其应用

  • 完成 ALU 模块的逻辑设计和仿真
  • 查看 32 位 ALU 的 RTL 和综合电路图,以及综合电路资源和时间性能报告
  • 完成 6 位 ALU 的下载测试,并查看 RTL 电路图,以及实现电路资源和时间性能报告
  • 完成 FLS 的逻辑设计、仿真和下载测试

    本次实验主要是复习verilog的相关语法,为后续实验打下基础

Lab2 寄存器堆与存储器及其应用

  • 行为方式参数化描述寄存器堆,功能仿真
  • IP 例化分布式和块式 16 x 8 位单端口 RAM,功能仿真和对比
  • 设计 FIFO 队列电路的数据通路和控制器,结构化方式描述数据通路,Moore 型 FSM 描述控制器,功能仿真
  • FIFO 队列电路下载至 FPGA 中测试

    同样是对数电学习内容的复习,学会了设计不同的仿真函数,debug 的方法

Lab3 汇编程序设计

  • 熟悉 RISC-V 汇编指令的格式
  • 熟悉 CPU 仿真软件 Ripes,理解汇编指令执行的基本原理(数据通路和控制器的协调工作过程)
  • 熟悉汇编程序的基本结构,掌握简单汇编程序的设计
  • 掌握汇编仿真软件 RARS(RISC-V Assembler & Runtime Simulator)的使用方法,会用该软件进行汇编程序的仿真、调试以及生成 CPU 测试需要的指令和数据文件(COE)
  • 理解 CPU 调试模块 PDU 的使用方法

    较为简单的一次实验,主要是考察使用汇编解决问题的能力

Lab4 单周期 CPU 设计

  • 理解 CPU 的结构和工作原理
  • 掌握单周期 CPU 的设计和调试方法
  • 熟练掌握数据通路和控制器的设计和描述方法

    本次实验是verilog噩梦的开始,明明都按照设计写出来的东西,却不能达到预期的结果,但好在还是调试出来了

Lab5 流水线 CPU 设计

  • 理解流水线 CPU 的结构和工作原理
  • 掌握流水线 CPU 的设计和调试方法,特别是流水线中数据相关和控制相关的处理
  • 熟练掌握数据通路和控制器的设计和描述方法

    基本思路和前一次实验相同,就是把课内学习的知识投入实践,但流水线带来了诸多问题,处理各种冒险的过程还是很有意思的,尤其是最后处理完所有问题,上 fpga 运行成功以后,虽然花了十几个小时

Lab6 综合设计

  • 理解计算机硬件系统的组成结构和工作原理
  • 掌握软硬件综合系统的设计和调试方法

    实现了更多的指令,同时加入了 cache

详细代码

      详细的实验报告可以看:链接