当前位置:首页 > 工业控制 > 电路设计项目集锦
[导读]RP2354则基于RP2350提供的基础设计,并在封装中集成2MB QSPI闪存,从而实现更紧凑的解决方案。它保留了双核Arm Cortex-M33和双核Hazard3 RISC-V架构,配备520KB SRAM、PIO模块以及增强的安全特性。

Forgix开发板集成了RP2354与Efinix T8 FPGA,通过USB-C供电并进行编程,体积小巧。

这使其成为一款紧凑而强大的FPGA开发板,适用于多种需要并行(FPGA)和串行(RP2354)处理的项目。

Efinix FPGA采用Trion系列的T8芯片,为开发者提供7384个逻辑单元、12.28千比特嵌入式内存/24个嵌入式内存块以及8个嵌入式乘法器。

RP2354则基于RP2350提供的基础设计,并在封装中集成2MB QSPI闪存,从而实现更紧凑的解决方案。它保留了双核Arm Cortex-M33和双核Hazard3 RISC-V架构,配备520KB SRAM、PIO模块以及增强的安全特性。

我们使用Efinity设计软件开发Efinix FPGA,而RP2354的应用程序可通过多种方式开发,包括C/C++或MicroPython。在此实例中,我们将使用MicroPython,但也会配置系统以支持后续可能使用的C/C++开发方式。

架构

Forgix 板的架构设计简洁明了,旨在为开发者提供便捷的访问方式,直接连接 FPGA 和 RP 2354。

用户通过 USB-C 接口连接至 RP2354,该 RP2354 再通过 SPI 及多个专用 GPIO 与 T8 FPGA 相连。SPI 端口用于配置 FPGA,但配置完成后仍可保留,以便控制部署在 FPGA 中的应用程序。

除了 FPGA 和 USB-C 外,RP2354 还连接到两个 UART 的 IO 引脚。此外,板子上还配备了一个 IIC QWIIC 连接器接口,最初 100 个量产单位已安装此接口,但后续主要生产批次将取消该接口。这使得用户可根据需要扩展使用多种 IIC 传感器和驱动器。

FPGA 通过一个按钮开关、三色 LED、RP2354 以及电路边缘的 11 个 IO 引脚进行供电。

FPGA 由 32 MHz 晶振提供时钟信号,若需要,也可由 RP2354 提供复位信号。

工具安装

为了有效使用此板,我们需要以下工具:

- 通过 VS Code 安装 Pico SDK

- Efinity FPGA 开发软件

- RP Pico2 MicroPython UF2 图像

- Thonny 用于应用程序开发。

下载并安装三个应用程序,将 UF2 文件存放在一个易于访问的目录中,因为我们很快就会用到它。

要下载并安装 Efinity 开发套件,您需要使用电子邮件地址注册。

安装工具后,下一步在 VSCode 中是安装 VSCode 扩展。该扩展将安装一组名为 picotools 的工具,我们可以通过这些工具更高效地开发应用程序,大幅提高开发效率。

安装扩展后,左侧菜单中会出现一个用于 RP2354 开发的新图标。这将帮助您使用 C/C++/Zephyr/MicroPython 和 Rust 编程开发应用。

请确保您的路径包含 picotools 的位置,通常位于用户目录或账户下。

将 RP2354 设置为启动模式

下一步是使用 USB-C 数据线将您的 Forgix 板连接到开发机器。

为了能够操作 Forgix 板,我们需要将其应用程序软件加载到 RP2354 上。

所加载的软件将以 UF2 格式存在,这种格式可以是项目编译生成的结果,也可以是预先存在的镜像文件。

默认情况下,Forgix 预装了 UF2 文件,该文件可在仓库中获取,并可与主机 Python 应用程序配合使用,用于编程 FPGA。主机应用程序也位于同一仓库中。这使得 RP2354 可作为编程器使用,但功能有限。

如果我们希望像本应用中那样在 MicroPython 中加载。

我们想要做的就是用 MicroPython UF2 替换当前加载的 UF2。为此,我们需要让 Forgix 板进入启动模式。

要实现这一点,必须确保 Forgix 通过 USB-C 进入启动模式。

进入启动模式后,Forgix 将作为驱动器在主机系统上显示,这样我们就可以拖放 UF2 文件。稍后,RP2354 将重新启动并开始运行 UF2。

进入启动模式有两种方法:

第一种是在电源开启时,通过 IO 环上的程序引脚保持低电平,这可以通过跳线实现。但有一个更优雅的方法。

另一种方式是使用刚刚安装的 picotools 和命令行,执行以下命令:

如果操作成功,结果取决于你已加载的软件(因此上述方法也可能失败),此时你会在系统中看到该驱动器已挂载。

