RISC-V处理器设计入门指北 视频笔记

本文详细介绍了RISC-V处理器架构,包括其哈佛结构、指令存储器、数据存储器和基本的CPU单元设计,重点讲解了如何实现加法指令,以及指令译码过程。作者通过实例演示了如何设计一个包含PC寄存器、指令存储器和译码模块的CPU,以执行RISC-V指令集中的操作。
摘要由CSDN通过智能技术生成

1.掌握RISC-V特性 熟悉处理器结构

RISC-V是哈佛结构的处理器,指令存储和数据存储是分开的

 有两个memory 指令存储器and数据存储器

RV32\64 代表他是32位或64位的指令集 IEM等字母代表模块

2.设计一个实现加法的CPU单元

2.1 总览

add指令:用到5条

add R型 立即数加法

addi I型 ADD Immediate 立即数加法 把一个寄存器和一个立即数进行相加

bne B型 branch not equal 分支跳转 两个数不等就跳转

jal J型  jump and link 跳转后储存指令地址

lui U型 load upper immediate 高位立即数加载存入寄存器

最开始有指令存储器inst_mem和数据存储器data_mem两个记忆单元,这里数据存储器用不上的

1.PC寄存器pc_reg来决定从指令存储器中读哪一条指令

2.将指令取出后经过译码模块ctrl分析指令进行译码,提供控制信号,地址信号和立即数值

case1.add寄存器加法,译码后会根据相应的寄存器地址取出寄存器值,所以需要一个reg_file来存放寄存器堆

case2.addi立即数加法,立即数并不能直接使用,需要根据指令的结构不同有不同的扩展,所以需要一个imm_gen立即数扩展模块,才可以送入3.ALU算数逻辑运算单元中去

4.不涉及数据访存

5.数据直接写回寄存器堆中,除此以外还有一些信号流回PC寄存器中,准备提取下一条指令

2.2 指令存储器设计

代码解析:32为CPU,所以 CPU_WIDTH = 32,所有单元的最大位宽只能是这个CPU_WIDTH

1.首先模块例化一个输入 32位的程序计数器curr_pc(代表发号施令 告诉指令存储器执行哪一条指令)

一个输出 32位的指令寄存器inst

并设置32位内存大小为1024的指令存储器inst_mem_f(宽度只用到10)

2.一句always写取指令命令

这里的取值粒度为字节(8bit),且对于指令来说前两位不含有效信息不读,所以说程序计数器宽度从2开始读,读出对应指令的地址给指令存储器inst_mem_f进行进一步的寻址,最后再将这个地址中的数据赋值给指令寄存器inst,这样就完成了取指令的过程

   2.3 PC寄存器 programme counter register设计

 代码解析:

1.例化环节跳过

2.ena跟随复位 复位给curr_pc置零 \next_pc

next_pc:为什么最后curr_pc加32位16进制4,因为指令前两位不用,也就是说前四位的前两个字是是什么都不影响这一位为0

   设计完毕后用tb测试

2.4 译码阶段 控制模块CTRI

指令集:

 接下来对RISC-V指令集详细介绍:

可以看到RISBUJ六种指令类型,其中

opcode表示操作码 operation code

rd目标寄存器

funct3\7 应该是function的意思,占据3\7位

imm 立即数

rs1 rs2 寄存器一寄存器二

不同的指令类型,立即数存放的位置是不一样的,这对我们之后做立即数扩展至关重要

那么怎么区分不同的指令呢,首先通过opcode分辨出是寄存器型还是立即数型——进一步看fuc3——进一步看fun7这就是译码的过程。

控制模块比较复杂,去看视频

第3期 该怎样理解指令?| 指令译码 | RISC-V设计入门指北_哔哩哔哩_bilibili本期要点:与指令集关系最大的译码模块设计。视频相关文档与工程文件:链接:https://pan.baidu.com/s/19thZKMv8UNle1lcE5ijrDQ?pwd=k0vy 提取码:k0vy, 视频播放量 5680、弹幕量 11、点赞数 202、投硬币枚数 159、收藏人数 92、转发人数 16, 视频作者 Rong晔, 作者简介 萌新硅农,相关视频:第2期 怎么才能动起来?| 取指令 | RISC-V设计入门指北,第0期 设计这个干嘛?| 绪论 | RISC-V设计入门指北,第6期 第一阶段完成!| ADD指令测试 | RISC-V设计入门指北,第3期 tinyriscv的FPGA移植—— RISC-V囫囵吞枣式学习,入门级RISC-V单周期5级流水线CPU —— 项目介绍,ARM的胞弟RISC-V!芯片行业的新宠儿?,【重要】第0期 综述 —— RISC-V囫囵吞枣式学习,第1期 开发环境准备 —— RISC-V囫囵吞枣式学习,第2期 tinyriscv项目详解 —— RISC-V囫囵吞枣式学习,FPGA自制32位CPU第23天,首次实机测试运行。当前支持40条指令,拥有浮点运算/cpu权限控制/软硬中断等功能。测试led闪烁程序icon-default.png?t=N7T8https://www.bilibili.com/video/BV1PS4y1a72f/?p=5&spm_id_from=pageDriver

 

 

 

  • 54
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值