Tinyriscv介绍

Tinyriscv: 本项目实现的是一个单核32位的小型RISC-V处理器核(tinyriscv),采用verilog语言编写。

tinyriscv有以下特点:

  1. 支持RV32IM指令集,通过RISC-V指令兼容性测试;
  2. 采用三级流水线,即取指,译码,执行;
  3. 可以运行C语言程序;
  4. 支持JTAG,可以通过openocd读写内存(在线更新程序);
  5. 支持中断;
  6. 支持总线;
  7. 支持FreeRTOS;
  8. 支持通过串口更新程序;
  9. 容易移植到任何FPGA平台(如果资源足够的话);

tinyriscv的整体框架如下:

项目中的各目录说明:

rtl:该目录包含tinyriscv的所有verilog源码;

sim:该目录包含仿真批处理bat文件和脚本;

tests:该目录包含测试程序源码,其中example目录为C语言程序例程源码,isa目录为RV32指令测试源码;

tools:该目录包含编译汇编和C语言程序所需GNU工具链和将二进制文件转成仿真所需的mem格式文件的脚本,还有通过串口下载程序的脚本。

pic:存放图片;

tb:该目录包含仿真的testbench文件;

fpga:存放FPGA相关文件,比如约束文件;

在linux(ubuntu)平台上已经运行过指令测试程序通过

移植到FPGA ZYNQ7020

1.软件:xilinx vivado开发环境。

2.FPGA:xilinx ZYNQ7020。

3.调试上位机openOCD。

4.调试器:CMSIS-DAP。

图1 RISCV调试系统框架

为与板子适配,修改源代码,修改管脚约束文件后,编译成功后,将比特流文件下载到板子中。

在用Jtag方式通过openocd调试tinyriscv时出现问题

一开始是调试器识别到两个jtag,后与同学讨论认为,ZYNQ7020是一块有arm硬核(PS)和可编程逻辑(PL可认为是FPGA)组成,不能直接调用jtag接口,所有的调用需要通过arm硬核来实现,上网查了很多资料未能解决。

移植到FPGA ARTY A7 100T

1.软件:xilinx vivado开发环境

2.FPGA:xilinx ARTY A7 100T

3.调试上位机openocd

4.调试器:CMSIS-DAP

参考ARTY A7 100T技术手册

https://digilent.com/reference/programmable-logic/arty-a7/reference-manual

管脚约束

digilent-xdc/Arty-A7-100-Master.xdc at master · Digilent/digilent-xdc · GitHub

原理图

https://digilent.com/reference/_media/programmable-logic/arty-a7/arty-a7-e2-sch.pdf

JTAG连接

和开发板上的pmod连接在一起

SPI

时钟约束50MHz

A7时钟源 是100MHz 直接接上去tinyriscv跑不了这么快 做一个时钟分频

添加IP核 PLL

系统提供的例化模板

将例化添加到顶层文件tinyriscv_soc_top中

要注意 必须要在第一次使用时钟之前例化出来

例化模块中输入是sys_clk 输出是clk

Clk是没有声明的状态 需要声明 复位也要保持一致 rst

Openocd作为上位机

通过JTAG方式下载程序并让程序跑起来

例: GPIO程序

两个GPIO口 一个输入模式 一个输出模式 关联起来

下载GPIO程序并运行 拨动拨码开关SW0 可以看到LED随之亮灭

参考

深入浅出RISC-V调试 | liangkangnan的博客

从零开始写RISC-V处理器 | liangkangnan的博客

