PicoRV32 支持RISCV基本指令集外,还支持压缩指令(C扩展),乘法指令(M扩展)。
PicoRV32对指令解码时候,读取一条32bit指令,首先判断指令的最低2bit是否是2'b11,如果2'b11则是一条32bit指令,否则是一条16bit指令(C扩展)。
针对RISCV 基础指令集,opcode占指令的低7位,低7位中最低两位用于区分16位和32位指令,则只有5bit用于区分指令类型,我翻开手册整理指令如下
| opcode[6:2] | opcode[1:0] | 指令 | 说明 |
| 5'b00000 | 2'b11 | LB,LBU,LH,LHU,LW | 加载指令 |
| 5'b00001 | 2'b11 | FLW,FLD,FLQ | RV32F/D/Q扩展,加载指令 |
| 5'b00010 | 2'b11 | 未查到 | |
| 5'b00011 | 2'b11 | FENCE | |
| 5'b00100 | 2'b11 | ADDI,SLTI,SLTIU,XORI, ORI,ANDI,SLLI,SRLI,SRAI |
立即数指令 |
| 5'b00101 |

PicoRV32是一个支持RISC-V基本指令集以及C和M扩展的处理器核心。它通过检查指令的低2位来区分16位和32位指令。主要指令包括加载、存储、立即数、算术、分支、跳转和系统调用等。此外,它还包含了浮点运算和原子操作指令。
最低0.47元/天 解锁文章
1389

被折叠的 条评论
为什么被折叠?



