热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

Xilinx Zynq-7000 嵌入式系统设计与实现 基于ARM Cortex-A9双核处理器和Vivado的设计方法

  • 1星
  • 2023-07-24
  • 137.29MB
  • 需要1积分
  • 64次下载
标签: fpga

fpga

本书以Xilinx公司的XC7Z020  Zynq-7000  SoC器件和Xilinx*的Vivado  2015.4集成开发环境为平台,全面系统的介绍了嵌入式系统设计的完整设计流程。作者以本书为核心,构建了由公开视频教学资源、设计案例代码、教学课件、QQ交流群等学习资源,以方便广大读者与作者交流互动。

第1章Zynq-7000  SoC设计导论

1.1全可编程片上系统基础知识

1.1.1全可编程片上系统的演进

1.1.2SoC与MCU和CPU的比较

1.1.3全可编程SoC诞生的背景

1.1.4可编程SoC系统技术特点

1.1.5全可编程片上系统中的处理器类型

1.2Zynq-7000  SoC功能和结构

1.2.1Zynq-7000  SoC产品分类及资源

1.2.2Xilinx  Zynq-7000  SoC功能

1.2.3Zynq-7000  SoC处理系统PS的构成

1.2.4Zynq-7000  SoC可编程逻辑PL的构成

1.2.5Zynq-7000  SoC内的互联结构

1.2.6Zynq-7000  SoC的供电引脚

1.2.7Zynq-7000  SoC内MIO到EMIO的连接

1.2.8Zynq-7000  SoC内为PL分配的信号

1.3Zynq-7000  SoC在嵌入式系统中的优势

1.3.1使用PL实现软件算法

1.3.2降低功耗

1.3.3实时减负

1.3.4可重配置计算

1.4Zynq-7000  SoC的Vivado设计流程

1.4.1Vivado的IP设计和系统级设计集成

1.4.2使用RTL或网表的设计流程

1.4.3IP子系统设计

1.4.4嵌入式处理器硬件设计

1.4.5使用模型和高级综合的DSP设计

1.4.6脱离上下文的设计流程

1.4.7I/O引脚规划和布局

1.4.8设计分析和验证

1.4.9器件编程和硬件验证

1.4.10部分可重配置

第2章AMBA协议规范

2.1AMBA规范概述

2.2AMBA  APB规范

2.2.1AMBA  APB写传输

2.2.2AMBA  APB读传输

2.2.3AMBA  APB错误响应

2.2.4操作状态

2.2.5AMBA3  APB信号

2.3AMBA  AHB规范

2.3.1AMBA  AHB结构

2.3.2AMBA  AHB操作

2.3.3AMBA  AHB传输类型

2.3.4AMBA  AHB猝发操作

2.3.5AMBA  AHB传输控制信号

2.3.6AMBA  AHB地址译码

2.3.7AMBA  AHB从设备传输响应

2.3.8AMBA  AHB数据总线

2.3.9AMBA  AHB传输仲裁

2.3.10AMBA  AHB分割传输

2.3.11AMBA  AHB复位

2.3.12关于AHB数据总线的位宽

2.3.13AMBA  AHB接口设备

2.4AMBA  AXI4规范

2.4.1AMBA  AXI4概述

2.4.2AMBA  AXI4功能

2.4.3AMBA  AXI4互联结构

2.4.4AXI4-Lite功能

2.4.5AXI4-Stream功能

第3章Zynq-7000系统公共资源及特性

3.1时钟子系统

3.1.1时钟系统架构

3.1.2CPU时钟域

3.1.3时钟编程实例

3.1.4时钟系统内生成电路结构

3.2复位子系统

3.2.1复位系统结构和层次

3.2.2复位流程

3.2.3复位的结果

第4章Zynq调试和测试子系统

4.1JTAG和DAP子系统

4.1.1JTAG和DAP系统功能

4.1.2JTAG和DAP系统I/O信号

4.1.3编程模型

4.1.4ARM  DAP控制器

4.1.5跟踪端口接口单元TPIU

4.1.6Xilinx  TAP控制器

4.2CoreSight系统结构及功能

