实训——基于 Logisim 的 RISC-V 处理器设计

educoder计算机原理实训

第1关:指令存储器及数据存储器件

 先把环境配置好

根据要求把这个文件复制到download里就行了

 用Ripes工具,将汇编代码转换成机器码:

根据对指令存储器中的值进行修改方法,进行修改

先把数据写到txt中

再在编辑中打开

 选择hex即可

可以看到指令已经显示

 即可通过

第2关:寄存器文件

将reg用译码器分成32条线路(选择位为5),并连上使能端

分到32个寄存器,每个寄存器都连接写入数据和时钟,当调用这个寄存器时,进行写入,在时钟上升沿变化

0寄存器单独连32位常数0写入

用多路复用器输出到read1和read2,选择read1和read2得到结果

参考:https://blog.csdn.net/Mr_Fmnwon/article/details/130821431?spm=1001.2014.3001.5501

第3关:立即数扩展部件

按照上边两个表连接即可 ,大概就是这么个意思如下图,剩下的其他节点都要连上I型(下图没有连)

第4关:基础数据通路及控制器设计(仅支持 RV32I 中的 I 类型运算类指令)

 先把总体连好

要把Regs的所有输入输出接口都接上,否则无法写入或无法通过(需要输入xb并读入B)

接上以下接口

 接好后如下图

注意rs2需要自己先从inst里取好,是inst[24:20]

 然后看control

有几个关键点

 就是下面这两个东西是一定的

然后就是inst要根据指令的不同来改变ALUSel的值,不过还算是简单吧只有两个指令是不一样的

sub和sral

 对于SRAI、SRA:

当funct3是101时,次高位是1(第30位),则为SRA

对于SUB:

当opcode为0110011时(第五位是1),为sub

参考:http://dg.064100.net/qianru/riscv/2022-08-12/445.html

 综上,只需要判断指令是不是减法或者右移再计算正确的ALUSel即可。

不过其实并不用判断是不是sub(不是I型)只能是为之后作铺垫吧,接5的线应该可以直接接0,不过i型5也总是0,哈哈

下图是我多此一举了,还能改进,懒得改了这题写好久

第5关:增加对 R 类型运算指令的运行支持

按这个图连接

 在control中设置好以下参数(BSel在datapath里设置)

 主要是ALUSel吧,结合上一关的铺垫,加一个判断,在已有判断左右移的基础上加一个判断sub和add的判断

判断其是不是0001,1时opcode的第五位,个人感觉是很巧妙的,用这四位就能判断是加、减或左右移(甚至I、R型都搞定了)

 稍微把他弄好看一点

 用隧道从inst得到几个要输入的参数和BSel即可

第6关:增加对 S 类型和 I 类型访存指令的运行支持

 

只需要照着上边连就行其他都和上一关一样,唯一要注意的就是这个

主要是control需要动动脑子

在第五关的基础上添加了一个识别opcode的模块如下

但有些判断也不是很严谨,仅仅可以实现题目的所有指令(就几种指令,很多输出只有一个判断就能知道),可能后面还要改动

第7关:增加对 B 类型条件跳转指令的运行支持

只需要满足下表条件即可

 设计出control电路图(建议自己思考,有好多方法可以写,只需要满足条件就行),看上去很复杂,实则很简单,就是一些判断罢了。比较模块我是先进行比较,通过funct3指令选择对应指令的结果,再看是不是b指令,是就输出结果,不是就置0。

datapath就根据下图连接就行,只有部分需要改动和添加。记得把reg1和reg2给放进去

第8关:增加对 J 类型和 I 类型跳转链接指令的运行支持

注意这段!!!后面给的表上少了一些信息(对于ALU和PCSel的设置上),测试了好久才发现。。。

方法都和之前一样

照着图连,这个图基本上都不会连错 

主要是control。这里做一个更正,之前的ALU没有考虑到I、R类型的一些情况,这里做了一点改动进行完善,但总的还是没有太大变化的。添加了JAL和JALR的部分,还有按照题目所给的控制信号的取值完成电路的设计,哎就是那一段话没有注意看,本来可以写快一点的。


第9关:增加对 U 类型长立即数处理指令的运行支持

按照图连就行

方法都和上边一样,就多了两个U指令的判断,题目错误也已经更新改对了(跟着控制信号取值的那个表做就行了,方法都可仿照上边几关)。可以说没有啥难度,自己做吧

如何找到错误

可以先复制指令

 然后写到这里边(或者直接在图形化界面查看),就可以知道这条指令是啥了,然后可以大概判断是哪一个模块出错

 然后再在control里边写入inst(写完也不用改回原来的值,也能通过)

用这个手指就可以看所有数据了

 假如运算结果是错的,大概率ALUSel是错的

 还有就是看指令类型对着信号取值表和control最左边那一栏比较

