0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用FPGA部分可重配置特性实现PYNQ-PRIO经典案例

454398 来源:PYNQ开源社区微信公众号 作者:品客 2020-09-28 10:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

PYNQ-PRIO是一个介绍如何利用FPGA部分可重配置特性和PYNQ框架提供的方便的API,对FPGA分时复用,提高FPGA灵活性的项目。可重配置是指在一个FPGA工程中,划分了静态逻辑部分和动态逻辑部分,静态逻辑部分是指在运行过程中逻辑不变的部分,动态逻辑部分是指在运行过程中可以根据需要下载特定比特流文件实现不同逻辑的部分,在工作时,修改某一动态逻辑部分不会对静态逻辑部分和其他动态逻辑部分造成影响,实现了FPGA的功能上的分时复用。

上图为工程项目示意图。通过软硬件划分,在PS端中负责Linux通信,PL端例化了6个PR(Partitial Reconfiguration)块。每个块中有GPIO、uart和IIC等几种不同的RM(Reconfiguration Module),它们通过各自的partitial bitstream下载。动态逻辑部分和静态逻辑部分使用分离器保证它们互不影响,并在动态逻辑部分下载完成后对下载好的部分进行复位。

此项目中在PYNQ框架下有两种驱动这些IP的方式:一是直接使用PYNQ提供的API操作overlay里面的IP,二是将这些IP通过DTS(Device Tress Source)注册到linux sysfs中,然后调用linux提供的驱动。

快速开始

运行下面这条命令即可快速安装:

sudo -H pip3 install git+https://github.com/Siudya/PYNQ-PRIO.git

项目演示

1 、 使用pynq API的方法:

打开~/prio/uart.ipynb,前面一段代码是UART的驱动程序和必要的功能代码,不是本文重点请读者自己研读。

接下来就是下载bit文件。首先下载静态逻辑bit文件,静态bit文件中的PR部分是默认的RM。然后下载PR的bit文件。注意,下载一个PR的bit文件后要立刻例化一个驱动实例,这是因为每个PR的bit文件所对应的hwh文件中其他PR部分都使用默认RM,但是下载一个PR的bit文件并不会影响其他PR和静态逻辑。

然后可以测试一下两个UART的状态,在这里我们并没有开启中断。

下一步我们测试两个串口的收发。用杜邦线将uart1的TX(Arduino的Pin 9)和uart3的RX(Arduino的Pin 34),uart1的RX(Arduino的Pin 8)和uart3的TX(Arduino的Pin 35)连接起来,运行这段代码,可以看到信息被正确地收发了。

接下来我们试试含中断的收发。首先仍然是例化实例,不过在这里我们要从overlay.interrupts_pins中读取每个uart的中断引脚,然后初始化uart实例。

利用asyncio库和中断,我们可以实现异步收发。

2 、使用linux sysfs API的方法:

打开~/prio_linux/uart_linux.pynb

首先和上面使用pynq的API的方法一样,首先下载静态逻辑的bit文件,再下载PR的bit文件。但是不同的是同时注册了对应的dtbo到linux系统中。dtbo由dtso编译而来,dtso是描述设备树的文件,关于它的编写参阅以下链接:
https://www.raspberrypi.org/documentation/configuration/device-tree.md

注册完成后可以直接在/dev下看到这两个uart模块。然后可以使用linux自带的serial库调用它们。

