近日,想必各位科技爱好者的朋友圈都被一篇发表在第25届IEEE国际讨论会上,用Python开发FPGA的论文刷屏了吧,那么这是如何实现的呢?今天,就请各位看官和小编一起来了解一下,这个构想的实现基础——PYNQ。

PYNQ介绍

PYNQ全称为Python Productivity for Zynq,即在原有Zynq架构的基础上,添加了对python的支持。Zynq是赛灵思公司推出的行业第一个可扩展处理平台系列,在芯片中集成了ARM处理器和FPGA可编程逻辑器件,旨在为视频监视、汽车驾驶员辅助以及工厂自动化等高端嵌入式应用提供所需的处理与计算性能水平。PYNQ希望能够借助python语言本身易用易学、扩展库多而全、社区活跃贡献度高等特性,有效降低Zynq嵌入式系统的开发门槛。PYNQ将ARM处理器与FPGA器件的底层交互逻辑完全封装起来,顶层封装使用python,只需要import对应的模块名称即可导入对应的硬件模块即可进行底层到上层数据的交互或者为系统提供硬件加速。对于PYNQ的开发者来说,ARM上运行着一个Linux系统,FPGA被抽象为若干加速IP,开发者可以通过一行简单的python脚本即可完成动态加载bitstream,通过DMA将数据流传输到加速IP融合输出。PYNQ板卡也提供了非常丰富的接口资源,如HDMI、AUDIO、Grove模块、常用接口如SPI/I2C等等以及很多通用IO。

图为Python调用底层硬件框架

下面给一个在PYNQ中插入HDMI输入和输出的例子from pynq importOverlayfrompynq.lib.video import *

base =Overlay('base.bit')hdmi_in =base.video.hdmi_inhdmi_out = base.video.hdmi_out

简单高效开发PYNQ-Jupyter

对于嵌入式系统开发来说,往往由于性能的局限性,我们只能ssh进嵌入式linux,在命令行终端进行开发,开发效率是个很大的问题。在PYNQ上,我们使用了python扩展库Jupyter Notebook,其本质上是一个web服务器,提供了远程可视化、分步运行python脚本的能力。Jupyter同时可以实时显示程序运行结果,我们甚至可以在浏览器中直接看到我们使用硬件加速处理图像的结果。我们只需要将PYNQ板子接入网关,即可通过浏览器访问在板上运行的作为嵌入式web服务器的Jupyter Notebook。

图为JupyterNotebook实时显示运算图片

PYNQ能做什么

PYNQ的整个技术栈包含了python+linux+ARM+FPGA,提供了无限种扩展的可能性,我们可以使用它来做很多有意思的应用。在pynq.io的社区页面我们可以看到许多PYNQ社区开发的项目。包括BNN(二值神经网络)的案例。

图为PYNQ社区应用案例

同时,官方提供了非常多的外部接口案例。同时还包括了OpenCV的案例。

图为PYNQ Logictools

查阅PYNQ文档

关于PYNQ的所有资料都可以在网站pynq.io中找到,点击getting started就进入了PYNQ的文档页面。文档中包含了如何设置PYNQ等入门资料、如何创建PYNQ的FPGA硬件工程、PYNQ libraries的详细介绍以及最关键的python-PYNQ的函数文档,也可以使用搜索功能直接查找关键词。

图为pynq.io Getting Started

至此,PYNQ就为大家介绍到这里了。希望Python可以为大家拓展出新的思路。

