Efinix Trion T20 实现 PulseRain Reindeer RISC-V 软核 CPU

逻辑主页

概述

本教程通过Efinix Trion T20 FPGA评估套件,详细讲解如何在Trion T20 BGA256上实现PulseRain的Reindeer RISC-V软核CPU。内容涵盖JTAG连接、Efinity安装、RISC-V构建、板载配置存储器编程以及运行RISC-V示例项目。

硬件需求

基础开发板

配件

硬件设置 USB JTAG

Trion T20 JTAG H6接口

数据输出 3V3
测试时钟 数据输入
测试模式选择 系统复位
地线 地线

C232HM-DDHSL-0

Vcc 红色
测试时钟 橙色
数据输入 黄色
数据输出 绿色
测试模式选择 棕色
GPIOL0 灰色
GPIOL1 紫色
GPIOL2 白色
GPIOL3 蓝色
地线 黑色

硬件设置 USB 串口

BANK1D_1E

49 48
47 46
45 44
地线 地线

TTL-232R-3V3

地线 黑色
CTS# 棕色
VCC 红色
TXD 橙色
RXD 黄色
RTS# 绿色

软件

Efinity® 集成开发环境

此项目需要 Efinity® 集成开发环境 v2019.3.272

Zadig USB 驱动安装简易指南

下载 Zadig,这是一款用于安装通用 USB 驱动的 Windows 应用程序

  • 打开 Zadig 软件。
  • 选择 选项(Options) > 列出所有设备(List All Devices)。
  • 关闭 选项(Options) > 忽略集线器或复合父设备(Ignore Hubs or Composite Parents)。
  • 选择 Trion T20 开发板(Trion T20 Development Board)。
  • 在驱动程序旁选择libusbK(版本)(libusbK (version))。
  • 点击Replace Driver
  • 对C232HM-DDHSL-0 JTAG重复此操作


GitHub 桌面版 - 克隆 PulseRain Reindeer Trion 项目

下载GitHub桌面版,以便克隆PulseRain Reindeer的RTL代码。

1: 文件(File) → 克隆仓库(Clone Repository)
2: URL选项卡(URL Tab)
3: GitHub - PulseRain/Reindeer_Trion: 适用于Efinix Trion T20 BGA256开发套件的PulseRain Reindeer RISC-V软核CPU

Arduino IDE

下载Arduino IDE

构建 Reindeer Trion 项目

打开:项目

./Reindeer_Trion/build/Reindeer_Trion.xml

打开接口设计器

生成 Efinity 约束文件

生成后关闭接口设计器。

开始综合

流程(Flow) → 综合(Synthesize)

***** Ending stage netlist pre-processing *****
Wed February 5 20 14:19:31 - Flow data refreshed. Elapsed time = 0m 7.447s VM : 72.892 MB RSS : 106.912 MB
Wed February 5 20 14:19:31 - Running synthesis flow done. Duration = 0m 24.632s

开始布局

流程(Flow) → 布局(Place)

Wed February 5 20 14:20:54 - Flow data refreshed. Elapsed time = 0m 6.983s VM : 149.564 MB RSS : 186.184 MB
Wed February 5 20 14:20:54 - Running placement flow done. Duration = 0m 39.952s

开始布线

流程(Flow) → 布线(Route)

Wed February 5 20 14:22:22 - Flow data refreshed. Elapsed time = 0m 12.47s VM : 572.36 MB RSS : 600.54 MB
Wed February 5 20 14:22:22 - Running routing flow done. Duration = 0m 26.69s

开始生成比特流

流程(Flow) → 生成比特流(Generate Bistream)

Wed February 5 20 14:23:52 - C:/Efinity/2019.3/bin/efx_pgm finished. Exit code = 0 Exit status : Normal
Running hex generation flow done.
 
Wed February 5 20 14:23:52 - Running bitstream generation flow done. Duration = 0m 3.682s

通过 JTAG 编程开发套件

启动编程器

工具(Tools) → 打开编程器(Open Programmer)

  • USB目标设备:C232HM-DDHSL-0
  • 镜像文件:./build/outflow/Reindeer_Trion.hex
  • 编程模式:JTAG

Wed February 5 20 14:47:09 - Programming 'C:/GitHub/Reindeer_Trion/build/outflow/Reindeer_Trion.hex' via JTAG at freq 3.0 MHz
Wed February 5 20 14:47:09 - Device ID read from JTAG: 0x00210A79
Wed February 5 20 14:47:15 - ... finished with JTAG programming

配置 Arduino IDE

附加开发板管理器网址:

https://raw.githubusercontent.com/PulseRain/Arduino_RISCV_IDE/master/package_pulserain.com_index.json

在以下过程中显示详细输出:

  • 编译
  • 上传

  • 通过Arduino的“开发板管理器”添加对Reindeer的支持


  • 开发板管理器:选择Efinix Trion T20 BGA256开发套件


22_00

Arduino RISC-V 示例

void setup() {
  Serial.print(" ====================");
  GPIO_P3 = 0xAA;
  delay (2000);
}
 
uint32_t i = 0;
uint8_t led_position = 0;
 
void loop() {
  Serial.print (i);
  i = (i + 1) %(1024);
  Serial.print(" ==================== \n");
  delay (600);
  led_position = (led_position + 1) % 8;
  GPIO_P3 = ~(1 << led_position);
}

评论

如有任何问题或意见,请访问我们的技术论坛:TechForum