我是学雷达的,会搞FPGA,为什么还需要关注Python? 留言

Python是一种脚本语言,容易上手,但难于实现底层操控,因此在雷达领域难以受到关注。

基于FPGA的雷达信号处理实现都是基于硬件描述语言,从开始的VHDL到现在更为流行的Verilog;软件应用也从由最开始的汇编语言发展到现在的c/c++实现,这些都是目前为大多数FPGA开发者所熟悉的FPGA发展路程。

但是,在美国纳帕举行的第25届关于可编程计算机器领域IEEE国际讨论会上,一篇名为“评估通过Python快速开发异构处理器FPGA应用性能”的短篇论文获得了最佳短篇论文奖。

射频易商城

论文主要讨论了Python开发FPGA应用的优势和效率,针对Digilent的PYNQ-Z1板卡(内部集成一个Xilinx Zynq SoC),通过支持Python编程和Jupyter Notebooks框架的PYNQ开发环境,应用Python对此板卡进行开发编程,并最终评估开发结果的优势和效率。

论文的作者是高级计算机科学家AndrewG.Schmidt、计算机科学家Gabriel Weise以及来自美国南加州大学工程技术科学协会的研究室主任MatthewFrench。

他们利用PYNQ开发环境,应用Python语言对XilinxZynq器件进行编程应用开发,对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交易(不需要经过器件驱动和核模块之间的不断握手确认)。

其次,就目前来说,PYNQ还不支持任何高级的综合,也无法将Python应用直接移植到FPGA中。开发者依然原型必须使用FPGA来创建一个设计,即当PYNQ提供一个支持板卡IO接口的Overlay框架以时,任何用户逻辑依然必须由开发者亲自创建并综合。

不过,开发者仍然可以使用高级综合工具或上面提到的Python-to-HDL工程来完成这个任务,但是最终,开发者依然需要基于此设计并创建一个整合了Python代码比特流文件。

也正是由于PYNQ存在这方面的缺陷,论文的作者并没有简单依赖现存的PYNQ API接口和overlay,他们开发出一个基于Redsharc项目的特定应用程序内核进行研究。论文最后,作者对给出了Python开发Zynq应用的各项评估结果。

给出了通过c/c++实现这项研究的一般图像处理管道性能,以及定制的硬件加速器和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

  • 低延时控制

关键技术

Jupyter Notebook是一种基于浏览器的交互式计算环境。Jupyter Notebook能够创建多种文件(动态代码、交互式控件、图表、解释性文本、方程式、图像、视觉等)。在Jupyter Notebook环境下使用python可以简便地为PYNQ-Z1编程。

通过python,开发者能调用可编程逻辑部分的硬件库。硬件库可以加速PYNQ-Z1上运行的软件代码,还可以自定义硬件平台和接口。

PYNQ镜像是一个可以引导的Linux镜像,其中包含pynq python包、其他开源包。

使用PYNQ需要什么软件?

Jupyter Notebook 是基于浏览器的接口,所以需要一个兼容的网页浏览器,从而使用python去编程。为了更高的性能,用户也可以使用C/C++去编程。此时,需要支持PYNQ-Z1的、免费的XilinxSDK软件。

用户也可以使用其他第三方的软件开发工具。为了增加新的硬件库,所以需要Xilinx或第三方的硬件设计工具。Xilinx Vivado 免费版完全支持PYNQ-Z1。

射频易商城

射频易商城

射频易商城

射频易商城

 

原文始发于微信公众号(雷达通信电子战)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

在线客服