《ARM CORTEX-M0 全可编程SOC原理及实现 面向处理器、协议、外设、编程和操作系统》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:何宾编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2017
  • ISBN:9787302457329
  • 页数:479 页
图书介绍:本书以ARM公司的开源Cortex-M0内核为基础,以Xilinx 7系列FPGA和Vivado设计套件为平台,系统介绍了基于ARM 处理器的片上系统的构造原理和实现方法。

第1章 全可编程SoC设计导论 1

1.1 SoC基础知识 1

1.1.1 SoC的概念 1

1.1.2 SoC与MCU及CPU的比较 3

1.1.3 典型的商用SoC器件 3

1.2 SoC设计流程 6

1.3 SoC体系架构 8

1.4 全可编程SoC技术 9

1.4.1 基于软核的全可编程SoC 9

1.4.2 基于硬核的全可编程SoC 10

1.5 全可编程SoC设计流程 10

第2章 Cortex-M0 CPU结构 13

2.1 ARM处理器类型 13

2.2 Cortex-M系列处理器概述 14

2.2.1 Cortex-M系列处理器的特点 14

2.2.2 Cortex-M系列处理器的性能参数 15

2.3 Cortex-M0处理器性能和结构 15

2.3.1 Cortex-M0处理器的性能 16

2.3.2 Cortex-M0处理器的结构 16

2.4 Cortex-M0处理器寄存器组 18

2.4.1 通用寄存器 18

2.4.2 堆栈指针 18

2.4.3 程序计数器 19

2.4.4 链接寄存器 19

2.4.5 组合程序状态寄存器 20

2.4.6 中断屏蔽特殊寄存器 21

2.4.7 特殊寄存器 21

2.5 Cortex-M0存储器空间映射 22

2.6 Cortex-M0程序镜像原理及生成方法 24

2.7 Cortex-M0的端及分配 25

2.8 Cortex-M0处理器异常及处理 25

2.8.1 异常原理 25

2.8.2 异常优先级 26

2.8.3 向量表 26

2.8.4 异常类型 28

第3章 Cortex-M0指令集 30

3.1 Thumb指令集 30

3.2 Cortex-M0汇编语言格式 31

3.3 寄存器访问指令:MOVE 32

3.4 存储器访问指令:LOAD 33

3.5 存储器访问指令:STORE 36

3.6 多数据访问指令:LDM和STM 37

3.7 堆栈访问指令:PUSH和POP 39

3.8 算术运算指令 39

3.8.1 加法指令 39

3.8.2 减法指令 41

3.8.3 乘法指令 42

3.8.4 比较指令 42

3.9 逻辑操作指令 43

3.10 移位操作指令 45

3.10.1 右移指令 45

3.10.2 左移指令 46

3.11 反序操作指令 47

3.12 扩展操作指令 48

3.13 程序流控制指令 49

3.14 存储器屏蔽指令 51

3.15 异常相关指令 51

3.16 休眠相关指令 51

3.17 其他指令 52

3.18 数据插入和对齐操作 52

第4章 Cortex-M0低功耗特性 54

4.1 低功耗要求 54

4.2 Cortex-M0低功耗特性及优势 54

4.2.1 Cortex-M0低功耗特性 55

4.2.2 Cortex-M0低功耗结构 55

4.3 Cortex-M0休眠模式 56

4.4 唤醒中断控制器 57

4.5 降低功耗的其他方法 58

第5章 AHB-Lite总线结构分析 59

5.1 总线及分类 59

5.1.1 总线的概念 59

5.1.2 总线分类 60

5.2 ARM AMBA系统总线 60

5.3 AMBA3 AHB-Lite总线 61

5.3.1 AHB-Lite概述 61

5.3.2 AHB-Lite总线操作 62

5.4 AHB-Lite总线结构 62

5.4.1 全局信号 63

5.4.2 AHB-Lite主设备接口 63

5.4.3 AHB-Lite从设备接口 66

5.4.4 地址译码器和多路复用器 67

5.5 AHB-Lite总线时序 68

5.5.1 无等待基本读传输 68

5.5.2 有等待基本读传输 69

5.5.3 无等待基本写传输 69

5.5.4 有等待基本写传输 70

5.6 硬件实现 71

第6章 Cortex-M0汇编语言编程基础 72

6.1 Keil MDK开发套件 72

6.1.1 下载MDK开发套件 72

6.1.2 安装MDK开发套件 75

6.1.3 MDK程序处理流程 76

6.2 Cortex-M0汇编语言程序设计 77

6.2.1 建立新设计工程 77

6.2.2 工程参数设置 78

