0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

典型的FPGA方法:如何开始使用Digilent的开发板

YCqV_FPGA_EETre 来源:lq 2019-04-30 16:42 次阅读

过去,设计人员倾向于使用现场可编程门阵列 (FPGA) 在硬件设计中提升计算密集型应用的性能,例如计算机视觉通信工业嵌入式系统,以及越来越多的物联网 (IoT)。然而,传统 FPGA 编程中涉及的繁琐步骤一直让人望而却步,促使设计人员到目前都还在寻求替代处理解决方案。

基于 Jupyter 笔记本的 Python Productivity for Zynq (PYNQ) 开发环境的问世,解决了 FPGA 的可编程性问题。使用专为支持 PYNQ 而设计的开发板,即使 FPGA 经验很少的开发人员也可快速实现相关设计,从而充分利用 FPGA 性能来加快计算密集型应用。

本文将说明典型的 FPGA 方法,然后介绍并演示如何开始使用 Digilent 的开发板。该开发板为快速开发基于 FPGA 的系统提供了一种强大的开源替代方法。

为何使用 FPGA?

若需要使用计算密集型复杂算法工程师常常依赖 FPGA 提高执行速度,同时又不影响紧张的功率预算。实际上,FPGA 已成为在边缘计算系统中提高人工智能算法速度的主流平台。

更先进的 FPGA 片上系统 (SoC) 器件专为嵌入式应用而设计,将可编程逻辑 (PL) 结构与微控制器集成在一起。例如,Xilinx 的 Zynq-7000 SoC 在集成式可编程逻辑 (PL) 结构中结合了一个 Arm® Cortex®-A9 双核处理器系统,以及最多 444,000 个逻辑单元(图 1)。除了内置处理器和全套外设外,Zynq SoC 还提供最多 2,020 个数字信号处理 (DSP) 块(或称切片)。开发人员使用这些资源,便可将 PL 结构配置到专用的处理链中,以便在复杂的计算密集型算法中提高吞吐量。

图 1:Xilinx 的 Zynq-7000 SoC 结合了 Arm Cortex-A9 双核处理器、可编程逻辑结构,以及很多嵌入式应用中所需的全套外设和接口。(图片来源:Xilinx)

除了可减少元器件数量外,处理器与 PL 结构的集成还允许通过片上总线而不是片外访问来执行运算。这种集成也进一步简化了在上电或复位序列期间,加载 PL 结构的关键任务。

在使用 FPGA 构建的基于微控制器的典型系统中,开发人员需要管理用于加载 FPGA 编程比特流的序列和安全性。在 Zynq SoC 中,集成的处理器负责执行常规微控制器的任务,包括管理 PL 结构和其他片上外设。因此,与传统的 FPGA 比特流初始化相比,该 FPGA 加载过程更接近于常规微控制器的引导过程。

该引导过程通过由其中一个 Zynq 处理器管理的短步骤序列完成(图 2)。上电或复位时,如果 Zynq 处理器执行其只读 BootROM 中的一小段代码,以从引导设备获取实际引导代码,则引导过程开始。除了用于配置处理器系统组件的代码外,引导代码还包含 PL 比特流以及用户应用。当引导代码加载完成时,处理器使用其中包含的比特流来配置 PL。而完成组件和 PL 的配置后,该器件开始执行引导代码中包含的应用。

图 2:在类似于常规微控制器的引导序列中,Xilinx 的 Zynq-7000 SoC 运行 Boot ROM 中的代码来加载和执行引导加载程序,该加载程序负责处理后续阶段,包括使用引导代码中封装的比特流来配置可编程逻辑结构。(图片来源:Xilinx)

即使有了简化的 PL 加载处理,开发人员在过去仍需自行处理复杂的 FPGA 开发过程,才能生成所需比特流。对于希望利用 FPGA 性能的开发人员来说,传统的 FGPA 开发过程仍然是他们实现设计的一大障碍。Xilinx 通过其 PYNQ 环境有效地消除了这一障碍。