Tinyriscv FPGA移植相关推荐

  1. Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程

    Xilinx zynq-7000系列FPGA移植Linux操作系统详细教程 一:前言 最近手上压了一块米联客的Miz7035,一块xilinx zynq-7000系列的开发板,想着正好学习一下linu ...

  2. matlab fpga 移植,使用MATLAB,Simulink以及基于模型的设计实现把电机控制算法移植到Zynq平台...

    注:参考文献:"使用MATLAB来实现电机驱动移植到Zynq SoC平台",Xilinx DSP方案部门的高级经理Tom Hill.该文章发表在刚刚出版的第87期XCell期刊上. ...

  3. FPGA移植软核的原理

    FPGA设计,规模巨大而且功能复杂,因此设计的每一个部分都从头开始是不切实际的.一种解决的办法是:对于较为通用的部分可以重用现有的功能模块,而把主要的时间和资源用在设计中的那些全新的.独特的部分.这就 ...

  4. 手把手教你移植 tinyriscv 到FPGA上

    我是 雪天鱼,一名FPGA爱好者,研究方向是FPGA架构探索和数字IC设计. 关注公众号[集成电路设计教程],获取更多学习资料,并拉你进"IC设计交流群". QQIC设计交流群 群 ...

  5. zynq FPGA 的双目视觉毕业设计(五)之matlab 极线矫正算法实现

    1.简述 我是参考这篇博主  相机去畸变,以及双目平行校正----极线校正(二)----之双目平行校正详细过程 matlab的源码下面给出,很简单的算法结构,不做详细解说. 2.我的matlab双目极 ...

  6. 开源RISC-V处理器(蜂鸟E203)学习(五)A100T-FPGA 移植蜂鸟Hbirdv2,实现Centos下调试器USB识别以及程序编译烧写,并进行C语言仿真

    1.简述 最近购买了一块适合做原型验证FPGA板卡,板卡接口和外设比较丰富,十分适合跑一些小型的SOC工程,比如蜂鸟E203:板卡自带FPGA烧写器和软核CPU的JATG调试器,还有USB接口的UAR ...

  7. 中自苏研院2021招聘季开始啦!

    3D视觉工坊致力于推荐最棒的工作机会,精准地为其找到最佳求职者,做连接优质企业和优质人才的桥梁.如果你需要我们帮助你发布实习或全职岗位,请添加微信号「CV_LAB」. 2021年招聘季正式开启啦 ↓我 ...

  8. Sobel算子的边缘检测实现

    1. Sobel算子的边缘检测实现 1.1. 边缘检测概念 所谓边缘是指其周围像素灰度急剧变化的那些象素的集合,它是图像最基本的特征.边缘存在于目标.背景和区域之间,所以,它是图像分割所依赖的最重要的 ...

  9. 论 做 AI 芯片的正确姿势

    https://xie.infoq.cn/article/d5ab8bea53fa8a08406fabf9d 论做 AI 芯片的正确姿势 作者:flow 2020-08-10 本文字数:14908 字 ...

最新文章

  1. IE9会颠覆传统的上网模式?
  2. 猿类如何捕获少女心--难以琢磨的try-catch
  3. 位居行业第一,智能投影品牌坚果迎来3C数码零售行业的“扬眉曲线”?
  4. winform打开cad图纸_为什么CAD图纸打开后会显示很多问号“???”,该怎么解决...
  5. SQL 数据分析常用语句
  6. java构建json_Java构造和解析Json数据的两种方法详解一
  7. Intellij IDEA导入JAVA项目并启动(哈哈哈,天天都有人问)
  8. supermap iserver端口介绍
  9. Ad-Hoc Query入门
  10. C/C++作用域运算符::
  11. Docker下载Nginx镜像并运行Nginx容器
  12. QQ在线客服代码(不需要加好友即可发起临时会话)
  13. python基本写法_python操作文件常用写法
  14. Biotin-PEG2000-Pyrene 含有生物素和芘丁酸的PEG,Pyrene-PEG2000-Biotin
  15. Python爬虫实战 | 人民网爬虫 根据关键词筛选新闻文章
  16. 从fastq生成vcf文件
  17. 父亲节python代码半个心_2019父亲节活动方案,暖心来袭!
  18. 移动终端课程设计——校园淘二手交易APP
  19. 反向寻车管理系统服务器,一种反向寻车系统及寻车方法
  20. 华为scp快充协议详解_华为SCP快充技术曝光:支持“电荷泵”技术,最高可达20W...

热门文章

  1. C语言、Java学习笔记(三)---几种简单的排序算法
  2. SparkConf 配置的概念和用法
  3. ijkplayer源码---音频播放
  4. 服务器网站需要多大硬盘,做网站服务器硬盘多大
  5. ImageNet和COCO数据集分类
  6. 强化学习 - 详细解读DQN(更新完成)
  7. BDW01手把手系列01:BDW01开发板基于TencentOS Tiny之helloworld!
  8. Altium Designer 18板子信息命令
  9. 美国计算机科学学会会长,美国计算机科学computerscience 专业
  10. php中调用css设置表格,CSS表格设置实例