内容简介
第1章 全可编程SoC设计导论
1.1 SoC基础知识
1.1.1 SoC的概念
1.1.2 SoC与MCU及CPU的比较
1.1.3 典型的商用SoC器件
1.2 SoC设计流程
1.3 SoC体系架构
1.4 全可编程SoC技术
1.4.1 基于软核的全可编程SoC
1.4.2 基于硬核的全可编程SoC
1.5 全可编程SoC设计流程
第2章 Cortex-M0 CPU结构
2.1 ARM处理器类型
2.2 Cortex-M系列处理器概述
2.2.1 Cortex-M系列处理器的特点
2.2.2 Cortex-M系列处理器的性能参数
2.3 Cortex-M0处理器性能和结构
2.3.1 Cortex-M0处理器的性能
2.3.2 Cortex-M0处理器的结构
2.4 Cortex-M0处理器寄存器组
2.4.1 通用寄存器
2.4.2 堆栈指针
2.4.3 程序计数器
2.4.4 链接寄存器
2.4.5 组合程序状态寄存器
2.4.6 中断屏蔽特殊寄存器
2.4.7 特殊寄存器
2.5 Cortex-M0存储器空间映射
2.6 Cortex-M0程序镜像原理及生成方法
2.7 Cortex-M0的端及分配
2.8 Cortex-M0处理器异常及处理
2.8.1 异常原理
2.8.2 异常优先级
2.8.3 向量表
2.8.4 异常类型
第3章 Cortex-M0指令集
3.1 Thumb指令集
3.2 Cortex-M0汇编语言格式
3.3 寄存器访问指令:MOVE
3.4 存储器访问指令:LOAD
3.5 存储器访问指令:STORE
3.6 多数据访问指令:LDM和STM
3.7 堆栈访问指令:PUSH和POP
3.8 算术运算指令
3.8.1 加法指令
3.8.2 减法指令
3.8.3 乘法指令
3.8.4 比较指令
3.9 逻辑操作指令
3.10 移位操作指令
3.10.1 右移指令
3.10.2 左移指令
3.11 反序操作指令
3.12 扩展操作指令
3.13 程序流控制指令
3.14 存储器屏蔽指令
3.15 异常相关指令
3.16 休眠相关指令
3.17 其他指令
3.18 数据插入和对齐操作
第4章 Cortex-M0低功耗特性
4.1 低功耗要求
4.2 Cortex-M0低功耗特性及优势
4.2.1 Cortex-M0低功耗特性
4.2.2 Cortex-M0低功耗结构
4.3 Cortex-M0休眠模式
4.4 唤醒中断控制器
4.5 降低功耗的其他方法
第5章 AHB-Lite总线结构分析
5.1 总线及分类
5.1.1 总线的概念
5.1.2 总线分类
5.2 ARM AMBA系统总线
5.3 AMBA3 AHB-Lite总线
5.3.1 AHB-Lite概述
5.3.2 AHB-Lite总线操作
5.4 AHB-Lite总线结构
5.4.1 全局信号
5.4.2 AHB-Lite主设备接口
5.4.3 AHB-Lite从设备接口
5.4.4 地址译码器和多路复用器
5.5 AHB-Lite总线时序
5.5.1 无等待基本读传输
5.5.2 有等待基本读传输
5.5.3 无等待基本写传输
5.5.4 有等待基本写传输
5.6 硬件实现
第6章 Cortex-M0汇编语言编程基础
6.1 Keil MDK开发套件
6.1.1 下载MDK开发套件
6.1.2 安装MDK开发套件
6.1.3 MDK程序处理流程
6.2 Cortex-M0汇编语言程序设计
6.2.1 建立新设计工程
6.2.2 工程参数设置
6.2.3 添加汇编文件
6.2.4 汇编语言语法
6.3 .Ist文件分析
6.4 .map文件分析
6.5 .hex文件分析
6.6 软件仿真和调试
6.6.1 查看Cortex-M0寄存器内容
6.6.2 查看Cortex-M0存储器内容
6.6.3 查看监视窗口的内容
6.7 汇编语言其他常用语法介绍
6.7.1 标识符的命名规则
6.7.2 变量
6.7.3 常数
6.7.4 EQU命令
6.7.5 IMPORT/EXTERN命令
6.7.6 子程序调用
6.7.7 宏定义和使用
第7章 Cortex-M0 DesignStart架构
7.1 获取Cortex-M0 DesignStart
7.2 Cortex-M0 DesignStart顶层符号
7.2.1 中断
7.2.2 状态输出
7.2.3 事件信号
7.3 AHB-Lite接口
7.4 将Cortex-M0 DesignStart集成到系统的方法
第8章 XILINX Artix-7 FPGA结构
8.1 Artix-7器件逻辑资源
8.2 可配置逻辑块
8.2.1 可配置逻辑块概述
8.2.2 查找表
8.2.3 多路复用器
8.2.4 进位逻辑
8.2.5 存储元素
8.2.6 分布式RAM(只有SLICEM)
8.2.7 只读存储器(ROM)
8.2.8 移位寄存器(只有SLICEM)
8.3 时钟资源和时钟管理单元
8.3.1 7系列FPGA时钟资源
8.3.2 7系列内部时钟结构
8.3.3 7系列FPGA时钟管理模块
8.4 块存储器资源
8.5 专用的DSP模块
8.6 输入/输出块
8.6.1 I/O特性概述
8.6.2 Artix-7中的I/O列和类型
8.6.3 I/O电气资源
8.6.4 I/O逻辑资源
8.7 XADC模块
8.8 吉比特收发器
8.9 PCI-E模块
8.10 配置模块
8.11 互连资源
第9章 Cortex-M0嵌入式系统设计与实现
9.1 设计目标
9.2 Cortex-M0 SoC系统的构建
9.2.1 启动Vivado 2016集成开发环境
9.2.2 创建新的设计工程
9.2.3 添加Cortex-M0处理器源文件
9.2.4 添加系统主时钟IP核
9.3 设计文件修改和分析
9.3.1 AHB总线地址译码器
9.3.2 AHB总线从设备多路复用器
9.3.3 AHB片上存储器外设
9.3.4 AHB LED外设
9.3.5 AHBLITE SYS顶层文件
9.4 程序代码的编写
9.4.1 建立新设计工程
9.4.2 工程参数设置
9.4.3 添加和编译汇编文件
9.4.4 分析HEX文件与汇编文件的关系
9.4.5 添加HEX文件到当前工程
9.5 RTL详细描述和分析
9.6 仿真原理和行为级仿真
9.6.1 仿真实现的不同功能
9.6.2 Vivado所支持的仿真工具
9.6.3 行为级仿真实现
9.6.4 添加信号并仿真
9.6.5 仿真结果分析
9.7 设计综合和分析
9.7.1 综合过程的关键问题
9.7.2 设计综合选项
9.7.3 Vivado支持的属性
9.7.4 执行设计综合
9.7.5 查看综合报告
9.8 创建实现约束
9.8.1 实现约束的原理
9.8.2 I/O规划器功能
9.8.3 引脚位置约束的实现
9.9 设计实现和分析
9.9.1 实现过程原理
9.9.2 设计实现选项
9.9.3 设计实现
9.9.4 查看布局布线后的结果
9.9.5 查看实现后的报告
9.9.6 功耗分析
9.9.7 静态时序分析
9.10 实现后时序仿真
9.11 生成编程文件
9.12 下载比特流文件到FPGA
9.13 生成并下载外部存储器文件
第10章 7段数码管控制器设计与实现
10.1 设计目标
10.2 打开前面的设计工程
10.3 添加并分析7段数码管控制器源文件
10.3.1 添加7段数码管控制器源文件
10.3.2 分析7段数码管控制器源文件
10.4 修改并分析顶层设计文件
10.5 编写程序代码
10.5.1 建立新设计工程
10.5.2 工程参数设置
10.5.3 添加和编译汇编文件
10.5.4 添加HEX文件到当前工程
10.6 设计综合
10.7 添加约束条件
10.8 设计实现
10.9 下载比特流文件
10.10 系统在线调试原理
10.11 系统在线调试实现
10.11.1 建立新的调试工程
10.11.2 添加调试网络
10.11.3 在线测试分析
第11章 中断系统设计与实现
11.1 设计目标
11.2 中断控制器原理
11.2.1 NVIC特点
11.2.2 NVIC映射
11.2.3 NVIC寄存器
11.3 进入和退出异常句柄的过程
11.3.1 进入中断句柄的过程
11.3.2 退出中断句柄的过程
11.4 打开前面的设计工程
11.5 添加并分析按键消抖模块源文件
11.5.1 添加按键消抖模块源文件
11.5.2 分析按键消抖模块源文件
11.6 修改并分析顶层设计文件
11.7 编写程序代码
11.7.1 建立新设计工程
11.7.2 工程参数设置
11.7.3 软件初始化中断
11.7.4 添加和编译汇编文件
11.7.5 添加HEX文件到当前工程
11.8 设计综合
11.9 添加约束条件
11.10 设计实现
11.11 下载比特流文件
第12章 定时器设计与实现
12.1 设计目标
12.2 打开前面的设计工程
12.3 添加并分析定时器模块源文件
12.3.1 定时器模块设计原理
12.3.2 添加定时器源文件
12.3.3 分析定时器源文件
12.4 修改并分析顶层设计文件
12.5 编写程序代码
12.5.1 建立新设计工程
12.5.2 工程参数设置
12.5.3 添加和编译汇编文件
12.5.4 添加HEX文件到当前工程
12.6 设计综合
12.7 设计实现
12.8 下载比特流文件
第13章 UART串口控制器设计与实现
13.1 设计目标
13.2 串行通信基础
13.2.1 串行和并行通信之间的比较
13.2.2 串行通信的类型
13.3 通用异步收发数据格式和编码
13.3.1 数据格式
13.3.2 字符编码规则
13.4 UART串口控制器的实现原理
13.4.1 UART发送器
13.4.2 UART接收器
13.4.3 发送器/接收器FIFO
13.5 打开前面的设计工程
13.6 添加并分析UART模块源文件
13.6.1 添加UART模块源文件
13.6.2 分析UART模块源文件
13.7 修改并分析顶层设计文件
13.8 编写程序代码
13.8.1 建立新设计工程
13.8.2 工程参数设置
13.8.3 添加和编译汇编文件
13.8.4 添加HEX文件到当前工程
13.9 设计综合
13.10 添加约束条件
13.11 设计实现
13.12 下载比特流文件
第14章 VGA控制器设计与实现
14.1 设计目标
14.2 VGA工作原理
14.2.1 VGA连接器
14.2.2 CRT原理
14.2.3 VGA接口信号
14.2.4 VGA时序
14.3 VGA显示硬件实现原理
14.3.1 VGA图像缓冲区
14.3.2 VGA控制台
14.3.3 VGA控制器存储器空间
14.4 打开前面的设计工程
14.5 添加并分析VGA模块源文件
14.5.1 添加VGA模块源文件
14.5.2 分析VGA模块源文件
14.6 修改其他设计
14.6.1 添加并分析顶层设计文件
14.6.2 修改时钟生成器输出频率
14.6.3 修改波特率时钟
14.7 编写程序代码
14.7.1 建立新设计工程
14.7.2 工程参数设置
14.7.3 添加和编译汇编文件
14.7.4 添加HEX文件到当前工程
14.8 设计综合
14.9 添加约束条件
14.10 设计实现
14.11 下载比特流文件
第15章 DDR3存储器系统设计与实现
15.1 计算机搭载的存储器设备
15.2 存储器类型
15.2.1 易失性存储器
15.2.2 非易失性存储器
15.3 系统设计目标
15.3.1 硬件构建目标
15.3.2 软件编程目标
15.4 DDR3 SDRAM控制器设计原理
15.4.1 DDR3 SDRAM存储器结构
15.4.2 DDR3 SDRAM控制器结构
15.4.3 DDR3 SDRAM的读写访问时序
15.5 DDR3 SDRAM控制器系统设计与实现
15.5.1 打开前面的设计工程
15.5.2 设计DDR3 SDRAM存储器控制器
15.5.3 修改系统设计文件
15.5.4 编写程序代码
15.5.5 设计综合
15.5.6 设计实现
15.5.7 下载比特流文件
第16章 Cortex-M0 C语言编程基础
16.1 C语言处理流程
16.2 C语言镜像文件内容和存储
16.2.1 C语言镜像文件的内容
16.2.2 C语言镜像文件的存储位置
16.3 启动代码的分析
16.4 C语言中数据的存储空间
16.5 C语言数据类型及实现
16.5.1 C语言支持的数据类型
16.5.2 数据类型修饰符
16.6 C语言编程Cortex-M0
16.6.1 定义中断向量表
16.6.2 定义堆和堆栈
16.6.3 读写外设寄存器
16.6.4 汇编调用C函数
16.6.5 C语言调用汇编语言
16.6.6 C语言嵌入汇编语言
16.7 C语言驱动的设计和实现
16.7.1 打开前面的设计工程
16.7.2 建立新的软件设计工程
16.7.3 软件工程参数设置
16.7.4 创建并添加汇编文件
16.7.5 创建并添加头文件
16.7.6 创建并添加C文件
16.7.7 添加HEX文件到当前工程
16.7.8 设计综合
16.7.9 设计实现
16.7.10 下载比特流文件
16.8 C语言重定向及实现
16.8.1 打开前面的设计工程
16.8.2 打开前面的软件设计工程
16.8.3 修改启动引导文件
16.8.4 导入并修改retarget.c文件
16.8.5 修改C设计文件
16.8.6 添加HEX文件到当前工程
16.8.7 设计综合
16.8.8 设计实现
16.8.9 下载比特流文件
第17章 CMSIS和驱动程序开发
17.1 引入CMSIS的必要性
17.2 CMSIS的优势
17.3 CMSIS的框架
17.4 使用CMSIS访问不同资源
17.4.1 访问NVIC
17.4.2 访问特殊寄存器
17.4.3 访问特殊指令
17.4.4 访问系统
17.5 软件驱动程序的设计
17.5.1 软件驱动程序的功能
17.5.2 AHB外设驱动设计
17.6 动态图形交互系统设计
17.6.1 动态图形交互硬件平台
17.6.2 触摸屏显示控制方法
17.6.3 触摸屏触摸控制方法
17.6.4 打开前面的设计工程
17.6.5 触摸屏控制器模块的设计实现
17.6.6 修改顶层设计文件
17.6.7 C语言程序的设计和实现
17.6.8 设计综合
17.6.9 添加约束条件
17.6.10 设计实现
17.6.11 下载比特流文件
第18章 RTX操作系统原理及应用
18.1 RTOS的优势
18.2 操作系统的概念
18.3 操作系统支持特性
18.3.1 SysTick定时器
18.3.2 堆栈指针
18.3.3 SVC
18.3.4 PendSV
18.4 RTX内核架构的特点
18.5 RTX的具体实现过程
18.5.1 实现目标
18.5.2 打开前面的工程
18.5.3 修改工程属性设置
18.5.4 修改启动代码
18.5.5 导入RTX_Config.c文件
18.5.6 修改main.c文件
18.5.7 软件调试和测试
18.6 RTX内核功能
18.6.1 定时器滴答中断
18.6.2 系统任务管理器
18.6.3 任务管理
18.6.4 空闲任务
18.6.5 系统资源
18.6.6 任务调度策略
18.6.7 优先级倒置
18.6.8 堆栈管理
18.6.9 用户定时器
18.6.10 中断函数