仅做参考,麻烦各位同学有自己的思考哟(~_~^)

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 很高兴听到您对RISC-V处理器的兴趣。设计CPU是一项复杂的任务,需要深入的计算机体系结构知识和硬件设计技能。以下是一些基本步骤,可以帮助您开始设计RISC-V处理器: 1.了解RISC-V架构:RISC-V是一种开放源代码指令集架构,它的设计旨在简化处理器设计和实现。您需要了解RISC-V的指令集、寄存器、内存管理和异常处理等方面的基本知识。 2.选择设计工具:设计CPU需要使用硬件描述语言(HDL),如Verilog或VHDL。您需要选择一个合适的设计工具,如Xilinx Vivado或Altera Quartus等。 3.设计处理器核心:处理器核心是CPU的主要组成部分,它包括指令译码、执行单元、寄存器文件和数据通路等。您需要根据RISC-V架构的要求设计处理器核心。 4.实现内存管理单元:内存管理单元(MMU)是处理器的重要组成部分,它负责管理内存访问和虚拟地址转换等。您需要实现MMU以支持RISC-V的内存管理功能。 5.测试和验证:设计CPU后,您需要进行测试和验证以确保其正确性和性能。您可以使用仿真工具进行测试,或者使用FPGA进行验证。 以上是设计RISC-V处理器的基本步骤,但这只是一个简单的概述。设计CPU需要深入的计算机体系结构知识和硬件设计技能,需要不断学习和实践。希望这些信息能够帮助您开始设计RISC-V处理器。 ### 回答2: RISC-V处理器是一款开源的指令集架构,目前被广泛应用于各种类型的芯片设计中,如移动设备、网络设备、服务器等。在学习如何设计RISC-V处理器之前,我们需要先了解一些基本的概念和技术。 首先,指令集架构(ISA)是处理器硬件和软件之间通信的接口规范,决定了处理器可以解释和执行哪些指令。在RISC-V处理器中,指令集被分为不同的“指令集扩展”模块,包括基本指令集、乘除运算指令集、浮点运算指令集等。每个扩展模块都包含一组相关的指令,为定制和优化处理器提供了灵活性。 其次,流水线技术是处理器设计中常用的性能优化手段。流水线是一个分阶段的处理器执行单元,每个阶段依次执行指令的不同部分,从而实现指令并行执行。然而,流水线可能会遇到数据相关性和控制相关性等问题,需要使用一些技术来解决。 最后,硬件描述语言(HDL)是描述数字电路和系统的语言,可以使用HDL来描述处理器的逻辑电路和功能实现。常见的HDL包括Verilog和VHDL,可以使用这些语言来实现RISC-V处理器的功能模块。 接下来,我们可以手把手教你如何设计RISC-V处理器: 第一步,定义指令集。定义指令集是设计处理器的第一步,需要确定基本指令集并考虑扩展模块的需求。 第二步,确定处理器流水线架构。处理器流水线架构的设计涉及指令的分阶段执行和数据通路的设计,需要考虑处理器性能和复杂度的平衡。 第三步,实现处理器的逻辑电路。通过HDL语言来实现RISC-V处理器的逻辑电路和功能模块,包括控制单元、寄存器文件和运算单元等。 第四步,进行仿真和验证。仿真和验证是测试处理器功能和性能的关键步骤,可以使用EDA工具来进行仿真和验证。 第五步,进行物理设计。物理设计涉及到处理器芯片的物理规划、布图和布线等步骤,需要协同进行。 以上是大致的设计流程,实际上,RISC-V处理器设计需要考虑的因素还有很多,例如内存管理、中断处理等等。不过,只要按照步骤逐步设计,加上充分的沟通和协作,基本上都能够顺利完成设计任务。 ### 回答3: RISC-V是一个完全开源的指令集架构,可以自由使用和修改,非常适合自己设计CPU。以下是手把手教你设计CPU-RISC-V处理器篇。 第一步:确定CPU体系结构和指令集 首先,需要确定CPU的体系结构和指令集。RISC-V提供了多个不同级别的指令集,每个级别的指令集都有不同的指令数量、复杂度和性能。根据自己的需要和能力,选择适合自己的指令集。 第二步:设计CPU数据通路 设计CPU的数据通路需要确定如何实现指令的执行和数据的传输。可以使用硬件描述语言(例如Verilog)来描述数据通路。对于RISC-V处理器,需要实现以下基本单元:ALU(算术逻辑单元)、寄存器文件、存储器控制器和指令解码器。 第三步:测试CPU 设计完成后,需要对CPU进行测试。可以使用模拟器来模拟CPU的运行,也可以将CPU制成芯片进行实际测试。在测试期间,可以使用不同的指令和数据来验证CPU的正确性和性能。 第四步:优化CPU 一旦确认CPU能够正确运行,就可以开始优化CPU的性能。可以使用一些技术来提高CPU的性能和功效,例如通过流水线、分支预测、数据缓存等方式提高数据传输和处理效率。 总结: 设计RISC-V处理器需要确定体系结构和指令集,设计数据通路,测试和优化。这个过程需要深厚的计算机体系结构和数字电路设计的知识,同时要有足够的耐心和毅力。通过这个过程,可以获得极为满足和有成就感的终极收获。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值