Xilinx Zynq-7000嵌入式系统设计与实现

Xilinx Zynq-7000嵌入式系统设计与实现 pdf epub mobi txt 电子书 下载 2025

何宾,张艳辉 著
图书标签:
  • Zynq-7000
  • 嵌入式系统
  • FPGA
  • SoC
  • ARM
  • 硬件设计
  • 软件开发
  • VHDL
  • Verilog
  • Linux
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121289958
版次:1
商品编码:11967282
包装:平装
丛书名: 电子系统EDA新技术丛书
开本:16开
出版时间:2016-06-01
用纸:胶版纸
页数:744
字数:1190000
正文语种:中文

具体描述

编辑推荐

适读人群 :本书可以作为学习ARM Cortex-A9处理器嵌入式开发,以及Xilinx Zynq-7000 SoC 嵌入式开发的教材、工程参考用书。

? 知识全面 本书内容涵盖ARM Cortex-A9双核处理器的架构、汇编指令集、片上存储器系统、GPIO、中断、定时器、DMA和外设等关键知识点。以Vivado 2015.4集成开发工具为设计平台,全面系统地说明了在Xilinx Zynq-7000 SoC平台上实现嵌入式系统设计的方法,对裸机环境和Linux环境下的嵌入式实现流程进行了详细的说明。此外,在本书中还引入Xilinx的HLS高层次综合工具,说明在片内硬件中使用C语言建模复杂算法的方法。

? 内容先进 在编写本书内容时,参考了ARM公司大学计划提供的Cortex-A9单核/双核处理器的*新教学资料,以及Xilinx公司大学计划提供的Zynq-7000 SoC嵌入式设计教学资料,力图全面反映全球新的嵌入式系统设计理论和实现方法。

? 实例丰富 通过大量的设计实例,以Xilinx公司Vivado 2015.4集成开发环境为平台,基于XC7Z020 SoC器件,详细说明Cortex-A9嵌入式系统的设计和实现方法。全书实例达到近40个,可以满足嵌入式系统教学和自学的需求。

? 软硬融合 在编写本书的过程中,特别强调软件硬件协同设计、协同仿真和协同调试的嵌入式系统设计新方法。同时,也突出体现以IP核为中心的系统级软件硬件相融合的设计思想。


内容简介

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

作者简介

何宾 著名的嵌入式技术和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商大学计划保持紧密合作。目前已经出版嵌入式和EDA方面的著作近30部,内容涵盖电路仿真、电路设计、可编程逻辑器件、数字信号处理、单片机、嵌入式系统、片上可编程系统等。典型的代表作有《Xilinx FPGA数字设计-从门级到行为级的双重描述》、《STC单片机原理及应用》、《Altium Designer15.0电路仿真》、《STC单片机C语言程序设计》等。

目录

第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嵌入式图像处理系统测试

前言/序言

序言


本书是在作者已经出版的《Xilinx All Programmable Zynq-7000 SoC设计指南》一书的基础上进行大幅度修订而成的。在本书修订的过程中,汲取了广大读者的参考意见。修订后本书的特色主要包含:


(1)本书大幅度增加了ARM Cortex-A9基本知识的讲解,包括指令集、处理器架构等方面的内容,降低读者阅读本书的入门门槛;


(2)本书大幅度增加了ARM Cortex-A9应用和设计实例,包括MIO和EMIO、定时器、中断、DMA、NEON等,帮助读者进一步全面掌握ARM Cortex-A9处理器的使用方法;


(3)本书开发环境使用了Xilinx最新的Vivado2015.4集成开发环境,使得本书能反映出Vivado集成开发环境的最新特性;


(4)本书大幅度增加了Ubuntu操作系统在嵌入式系统中的应用实例,使得读者系统掌握Ubuntu构建、驱动程序开发,以及Qt应用程序开发的全部流程。


在修订本书的过程中,有更多新的体会,在此愿意与广大读者分享。


