没有合适的资源?快使用搜索试试~ 我知道了~
(1) 取指令(IF):根据程序计数器 PC 中的指令地址,从存储器中取出一条指令,同时, (2) 指令译码(ID):对取指令操作中得到的指令进行分析并译码,确
资源详情
资源评论
资源推荐
CPU
实验报告
班级:物联 1601
学号:201608010628
姓名:曾彤芳
实验任务
实现单周期 CPU 的设计
实验要求
硬件设计采用 VHDL 或 Verilog 语言,软件设计采用 C/C++或 SystemC 语言,
其它语言例如 Chisel、MyHDL 等也可选
实验报告采用 markdown 语言,或者直接上传 PDF 文档
实验最终提交所有代码和文档
实验内容
RISC-V 指令
RV32I 指令集,其包含了六种基本指令格式,分别是:用于寄存器 -寄存器操作的 R 类
型指令,用于短立即数和访存 load 操作的 I 型指令,用于访存 store 操 作的 S 型指令,
用于条件跳转操作的 B 类型指令,用于长立即数的 U 型指令和用于无条件 跳转的 J 型指
令。
RISC-V 指令集编码格式
基本指令格式
四种基础指令格式 R/I/S/U
imm:立即数
rs1:源寄存器 1
rs2:源寄存器 2
rd:目标寄存器
opcode:操作码
整数计算
ADDI:将 12 位有符号立即数和 rs 相加,溢出忽略,直接使用结果的最低 32bit,
并存入 rd
SLTI:如果 rs 小于立即数(都是有符号整数),将 rd 置 1,否则置 0
SLTIU:和 SLTI 一致,不过都是无符号数
ANDI/ORI/XORI:rs 与有符号 12 位立即数进行 and,or,xor 操作
ADD/SUB:rs1(+/-)rs2 => rd
SLT/SLTU: 如果 rs1<rs2,rd 写 1; 否则 rd 为 0
AND/OR/XOR: rs1 与 rs2 进行 and,or,xor 操作
SLL/SRL/SRA: 和"寄存器-立即数"指令一致,将 r2 的低 5 位作为立即数即可
NOP 指令:
实际上是 ADDI x0,x0,0
JAL:J 类指令,立即数+pc 为跳转目标,rd 存放 pc+4(返回地址)
跳转范围为 pc(+/-)1MB
JALR:I 类指令,rs+立即数为跳转目标,rd 存放 pc+4(返回地址)
实现远跳转
BEQ/BNE:rs1(==/!=)rs2, 分别在相等或者不等时,发生跳转
BLT:rs1 < rs2, 跳转
BGE:rs1 >= rs2, 跳转
LOAD:rs 作为基地址,加上有符号的偏移,读取到 rd 寄存器
STORE:rs1 作为基地址加上有符号的偏移,作为内存地址,写入内容为 rs2
CSRRW:Atomic Read/Write CSR
读取 CSR 的值存入 rd 寄存器,并将 rs 存入 CSR
CSRRS:Atomic Read and Set Bits in CSR
读取 CSR 的值存入 rd 寄存器,并根据 rs 中高位对 CSR 置 1
CSRRC:Atomic Read and Clear Bits in CSR
读取 CSR 的值存入 rd 寄存器,并根据 rs 中高位对 CSR 置 0
CSRRWI/CSRRSI/CSRRCI
将 CSRRW 类寄存器中的 rs 换成立即数
RDCYCLE:时钟周期计数
RDTIME:时间 tick 数
RDINSTRET:指令数
ECALL
EBREAK
剩余13页未读,继续阅读
华亿
- 粉丝: 41
- 资源: 308
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0