FPGA Xilinx Zynq 系列(一)

2020-12-30 10:29:28 浏览数 (1)

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。

今天给大侠带来FPGA Xilinx Zynq 系列第一篇,基于含有 ARM® Cortex®-A9 的 Xilinx® Zynq®-7000 全可编程片上系统的嵌入式处理器,本系列分享来源于《The Zynq Book》,Louise H. Crockett, Ross A. Elliot,Martin A. Enderwitz, Robert W. Stewart. L. H. Crockett, R. A. Elliot, M. A. Enderwitz and R. W. Stewart, The Zynq Book: Embedded Processing with the ARM Cortex-A9 on the Xilinx Zynq-7000 All Programmable SoC, First Edition, Strathclyde Academic Media, 2016。

引言

这是新一代全面可编程片上系统 (All-Programmable System-on-Chip,SoC)的 Zynq。可别误以为是锌(英文 zinc、元素符号 Zn)那个化学元素啊。其实,这两者之间还是有联系的。有传言说 Xilinx 给他们的新芯片命名为 Zynq,是因为它代表了一个可以用在任何地方的处理器元素。Zynq 芯片致力于成为灵活的、能用于各种应用的强有力的平台,就像锌元素可以与各种其他金属混合形成具有各种所需属性的合金一样。

Zynq 的本质特征,是它组合了一个双核 ARM Cortex-A9 处理器和一个传统 的现场可编程门阵列 (Field Programmable Gate Array,FPGA)逻辑部件。尽管之前也有过捆绑了 FPGA 的专用处理器,但是还没有出现过完全相同的方案。在 Zynq上,ARM Cortex-A9 是一个应用级的处理器,能运行完整的像 Linux 这样的操作系 统,而可编程逻辑是基于 Xilinx 7 系列的 FPGA 架构。这个架构实现了工 业标准的 AXI 接口,在芯片的两个部分之间实现了高带宽、低延迟的连接。这意味着处理器和逻辑部分各自都可以发挥最佳的用途,而不会有在两个分立的芯片之间的那种接口开销。同时又能获得系统被简化为单一芯片所带来的好处,包括物理尺寸和整体成本的降低。

Zynq 不仅仅是硬件。它引人入胜是因为那些软件开发 工具、设计流和专注于标准的集成方法是为基于Zynq的系统设计所量身定制的。大家都喜欢能更快地做出更好的设计的工具!本书会介绍认真开始所必需的全部内容,也会给出一些实际的指导训练以引导新用户通过设计流和设计过程的学习。

1.1 Zynq 的片上系统

既然我们已经把 Zynq 描述为一个片上系统 (SoC),那么显而易见,第一个问 题就会是 “ 什么是 SoC?”

你也许知道,这个概念出现已经有一段时间了,潜在的意思是说单个硅芯片就 可以用来实现整个系统的功能,而不是需要用几个不同的物理芯片来实现。在过去,SoC 这个术语常用于指专用集成电路 (Application Specific Integrated Circuit,ASIC),它上面可以有数字的、模拟的和射频的元件,和混合信号模块组合起来来实现模拟 - 数字转换和数字 - 模拟转换 (ADC 和 DAC)。单就数字部分而言,一块 SoC 可以组合上数字系统所有的功能:处理、高速逻辑、接口、存储器等等。所有这些功能也可以用物理上分立的器件来实现,然后在印刷电路板 (PCB)的层面上组合起来。SoC 的解决方案成本更低,能在不同的系统单元之间实现更快更安全的数据传输,具有更高的整体系统速度、更低的功耗、更小的物理尺寸和更好的可靠性。事实上有一大堆无可辩驳的理由来说明 SoC 比等价的分立元件系统要强!可以看一下图 1.1,这是关于板上系统和片上系统的简单图形化比较。

图 1.1: 板上系统 (上)和片上系统 (下)的比较

基于 ASIC 的 SoC 的主要缺点有 (一)开发时间和成本,以及 (二)缺乏灵活 性。开发 ASIC 时不可重用的工程投入 (及成本)是巨大的,使得这种 SoC 类型只适合于大批量而且将来不需要升级的市场领域。基于 ASIC 的 SoC 的代表性例子包括在 PC、平板和智能手机上用的集成处理器。这些处理器典型地是由至少两个处理器核、存储器、图形处理器、接口和其他功能模块组合起来的,而且大批量生产出来用于寿命有限的产品中。