(1)Xilinx推出的Zynq-7000 SoC器件是异构架构的典型代表,即把专用的嵌入式ARM Cortex-A9双核处理器和通用的大规模现场可编程门阵列FPGA结合在单个芯片中,将专用处理器的串行执行和FPGA的并行执行完美结合,为解决未来大数据处理、人工智能等复杂高性能算法处理铺平了道路。


(2)新的设计工具的推出,比如Vivado HLS,SDSOC等,更加注重嵌入式系统的系统级建模,对未来设计方法将产生深远的影响。通过HLS工具,用户只需要编写C语言代码,就可以让工具自动转换和生成HDL代码,显著地提高了设计效率,缩短了开发周期。


(3)随着异构架构和片上系统技术的不断发展,协同设计、协同仿真和协同调试将成为未来嵌入式系统开发者必须具备的品质。所谓的协同,要求设计者必须同时掌握软件和硬件知识,这与传统上软件和硬件分离的设计方法有着本质的区别。


(4)特别值得一提的是,在2016年初Xilinx最新量产的Zynq UltraScale+ MPSoC采用了台积电的16nm工艺,将ARM的Cortex-A53四核处理器、ARM的Cortex-R5双核处理器、ARM的Mali-400 MP2 GPU及超大规模FPGA资源集成在单芯片中,为未来高性能数据中心提供强大的支持,进一步改善了数据中心的处理能力,可以预见越来越多的搜索引擎公司、电商平台及互联网企业等都会使用这种平台加速海量数据的处理。


(5)由于半导体技术的不断发展,使得电子系统从传统的PCB板级进化到了芯片级,这对嵌入式系统的小型化、低功耗和可靠性的改善都提供了强大的保障,这也是未来嵌入式系统发展的潮流。


本书在修订的过程中,突出体现ARM的嵌入式和Xilinx最新的Vivado设计工具,所涵盖的内容是作者所出版图书中最多的,全书内容达到29章之多。在编排本书内容时,分成下面几大部分。


(1)设计导论是本书中最基础的内容,目的要介绍Zynq-7000 SoC的架构、优势、设计方法,以及Vivado2015.4集成开发环境流程。


(2)ARM AMBA规范是读者理解和掌握ARM Cortex-A9架构必须要知道的基本知识,掌握这些知识对于读者能顺利学习本书后续章节非常关键。


(3)系统介绍Zynq-7000 SoC内PS所有功能部件的原理及使用方法,内容包括:Cortex-A9处理器架构、Cortex-A9指令集、片上存储器系统、设计流程、MIO/EMIO操作、中断和异常、定时器、DMA、安全性扩展、NEON、外设模块。


(4)系统介绍Zynq-7000 SoC内PL的资源及Zynq-7000 SoC内的互联结构,使得读者可以清楚地了解并掌握在异构架构下,Cortex-A9专用处理器与PL内定制外设实现满足不同要求的连接方法。


(5)系统介绍在Zynq-7000 SoC内PL通过GP、HP和ACP,构建不同定制外设,满足不同数据处理和传输性能要求的方法。


(6)系统介绍基于Ubuntu操作系统构建嵌入式系统的方法,包括:Linux开发环境的构建、Zynq-7000 SoC内Ubuntu硬件运行环境的构建、Zynq-7000 SoC内Ubuntu软件运行环境的构建、驱动程序的开发以及基于Ubuntu构建图形处理系统。


在编写本书的过程中,特别感谢Xilinx公司大中华区大学计划经理陆家华、ARM公司亚太区大学计划经理陈炜、Xilinx公司亚太区传媒经理张俊伟给予的大力支持和帮助,也感谢Xilinx公司各位热心的技术支持给予的无私帮助。集宁师范学院物理系聂阳老师参与编写本书的第1-3章,作者的研究生张艳辉帮助作者设计和验证本书所有章节的设计案例,研究生李宝隆编写了本书第4-5章的内容,本科生汤宗美参与整理并编写了本书所有配套的教学资源。在本书出版的过程中,得到电子工业出版社领导和编辑的大力支持和帮助,在此也一并向他们表示感谢。




