logo资料库

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

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
FPGA 培训专家 www.zxopen.com 夏老师推荐:惊人!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 惊人!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 对此板卡进行开发编程,并最终评估开发结果的优势和效率。 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 值 得 一 提 的 是 , 发 表 这 篇 论 文 的 作 者 都 是 业 界 大 佬 , 包 括 高 级 计 算 机 科 学 家 AndrewG.Schmidt、计算机科学家 Gabriel Weise 以及来自美国南加州大学工程技术科学协 会的研究室主任 Matthew French。 在论文中,Matthew French 教授主要就利用 PYNQ 开发环境,应用 Python 语言对 Xilinx Zynq 器件进行编程应用开发时对 FPGA 器件的影响、性能结果以及瓶颈影响进行了评估。 此外,各位教授就基于 Python 的开发结果与已经存在的基于 C 语言的开发及手动开发结果 进行了比较分析。 在论文中,各位教授还对 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 交易(不需要经 过器件驱动和核模块之间的不断握手确认)。 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 其次,就目前来说,PYNQ 还不支持任何高级的综合,也无法将 Python 应用直接移植 到 FPGA 中。 这就意味着,开发者依然原型必须使用 FPGA 来创建一个设计,即当 PYNQ 提供一个支 持板卡 IO 接口的 Overlay 框架以时,任何用户逻辑依然必须由开发者亲自创建并综合。 不过,开发者仍然可以使用高级综合工具或上面提到的 Python-to-HDL 工程来完成这个 任务,但是最终,开发者依然需要基于此设计并创建一个整合了 Python 代码比特流文件。 也正是由于 PYNQ 存在这方面的缺陷,论文的作者并没有简单依赖现存的 PYNQ API 接 口和 overlay,他们开发出一个基于 Redsharc 项目的特定应用程序内核进行研究。 结论 结果如何呢? 论文最后,作者对给出了 Python 开发 Zynq 应用的各项评估结果。 结果中给出了通过 c/c++实现这项研究的一般图像处理管道性能,以及定制的硬件加速 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 器和 Python 实现的性能结果(下图所示),帮助我们更好地理解了 Python + FPGA 开发环 境的性能和能。 表中可以看出,结果十分明显,通过 PYNQ 实现较 c 实现速度提高了 30 倍之多,更甚 者,从结果中可以看出,当 Python 实现时有更加有效的可用库时,比如 OpenCV,其性能 可以增长更多。 Python 软件实现和 FPGA 性能潜力的结合是一个非常有意义的工作,将会开创出一个 类似于树莓派和 Arduino 的广大的开发者社区。 Python+FPGA 是一个广阔的未经勘察过的领域——一个全新的更加高效的开发空间 ——通过 PYNQ 开发环境将会吸引更多的系统开发者加入的领域。 PYNQ 项目简介 PYNQ 是 Xilinx 的一个的开源项目。 它旨在使基于 Xilinx ZYNQ 的嵌入式系统设计更加容易。 通过使用 Python 语言及其库文件,设计者能够充分发挥 ZYNQ PL 部分和 PS 部分的各 自优势去设计更加强大的、有意义的嵌入式系统。 PYNQ 使得用户能够实现多种高性能的嵌入式应用,包括: 并行硬件执行 高帧率视频处理 硬件加速算法 实时信号处理 高带宽 IO 低延时控制 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 关键的技术 Jupyter Notebook 是一种基于浏览器的交互式计算环境。 Jupyter Notebook 能够创建多种文件(动态代码、交互式控件、图表、解释性文本、方 程式、图像、视觉等)。 在 Jupyter Notebook 环境下使用 python 可以简便地为 PYNQ-Z1 编程。 通过 python,开发者能调用可编程逻辑部分的硬件库。 硬件库可以加速 PYNQ-Z1 上运行的软件代码,还可以自定义硬件平台和接口。 PYNQ 镜像是一个可以引导的 Linux 镜像,其中包含 pynq python 包、其他开源包。 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 使用 PYNQ 需要什么软件? Jupyter Notebook 是基于浏览器的接口,所以需要一个兼容的网页浏览器,从而使用 python 去编程。 为了更高的性能,用户也可以使用 C/C++去编程。 此时,需要支持 PYNQ-Z1 的、免费的 Xilinx SDK 软件。 用户也可以使用其他第三方的软件开发工具。 为了增加新的硬件库,所以需要 Xilinx 或第三方的硬件设计工具。 Xilinx Vivado 免费版完全支持 PYNQ-Z1。 PYNQ-Z1 板卡资源 处理器:双核 ARM Cortex-A9 FPGA:1.3M 可重构逻辑 内存:512MB DDR3/FLASH 存储:Micro SD 卡插槽 视频:HDMI 输入/输出 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 音频: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 PYNQ 资源下载 从 PYNQ GitHub 上可以下载所有 PYNQ 项目的源代码。 如果用户想加入或联系 PYNQ 项目团队,可以在 PYNQ support forum 上发布信息。 PYNQ 资料百度网盘下载地址:http://pan.baidu.com/s/1dF60nPv 密码: 32vb PYNQ 示例 OpenCV 人脸识别 ADC 波形采集 PWM 发生器 至芯科技论坛 www.fpgaw.com
FPGA 培训专家 www.zxopen.com 具体的参考示例请访问 http://www.pynq.io/examples.html PYNQ 官方网站 http://www.pynq.io/home.html PYNQ-Z1 开发板简介 参考信息链接:https://item.taobao.com/item.htm?id=548613760274 PYNQ-Z1 开发板支持 PYNQ 项目,这是一个新的开源框架,使嵌入式编程人员能够在无需设计可编程逻辑电路的 情况下即可充分发挥 Xilinx Zynq All Programmable SoC(APSoC)的功能。 与常规方式不同的是,通过 PYNQ,用户可以使用 Python 进行 APSoC 编程,并且代码可直接在 PYNQ-Z1 上进行 开发和测试。 通过 PYNQ,可编程逻辑电路将作为硬件库导入并通过其 API 进行编程,其方式与导入和编程软件库基本相同。 PYNQ-Z1 开发板是 PYNQ 开源框架的硬件平台。 在 ARM A9 CPU 上运行的软件包括: 载有 Jupyter Notebooks 设计环境的网络服务器 IPython 内核和程序包 Linux FPGA 的基本硬件库和 API 对于想通过提供新的硬件库来扩展基本系统的设计人员,Xilinx Vivado WebPACK 工具可免费获得。 至芯科技论坛 www.fpgaw.com
分享到:
收藏