《SoC FPGA 嵌入式设计和开发教程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:梅雪松,宋士权,陈云龙编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2019
  • ISBN:9787512422391
  • 页数:315 页
图书介绍:本书针对Intel Cyclone V SoC FPGA器件,介绍了其芯片结构,架构优势,并基于特定的硬件开发平台,以实例的形式介绍了其应用开发流程和调试技巧。书本内容包括了器件介绍,软件安装,FPGA逻辑设计,Linux系统设计方法,最后,给出了两个综合系统的设计思路与设计内容。本书可作为计算机、工程应用类、电子信息类专业本科生以及相关专业专科生的EDA基础类课程的教材;也可作为FPGA自学人员,以及从事FPGA开发的工程技术人员的培训教材和参考用书。

第1章 SoC FPGA软硬件系统开发概述 1

1.1 Intel SoC FPGA系列 1

1.1.1 Cyclone Ⅴ SoC FPGA 2

1.1.2 Arria Ⅴ SoC FPGA 2

1.1.3 Arria 10 SoC FPGA 2

1.1.4 Stratix 10 SoC FPGA 3

1.1.5 SoC FPGA应用领域与前景 3

1.2 Intel Cyclone Ⅴ SoC FPGA介绍 4

1.2.1 什么是SoC FPGA 4

1.2.2 SOPC 4

1.2.3 SoC FPGA与SOPC之间的差异 5

1.2.4 SoC FPGA架构的优势 6

1.3 Cyclone Ⅴ SoC FPGA器件硬件设计概述 9

1.3.1 FPGA I/O和时钟 10

1.3.2 SoC FPGA JTAG电路设计 12

1.4 AC501-SoC开发板介绍 13

1.4.1 布局及组件 13

1.4.2 轻触按键 14

1.4.3 用户LED 15

1.4.4 时钟输入 16

1.4.5 GPIO接口 17

1.4.6 DDR3 SDRAM 18

1.4.7 通用显示扩展接口 19

1.4.8 USB转UART 21

1.4.9 以太网收发器 21

1.5 本章小结 23

第2章 SoC FPGA开发板的使用 24

2.1 安装SoC FPGA开发工具 24

2.2 SoC FPGA的配置数据烧写与固化 24

2.2.1 SoC FPGA启动配置方式介绍 24

2.2.2 sof文件的烧写方式 26

2.2.3 jic文件的生成和烧写 28

2.3 在SoC FPGA上运行Linux操作系统 32

2.3.1 SoC FPGA中的H PS启动流程介绍 32

2.3.2 HPS启动方式介绍 33

2.3.3 制作启动镜像SD卡 34

2.3.4 准备硬件板卡 35

2.3.5 开机测试 39

2.4 开发板Linux系统常用操作 40

2.4.1 查看目录 40

2.4.2 设置和修改用户密码 40

2.4.3 查看和编辑文件 41

2.4.4 设置IP地址 43

2.4.5 挂载SD卡的FAT32分区 45

2.4.6 挂载U盘 46

2.4.7 文件操作 47

2.4.8 目录操作 48

2.4.9 停止某个进程 49

2.4.10 重启和关机 50

2.5 本章小结 50

第3章 SoC FPGA开发概述 51

3.1 SoC FPGA开发流程 51

3.1.1 硬件开发 51

3.1.2 软件开发 53

3.2 AC501-SoC FPGA开发板的黄金参考设计说明 53

3.2.1 GHRD 53

3.2.2 打开和查看GHRD 54

3.2.3 组件参数配置详解 57

3.3 本章小结 62

第4章 手把手修改GHRD系统 63

4.1 修改GHRD工程 63

4.1.1 打开GHRD工程 63

4.1.2 添加UART IP 64

4.1.3 关于HPS与FPGA数据交互 64

4.1.4 连接UART IP信号端口 65

4.1.5 分配组件基地址 67

4.1.6 生成Qsys系统的HDL文件 68

4.1.7 添加uart_1的端口到Quartus工程中 69

4.1.8 分配FPGA引脚 71

4.1.9 生成配置数据二进制文件 72

4.2 制作Preloader Image 72

4.2.1 打开SoC EDS工具 73

4.2.2 生成bsp文件 74

4.2.3 编译Preloader和U-Boot 77

4.2.4 更新Preloader和U-Boot 79

4.2.5 Win 10系统下更新失败问题 80

4.2.6 使用新的U-Boot启动SoC 81

4.3 制作设备树 82

4.3.1 设备树制作流程 82

4.3.2 准备所需文件 82

4.3.3 生成.dts文件 83

4.3.4 生成.dtb文件 84

4.4 运行修改后的工程 85

4.5 本章小结 87

第5章 使用DS-5编写和调试SoC的Linux应用程序 88

5.1 启动DS-5 88

5.2 创建C工程 91

5.3 编译工程 94

5.4 建立SSH远程连接 95

5.4.1 创建远程连接 95

5.4.2 复制文件到目标板 101

5.4.3 运行应用程序 102

5.5 远程调试 103

5.5.1 GDB设置 103

5.5.2 GDB连接和调试 106

5.6 使用WinSCP实现多系统传输文件 108

5.6.1 为什么要使用WinSCP 108

5.6.2 安装WinSCP 109