python fpga_如何实现用Python开发FPGA?相关推荐

  1. 通过Python设计串口调试助手,结合FPGA串口工程进行验证

    Python设计串口调试助手,结合FPGA串口工程进行验证 一.用python设计串口 二.打开Quartus,在FPGA上运行uart代码 1.顶层文件 2.uart_rx接收模块 3.uart发送 ...

  2. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

  3. python是基于什么语言开发-python是哪个国家的人开发的语言

    python是Google的吉多·范罗苏姆设计的,Python是一种跨平台的计算机程序设计语言.作为一种面向对象的动态类型语言,它最初设计用于编写自动化脚本. 是Google的吉多·范罗苏姆设计的. ...

  4. python编程课程价格-无锡Python程序开发课程

    大数据及机器学习必备语言,推荐9-13岁青少年学习. 帮助孩子掌握Python语言的主要核心基本语法.掌握Python面向对象开发的基本概念.掌握Python和Pygame进行2D游戏开发. 小码研究 ...

  5. 少儿编程python线上课程-北京Python程序开发课程

    课程详情 大数据及机器学习必备语言,推荐9-13岁青少年学习. 帮助孩子掌握Python语言的主要核心基本语法.掌握Python面向对象开发的基本概念.掌握Python和Pygame进行2D游戏开发. ...

  6. python适合做后端开发吗-Python真的不适合做后端开发语言吗?

    2019-04-03 列举一些比较有名的网站或应用.这其中有一些是用python进行开发,有一些在部分业务或功能上使用到了python,还有的是支持python作为扩展脚本语言.数据大部分来自Wike ...

  7. python怎么打开编辑器-python用什么编辑器进行项目开发

    工欲善其事必先利其器,估计大部分的pythoner都是从python IDE开始了python之路.有很多的python IDE工具可以用,但是要从中选出一个用着趁手的IDE却是一项艰巨的任务. 你可 ...

  8. python软件包自带的集成开发环境-实验一 熟悉Python的集成开发环境

    实验一 熟悉Python的集成开发环境 一.实验目的与要求 1.了解什么是Python: 2.了解Python的特性: 3.掌握下载和安装Python的方法: 4.学习执行Python命令和脚本文件的 ...

  9. python能做游戏吗-python能开发游戏吗

    python可以写游戏,但不适合.下面我们来分析一下具体原因. 用锤子能造汽车吗? 谁也没法说不能吧?历史上也确实曾经有些汽车,是用锤子造出来的.但一般来说,还是用工业机器人更合适对吗? 比较大型的, ...

最新文章

  1. 上传自动显示图片 代码
  2. ajax请求返回json实例,Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
  3. matlab 计算大圆距离,已知两点经纬度计算两点之间的大圆距离
  4. 零基础不建议学前端_web前端开发零基础怎样入门-哈尔滨前端学习
  5. 听歌也能倍速了!网易云音乐PM怎么想的?
  6. 利用哈夫曼树编码与译码
  7. html java简单示例,HtmlUnit的简单例子
  8. GDI+中发生一般性错误 Winform Image.Save(mstream, ImageFormat.Png)引发
  9. DSP ADC模数转换
  10. SpringBoot整合调用微信模板方法实现微信公众号消息通知推送,Java实现微信公众号给关注用户推送自定义消息通知(手把手从0到1)
  11. lan pci 联想开机_联想bios设置硬盘启动
  12. Android 神器Tasker使用
  13. java设计模式-观察者模式(广播机制,消息订阅)
  14. php 正则匹配省市区
  15. python火车票票价_Python火车票机
  16. SPSS如何制作基本统计分析报表之案例实训?
  17. echart绘制直方图+正态分布曲线
  18. 机器人专业需要学习什么理论知识
  19. C++11 元编程学习
  20. 大学物理实验 | 直流电桥

热门文章

  1. 微服务宏观把控与深入剖析
  2. SpringBoot异常处理-@ExceptionHandler
  3. 使用Sidecar支持异构平台的微服务
  4. MySQL常用存储引擎之MyISAM
  5. 默认标准错误文件linux,Linux中标准输出和标准错误的重导向
  6. Spring Environment
  7. redis(16)--sentinel
  8. mycat配置访问oracle_教程 | MySql都会了,确定不学习一下MyCat分片?
  9. 013PHP文件处理——filemtime filectime fileatime date_default_timezone_set touch
  10. 云中的机器学习:FPGA 上的深度神经网络