《SoC FPGA 嵌入式设计和开发教程》[40M]PDF|百度网盘|亲测有效
《SoC FPGA 嵌入式设计和开发教程》[40M]PDF|百度网盘|亲测有效

SoC FPGA 嵌入式设计和开发教程 pdf下载

isbn:9787512422391

作者: 梅雪松,宋士权,陈云

出版社 北京航空航天大学出版社
出版年 2019-03-01
ISBN 9787512422391
装帧 精装
评分 0.0(豆瓣)
限时特惠 00:00:00
活动结束后恢复原价
纸质书参考价 ¥8
电子版限时价 ¥0.00 省 8 元

选择版本

不满意全额退款
发货失败双倍赔偿
邮箱即时发送

内容简介

本篇主要提供SoC FPGA 嵌入式设计和开发教程电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

产品特色


编辑推荐

     随着半导体工艺的提升,芯片厂商将更多的功能集成到单一的半导体芯片之中,芯片集成度的提高,随之带来的是应用设计复杂度的提高。Intel在其FPGA 芯片上集成了ARM Cortex处理器,从而形成一颗基于FPGA 的SoC芯片,这是一个典型的可配置的单芯片系统。

     目前一颗主流的FPGA 芯片,除了逻辑单元外,还集成了嵌入式存储器块、锁相环、DSP块,甚至高速收发器电路,并将ARM Core集成到FPGA 芯片上,在带来功能高度集成的同时,再一次增加了应用设计的复杂度。

     目前,基于SoC FPGA 嵌入式系统设计的参考书和教材还很少,而小梅哥的这本书从最基本的概念讲起,由浅入深,再配合大量的截图,一步一步地介绍了整个设计的流程。该书内容涵盖了基于SoC FPGA 的硬件系统搭建、Linux操作系统的配置,以及软件的设计与调试方法等,手把手地将一个初学者带进SoC FPGA 嵌入式系统的设计入门,非常值得推荐。

希望作者在本书的基础上,再接再厉,不断地写出更好的参考书,也希望广大读者对本书给予大力支持!

     Intel 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开发的工程技术人员的培训教材和参考用书。


作者简介

     梅雪松,网名“小梅哥”,拥有多年电子设计经验,擅长知识的总结和传播,有《小梅哥和你一起深入学习FPGA》、《小梅哥FPGA学习笔记》两个系列网络博文;并推出了手把手式视频教程《FPGA设计思想与验证方法视频教程》,该教程在各大视频点击平台备受好评,网友称其为学习FPGA基础与提高教学视频的S选。同时,开设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


前言/序言

     随着集成电路生产工艺的不断进步,芯片中晶体管的数量也在不断增加。GAL、PLD、CPLD、FPGA 等一系列的可编程逻辑数字集成电路相继诞生。新型架构芯片的出现,不仅得益于集成电路设计和制造工艺的进步,而且更离不开实际的应用需求。现代数字系统大多都朝小型化、集成化方向发展,而作为一种通用的可编程逻辑器件,FPGA 以其灵活的现场可编程特性、强大的并行处理能力,在众多高性能数字系统中都有应用。

     鉴于很多高性能的数字系统都离不开FPGA 器件,为了进一步降低硬件系统的复杂度,各大FPGA 厂家都推出了基于各自FPGA 的软核CPU 方案。通过该方案,设计者能够将原本需要通过外置CPU 实现的功能,转移到FPGA 芯片中使用通用逻辑搭建的软核CPU 来实现,在保证系统功能和性能的前提下,简化硬件系统设计,提高系统集成度,降低维护难度。但是受限于FPGA 中通用逻辑的可运行最大频率,各种软核CPU 的运行频率都较低,一般不超过200 MHz,再加上架构的原因,各种软核CPU 的软件生态都远赶不上各种常用的单片机。因此,基于软核处理器的应用开发受到了较大的限制。

     在此情形下,众多的FPGA 厂商又相继推出了集成高性能ARM 硬核处理器和通用可编程逻辑的新型架构芯片。这其中就包括以Xilinx的Zynq系列为代表的全可编程芯片以及Intel 的可编程片上系统芯片(SoC FPGA)。

     无论是Xilinx的Zynq系列芯片,还是Intel的SoC FPGA 芯片,两者的架构都是相似的,都是在同一个晶片上将高性能的ARM Cortex A 系列处理器和FPGA有机结合,并辅以各种常见的外设,实现完整的系统。依赖于ARM 处理器强大的开发工具链和软件生态环境,使用这一类器件进行系统设计,开发和调试的时间将被大大缩短。

     得益于Intel大学计划提供的众多学习机会和学习资料,笔者从2014年底开始接触Intel的SoC FPGA,并开始了断断续续的学习。但是由于在这之前,作者并没有任何基于Linux系统开发的基础,因此学习的过程非常的艰辛,学习的资料主要来SoC FPGA 嵌入式设计和开发教程自网络博文和一些讲解Linux开发的书籍。幸好在这个学习的过程中得到了很多朋友的无私帮助,尤其是骏龙科技的工程师,也是本书的第二作者宋士权,多次为我提供最新的一手学习资料,让我最终坚持了下来。

     在决定编写本书之前,市面上还很难找到系统讲解Intel SoC FPGA 开发的书籍,作者作为一个草根创业者,既对该器件的开发抱有极大的兴趣,同时又受限于个人的知识积累,因此学习过程本身就是一个不断试错的过程。本书从某种意义上来说,可以算做作者学习SoC FPGA 开发的学习笔记。由于作者能力有限,虽然在写作过程中投入了大量的精力和时间,但错误与不妥之处还是在所难免,读者在阅读本书时如果发现任何疏漏,可及时反馈给我们,以便我们及时更正。读者可以通过本书配套的网站www.corecourse.cn留言反馈在阅读本书的过程中所发现的问题,或者在学习过程中遇到的疑惑;同时,也可以在该网站上以本书名作为关键词,搜索与本书相关的软硬件配套资源。