注意:个人学习笔记,后续会进行修改完善,目前还在初步学习阶段。参考gitee上《从零开始写RISC-V处理器》。
中断(中断返回)本质上也是一种跳转,只不过还需要附加一些读写CSR寄存器的操作。
RISC-V中断分为两种类型,一种是同步中断,即ECALL、EBREAK等指令所产生的中断,另一种是异步中断,即GPIO、UART等外设产生的中断。
对于中断模块设计,一种简单的方法就是当检测到中断(中断返回)信号时,先暂停整条流水线,设置跳转地址为中断入口地址,然后读、写必要的CSR寄存器(mstatus、mepc、mcause等),等读写完这些CSR寄存器后取消流水线暂停,这样处理器就可以从中断入口地址开始取指,进入中断服务程序。
输入输出信号列表如下:
| 序号 | 信号名 | 输入/输出 | 位宽(bits) | 说明 |
|---|---|---|---|---|
| 1 | clk | 输入 | 1 | 时钟信号 |
| 2 | rst | 输入 | 1 | 复位信号 |
| 3 | int_flag_i | 输入 | 8 | 外设中断信号 |
| 4 | inst_i | 输入 | 32 | 指令内容 |
| 5 | inst_addr_i | 输入 | 32 | 指令地址 |

最低0.47元/天 解锁文章
1071

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