4.2.1CoreSight结构概述

4.2.2CoreSight系统功能

第5章Cortex-A9处理器及指令集

5.1应用处理单元概述

5.1.1基本功能

5.1.2系统级视图

5.2ARM处理器架构发展

5.3Cortex-A9中央处理器结构

5.3.1处理器模式

5.3.2寄存器

5.3.3流水线

5.3.4分支预测

5.3.5指令和数据对齐

5.3.6跟踪和调试

5.4Cortex-A9处理器指令集

5.4.1指令集基础

5.4.2数据处理操作

5.4.3存储器指令

5.4.4分支

5.4.5饱和算术

5.4.6杂项指令

第6章Cortex-A9片上存储器系统结构和功能

6.1L1高速缓存

6.1.1高速缓存背景

6.1.2高速缓存的优势和问题

6.1.3存储器层次

6.1.4高速缓存结构

6.1.5缓存策略

6.1.6写和取缓冲区

6.1.7缓存性能和命中速度

6.1.8无效和清除缓存

6.1.9一致性和统一性点

6.1.10Zynq-7000中Cortex-A9  L1高速缓存的特性

6.2存储器顺序

6.2.1普通、设备和强顺序存储器模型

6.2.2存储器属性

6.2.3存储器屏障

6.3存储器管理单元

6.3.1MMU功能描述

6.3.2虚拟存储器

6.3.3转换表

6.3.4页表入口域的描述

6.3.5TLB构成

6.3.6存储器访问顺序

6.4侦听控制单元

6.4.1地址过滤

6.4.2SCU主设备端口

6.5L2高速缓存

6.5.1互斥  L2-L1高速缓存配置

6.5.2高速缓存替换策略

6.5.3高速缓存锁定

6.5.4使能/禁止  L2高速缓存控制器

6.5.5RAM访问延迟控制

6.5.6保存缓冲区操作

6.5.7在Cortex-A9和L2控制器之间的优化

6.5.8预取操作

6.5.9编程模型

6.6片上存储器

6.6.1片上存储器概述

6.6.2片上存储器功能

6.7系统地址分配

6.7.1地址映射

6.7.2系统总线主设备

6.7.3I/O外设

6.7.4SMC存储器

6.7.5SLCR寄存器

6.7.6杂项PS寄存器

6.7.7CPU私有总线寄存器

第7章Zynq-7000  SoC的Vivado基本设计流程

7.1创建新的工程

7.2使用IP集成器创建处理器系统

7.3生成顶层HDL并导出设计到SDK

7.4创建应用测试程序

7.5设计验证

7.5.1验证前的硬件平台准备

7.5.2设计验证的具体实现

7.6SDK调试工具的使用

7.6.1打开前面的设计工程

7.6.2导入工程到SDK

7.6.3建立新的存储器测试工程

7.6.4运行存储器测试工程

7.6.5调试存储器测试工程

7.7SDK性能分析工具

第8章ARM  GPIO的原理和控制实现

8.1GPIO模块原理

8.1.1GPIO接口及功能

8.1.2GPIO编程流程

8.1.3I/O接口

8.1.4部分寄存器说明

8.1.5底层读/写函数说明

8.1.6GPIO的API函数说明

8.2Vivado环境下MIO读/写控制的实现

8.2.1调用底层读/写函数编写GPIO应用程序

8.2.2调用API函数编写控制GPIO应用程序

8.3Vivado环境下EMIO读/写控制的实现

8.3.1调用底层读/写函数编写GPIO应用程序

8.3.2调用API函数编写控制GPIO应用程序

第9章Cortex-A9异常与中断原理及实现

9.1异常原理

9.1.1异常类型

9.1.2异常处理

9.1.3其他异常句柄

9.1.4Linux异常程序流

9.2中断原理

9.2.1外部中断请求

9.2.2Zynq-7000  SoC内的中断环境

9.2.3中断控制器的功能

9.3Vivado环境下中断系统的实现

9.3.1Cortex-A9处理器中断及异常初始化流程

9.3.2Cortex-A9  GPIO控制器初始化流程

9.3.3导出硬件设计到SDK

9.3.4创建新的应用工程