何宾2016年5 月于北京




学 习 说 明


Study Shows






本书提供的教学视频、教学课件、设计文件、硬件原理图、使用说明下载地址


北京汇众新特科技有限公司技术支持网址:


http://www.edawiki.com


注意:所有教学课件及工程文件仅限购买本书读者学习使用,不得以任何方式传播!




本书作者联络方式


电子邮件:hb@gpnewtech.com




购买硬件事宜由北京汇众新特科技有限公司负责


公司官网:http://www.gpnewtech.com


市场及服务支持热线:010-83139176, 010-83139076




《嵌入式系统开发实战:基于ARM Cortex-A9与FPGA异构计算》 一、 导言:拥抱异构计算的时代浪潮 在当今电子信息产业蓬勃发展的时代,嵌入式系统已渗透到我们生活的方方面面,从智能手机、汽车电子到工业自动化、医疗设备,无处不在。然而,随着应用需求的日益复杂化和性能瓶颈的不断出现,传统的单一处理器架构已难以满足高效、低功耗、高灵活性的要求。异构计算,即将不同类型的处理器(如CPU、GPU、FPGA等)集成在一起,协同工作,以发挥各自优势,成为解决这些挑战的关键。 本书聚焦于一种极具代表性的异构计算平台——集成了ARM Cortex-A9应用处理器和FPGA(现场可编程门阵列)的SoC(System-on-Chip)设备,通过深入浅出的讲解和详实的实践案例,引领读者踏上嵌入式系统开发实战的征程。我们将不仅仅局限于理论的探讨,更侧重于将理论知识转化为实际的开发技能,让读者能够独立设计、实现并优化复杂的嵌入式系统。 二、 ARM Cortex-A9 应用处理器:软件开发的强大引擎 ARM Cortex-A9处理器以其优异的性能、低功耗和成熟的生态系统,成为高性能嵌入式应用处理器的翘楚。在本书中,我们将系统性地梳理ARM Cortex-A9处理器的核心架构、指令集以及与之相关的软件开发工具链。 架构解析与指令集理解: 我们将从微架构层面深入理解Cortex-A9的工作原理,包括流水线、缓存机制、分支预测等。在此基础上,详细讲解ARMv7-A架构的指令集,包括数据处理指令、分支指令、加载/存储指令等,并辅以实际代码示例,帮助读者建立对底层汇编语言的直观认识。这将是理解操作系统、驱动程序以及性能优化的基础。 操作系统移植与驱动开发: 对于嵌入式系统而言,操作系统是承载应用软件运行的基石。我们将重点关注Linux操作系统,演示如何在Cortex-A9平台上进行Linux的交叉编译、内核配置、根文件系统构建以及启动流程。同时,将深入探讨设备驱动程序的开发,包括字符设备、块设备、网络设备驱动的编写,以及如何与硬件进行交互。通过实际案例,如GPIO、UART、SPI、I2C等外设的驱动开发,让读者掌握驱动开发的通用方法和技巧。 嵌入式Linux应用开发: 基于Linux操作系统,我们将教授读者如何使用C/C++等主流编程语言进行嵌入式应用开发。内容将涵盖多线程编程、进程间通信、内存管理、网络通信(Socket编程)等关键技术。本书还将介绍一些常用的嵌入式Linux开发框架和库,例如Qt for Embedded、GTK+等,以及如何利用它们快速构建用户友好的图形界面应用。 性能调优与调试技巧: 掌握高性能开发是嵌入式工程师必备的技能。我们将介绍各种性能分析工具,如perf、gprof等,以及如何利用它们识别性能瓶颈。此外,还将详细讲解调试技术,包括GDB的使用、JTAG调试、逻辑分析仪的应用等,帮助读者高效地定位和解决软件开发中遇到的各种问题。 三、 FPGA:硬件加速的灵活战场 FPGA(Field-Programmable Gate Array)作为一种高度灵活的可编程逻辑器件,为嵌入式系统带来了前所未有的硬件加速和定制化能力。其并行处理的特性使其在图像处理、信号处理、通信协议加速、人工智能推理等领域展现出巨大的潜力。 FPGA基础理论与硬件描述语言(HDL): 本部分将系统性地介绍FPGA的基本原理,包括查找表(LUT)、触发器(Flip-Flop)、布线资源等。我们将重点讲解两种主流的硬件描述语言:Verilog和VHDL。通过大量的代码示例,详细阐述HDL的语法、结构、时序建模以及常用逻辑电路的设计方法,例如组合逻辑电路(加法器、多路选择器等)和时序逻辑电路(计数器、移位寄存器等)的设计。 IP核的使用与IP集成: 在FPGA开发中,合理利用现有的IP(Intellectual Property)核可以极大地提高开发效率。我们将介绍如何查找、评估和使用厂商提供的IP核,例如DDR控制器、Ethernet MAC、PCIe接口等。同时,还将深入讲解IP的集成方法,以及如何通过IP Integrator等工具将不同的IP核连接起来,构建复杂的系统。 HDL综合、布局布线与时序分析: 从HDL代码到最终的FPGA比特流文件,需要经过一系列的综合、布局布线和时序分析过程。本书将详细介绍这些过程的工作原理和关键参数,以及如何使用Xilinx Vivado等主流FPGA开发工具进行操作。重点讲解如何优化设计以满足时序约束,避免时序违例,确保电路的稳定运行。 FPGA性能优化与片上调试: 类似于软件开发,FPGA设计也存在性能优化的问题。我们将探讨各种优化策略,如流水线技术、并行化处理、资源共享等,以提升FPGA的吞吐量和效率。此外,还将介绍片上调试技术,如ILA(Integrated Logic Analyzer)的使用,帮助读者在硬件上实时观测信号,分析和定位逻辑错误。 四、 异构系统集成与SoC协同设计 异构计算的魅力在于将CPU和FPGA的优势结合起来,实现软硬件协同优化。本书将重点讲解如何有效地集成ARM Cortex-A9和FPGA,构建一个高性能、高灵活性的嵌入式SoC系统。 SoC架构与接口设计: 我们将深入剖析典型的SoC架构,理解CPU和FPGA之间的互联方式,例如AXI(Advanced eXtensible Interface)总线协议。详细讲解如何设计高效的接口,实现CPU与FPGA之间的数据传输和控制。 软硬件协同设计流程: 异构系统的设计是一个软硬件协同的过程。我们将引导读者了解完整的软硬件协同设计流程,包括系统需求分析、软硬件功能划分、接口定义、IP核选择与定制、软件开发与硬件实现并行推进,以及最终的系统集成与验证。 硬件加速应用案例: 为了让读者更直观地理解异构计算的威力,本书将提供一系列精心设计的硬件加速应用案例。例如: 图像处理加速: 利用FPGA实现图像滤波、边缘检测、人脸识别等算法,从而大幅提升处理速度,减轻CPU的负担。 信号处理与通信: 设计FPGA模块实现高性能的FFT(快速傅里叶变换)、调制解调等算法,应用于通信系统或数据采集。 机器学习推理加速: 将低功耗的神经网络模型部署到FPGA上,实现高效的AI推理,例如物体检测、语音识别等。 定制化硬件接口: 为特定应用场景设计专用的硬件接口,例如高速数据采集、工业控制协议等。 系统验证与测试: 系统的正确性和稳定性是至关重要的。我们将介绍多种系统验证和测试方法,包括单元测试、集成测试、系统级测试,以及如何利用仿真工具和实际硬件进行全面的验证。 五、 进阶主题与未来展望 在掌握了异构系统开发的基础知识后,本书还将触及一些进阶主题,为读者未来的深入学习和职业发展打下基础。 低功耗设计与优化: 在许多嵌入式应用中,功耗是一个关键的考量因素。我们将探讨在CPU和FPGA层面实现低功耗设计的策略和技术。 实时操作系统(RTOS)在异构系统中的应用: 探讨如何将FreeRTOS等实时操作系统集成到异构系统中,以满足对实时性要求更高的应用。 嵌入式AI与边缘计算: 结合FPGA的硬件加速能力,我们将探讨如何在嵌入式设备上实现更强大的AI功能,并展望边缘计算的未来发展。 安全与加密: 介绍如何在嵌入式系统中实现硬件加速的安全功能,例如加密解密、身份认证等。 六、 结语 《嵌入式系统开发实战:基于ARM Cortex-A9与FPGA异构计算》旨在为读者提供一个系统、全面且实践导向的学习平台。我们相信,通过本书的学习,读者不仅能够深入理解嵌入式系统开发的精髓,更能够掌握将先进的异构计算技术应用于实际项目中的核心能力,从而在快速发展的嵌入式技术领域中脱颖而出,创造无限可能。

