集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 11467|回复: 14

夏老师推荐:惊人!Python+FPGA 实现FPGA开发大提速?!!

[复制链接]
lcytms 发表于 2017-6-6 23:20:20 | 显示全部楼层 |阅读模式
本帖最后由 lcytms 于 2017-6-7 08:27 编辑

夏老师推荐:惊人!Python+FPGA 实现FPGA开发大提速?!!


夏宇闻老师昨天在微信上推荐了一个帖子,说的是有人用Digilent的PYNQ-Z1板卡实现了超强的加速性能。
当下Python的风头无人能及,而当Python遇上Zynq之后,所创造的生产力竟然也是骇人。
虽然不甚了解,但不妨热切关注一下,说不定FPGA主流开发下一步就会踏上这条道路了呢?

参考资料链接:http://www.sohu.com/a/146288925_292853
                        http://www.openhw.org/module/forum/thread-656190-1-1.html

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:25:01 | 显示全部楼层
本帖最后由 lcytms 于 2017-6-6 23:32 编辑

惊人!Python+FPGA 实现FPGA开发大提速?!!
2017-06-05 17:40

背景

早年,关于FPGA的开发都是基于硬件描述语言,从开始的VHDL到现在更为流行的Verilog,软件应用也从由最开始的汇编语言发展到现在的c/c++实现,这些都是目前为大多数FPGA开发者所熟悉的FPGA发展路程。
上个月,IEEE收录了一篇关于使用Python开发FPGA应用的论文,Python+FPGA会擦出怎样的火花呢?

Python + Zynq=PYNQ

上个月中旬,在美国纳帕举行的第25届关于可编程计算机器领域IEEE国际讨论会上,一篇名为“评估通过Python快速开发异构处理器FPGA应用性能”的短篇论文获得了最佳短篇论文奖。
这篇论文主要讨论了Python开发FPGA应用的优势和效率,论文中针对Digilent的PYNQ-Z1板卡(内部集成一个Xilinx Zynq SoC),通过支持Python编程和Jupyter Notebooks框架的PYNQ开发环境,应用Python对此板卡进行开发编程,并最终评估开发结果的优势和效率。
值得一提的是,发表这篇论文的作者都是业界大佬,包括高级计算机科学家AndrewG.Schmidt、计算机科学家Gabriel Weise以及来自美国南加州大学工程技术科学协会的研究室主任Matthew French。
在论文中,Matthew French教授主要就利用PYNQ开发环境,应用Python语言对Xilinx Zynq器件进行编程应用开发时对FPGA器件的影响、性能结果以及瓶颈影响进行了评估。
此外,各位教授就基于Python的开发结果与已经存在的基于C语言的开发及手动开发结果进行了比较分析。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:28:31 | 显示全部楼层
在论文中,各位教授还对PYNQ开发环境的优缺点进行了阐述:

首先来说,PYNQ应用开发框架是一个开源的开发环境,提供了标准的可以约束芯片I/O引脚的“Overlay”比特流,同时,开发人员可以在此开发环境中,利用Python对FPGA进行快速编程开发。
此外,PYNQ开发环境内部集成标准的编程范式,支持HDMI和视频流的输出输出,同时具有两组12pin的PMOD连接器和一个兼容Arduino的连接器(可以连接或配置为Arduino系列板卡)。
其中,默认的overlay中实例化了多个可以驱动多I/O接口的微Blaze处理器核,也可以配置一些支持图像滤波功能和试验SIMT(单指令,多线程)编程软逻辑GPU的overlay。
同时,PYNQ也提供了支持比特流编程的API和可扩展的通用Python库和包,并且可以通过存储映射I/O(MMIO)直接寻址可编程逻辑单元,另外还支持DMA交易(不需要经过器件驱动和核模块之间的不断握手确认)。

其次,就目前来说,PYNQ还不支持任何高级的综合,也无法将Python应用直接移植到FPGA中。
这就意味着,开发者依然原型必须使用FPGA来创建一个设计,即当PYNQ提供一个支持板卡IO接口的Overlay框架以时,任何用户逻辑依然必须由开发者亲自创建并综合。
不过,开发者仍然可以使用高级综合工具或上面提到的Python-to-HDL工程来完成这个任务,但是最终,开发者依然需要基于此设计并创建一个整合了Python代码比特流文件。
也正是由于PYNQ存在这方面的缺陷,论文的作者并没有简单依赖现存的PYNQ API接口和overlay,他们开发出一个基于Redsharc项目的特定应用程序内核进行研究。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:29:43 | 显示全部楼层
本帖最后由 lcytms 于 2017-6-6 23:31 编辑

