FPGA学习日志——Risc-V架构的cpu设计

FPGA学习日志

坚持每天写总结 2021.2.18



前言

准备参加比赛,需要学习riscv的相关知识,于是找了《手把手教你设计CPU——RISC-V处理器篇》以及一些开源的riscv核(蜂鸟E203、tinyriscv等)


一、RISC-V是什么?

以下是我的理解,具体的定义要自己百度了

在这里插入图片描述
riscv是一种指令集,跟arm是同类。每一种指令集都有其特点,实现指令集的硬件结构多种多样,无论使用了哪一种硬件实现方式,只要实现了riscv指令,都属于riscv架构

二、学习RISC-V的探索过程

1.《手把手教你设计CPU——RISC-V处理器篇》

  • 这本书说的是蜂鸟E200的RISCV核,先说了CPU的基本知识,再介绍了RISCV的知识,然后开始介绍蜂鸟E200,接着就开始逐步分析Cpu的架构,真的手把手教。

  • 只是我觉得有点晦涩,适合沉下心来逐步学习,只是我现在处于选题调查阶段,需要尽快弄清楚这个蜂鸟E200移植的可能性,在github下载了源代码之后,发现不看懂配置文件的话,好像有点不可能,在说,我也有点不会用github。。

  • 话说回来,这本书我一定要啃下来

2.liangkangnan的博客

《从零开始写RISC-V处理器》

能发现这篇博文,真是我的幸运,我是打心底里佩服这位大神,他是半路出家利用空做的空余时间完成了他的tinyriscv,真的让我这个微电子专业的大学生汗颜。respect!

  • 硬件篇详细介绍了cpu每一个模块的设计思路和代码,因为是初学者的代码,所以能让我们这些萌新也能看得懂,我目前阶段是探索可行性,所以囫囵吞枣,拿来就用。

  • 美中不足的是他的外设没有详细的设计介绍

  • 软件篇的话,我还不太了解,我也不知道应该怎么用这个cpu,这个待了解

我下载了他的源码,在vivado通过了编译,但在quartus和PDS都出现了报错

  • quartus的报错原因有两个
  1. ram和rom的错误
    错误原因:应该是quartus提示,使用自己代码编写ram的效率不高
    解决方案:使用quartus的ip库生成的ram作为rom和ram
  2. 芯片资源不足,具体为logic element不够用
    错误原因:uart_debug模块的状态机过于复杂,需要大量的选择器,又因为EP4CE10F17C8的operator中的选择器数量有限,不够的选择器由logic element来组成,所以就会消耗大量的LE
    解决方案:
    比赛时用的芯片资源够用,不用担心,但如果想用EP4CE10F17C8来初步实现的话,就要考虑状态合并、资源复用等代码优化了(目前应该还没有这个能力,不过第一次把资源用超标,也是一次不错的经验
  • PDS的报错
    错误信息
Start sdm2adm.
F: sdmArrayElemLHS should not be here.
pds_shell crashes.
call stack dump:
00000001402b10ae
00000001402b15ed
00000001402b15dc
0000000140a8a5d5
0000000140a8c3ed
0000000140a90251
0000000140a8fbce
0000000140ab4fba
00000001403d00b3
00000001403f03fc
000000014009cac4
00000001400a0fee
00000001400a0b79
00007ffa93ee01c4
00007ffa93edeeb7
00007ffa93eb8767
00007ffa93eb8829
00007ffa93eba6d8
00007ffa93f02e02
00007ffb1b42e858
00007ffb1b42e299
00007ffa93f026c5
00007ffa93eb4b7b
00007ffa93eb776e
00000001400a40f8
00000001409a8084
00007ffb1b817034
00007ffb1c2dd241
00000001400a3ff0

E: Flow-0189: Internal error occured.

报错原因:报错部位出现在uart_debug模块中,目前还不知道具体的原因,我怀疑是(明明quartus能通过编译的说)
解决方法:未知

总结

  • 3
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答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处理器需要确定体系结构和指令集,设计数据通路,测试和优化。这个过程需要深厚的计算机体系结构和数字电路设计的知识,同时要有足够的耐心和毅力。通过这个过程,可以获得极为满足和有成就感的终极收获。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值