由来

由于去年工作变动,有幸进入了芯片行业,但主要工作内容为基于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. 一个.Net开发的功能强大、易于使用的流媒体服务器和管理系统

    推荐一个视频管理系统,非常适合个人或者公司打造视频网站. 项目简介 这是基于.Net Core开发的,跨平台的开源项目:支持多种音视频格式,如MP3.MP4.AVI.WMV.FLV等:支持本地管理与远 ...

  2. IT入门深似海,入门到放弃你学废了嘛

    我一直觉得IT行业 程序员行业.甚至觉得程序员人群 是一个特殊存在的群体. 入门到放弃,是真的,IT门槛高嘛. 其实吧,IT编程门槛,是有的,但是对于感兴趣的,想学习IT编程同学来说,也是一件容易事情 ...

  3. Mysql DDL执行方式-pt-osc介绍 | 京东云技术团队

    1 引言 大家好,接着上次和大家一起学习了<MySQL DDL执行方式-Online DDL介绍>,那么今天接着和大家一起学习另一种MySQL DDL执行方式之pt-soc. 在MySQL ...

  4. 一分钟学一个 Linux 命令 - pwd

    前言 大家好,我是 god23bin.欢迎大家继续围观<一分钟学一个 Linux 命令>,每天只需一分钟,记住一个 Linux 命令不成问题.本篇文章将聚焦于 pwd 命令,一个超级简单又 ...

  5. 2023-07-01:redis过期策略都有哪些?LRU 算法知道吗?

    2023-07-01:redis过期策略都有哪些?LRU 算法知道吗? 答案2023-07-01: 缓存淘汰算法(过期策略) 当Redis的内存超出物理内存限制时,内存中的数据就会频繁地与磁盘进行交换 ...

  6. EDP转LVDS屏转接板方案芯片CS5211替代CH7511B电路设计

    CS5211替代CH7511B电路设计: CS5211用于设计DP转LVDS转换器,DP转LVDS控制板,DP转LVDS转接板等产品设计,其性能和参数可以替代与兼容PS8622,PS8625,CH75 ...

  7. RocketMq5.0 任意延迟时间 TimerMessageStore 源码解析

    TimerMessageStore 简略介绍 延迟队列 rmq_sys_wheel_timer 指定时间的延迟消息.会先投递到 rmq_sys_wheel_timer 队列中 然后由 TimerMes ...

  8. 【Java】并行执行任务

    在实际的应用上,我们平时需要调用第三方的接口,可能会调用多个接口,串行执行的话, 就需要等待所有的接口调用完成之后才获取到结果,那我们有没有并行的方法的呢? 串行执行 以下是三个接口,假设他们额的执行 ...

  9. 包管理工具npm和Yarn的区别,我们该如何选择?

    好家伙,学习新工具    1.为什么我们需要包管理器? 关于npm我们已经知道了,这是我们项目的包管理器, 我们现在用的无比顺手的工具,都是在无数的竞争中杀出来的,他们淘汰了无数的产品   首先,倘若 ...

  10. nrm工具

    nrm 工具 nrm(npm registry manager)是npm镜像源管理工具.可快速帮助查看.切换.管理npm镜像源. 安装 npm install -g nrm 查看 nrm ls 切换 ...