结论

结果如何呢?
论文最后,作者对给出了Python开发Zynq应用的各项评估结果。
结果中给出了通过c/c++实现这项研究的一般图像处理管道性能,以及定制的硬件加速器和Python实现的性能结果(下图所示),帮助我们更好地理解了Python + FPGA开发环境的性能和能。
表中可以看出,结果十分明显,通过PYNQ实现较c实现速度提高了30倍之多,更甚者,从结果中可以看出,当Python实现时有更加有效的可用库时,比如OpenCV,其性能可以增长更多。

Python软件实现和FPGA性能潜力的结合是一个非常有意义的工作,将会开创出一个类似于树莓派和Arduino的广大的开发者社区。
Python+FPGA是一个广阔的未经勘察过的领域——一个全新的更加高效的开发空间——通过PYNQ开发环境将会吸引更多的系统开发者加入的领域。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:41:57 | 显示全部楼层
本帖最后由 lcytms 于 2017-6-6 23:47 编辑

PYNQ项目简介

PYNQ是Xilinx的一个的开源项目。
它旨在使基于Xilinx ZYNQ的嵌入式系统设计更加容易。
         
通过使用Python语言及其库文件,设计者能够充分发挥ZYNQ PL部分和PS部分的各自优势去设计更加强大的、有意义的嵌入式系统。
        
PYNQ使得用户能够实现多种高性能的嵌入式应用,包括:
        并行硬件执行
        高帧率视频处理
        硬件加速算法
        实时信号处理
        高带宽IO
        低延时控制

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:51:26 | 显示全部楼层
PYNQ的用户

      
PYNQ指向大面积的设计者和开发者,包括:
        软件设计者 — 想利用ZYNQ及其硬件可编程性的优势,从而避免使用ASIC模式设计工具去设计硬件。
        系统架构师 — 想使用更加简单方便的ZYNQ软件接口和框架。
        硬件工程师 — 想让硬件项目推广给更多的人使用。
 楼主| lcytms 发表于 2017-6-6 23:53:53 | 显示全部楼层
关键的技术

     
Jupyter Notebook是一种基于浏览器的交互式计算环境。
Jupyter Notebook能够创建多种文件(动态代码、交互式控件、图表、解释性文本、方程式、图像、视觉等)。
         
在Jupyter Notebook环境下使用python可以简便地为PYNQ-Z1编程。
         
通过python,开发者能调用可编程逻辑部分的硬件库。
硬件库可以加速PYNQ-Z1上运行的软件代码,还可以自定义硬件平台和接口。
         
PYNQ镜像是一个可以引导的Linux镜像,其中包含pynq python包、其他开源包。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:55:52 | 显示全部楼层
使用PYNQ需要什么软件?

     
Jupyter Notebook 是基于浏览器的接口,所以需要一个兼容的网页浏览器,从而使用python去编程。
         
为了更高的性能,用户也可以使用C/C++去编程。
此时,需要支持PYNQ-Z1的、免费的Xilinx SDK软件。
用户也可以使用其他第三方的软件开发工具。
         
为了增加新的硬件库,所以需要Xilinx或第三方的硬件设计工具。
Xilinx Vivado 免费版完全支持PYNQ-Z1。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| lcytms 发表于 2017-6-6 23:56:44 | 显示全部楼层
PYNQ-Z1板卡资源

处理器:双核ARM Cortex-A9
FPGA:1.3M 可重构逻辑
内存:512MB DDR3/FLASH
存储:Micro SD卡插槽
视频:HDMI输入/输出
音频:Mic输入,Line输出
网络:10/100/1000以太网
扩展口:连接到ARM PS端的USB Host
IO接口:1×Arduino 口,2×Pmod (49GPIO)
GPIO: 16GPIO
Other I/O:6个用户LEDs,4个按键开关,2个拨码开关
尺寸:87mm × 122mm
 楼主| lcytms 发表于 2017-6-7 00:01:08 | 显示全部楼层
PYNQ资源下载

  
从PYNQ GitHub上可以下载所有PYNQ项目的源代码。
如果用户想加入或联系PYNQ项目团队,可以在PYNQ support forum上发布信息。
      
PYNQ资料百度网盘下载地址:http://pan.baidu.com/s/1dF60nPv  密码: 32vb

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-24 04:17 , Processed in 0.063697 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表