写在前面的话:看到朋友圈分享的这本书,一时技痒,给自己定个小目标,从今天开始翻译本书,作为小白学习FPGA之路的记录,仅供个人学习之用,并非用于任何商业目的。仅发布于知乎、个人CSDN博客和/或个人微信公众号。这是我的个人译文,鉴于个人能力有限,难免有疏漏之处。不代表任何官方对于所提及的任何技术的陈述。全书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。这是真正意义上的团队协作!我们还要感谢我们研究团队的无数成员,感谢他们一直慷慨提供支持和鼓励。

最后,同样重要的是,我们要感谢我们的家人和朋友,是他们在本书编撰过程中以爱、鼓励和耐心给予支持。

LouiseDavidCraigFraser Bob2019 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

4.1.3)      软件栈    68

4.2)  设计进程       69

4.2.1)      要求与规范    69

4.2.2)      工程决策与规划    70

4.2.3)      设计流程       71

4.2.4)      测试       72

4.3)  准备:设计工具和开发系统设置       72

4.3.1)      主机系统       72

4.3.2)      赛灵思软件组件    73

4.3.3)      硬件要求       80

4.4)  开发板和支持资源       81

4.5)  资源和支持    82

4.5.1)      有关 Zynq MPSoC 器件的信息         82

4.5.2)      软件工具支持       83

4.5.3)      系统设计支持       84

4.6)  更广泛的生态系统       84

4.6.1)      硬件系统设计工具和组件    85

4.6.2)      软件系统设计工具和组件    87

4.6.3)      算法开发和交接    89

4.6.4)      硬件与外设    89

4.7)  章节汇总       91

4.8)  参考资料       91

5)    Zynq MPSoC 的候选应用领域   97

5.1)  怎样的系统才能称为“Zynq MPSoC 系统”?       97

5.2)  Zynq MPSoC 和 RFSoC 的应用领域        99

5.3)  无人机    100

5.3.1)      飞行       100 

5.3.2)      视频处理      102

5.3.3)      传感      102

5.3.4)      通信与导航   103

5.3.5)      高级无人机   104

5.4)  智能汽车和自动驾驶汽车   105

5.4.1)      “ADAS”覆盖哪些内容? 106

5.4.2)      传感要求与实现   106

5.4.3)      自动驾驶汽车      108

5.4.4)      连接与安全   108

5.5)  与 RF 模拟世界的交互——Zynq RFSoC 革新       109

5.5.1)      Zynq RFSoC 器件系列与 MPSoC 之比较       110

5.5.2)      RF 采样:RF-ADC 和 RF-DAC 以及i单芯片 SDR      113

5.5.3)      对 Zynq RFSoC 数据转换器进行直接采样      子系统   114

5.5.4)      4GLTE 多载波解决方案      116

5.5.5)      5G 移动和无线实现    117

5.5.6)      使用 IF 架构实现 5G 毫米波   117

5.6)  章节汇总      119

5.7)  参考资料      119

第二部分:Zynq MPSoC 架构详解    123

6)    应用处理单元      125

6.1)  Cortex-A53 MPCore 处理器      125

6.2)  Armv8-A 基础     126

6.2.1)      64 位/32 位执行状态 127

6.2.2)      指令集和编程语言      128

6.2.3)      异常级别      129

6.2.4)      处理器模式   131

6.2.5)      Armv8 安全模型 133

6.3)  信号和接口   137

6.3.1)      主存储器接口      138

6.3.2)      ACP 从接口 139

6.3.3)      交叉触发接口 (CTI)     141

6.3.4)      高级外设总线 (APB) 调试 142

6.3.5)      GIC 接口      142

6.3.6)      走线接口      142 

6.3.7)      其它信号       143

6.4)  存储器管理单元    144

6.5)  存储器系统    144

6.5.1)      1 级存储器系统    145

6.5.2)      2 级存储器系统    146

6.6)  处理器扩展    146

6.6.1)      加密       146

