PYNQ 用Python运行FPGA

2023-11-29 07:58
文章标签 python 运行 fpga pynq

本文主要是介绍PYNQ 用Python运行FPGA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转自http://www.openhw.org/topic-1738

PYNQ 用Python运行FPGA

日期:2017-11-02 作者:佚名

推荐文章

  • Zynq-7000 PL端HDMI的显示控制
  • Zynq-7000 PS到PL端emio的使用
  • Vivado 专家文章:Tcl 是什么?
  • Zynq-7000 ARM端MIO的使用
  • Zynq-7000 ARM端helloworld实验
  • SK电讯部署赛灵思FPGA用于AI加速,超GPU实现5倍性能或16倍功耗性能比
  • Xilixn Vivado IP的添加、modelsim-se仿真库的生成以及联合仿真
  • 突破功能安全设计的复杂性
  • 极目智能发布业界最低成本FPGA ADAS解决方案,面向近10家车厂批量供货
  • Powered by Xilinx: 极目智能发布业界最低成本FPGA ADAS解决方案,面向近10家车厂批量供货

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调用底层硬件框架

 

图 Python调用底层硬件框架

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

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

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

图 JupyterNotebook实时显示运算图片

 

图 JupyterNotebook实时显示运算图片

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

图 PYNQ社区应用案例

 

图 PYNQ社区应用案例

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

图 pynq.io 官方案例

 

图 pynq.io 官方案例

 

图 pynq.io 官方案例

Logictools功能则实现了使用python编写FPGA状态机的功能,使用Logictools可以用python编写FPGA I/O端口输出任意波形了。

图 PYNQ Logictools

 

图 PYNQ Logictools

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

图 pynq.io Getting Started

 

图 pynq.io Getting Started

这篇关于PYNQ 用Python运行FPGA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/432051

相关文章

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数