Rong晔大佬教程学习(1):背景与项目设计目标
riscv实际上是一种ISA的指令集,而处理器的设计的基本结构是不变的(如下所示),其区别在于所选用的指令集的类型,一般有ARM、RISCV、MIPS等,采用了不同的引擎,那么车的外观、系统等也会随之发生变化。

采用RISCV,是因为它简洁、开源、明了,确定处理器设计的指令集后,我们还要对其进行硬件设计,因为指令又不是虚空的,不可能凭空就执行某一项操作,例如我们要进行加法运算,那就必须要有一个加法器来实现,而加法器的实现,就需要用到我们之前所学的硬件描述语言。

要设计一款处理器,最重要是理解处理器的结构,同时理解每一个模块的作用,因此,本项目设计的处理器是单周期、单指令(add)的非常简单的处理器。
开始设计处理器之前,首先对指令集进行讲解:RV32/64代表它是32位/64位的指令集,后面加上的IEMFDACQ代表每一种模块,其中RV32I是最简单、最基本的整数指令集,

之前我们说的,设计的处理器只是单指令(add)的,而要通过add的指令测试,我们其实需要总共设计五个指令,分别是:
1.ADD:R型,寄存器加法,将两个寄存器值相加;
2.ADDI:I型,立即数加法,将一个寄存器值和一个立即数相加;
3.BNE:B型,分支跳转,如果两个数不相等则进行一个指令的跳转;
4.JAL:J型,跳转和链接,跳转指令,同时将下一个指令的地址存储下来;
5.LUI:U型,高位立即数加载,将一个立即数作为高位存在寄存器中。
在了解了指令后,我们需要了解处理器的结构,RISCV处理器是典型的哈弗结构:特征是指令存储和数据存储分离

该项目实现的处理器结构如下:

其中:
1.inst_mem和data_mem分别代表指令存储器和数据存储器,由于该项目没有设计数据的存储,因此data_mem暂时没有用上;
2.pc_reg:决定读哪一条指令;
3.ctrl:分析指令,进行译码;给其他模块提供控制信号、地址信号和立即数值;
4.reg_file:存储器堆;
5.imm_gen:立即数扩展;从指令中取出的立即数不能直接用,需要根据指令结构的不同扩展为不同的32位立即数值,这个才是我们真正运算的数;
6.ALU(arithmetic and logic unit):运算模块,使用寄存器值和立即数值进行相应的算数运算;
5.由于不涉及数据存储,因此ALU计算结果会写会寄存器堆中;
6.运算结束后还会有一些信号流回pc_reg中,从而确定下一条执行的指令。
Rong晔大佬教程学习(1):背景与项目设计目标的更多相关文章
- MapServer Tutorial——MapServer7.2.1教程学习——教程背景
MapServer Tutorial——MapServer7.2.1教程学习——教程背景 一.前言 目前处于MapServer学习入门阶段,所以每一步都需要打下扎实基础.尽自己最大的努力,去学习知识的 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.7 Adding a wms layer 前言 Add OGC WMS Layers( ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer 一.前言 MapServer不仅支持 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map 一.前言 MapServer拥有非常灵活的标签 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.1 A map with single layer 一.前言 开始MapServer用 ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件
MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...
- MapServer Tutorial——MapServer7.2.1教程学习(大纲)
MapServer Tutorial——MapServer7.2.1教程学习(大纲) 前言 最近在学习Gis方面的知识,因为电脑硬件配置偏低,顾选择MapServer入手.网上搜索MapServer系 ...
- .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)
原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...
- .Net程序员之Python基础教程学习----列表和元组 [First Day]
一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...
- objective-c基础教程——学习小结
objective-c基础教程——学习小结 提纲: 简介 与C语言相比要注意的地方 objective-c高级特性 开发工具介绍(cocoa 工具包的功能,框架,源文件组织:XCode使用介绍) ...
随机推荐
- 介绍 SafeCoder 解决方案服务
今天这篇推文,我们打算给自己打一波"广告",向大家隆重介绍 SafeCoder-- 一款专为企业打造的代码助手解决方案. SafeCoder 旨在成为你完全合规且自托管的结对编程工 ...
- 微服务下使用maven做多环境配置
分享技术,用心生活 前言:很多项目在开发,提测,上线时都会提前手动改一些配置文件来适应对应环境,麻烦不说了,而且也容易出错:生产环境的配置也容易暴露.基于此,我们基于spring cloud alib ...
- H.265+SRS6.0服务器部署
H.265+SRS6.0服务器部署 SRS从6.0开始,全面支持H.265,包括RTMP.FLV.HLS.GB28181.WebRTC等等.具体的服务器部署及H.265推流步骤如下. 1. SRS 要 ...
- git status详解
git status详解 在使用Git进行版本控制时,git status是一个非常有用的命令,用于查看当前代码仓库的状态.它可以告诉你哪些文件已更改.添加或删除,以及是否有未提交的更改等.本篇博客文 ...
- Android 调试桥 (adb) 使用教程/示例
sidebar: auto Android 调试桥 (adb) Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信.adb 命令可用于执行各种设备操作,例如安装和调试 ...
- vscod 配置 morkdown 快捷键
vscod 配置 morkdown 快捷键 1.首先在根目录添加.vscode 文件夹 ️1.1 新建一个 settings.json 文件 { "[markdown]": { & ...
- HIS系统部署的关键步骤与注意事项
HIS系统部署的关键步骤与注意事项 引言:近年来,随着信息技术的快速发展,医疗行业也逐渐意识到数字化转型的重要性与必要性.医院信息系统(HIS)作为医疗信息化的核心,旨在提高医疗服务的质量与效率.在引 ...
- go语言 包依赖管理-构建完整的依赖项目:目录结构及包的调用
目录结构: <home>/ |-- greetings/ |-- hello/1.分别进入对应目录创建以上目录结构 //bash切换到用户主目录 cd $HOMEPAHT$ //bash新 ...
- crontab guru
https://crontab.guru/every-5-minutes Cron Job Monitoring crontab guru The quick and simple editor fo ...
- Blackmail
Blackmail Arthur Hailey The chief house officer, Ogilvie, who had declared he would appear at the Cr ...