北京汇众新特科技有限公司 >> Xilinx Zynq-7000嵌入式系统设计与实现:基于ARM Cortex-A9双核处理器和Vivado的设计方法 >> 历史版本
编辑时间历史版本内容长度图片数目录数修改原因
2016-06-24 17:52 历史版本7 39301 1 0 修正错误
上一历史版本 | 最新历史版本 |   下一历史版本 | 返回词条

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

Xilinx All Programmable Zynq-7000 SoC设计指南Xilinx All Programmable Zynq-7000 SoC设计指南

 

编辑推荐

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

内容推荐

作者简介

何宾 著名的嵌入式技术和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商大学计划保持紧密合作。目前已经出版嵌入式和EDA方面的著作近30部,内容涵盖电路仿真、电路设计、可编程逻辑器件、数字信号处理、单片机、嵌入式系统、片上可编程系统等。典型的代表作有《Xilinx FPGA设计权威指南》、《Altium Designer13.0电路设计、仿真与验证权威指南》、《Xilinx FPGA数字设计-从门级到行为级的双重描述》、《Xilinx FPGA数字信号处理权威指南-从HDL、模型到C的描述》、《模拟与数字系统协同设计权威指南-Cypress集成开发环境》、《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 SoC技术,推动中国创新事业
新年伊始,获悉北京化工大学何宾教授的《Xilinx All Programmable Zynq-7000SoC设计指南》图书即将完稿出版, 我感到非常振奋。
从诞生至今, 赛灵思一直都是行业的先锋企业, 29年来引领了众多的行业创新。在过去的两年中,赛灵思最为自豪的,就是自28nm产品推出以来公司所实现的众多的行业第一, 其中包括:
(1) 行业第一个All Programmable SoC Zynq-7000系列。该系列的发布为行业带来了软件和硬件全面可编程的SoC平台。
(2) 行业第一个3D IC。 该产品的发布使得半导体制造业突破了摩尔定律的限制。已经量产的Virtex-7 2000T 3DIC是目前半导体历史上最大的IC, 拥有68亿个晶体管。
(3) 行业第一个异构3D IC。该3D IC 让28nm FPGA功能和40nm 28G SerDes收发器功能得以完美集成,成为行业第一个拥有400G吞吐能力的单芯片。
(4) 行业第一个把高层次综合能力引入到All ProgrammableFPGA设计流程中,使得FPGA工程师能够通过构建基于C/C++/System C的模型而转换硬件实现。
(5) 打造行业第一个面向未来10年All Programmable 设计的新一代环境: Vivado DesignSuit,把集成和实现的速度提高4倍以上,大大提升了工程设计的生产力。
(6) Zynq加HLS (赛灵思高层次综合工具), 让系统设计工程师能够基于All ProgrammableSoC实现软硬件的协同设计,大幅缩短了其产品的上市进程。
所有这些赛灵思所创造的行业领先产品和技术, 让赛灵思能够为工程业界提供领先一代的价值优势,帮助工程师们充分释放其创造和创新的巨大潜能。
芯片平台进入门坎一直是局限中国信息行业发展的瓶颈,赛灵思的28nm All Programmable产品, 尤其是其Zynq系列,对于中国的工程师们来说,是一个非常合适且高效的平台, 可以支持他们实现精彩纷呈的行业创新。我很高兴中国的教授能够如此迅速地发现ZynqAll Programmable SoC的价值,并率先出版拥有大量实例的、理论和实践相结合的中文设计指南。这些图书将加速中国工程师借助Zynq 平台把创意变成现实,推动中国的创新事业。
更智能的专业化软硬件平台,将是嵌入式系统的未来。而Zynq All Programmable SoC,就是这样一个专业的、跨学科、跨产业、跨时空、和跨职业生涯的强大软硬件平台,不仅将加速中国学术界创新人才培养,而且还将在推动工业界的创新方面扮演重要的角色!
最后, 我再次对何教授及相关作者在该书出版上所做的努力表示诚挚的谢意!

ARM公司中国区大学计划经理时昕


