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

    关注

    1646

    文章

    22102

    浏览量

    620903
  • Linux
    +关注

    关注

    88

    文章

    11537

    浏览量

    214926
  • uart
    +关注

    关注

    22

    文章

    1278

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

    EasyGo DeskSim是一款配置型的实时仿真软件,它允许用户将 Simulink 算法程序快速部署到 EasyGo 实时仿真机上。实时仿真机支持选配不同的 FPGA 芯片和 IO 模块,能够处理高速信号,并通过 IO 模块输出真实的仿真结果,
    的头像 发表于 08-18 11:32 ?633次阅读
    <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 ?2394次阅读

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

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

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

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

    FPGA芯片的概念和结构

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

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

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

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

    1 概述 GigE Vision是一个比较复杂的协议,要在FPGA中完全实现具有较大的难度。如果FPGA作为接收端希望实现GigE Vision相机的
    的头像 发表于 01-07 09:34 ?1196次阅读
    基于<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 ?3063次阅读
    <b class='flag-5'>利用</b><b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>USB 2.0通信接口

    FPGA 在人工智能中的应用

    FPGA是一种可编程的半导体设备,它允许工程师在生产后重新配置硬件逻辑。与传统的ASIC(应用特定集成电路)相比,FPGA具有更高的灵活性,可以根据不同的应用需求进行编程和重配置。这
    的头像 发表于 12-02 09:53 ?2447次阅读

    基于PYNQ和机器学习探索MPSOC笔记

    引言:《Exploring Zynq MPSoC With PYNQ and Machine Learning Applications》是当年Zynq Book(ZYNQ-7000)的升级版本,在
    的头像 发表于 11-16 11:32 ?766次阅读
    基于<b class='flag-5'>PYNQ</b>和机器学习探索MPSOC笔记

    固化FPGA配置芯片的方式

    FPGA可以反复的重新配置,这就意味着设计者可以不断的反复的下载设计的逻辑做验证。如果出现错误或者需要升级,只需要修改设计,重新下载设计逻辑电路即可。FPGA虽然有重新配置的优势,带来
    的头像 发表于 10-24 18:13 ?1380次阅读
    固化<b class='flag-5'>FPGA</b><b class='flag-5'>配置</b>芯片的方式

    一种简单高效配置FPGA的方法

    本文描述了一种简单高效配置FPGA的方法,该方法利用微处理器从串行外围接口(SPI)闪存配置FPGA设备。这种方法减少了硬件组件、板空间和成
    的头像 发表于 10-24 14:57 ?1773次阅读
    一种简单高效<b class='flag-5'>配置</b><b class='flag-5'>FPGA</b>的方法

    FPGA在图像处理领域的优势有哪些?

    语言编程的,因此可以根据图像处理的实际需求,动态地调整硬件资源的使用。这使得FPGA在处理图像时能够实现更高的能效比,从而降低系统的功耗。这对于需要长时间运行的图像处理系统尤为重要。 五、
    发表于 10-09 14:36

    如何用FPGA实现一个通信系统的发射端接收机?

    ,共同进步。 欢迎加入FPGA技术微信交流群14群! 交流问题(一) Q:用FPGA实现一个通信系统(5GHz频段,通信距离越10km)的发射端&接收机,如何规划学习路线? 完全0
    发表于 09-10 19:15

    如何在FPGA实现按键消抖

    FPGA(现场可编程门阵列)中实现按键消抖是一个重要的设计环节,特别是在处理用户输入时,由于物理按键的机械特性和电气特性,按键在按下和释放的瞬间会产生抖动现象,这种抖动可能导致系统错
    的头像 发表于 08-19 18:15 ?3769次阅读