9.3.5运行应用工程

第10章Cortex-A9定时器原理及实现

10.1定时器系统架构

10.1.1CPU私有定时器和看门狗定时器

10.1.2全局定时器/计数器

10.1.3系统看门狗定时器

10.1.4三重定时器/计数器

10.1.5I/O信号

10.2Vivado环境下定时器的控制实现

10.2.1打开前面的设计工程

10.2.2创建SDK软件工程

10.2.3运行软件应用工程

第11章Cortex-A9  DMA控制器原理及实现

11.1DMA控制器架构

11.2DMA控制器功能

11.2.1考虑AXI交易的因素

11.2.2DMA管理器

11.2.3多通道数据FIFO(MFIFO)

11.2.4存储器—存储器交易

11.2.5PL外设AXI交易

11.2.6PL外设请求接口

11.2.7PL外设长度管理

11.2.8DMAC长度管理

11.2.9事件和中断

11.2.10异常终止

11.2.11安全性

11.2.12IP配置选项

11.3DMA控制器编程指南

11.3.1启动控制器

11.3.2执行DMA传输

11.3.3中断服务例程

11.3.4寄存器描述

11.4DMA引擎编程指南

11.4.1写微码编程用于AXI交易的CCRx

11.4.2存储器到存储器传输

11.4.3PL外设DMA传输长度管理

11.4.4使用一个事件重新启动DMA通道

11.4.5中断一个处理器

11.4.6指令集参考

11.5编程限制

11.6系统功能之控制器复位配置

11.7I/O接口

11.7.1AXI主接口

11.7.2外设请求接口

11.8Vivado环境下DMA传输的实现

11.8.1DMA控制器初始化流程

11.8.2中断控制器初始化流程

11.8.3中断服务句柄处理流程

11.8.4导出硬件设计到SDK

11.8.5创建新的应用工程

11.8.6运行软件应用工程

第12章Cortex-A9安全性扩展

12.1TrustZone硬件架构

12.1.1多核系统的安全性扩展

12.1.2普通世界和安全世界的交互

12.2Zynq-7000  APU内的TrustZone

12.2.1CPU安全过渡

12.2.2CP15寄存器访问控制

12.2.3MMU安全性

12.2.4L1缓存安全性

12.2.5安全异常控制

12.2.6CPU调试  TrustZone访问控制

12.2.7SCU寄存器访问控制

12.2.8L2缓存中的TrustZone支持

第13章Cortex-A9  NEON原理及实现

13.1SIMD

13.2NEON架构

13.2.1与VFP的共性

13.2.2数据类型

13.2.3NEON寄存器

13.2.4NEON指令集

13.3NEON  C编译器和汇编器

13.3.1向量化

13.3.2检测NEON

13.4NEON优化库

13.5SDK工具提供的优化选项

13.6使用NEON内联函数

13.6.1NEON数据类型

13.6.2NEON内联函数

13.7优化NEON汇编器代码

13.8提高存储器访问效率

13.9自动向量化实现

13.9.1导出硬件设计到SDK

13.9.2创建新的应用工程

13.9.3运行软件应用工程

13.10NEON汇编代码实现

13.10.1导出硬件设计到SDK

13.10.2创建新的应用工程

13.10.3运行软件应用工程

第14章Cortex-A9外设模块结构及功能

14.1DDR存储器控制器

14.1.1DDR存储器控制器接口及功能

14.1.2AXI存储器端口接口

14.1.3DDR核和交易调度器

14.1.4DDRC仲裁

14.1.5DDR控制器PHY

14.1.6DDR初始化和标定

14.1.7纠错码

14.2静态存储器控制器

14.2.1静态存储器控制器接口及功能

14.2.2静态存储器控制器和存储器的信号连接

14.3四-SPI  Flash控制器

14.3.1四-SPI  Flash控制器功能

14.3.2四-SPI  Flash控制器反馈时钟

14.3.3四-SPI  Flash控制器接口

14.4SD/SDIO外设控制器

14.4.1SD/SDIO控制器功能

14.4.2SD/SDIO控制器传输协议

14.4.3SD/SDIO控制器接口信号连接

