目录
-
课程设计的目的及意义
目的
- 理解RISC-V的基本指令格式(包括R型、I型、S型、U型指令)和衍生指令格式(包括B型、J型指令),理解数据通路与指令功能的关联,掌握这些指令的运行原理和设计。
- 掌握硬布线控制逻辑的设计方法、CPU实验的调试方法、简单IO接口的设计方法、微程序的编制和写入,观察微程序的运行过程。
- 能够使用VerilogHDL语言实现一个简单RISC-V单周期CPU的设计,并完成基本RISC-V单周期指令的设计:包括I型运算类指令、R型运算类指令、Load类访存指令、Store类访存指令和B型分支转移类指令。
意义
- 通过课程设计加深对计算机硬件功能和微程序控制器的组成原理的理解。
- 对所学的计算机硬件基础课程知识进一步地系统化,提高硬件设计能力和动手能力。
- 培养科学研究的独立工作能力,积累工程设计与组装调试的实践经验。
-
课程设计的内容及设计原理
I型运算指令
I型运算类指令的opcode为0010011,由funct3区分不同的指令。该类指令的指令格式如下:
31 20 19 15 14 12 11 7 6 0
imm[11:0] |
rs1 |
funct3 |
rd |
opcode |
图1 I型指令的指令格式
该类指令的一般形式是OP rd,rs1,imm。OP表示I型运算类指令中的某一条,指令功能是将rs1寄存器的内容与立即数imm进行OP运算,结果送入目标寄存器rd。
R型运算指令
R型运算类指令的opcode为0110011,由funct3和funct7区分不同的指令。该类指令的指令格式如下:
31 25 24 20 19 15 14 12 11 7 6 0
funct7 |
rs2 |
rs1 |
funct3 |
rd |
opcode |
图2 R型指令的指令格式
该类指令的一般形式是OP rd,rs1.rs2,OP表示R型运算类指令中的某一条,指令功能是寄存器rs1和寄存器rs2的内容进行OP运算,将运算结果送入寄存器rd。
存储器访存指令(Load\Store类指令)
在RISC-V指令集中,运算指令不直接访问存储器,访问存储器只能通过Load\Store类指令。
Load类指令的opcode为0000011,由funct3区分不同的指令。指令格式采用I型,该类指令的一般形式是OP rd,imm(rs1),其功能是将地址为imm+(rs1)的内存单元内容送rd。
Store类指令的opcode为0100011,由funct3区分不同的指令。指令格式采用S型(S型指令的指令格式如下所示),该类指令的一般形式是OP rs2,imm(rs1),其功能是将寄存器rs2的内容送地址为imm+(rs1)的内存单元。
31 25 24 20 19 15 14 12 11 7 6 0
imm[11:5] |
rs2 |
rs1 |
funct3 |
imm[4:0] |
opcode |
图3 S型指令的指令格式
分支转移指令
分支转移指令采用B型格式, B型分支转移类指令的opcode为1100011,由funct3区分不同的指令。该类指令的指令格式如下:
31 25 24 20 19 15 14 12 11 7 6 0
imm[11:5] |
rs2 |
rs1 |
funct3 |
imm[4:0] |
opcode |
图4 B型指令的指令格式
该类指令的一般格式是OP rs1,rs2,imm,其功能为:rs1和rs2进行运算,运算的结果如果满足转移条件则PC<-(PC)+imm,实现程序转移;否则,PC<-(PC)+4,程序顺序执行。
-
RISC-V单周期CPU设计与实现
(一)硬件设计
实现I型运算指令
I型运算指令是把寄存器内容和立即数进行运算,运算结果存放到寄存器中,采用立即寻址方式,指令的一般形式是OP rd,rs1,imm,其功能为:rd<-(rs1)OP imm。OP所代表的操作由opcode和funct3决定,rs1和