蜂鸟E200、E203的GPIO仿真demo

根据《手把手叫你设计CPU-RISC-V处理器》17章详细介绍
    或者RISCV/e200_opensource的doc中文档也有介绍)一步一步完成E203的EDA仿真:

********本篇只讨论C语言工程的编译、仿真过程,不涉及FPGA原型验证。

    准备工作(这个可以参考书籍上册或者我优快云主页上也有教程):搭建ubuntu16.4虚拟机环境,用github 命令 git clone ttps://github.com/SI-RISCV/e200_opensource 到本地目录,
    也可以直接下载压缩包,然后拉到虚拟机里面。

    学习一下基本的makefile规则,自己可以找资料看一下,这里就不做过多介绍。
    1、按照书中流程,或者e200_opensource doc中的文档,搭建编译环境,文档中有详细描述,按照描述一步一步做没问题,不要跳过步骤。
    2、搭建EDA硬件仿真环境,需要RTL代码、仿真工具、波形查看工具
        我选用的是VCS+Verdi,还可以用iverilog+verdi、或者vsim,看个人习惯。
        测试激励选用tb.v或者字节重新例化e203_soc_top顶层模块,生成时钟、复位。

********下面的流程纯属于个人理解,若有不当之处请指出,本人还在继续理解中,欢迎一起学习、指导********

********接下来需要看懂三个基本的makefile文件,想暂时不看懂,照着3、4、5、6跑跑仿真也行。
        A、risc-v-tools/risc-v-test/isa/makefile        ***测试汇编指令的编译脚本,可以自己添加汇编文件
        B、sirv-e-sdk/makefile                  ***测试C语言的编译脚本,亲测后发现不能用需要修改见下面说明
        C、vsim/makefile                    ***EDA仿真的脚本,建议按照自己的习惯写一个
    
    3、修改sirv-e-sdk/env/common.mk 将start.S 文件换成 risc-v-tools/risc-v-test/env/v/link.ld        连同路径一并替换
    
    4、修改sirv-e-sdk/env/common.mk 将link.lds 文件换成 risc-v-tools/risc-v-test/debug/program/start.S 连同路径一并替换
    
    5、用/e200_opensource_2/riscv-tools/fpga_test4sim/demo_gpio4sim/demogpio.c替换sirv-e-sdk/software/demo_gpio/demo_gpio.c
        修改一些宏定义,不然编译出错,也可根据编译的错误来修改,建议根据错误修改。就是先运行后面的步骤6,然后根据步骤6的报错来修改。
        在主函数里面添加一个while(1){写GPIO反转的代码},详细请看demo_gpio.c文件。

    6、在sirv-e-sdk路径下运行 make software PROGRAM=demo_gpio BOARD=sirv-e203-arty 编译出来demo_gpio目标文件,
        报错就修改demo_gpio.c源文件,里面有一些宏没有定义。我以后整理这些宏定义。
    
    7、用/e200_opensource_2/riscv-tools/prebuilt_tools/prefix/bin/riscv-none-embed-objcopy -O verilog demo_gpio demo_gpio.verilog
          将demo_gpio 转成 demo_gpio.erilog(二进制机器码,用于烧录到ITCM中运行),并将demo_gpio.verilog文件中的@8000xxxx都改成@0000xxxx,
        可以用名命令实现,或者用编辑器实现。
        可以用/e200_opensource_2/riscv-tools/prebuilt_tools/prefix/bin/riscv-none-embed-objdump -d 查看反汇编。

    8、打开测试激励文件tb.v
        将demo_gpio.verilog文件放到ITCM中,次操作在激励中有详细代码,使用的是verilog系统函数$readmemh()将代码放到内部itcm_mem,
        然后通过一个for循环将itcm_mem加载到内部ITCM中。根据仿真器的需要自己选择保存波性文件。
    
    9、运行EDA仿真 make run_all TESTCASE = demo_gpio
    
    10、打开波形工具看波形 GPIO19 20 21

    11、可以自己修改demo_gpio.c实现更过别的测试
    
********结束        

    12、这里本人只是测试C语言的ubutu编译环境和EDA的仿真环境,并为验证流程是否科学、严谨。
    13、我认为还可以通过将代码直接放到内部QSPI FLASH中,然后BOOT选用QSPI直接运行,但是我编译出来的代码却在执行完第一个16bit指令机器码后跑飞,大家有兴趣的可以继续摸索。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值