14.5USB主机、设备和OTG控制器

14.5.1USB控制器接口及功能

14.5.2USB主机操作模式

14.5.3USB设备操作模式

14.5.4USB  OTG操作模式

14.6吉比特以太网控制器

14.6.1吉比特以太网控制器接口及功能

14.6.2吉比特以太网控制器接口编程向导

14.6.3吉比特以太网控制器接口信号连接

14.7SPI控制器

14.7.1SPI控制器的接口及功能

14.7.2SPI控制器时钟设置规则

14.8CAN控制器

14.8.1CAN控制器接口及功能

14.8.2CAN控制器操作模式

14.8.3CAN控制器消息保存

14.8.4CAN控制器接收过滤器

14.8.5CAN控制器编程模型

14.9UART控制器

14.9.1UART控制器接口及功能

14.10I2C控制器

14.10.1I2C速度控制逻辑

14.10.2I2C控制器的功能和工作模式

14.11ADC转换器接口

14.11.1ADC转换器接口及功能

14.11.2ADC命令格式

14.11.3供电传感器报警

14.12PCI-E接口

第15章Zynq-7000内的可编程逻辑资源

15.1可编程逻辑资源概述

15.2可编程逻辑资源功能

15.2.1CLB、Slice和LUT

15.2.2时钟管理

15.2.3块RAM

15.2.4数字信号处理-DSP  Slice

15.2.5输入/输出

15.2.6低功耗串行收发器

15.2.7PCI-E模块

15.2.8XADC(模拟-数字转换器)

15.2.9配置

第16章Zynq-7000内的互联结构

16.1系统互联架构

16.1.1互联模块及功能

16.1.2数据路径

16.1.3时钟域

16.1.4连接性

16.1.5AXI  ID

16.1.6寄存器概述

16.2服务质量

16.2.1基本仲裁

16.2.2高级QoS

16.2.3DDR端口仲裁

16.3AXI_HP接口

16.3.1AXI_HP接口结构及特点

16.3.2接口数据宽度

16.3.3交易类型

16.3.4命令交替和重新排序

16.3.5性能优化总结

16.4AXI_ACP接口

16.5AXI_GP接口

16.6AXI信号总结

16.7PL接口选择

16.7.1使用通用主设备端口的Cortex-A9

16.7.2通过通用主设备的PS  DMA控制器(DMAC)

16.7.3通过高性能接口的PL  DMA

16.7.4通过AXI  ACP的PL  DMA

16.7.5通过通用AXI从(GP)的PL  DMA

第17章Zynq-7000  SoC内定制简单AXI-Lite  IP

17.1设计原理

17.2定制AXI-Lite  IP

17.2.1创建定制IP模板

17.2.2修改定制IP设计模板

17.2.3使用IP封装器封装外设

17.3打开并添加IP到设计中

17.3.1打开工程和修改设置

17.3.2添加定制IP到设计

17.3.3添加xdc约束文件

17.4导出硬件到SDK

17.5建立和验证软件应用工程

17.5.1建立应用工程

17.5.2下载硬件比特流文件到FPGA

17.5.3运行应用工程

第18章Zynq-7000  SoC内定制复杂AXI  LITE  IP

18.1设计原理

18.1.1VGA  IP核的设计原理

18.1.2移位寄存器IP核的设计原理

18.2定制VGA  IP核

18.2.1创建定制VGA  IP模板

18.2.2修改定制VGA  IP模板

18.2.3使用IP封装器封装VGA  IP

18.3定制移位寄存器IP核

18.3.1创建SHIFTER  IP模板

18.3.2修改定制SHIFTER  IP模板

18.3.3使用IP封装器封装SHIFTER  IP

18.4打开并添加IP到设计中

18.4.1打开工程和修改设置

18.4.2添加定制IP到设计

18.4.3添加xdc约束文件

18.5导出硬件到SDK

18.6建立和验证软件工程

18.6.1建立应用工程

18.6.2下载硬件比特流文件到FPGA

18.6.3运行应用工程

第19章Zynq-7000  AXI  HP数据传输原理及实现

19.1设计原理