ASIC SoC 的局限性导致它们不适用于很多应用,特别是当快速投入市场能力、 灵活性和升级能力已经成为重要的关键因素。对于小批量或中批量的产品,ASICSoC 也不是好的解决方案。显然对于更灵活的解决方案是有需求的,这就是产生这种可编程芯片上的系统(System-on-Progammable-Chip)—— 一种在可编程、可重新配置的芯片上实现的特有的 SoC—— 的动力所在。一直以来,FPGA 是自然的选择。FPGA 天生就是可以被配置来实现任何系统的灵活芯片,如果需要也可以来实现嵌入式处理器。FPGA 还可以随心所欲地重新配置,和用 ASIC 来实现 SoC 相比,FPGA能构成更为基础灵活的平台。在一个需要系统升级的应用中部署 FPGA几乎就是没有风险的。现在,Zynq 提供了更理想的用于实现灵活的 SoC 的平台:Xilinx 将其包装成 “ 全可编程 SoC (All-Programmable SoC,APSoC)”,这个词完美地阐述了它的 能力。第二章会仔细阐述 Zynq 的架构,在此之前有必要先从图 1.2 看一下架构的高层模型。从中可以注意到 Zynq 是由两个主要部分组成的:一个由双核 ARM CortexA9 构成的处理系统 (PS),和一个等价于一片 FPGA 的可编程逻辑 (PL)部分。它还具有集成的存储器、各种外设和高速通信接口。PL 部分用来实现高速逻辑、算术和数据流子系统是很理想的,而 PS 支持软件 程序和 / 或操作系统,这就意味着任何被设计的系统的整个功能可以恰当地在硬件和软件之间做出划分。PL 和 PS 之间的链接采用了工业标准的高级可扩展接口(Advanced eXtensible Interface,AXI)连接方式 [8]。这些功能的更详细的资料 会随着本书的展开而呈现。

图1.2: Zynq 架构的简化模型

1.2 嵌入式 SoC 的简单剖析

一开始的时候,有必要明确本书所讨论的数字系统类型的基本模型,就是和处 理器配合的系统、存储器和外设,包括把各种单元连接在一起的总线。(这些就是硬件系统了,此刻我们先考虑一个非常简化的架构,更详细的会在后续的章节中加入进来)。这个硬件系统的模型如图 1.3 所示:

图 1.3: 嵌入式 SoC 的硬件系统架构 (简化版)

处理器可以被看作是硬件系统的中央单元。软件系统 (软件 “ 栈 ”)是运行 在处理器上的,由应用程序 (通常是基于操作系统的)和一个更低的与硬件系统打交道的软件功能层组成的。系统单元之间的通信是通过互联进行的。这种互联可能是直接的、点对点链接,也可能是服务于多个单元的总线。如果是后者,就需要协议来管理总线访问。注意的是,尽管图 1.3 所示是有外设连接着的单一总线,但是一个处理器可以具有多个总线连接。

外设是处理器之外的功能部件,一般来说从事三种功能之一:(一)协处理器 —— 辅助主处理器的单元,往往是被优化用于特定任务;(二)与外部接口交互的核心,如连接到 LED 和开关、编解码器等等;以及 (三)额外的存储器单元。本书后面,我们会更详细地讨论外设,而此刻,只要把外设看作是可被设计、测试和集成进系统、还可以被 “ 封装 ” 以重用的分立的功能块。图 1.4 给出了把图 1.3 所示的硬件系统映射到图 1.2 所描绘的 Zynq 芯片上的样子。两者的架构都被大大地简化了,因为目前我们的目标只是从高层阐述嵌入式SoC是如何映射在 Zynq 芯片上的。PS 具有固定的架构,承载了处理器和系统存储区,而 PL完全是灵活的,给了设计者一面 “ 空白画布 ” 来创建定制的外设,或重用标准外设。互联是通过连接了 PS 和 PL 的 AXI 接口来实现的。

图 1.4: 软件系统、硬件系统和 Zynq 架构之间的关系

在图 1.4 的左边也能看到软件系统。软件是放在处理器那里的,也就是这里位 于 Zynq 的 PS 里的 ARM Cortex-A9。软件系统由一连串的软件单元组成的,这个部分也会在本书的后续部分展开阐述。

1.3. 设计重用

