PART A:开始了解Zynq (前十八篇) 汇总篇
PART B:Zynq SoC & 硬件设计(第十九篇至三十三篇) 汇总篇
PART C:操作系统 & 系统集成(后四篇)汇总篇 暨总汇总篇
1. PART A 开始了解Zynq (前十八篇)
第一章:本系列概述
第二章:Zynq 芯片是什么?
本章概述了 Zynq 芯片的总体架构,并详述了它的两个组成部分:PS 和 PL,以 及介于这两部分之间的接口资源。处理器系统包含了一个双核 ARM Cortex-A9 处理器,带有合成在一个 APU 单元 里的 SIMD 和浮点运算的扩展,另外还有存储器资源。着重介绍了 APU 的能力及其与处理器系统中其他部分的接口。同时也解释了 PS 整体的内部结构,及其与可编程逻辑的连接。概述了可编程逻辑部分的结构和资源,包括逻辑部分、块 RAM 和 DSP48E1 资源, 及接口资源,并说明了 PL 和 PS 之间用 AXI 构成的接口的重要问题。最后,还比较了 Zynq-7000 系列的不同芯片。
第三章:Zynq 设计指南——如何使用它?
本专为入门 Zynq 做准备。我们需要 ( 一 ) 设计工具,( 二 ) 开发板和 ( 三 ) 你的想象力来帮助我们完成入门 ! 我们将 ( 一 ) 和(二)以及创建 Zynq 系统的设计流程和方法放在一起全面并综合地给你讲解。然后 (三)将由你自己决定。这章的另一个重点是我们提及的 Vivado 设计套件的理念,以及它对系统级设 计,IP 集成以及设计重用的定位。这些设计原则与当今的 SoC 系统设计,特别是系统的快速开发的需求十分契合。接下来两章在某种程度上与(三)有关。在了解了 Zynq 的架构和设计过程后, (三)对考虑可能的应用并选择 Zynq 来代替其他器件也是很重要的。
FPGA Xilinx Zynq 系列(六)Zynq 设计指南( 如何使用?) 之 入门
FPGA Xilinx Zynq 系列(七)Zynq 设计指南( 如何使用?) 之 设计流程概述
FPGA Xilinx Zynq 系列(八)Zynq 设计指南( 如何使用?) 之 ISE 和 Vivado 设计套件
FPGA Xilinx Zynq 系列(九)Zynq 设计指南 之 开发板简介
第四章:芯片比较——为什么我需要 Zynq?
本章一开始概述了从系统开发者的角度认为是影响目标芯片(或芯片组)选择 的因素,并列举了很多这样的因素,包括:芯片的架构、配置和性能、商业考量、支持的设计流和开发工具,物理属性和灵活性。带着这些因素,通过与其他系统实现方式作比较而明确使用 Zynq 的原因,就是与用独立的 FPGA 或独立的处理器,以及用分立元件的 FPGA -处理器组合方式都做了比较。大多数嵌入式应用都必须要有处理器资源,所以本章也总结了在 FPGA 里的处理 器的情况,包括了软处理器和硬处理器。用 Zynq 的 ARM 处理器和当前的及过去的几种基于 FPGA 的嵌入式处理器进行比较,可以看到 ARM 胜出所有其他的可能选项。
本章概述了处理器的基本操作,并指出,如果能够找出软件中的并行,那么就有很大的机会和动力来把这些功能重新布局到硬件中去,因为这样做可以实现极大的加速。这样的软 / 硬件划分可以由分立的处理器和分立的 FPGA 组合来实现,但是也讨论了,这样的架构具有它自身的困难,就是两个物理芯片之间所需的接口上存在很多问题。 根据所有这些因素,我们对于 Zynq 在一块集成的芯片上同时实现了高性能处理 和 FPGA 类型的可编程逻辑具有很大的兴趣。这呈现了两个世界的最好的东西,给了设计师很大的灵活性以便根据需要在硬件和软件部件之间划分系统。
FPGA Xilinx Zynq 系列(十)芯片比较 之 比较一:Zynq v.s. FPGA
FPGA Xilinx Zynq 系列(十一)芯片比较 之 比较二:Zynq v.s. 标准处理器
第五章:应用和机会——拿它能做什么 ?
本章精选了一些 Zynq 很适合的应用,从而展示了 Zynq 的广泛的应用能力。本章以实例分析的方式详细描述了三个特别的领域,分别是 SDR、智能系统与网络及图像与视频处理。每个例子都显示灵活性和可扩展性是重要的,因此 Zynq 是一个理想的平台。还着重指出了对不同处理类型的需要:像是计算机视觉这样的应用中,既需要高速、并行计算,也需要在处理器的软件上运行更为 “ 智能 ” 的算法。还介绍了 DPR 技术,说明 DPR 可以提供很多好处,不仅仅是运作灵活性,还给 基于 Zynq 的系统带来成本、功耗和升级能力方面的好处。最后讨论了 Zynq 生态系统,并总结了大量的不断增长的第三方产品 (既有免 费的也有商业的)。要指出的是参与到这个生态系统中来,为资源的提供者构成了商业机会,而对于这些资源的使用者来说,则代表了加速产品设计周期的有价值的机制。
FPGA Xilinx Zynq 系列(十二)应用和机会 之 应用概述
FPGA Xilinx Zynq 系列(十三)应用和机会 之 软件自定义无线电(SDR)
FPGA Xilinx Zynq 系列(十四)应用和机会 之 图像和视频处理,及计算机视觉
FPGA Xilinx Zynq 系列(十五)应用和机会 之 动态片上系统
第六章:The ZedBoard
本章节主要介绍了 ZedBoard, 一款搭载 Zynq XC7Z020 设备的低功耗评估和开发 板。本章中包含了 ZedBoard 的重点特性,同时重点阐述了板卡上多种物理接口以及它们的作用。我们同样看到了设计工具对于 ZedBoard 的特殊支持 (同样对于其他开发板也是),这可以帮助加快设计进程。ZedBoard 一部分目标是鼓励学术和爱好者社区使用 Zynq,因此特别为初学者 入门 Zynq 提供了大量的可用资源。在之前的几页中,我们确认了 ZedBoard 工具包中的内容,解释了如何安装,以及总结了 ZedBoard 入门信息的几个关键来源。之后,我们讨论了 ZedBoard 的社区方面,尤其关注了社区工程,以及论坛之类的,“活的 ” 资源以解决技术问题以及和相同平台内的其他人交换想法。ZedBoard 拥有大量用户,特别是学术机构。在下一章,我们的主题继续聚焦于 Zynq 和 ZedBoard 的教育,研究和练习。
FPGA Xilinx Zynq 系列(十六)The ZedBoard
第七章:教育、研究和培训
本章我们展示了 Zynq 在工科课程体系,尤其是联网的嵌入式系统中的应用能力。值得指出的是 Zynq 和相关的设计工具及开发板可以成为一些相关课题的基础,包括 FPGA 设计、计算机科学和算法实现,以及嵌入式系统设计。我们还看到 Zynq很适合基于项目的学习,通过设计竞赛来提供附加的、外部的激励来源。我们还考察了 Zynq 作为研究平台的潜力,介绍了一些基于 Zynq 做的研究工作 的早期例子。可以期待,更深入的研究会不断出现,更多的项目会完成、传播并激励其他人。我们介绍了 XUP,解释了它对大学教学和研究的支持机制的作用,以及所提供 的支持的类型。在有资格的机构中的教授、教师和研究人员可以成为 XUP 的会员来获得特定的学术资源。最后,我们总结了企业培训的资源,包括 Xilinx 的 ATP 提供的课程和在线视频培训。这些是对较为标准的支持资源的补充,比如在 Xilinx 网站的文档和教程辅导。FPGA Xilinx Zynq 系列(十七)教育、研究和培训
第八章:Zynq 的第一个工程
FPGA Xilinx Zynq 系列(十八)Zynq 的第一个工程
2. PART B Zynq SoC & 硬件设计(第十九篇至三十三篇) 汇总篇
第九章:嵌入式系统和 FPGA
本章我们介绍了嵌入式系统的概念,研究了一般嵌入式系统的架构。我们讨论了嵌入式系统中处理器的角色,还有处理器的一些功能,谈到了比如处理器 cache和执行周期的问题。还介绍了协处理器的功能以及软件 / 硬件中断的使用。嵌入式系统中各个部分之间的通信是依赖于所使用的总线系统的,本章讨论了 总线的功能,也介绍了对于多总线系统的需求,以及总线主机和从机设备之间的区别。还总结了总线仲裁和存储访问技术,并讨论了总线带宽的重要性。
FPGA Xilinx Zynq 系列(十九)Zynq SoC & 硬件设计 之 嵌入式系统和 FPGA
FPGA Xilinx Zynq 系列(二十)嵌入式系统和 FPGA 之 总线
第十章:Zynq 片上系统概述
本章详细解释了 Zynq SoC 的某些特性。介绍并讨论了在 L1 cache 和 PS 之间的 接口的方法和相关的信号。特别关注了在 PL 和 PS 之间实现 cache 一致性数据传输和请求的 ACP 访问点,也介绍了 PL 和 PS 之间的中断接口。讨论了 AXI 互联系统,以及各种数据通路和互联开关,并标识了可用的互联主机和从机。关于 AXI 互联的进一步信息在第 19 章还有。本章最后一节详细讨论了 Zynq SoC 实现的各种存储器接口和控制器,以及中断系统。
FPGA Xilinx Zynq 系列(二十一)Zynq 片上系统概述之接口
FPGA Xilinx Zynq 系列(二十二)Zynq 片上系统概述之存储器
第十一章:Zynq 片上系统的开发
本章介绍了硬件 / 软件划分的概念,就是系统的部件要划分到硬件 (在 PL 中 实现)和软件 (在 PS 上运行)上去。也讨论了剖析的过程,剖析有助于识别出系统中存在于软件的瓶颈。这样的软件功能可以被硬件加速,因此需要在 PL 中实现。Xilinx Vivado HLS 工具可以通过自动把 C/C++/SystemC 写的算法转换成 RTL 代码, 来协助从软件到硬件的迁移。本章还介绍了 Xilinx 提供的 Zynq 软件开发工具,既有用于 Linux 的也有用于裸机的。还介绍了硬件配置工具,比如 Vivado IDE IP Integrator 和 Xilinx Platform Studio。
FPGA Xilinx Zynq 系列(二十三)Zynq 片上系统的开发
第十二章:Zynq SoC 设计的下一步
FPGA Xilinx Zynq 系列(二十四)Zynq SoC 设计的下一步
第十三章:IP 包设计
本章我们介绍了知识产权的概念和 IP 包的使用,以及最近 IP 子系统在业界的趋势。介绍了 Vivado Design Suite 中的各种让你创建和维护自己的 IP 集的方法,包括 HDL、Vivado HLS 和 System Generator。也讨论了 MathWorks HDL coder 这个第三方工具。重点在于对于所创建的所有 IP 的正确文档、仿真和测试的需要上,并且着重突出了前面介绍的所有 IP 创建工具的各种仿真过程。也详细说明了工具中相应带有的文件创建选项。
第十四章:高层综合
本章介绍了高层综合的概念,并且解释了它作为一种设计方法,日益增长的重要性,特别是在 Zynq 和 SoC 设计中。HLS 允许用软件语言在较高的抽象层次上定义算法,然后在高层综合工具的辅助下将这个算法转换成 RTL 描述。这个设计方法能极大地提高在设计能力和验证效果方面的生产率。本章还介绍了 Vivado HLS 工具,也描述了它的设计流。特别指出的是,除了综合本身,Vivado HLS 流还集成了在功能级别做流化验证的手段,而且还能进一步对所产生的 RTL 代码做验证。
第十五章:Vivado HLS: 近视
本章给出了 Vivado HLS 开发工具的详细描述,HLS 提供了从基于 C 的软件描述来快速开发硬件设计的工具。尽管单凭单一章节并没有足够的篇幅来说明这个工具的全部特性,但是我们也涵盖了 Vivado HLS 环境、数据类型的使用 (包括采用任意精度格式的工具)和各 种接口与算法综合的功能,还给出了几个概念性和基于代码的例子来表明我们的观点。 有一个贯穿本章的主题,就是设计者如何能通过使用指令和约束来影响根据输入的 C 代码所做的综合,从而产生出不同的 “ 解决方案 ”。作为这个讨论的一部分,我们总结了关键性能和实现的度量指标,并给出了例子来表明设计者具有怎样能力使用指令来控制这些指标。 最后,本章还指出了在 Vivado HLS 中所产生的设计可以方便地输出以集成进更大的系统项目中,无论是 IP Integrator、XPS 还是 System Generator 都可以。
FPGA Xilinx Zynq 系列(二十七)Vivado HLS: 近视 之 项目剖析
FPGA Xilinx Zynq 系列(二十八)Vivado HLS: 近视 之 算法综合
第十六章:用 Vivado 高层综合 做设计
FPGA Xilinx Zynq 系列(二十九)用 Vivado 高层综合 做设计
第十七章:IP 的创建
本章是实践的内容,关注的是在 Zynq-7000 平台实现的定制 IP 模块的创建。在本章所呈现的实践练习中所用的 IP 创建方法,和第 13 章《IP 包设计》中详细介绍的是一致的。
第十八章:IP 重用与集成
本章介绍了 IP 重用和集成的概念,给出了 Vivado 的以 IP 为中心的设计流和设计的系统层级方法的概述。对各种获取 IP,包括厂家特定的、通用的和开源的 IP的方法做了讨论,并讨论了各种方法的优缺点。 介绍了 Vivado Design Suite 中用于 IP 重用和集成的工具,特别关注的是以 IP 为中心的设计流。讨论了 IP Integrator 和 IP Packager 的功能,也讨论了 IPXACT 这个在 IP 设计、半导体和 EDA 系统设计业界广泛接受的 IP 元数据文档标准。
FPGA Xilinx Zynq 系列(三十一) IP 重用与集成
第十九章:AXI 接口
本章介绍了用于 Zynq 芯片上的 IP 集成的 AMBA AXI4 接口。介绍了各种 AXI4, 以及一些 Xilinx IP 目录中的 IP 应用例子。还着重解释了如何在 Vivado IP Integrator 中利用 AXI 接口来使用 Xilinx IP。
FPGA Xilinx Zynq 系列(三十二)AXI 接口
第二十章:探索 IP Integrator
FPGA Xilinx Zynq 系列(三十三)探索 IP Integrator
3. PART C 操作系统 & 系统集成(后四篇)汇总篇 暨总汇总篇
第二十一章:Zynq 上的操作系统介绍
本章介绍了嵌入式操作系统的概念,以及使用这些操作系统背后的理由。我们描述了各种类型的嵌入式操作系统,以及可能的产品和设备的例子应用。还介绍了多处理器系统的概念。下一章,我们会更深入地看看 Linux 操作系统。
FPGA Xilinx Zynq 系列(三十四)Zynq 上的操作系统介绍
第二十二章:Linux 概览
本章给出了通用 Linux 架构的概述,也讨论了与 Linux 开发有关的一些问题,包括许可和开发工具。
FPGA Xilinx Zynq 系列(三十五)Linux 概览
第二十三章:Linux 内核
本章给出了 Linux 内核的一些基础部分的高层概述。系统调用接口是从内核抽象出来一个用户层的方式。对于内核本身,本章讨论了内存和进程管理、文件系统和设备驱动程序。
FPGA Xilinx Zynq 系列(三十六)Linux 内核
第二十四章:Linux 启动
本章我们看过了桌面环境下的 Linux 的传统的引导过程,这包括对各种阶段的说明,这些阶段有 BIOS、第一和第二级引导装载程序、内核和 init。然后介绍了在 Zynq-7000 AP 芯片上引导嵌入式 Linux 的过程,并与桌面的引导 顺序作了比较。仔细描述了成功完成引导过程所需的各种文件,包括 BOOT.BIN、zImage、devicetree.dtb 和 ramdisk8M.image.gz,还介绍了 BIF 和所需的认证证书的细节。最后,详细说明了用来组成引导映像的 bootgen 工具。