PYNQ 环境

在 PYNQ 中,PL 比特流封装在预先构建的库中。这些库称为覆盖层,在开发过程和执行环境中,其角色与软件库类似。在引导加载过程中,与所需覆盖层相关联的比特流将配置 PL 结构。不过,对于通过与每个覆盖层关联的 Python 应用程序编程接口 (API) 来利用覆盖层功能的开发人员而言,该过程保持透明。在开发过程中,工程师可以根据需要组合软件库和覆盖层,通过其各自 API 来实现应用。在执行过程中,处理器系统像往常一样执行软件库代码,而 PL 结构负责实现覆盖层中提供的功能。这样做的结果是可以提升性能,从而进一步促使开发人员对日益严苛应用进行 FPGA 设计的兴趣。

顾名思义,PYNQ 利用了与 Python 编程语言相关的更高开发生产力。Python 之所以能够成为顶级语言之一,不仅是因为其相对简单,还因为它具有庞大且不断扩增的生态系统。开发人员可能会在 Python 开源模块的存储库中,找到支持服务或专用算法所需的软件库。与此同时,开发人员可以使用 C 语言实现关键功能,因为 PYNQ 使用常见 C 语言实现 Python 解释器。该实现允许轻松访问数千个现有 C 语言库,并简化开发人员提供的 C 语言库的使用。尽管经验丰富的开发人员可以使用专用硬件覆盖层和 C 语言软件库来扩展 PYNQ,但是 PYNQ 的真正优势在于,它可为任何能够构建 Python 程序的开发人员提供高生产力开发环境。

PYNQ 本身是一个开源项目,基于另一个开源项目(Jupyter 笔记本)而构建。针对通过交互方式探索算法,以及使用 Python 或任何其他受支持的编程语言(目前超过 40 种)对复杂应用进行原型开发,Jupyter 笔记本可提供极其有效的环境。Jupyter 笔记本由 Project Jupyter 基于社区共识而开发,将可执行代码行与描述文本和图形结合在一起。这一功能使各开发人员能够更有效地记录进展,而无需转到其他开发环境。例如,开发人员可以使用笔记本,将查看数据所需的数行代码与代码生成的图形结合起来(图 3)。

图 3:来自 Xilinx 样例存储库的 Jupyter 笔记本将描述文本、可执行代码以及与应用相关的输出结合起来。(图片来源:Xilinx)

Jupyter 笔记本之所以能够同时包含代码、输出和描述文本,是因为它是一种活动文档,并在 Jupyter 笔记本服务器提供的交互式开发环境中进行维护(图 4)。在 Jupyter 会话中,服务器使用 HTTP 协议在常规 Web 浏览器中呈现笔记本文件,并对所呈现文档中的静态和动态内容应用 HTTP 和 Websocket 协议。在后端,服务器使用 ZeroMQ (ØMQ) 开源消息传递协议与代码执行内核通信。

图 4:在 Jupyter 会话中,笔记本服务器将笔记本文件的内容呈现到 Web 浏览器,同时与执行代码的后端内核进行交互。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6813

    浏览量

    147669
  • FPGA
    +关注

    关注

    1603

    文章

    21329

    浏览量

    593302
  • python
    +关注

    关注

    51

    文章

    4678

    浏览量

    83477