用户评价

评分

我是一名硬件工程师,之前主要专注于传统的ASIC或FPGA项目,主要使用Verilog/VHDL进行纯逻辑设计,或者进行FPGA的逻辑功能实现。然而,随着嵌入式系统对集成度和智能化要求的不断提高,我发现许多项目都倾向于采用SoC(System on Chip)解决方案,而Xilinx Zynq-7000系列正是这一领域的佼佼者。这让我对如何在一个芯片内集成CPU和FPGA感到非常好奇,同时也意识到这需要一种全新的设计思维和工具链。这本书的出现,对我来说是一个绝佳的学习机会。我希望能看到书中详细阐述Zynq-7000的PS和PL之间的接口设计,特别是AXI总线协议在不同IP核之间的通信机制。此外,我对于如何将FPGA设计集成到PS的系统中,以及如何进行软件和硬件的协同调试,有着浓厚的兴趣。如果书中能提供一些关于如何选择合适的IP核,以及如何利用IP Integrator等工具来构建系统框架的指导,那对我来说将是极大的帮助。我也期待书中能够涵盖一些实际的硬件加速设计案例,例如利用FPGA实现高性能的DSP算法,或者进行图像信号的实时处理,并说明如何将这些加速模块无缝集成到ARM处理器驱动的系统中。

