Tinyriscv FPGA移植

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的博客

  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
Tinyriscv是一个基于RISC-V架构的处理器核。要将Tinyriscv移植到Zynq7020 FPGA上,可以按照以下步骤进行操作: 1. 首先,根据引用\[1\]中的配置文件tinyriscv.cfg,设置JTAG连接和目标设备。确保正确设置了芯片名称、IR长度和预期ID。 2. 然后,根据引用\[2\]中的说明,选择一个未使用的管脚来绑定Tinyriscv的JTAG接口。这个管脚不能与FPGA自身的JTAG接口冲突。 3. 接下来,根据引用\[3\]中提供的链接,下载Tinyriscv的master v2.4版本代码。可以使用Git克隆到本地。 4. 在移植过程中,需要使用终端软件,如Cygwin。确保已经安装了Cygwin,并按照引用\[3\]中的教程进行配置。 5. 在移植过程中,需要根据Zynq7020 FPGA的具体情况进行适配和配置。这包括设置时钟、引脚映射、外设接口等。 6. 最后,根据移植后的配置,使用JTAG工具将Tinyriscv固件加载到Zynq7020 FPGA上,并进行验证和测试。 需要注意的是,移植Tinyriscv到Zynq7020 FPGA是一个复杂的过程,需要对FPGARISC-V架构有一定的了解。建议参考相关文档和资料,以确保正确完成移植过程。 #### 引用[.reference_title] - *1* *2* *3* [手把手教你移植 tinyriscvFPGA上](https://blog.csdn.net/qq_44447544/article/details/123251073)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值