6.2.3 添加汇编文件 83

6.2.4 汇编语言语法 85

6.3 .Ist文件分析 90

6.4 .map文件分析 92

6.5 .hex文件分析 93

6.6 软件仿真和调试 94

6.6.1 查看Cortex-M0寄存器内容 95

6.6.2 查看Cortex-M0存储器内容 95

6.6.3 查看监视窗口的内容 97

6.7 汇编语言其他常用语法介绍 97

6.7.1 标识符的命名规则 98

6.7.2 变量 98

6.7.3 常数 99

6.7.4 EQU命令 99

6.7.5 IMPORT/EXTERN命令 100

6.7.6 子程序调用 101

6.7.7 宏定义和使用 101

第7章 Cortex-M0 DesignStart架构 103

7.1 获取Cortex-M0 DesignStart 103

7.2 Cortex-M0 DesignStart顶层符号 104

7.2.1 中断 107

7.2.2 状态输出 107

7.2.3 事件信号 107

7.3 AHB-Lite接口 108

7.4 将Cortex-M0 DesignStart集成到系统的方法 109

第8章 XILINX Artix-7 FPGA结构 111

8.1 Artix-7器件逻辑资源 111

8.2 可配置逻辑块 112

8.2.1 可配置逻辑块概述 112

8.2.2 查找表 115

8.2.3 多路复用器 116

8.2.4 进位逻辑 117

8.2.5 存储元素 118

8.2.6 分布式RAM(只有SLICEM) 120

8.2.7 只读存储器(ROM) 121

8.2.8 移位寄存器(只有SLICEM) 121

8.3 时钟资源和时钟管理单元 122

8.3.1 7系列FPGA时钟资源 123

8.3.2 7系列内部时钟结构 124

8.3.3 7系列FPGA时钟管理模块 125

8.4 块存储器资源 127

8.5 专用的DSP模块 129

8.6 输入/输出块 131

8.6.1 I/O特性概述 131

8.6.2 Artix-7中的I/O列和类型 132

8.6.3 I/O电气资源 133

8.6.4 I/O逻辑资源 134

8.7 XADC模块 137

8.8 吉比特收发器 139

8.9 PCI-E模块 139

8.10 配置模块 140

8.11 互连资源 141

第9章 Cortex-M0嵌入式系统设计与实现 143

9.1 设计目标 143

9.2 Cortex-M0 SoC系统的构建 144

9.2.1 启动Vivado 2016集成开发环境 144

9.2.2 创建新的设计工程 145

9.2.3 添加Cortex-M0处理器源文件 148

9.2.4 添加系统主时钟IP核 151

9.3 设计文件修改和分析 152

9.3.1 AHB总线地址译码器 152

9.3.2 AHB总线从设备多路复用器 154

9.3.3 AHB片上存储器外设 157

9.3.4 AHB LED外设 161

9.3.5 AHBLITE SYS顶层文件 162

9.4 程序代码的编写 167

9.4.1 建立新设计工程 168

9.4.2 工程参数设置 168

9.4.3 添加和编译汇编文件 170

9.4.4 分析HEX文件与汇编文件的关系 173

9.4.5 添加HEX文件到当前工程 176

9.5 RTL详细描述和分析 177

9.6 仿真原理和行为级仿真 180

9.6.1 仿真实现的不同功能 180

9.6.2 Vivado所支持的仿真工具 181

9.6.3 行为级仿真实现 181

9.6.4 添加信号并仿真 183

9.6.5 仿真结果分析 184

9.7 设计综合和分析 189

9.7.1 综合过程的关键问题 189

9.7.2 设计综合选项 189

9.7.3 Vivado支持的属性 192

9.7.4 执行设计综合 197

9.7.5 查看综合报告 198

9.8 创建实现约束 199

9.8.1 实现约束的原理 199

9.8.2 I/O规划器功能 200

9.8.3 引脚位置约束的实现 201

9.9 设计实现和分析 206

9.9.1 实现过程原理 206

9.9.2 设计实现选项 206

9.9.3 设计实现 211

9.9.4 查看布局布线后的结果 211

9.9.5 查看实现后的报告 214

9.9.6 功耗分析 218

9.9.7 静态时序分析 220

9.10 实现后时序仿真 223

9.11 生成编程文件 224

9.12 下载比特流文件到FPGA 224

9.13 生成并下载外部存储器文件 226

第10章 7段数码管控制器设计与实现 229

10.1 设计目标 229

10.2 打开前面的设计工程 230

10.3 添加并分析7段数码管控制器源文件 230

10.3.1 添加7段数码管控制器源文件 230