评分

作为一名对新兴技术充满好奇的科技爱好者,我对Xilinx Zynq-7000这种将ARM处理器和FPGA融合的SoC技术感到非常着迷。它似乎是通往未来高性能嵌入式设备的桥梁,能够实现软件的灵活性和硬件的极致性能。我一直对Zynq-7000芯片的内部究竟是如何构造的,以及工程师是如何将这两种截然不同的技术集成在一起并发挥出最大效用的感到好奇。我非常希望这本书能够以一种相对易懂的方式,向我这样的读者介绍Zynq-7000的整体架构,特别是PS(Processing System)和PL(Programmable Logic)各自承担的功能,以及它们之间是如何“对话”的。我期待看到书中能够用生动的图解和比喻来解释复杂的概念,例如AXI总线的工作原理,或者FPGA如何被“编程”来执行特定的任务。此外,我对于学习如何使用Xilinx提供的开发工具链,比如Vivado和Vitis,来构建和运行一个简单的Zynq-7000项目也充满期待。如果书中能够提供一些基础的案例,例如如何点亮一个LED,或者如何通过串口发送一段文字,即使是最简单的例子,也足以点燃我进一步探索的兴趣。我希望这本书能够让我对Zynq-7000有一个整体的认识,并激发我对其更深入的了解和学习。

评分