19.2构建硬件系统

19.2.1打开工程和修改设置

19.2.2添加并连接AXI  DMA  IP核

19.2.3添加并连接FIFO  IP核

19.2.4连接DMA中断到PS

19.2.5验证和建立设计

19.3建立和验证软件工程

19.3.1导出硬件到SDK

19.3.2创建软件应用工程

19.3.3下载硬件比特流文件到FPGA

19.3.4运行应用工程

第20章Zynq-7000  ACP数据传输原理及实现

20.1设计原理

20.2打开前面的设计工程

20.3配置PS端口

20.4添加并连接IP到设计

20.4.1添加IP到设计

20.4.2系统连接

20.4.3分配地址空间

20.5使用SDK设计和实现应用工程

20.5.1创建新的软件应用工程

20.5.2导入应用程序

20.5.3下载硬件比特流文件到FPGA

20.5.4运行应用工程

第21章Zynq-7000软件和硬件协同调试原理及实现

21.1设计目标

21.2ILA核原理

21.2.1ILA触发器输入逻辑

21.2.2多触发器端口的使用

21.2.3使用触发器和存储限定条件

21.2.4ILA触发器输出逻辑

21.2.5ILA数据捕获逻辑

21.2.6ILA控制与状态逻辑

21.3VIO核原理

21.4构建协同调试硬件系统

21.4.1打开前面的设计工程

21.4.2添加定制IP

21.4.3添加ILA和VIO核

21.4.4标记和分配调试网络

21.5生成软件工程

21.6S/H协同调试

第22章Zynq-7000  SoC启动和配置原理及实现

22.1Zynq-7000  SoC启动过程

22.2Zynq-7000  SoC启动要求

22.2.1供电要求

22.2.2时钟要求

22.2.3复位要求

22.2.4模式引脚

22.3Zynq-7000  SoC内的BootROM

22.3.1BootROM特性

22.3.2BootROM头部

22.3.3启动设备

22.3.4BootROM多启动和启动分区查找

22.3.5调试状态

22.3.6BootROM后状态

22.4Zynq-7000  SoC器件配置接口

22.4.1描述功能

22.4.2器件配置流程

22.4.3配置PL

22.4.4寄存器概述

22.5生成SD卡镜像文件并启动

22.5.1SD卡与XC7Z020接口设计

22.5.2打开前面的设计工程

22.5.3创建级启动引导

22.5.4创建SD卡启动镜像

22.5.5从SD卡启动引导系统

22.6生成QSPI  Flash镜像并启动

22.6.1QSPI  Flash接口

22.6.2创建QSPI  Flash镜像

22.6.3从QSPI  Flash启动引导系统

22.7Cortex-A9双核系统的配置和运行

22.7.1构建双核硬件系统工程

22.7.2添加并互联IP核

22.7.3导出硬件设计到SDK中

22.7.4设置板级包支持路径

22.7.5建立FSBL应用工程

22.7.6建立CPU0应用工程

22.7.7建立CPU1板级支持包

22.7.8建立CPU1应用工程

22.7.9创建SD卡镜像文件

22.7.10双核系统运行和测试

22.7.11双核系统的调试

第23章Zynq-7000  SoC内XADC原理及实现

23.1ADC转换器接口结构

23.2ADC转换器功能

23.2.1ADC命令格式

23.2.3供电传感器报警

23.3XADC  IP核结构及信号

23.4开发平台上XADC接口

23.5在Zynq-7000  SoC内构建数模混合系统

23.5.1打开前面的设计工程

23.5.2配置PS端口

23.5.3添加并连接XADC  IP到设计

23.5.4查看地址空间

23.5.5添加设计约束文件

23.5.6设计处理

23.6使用SDK设计和实现应用工程

23.6.1生成新的应用工程

23.6.2导入应用程序

23.6.3下载硬件比特流文件到FPGA

23.6.4运行应用工程

第24章Linux开发环境的构建

24.1构建虚拟机环境

24.2安装和启动Ubuntu14.04客户机操作系统

24.2.1新添加两个磁盘

24.2.2设置CD/DVD(SATA)

24.2.3安装Ubuntu14.04