一个完整的嵌入式系统的开发是一个巨大的设计任务,在一个像 FPGA 或 Zynq 芯片这样的平台上从事设计具有特别的优势,这会使得设计的过程更为直接。底层的 PL 硬件是结构化了的,而且它的性能特性是熟知的,并集成进了软件开发工具中了。进一步说,有了这样一个稳定、通用的开发平台,就可以做极为广阔的设计重用。知识产权 (Intellectual Property,IP)功能模块 —— 就是图 1.4 中的外设 部件 —— 可以从 Xilinx 的库获得 (随着设计工具提供)来源,也可以从之前的项目中重用,或是从第三方或是从开源仓库获得,然后再集成起来形成系统的设计。Zynq 是一块 SoC,具有大量的标准 IP,这表明这些部件就不再需要重新设计 了。以这样的方式提升了抽象层级,加上重用预先测试和验证过的部件,开发就能被加速,而成本就能被降低。就像人们常说的:“ 为什么要重新发明轮子呢?”。由于这种做法对于 SoC 设计哲学的重要性,本书的一个重要的内容就是设计重 用。我们会考虑 IP 的各种来源,包括 Xilinx 库、产生自己的 IP 的机制,和第三方IP 来源。当然,仅仅只提及这些模块是不够的 —— 它们还得被集成进系统去,建立起恰当的连接和交互;因此我们还会讨论设计过程中用于IP集成方面的专用的工具和方法。最后,从设计元素的重用和分享角度看,把 IP“ 包装 ” 进工业标准的IP-XACT 格式也将会被提及。这些内容相应地是第十三和第十八章的主题。

1.4. 提升抽象层级

在各种软件和硬件设计过程中都存在的一种递归趋势是提升抽象的层级。动机 很明显:如果对于一个清晰的设计输入,设计师用较低的设计需要就能高效地创造出系统来,同时还支持稳健的测试过程,那这一定能大大加速设计的过程。

以 FPGA 和 Zynq 设计来说,高级合成 (High Level Synthesis,HLS)的优势 在于设计师可以用比传统的寄存器传输级 (Register Transfer Level,RTL)方式 少的细节数据来创建系统部件,而且不再需要依赖设计工具根据用户所提供的方向来推断逻辑并在可能的地方做优化。自然地,这样就需要对开发工具有一定程度的信任,工具必须是强壮的,可以产生出可重复的可信赖的设计。为了满足这样的需要,Xilinx 引入了 Vivado HLS 工具,这是一个专门用于 Xilinx 芯片的高级合成开 发工具。本书后续章节会介绍 Vivado HLS 和相关的设计方法。

1.5. SoC 设计流

对于各种复杂程度的 SoC 设计流,人们提出过多种不同的模型,不过我们首先 打算用非常简单的术语来定义 SoC 开发 (应用于 Zynq 上)的设计流。图 1.5 所示即为基本的流程。这里的每一个部分都会在本书后续的章节中展开并非常细致地加以讨论。而现在,简要的定义它们就够了。自然,和任何设计项目一样,第一个阶段是定义所期望的系统行为,也就是从 一系列需求中创建正确的需求规格。这个阶段被描绘在图的顶端作为起点,它形成了后续开发的系统设计的基础。正如本章早前所提到的,Zynq 架构组合了 ARM 处理器(作为所设计的系统的软 件部分)和 FPGA 部分(主要用于系统的硬件部分,不过如果需要的话,也可以在上面实现另一个处理器)。因此,下一个重要的系统设计阶段就是把期望的功能恰当地划分成硬件和软件,并定义两个部分之间的接口。当然,随着设计师逐步完成系统设计,这个划分还是可以被调整的。划分了系统之后,软件和硬件的开发在很大程度上可以同时进行。就硬件开发而言,任务是标识出实现设计所必须的功能模块,然后通过设计重用和新 IP 开发的某些组合将这些模块组装起来,并在模块间形成正确的连接。类似的,项目的软件功能可以通过开发定制代码或重用之前已有的软件来实现。软件和硬件都需要被验证,这也成为了开发过程中构成整体所必需的和重要的部分。

最后,系统的硬件和软件部分必须按照规划阶段所定义的接口集成起来,然后 来做进一步的 “ 全系统 ” 测试。第三章会仔细讨论这个设计流,而第十章与第十一章会讨论基于 Zynq 的 SoC 设 计。

图 1.5: Zynq SoC 设计流的基本模型

1.6. 实践单元

本书间接形成了一组可以随着正文做的实践练习。这些练习的详细指导和所有 必需的资源文件在伙伴网站上,书上则有每个练习的简要概述,阐述了练习的目的和关键的要点。网站上的详细指导的更新和书是异步的,这样就能保持和 Xilinx 开发工具最新版本的兼容。这些练习可以借助于 Xilinx Vivado 设计套件(Xilinx Vivado Design Suite, 免费的 WebPACK® 或更高版本 [9])在基于 Zynq 的 ZedBoard[11] 来做。如果你愿意,也可以在其他板子上按照实验指导来做。要是你已经有了功能更完整的 Xilinx的嵌入式 (Embedded)版或系统 (System)版的 Vivado 的话,这些版本能提供增强的功能,不过 WebPACK 已经提供了足以用于起步阶段学习的功能。图 1.6 所示是 ZedBoard,这是 Zynq 开发板的一个不错的具有代表性的例子。现存的几种 Zynq 板子,就像这块一样,大多数都实现了多种外设接口和插槽,包括以太网、音频和视频。支持这些功能的可用的 IP 模块和参考设计能够相对较快也较简单地创建第一个交互设计。第三章介绍了如何选择 Zynq 板子,ZedBoard的进一步的细节描述在第六章。

