写在前面的话:看到朋友圈分享的这本书,一时技痒,给自己定个小目标,从今天开始翻译本书,作为小白学习FPGA之路的记录,仅供个人学习之用,并非用于任何商业目的。仅发布于知乎、个人优快云博客和/或个人微信公众号。这是我的个人译文,鉴于个人能力有限,难免有疏漏之处。不代表任何官方对于所提及的任何技术的陈述。全书20余万字,2022年-2023年希望能够有始有终完成。
——译者注,2021年12月28日
探索 Zynq® MPSoC
配套 PYNQ 和机器学习应用一起使用
探索 Zynq® MPSoC
配套 PYNQ 和机器学习应用一起使用
Louise H. Crockett
David Northcote
Craig Ramsay
Fraser D. Robinson
Robert W. Stewart
电子电气工程系
英国苏格兰格拉斯哥斯特拉斯克莱德大学
2019 年 4 月
该版本由 Strathclyde Academic Media 于 2019 年首次发布。
© Strathclyde Academic Media.
封面设计:Scribble Design。摄影:Kenneth Barlee。
开源使用与复制许可
本书以可打印电子书(PDF 格式)提供。
本书中的文本和图表全部可复制,并可用于非营利性学术目的,前提是在所有衍生文件中明确引用来源。引用应采用如下格式:
L. H. Crockett、D. Northcote、C. Ramsay、F. D. Robinson 和 R. W. Stewart:探索 Zynq MPSoC:配套 PYNQ 和机器学习应用一起使用,第一版,Strathclyde Academic Media,2019 年。
引用相应章节时,应提供章节作者姓名。例如:
第 23 章:案例研究:在 Zynq 上使用 PYNQ 为空间应用生成 CNN 原型:Phil Karagiannakis、Murray Ireland 和 Steve Greenland来源:探索 Zynq MPSoC:配套 PYNQ 和机器学习应用一起使用,Strathclyde Academic Media,2019 年。
如需将本书内容用于非盈利学术目的,应直接向出版商提交申请。
任何未经授权的第三方都不得以本书原始形式复制和销售本书。
警告和免责声明
本书作者和出版商已尽最大努力确保在本书中提供最新的准确信息。包括研究其中涵盖的主题并开发各项示例。其中所包含资料均为按“现状”真诚提供,对于本书中包含的文档记录,作者和出版商均不作任何种类的保证,无论是明示还是默示的保证。对于因其中所含任何信息所导致的任何直接或间接的损失或损害,作者和出版商概不负责。
商标
Arm、Cortex、AMBA、CoreSight、Mali、NEON、Thumb 和 TrustZone 均为 Arm Limited(或其附属公司)在欧盟和/或其他国家或地区的注册商标。版权所有。
本出版物为独立出版物,不隶属于 Arm Limited,也不并未获得 Arm Limited 的认可、赞助或授权。
Xilinx、Xilinx 徽标、Spartan、Artix、Kintex、Virtex、LogiCORE、Petalogix、RocketIO、Vivado、Zynq 和 WebPACK 均为 Xilinx, Inc. 的注册商标。版权所有。
MicroBlaze、SelectIO、UltraScale 和 XtremeDSP 均为 Xilinx, Inc. 的商标。
MATLAB 和 Simulink 均为 MathWorks, Inc. 的注册商标。
Linux® 是 Linus Torvalds 在美国和其他国家或地区的注册商标。
Eclipse 是 Eclipse Foundation, Inc. 的注册商标。
本书中使用的所有其他商标均承认属于其各自公司。本书中商标的使用并不意味着商标所有人对本书有任何从属关系或认可。
序言
2011 年,赛灵思公司发起了 Zynq 产品系列。这是将 ARM 处理器与可编程逻辑紧密耦合的首个赛灵思 SoC 系列。当时,我们决定与斯特拉斯克莱德大学的 Bob Stewart 教授和 Louise Crockett 博士协作出版《The Zynq Book》,作为这一创新架构的软硬件的综合性简介和教程。
首次出版取得的巨大成功驱使我们有信心与斯特拉斯克莱德大学继续协作,当 SoC 系列第二版问世时,Zynq MPSoC 也诞生了。
本书“探索 Zynq MPSoC”旨在为读者逐步详解软件栈、多处理系统以及可编程硬件的强大阵列的所有重要方面的信息。MPSoC 处理器系统配备有多达 4 颗 ARM Cortex-A53 处理器核及 2 颗 ARM Cortex-R5 实时处理器核。此外,用户可以利用 FPGA 互连结构,借助强大的 DSP 切片 (slice) 阵列和大规模配置的分布式存储器使现如今的 FPGA 互连结构得以不断扩展。
这种全新架构使处理器系统得以从当今新兴 AI 应用程序所需的复杂算术和数据移动中解放出来,并显著提升了其趣味性。本书着重对软件栈和编程工具进行了详细讲解,我个人对此非常欣赏。其中专为 PYNQ 编程环境准备了一整个特殊章节。PYNQ 是来自赛灵思的开源项目,旨在简化 Zynq 平台上的嵌入式系统的设计。通过使用 Python 语言和库,设计师们可以充分发挥可编程逻辑的优势,构建出更强大且更激动人心的嵌入式系统。本书第五部分主要探讨的是 Zynq MPSoC 平台上诸多应用程序的实现。其中包括详细探讨了旨在有效实现神经网络的 FINN-R 开源框架。
本书适合广大嵌入式系统设计人员阅读,无论是需要简单的软件界面和框架来快速实现机器学习算法的软件程序员,还是希望利用 Zynq MPSoC 的可编程硬件功能的系统设计师,想必都能从中有所收获。
斯特拉斯克莱德大学的团队编写了一本卓越的教学书籍,向读者展示了 Zynq MPSoC 平台所伴随的无限可能。不论是首次使用的用户还是想要充分挖掘硬件潜能的专家,都能从中获益匪浅。
我要感谢并祝贺为本书做出贡献的所有作者。
Ivo Bolsens:
赛灵思高级副总裁兼首席技术官
鸣谢
本书得以付梓,与多方协同助力密不可分,我们不敢妄自居功。特此向各方表示诚挚谢意。
首先要鸣谢赛灵思准予《探索 Zynq MPSoC》成书并提供项目支持。我们要感谢赛灵思高级总监 Patrick Lysaght 对本书作出的诸多贡献。Patrick 自迸发本书灵感起就主导该项目,并制定了了与内容和整体组织相关的诸多战略决策。我们还要特别感谢赛灵思欧洲、中东和非洲地区大学项目经理 Cathal McCabe,他一直担任我们的“图书经理”,并在整个过程中提供了巨大的帮助——耐心解答问题、提供建议和反馈,并帮助我们奋战在第一线。我们非常感谢他的所有意见建议和支持。此外,我们还要感谢 Patrick 和 Cathal 协作撰写第 22 章 PYNQ。
还有一路走来给予我们建议和支持或者审阅章节和提供反馈意见的诸多赛灵思员工。你们的专业知识技能普惠大众,令我们肃然起敬。感谢 Hugo Andrade、Ivo Bolsens、Sean Fox、Peter Ogden、Parimal Patel、Naveen Purush- otham、Yun (Rock) Qu 和 Graham Schelle。特别感谢 Giulio Gambardella、Thomas Preusser、Yaman Umuroglu 和 Michaela Blott 给第 21 章 低精度神经网络做出的贡献。
感谢来自 Craft Prospect Ltd., 团队的 Phil Karagiannakis、Murray Ireland 和 Steve Greenland 给第 23 章 PYNQ 和机器学习在空间应用领域的案例调研做出的贡献。
斯特拉斯克莱德大学的师生们也给予了巨大帮助,感谢他们对项目给予的支持和贡献。尤其要感谢 Sarunas (Shawn) Kalade 和 Josh Goldsmith 分别对深度学习章节以及
部分软件栈章节的内容做出的贡献。我们的斯特拉斯克莱德大学的同事们也付出了他们宝贵的时间和专业知识,对内容进行审核、帮助开展研究或者对内容慷慨贡献,他们是:Douglas Allan、Dale Atkinson、Kenny Barlee、Lewis McLaughlin、Andrew MacLellan、Damien Muir、Alan Petrie、Kenneth Stuart 和 Rhys Williams。这是真正意义上的团队协作!我们还要感谢我们研究团队的无数成员,感谢他们一直慷慨提供支持和鼓励。
最后,同样重要的是,我们要感谢我们的家人和朋友,是他们在本书编撰过程中以爱、鼓励和耐心给予支持。
Louise、David、Craig、Fraser 和 Bob,2019 年 3 月。
目录
前言 xvii
鸣谢 xix
1) 简介 1
1.1) 为什么你会爱上这本书 2
1.2) 赛灵思 SoC 革新——简述 3
1.3) 设计方法 4
1.4) 如何使用本书 6
1.4.1) 本书的组织方式 6
1.4.2) 更多信息来源 7
1.4.3) 新手建议 7
1.5) 下一步 8
1.6) 参考资料 8
第一部分:Zynq MPSoC 入门 9
2) FPGA、Zynq 和 Zynq MPSoC 11
2.1) 技术时间线 12
2.2) Zynq-7000 SoC 12
2.2.1) Zynq 架构和功能特性 12
2.2.2) Zynq 器件 14
2.2.3) Zynq 使用模型 14
2.3) 赛灵思 Zynq MPSoC 15
2.3.1) Zynq MPSoC 的诞生 15
2.3.2) Zynq MPSoC 架构和功能特性 16
2.4) FPGA 18
2.4.1) 关于 FPGA 18
2.4.2) FPGA 的发展历程 18
2.4.3) 现代化 FPGA 架构:UltraScale+ 21
2.5) 比较与探讨:FPGA、Zynq 和 Zynq MPSoC 之对比 24
2.5.1) 架构 24
2.5.2) 功耗和性能 25
2.5.3) 嵌入式系统实现 27
2.5.4) 应用 28
2.6) 章节汇总 29
2.7) 参考资料 29
3) Zynq MPSoC 架构概述 31
3.1) Zynq MPSoC 器件系列 31
3.1.1) Arm 对比赛灵思文档 33
3.2) 处理器系统 33
3.2.1) 应用处理单元 35
3.2.2) 实时处理单元 37
3.2.3) 图形处理单元 38
3.2.4) 连接 39
3.3) 平台管理 42
3.3.1) 功耗模式 42
3.3.2) 功耗域 43
3.3.3) 平台管理单元 44
3.4) 可编程逻辑 45
3.4.1) 逻辑互连结构 46
3.4.2) 存储和信号处理资源 47
3.4.3) PL 外设 48
3.4.4) 视频编解码单元 48
3.4.5) 通用输入/输出 48
3.4.6) 高速连接 49
3.4.7) JTAG 接口 49
3.5) 处理系统和可编程逻辑接口 49
3.5.1) Arm AMBA 开放式标准 50
3.5.2) PS 到 PL 互连与接口 52
3.5.3) EMIO 接口 54
3.5.4) 其它 PS 到 PL 接口 55
3.6) 安全与配置 55
3.6.1) 配置安全性単元 56
3.7) 章节回顾 58
3.8) 参考资料 58
4) Zynq MPSoC 设计工具和设计方法 63
4.1) Zynq MPSoC 设计剖析 63
4.1.1) Zynq MPSoC 开发板 64
4.1.2) 硬件系统 65