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
    +关注

    关注

    1625

    文章

    21620

    浏览量

    601172
  • API
    API
    +关注

    关注

    2

    文章

    1471

    浏览量

    61742
  • PYNQ
    +关注

    关注

    3

    文章

    61

    浏览量

    2882

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

    基本相同。     我们将利用PYNQ-Z2开发板对PYNQ项目进行介绍。PYNQ-Z2板是PYNQ开源框架的硬件平台,有丰富的组件:
    的头像 发表于 01-02 09:02 6385次阅读
    基于<b class='flag-5'>PYNQ</b>-Z2开发板的<b class='flag-5'>PYNQ</b>开源<b class='flag-5'>项目</b>

    总线重配置的多处理器架构

    本文提出了一种全新的总线重配置的多处理器架构。该架构结合了多核与重配置处理器的优势,具有并行性高、计算能力强、结构复杂度低并且应用领域广泛灵活的特点。对
    发表于 06-13 14:11 11次下载

    重配置系统中的联合负载控制及其终端选择算法

    该文基于现有端到端重配置系统架构,提出了一种改进的动态门限联合负载控制方法,以适应不同负载条件下对负载均衡的要求,达到资源的有效利用。同时,结合终端的重配
    发表于 11-19 16:41 13次下载

    重配置PLL使用手册

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

    软件无线电平台重配置接口的实现

    实现了一种用于上位机和FPGA处理板之间通信的重配置接口,详细介绍了该接口的包格式设计和FPGA逻辑设计。仿真结果表明,该重配置接口能根据信令,实现准实时在线参数
    发表于 11-22 15:15 12次下载

    FPGA的全局动态重配置技术

    FPGA的全局动态重配置技术主要是指对运行中的FPGA器件的全部逻辑资源实现在系统的功能变换,从而实现硬件的时分复用。提出了一种基于System ACE的全局动态重配置设计方法,
    发表于 01-04 17:06 54次下载

    基于SRAM的重配置电路

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

    打造完全重配置运动控制系统

    打造完全重配置运动控制系统 ,NI LabVIEW。
    发表于 03-21 16:19 0次下载

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

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

    赛灵思重配置加速堆栈方案,旨在快速开发和部署加速平台

    赛灵思公司(Xilinx)宣布,在2016全球超算大会(SC 16)上宣布推出一套全新的技术——赛灵思重配置加速堆栈方案,旨在帮助全球最大的云端服务供应商们快速开发和部署加速平台。专门针对云级
    发表于 07-31 09:08 869次阅读

    基于SRAM的重配置电路PLD

    关键词:PLD , SRAM , 重配置电路 由于SRAM的重配置PLD(可编程逻辑器件)的出现,为系统设计者动态改变运行电路中PLD的逻辑功能创造了条件。PLD使用SRAM单元来
    发表于 02-23 14:30 935次阅读
    基于SRAM的<b class='flag-5'>可</b><b class='flag-5'>重配置</b>电路PLD

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

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