紧密结合ARM与FPGA技术,致力中国智造
首先,恭喜北京化工大学何宾教授写作完成的《Xilinx Zynq-7000 All Programmable SoC平台设计指南》系列图书即将出版。
ARM公司自1990年诞生以来,一直致力于为芯片的设计开发提供领先的半导体知识产权(IP),全球有超过250家公司在ARM处理器IP的基础上开发出了数以百计的各类芯片。ARM在全球合作伙伴数量(包括世界领先的半导体公司和系统公司)也已经超过了1000个。
2012年,全球领先FPGA厂商赛灵思(Xilinx)公司与ARM合作,推出的Zynq-7000系列产品,完美的将ARM®双核Cortex?-A9MPCore? 处理系统与赛灵思可扩展的28nm可编程逻辑构架结合在一起。该系列采用了业界事实标准的AMBA®总线作为片上系统的互连总线,可支持双核Cortex-A9 处理器系统以及可编程逻辑中定制加速器和外设的并行开发。
作为行业内第一款集成了Cortex?-A系列内核的软、硬件全面可编程的平台,我们非常自豪能够参与和见证这一技术上的创新。同时,我们也非常高兴的看到FPGA的用户将可以从ARM生态中丰富的软、硬件资源中获益。相信Zynq-7000系列的推出,一定会给中国的工程师们提供一个更强大的工作和创新平台。
何宾老师基于该产品撰写的《Xilinx All ProgrammableSoC设计指南》,从片上系统(SoC)设计导论开始,继之以AMBA®片上总线规范以及Cortex?-A9处理器内核的说明,之后在详细描述Zynq-7000系列芯片特点的基础上系统介绍了如何基于Zynq的丰富资源与特性进行软硬件的协调开发。下册则提供了非常丰富的设计实例来说明设计流程和方法。
作为ARM大学计划的一员,我非常高兴的看到Zynq-7000系列开发平台已经走入了大学,成为大学生们学习和研究的工具。在校大学生是未来优秀工程师的主力军,何宾老师撰写的可编程平台设计指南,把行业内领先的技术带进了大学的课堂,这对优秀人才的培养以及国内半导体技术的发展都有着重大的意义。
相信本书的出版发行定能够对于芯片设计、嵌入式系统乃至计算机软硬相关学科的教学与科研提供很好的平台和参考。
 

在线试读部分章节


《Xilinx All Programmable Zynq-7000SoC设计指南》是作者耗时半年多时间后,献给广大读者的又一本反映最新Xilinx可编程技术的著作。在该书编写的过程中感触颇多,愿于广大读者在此一起分享这些心得:
1.当Xilinx将ARM公司的双核Cortex-A9处理器嵌入到FPGA芯片内,并结合最新的28纳米工艺,制造出全新一代的可编程SoC平台后,起名叫EPP,即可扩展的处理平台,后来又改成AllProgrammable平台。在这个名字变化的过程中,反映了Xilinx给这个最新Zynq设计平台的定位,即:平台侧重于嵌入式系统的应用,未来的可编程逻辑器件向着嵌入式处理方向发展,即传统的可编程逻辑器件未来称为嵌入式处理元素。未来的嵌入式系统“硬件”和“软件”将根据应用的要求,真正的变成AllProgrammable(以下称为全可编程),即:可以在单芯片内设计满足特定要求的硬件平台和相应的软件应用。在这个全可编程的实现过程中,体现着软件和硬件协同设计、软件和硬件协同调试、软件的串行执行和硬件逻辑的并行执行完美结合、未来的嵌入式系统是“积木块”的设计风格等设计思想。这些设计理念将在Zynq-7000平台上由理想变成实现。
 