这本书我一直想入手,因为我最近在关注嵌入式领域,特别是FPGA和ARM SoC的结合应用。Xilinx Zynq-7000这个系列芯片的定位和性能一直让我觉得非常有潜力,在很多高性能嵌入式产品中都有它的身影。所以,看到这本书的出现,我感觉像是找到了打开Zynq-7000世界的一把金钥匙。我特别期待书中能详细讲解Zynq-7000的内部架构,比如PS(Processing System)和PL(Programmable Logic)是如何协同工作的,它们之间的数据交换和控制机制又是怎样的。这对于理解整个系统的设计思路至关重要。此外,作为一本“设计与实现”的书,我希望它能够提供丰富的实际案例,从硬件平台搭建到软件驱动开发,再到应用层的具体实现,能够有循序渐进的指导。特别是关于如何利用Vivado工具链进行FPGA逻辑设计,以及如何与ARM Cortex-A9处理器协同开发,这些都是我非常感兴趣的点。如果书中能包含一些关于性能优化、功耗管理以及系统调试方面的技巧,那就更加完美了。毕竟,在实际的项目开发中,这些往往是决定成败的关键因素。我希望这本书能够让我从一个初学者迅速成长为一个能够独立完成Zynq-7000项目的设计者。

评分

我是一名从事了几年嵌入式Linux开发的工程师,平时接触的主要是基于ARM Cortex-A系列处理器的通用嵌入式平台,例如树莓派或者一些工控板。但最近在接触一些对数据处理速度和并行计算要求较高的项目时,Xilinx Zynq-7000这个名字频繁地出现在我的视野中。它独特的PS/PL异构架构,能够将强大的ARM处理器和灵活的FPGA可编程逻辑集成在同一颗芯片上,这给我留下了深刻的印象,也让我看到了解决现有技术瓶颈的希望。我一直想深入了解Zynq-7000系列,特别是如何有效地利用FPGA的并行计算能力来加速特定任务,同时又能够利用ARM处理器来处理通用的操作系统任务和应用程序。这本书的出现,让我觉得是一个非常好的学习契机。我特别关注书中是否会深入讲解AXI接口的总线协议,以及如何在PS和PL之间进行高效的数据传输。此外,关于如何利用SDK(Software Development Kit)或者Vitis(如果更新的话)进行软件和硬件协同开发,也极大地吸引了我。如果书中能提供一些实际的硬件加速案例,比如图像处理、信号分析或者通信协议的实现,那将对我非常有启发。我希望这本书能够帮助我打开新的技术视野,并将其应用到我的实际工作中。

评分

作为一个在校的电子工程专业学生,我目前正在学习嵌入式系统和FPGA的相关课程。Xilinx Zynq-7000系列芯片因其高性能和广泛的应用前景,是我们课程学习中经常提及的重点。对于我们学生而言,一本理论与实践相结合的书籍至关重要,它能够帮助我们巩固课堂上学到的知识,并将其转化为实际的设计能力。我非常期待这本书能够从最基础的概念讲起,循序渐进地介绍Zynq-7000的整体架构,包括PS部分(ARM A9处理器、外设接口等)和PL部分(可配置逻辑块、DSP单元、Block RAM等)的功能和特点。更重要的是,我希望能看到详细的开发流程讲解,比如如何使用Xilinx Vivado进行HDL(硬件描述语言)设计,如何进行综合、实现和布局布线,以及如何生成Bitstream文件。同时,对于PS部分的软件开发,我也希望书中能有相应的指导,包括嵌入式Linux的移植、驱动程序的编写以及用户应用程序的开发。如果书中能包含一些经典的Zynq-7000应用案例,例如一个简单的ADC数据采集与FPGA并行处理系统,或者一个基于TCP/IP的通信模块,这将极大地帮助我们理解理论知识在实际项目中的应用,并为我们未来的毕业设计或者科研项目打下坚实的基础。

评分

发货很快,不错

评分

不错的书,纸质好,正急要这样的书!

评分

书是正版,学习zynq 架构的好书

评分

好好好好好好

评分

好用,功能多,非常好用,值得推荐!

评分

字体排版不好看

评分

速度很快,京东自营就是好。

评分

适合初学

评分

可以

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有