基于MIPS的简单CPU设计(一)
- 选目标指令集
- 两大块,数据通路,规划图,确定需要使用的器件
- 控制器,数据通路中的控制信号,输入指令,输出控制信号
- 上板测试,波形仿真
quatus II 13.1波形仿真测试
- 新建工程
第一行工程目录
第二行工程名称
第三行顶层设计实体名
- 代码编译
New verilog HDL File
注意模块名要和顶层文件名保持一致
ctrl s 保存,将Hierarchy切换为Files
右键test.v设置它为顶层实体,Set as Top-Level Entity
点击三角形开始编译
编译成功
开始波形仿真
New 创建VWF文件
双击左边空白处
点Node Finder
点list >>导入
然后设置输入信号
a采用随机信号Random Values(最后一个)
b采用时钟信号(倒数第三个)
ctrl 滑轮对波形进行放大缩小
下面开始仿真
点击三角
仿真成功
指令格式与指令集
- 指令字长固定32位,如果是寄存器寻址,还要给出寄存器号
- R型(register):op(6) rs(5) rt(5) rd(5) shamt(5) func(5)
操作码 寄存器编号 R型移位指令 功能说明
操作数和保存结果通过寄存器进行
- Op R型全为0
- Rs 第一个源操作数
- Rt 第二个源操作数
- Rd 保存结果
- Sa 常数 在移位指令中使用
- Func 指定指令的具体功能
I型(immediate):op(6)rs(5) rt(5)imm(16) 立即数
- 操作数中涉及立即数,结果保存在寄存器
- Op 指令的操作功能 + -
- Rs 第一个源操作数
- Rt 保存运算结果
- Imm 第二个源操作数 立即数
J型(jump):op(6)address(26)立即数
- 实现无条件转移
- Op 确定指令功能
- Address 转移目标地址的偏移段字段
寻址方式
- R型:由op和func说明当前寻址方式
- 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位并左移两位)=目标地址,然后根据目标地址从存储器中读取到数据字
特殊的基址寻址