基于MIPS的简单CPU设计(一)

 


  1. 选目标指令集
  2. 两大块,数据通路,规划图,确定需要使用的器件
  3. 控制器,数据通路中的控制信号,输入指令,输出控制信号
  4. 上板测试,波形仿真

quatus II 13.1波形仿真测试

  • 新建工程

基于MIPS的简单CPU设计(一)

第一行工程目录

第二行工程名称

第三行顶层设计实体名

  • 代码编译

New verilog HDL File

注意模块名要和顶层文件名保持一致

基于MIPS的简单CPU设计(一)

ctrl s 保存,将Hierarchy切换为Files

基于MIPS的简单CPU设计(一)

右键test.v设置它为顶层实体,Set as Top-Level Entity

点击三角形开始编译

基于MIPS的简单CPU设计(一)

编译成功

开始波形仿真

New 创建VWF文件

双击左边空白处

基于MIPS的简单CPU设计(一)

点Node Finder

基于MIPS的简单CPU设计(一)

点list >>导入

然后设置输入信号

a采用随机信号Random Values(最后一个)

基于MIPS的简单CPU设计(一)

基于MIPS的简单CPU设计(一)

b采用时钟信号(倒数第三个)

ctrl 滑轮对波形进行放大缩小

下面开始仿真

基于MIPS的简单CPU设计(一)

点击三角

仿真成功

基于MIPS的简单CPU设计(一)

指令格式与指令集

  1. 指令字长固定32位,如果是寄存器寻址,还要给出寄存器号
  2. R型(register):op(6)  rs(5) rt(5) rd(5) shamt(5)      func(5)

操作码   寄存器编号        R型移位指令  功能说明

操作数和保存结果通过寄存器进行

  1. Op R型全为0
  2. Rs 第一个源操作数
  3. Rt 第二个源操作数
  4. Rd 保存结果
  5. Sa 常数 在移位指令中使用
  6. Func 指定指令的具体功能

I型(immediate):op(6)rs(5) rt(5)imm(16) 立即数

  1. 操作数中涉及立即数,结果保存在寄存器
  2. Op 指令的操作功能 + -
  3. Rs 第一个源操作数
  4. Rt 保存运算结果
  5. Imm 第二个源操作数 立即数

J型(jump):op(6)address(26)立即数

  1. 实现无条件转移
  2. Op 确定指令功能
  3. Address 转移目标地址的偏移段字段

寻址方式

  1. R型:由op和func说明当前寻址方式
  2. I J型由op说明寻址方式

立即数寻址

Op rs rt imm

Addi s1,s2, 10  #$s2+10->$s1

寄存器直接寻址

操作数直接在寄存器中

Op rs rt rd sa func

基址寻址

Op rs rt imm

Rs中的基准地址码+imm(16位的带符号常数)带符号扩展成32位=目标地址,然后根据目标地址从存储器中读取到数据字

符号扩展:正数在高位补上16个0,负数在高位补上16个1

Pc相对寻址

操作数由寄存器和立即数联合产生

Pc寄存器中的当前地址吗+imm(带符号扩展32位并左移两位)=目标地址,然后根据目标地址从存储器中读取到数据字

特殊的基址寻址