6.6.2)      NEON 媒体处理引擎  146

6.6.3)      矢量浮点单元       148

6.7)  中断       148

6.7.1)      GICv2 中断类型    149

6.7.2)      GICv2 中断优先级和状态    150

6.7.3)      GIC-400 概述       150

6.8)  功耗管理       153

6.8.1)      功耗域    153

6.8.2)      功耗模式       154

6.9)  系统虚拟化    155

6.9.1)      虚拟环境中的地址转换       157

6.9.2)      中断虚拟化    157

6.10)       章节回顾       159

6.11)       参考资料       159

7)    实时处理单元       161

7.1)  简介              161

7.1.1)      何谓实时处理?    161

7.1.2)      为何要为实时处理采用不同的架构?       163

7.2)  概述       163

7.3)  确定性和响应性    165

7.3.1)      紧密耦合存储器    165

7.3.2)      中断系统       166

7.4)  RPU 中的安全性  170

7.4.1)      存储器保护    171

7.4.2)      拆分/锁定模式      174

7.5)  章节回顾       176

7.6)  参考资料       176 

8)    Zynq MPSoC 中的安全性   179

8.1)  配置安全信息保障      180

8.1.1)      配置安全单元简介      181

8.1.2)      加密块   183

8.1.3)      密钥管理      190

8.2)  防篡改   200

8.2.1)      监控      201

8.2.2)      响应      202

8.2.3)      预防措施      204

8.3)  通过隔离保障安全      205

8.3.1)      利用虚拟化和 Armv8 隔离软件       206

8.3.2)      将隔离扩展至整个系统      209

8.3.3)      隔离汇总      213

8.4)  章节汇总      213

8.5)  参考资料      214

9)    安全功能特性和技巧   217

9.1)  安全简介      217

9.1.1)      安全性和可靠性   218

9.1.2)      安全应用示例      219

9.2)  功能安全      219

9.2.1)      何谓功能安全?   219

9.2.2)      错误、故障和失败      220

9.2.3)      错误、故障和失败的处理   221

9.2.4)      功能安全标准      225

9.3)  设计原则和架构支持   227

9.3.1)      冗余性   227

9.3.2)      多样性   230

9.3.3)      隔离设计流程      232

9.3.4)      实时处理器:双锁步模式   233

9.3.5)      CCF 和系统监控          234

9.3.6)      纠错码 (ECC) 存储器 235

9.3.7)      故障注入和测试   236

9.4)  章节汇总      237

9.5)  参考资料      237 

10)   平台管理功能特性       239

10.1)       功耗模式       240

10.1.1)     电池供电模式       240

10.1.2)     低功耗模式    241

10.1.3)     全功耗模式    241

10.1.4)     深度休眠模式       241

10.2)       功耗域    242

10.2.1)     电池功耗域    243

10.2.2)     低功耗域       244

10.2.3)     全功耗域       245

10.2.4)     PL 功耗域      246

10.2.5)     其它功耗域    247

10.3)       平台管理单元       247

10.3.1)     PMU 处理器         249

10.3.2)     接口与 AXI Interconnect     250

10.3.3)     局部寄存器与全局寄存器    251

10.3.4)     可编程时间间隔定时器       251

10.3.5)     中断       251

10.4)       错误管理       253

10.4.1)     错误状态和使能寄存器       253

10.4.2)     中断错误寄存器    254

10.4.3)     错误处理       254

10.5)       PMU 固件     255

10.5.1)     PMU 固件的组成         255

10.5.2)     默认模块       256

10.5.3)     PMU 固件的执行         257

10.5.4)     定制模式       258

10.6)       章节回顾       258

10.7)       参考资料       259

第三部分:Zynq MPSoC 系统开发    261

11)   硬件系统开发       263

11.1)       利用 Zynq MPSoC 执行异构计算     264

11.2)       硬件系统概述       266 

11.2.1)     接口与信号   266

11.2.2)     互连      269