这个项目中我们利用了FPGA的部分可重构的特性,实现了运行中的部分逻辑的动态转换。另外我们可以看到利用PYNQ提供的API,可以轻松注册设备到Linux系统,方便了其他程序对我们自定义IP的使用。
编辑:hfy

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630239
  • Linux
    +关注

    关注

    88

    文章

    11628

    浏览量

    217965
  • uart
    +关注

    关注

    22

    文章

    1304

    浏览量

    106107
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ALINX教程分享_Zynq UltraScale+ MPSoC PYNQ3.1.2移植

    本教程在 Ubuntu22.04.1 虚拟机中安装了 Xilinx 2024.1 的开发环境,基于该环境从源码编译 PYNQ 3.1.2 工程,生成能够在 ALINX AXU15EGB 开发板上运行的 PYNQ 系统镜像。
    的头像 发表于 11-30 16:06 2573次阅读
    ALINX教程分享_Zynq UltraScale+ MPSoC <b class='flag-5'>PYNQ</b>3.1.2移植

    AMD利用重构FPGA设备Moku实现自定义激光探测解决方案

    摘要本文介绍了AdvancedMicroDevices,AMD公司如何基于重构FPGA设备自定义激光探测解决方案,替代传统的仪器配置,通过灵活且定制的
    的头像 发表于 11-20 17:28 805次阅读
    AMD<b class='flag-5'>利用</b><b class='flag-5'>可</b>重构<b class='flag-5'>FPGA</b>设备Moku<b class='flag-5'>实现</b>自定义激光探测解决方案

    嵌入式和FPGA的区别

    数字电路功能。FPGA最大的特点是硬件重构性,能够在设计完成后改变其逻辑功能。 这种硬件可编程的特性带来了两大优势:首先,FPGA可以在硬件层面
    发表于 11-19 06:55

    以太网通讯在FPGA上的实现

    一、介绍在本项目由于我们需要使用PC实时的向FPGA发送将要识别的图片,所以我们最终选择使用以太网来从PC向FPGA发送图片并暂存在DDR中,下面是对以太网协议和硬件实现的一些介绍。 二、前言
    发表于 10-30 07:45

    如何利用Verilog HDL在FPGA实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA实现SRAM的读写测试。SRAM是一种非易失性存储器,具有高速读取和写入的特点。在FPGA
    的头像 发表于 10-22 17:21 3954次阅读
    如何<b class='flag-5'>利用</b>Verilog HDL在<b class='flag-5'>FPGA</b>上<b class='flag-5'>实现</b>SRAM的读写测试

    利用EasyGo DeskSim快速实现信号采集

    EasyGo DeskSim是一款配置型的实时仿真软件,它允许用户将 Simulink 算法程序快速部署到 EasyGo 实时仿真机上。实时仿真机支持选配不同的 FPGA 芯片和 IO 模块,能够处理高速信号,并通过 IO 模块输出真实的仿真结果,
    的头像 发表于 08-18 11:32 4666次阅读
    <b class='flag-5'>利用</b>EasyGo DeskSim快速<b class='flag-5'>实现</b>信号采集

    FPGA利用DMA IP核实现ADC数据采集

    本文介绍如何利用FPGA和DMA技术处理来自AD9280和AD9708 ADC的数据。首先,探讨了这两种ADC的特点及其与FPGA的接口兼容性。接着,详细说明了使用Xilinx VIVADO环境下
    的头像 发表于 07-29 14:12 4643次阅读

    基于FPGA的压缩算法加速实现

    法的速度。我们将首先使用C语言进行代码实现,然后在Vivado HLS中综合实现,并最终在FPGA板(pynq-z2)上进行硬件实现,同时于
    的头像 发表于 07-10 11:09 2077次阅读
    基于<b class='flag-5'>FPGA</b>的压缩算法加速<b class='flag-5'>实现</b>

    利用EasyGo DeskSim快速实现信号输出

    EasyGo DeskSim是一款配置型的实时仿真软件,它允许用户将 Simulink 算法程序快速部署到 EasyGo 实时仿真机上。实时仿真机支持选配不同的 FPGA 芯片和 IO 模块,能够处理高速信号,并通过 IO 模块输出真实的仿真结果,
    的头像 发表于 06-30 14:11 820次阅读
    <b class='flag-5'>利用</b>EasyGo DeskSim快速<b class='flag-5'>实现</b>信号输出

    FPGA芯片的概念和结构

    FPGA(Field Programmable Gate Array,现场可编程门阵列),是一种可在出厂后由用户根据实际需求进行编程配置的集成电路。与专用集成电路(如ASIC)不同,FPGA在硬件层面具备高度的
    的头像 发表于 05-12 09:30 2400次阅读

    CADENAS 数字产品配置器轻松实现Ascendor电梯规划

    。2022 年,Ascendor 启动了一项数字化推进计划,其中一个重要部分就是实施由 CADENAS 提供技术支持的数字化产品配置器。 利用高质量的规划数据进行灵活的电梯规划 数字产品配置
    发表于 04-28 14:22

    自动称重配料设备PLC数据采集远程监控系统方案

    物料浪费,带来额外的生产事故与经济损失。 因此,自动称重配料设备越来越得到广泛应用,在建材、饲料、化工、冶金、食品等多种行业都能看到它的身影。为加强设备管理水平,实现设备自动告警与远程管理,物通博联提供基于
    的头像 发表于 03-21 14:31 721次阅读

    MRAM存储替代闪存,FPGA升级新技术

    优化的架构设计和成熟的制程技术,具备内置的硬擦除器、错误检测和校正机制,为用户提供了可靠的开发环境。用户可利用最新的Radiant工具,直接实现MRAM的编程接口,支持多种存储容量和数据速率。利用这些
    发表于 03-08 00:10 1618次阅读

    基于FPGA的GigE Vision相机图像采集方案设计

    1 概述 GigE Vision是一个比较复杂的协议,要在FPGA中完全实现具有较大的难度。如果FPGA作为接收端希望实现GigE Vision相机的
    的头像 发表于 01-07 09:34 1847次阅读
    基于<b class='flag-5'>FPGA</b>的GigE Vision相机图像采集方案设计

    利用FPGA实现USB 2.0通信接口

    USB 2.0接口的实现方式 利用FPGA实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部
    的头像 发表于 12-30 13:59 3777次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>USB 2.0通信接口