10.3.2 分析7段数码管控制器源文件 234

10.4 修改并分析顶层设计文件 234

10.5 编写程序代码 237

10.5.1 建立新设计工程 237

10.5.2 工程参数设置 237

10.5.3 添加和编译汇编文件 238

10.5.4 添加HEX文件到当前工程 240

10.6 设计综合 241

10.7 添加约束条件 241

10.8 设计实现 242

10.9 下载比特流文件 242

10.10 系统在线调试原理 243

10.11 系统在线调试实现 244

10.11.1 建立新的调试工程 244

10.11.2 添加调试网络 245

10.11.3 在线测试分析 247

第11章 中断系统设计与实现 250

11.1 设计目标 250

11.2 中断控制器原理 251

11.2.1 NVIC特点 251

11.2.2 NVIC映射 251

11.2.3 NVIC寄存器 252

11.3 进入和退出异常句柄的过程 254

11.3.1 进入中断句柄的过程 254

11.3.2 退出中断句柄的过程 254

11.4 打开前面的设计工程 255

11.5 添加并分析按键消抖模块源文件 255

11.5.1 添加按键消抖模块源文件 255

11.5.2 分析按键消抖模块源文件 256

11.6 修改并分析顶层设计文件 258

11.7 编写程序代码 260

11.7.1 建立新设计工程 260

11.7.2 工程参数设置 260

11.7.3 软件初始化中断 261

11.7.4 添加和编译汇编文件 262

11.7.5 添加HEX文件到当前工程 264

11.8 设计综合 264

11.9 添加约束条件 265

11.10 设计实现 265

11.11 下载比特流文件 265

第12章 定时器设计与实现 267

12.1 设计目标 267

12.2 打开前面的设计工程 268

12.3 添加并分析定时器模块源文件 268

12.3.1 定时器模块设计原理 268

12.3.2 添加定时器源文件 269

12.3.3 分析定时器源文件 270

12.4 修改并分析顶层设计文件 274

12.5 编写程序代码 277

12.5.1 建立新设计工程 277

12.5.2 工程参数设置 277

12.5.3 添加和编译汇编文件 278

12.5.4 添加HEX文件到当前工程 280

12.6 设计综合 281

12.7 设计实现 281

12.8 下载比特流文件 282

第13章 UART串口控制器设计与实现 283

13.1 设计目标 283

13.2 串行通信基础 284

13.2.1 串行和并行通信之间的比较 284

13.2.2 串行通信的类型 285

13.3 通用异步收发数据格式和编码 285

13.3.1 数据格式 285

13.3.2 字符编码规则 286

13.4 UART串口控制器的实现原理 286

13.4.1 UART发送器 287

13.4.2 UART接收器 287

13.4.3 发送器/接收器FIFO 287

13.5 打开前面的设计工程 289

13.6 添加并分析UART模块源文件 289

13.6.1 添加UART模块源文件 289

13.6.2 分析UART模块源文件 290

13.7 修改并分析顶层设计文件 303

13.8 编写程序代码 304

13.8.1 建立新设计工程 304

13.8.2 工程参数设置 306

13.8.3 添加和编译汇编文件 307

13.8.4 添加HEX文件到当前工程 309

13.9 设计综合 310

13.10 添加约束条件 310

13.11 设计实现 311

13.12 下载比特流文件 311

第14章 VGA控制器设计与实现 313

14.1 设计目标 313

14.2 VGA工作原理 314

14.2.1 VGA连接器 314

14.2.2 CRT原理 315

14.2.3 VGA接口信号 315

14.2.4 VGA时序 316

14.3 VGA显示硬件实现原理 317

14.3.1 VGA图像缓冲区 318

14.3.2 VGA控制台 319

14.3.3 VGA控制器存储器空间 319

14.4 打开前面的设计工程 319

14.5 添加并分析VGA模块源文件 320

14.5.1 添加VGA模块源文件 320

14.5.2 分析VGA模块源文件 320

14.6 修改其他设计 334

14.6.1 添加并分析顶层设计文件 334

14.6.2 修改时钟生成器输出频率 335

14.6.3 修改波特率时钟 335

14.7 编写程序代码 337

14.7.1 建立新设计工程 337

14.7.2 工程参数设置 337

14.7.3 添加和编译汇编文件 338

14.7.4 添加HEX文件到当前工程 341

14.8 设计综合 342

14.9 添加约束条件 342

14.10 设计实现 343

14.11 下载比特流文件 343

第15章 DDR3存储器系统设计与实现 345

15.1 计算机搭载的存储器设备 345

15.2 存储器类型 347