5.6.3 建立远程主机连接 109

5.6.4 新建远程连接 112

5.6.5 调用PuTTY终端 112

5.7 本章小结 113

第6章 基于虚拟地址映射的Linux硬件编程 114

6.1 什么是虚拟地址映射 114

6.2 虚拟地址映射的实现 115

6.3 基于虚拟地址映射的PIO编程应用 117

6.3.1 PIO外设的虚拟地址映射 117

6.3.2 在DS-5中建立PIO应用工程 118

6.3.3 添加和包含HPS库文件 119

6.3.4 添加FPGA侧外设硬件信息 121

6.3.5 PIO IP核介绍 124

6.3.6 PIO核寄存器映射 125

6.3.7 PIO IP核应用实例 128

6.3.8 合理的程序退出机制 131

6.3.9 关于按键消抖 133

6.4 基于虚拟地址映射的UART编程应用 134

6.4.1 UART核介绍 134

6.4.2 UART寄存器映射 134

6.4.3 UART IP核应用实例 136

6.4.4 UART IP核板级调试 144

6.4.5 小结 145

6.5 基于虚拟地址映射的I2 C编程应用 145

6.5.1 OpenCores I2 C IP简介 146

6.5.2 OpenCores I2 C IP寄存器映射 146

6.5.3 I2 C IP核应用实例 149

6.5.4 小结 161

6.6 本章小结 161

第7章 基于Linux应用程序的HPS配置FPGA 162

7.1 制作Quartus工程 163

7.2 生成rbf格式配置数据 163

7.3 编译Linux配置FPGA应用程序 165

7.4 在系统重配置FPGA实验 166

7.5 本章小结 168

第8章 编译嵌入式Linux系统内核 169

8.1 安装VMware 170

8.2 安装Ubuntu系统 171

8.2.1 使用现成的Ubuntu系统镜像 171

8.2.2 安装全新的Ubuntu系统 175

8.3 下载Linux系统源码 182

8.4 设置交叉编译环境 185

8.5 配置和编译内核 189

8.5.1 快速配置内核 189

8.5.2 保存内核配置文件 195

8.5.3 编译内核 195

8.5.4 使用内核启动开发板 197

8.6 本章小结 199

第9章 Linux设备树的原理与应用实例 200

9.1 什么是设备树 200

9.2 设备树的基本格式 201

9.3 设备树加载设备驱动原理 206

9.4 编写I2 C控制器设备节点 208

9.5 加载OC_I2 C驱动 211

9.6 使用RTC 212

9.7 使用EEPROM 216

9.8 编写SPI控制器设备节点 217

9.9 本章小结 219

第10章 基于Linux标准文件I/O的设备读/写 220

10.1 什么是文件I/O 220

10.2 基于文件I/O操作的一般方法 220

10.2.1 文件描述符 220

10.2.2 打开设备(open) 221

10.2.3 向设备写入数据(write) 221

10.2.4 读取设备数据(read) 222

10.2.5 杂项操作(ioctl) 222

10.2.6 关闭设备(close) 223

10.2.7 其他操作 223

10.3 使用文件I/O实现I2 C编程 223

10.4 本章小结 226

第11章 FPGA与HPS高速数据交互应用 227

11.1 FPGA与HPS通信介绍 227

11.1.1 H2F_LW_AXI_Master桥 229

11.1.2 H2F_AXI_Master桥 229

11.1.3 F2H_AXI_Slave桥 230

11.2 AXI与Avalon-MM总线的互联 230

11.3 Avalon-MM总线 230

11.4 Avalon-MM Slave接口 232

11.5 基本Avalon-MM Slave IP设计框架 234

11.5.1 端口定义 234

11.5.2 寄存器和线网定义 235

11.5.3 Avalon总线对寄存器的读/写 235

11.5.4 用户逻辑使用寄存器 236

11.6 PWM控制器设计 237

11.6.1 PWM IP核端口设计 238

11.6.2 PWM IP核寄存器定义 239

11.6.3 读/写PWM寄存器 239

11.6.4 Platform Designer中封装PWM IP 241

11.7 Avalon-MM Master接口 255

11.7.1 常见的通用Avalon-MM Master主机 256

11.7.2 DMA Controller 256

11.7.3 Scatter-Gather DMA Controller 256

11.7.4 Modular Scatter-Gather DMA 258

11.7.5 Avalon-MM Master模板 260

11.8 高速数据采集系统 263

11.8.1 安装Avalon-MM Master模板 263

11.8.2 完善Qsys系统 265

11.8.3 修改Quartus中的Qsys例化 269

11.8.4 测试逻辑设计 271

11.9 本章小结 275

第12章 Linux驱动编写与编译 276

12.1 基本字符型设备驱动 276

12.1.1 字符型设备驱动框架 277

12.1.2 PWM控制器驱动的完整源码 286

12.1.3 驱动编译Makefile 291

12.1.4 Ubuntu下编译设备驱动 292

12.1.5 字符型设备驱动验证 293

12.2 基于DMA的字符型设备驱动 297

12.2.1 Avalon-MM Master Write驱动 298

12.2.2 Avalon-MM Master Write测试 304

12.3 本章小结 311

附录A 外设地址映射 312

附录B HPS GPIO映射 314

参考文献 315