蜂鸟E200、E203的GPIO仿真demo
根据《手把手叫你设计CPU-RISC-V处理器》17章详细介绍
或者RISCV/e200_opensource的doc中文档也有介绍)一步一步完成E203的EDA仿真:
********本篇只讨论C语言工程的编译、仿真过程,不涉及FPGA原型验证。
准备工作(这个可以参考书籍上册或者我CSDN主页上也有教程):搭建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指令机器码后跑飞,大家有兴趣的可以继续摸索。
蜂鸟E200、E203的GPIO仿真demo相关推荐
- 谁说国内无RISC-V开源核——您还不知蜂鸟E200?
目录 1 开源RISC-V挑花眼了? 2 谁说国内没有RISC-V开源核? 3 想要专业水准的开源核? 4 担心性能指标不行? 5 抱怨没有配套SoC? 6 要是可配置就好了? 7 会不会没有文档介绍 ...
- VCS自带的UPF低功耗仿真demo介绍
文章目录 前言 1.demo所在的位置 2.demo的介绍 3.启动demo仿真 4.利用verdi来分析UPF文件 总结 前言 VCS工具安装路径下,自带了一个UPF低功耗仿真的演示用例,本文主要介 ...
- VCS+Verdi联合仿真demo教程
公司仿真和看波形工具是VCS+Verdi,由于这两样工具结合在一起有着极高的效率,与在学校仅仅使用vivado软件跑整个流程相比,真的是小巫见大巫. 因此便在自己电脑的虚拟机中试着建立VCS+Verd ...
- 蜂鸟Hbird E203 RISC-V基础
文章目录 基础例程 1.CPU基础知识 1.1 ISA 指令集架构 1.2 常见ISA 2.RISC-V基础知识 2.1 模块化的指令子集 2.2 RISC-V编码器特点 2.3 RISC-V工具链 ...
- 蜂鸟E200模块分析——IFU:Simple-BPU
①Mini-Decode: Mini-Decode 模块内部也是例化调用一个完整的 Decode 模块,但是将其不相关的输入信号接零.输出信号悬空不连接,从而使得综合工具将完整 Deco 模块中无关逻 ...
- SUMO安装并实现交通仿真Demo
sumo简介 sumo是一种开源,微观,多模态的交通模拟仿真软件,每辆车都是明确建模的,有自己的路线,并在网络独立移动 下载安装sumo 前往sumo官网下载,如下图红色标注所示,一键安装. 实现De ...
- simulink仿真demo临摹笔记之编辑信号发生器(Signal Builder)
一,临摹对象 stateflow模型:sf_abstemporal_enable 二,问题现象 拖入Signal Builder 模块后,默认的信号波形是这样的: 但官方例程中的信号是这样的: 每一步 ...
- 蜂鸟E200(2) 流水线介绍
处理器流水线概述 计算机体系中最多的经典MIPS五级流水线,如下图所示 取指 指令取指(Instruction Fetch)是指将指令从存储器中读取出来 译码 指令译码(Instruction Dec ...
- ModelSim仿真蜂鸟E203 / 200【功能验证】
ModelSim仿真蜂鸟E203 / 200 教程[功能验证] 1. windows10下载ModelSim10.5+破解 2. 下载蜂鸟E203源码 3. 新建个文件夹 4. 新建工程 5. 用mo ...
最新文章
- mysql中没有内置函数_[mysql]MySQL中的内置函数
- Gson:我爸是 Google
- IntelliJ IDEA 2020.3 重大特性
- 用jdk在cmd下运行编译java程序
- 02搭建cdh版本控制
- unix到底有啥用_观点|什么是Unix以及它为什么这么重要?
- vue3.x案例 购物车
- linux终端安装playonlinux,Ubuntu怎么安装PlayOnLinux
- 常见移动机器人轮直径校准
- 机器学习实践指南(五)—— GD/SGD/MSGD 伪代码演示
- 【Android Developers Training】 7. 添加Action Buttons
- mysql热备 binlog日志切割_查看MySQL还原出来的binlog日志中内容方法
- 安卓游戏广告加速插件_游戏加速器(强烈推荐!)[PC+安卓]
- 2022年危险化学品经营单位安全管理人员考试练习题及模拟考试
- TrueType字体变成宋体的方法
- 视频教程-QQ机器人--基于酷Q开发7精讲-C/C++
- 解决Chrome中打不开Google搜索结果链接
- openEuler Meetup 南京站 | 麒麟信安加入南京用户组,分享《CentOS原地透明迁移方案技术实践》
- QQ空间迁移_【Frame_relay子接口的两种配置方法】
- 腾讯云服务器域名公安备案记录