15.2.1 易失性存储器 347

15.2.2 非易失性存储器 349

15.3 系统设计目标 349

15.3.1 硬件构建目标 350

15.3.2 软件编程目标 350

15.4 DDR3 SDRAM控制器设计原理 351

15.4.1 DDR3 SDRAM存储器结构 351

15.4.2 DDR3 SDRAM控制器结构 354

15.4.3 DDR3 SDRAM的读写访问时序 354

15.5 DDR3 SDRAM控制器系统设计与实现 357

15.5.1 打开前面的设计工程 357

15.5.2 设计DDR3 SDRAM存储器控制器 357

15.5.3 修改系统设计文件 369

15.5.4 编写程序代码 374

15.5.5 设计综合 378

15.5.6 设计实现 378

15.5.7 下载比特流文件 379

第16章 Cortex-M0 C语言编程基础 380

16.1 C语言处理流程 380

16.2 C语言镜像文件内容和存储 381

16.2.1 C语言镜像文件的内容 382

16.2.2 C语言镜像文件的存储位置 382

16.3 启动代码的分析 383

16.4 C语言中数据的存储空间 385

16.5 C语言数据类型及实现 386

16.5.1 C语言支持的数据类型 386

16.5.2 数据类型修饰符 386

16.6 C语言编程Cortex-M0 389

16.6.1 定义中断向量表 389

16.6.2 定义堆和堆栈 389

16.6.3 读写外设寄存器 390

16.6.4 汇编调用C函数 390

16.6.5 C语言调用汇编语言 391

16.6.6 C语言嵌入汇编语言 391

16.7 C语言驱动的设计和实现 392

16.7.1 打开前面的设计工程 392

16.7.2 建立新的软件设计工程 392

16.7.3 软件工程参数设置 393

16.7.4 创建并添加汇编文件 394

16.7.5 创建并添加头文件 397

16.7.6 创建并添加C文件 397

16.7.7 添加HEX文件到当前工程 399

16.7.8 设计综合 399

16.7.9 设计实现 400

16.7.10 下载比特流文件 400

16.8 C语言重定向及实现 401

16.8.1 打开前面的设计工程 401

16.8.2 打开前面的软件设计工程 402

16.8.3 修改启动引导文件 402

16.8.4 导入并修改retarget.c文件 404

16.8.5 修改C设计文件 406

16.8.6 添加HEX文件到当前工程 406

16.8.7 设计综合 407

16.8.8 设计实现 408

16.8.9 下载比特流文件 408

第17章 CMSIS和驱动程序开发 410

17.1 引入CMSIS的必要性 410

17.2 CMSIS的优势 411

17.3 CMSIS的框架 412

17.4 使用CMSIS访问不同资源 414

17.4.1 访问NVIC 414

17.4.2 访问特殊寄存器 414

17.4.3 访问特殊指令 415

17.4.4 访问系统 415

17.5 软件驱动程序的设计 415

17.5.1 软件驱动程序的功能 415

17.5.2 AHB外设驱动设计 416

17.6 动态图形交互系统设计 419

17.6.1 动态图形交互硬件平台 419

17.6.2 触摸屏显示控制方法 421

17.6.3 触摸屏触摸控制方法 423

17.6.4 打开前面的设计工程 425

17.6.5 触摸屏控制器模块的设计实现 426

17.6.6 修改顶层设计文件 429

17.6.7 C语言程序的设计和实现 432

17.6.8 设计综合 449

17.6.9 添加约束条件 450

17.6.10 设计实现 450

17.6.11 下载比特流文件 451

第18章 RTX操作系统原理及应用 452

18.1 RTOS的优势 452

18.2 操作系统的概念 453

18.3 操作系统支持特性 453

18.3.1 SysTick定时器 453

18.3.2 堆栈指针 454

18.3.3 SVC 455

18.3.4 PendSV 456

18.4 RTX内核架构的特点 456

18.5 RTX的具体实现过程 457

18.5.1 实现目标 458

18.5.2 打开前面的工程 459

18.5.3 修改工程属性设置 459

18.5.4 修改启动代码 460

18.5.5 导入RTX_Config.c文件 462

18.5.6 修改main.c文件 466

18.5.7 软件调试和测试 467

18.6 RTX内核功能 470

18.6.1 定时器滴答中断 470

18.6.2 系统任务管理器 470

18.6.3 任务管理 471

18.6.4 空闲任务 472

18.6.5 系统资源 472

18.6.6 任务调度策略 473

18.6.7 优先级倒置 476

18.6.8 堆栈管理 477

18.6.9 用户定时器 478

18.6.10 中断函数 478