eddsos的个人空间 https://blog.eetop.cn/6282 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

risc-v MCU 的研究

已有 1708 次阅读| 2020-4-28 00:08 |系统分类:芯片设计

一:通用寄存器

RegisterABIUse by conventionPreserved?
x0zerohardwired to 0, ignores writesn/a
x1rareturn address for jumpsno
x2spstack pointeryes
x3gpglobal pointern/a
x4tpthread pointern/a
x5t0temporary register 0no
x6t1temporary register 1no
x7t2temporary register 2no
x8s0 or fpsaved register 0 or frame pointeryes
x9s1saved register 1yes
x10a0return value or function argument 0no
x11a1return value or function argument 1no
x12a2function argument 2no
x13a3function argument 3no
x14a4function argument 4no
x15a5function argument 5no
x16a6function argument 6no
x17a7function argument 7no
x18s2saved register 2yes
x19s3saved register 3yes
x20s4saved register 4yes
x21s5saved register 5yes
x22s6saved register 6yes
x23s7saved register 7yes
x24s8saved register 8yes
x25s9saved register 9yes
x26s10saved register 10yes
x27s11saved register 11yes
x28t3temporary register 3no
x29t4temporary register 4no
x30t5temporary register 5no
x31t6temporary register 6no
pc(none)program countern/a

Little Endian mode is used.

这个笔记写的不错,共享下来

https://www.cnblogs.com/George-Okelly1995/p/9801357.html

二:代码管理

学习一个CPU的最好的方法是试着写一个CPU, 就像软件的hello world。先实现一个简单的指令集,然后逐步扩充。

不太习惯用github之类的东西,一般用本地的svn,为了免得自己懈怠,找了一个代码管理网站,过一段更新进度。

https://gitee.com/lcf0451/riscv0.git

三:设计一个简单的CPU

  1. 买了雷思磊的<<自己动手写CPU>>,之所以买这本而不是胡振波的那本《手把手教你设计CPU》,存粹是因为我们公司发了100元的Amazon消费券。而我在Kindle中只能找到这本:-)

    没钱买书的可以看这个微博,书没有多少钱,能买就买吧。

    https://blog.csdn.net/leishangwen/article/list/2?t=1

  2. 设计一个一条指令的CPU.(2级流水线)  --done 2020-05-01.

    跑了仿真和综合                                       --done 2020-05-02

  3. 编译环境的搭建    --done 2020-05-05

    windows 下riscv工具链的编译可参考这个网页:

    https://www.emdalo.com/posts/risc-v-gnu-compiler-toolchain-howto-compile-on-windows/

    写了一个简单的汇编程序,然后编译成二进制的文件。初始化到memory,跑仿真成功。

    由于买的是Kindle的电子版本,不知道从哪可以下载bin2mem.exe文件,自己从下面这个程序简单改了一下,实现了

    同样的功能,改动后的版本上传到了gitee上。

    https://github.com/ikorb/gcvideo/blob/master/Firmware/bin2mem.pl

  4. 更多指令的实现 --done 2020-05-17

    -> 实现了所有的ALU指令,实现了load 指令。 smoke test pass. --done 2020-05-10.

    -> 大致浏览了以下文档,riscv-spec.pdf/RISC-V-Reader-Chinese-v2p1.pdf/riscv-privileged-v1.9.1.pdf。网上看到一个牛人说几个小时设计了一个RISC-V的CPU。不知道怎么做到的。我收集和研究资料就用了好长时间,这还是快速浏览的情况。  --done 2020-05-12

    -> All RV32I commands are implemented.   --done 2020-05-12.

    -> 实现RV32M指令   --done 2020-05-16

        IBEX的设计有些地方没有那么容易看懂。是因为做了一些逻辑资源共享和路径的balance. 我写这个只是为了研究,所以很多都忽略掉了,和IBEX不一样,而是直接实现,让工具去优化吧。并且看IBEX的设计,实际上有些地方功耗还可以改进,将来自己用的时候可以优化一下。目前阶段主要是学习。

       IBEX的设计是用的system verilog, 而我是用verilog. 第一是因为自己的很多工具都是verilog的,第二是个人觉得system verilog是一个很尴尬的设计语言。抽象性还不如去用C,封装后可读性不如verilog, 懒得换了。

    -> 实现各种异常检测和中断 -done 2020-05-17

    -> 实现RV32C指令 -done 2020-05-17

  5. 验证,验证,验证。--tracked on another thread(2020-05-20).

    之所以很多开源的设计,平时不用。是因为验证的不完整。因为试错的成本很高。所以在使用之前,需要完整的验证。

    验证的工作在SOC的日志里记录。在研究RISCV CPU的时间,发现大部分的时间花在找资料和研究资料上。并且随着时间,自己必然会忘记。将来如果自己需要更复杂或者其它性能的CPU,可能还需要把这些资料再看一遍。这是很大的浪费。既然目前自己刚看完RISCV的资料,不如研究一下RISCV CPU的自动生成。这样将来自己需要不同性能的CPU是只需要简单生成一下,不需要花费很大的力气去研究资料,再去设计一个RISCV CPU。

  6. 使用更抽象的语言设计RISCV CPU

    打算从SpinalHDL开始,请参考https://zhuanlan.zhihu.com/p/89249985。

    抽象的模型语言,个人其实更喜欢用C,个人也写过用C转verilog的小工具。但是自己从头搞从C语言模型生成RISCV CPU的设计,太浪费时间。还是站在别人的肩膀上速度更快:-)。 

    -> 下载并研究SpinalHDL.    --done 2020-06-06

    安装软件,走了很多弯路。最后发现参考这个帖子比较好。成功安装并运行了第一个例子。尽管很多地方还不是很明白。

    https://linuxadminonline.com/how-to-install-sbt-on-centos-7/

    -> 下载各种SpinalHDL的文章,视频看看。--done.

          scala for impatient. -- done 2020-09-07

          Programming in scala -- on going

    -> 重温各种CPU架构设计的资料  --done

    公司的项目突然忙了起来,每天都在加班,回家后连开自己电脑的想法都没有。刚好趁这段时间,把零散的时间利用起来,重温各种CPU架构的书。

    --> 利用现有的VexRiscV SOC, 生成代码,并编译C测试程序。FPGA demo. --done

    无标题.png

    --> 利用SpinalHDL 设计一些简单的verilog 设计。 --.done.

    SpinalHDL Workshop.

    --> 利用SpinalHDL自己设计RAM IP, 替换VexRiscV中的RAM. --On going.

 

全部作者的其他最新日志

评论 (0 个评论)

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 5

    粉丝
  • 5

    好友
  • 0

    获赞
  • 4

    评论
  • 905

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-25 08:02 , Processed in 0.025529 second(s), 16 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部