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):背景与项目设计目标的更多相关文章

  1. MapServer Tutorial——MapServer7.2.1教程学习——教程背景

    MapServer Tutorial——MapServer7.2.1教程学习——教程背景 一.前言 目前处于MapServer学习入门阶段,所以每一步都需要打下扎实基础.尽自己最大的努力,去学习知识的 ...

  2. 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( ...

  3. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a  raster layer 一.前言 MapServer不仅支持 ...

  4. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example 1.4 Labeling the Map 一.前言 MapServer拥有非常灵活的标签 ...

  5. 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用 ...

  6. MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件

    MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...

  7. MapServer Tutorial——MapServer7.2.1教程学习(大纲)

    MapServer Tutorial——MapServer7.2.1教程学习(大纲) 前言 最近在学习Gis方面的知识,因为电脑硬件配置偏低,顾选择MapServer入手.网上搜索MapServer系 ...

  8. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一)

    原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---先让程序跑起来(一) 写下此文章只为了记录Surging微服务学习过程,并且分享给广大想学习surging的基友,方便广大 ...

  9. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  10. objective-c基础教程——学习小结

    objective-c基础教程——学习小结   提纲: 简介 与C语言相比要注意的地方 objective-c高级特性 开发工具介绍(cocoa 工具包的功能,框架,源文件组织:XCode使用介绍) ...

随机推荐

  1. 《数据结构-C语言》顺序表

    @ 目录 顺序表 结构定义 初始化 创建表 求表长 判断表是否为空 取值 查找 插入 删除 逆置 清空 销毁 遍历打印 测试 顺序表 结构定义 #include <stdio.h> #in ...

  2. 智能AI 的应用场景

    小凡智能AI是一款基于人工智能技术开发的助软件,能够帮助用户解决各种各样的问题,提高工作效率和生活质量.它的应用范围广泛,涵盖了工作.学习.健康等多个方面,为用户提供了全方位的服务支持. 在工作方面, ...

  3. 万字长文教你实现华为云IoT+OpenHarmony智能家居开发

    本文分享自华为云社区<华为云IoT+OpenHarmony的智能家居开发>,作者:袁睿. 一.选题说明 1. 选题为基于OpenHarmony的智能家居,应用场景为户用,受益人群为住户. ...

  4. 探秘移动端BI:发展历程与应用前景解析

    什么是移动端BI 维基百科 上对于 移动端商业智能的定义是这样的 > Mobile BI is a system that presents historical and real-time i ...

  5. Teamcenter RAC 开发之《Excel模版导出》

    背景 在做 Teamcenter RAC客制化表单后,TMD肯定有一个需求要导出表单,毕竟所谓的客制化表单就是从纸质表单中出来的,那么写代码必不可少......... 那么问题来了,对于一个Excel ...

  6. Docker Swarm + Harbor + Portainer 打造高可用,高伸缩,集群自动化部署,更新。

    Docker Swarm是Docker官方自带的容器编排工具,Swarm,Compose,Machine合称Docker三剑客.Docker Swarm对于中小型应用来说,还是比较方便,灵活,当然K8 ...

  7. Java SE 21 新增特性

    Java SE 21 新增特性 作者:Grey 原文地址: 博客园:Java SE 21 新增特性 CSDN:Java SE 21 新增特性 源码 源仓库: Github:java_new_featu ...

  8. 整理DB2左补零,右补零的方法

    在项目中经常遇到需要左补零,右补零的情况,在DB2实验环境中展示 1.左补零(1)数字左补零,数字长度不定用right(digits(cast(expression as bigint)),NUM)能 ...

  9. pandas -- DataFrame的级联以及合并操作

    博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...

  10. Arduino 板的说明

    Arduino 板的说明 在本章中,我们将了解 Arduino 板上的不同组件.将学习 Arduino UNO 板,因为它是 Arduino 板系列中最受欢迎的.此外,它是开始使用电子和编码的最佳板. ...