这是进入启动模式的更好方法,除非你意外损坏了板子上运行的软件,否则应采用此方法。若出现异常,请使用上述方法。

现在,我们可以开始为 FPGA 开发应用程序了。

RP2354 软件

一旦RP2354进入启动加载状态并加载了MicroPython UF2文件后,下一步就是上传生成的Python应用程序文件。这些文件被分为两部分:一部分用于管理FPGA的加载以及与最终设计进行通信,这些文件可在多个项目中重复使用。

与这些文件一同提供的还有一个主应用程序,它将与FPGA通信,并执行我们已实现的应用功能。

共有两个文件:

- Forgix_basics.py

- Forgix_fpga.py

其中最底层的文件是forgix_fpga.py。这是可复用的FPGA接口层,负责处理配置引脚、复位序列、CDONE检查,以及FPGA配置完成后使用的简单串行命令接口。其设计思路是,该文件不绑定于特定示例,而是作为通用的FPGA加载器和通信层,供其他设计在上面构建。

在其之上是forgix_basics.py。该文件为演示设计提供了应用层API。它通过简单的Python调用,封装了基础设计中的寄存器操作,避免用户直接进行寄存器读写操作。这些调用使 MicroPython 应用程序能够设置 RGB LED 的亮度和颜色,读取按钮状态,并更新输出。

在测试过程中我们发现的一个关键问题是:使用 MicroPython 时,FPGA 图像本身应保留在主机 PC 上。这是因为存储空间有限,将较大的 .bin 或 .hex 文件复制到 RP2354 的 MicroPython 文件系统中可能会因文件体积过大而引发问题。

为避免这种情况,FPGA 图像被保留在主机机器的项目输出目录中,然后通过 mpremote 的挂载流程对板子进行编程。

还有一个名为 program_lab_from_mount.py 的小型加载脚本,它运行在 RP2354 上,但会从已挂载的主机目录中读取 FPGA 图像。这样既方便了 MicroPython 的加载,又避免了填满或损坏 MicroPython 文件系统的风险。

执行该命令后,将显示以下内容,我们将生成项目后续使用的 FPGA 文件。

这引出了一个有趣的问题:如何在 RP2354 上远程运行 Python。

为此,我们使用 mpremote 工具,它允许我们通过串行连接远程交互、管理以及自动化操作 MicroPython 设备。

我们已经在Forgix板上实现了这一点。

因此,当我们对主机执行命令时,例如:

实际上我们运行的是类似以下的命令:

然而,我们在主机上调用的Python脚本会生成正确的命令,并通过mpremote发送。

一旦FPGA加载完成,我们就可以采用类似的方法来测试加载到FPGA中的应用程序,同时也可以根据需要利用RP2354的功能来支持该应用。

FPGA开发

下一步是创建FPGA设计,需要完成以下操作:

- 采集按钮信号

- 改变RGB LED的颜色

- 生成伺服电机的PWM信号

为此,我们可以使用VHDL编写模块。但同时还需要一个文件,用于通过SPI网络发送指令,以便读取和写入控制上述功能所使用的寄存器

在Efinity中,首先需要打开工具。

从菜单选项中选择“新建项目”。

在“设计”标签页中,可以从项目仓库添加文件,并选择顶层的VHDL架构名称。我们还可以添加约束条件,包括两种类型:SDF(用于定义时序)和ISF(用于定义IO引脚位置)。

完成上述步骤后,可以使用顶部的按钮对设计进行综合、布局和布线,并生成比特流。

Forgix板的ISF格式如下所示,引脚映射与原理图中的引脚分配一致。

生成比特流后,即可开始使用Forgix板进行测试。

测试

通过USB-C将Forgix连接到主机后,我们再次可以使用mpremote来控制要部署在板上的应用程序。目前板上仅包含forgix_fpga.py和forgix_basics.py两个Python文件,而重置操作可通过mpremote加载。

使用mpremote的这种模式具有显著优势:Python文件会被下载并直接在Forgix板上执行,但应用程序运行结束后,Forgix文件系统中不会留下任何残留文件。

在Forgix上运行示例程序时,显示结果如下:

按钮未按下前

按钮按下后

按压按钮期间,输出舵机波形会随之增加或减少

板子消耗的功耗如预期一样极低

结论

在本项目中,我们配置了RP2354开发环境,编程了Efinix T8 FPGA,设计了一个简单的VHDL外设,并展示了RP2354与FPGA之间通过可复用MicroPython接口进行通信。

这些技术为在Forgix平台上开发更复杂的FPGA应用奠定了坚实的基础。

本文编译自hackster.io

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