FPGA学习日志

坚持每天写总结 2021.2.18


Risc-V学习

  • FPGA学习日志
  • 前言
  • 一、RISC-V是什么?
  • 二、学习RISC-V的探索过程
    • 1.《手把手教你设计CPU——RISC-V处理器篇》
    • 2.liangkangnan的博客
  • 总结

前言

准备参加比赛,需要学习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
00000001400a3ff0E: Flow-0189: Internal error occured.

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

总结

FPGA学习日志——Risc-V架构的cpu设计相关推荐

  1. FPGA学习日志——OV7670寄存器配置

    FPGA学习日志 鼓励自己每天进行学习总结:2021.2.6 找到了ov7670寄存器的配置具体介绍 转载自: OV7670配置和调试总结--浩爹 SCCB协议介绍与应用和OV7670摄像头的寄存器配 ...

  2. FPGA学习之路—应用程序—基于Verilog设计单总线8位ALU

    FPGA学习之路--基于Verilog设计单总线8位ALU 定义 ALU(arithmetic and logic unit) 算术逻辑单元,简称ALU,是计算机的数学运算核心,也就是负责运算的组件, ...

  3. FPGA学习日志——分频与降频divider

    文章目录 分频与降频 偶分频--六分频器divider_six 实验原理 实验代码 奇分频--五分频器divider_fie 实验原理 解决方案 实验代码 降频 实验原理 降频后的波形图 使用降频的五 ...

  4. FPGA学习日志——半加器half_adder

    半加器half_adder 半加器:用于计算两个一位二进制相加,且不考虑低位进位. 控制框图.真值表和波形: 其中count表示进位,sum表示和数. 根据真值表可以得到输入输出关系 异或符号 cou ...

  5. FPGA学习日志——一位全加器full_adder

    全加器 全加器能进行被加数.加数和来自低位的进位信号相加,并根据求和结果给出该位的进位信号. 在电路上可以由两个半加器和一个或门构成全加器. 值得注意的是:一位全加器实现完成后,可以根据多个1位全加器 ...

  6. FPGA学习日志——三八译码器Decoder

    三八译码器 译码器:译码是编码的逆过程,其功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器.如果有n个二进制选择线,则最多可译码转换成2n个数据 实验框图.真 ...

  7. FPGA学习日志——74hc595驱动的数码管静态显示seg_595_static

    文章目录 数码管静态显示seg_595_static 实验原理 74HC595 实验框图.波形图与代码原理 数码管静态显示seg_595_static 数码管是一种半导体发光器件,其基本单元是发光二极 ...

  8. FPGA学习日志——无源蜂鸣器beep

    文章目录 无源蜂鸣器beep 有源/无源蜂鸣器 无源蜂鸣器的驱动原理 实验原理 实验框图与波形 实验代码 仿真代码 无源蜂鸣器beep 有源/无源蜂鸣器 无源这里的"源"不是指电源 ...

  9. FPGA学习日志——触发器filp_flop

    触发器flip_flop 实验框图与波形图 触发器 对时钟脉冲边沿敏感的状态更新称为触发,具有触发工作特性的储存单元称为触发器. 在实际的数字系统中往往包含大量的存储单元,并且经常要求他们在同一时刻同 ...

最新文章

  1. Openstack nova-scheduler 源码分析 — Filters/Weighting
  2. Uva 10217 概率
  3. 《R语言编程艺术》——2.5 使用all()和any()
  4. 「镁客·请讲」安智汽车郭健:ADAS是一个链条式的系统,每个模块都必须做好...
  5. vue+vuecli+webapck2实现多页面应用
  6. Android之使用IDA Pro静态分析so文件
  7. spring + springmvc + mybatis + mysql 整合使用案例
  8. IDAPython精彩编程(1)
  9. 迁移学习1——基于深度学习和迁移学习的识花实践
  10. REDGATE又一好用的脚本工具ScriptsManager1.3
  11. mysql中字符串拼接函数_mysql 连接字符串操作(concat函数用法)
  12. php公告滚动源码,如何利用JavaScriptjQuery实现滚动公告栏(代码实例)
  13. 2021秋软工实践第二次结对编程作业
  14. 基于ICP算法计算点集之间的变换矩阵(旋转、平移)
  15. java数组初始化的方式_java数组初始化方式
  16. flash传值php乱码,Flash中出现中文乱码的解决办法,网页模板帮助中心
  17. linux中lockf的例子,小何讲Linux: 文件锁及其实例
  18. 为什么刀剑总显示服务器繁忙,刀剑乱舞萌新必看攻略 常见问题篇
  19. ppt纯文字设计的几种玩法(词云、文字云)
  20. matlab 仿真入门,MATLAB/simulink仿真入门(第一节)

热门文章

  1. 视觉运控平台软件框架(6)---脚本编辑器Qsci
  2. 怎样才能实现表格背景图片拉伸
  3. 2019组队赛第二场(ACM International Collegiate Programming Contest, Arabella Collegiate 解题报告 Apare_xzc
  4. Flutter高仿微信-第36篇-单聊-语音通话
  5. Tableau 快速表计算 显示百分比 / 累计走势
  6. console用法java_Java Console printf(String, Object)用法及代码示例
  7. Linux 安装Redis-6.2.5,配置及使用(RDB与AOF持久化、sentinel机制、主从复制、Spring Boot 集成 Redis)
  8. 【matlab图像处理】插值方法
  9. CSS实现文字动画效果【每日一题】
  10. sUploadDir