由来

由于去年工作变动,有幸进入了芯片行业,但主要工作内容为基于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. DevEco Studio 3.1 Release | 动态共享包开发,编译更快,包更小

      原文:https://mp.weixin.qq.com/s/qPvHZNZuLccAsviBcXtPWw,点击链接查看更多技术内容. 动态共享包(HSP)开发是DevEco Studio 3.1  ...

  2. postman接口关联-token值

    背景: 在测试工作中,测试鉴权的接口需要用到登录接口的token,需要我们先调用登录接口,获得token,然后把即时获得的token填入请求中发送请求,我们可以用设置全局变量的办法解决这个问题   实 ...

  3. wireshark基本使用

    Wireshark 是一种开源.跨平台的网络数据包分析工具,能够嗅探和调查实时流量并检查数据包捕获 (PCAP).它通常 被用作最好的数据包分析工具之一. 数据包过滤操作 ip过滤器 IP 过滤器帮助 ...

  4. 揭秘Spring依赖注入和SpEL表达式

    摘要:在本文中,我们深入探讨了Spring框架中的属性注入技术,包括setter注入.构造器注入.注解式属性注入,以及使用SpEL表达式进行属性注入. 本文分享自华为云社区<Spring高手之路 ...

  5. maven项目中Tomcat启动失败:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:run

    maven项目中Tomcat启动失败:Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:run (defa ...

  6. 第二章 VM与Linux的安装

    1. VMWare 安装 ​​ ‍ ​​ ‍ ‍ 2. CentOS 安装 ‍ 安装网址:https://blog.csdn.net/qq_41819965/article/details/11118 ...

  7. 图书商城项目练习①管理后台Vue2/ElementUI

    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程.面向初学者,本人也是初学者,搬砖技术还不成熟.项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite).到 ...

  8. ubuntu22.04安装vsftp遇到的问题

    问题 FileZilla连接文件服务器时出现"无法读取文件目录",随后出现"20秒后无活动,连接超时"."无法连接到服务器"文件目录无法读取 ...

  9. 即构发布 LCEP 产品「RoomKit」 ,实现房间内0代码接入

    2021年2月5日,即构科技正式发布全新形态「低代码互动平台」(Low-code Engagement Platform,简称LCEP)产品「RoomKit」. RoomKit定位为低代码互动平台(L ...

  10. 春节无法线下社交聚会,来线上“一起X”共享体验

    引语: 共享体验或许是全真互联网时代最显著的标志. 被疫情深刻改变的一年里,人们的社交关系和社交活动正在发生巨大的改变. 一方面,从线下转线上,我们能通过互联网连接更多的人,参与各种形式的社交活动,将 ...