图 1.6: ZedBoard 图

1.7. 关于本书

对于如何使用 Zynq APSoC,本书既给出了描述性的说明,也给出了操作性的指 导。大多数的章节都是标准章节(“ 用于读 ”),同时也有另外一些章节是和实践练习有关的(“ 用于做 ”)。在本书中,我们给出了每个实践环节的简短概述,而详细的指导与资源文件则是由伙伴网站来提供的。这样做是为了能更方便获取资源,同时保证详细的与具体工具相关的指导能随时反映 Xilinx软件开发工具的版本更新,从而与本书的内容是异步的。本书接下去的部分被组织成三个部分,相关的章节如下:

第一部分 给出了 Zynq 芯片的介绍性信息,它相关的工具流,以及 ZedBoard。此外,还要拿 Zynq 和其他芯片做比较,并探究了一些应用作品。第一部分还包括了专门介绍如何在研究、大学教学和社会化培训机构中用上 Zynq 和相关的 SoC 概念的章节。

第二部分 是关于使用 zynq进行 Xilinx SoC开发的相关方面问题的深度解析, 包括嵌入式系统设计的概念、IP 块的创建与集成,以及软硬件协同设计。其中还有一个特殊的“亮点”章节,专注于正在增长中的用于IP快速开发的HLS的重要领域。

第三部分 是关于 Zynq SoC 开发的操作系统的,回顾和讨论了应用程序、动机、 交易、操作系统和产品特性。这里也进一步地深入探讨了在 Zynq 上部署 Linux 的问题,如何把 Linux 与基于 PL 的部分组合起来来形成一个嵌入式系统。本书最后也给出了术语表和缩写表。书中用到了大量的术语和缩写,这两张表应该是有用的参考。接下去的第二章,我们会更为详细地介绍 Zynq 芯片架构。

1.8. 参考文献

说明:所有的 URL 在 2014 年 6 月最后访问过。

[1] ARM, “The ARM Cortex-A9 Processors”, 白皮书 , v2.0, September 2009.

位于 : http://www.arm.com/files/pdf/ARMCortexA-9Processors.pdf

[2] Avnet 网站 .

位于 : http://www.avnet.com

[3] Digilent 网站 .

位于 : http://www.digilentinc.com

[4] M. Dixon, P. Hammarlund, S. Jourdan and R. Singhal, “The Next Generation Intel Core Microarchitecture”, Intel Technology Journal, Vol. 14, Issue 3, 2010. pp. 8 - 29.

[5] M. Santarini, “Xilinx Redefines State of the Art With New 7 Series FPGAs”, Xcell Journal, Third Quarter 2010, pp. 6 - 11. 位于 : http://www.xilinx.com/publications/archives/xcell/Xcell72.pdf

[6] M. Santarini, “Xilinx Unveils Vivado Design Suite for the Next Decade of ‘All Programmable’ Devices”, Xcell Journal, Second Quarter 2012, pp. 8 - 13.

位于 : http://www.xilinx.com/publications/archives/xcell/Xcell79.pdf

[7] Xilinx, Inc., “7 Series FPGAs Overview”, Product Specification, DS180, v.1.15, February 2014.

位于 : http://www.xilinx.com/support/documentation/data_sheets/ds180_7Series_Overview.pdf

[8] Xilinx, Inc., “AXI Reference Guide”, UG761, v14.3, November 2012.

位于 : http://www.xilinx.com/support/documentation/ip_documentation/axi_ref_guide/latest/ug761_axi_reference_guide.pdf

[9] Xilinx, Inc., “Vivado Design Suite”, 网页 .

位于 : http://www.xilinx.com/products/design-tools/vivado/index.htm

[10]Xilinx, Inc., “Zynq 101” 网页 .

位于 : http://www.xilinx.com/products/silicon-devices/soc/zynq-7000/zynq-101.html

[11]ZedBoard 网站 .

位于 : http://www.zedboard.org/

[12]Zynq Book 伙伴网站 .

位于 : http://www.zynqbook.com

END

后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

0 人点赞