11.2.3)     存储器   272

11.3)       PL 交接        273

11.3.1)     嗅探      274

11.3.2)     AXI 一致性扩展 (ACE) 接口     274

11.3.3)     AXI FIFO 接口      276

11.3.4)     PL-FPD AXI 主接口     277

11.3.5)     PL-LPD AXI 主接口     277

11.3.6)     PL-PS AXI 从接口       278

11.3.7)     选择 PL 接口      278

11.4)       中断系统      280

11.4.1)     中断系统概述      280

11.4.2)     中断类型      281

11.4.3)     中断优先级、状态与处理方式   283

11.4.4)     处理器间中断      284

11.5)       存储器   285

11.5.1)     全局地址空间      285

11.5.2)     片上存储器   286

11.5.3)     DDR 存储器接口 287

11.6)       数据移动基础      289

11.6.1)     直接存储器访问   289

11.6.2)     AXI Interconnect 291

11.6.3)     PS 中的 DMA 控制器       291

11.6.4)     简单的 AXI 通信 293

11.6.5)     AXI DMA       294

11.6.6)     AXI Video DMA    296

11.7)       章节回顾      298

11.8)       参考资料      298

12)   软件栈   301

12.1)       裸机软件栈   301

12.1.1)     裸机软件栈的作用      302

12.1.2)     C 语言标准库      303

12.1.3)     独立库   304

12.1.4)     独立驱动程序      305 

12.1.5)     使用方法       305

12.2)       FreeRTOS 软件堆栈     307

12.2.1)     FreeRTOS 的作用        307

12.2.2)     任务       308

12.2.3)     任务间同步    309

12.2.4)     其它实用工具       311

12.2.5)     使用方法       312

12.3)       Linux 软件栈        313

12.3.1)     Linux 的作用        314

12.3.2)     内核空间与用户空间的拆分       315

12.3.3)     存储器管理    317

12.3.4)     器件驱动程序       319

12.3.5)     进程管理       322

12.3.6)     进程间通信    324

12.3.7)     使用方法       325

12.3.8)     多媒体软件栈       325

12.4)       章节回顾       326

12.5)       参考资料       327

13)   多处理器开发       331

13.1)       异构处理简介       332

13.1.1)     Zynq MPSoC 上的处理器集       332

13.1.2)     拆分软件任务       332

13.1.3)     异构计算概念       334

13.2)       利用 Linux 进行对称多处理       336

13.3)       非对称多处理       339

13.3.1)     利用 OpenAMP 执行无监督 AMP    339

13.3.2)     利用 Xen 虚拟机管理器执行受监督 AMP       344

13.4)       软件定义的无线电应用混合示例       348

13.5)       章节汇总       350

13.6)       参考资料       351

14)   系统启动       353

14.1)       系统启动简介       353

14.2)       非安全启动进程    356

14.2.1)     启动进程概述       356 

14.2.2)     启动介质选项      360

14.2.3)     启动镜像搜索      361

14.2.4)     启动镜像格式      361

14.2.5)     利用 Linux/OpenAMP 用例回顾所学      363

14.3)       安全启动流程      364

14.3.1)     安全启动基础      364

14.3.2)     安全启动加密      365

14.3.3)     安全启动镜像格式      369

14.4)       实用非安全器件配置   370

14.4.1)     生成启动镜像      370

14.4.2)     启动镜像编程      371

14.5)       实用安全器件配置      371

14.5.1)     生成启动镜像      372

14.5.2)     器件安全启动配置      374

14.5.3)     维护超出 FSBL 范围的信任链   374

14.6)       章节汇总      375

14.7)       参考资料      375

第四部分:利用赛灵思 SDx 开发环境开展系统设计     377

15)   利用 SDx 开展系统设计的简介        379

15.1)       使用 SDx 的动机        379

15.2)       关于 SDx      381

15.2.1)     开发环境      381

15.2.2)     全系统最优化编译器简介   383