24.2.4更改Ubuntu14.04操作系统启动设备

24.2.5启动Ubuntu14.04操作系统

24.2.6添加搜索链接资源

24.3安装FTP工具

24.3.1Windows操作系统下LeapFTP安装

24.3.2Ubuntu操作系统环境下FTP安装

24.4安装和启动SSH和git组件

24.4.1安装和启动SSH组件

24.4.2安装和git组件

24.5安装交叉编译器环境

24.5.1安装32位支持工具包

24.5.2安装和设置SDK  2015.4工具

24.6安装和配置Qt集成开发工具

24.6.1Qt集成开发工具功能

24.6.2构建PC平台Qt环境

24.6.3构建ARM平台Qt环境

第25章构建Zynq-7000  SoC内Ubuntu硬件运行环境

25.1建立新的设计工程

25.2添加IP核路径

25.3构建硬件系统

25.3.1添加和配置ZYNQ7  IP

25.3.2添加和配置VDMA  IP

25.3.3添加和配置AXI  Display  Controller  IP

25.3.4添加和配置HDMI  Transmitter  IP核

25.3.5添加和配置VGA  IP核

25.3.6连接用户自定义IP核

25.3.7添加和配置Processor  System  Reset  IP核

25.3.8连接系统剩余部分

25.4添加设计约束文件

25.5导出硬件文件

第26章构建Zynq-7000  SoC内Ubuntu软件运行环境

26.1u-boot原理及实现

26.1.1下载u-boot源码

26.1.2u-boot版文件结构

26.1.3u-boot工作模式

26.1.4u-boot启动流程

26.1.5编译u-boot

26.1.6链接脚本文件结构

26.2内核结构及编译

26.2.1内核结构

26.2.2下载Linux内核源码

26.2.3内核版本

26.2.4内核系统配置

26.2.5Bootloader启动过程

26.2.6Linux内核启动过程

26.2.7编译内核

26.3设备树原理及实现

26.3.1设备树概述

26.3.2设备树数据格式

26.3.3设备树的编译

26.4文件系统原理及下载

26.5生成Ubuntu启动镜像

26.5.1生成FSBL文件

26.5.2生成BOOT.BIN启动文件

26.5.3制作SD卡

26.5.4复制BOOT.BIN文件

26.5.5复制编译后的内核文件

26.5.6复制编译后的设备树文件

26.5.7复制文件系统

26.6启动Ubuntu操作系统

第27章Linux环境下简单字符设备驱动程序的开发

27.1驱动程序的必要性

27.2Linux操作系统下的设备文件类型

27.3Linux驱动的开发流程

27.4驱动程序的结构框架

27.4.1加载和卸载驱动函数模块

27.4.2字符设备中重要的数据结构和函数

27.5编写Makefile文件

27.6编译驱动程序

27.7编写测试程序

27.8运行测试程序

第28章Linux环境下包含中断机制驱动程序的开发

28.1设计原理

28.2编写包含中断处理的驱动代码

28.2.1驱动程序头文件

28.2.2驱动的加载和卸载函数

27.2.3file_operations初始化

28.3编写Makefile文件

28.4编译驱动程序

28.5测试驱动程序

第29章Linux环境下图像处理系统的构建

29.1系统整体架构和功能

29.2OV5640摄像头性能

29.2.1摄像头捕获模块的硬件

29.2.2SCCB接口规范

29.2.3写摄像头模组寄存器操作

29.2.4读摄像头模组寄存器操作

29.2.5摄像头初始化流程

29.3Vivado  HLS实现拉普拉斯算子滤波算法的设计

29.3.1Vivado  HLS工具的性能和优势

29.3.2拉普拉斯算法与HDL之间的映射

29.4图像处理系统的整体构建

29.5图像处理系统软件的设计

29.5.1Ubuntu桌面系统的构建

29.5.2Qt图像处理程序的开发

29.6嵌入式图像处理系统测试

展开预览

猜您喜欢

评论

xyf2234
感谢楼主,很好看
2024-02-02 17:58:55
G886
比较清晰,谢谢!
2023-07-26 08:44:56
登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×