risc-v

B 站 - 外瑞罗格

1. 视频大纲

  1. CPU 设计: 取值 instruction fetch;译码 i decoder;执行(+访存)+回写
  2. 中断系统设计
  3. 以 CPU 为核心的 SOC 设计,ROM/RAM/Timer 设计

1.1 CPU 基本模块

1)ADD

时序: 与时钟有关
组合: 有输出,就有响应;延时取决于器件
ROM: 放指令;市面上,一般是按字节 byte (8-bit) 存放的;32 位 ADD,放 4 个字节 --> 大小端存储 --> 高字节,放低地址,是大端模式;反之,是小端模式。
寄存器组: 32-bit,x0 恒为 0
在这里插入图片描述
![三级流水线]

后续就是写代码;后面暂时不太有必要跟着敲;需要先搞明白原理。

B站 - Rong晔

1. RV32(64) + I \ E \ M \ F \ D \ A \ C \ Q

32-bit 或 64-bit 指令集

2. ADD rd, rs1, rs2

加 (Add). R-type, RV32I and RV64I.
x[rd] = x[rs1] + x[rs2]
把寄存器 x[rs2] 加到寄存器 x[rs1] 上,结果写入 x[rd]。忽略算术溢出。
压缩形式:c.add rd, rs2; c.mv rd,rs2
在这里插入图片描述

3. 六种指令类型

R I S B U J

4. 指令和数据分开存储:哈佛结构

5. 第一步设计

设计目标: 单周期、单指令,只做 ADD 指令
测试的 5 条指令: ADD / ADDI / BNE / JAL / LUI
主体模块: PC 寄存器、指令存储器、控制译码模块、立即数扩展模块、寄存器堆、算数逻辑运算单元、数据存储器;各个模块,根据逻辑依次完成自己的工作。

6. 取指令: 指令从 pc_reg 取到 指令存储器

6.1 pc_reg 的指令来自 mux_pc

7. 译码:输入一个 instruction,输出多个标志,如 branch, jump, reg_wen, reg1_raddr

case 语句,得到 很多输出。

7.1 将译码的结果进行处理,得到需要的数据: 寄存器值(寄存器堆)、立即数值(立即数扩展)

8. 执行:算什么?怎么算?

算什么: 两个寄存器、寄存器和立即数、4和PC,立即数和pc --》 mux_alu 数据选择模块
怎么算: ALU 模块

9. 如何测试 设计是否 ok?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值