15.2.3)     数据移动网络      383

15.2.4)     SDx 工具链定向 386

15.2.5)     SDx API 389

15.2.6)     SDx 工具链设置 390

15.3)       设计流程      392

15.3.1)     SDx 平台      394

15.3.2)     硬件的初始候选功能选择   395

15.3.3)     系统性能估算      396

15.3.4)     系统性能最优化   396

15.3.5)     系统性能分析      397

15.4)       SDx 工程层级      398 

15.5)       章节回顾       402

15.6)       参考资料       403

16)   利用 SDx 进行系统剖析与加速         405

16.1)       系统剖析       405

16.1.1)     仅限软件的系统剖析    405

16.1.2)     相关性能估算       411

16.1.3)     系统性能测量       412

16.2)       使用可编程逻辑的软件加速       414

16.2.1)     IP 核最优化  414

16.2.2)     IP 核集成最优化  416

16.3)       章节回顾       421

16.4)       参考资料       422

17)   在 SDx 中复用现有 IP        423

17.1)       创建 C 语言可调用库         423

17.1.1)     IP 核要求      424

17.1.2)     IP 配置参数  425

17.1.3)     功能定义       425

17.1.4)     功能实参映射       426

17.1.5)     sdslib 实用工具    427

17.1.6)     库头文件       428

17.2)       使用 C 语言可调用库         429

17.3)       章节回顾       430

17.4)       参考资料       430

18)   利用 SDx 进行调试和性能监控         431

18.1)       系统仿真       432

18.2)       软件调试       434

18.3)       硬件调试       436

18.4)       性能监控       439

18.4.1)     事件追踪       439

18.4.2)     AXI Performance Monitor    441

18.4.3)     处理系统性能监控       444

18.5)       章节回顾       445

18.6)       参考资料       446 

19)   定制 SDx 平台    447

19.1)       为何要开发定制 SDx 平台?    447

19.2)       SDx 平台结构和组件 448

19.2.1)     元数据文件   450

19.2.2)     样本应用      450

19.3)       SDx 平台硬件组件      451

19.3.1)     开发平台硬件设计      451

19.3.2)     平台硬件元数据文件   453

19.4)       SDx 平台软件组件      457

19.4.1)     启动文件      457

19.4.2)     PetaLinux 工具    465

19.4.3)     启动镜像格式文件      465

19.4.4)     库   466

19.5)       SDx 平台样本       应用      467

19.6)       sdspfm 实用工具         469

19.7)       预构建硬件           471

19.8)       测试和使用定制 SDx 平台        473

19.9)       章节回顾      474

19.10)     参考资料      474

第五部分:PYNQ 和机器学习应用   479

20)   深度学习      481

20.1)       机器学习已无处不在(或终将如此)      481

20.1.1)     机器学习对比深度学习      481

20.1.2)     机器学习概述      483

20.1.3)     已确立的应用      485

20.1.4)     新兴应用      486

20.1.5)     机器学习平台      489

20.2)       通用神经网络架构      489

20.2.1)     神经元   489

20.2.2)     多层感知机   491

20.2.3)     卷积神经网络 (CNN) 493

20.2.4)     递归神经网络 (RNN) 495

20.3)       训练神经网络      497 

20.3.1)     损失函数       498

20.3.2)     反向传输       499

20.3.3)     随机梯度下降法 (SGD)        501

20.3.4)     正则化    502

20.4)       深度学习工具和框架    503

20.5)       加速需求       504

20.5.1)     云应用和边缘应用       504

20.5.2)     压缩技巧       505

20.6)       章节汇总       505

20.7)       参考资料       506

21)   低精度神经网络    509

21.1)       低精度神经网络    509

21.1.1)     何谓“低精度”?       510

21.1.2)     动机       511

21.1.3)     对缩放的影响       511

21.1.4)     神经网络实现选项       513

21.2)       FINN-R 简介        514

21.2.1)     FINN-R 起源        514