原文标题:使用Python和Jupyter笔记本快速构建基于FPGA的设计并进行编程

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    开发者福利 一文带你了解Digilent Arty S7 FPGA开发板

    Digilent为Arty FPGA开发板系列增加了新的成员——两种不同规格的新的Arty S7,这款FPGA开发板是基于中等大小(size
    的头像 发表于 09-27 06:33 8302次阅读
    <b class='flag-5'>开发</b>者福利 一文带你了解<b class='flag-5'>Digilent</b> Arty S7 <b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>

    #fpga开发板 Lattic-mipi开发板

    FPGA开发板
    明德扬科技
    发布于 :2023年10月25日 18:01:23

    坛子里,FPGA有关开发板的资料汇总贴

    ://bbs.elecfans.com/forum.ph ... 3524&fromuid=3586482.大西瓜(ALTER系列)FPGA开发板资料共享https
    发表于 01-18 10:31

    如何选择合适的开发板

    开发板,它有一个可以用于我自己的接口的连接器。电路需要有一个简单的USB接口用于主机通信。 USB到串行桥是首选。我想使用USB接口在fpga结构中读写寄存器。许多低成本电路(低
    发表于 09-20 09:04

    fpga开发板的新手,如何开始使用引脚分配

    我是fpga开发板的新手,我想知道如何开始使用引脚分配,特别是u*** / serial引脚连接。任何其他pin信息都会有所帮助谢谢
    发表于 07-19 11:47

    如何开始使用MC33771C评估

    我购买了用于电池管理系统的FRDM33771CSPEVB(IC为MC33771C)开发板。我想做电池测试,请谁能帮我看看如何开始使用这个我还有 S32K144EVB 平台
    发表于 03-20 07:31

    是否有任何关于如何开始使用ESP8266开发板的教程?

    是否有任何关于如何开始使用 ESP8266 开发板的教程?我刚收到邮件中的第一个 NodeMCU 和一个 Wemos D1,发现它们实际上不一定采用 Arduino UNO 代码。我想从一些简单
    发表于 06-12 07:43

    Digilent公司推出新型FPGA硬件开发平台:NEXYSTM3开发板

    Digilent公司推出了一款新型的基于FPGA的硬件开发平台,NEXYSTM3开发板。此开发板采用了Xilinx公司最先进的Spartan
    发表于 08-22 09:28 1287次阅读

    Digilent公司basys2开发板的全套开发例程

    Digilent公司basys开发板的全套开发例程,感兴趣的小伙伴们可以看看。
    发表于 07-29 17:46 254次下载

    Digilent公司发布新款FPGA开发板

    Digilent公司宣布了新款FPGA开发板,归属于其Nexys产品线——Nexys4——板上集成一个赛灵思Artix-7100T FPGA
    发表于 02-09 14:09 1459次阅读

    digilent JTAG编程电线特点

    产品特点:   低成本JTAG配置解决方案   专为非Digilent FPGA开发板设计
    的头像 发表于 11-13 17:04 1929次阅读
    <b class='flag-5'>digilent</b> JTAG编程电线特点

    digilent Spartan-7开源创客开发板介绍

    Arty S7 开发板搭载 Xilinx 最新的 Spartan-7 FPGA 芯片,是 DIGILENT Arty 家族系列产品的最新成员,该家族系列产品专门面向创客和FPGA兴趣
    的头像 发表于 11-19 14:38 2135次阅读
    <b class='flag-5'>digilent</b> Spartan-7开源创客<b class='flag-5'>开发板</b>介绍

    digilent Artix-7 FPGA开发板简介

    Nexys 4 DDR是一款Digilent多孔RAM-based Nexys开发板的简易替代品。
    的头像 发表于 11-19 14:43 2938次阅读
    <b class='flag-5'>digilent</b> Artix-7 <b class='flag-5'>FPGA</b><b class='flag-5'>开发板</b>简介

    开始使用 RL78/G14 快速原型开发板/Wi-Fi-Pmod-Expansion-Board

    开始使用 RL78/G14 快速原型开发板/Wi-Fi-Pmod-Expansion-Board
    发表于 02-02 19:31 0次下载
    <b class='flag-5'>开始使用</b> RL78/G14 快速原型<b class='flag-5'>开发板</b>/Wi-Fi-Pmod-Expansion-Board

    开始使用 RL78/G14快速原型开发板/Wi-Fi-Pmod-Expansion-Board

    开始使用 RL78/G14 快速原型开发板/Wi-Fi-Pmod-Expansion-Board
    发表于 07-04 19:16 0次下载
    <b class='flag-5'>开始使用</b> RL78/G14快速原型<b class='flag-5'>开发板</b>/Wi-Fi-Pmod-Expansion-Board