SOC FPGA 嵌入式设计和开发教程

本书特色

[

本书以Intel Cyclone v SoC FPGA系列器件为例,介绍了SoC
FPGA 器件的架构特点、常用电路设计以及软硬件开发流程和开发技巧。内容编排按照开发一个基于SoC FPGA 的应用系统所需掌握的*基本的知识路线展开,从基本的Linux系统操作到分析一个*基础的应用系统框架,然后基于该应用系统框架,详细讲解应用系统的构建、BSP文件的生成、启动引导文件的更新、Ubuntu虚拟机安装配置、Linux内核配置与编译。接着介绍如何在嵌入式Linux系统环境下,使用虚拟地址映射的方式编写相应的应用程序来实现该应用系统中各个功能IP的编程控制和调试。*后以两个实际的例子展示如何通过HPS和FPGA的片上通信桥实现软硬件联合开发的过程,包括FPGA侧逻辑开发, IP总线封装,Linux驱动程序的编写编译,Linux应用程序的编写与运行等。
本书既可作为工程类应用、电子信息类专业本科生以及相关专业专科生的嵌入式系统基础类课程的教材,也可作为SoC
FPGA自学人员以及从事SoC FPGA开发的工程技术人员的培训教材和参考用书。

]

内容简介

[

随着半导体工艺的提升,芯片厂商将更多的功能集成到单一的半导体芯片之中,芯片集成度的提高,随之带来的是应用设计复杂度的提高。Intel在其FPGA 芯片上集成了ARM Cortex处理器,从而形成一颗基于FPGA 的SoC芯片,这是一个典型的可配置的单芯片系统。
目前一颗主流的FPGA 芯片,除了逻辑单元外,还集成了嵌入式存储器块、锁相环、DSP块,甚至高速收发器电路,并将ARM Core集成到FPGA 芯片上,在带来功能高度集成的同时,再一次增加了应用设计的复杂度。
目前,基于SoC FPGA 嵌入式系统设计的参考书和教材还很少,而小梅哥的这本书从*基本的概念讲起,由浅入深,再配合大量的截图,一步一步地介绍了整个设计的流程。该书内容涵盖了基于SoC FPGA 的硬件系统搭建、Linux操作系统的配置,以及软件的设计与调试方法等,手把手地将一个初学者带进SoC FPGA 嵌入式系统的设计入门,非常值得推荐。
希望作者在本书的基础上,再接再厉,不断地写出更好的参考书,也希望广大读者对本书给予大力支持! Intel
FPGA 大学计划经理
袁亚东

]

作者简介

[

梅雪松,网名“小梅哥”,拥有多年电子设计经验,擅长知识的总结和传播,有《小梅哥和你一起深入学习FPGA》、《小梅哥FPGA学习笔记》两个系列网络博文;并推出了手把手式视频教程《FPGA设计思想与验证方法视频教程》,该教程在各大视频点击平台备受好评,网友称其为学习FPGA基础与提高教学视频的不二之选。同时,开设FPGA实地培训班,进行网络和实地FPGA培训,并多次进入高校进行SoC 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
DDR3SDRAM 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中的 HPS启动流程介绍 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
基于虚拟地址映射的I2C编程应用
145
6.5.1
OpenCores I2C IP简介… 146
6.5.2
OpenCores I2C IP寄存器映射
146
6.5.3
I2C 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
编写I2C控制器设备节点 … 208
9.5
加载 OC_I2C驱动
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实现I2C编程 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

封面

SOC FPGA 嵌入式设计和开发教程

书名:SOC FPGA 嵌入式设计和开发教程

作者:梅雪松 宋士权 龙

页数:0

定价:¥69.0

出版社:北京航空航天大学出版社

出版日期:2019-04-01

ISBN:9787512422391

PDF电子书大小:51MB 高清扫描完整版

百度云下载:http://www.chendianrong.com/pdf

发表评论

邮箱地址不会被公开。 必填项已用*标注