21.2.2)     低精度最优化       514

21.2.3)     架构最优化    514

21.2.4)     FINN-R 设计流程        515

21.2.5)     处理 FINN-R       516

21.3)       可编程逻辑上的神经网络    516

21.3.1)     可编程逻辑中的神经元       517

21.3.2)     创建层次       518

21.3.3)     设计方法和工具    520

21.4)       FINN-R 案例分析:适用于 Zynq MPSoC 的推断加速器      521

21.5)       章节汇总       522

21.6)       参考资料       523

22)   PYNQ     525

22.1)       PYNQ 简介    525

22.1.1)     PYNQ 作为框架    525

22.1.2)     何谓 PYNQ?       526

22.1.3)     为何使用 Python?      529 

22.1.4)     PYNQ 的局限      530

22.2)       示例 PYNQ 应用        531

22.2.1)     Python 笔记本(仅软件)        534

22.2.2)     PYNQ 笔记本(硬件加速)      534

22.2.3)     系统架构(硬件加速版本)      534

22.2.4)     关键观测结果      537

22.3)       PYNQ 系统的组件      537

22.3.1)     PYNQ 镜像   537

22.3.2)     文件处理      538

22.3.3)     覆盖层   539

22.3.4)     Jupyter Notebook       542

22.3.5)     文件和安装   544

22.3.6)     高级用户自定义   545

22.4)       PYNQ 工程   546

22.4.1)     PYNQ 目标   546

22.4.2)     PYNQ 影响   547

22.5)       资源      549

22.5.1)     如何获得 PYNQ?      549

22.5.2)     文档      549

22.5.3)     文件和源代码      550

22.5.4)     硬件      550

22.5.5)     社区资源      550

22.6)       章节汇总      551

22.7)       参考资料      552

23)   案例分析:在 Zynq上使用 PYNQ 为空间应用开发 CNN 原型 . .555

23.1)       设计概念      556

23.2)       利用神经网络进行云检测   556

23.2.1)     算法选择      556

23.2.2)     算法开发      558

23.3)       硬件选择      558

23.3.1)     FPGA 选择   558

23.3.2)     发现 PYNQ   560

23.4)       利用 PYNQ 进行云检测    560

23.4.1)     利用 PYNQ 开发原型        560

23.4.2)     结果      561 

23.5)       反思与反省    562

23.6)       参考资料       562

第六部分:结论    565

24)   学术案例分析       567

24.1)       嵌入式计算机展望       567

24.1.1)     高级驾驶辅助系统       571

24.2)       航天飞行系统       573

24.3)       机器学习       574

24.4)       章节汇总       578

24.5)       参考资料       578

后记       581

附录:BSD 3 条款许可       583

首字母缩略词列表       585

索引       605

正文待续...

探索 Zynq® MPSoC...

