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

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的使用。


Linux RTC开发指南
无人机如何帮我们整治卫生问题
工业制造行业中工业自动控制装置市场发展迎来爆发期
三星电子在印度新建的诺伊达全球最大智能手机制造工厂
linux三剑客之awk高效命令集锦!
PYNQ经典项目分享:可重配置IO
当AGV遇上MES,互联的智能仓储系统设计与实施
曝PS5主机被破解,算力远超高端显卡
基于新型Virtex FPGA实现小型软件无线电平台SFF SDR设计
自动焊接专机保养内容有哪些
瑞萨电子推出业界领先的低功耗 IGBT,可提高空调运行效率
DIY冷藏室温度监测,数据还可以远程发送到手机
旧电动车电瓶修复技术——不同电池并联充放电的原理变化
能耗监测管理系统,助您实现节能减排!
射频识别技术漫谈(13)——Mifare S50与Mifare S70
设备参数列表:在表格中显示同一个设备型号下所有设备参数的实时状态和实时数据
S7-1200 CPU可使用存储卡、使用TIA 软件、通过Web访问方式更新CPU固件
使用电烙铁焊接电子元器件的教程说明
用于24位ADC的抗混叠滤波器
高价值货物在运输过程中的冲击、温湿度气压和光照监测(带 GPS跟踪定位)