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

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

3天内不再提示

PYNQ经典项目分享:可重配置IO

FPGA之家 来源:FPGA之家 2023-04-03 10:46 次阅读

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

5fc651bc-d1c4-11ed-bfe3-dac502259ad0.png

上图为工程项目示意图。通过软硬件划分,在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的驱动程序和必要的功能代码,不是本文重点请读者自己研读。

6004e648-d1c4-11ed-bfe3-dac502259ad0.png

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

602747b0-d1c4-11ed-bfe3-dac502259ad0.png

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

604069a2-d1c4-11ed-bfe3-dac502259ad0.png

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

605b12b6-d1c4-11ed-bfe3-dac502259ad0.png

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

6070b54e-d1c4-11ed-bfe3-dac502259ad0.png

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

2 、使用linux sysfs API的方法:

打开~/prio_linux/uart_linux.pynb

6081f020-d1c4-11ed-bfe3-dac502259ad0.png

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

https://www.raspberrypi.org/documentation/configuration/device-tree.md

6099b854-d1c4-11ed-bfe3-dac502259ad0.png

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

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

审核编辑 :李倩

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

    关注

    1603

    文章

    21326

    浏览量

    593231
  • API
    API
    +关注

    关注

    2

    文章

    1383

    浏览量

    60993
  • PYNQ
    +关注

    关注

    3

    文章

    60

    浏览量

    2818

原文标题:PYNQ经典项目分享| 可重配置IO

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    赛灵思发布ISE12.2强化部分可重配置FPGA技术

    ISE12.2设计套件强化了其部分可重配置技术设计流程,并通过智能时钟门控技术降低24% 的 BRAM 功耗。赛灵思部分可重配置技术,是目前唯一经行业验证的可重配置FPGA
    发表于 07-31 12:39 451次阅读

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

    项目中在PYNQ框架下有两种驱动这些IP的方式:一是直接使用PYNQ提供的API操作overlay里面的IP,二是将这些IP通过DTS(Device Tress Source)注册到linux sysfs中,然后调用linux
    的头像 发表于 09-28 10:21 3437次阅读
    如何利用FPGA部分可<b class='flag-5'>重配置</b>特性实现<b class='flag-5'>PYNQ</b>-PRIO<b class='flag-5'>经典</b>案例

    PYNQ项目——Pynq开发板启动实验

    作者:Mculover666 今天刚刚到手一块PYNQ-Z2,确认过眼神,是我想要的板子,话不多说,开干。     PYNQ项目是一个支持Xilinx Zynq器件的开源软件框架,目的在于借助
    的头像 发表于 12-23 10:58 3371次阅读

    基于PYNQ-Z2开发板的PYNQ开源项目

    PYNQ项目是一个新的开源框架,使嵌入式编程人员在无需设计可编程逻辑电路的情况下充分发挥Xilinx Zynq All Programmable SoC(APSoC)的功能。 与常规方式
    的头像 发表于 01-02 09:02 5758次阅读
    基于<b class='flag-5'>PYNQ</b>-Z2开发板的<b class='flag-5'>PYNQ</b>开源<b class='flag-5'>项目</b>

    Altera重配置PLL使用手册

    Altera重配置PLL使用手册在实际应用中,FPGA的工作时钟频率可能在几个时间段内变动,对于与之相关的锁相环(PLL),若PLL的输入时钟在初始设定的时钟频率的基础上变化不太大时,PLL一般
    发表于 12-22 11:27

    Cyclone IV 动态重配置

    Cyclone® IV GX 收发器支持对收发器的不同部分进行动态重配置,而无需对器件的任何部分断电。本章节提供并讲解了用于动态重配置各种模式的实例。您可以使用 ALTGX_RECONFIG
    发表于 11-14 10:53

    动态部分重配置

    ,以便为Microblaze实现不同的periferal。我已经读过Spartan3 FPGA支持部分重配置,但我不知道它是否支持动态重配置,而Microblaze仍在使用中。有帮助吗?提前致谢缺口
    发表于 05-14 06:28

    基于FPGA的重配置系统在新兴汽车标准中的应用,不看肯定后悔

    本文介绍的基于FPGA的重配置系统可以在设计后期甚至量产阶段通过重新编程以适应标准和协议的改变。
    发表于 05-13 06:35

    PYNQ开源方案

    板卡购买:Digilent(迪芝伦)PYNQ目录微信公众号:PYNQ开源社区百度/CSDN博客BilibiliGitHub/ Gitee(开源项目)Xilinx官方代码库PYNQ官网中
    发表于 08-04 08:29

    5G NR RRC协议解析_RRC重配置

      AS安全模式建立完毕后,UE和gNB之间会触发RRC重配置流程。   重配置信令流程如图所示:   那么触发重配置流程的目的以及重配置消息中有哪些关键字段呢?   1 RRC
    发表于 05-10 15:44

    重配置PLL使用手册

    本文档主要是以Altera公司的Stratix II系列的FPGA器件为例,介绍了其内嵌的增强型可重配置PLL在不同的输入时钟频率之间的动态适应,其目的是通过提供PLL的重配置功能,使得不需要对
    发表于 11-02 15:17 27次下载

    基于SRAM的可重配置电路

    基于SRAM的可重配置PLD(可编程逻辑器件)的出现,为系统设计者动态改变运行电路中PLD的逻辑功能创造了条件。PLD使用SRAM单元来保存字的配置数据决
    发表于 06-20 11:05 858次阅读
    基于SRAM的可<b class='flag-5'>重配置</b>电路

    一种基于忆阻器的可重配置逻辑电路_张波

    一种基于忆阻器的可重配置逻辑电路_张波
    发表于 01-08 10:18 4次下载

    Vivado Design Suite的部分重配置的新功能介绍

    本视频介绍了UltraScale +芯片的部分重配置功能,展示了Vivado Design Suite中部分重配置的新功能,并介绍了对部分重配置的更广泛的访问权限
    的头像 发表于 11-20 06:25 3883次阅读

    易灵思内部重配置实现远程更新

    除通过外部多功能IO来选择之外,易灵思通过内部重配置实现远程更新操作也非常简单。
    的头像 发表于 05-30 09:24 797次阅读
    易灵思内部<b class='flag-5'>重配置</b>实现远程更新