hxl_led 发表于 2020-4-12 20:32:37

用python 写了个riscv32I指令集仿真,初步可以运行

为了学习riscv32指令集,我花了几天时间用python 做了个实验仿真程序,由于怕我对指令集理解有误,发出来,大家一块看看改改,谢谢了!
我的python也是学了个入门,代码写得不好,献丑了哈
同时我用spinalHDL 写了个riscv32I针对FPGA的硬件实现, 希望感兴趣的网友参与( 前提是有verilog 和scala 语言基础)


下面是源程序和测试用的.bin .c 和反汇编文件



XIVN1987 发表于 2020-4-12 20:52:38


大神牛叉,,感谢分享

太高端,只能瞻仰

Romate 发表于 2020-4-12 21:10:03

厉害大神真令人佩服   

tangmintm8013TM 发表于 2020-4-12 21:36:29

厉害,大神!

Eworm001 发表于 2020-4-12 22:18:05

厉害厉害

了无 发表于 2020-4-12 22:25:49

不明觉厉

nanfang2000 发表于 2020-4-12 22:36:31

我Python用了几年也不知道怎么设计仿真指令。。。只能仰望

yangwm2012 发表于 2020-4-12 23:00:57

只能仰望

uindex 发表于 2020-4-13 02:54:50

真是塞翁失马啊,憋得这大神露出水面!

qiqirachel 发表于 2020-4-13 06:12:44

Python版单片机?

dongwang_fl 发表于 2020-4-13 08:02:41

好牛。。。

OOXX110 发表于 2020-4-13 08:04:13

大神牛叉,,感谢分享

太高端,只能瞻仰

Oops_jing 发表于 2020-4-13 08:38:02

太高端,只能瞻仰

huangqi412 发表于 2020-4-13 08:54:26

之前看到过有个600行PY实现RISCV虚拟机

Excellence 发表于 2020-4-13 09:16:19

太高端,只能瞻仰

wq_601840968 发表于 2020-4-13 09:35:12

不明觉厉

wye11083 发表于 2020-4-13 12:04:10

lz,有vexriscv没必要重复造轮子了。

aozima 发表于 2020-4-13 12:20:52

给楼主点个赞

xy-mcu 发表于 2020-4-13 12:37:58

这要多厉害,才能写个仿真都是信手拈来?

harold 发表于 2020-4-13 12:57:08

牛人......

我是一个大白菜 发表于 2020-4-13 14:38:08

楼主牛人。。。学习

xk100 发表于 2020-4-13 15:58:32

太牛了。

菜包 发表于 2020-4-13 18:20:22

然后你可以在这个仿真器里再写个python解释器{:lol:}

hxl_led 发表于 2020-4-14 10:20:42

Eworm001 发表于 2020-4-12 22:18
厉害厉害

@Eworm001谢谢刘总,我的spinalHDL 还是在您的热心帮助下入门的,很是感激!

hxl_led 发表于 2020-4-14 10:23:47

谢谢各位网友的回复, 希望能在spinalHDLriscv 上多多交流哈

路璐 发表于 2020-4-14 13:25:03

本帖最后由 路璐 于 2020-4-14 13:27 编辑

hxl_led 发表于 2020-4-14 10:23
谢谢各位网友的回复, 希望能在spinalHDLriscv 上多多交流哈

在吗,可否加下联系方式,我也在学RISCV,最近在破解JTAG SMT3调试器用于在FPGA上实现RISC V

Eworm001 发表于 2020-4-14 14:40:00

hxl_led 发表于 2020-4-14 10:20
@Eworm001谢谢刘总,我的spinalHDL 还是在您的热心帮助下入门的,很是感激!

{:smile:} 共同进步

Eworm001 发表于 2020-4-14 14:40:52

路璐 发表于 2020-4-14 13:25
在吗,可否加下联系方式,我也在学RISCV,最近在破解JTAG SMT3调试器用于在FPGA上实现RISC V ...

一个FT232H breakout 板子就好了

路璐 发表于 2020-4-14 15:14:01

Eworm001 发表于 2020-4-14 14:40
一个FT232H breakout 板子就好了

我用的FT2232H{:loveliness:} ,昨天刚把PCB弄出来,主要是想完美支持XLINX和DIGILENT工具,而且可以同时使用JTAG和UART,比较方便

Eworm001 发表于 2020-4-14 17:56:37

RAM 为什么分成 4个 Bank?
RAM_Bank0 = * BUFF_SIZE
RAM_Bank1 = * BUFF_SIZE
RAM_Bank2 = * BUFF_SIZE
RAM_Bank3 = * BUFF_SIZE

liyuncan 发表于 2020-4-14 18:12:00

楼主牛逼,佩服

hxl_led 发表于 2020-4-14 20:55:36

本帖最后由 hxl_led 于 2020-4-14 20:57 编辑

Eworm001 发表于 2020-4-14 17:56
RAM 为什么分成 4个 Bank?
RAM_Bank0 = * BUFF_SIZE
RAM_Bank1 = * BUFF_SIZE


对应于指令的LBLHLWSBSH SW的读写内存指令, 执行读写一个字节,半个字,一个字
LB LH 读取时 要注意符号扩展

dreambox 发表于 2020-4-15 23:51:49

太高端,膜拜呀

flyfox8 发表于 2020-4-17 06:51:43

又见胡大侠现身。

xuyapple 发表于 2020-4-17 08:20:05

厉害,大神!
页: [1]
查看完整版本: 用python 写了个riscv32I指令集仿真,初步可以运行