由来

由于去年工作变动,有幸进入了芯片行业,但主要工作内容为基于RISC-V的嵌入式应用软件开发,几乎接触不到芯片设计的相关知识,然而随着工作的深入,越来越想探究一下运行在软件之下的CPU的世界,于是便产生了自己手写一个RISC-V处理器的想法,同时在博客里记录和分享一下自己学习和探索的过程。作为芯片设计领域的小白,深感道阻且长,幸运的是,有无数前辈们留下的足迹作为指引,再者说,事在认为,那就抖胆试一试吧。

思路

在尝试一个新的领域的时候,我会希望先从宏观上理一下思路,分解一下可能需要的做的1234,然后再按照这个思路一步一步向目标靠近。那么手写一个RISC-V处理器,需要哪些基础和步骤呢?

1. 计算机理论基础

这方面最经典的书籍应该是《深入理解计算机系统》,相信从事软件行业的人大部分都读过,在自己实现一个处理器的同时,再回过头来温习一下这本书,一定有不一样的收获。

2. 数字电子技术基础

这个在大学阶段相关专业都学过,我们需要理解和掌握组合逻辑电路和时序逻辑电路的设计,以及一些基本概念。

3. Verilog语言

编程语言最终还是选择了Verilog,是目前比较主流的语言,语法比较容易上手,入门教程有很多,比如这里

4. RISC-V指令集

我们需要非常熟悉RISC-V指令集,它的指令分类,构成、用法等,最直接的就是在处理器的译码执行阶段一定会用到。

5. FPGA开发平台

选择一个FPGA开发平台,目前主流的三大FPGA厂商是Xilinx、Altera、Lattice,可以根据自己的需要,选择购买一款对应的开发板,熟悉和掌握它的开发环境。

6. 芯片的bring up

这里需要熟悉汇编语言,熟悉和理解C运行环境前的准备工作。我们不仅要手写一个处理器,还要通过bring up让它真正运行起来。

小结

以上列举的是一些需要掌握的基础,可以针对性的进行学习和掌握,边做边学,我基本都是在上班通勤的路上学习这些理论基础,这里推荐大家读一下刘未鹏的暗时间,充分利用起暗时间,是我们业余时间学习的关键。

手写RISC-V处理器(1)的更多相关文章

  1. Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)

    前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...

  2. 手写代码自动实现自动布局,即Auto Layout的使用

    手写代码自动实现自动布局,即Auto Layout的使用,有需要的朋友可以参考下. 这里要注意几点: 对子视图的约束,若是基于父视图,要通过父视图去添加约束. 对子视图进行自动布局调整,首先对UIVi ...

  3. 手把手集成web端手写公式功能

    何为手写公式,很简单,就是在网页上可以写出数学公式,并能够生成Latex格式的字符串.废话不多说,直接走正题. 一.首先大家可以先去官网了解一下myscript这个插件 官方网站:https://de ...

  4. 【OpenCV】opencv3.0中的SVM训练 mnist 手写字体识别

    前言: SVM(支持向量机)一种训练分类器的学习方法 mnist 是一个手写字体图像数据库,训练样本有60000个,测试样本有10000个 LibSVM 一个常用的SVM框架 OpenCV3.0 中的 ...

  5. 【机器学习】BP神经网络实现手写数字识别

    最近用python写了一个实现手写数字识别的BP神经网络,BP的推导到处都是,但是一动手才知道,会理论推导跟实现它是两回事.关于BP神经网络的实现网上有一些代码,可惜或多或少都有各种问题,在下手写了一 ...

  6. java24 手写服务器最终版本

    手写服务器最终版本; <?xml version="1.0" encoding="UTF-8"?> <web-app> <serv ...

  7. 【原】手写一个promise

    上一篇文章中,我们介绍了Promise的基本使用,在这篇文章中,我们试着自己来写一个Promise,主要是学习Promise的内部机制,学习它的编程思想. !!!备注:本文写的不好,仅供自己学习之用, ...

  8. dfs手写栈模板

    在竞赛中如果系统栈很小的话,过深的递归会让栈溢出,这个时候我们就要自己手写栈,将递归转化成手工栈. 方法其实也很简单. 基本思路上,我们就是用栈不断的pop,push.但是何时push,何时pop呢? ...

  9. 学习笔记TF020:序列标注、手写小写字母OCR数据集、双向RNN

    序列标注(sequence labelling),输入序列每一帧预测一个类别.OCR(Optical Character Recognition 光学字符识别). MIT口语系统研究组Rob Kass ...

  10. 利用神经网络算法的C#手写数字识别

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...

随机推荐

  1. Luogu1772 [ZJOI2006] 物流运输

    传送门 简化题意 给你 \(m\) 个码头,码头之间有双向边连接,\(n\) 天,其中一些码头在某些天会不可用,这 \(n\) 天都要有一条从 \(1\) 到 \(m\) 的路,每一次更换道路会需要 ...

  2. 2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X 和 Y 两个字符串相似。如果这两个字符串本身是相等的,那它们也是相似的。 例如,“tars“

    2023-05-23:如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等, 那么称 X 和 Y 两个字符串相似.如果这两个字符串本身是相等的,那它们也是相似的. 例如,"t ...

  3. Ado.Net 数据库访问技术(.Net 6版本)

    1. ADO.NET的前世今生 ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据.之所以使用ADO.NET ...

  4. 24 式加速你的 Python

    一,分析代码运行时间 第1式,测算代码运行时间 平凡方法 快捷方法(jupyter环境) 第2式,测算代码多次运行平均时间 平凡方法 快捷方法(jupyter环境) 第3式,按调用函数分析代码运行时间 ...

  5. Access+Trunk 配置

    实验拓扑 实验需求 按图示给各 PC 配置 IP 地址 在SW1和SW2上创建聚合组 PC1 与 PC3 属于 VLAN 10 : PC2 与 PC4 属于 VLAN 20 利用 Access 与 T ...

  6. Qt6使用SeriaPortl包

    简介: 最近使用Qt6.0开发一个自己串口小工具的时候,遇到了没有QtSerialPort包的情况,一番折腾终于找到了解决方案... 一. 在系统自带的卸载更改程序中,找到Qt,点击卸载 二. 点击添 ...

  7. ChatGPT在工业领域的研究与应用探索-AI助手实验应用

    为什么我的工作效率和质量要比其他人要高,因为我的电脑里有代码库.产品库.方案库.自己工作经验资料库等,根据一个应用场景或需求能够很快关联到想要的资料,并且整合成新的方案.我的核心竞争力是什么?各种资料 ...

  8. git reset --hard 撤回后commit的代码消失了的解决办法

    楼主在今天的工作中使用了这个命令 git reset --hard 撤回后commit的代码消失了,因为有commit,所以暂时得到了拯救,太不容易了,差点以为自己写的代码没了. 网上到处找帖子,看看 ...

  9. 在Linux环境下通过命令行执行JMeter脚本后查看响应结果的配置

    在Linux环境中进行性能测试时,我们可能会遇到一定程度的报错.如果无法打开JMeter的GUI界面,但又需要查看响应结果,可以按照以下步骤进行配置: 1. 打开JMeter的安装目录,在`bin/` ...

  10. 微信小程序生态15- 批量提交微信小程序审核的一种方式

    大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教. 以下是『微信小程序生态系列文章』正文! 需求背景 ...