2.Zynq-7000器件是最新半导体技术、计算机技术和电子技术的一个结合体。在一个小小的半导体硅片上却集成了当今最新的信息技术。基于Zynq-7000平台进行高性能的嵌入式实现,需要微电子、数字逻辑、嵌入式处理器、计算机接口、计算机体系结构、数字信号处理等相关的知识。表面上看,Zynq-7000是一个比较复杂的系统。但是,是对一个设计者基础理论知识和系统级设计能力的一个真正的考察。在这个平台上实现嵌入式系统的应用,体现着自顶向下的一体化设计理念。
   3.Zynq-7000平台是非常好的教学平台、科研平台和应用平台。作为教学平台,可以在这个平台上实现全过程的计算机相关课程的教学,使得学生可以清楚地看到每个实现的具体过程。这样,学生就可以真正地理解嵌入式系统的内涵;作为科研平台,从事嵌入式相关技术研究人员,可以在这个全开放的平台上,将算法进行高性能的实现。并且,可以在这个平台上实现很多设计的性能分析等研究;作为应用平台,该平台的应用将进一步的提高嵌入式系统的灵活性和可靠性、大大降低设计成本,提高了产品的市场竞争力。
   为了更好的帮助读者学习和掌握Zynq全可编程平台的设计原理和实现方法。全书共23章,按照Zynq-7000基础理论篇、Zynq-7000体系结构篇和Zynq-7000设计实战篇分别进行了详细的介绍。
    1.Zynq-7000基础理论篇,详细介绍了学习Zynq-7000全可编程平台需要的基础理论知识,共包括2个章节内容:
     (1)可编程SoC设计导论,包括:可编程SoC系统概述、XilinxZynq平台导论和Zynq平台设计方法概述。
     (2) AMBA协议规范,包括:AMBA规范概述、AMBA APB规范、AMBAAHB规范和AMBA AXI4规范。
    2.Zynq-7000体系结构篇,详细介绍了Zynq-7000内的处理器系统、可编程逻辑系统、互联结构和外设模块等,共包含9个章节的内容:
  (1)Zynq-7000应用处理单元,包括:应用处理单元概述、Cortex-A9处理器、侦听控制单元、L2高速缓存、片上存储、APU接口、APU内的TrustZone、应用处理单元复位、功耗考虑、系统地址分配、中断、定时器和DMA控制器。
   (2)可编程逻辑资源,包括:可编程逻辑资源概述和可编程逻辑资源功能。
  (3)系统互连结构,包括:系统互连概述、服务质量、AXI_HP接口、AXI_ACP接口、AXI_GP接口、AXI信号总结和PL接口选择。
   (4)系统公共资源特性及功能,包括:时钟子系统和复位子系统。
   (5)Zynq调试和测试子系统,包括:JTAG和DAP子系统、CoreSight系统及功能。
  (6)Zynq平台的启动和配置,包括:概述、外部启动要求、BootROM和器件配置接口。
    (7) Zynq平台主要外设模块,包括:DDR存储器控制器、静态存储器控制器、四-SPIFlash控制器、SD/SDIO外设控制器、通用输入输出控制器、USB主、设备和OTG控制器、吉比特以太网控制器、SPI控制器、CAN控制器、UART控制器、I2C控制器、ADC转换器接口和PCI-E接口。
  (8)Zynq平台描述规范,包括:Zynq平台文件描述规范概述、微处理器硬件规范、微控制器外设规范、外设分析命令、黑盒定义、微处理器软件规范、微处理器库定义、微处理器驱动定义和Xilinx板描述格式。
   (9)高级综合工具HLS概述,包括:高级综合工具概述、高级综合工具调度和绑定、VivadoHLS工具的优势、C代码的关键属性和HLS内提供的用于时钟测量的术语。
     3.Zynq-7000设计实战篇,详细介绍了基于Zynq全可编程平台的不同设计实例,共包含12个章节的内容:
   (1)使用BSP向导生成Zynq基本系统。包括:使用BSB向导生成Zynq基本系统、生成和运行存储器测试工程及生成和运行外设测试工程。
    (2)添加AXIIP到设计。包括:设计原理、添加IP到系统设计、使用SDK设计和实现应用工程。
    (3)基于定制IP实现简单嵌入式系统设计。包括:创建设计工程、定制GPIOIP核、添加和连接AXI外设、添加约束到用于约束文件、使用SDK设计和实现应用工程。
    (4)基于定制IP实现复杂嵌入式系统设计。包括:设计原理、创建设计工程、定制VGAIP核、定制移位寄存器IP核、添加和连接VGA IP核、添加和连接shifterIP核、添加约束到用户约束文件、使用SDK设计和实现应用工程。
    (5)软件和硬件协同调试系统。包括:复制并打开设计工程、例化AXIChipscope核、导入硬件设计到SDK工具、启动ChipScope Pro硬件调试器工具、执行H/S验证。
    (6)Zynq平台配置和启动的实现。包括:生成SD卡镜像文件并启动、生成QSPIFlash镜像并启动。
    (7)基于Zynq HP从端口的数据传输实现。包括:设计原理、创建设计工程、添加并配置AXICDMA到设计、使用SDK设计和实现应用工程。
    (8)基于ZynqACP从端口数据传输实现。包括:设计原理、创建设计工程、配置PS端口、添加并连接IP到设计、使用SDK设计和实现应用工程。
    (9)XADC在Zynq平台上的应用。包括:设计原理、创建设计工程、添加XADCIP到设计、使用SDK设计和实现应用工程。
   (10)Ubuntu操作系统在Zynq平台上实现。包括:Ubuntu操作系统环境搭建、u-boot原理及实现、内核概述及编译、设备树原理及实现、文件系统原理及实现、打开设计工程、使用SDK设计生成软件工程、验证Ubuntu系统的运行。
   (11)?C/OS-III操作系统在Zynq平台上的实现。包括:?C/OS-III操作系统概述、?C/OS-III操作系统环境构建、创建设计工程、建立?C/OS-III操作系统的软件应用工程、运行外设测试工程、相关文件目录功能、基于?C/OS-III操作系统的关键工程文件分析。
   (12)HLS在Zynq嵌入式系统设计的应用。包括:设计原理、基于HLS生成FIR滤波器、创建处理器系统、使用SDK设计和实现应用工程。
在本书所包含这些设计实例代表着Zynq的一个应用的方向,在介绍这些设计实例的过程中,贯穿了很多重要的设计方法和设计思路,这些设计方法和设计思路比设计案例本身更加重要。为了便于读者的学习,本书还配套了光盘,光盘上提供了相关设计的完整工程及相关代码,以及教学课件等设计资源。
   在本书的编写过程中,得到了大量的帮助。感谢彭勃、李宝隆、孙丹阳同学,他们分别帮助验证了本书实验部分案例的验证,以及完成了书中一部分表格和插图的绘制工作。中科院南京天文光学技术研究所的陆启帅参与本书实验部分第9章、第10章内容的编写。还要感谢Xilinx大学合作计划、ARM大学合作计划、美国Digilent公司、美国Avent公司和北京麦克泰软件技术有限公司在软件和硬件平台方面给予的大力支持和帮助。最后,也要对清华大学出版社的编辑和领导的辛勤工作表示感谢。正是由于他们的支持和帮助,使得作者能在短时间内高质量的完成该书的编写和校对工作。
  虽然作者花费了大量的精力和时间用于该书的编写,但是由于作者的能力有限,书中一定会存在不足之处。在此,也恳请广大读者、同仁对本书提出宝贵的修改意见。
                                           何宾
                                   2013.1于北京 

 

购买链接:

http://item.jd.com/11251542.html

标签