探索 Zynq MPSoC:配套 PYNQ 和机器学习应用一起使用 - 序言鸣谢目录20211231相关推荐

  1. Zynq MPSOC 电子书免费下载

    Zynq MPSOC 电子书免费下载 期待已久的 Zynq MPSOC 电子书终于上线了, 书名为<Exploring Zynq MPSoC With PYNQ and Machine Lear ...

  2. 【Xilinx】Zynq\MPSoc\Versal不同速度等级下的ARM主频

    [Xilinx]Zynq\MPSoc\Versal不同速度等级下的ARM主频 一.Zynq(A9) 二.MPSoC(A53+R5) 三.Versal(A72+R5F) 最近有很多人在选型的时候,问到A ...

  3. zcu102 zynq Mpsoc uart hello world

    初识zcu102,第一步就是来一个hello world起航,瞎折腾了一番,总结并分享给各位,希望大家少走弯路. 希望读者,能够按图索骥,不费力气,尽快上手,以便利用此高大上的设备为祖国建设做贡献. ...

  4. Xilinx ZYNQ MPSOC 多核高性能计算平台

    Xilinx ZYNQ MPSOC 多核高性能计算平台 转自:微信公众号 FPGA渠道及方案一站式服务商 本平台搭载16nm工艺的ZYNQ UltraScale XCZU15EG-2FFVB1156 ...

  5. soc低功耗电路设计应用-Zynq MPSoC

    文章目录 电源管理 多电源域 电源管理模式 电源域上电下电 PMU管理 小结 时钟和频率管理 总结 以Zynq MPSoC 产品为例,介绍soc低功耗电路设计技术的应用.主要从硬件电路设计角度分析,后 ...

  6. zynq mpsoc lwip调试问题记录(二)

    项目场景: zynq mpsoc 使用lwip 进行以太网传输时,遇到的问题记录 问题描述 -----lwIP TCP echo server ------ TCP packets sent to p ...

  7. Zynq MPSoC在自定义硬件平台中移植使用Xilinx Certified Ubuntu踩坑实录(以ZCU102为例)

    本文后续更新和资源在个人主页,欢迎点此查看 前言 在Zynq中移植Linux一直是对于我们这种初学者来说的老大难问题,这一问题在官方推出Petalinux后有所缓解.但Petalinux OS的操作简 ...

  8. 哈工大毕设体验记录-使用ZYNQ MPSoC开发板实现的Linux环境千兆以太网C语言UDP协议批量文件存取(上)

    写在前面:本文仅为一位哈工大本科学生的毕设过程记录(吐槽),可参考性有限,供后来的广大学弟学妹们参考一下吧,我趟过的坑别再跳了. 字体区别:黑色加粗为文章结构脉络表述,红色为必须明确的重点,绿色为次重 ...

  9. ZYNQ MPSoc 多DMA传输实例

    使用环境:Vivado 2020.1,Vitis 2020.1 使用开发板:ZYNQ MPSoc 15EG Demo Vivado 工程 双DMA回环 开启SG模式,双DMA控制器,开启四个中断. V ...

最新文章

  1. linux软件包管理详解
  2. VS2015快捷键使用学习总结
  3. Unity使用陀螺仪控制Camera
  4. 剑指offer之求二叉树中两个节点的最低共同父节点
  5. 网络编程之 信号捕捉器(函数指针与回调函数)
  6. 20145228 《信息安全系统设计基础》第九周学习总结 (2)
  7. C语言有某程序入口,C语言入门 — 程序入口
  8. jsp管理系统页面模板_管理后台原型设计分享- 政务管理系统
  9. linux火狐快捷键设置,使用火狐浏览器所有的快捷键大全
  10. c语言的if语句案例,c语言if语句(c语言if语句例子)
  11. ECC RDIMM 服务器内存条简介
  12. ubuntu下cron不执行的常见问题
  13. (附源码)php丽江旅游服务网站 毕业设计 010149
  14. 电蚊香长时间通电引发的86离线语音智能盒子的设计开发
  15. 幻灯片制作“高手”的自我总结
  16. 线上展厅打造视觉亮点
  17. 低代码开发,染发界的白转黑|“低代码”系列(一)
  18. css-doodle学习教程
  19. java编程软件教程_Java编程软件图文版教程,快来看看吧
  20. 墨尔本大学计算机qs排名,澳洲墨尔本大学的QS世界排名多少

热门文章

  1. 云创大数据应邀在2020英特尔数据创新峰会进行方案分享
  2. Java服务器与客户端传文件,java实现上传文件到服务器和客户端.pdf
  3. 电脑设备管理器无端口显示怎么办?
  4. shell脚本——sql连接及其查询结果重定向到txt
  5. java 项目启动异常 Command line is too long.
  6. Appium+Python appium启动夜神模拟器定位元素(三)
  7. mac 打印机设置成黑白打印
  8. Linux系统SCSI磁盘扫描机制解析及命令实例
  9. Instruction Tuning(FLAN、instructGPT、chatGPT)
  10. python梨视频爬虫下载,反反爬