描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 是国际标准书号ISBN: 9000302002987
广受好评的嵌入式开发经典畅销书全新改版,ChinaUnix社区力荐
本书第1、2版累计17次印刷,畅销4万多册,长期居同类图书销售排行榜前列
全面、深入剖析基于ARM体系结构的嵌入式Linux系统开发的原理与应用
超值资料:707分钟教学视频 源代码 思维导图 教学PPT 习题答案 软件工具
内容新颖:以当前流行的开发环境和工具的稳定版本进行讲解。
内容全面:涵盖ARM嵌入式Linux系统开发的大部分重要知识点和典型应用。
由浅入深:从嵌入式系统的软硬件开始讲解,逐步深入嵌入式开发的原理与应用。
重点突出:详细介绍Bootloader和Linux内核的相关功能与移植方法。
注重实践:详解53个典型实例和5个应用实战案例,提高读者的开发水平。
视频讲解:专门为重点内容录制多媒体教学视频,帮助读者高效、直观地学习。
提供习题:每章都提供习题,帮助读者巩固和自测重点内容的掌握情况。
注重技巧:各章都提供思维导图,帮助读者梳理知识点并建立知识体系。
资深硬件工程师近10年FPGA项目开发经验的总结。
理论结合大量实例,详解Xilinx FPGA的设计方法与技巧。
提供练习题、教学课件(PPT),方便学习与教学。
内容丰富:首先从FPGA的理论知识入手,详细介绍FPGA芯片设计的背景、常用专业术语、硬件描述语言的基本语法;然后介绍FPGA的验证方法和知识产权应用;最后详细介绍低速接口和高速接口设计实例,并总结FPGA的开发技巧。
实例丰富:讲解中穿插多个典型实例,带领读者上手实践,并加深对FPGA设计与验证技术的理解,进而快速掌握FPGA的设计流程,上手开发实际产品和项目。
图文并茂:讲解中给出大量的示意图,帮助读者高效、直观地理解FPGA的各种概念和实现原理。
注重技巧:总结大量的开发技巧,让读者少走很多弯路,从而加速新产品的上市,甚至提前交付项目。
源码实用:本书涉及的实例源码大多来源于实际项目,其注释丰富,易于阅读,读者稍加修改即可直接用于自己的项目。
提供习题:每章都提供习题,帮助读者巩固和提高所学的知识。
配教学PPT:提供配套教学PPT,方便相关院校的授课教师教学时使用。
《ARM嵌入式Linux系统开发详解(第3版)》是获得大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第3版。本书由浅入深,全面、系统地介绍基于ARM体系结构的嵌入式Linux系统开发涉及的方方面面知识,并给出53个典型实例和5个综合案例供读者实战演练。本书提供707分钟配套教学视频、程序源代码、思维导图、教学PPT、习题参考答案和软件工具等超值配套资源,帮助读者高效、直观地学习。
本书共25章,分为4篇。第1篇基础知识,包括嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境搭建、第一个Linux应用程序;第2篇应用开发,包括Linux应用程序开发基础、多进程和多线程开发、网络通信应用、串口通信编程、嵌入式GUI程序开发、软件项目管理;第3篇系统分析,包括ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux的启动流程、Linux文件系统、交叉编译工具、强大的命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术;第4篇项目实战,包括Linux设备驱动开发基础知识、网络设备驱动程序开发、Flash设备驱动开发和USB驱动开发。
本书内容丰富,实用性强,适合ARM嵌入式Linux系统开发的初学者、从业者、研究者和爱好者等相关人员阅读,也适合IT培训机构和高等院校的相关专业作为教材。
《Xilinx FPGA工程师成长手记》以Xilinx公司的FPGA为开发平台,以Verilog HDL、System Verilog、VHDL和Vivado为开发工具,详细介绍FPGA常用接口的实现方法,并通过大量实例,分析FPGA实现过程中的具体技术细节。《Xilinx FPGA工程师成长手记》提供相关实例的源码文件和配套教学PPT,以方便读者学习和相关高校教学。
《Xilinx FPGA工程师成长手记》共10章,分为2篇。第1篇Xilinx FPGA基础知识,包括FPGA概述、FPGA的基本理论、FPGA的硬件描述语言和FPGA功能验证;第2篇Xilinx FPGA逻辑设计,包括FPGA的知识产权、FPGA代码封装、FPGA低速接口设计、FPGA高速接口设计、FPGA硬件调试和FPGA开发技巧。
《Xilinx FPGA工程师成长手记》内容充实,实例丰富,非常适合FPGA开发和接口设计领域的入门读者阅读,也适合硬件设计领域的工程师和科研人员阅读,还适合作为相关院校电子信息等专业本科生和研究生的教材。
第1篇 基础知识
第1章 嵌入式系统入门 2
1.1 什么是嵌入式系统 2
1.2 嵌入式系统的应用领域 2
1.3 嵌入式系统的发展 4
1.4 典型嵌入式系统的组成 6
1.5 小结 6
1.6 习题 7
第2章 嵌入式软硬件系统 8
2.1 电路基础知识 8
2.2 计算机基础知识 10
2.3 软件基础知识 12
2.4 操作系统基础知识 15
2.5 小结 17
2.6 习题 17
第3章 ARM处理器 19
3.1 微处理器和微控制器 19
3.2 ARM处理器简介 19
3.3 ARM指令集 21
3.4 ARM体系结构 24
3.5 ARM的功能选型 29
3.6 小结 32
3.7 习题 33
第4章 嵌入式Linux 34
4.1 常见的嵌入式操作系统 34
4.2 嵌入式Linux操作系统 36
4.3 小结 38
4.4 习题 39
第5章 软件开发环境搭建 40
5.1 安装Linux系统 40
5.2 运行在Windows上的Linux系统 45
5.3 Linux的常用工具 49
5.4 Windows的常用工具 58
5.5 ARM的集成开发环境ADS 66
5.6 小结 70
5.7 习题 70
第6章 第一个Linux应用程序 71
6.1 向世界问好——Hello,World! 71
6.2 程序背后做了什么 73
6.3 程序如何来的——编译的全过程 75
6.4 更简单的办法——用Makefile管理工程 77
6.5 小结 79
6.6 习题 79
第2篇 应用开发
第7章 Linux应用程序开发基础 82
7.1 内存管理和使用 82
7.2 ANSI C文件管理 89
7.3 POSIX文件I/O编程 96
7.4 小结 103
7.5 习题 104
第8章 多进程和多线程开发 105
8.1 多进程开发 105
8.2 多线程开发 117
8.3 小结 122
8.4 习题 122
第9章 网络通信应用 124
9.1 网络通信基础 124
9.2 Socket通信的基本概念 128
9.3 Socket高级应用 139
9.4 小结 143
9.5 习题 144
第10章 串口通信编程 145
10.1 串口简介 145
10.2 开发串口应用程序 147
10.3 串口应用案例——发送手机短信 154
10.4 小结 161
10.5 习题 161
第11章 嵌入式GUI程序开发 163
11.1 Linux GUI简介 163
11.2 开发图形界面程序 165
11.3 深入Qt编程 170
11.4 将Qt移植到ARM开发板上 177
11.5 模拟器QEMU 188
11.6 小结 191
11.7 习题 191
第12章 软件项目管理 193
12.1 源代码管理 193
12.2 版本控制系统Git 195
12.3 常见的开发文档 202
12.4 文档维护工具 203
12.5 Bug跟踪系统 210
12.6 小结 214
12.7 习题 214
第3篇 系统分析
第13章 ARM体系结构及开发实例 216
13.1 ARM体系结构 216
13.2 编程模型 218
13.3 内存管理单元 223
13.4 常见的接口和控制器 225
13.5 小结 228
13.6 习题 228
第14章 深入Bootloader 230
14.1 初识Bootloader 230
14.2 U-Boot分析 232
14.3 U-Boot的启动流程分析 234
14.4 U-Boot移植 246
14.5 小结 249
14.6 习题 249
第15章 解析Linux内核 251
15.1 基础知识 251
15.2 Linux内核的子系统 258
15.3 Linux内核代码的工程结构 264
15.4 内核编译系统 267
15.5 小结 275
15.6 习题 275
第16章 嵌入式Linux的启动流程 277
16.1 Linux内核的初始化流程 277
16.2 PC的初始化流程 278
16.3 嵌入式系统的初始化 280
16.4 Linux内核的初始化 282
16.5 启动init内核进程 287
16.6 根文件系统的初始化 288
16.7 内核交出权限 295
16.8 systemd进程 295
16.9 初始化RAM Disk 298
16.10 小结 300
16.11 习题 301
第17章 Linux文件系统 302
17.1 Linux文件管理 302
17.2 Linux文件系统的原理 309
17.3 常见的Linux文件系统 311
17.4 其他文件系统 317
17.5 小结 321
17.6 习题 322
第18章 交叉编译工具 323
18.1 什么是交叉编译 323
18.2 交叉编译产生的原因 324
18.3 安装交叉编译工具的条件 324
18.4 如何安装交叉编译工具 324
18.5 小结 326
18.6 习题 327
第19章 强大的命令系统BusyBox 328
19.1 BusyBox简介 328
19.2 交叉编译BusyBox 333
19.3 在目标板上安装BusyBox 335
19.4 小结 337
19.5 习题 337
第20章 Linux内核移植 338
20.1 Linux内核移植的要点 338
20.2 Linux内核的平台代码结构 339
20.3 实现交叉编译 340
20.4 小结 344
20.5 习题 344
第21章 内核和应用程序调试技术 345
21.1 使用gdb调试应用程序 345
21.2 基本的调试技术 345
21.3 多进程调试 354
21.4 调试意外终止的程序 357
21.5 内核调试方法 359
21.6 小结 364
21.7 习题 364
第4篇 项目实战
第22章 Linux设备驱动开发基础知识 366
22.1 设备驱动简介 366
22.2 Linux内核模块简介 367
22.3 Linux设备驱动工作方式简介 372
22.4 字符设备驱动开发案例 377
22.5 小结 381
22.6 习题 381
第23章 网络设备驱动程序开发 382
23.1 网络基础知识 382
23.2 以太网基础 385
23.3 网卡的工作原理 388
23.4 内核网络分层结构 389
23.5 内核网络设备驱动框架 392
23.6 DM9000网卡驱动分析案例 396
23.7 小结 406
23.8 习题 406
第24章 Flash设备驱动开发 407
24.1 Linux Flash驱动结构 407
24.2 Flash设备基础 409
24.3 内核MTD层 411
24.4 Flash设备框架 419
24.5 NAND Flash设备驱动分析案例 421
24.6 小结 432
24.7 习题 432
第25章 USB驱动开发 433
25.1 USB体系概述 433
25.2 USB驱动程序框架 435
25.3 USB驱动案例剖析 447
25.4 小结 452
25.5 习题 452
目录
第1篇 Xilinx FPGA基础知识
第1章 FPGA概述 2
1.1 什么是FPGA 2
1.2 FPGA芯片厂商 2
1.3 FPGA的应用领域 4
1.4 FPGA的设计流程 5
1.5 FPGA的人才需求 9
1.6 FPGA工程师的基本技能 10
1.7 本章习题 11
第2章 FPGA的基本理论 12
2.1 FPGA时钟 12
2.2 FPGA复位 14
2.3 FPGA时序 15
2.4 FPGA异步时钟域 17
2.5 FPGA约束 23
2.6 FPGA的专业术语 24
2.7 本章习题 25
第3章 FPGA的硬件描述语言 26
3.1 硬件描述语言概述 26
3.2 VHDL语法基础 27
3.3 Verilog HDL语法基础 30
3.4 System Verilog语法基础 37
3.5 FPGA设计规范及编程技巧 39
3.6 本章习题 42
第4章 FPGA功能验证 43
4.1 验证概述 43
4.2 编写仿真激励 45
4.3 系统函数 48
4.4 验证软件 51
4.5 验证技巧 61
4.6 本章习题 66
第2篇 Xilinx FPGA逻辑设计
第5章 FPGA的知识产权 68
5.1 MMCM IP核设计 68
5.2 FIFO IP核设计 75
5.3 RAM IP核设计 83
5.4 Counter IP核设计 91
5.5 本章习题 96
第6章 FPGA代码封装 97
6.1 IP核封装 97
6.2 网表封装 108
6.3 本章习题 121
第7章 FPGA低速接口设计 122
7.1 SPI逻辑设计 122
7.2 UART逻辑设计 128
7.3 IIC逻辑设计 136
7.4 CAN逻辑设计 145
7.5 本章习题 155
第8章 FPGA高速接口设计 156
8.1 DDR3接口设计 156
8.2 PCIE接口设计 182
8.3 本章习题 201
第9章 FPGA硬件调试 202
9.1 FPGA硬件调试概述 202
9.2 闪烁灯硬件调试 203
9.3 本章习题 219
第10章 FPGA开发技巧 220
10.1 FPGA时钟管理 220
10.2 FPGA复位设计 225
10.3 FPGA时钟域处理 227
10.4 FPGA通用模块设计 236
10.5 FPGA开发检查表 238
10.6 本章习题 245
“随着计算机处理器技术的不断发展,嵌入式系统的应用越来越广泛,目前已经普遍应用于人们生活的方方面面,如手机、平板计算机和家用电器等领域。嵌入式系统开发占据计算机系统开发的比例越来越高。
嵌入式系统开发与传统的PC程序开发不同,前者涉及软硬件开发,是一个协同工作的统一体。目前,市场上已经有许多嵌入式系统硬件和操作系统软件,其中应用最广泛的是ARM嵌入式处理器和Linux系统,而这方面的书籍大多是针对某个特定领域编写的,专业性和针对性都较强,不适合初学者学习。基于这个原因,笔者编写了本书。
本书是获得大量读者好评的“Linux典藏大系”中的《ARM嵌入式Linux系统开发详解》的第3版。截至本书完稿,本书第1、2版累计17次印刷,印数超过4万册。本书在第2版的基础上进行了全新改版,不但更新了开发环境,而且对第2版中的一些疏漏进行了修订,并对书中的一些实例和代码进行了修订,使其更加易读。相信读者可以在本书的引领下跨入嵌入式开发的大门。
关于“Linux典藏大系”
“Linux典藏大系”是专门为Linux技术爱好者推出的系列图书,涵盖Linux技术的方方面面,可以满足不同层次和各个领域的读者学习Linux的需求。该系列图书自2010年1月陆续出版,上市后深受广大读者的好评。2014年1月,创作者对该系列图书进行了全面改版并增加了新品种。新版图书一上市就大受欢迎,各分册长期位居Linux图书销售排行榜前列。截至2023年10月底,该系列图书累计印数超过30万册。可以说,“Linux典藏大系”是图书市场上的明星品牌,该系列中的一些图书多次被评为清华大学出版社“年度畅销书”,还曾获得“51CTO读书频道”颁发的“最受读者喜爱的原创IT技术图书奖”,另有部分图书的中文繁体字版在中国台湾出版发行。该系列图书的出版得到了国内Linux知名技术社区ChinaUnix(简称CU)的大力支持和帮助,读者与CU社区中的Linux技术爱好者进行了广泛的交流,取得了良好的学习效果。另外,该系列图书还被国内上百所高校和培训机构选为教材,得到了广大师生的一致好评。
关于第3版
随着技术的发展,本书第2版与当前ARM嵌入式Linux系统开发环境和涉及的开发工具等有所脱节,这给读者的学习带来了不便。应广大读者的要求,笔者结合当前?ARM嵌入式Linux系统开发技术的发展,对第2版图书进行了全面的升级改版,推出第3版。相比第2版图书,第3版在内容上的变化主要体现在以下几个方面:
* 将Linux系统更改为Ubuntu 22.04;
* 对Linux内核的介绍增加5.x系列;
* 对IT业界的动态进行更新;
* 对GCC软件包和Bugzilla等工具进行更新;
* 修订第2版中的一些疏漏,并重新表述一些不准确的内容;
* 新增对模拟器Qemu的介绍;
* 新增对版本控制系统Git的介绍;
* 新增对文档维护工具的介绍;
* 对一些函数及其形式进行修改;
* 新增思维导图和课后习题,以方便读者梳理和巩固所学知识。
本书特色
1.视频教学,高效、直观
本书特意提供707分钟多媒体教学视频,以高效、直观的方式讲解重要的知识点和操作,从而帮助读者取得更好的学习效果。
2.内容全面、新颖
本书涵盖ARM嵌入式Linux系统开发的大部分重要知识点,包括Linux内核的构成、工作流程、驱动程序开发、文件系统和程序库等,而且基于当前流行的开发环境和工具的稳定版本进行讲解,便于读者对ARM嵌入式Linux系统开发的最新知识有较为全面的了解。
3.讲解由浅入深,循序渐进
ARM嵌入式Linux系统开发涉及的知识面广,技术复杂。为了让初学者快速入门,本书一开始先对嵌入式系统的软硬件进行全面介绍,然后从关键点入手,理论知识结合典型实例,抽丝剥茧地剖析技术原理,从而让读者对嵌入式开发有深入的理解。
4.实例丰富,实用性强
本书结合?53?个完整的实例讲解重要的知识点。这些实例都有完整的实验环境描述,并提供详细的实现步骤,而且经过笔者一一验证,给出了实验结果,有较强的实用性,可以带领读者上手实践,从而加深对知识的理解。
5.案例典型,提高实战水平
本书详细分析串口应用、字符设备驱动、DM9000网卡驱动、NAND Flash设备驱动和USB驱动5个典型案例的实现,让读者了解实际的ARM嵌入式Linux系统开发流程,提高开发水平,尤其独立开发驱动程序的水平。
6.提供习题、程序源代码、思维导图和教学PPT
本书特意在每章后提供多道习题,用以帮助读者巩固和自测该章的重要知识点,另外还提供程序源代码、思维导图和教学PPT等配套资源,以方便读者学习和老师教学。
本书内容
第1篇 基础知识
本篇涵盖第1~6章,主要包括嵌入式系统入门、嵌入式软硬件系统、ARM处理器、嵌入式Linux、软件开发环境搭建、第一个Linux应用程序。通过学习本篇内容,读者可以掌握ARM嵌入式Linux系统开发的基础知识和开发环境的搭建等。
第2篇 应用开发
本篇涵盖第7~12章,主要包括Linux应用程序开发基础、多进程和多线程开发、网络通信应用、串口通信编程、嵌入式GUI程序开发、软件项目管理。通过学习本篇内容,读者可以掌握ARM嵌入式Linux系统开发的核心技术与应用。
第3篇 系统分析
本篇涵盖第13~21章,主要包括ARM体系结构及开发实例、深入Bootloader、解析Linux内核、嵌入式Linux的启动流程、Linux文件系统、交叉编译工具、强大的命令系统BusyBox、Linux内核移植,以及内核和应用程序调试技术。通过学习本篇内容,读者可以对Linux系统从内核到文件系统再到启动流程等有更深入的理解。
第4篇 项目实战
本篇涵盖第22~25章,主要包括Linux设备驱动开发基础知识、网络设备驱动程序开发、Flash设备驱动开发、USB驱动开发。通过学习本篇内容,读者可以全面掌握ARM嵌入式Linux系统开发的基本流程与思想。
读者对象
* ARM嵌入式Linux系统开发初学者;
* 需要系统学习ARM嵌入式Linux系统开发的人员;
* ARM嵌入式Linux系统开发从业人员;
* ARM嵌入式Linux系统开发爱好者;
* 大中专院校的学生;
* 社会培训班的学员。
配书资源获取方式
本书涉及的配套资源如下:
* 高清教学视频;
* 程序源代码;
* 高清思维导图;
* 习题参考答案;
* 教学课件(PPT);
* 书中涉及的工具。
上述配套资源有3种获取方式:关注本书微信公众号(见书),然后回复数字“29”自动获取下载链接;在清华大学出版社网站上搜索到本书,然后在本书页面上找到“资源下载”栏目,单击“网络资源”按钮进行下载;在本书技术论坛上的Linux模块进行下载。
技术支持
虽然笔者对书中所述内容都尽量予以核实,并多次进行文字校对,但因时间所限,可能还存在疏漏和不足之处,恳请读者批评与指正。
读者在阅读本书时若有疑问,可以通过以下方式获得帮助:
* 加入本书QQ交流群(见书)进行提问;
* 在本书技术论坛上留言,会有专人负责答疑;
* 发送电子邮件获得帮助。
弓雷
前言
FPGA(Field Programmable Gate Array,现场可编程门阵列)是在PAL和GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。最初,FPGA主要应用于传统领域,随着信息产业与微电子技术的发展,其发展速度越来越快。尤其近几年,FPGA的发展非常迅猛,其影响力越来越大。例如,比特币挖矿、数据采集、人工智能等领域都可以看到FPGA的身影。如今,FPGA的应用遍及航空航天、汽车、医疗和工业控制等领域。
2010年,笔者在大学导师那里第一次接触FPGA,那时感觉FPGA很神秘。正是这种神秘感,吸引笔者进入了该行业,开始了FPGA编程之旅。笔者大学毕业至今一直从事FPGA逻辑设计与验证的相关工作,这些工作经历使得笔者积累了丰富的项目开发经验,如今已在FPGA接口应用领域取得了一些成就。
基于上述经历,笔者想通过一本书将自己多年以来积累的FPGA设计心得和项目开发经验分享给需要的人。具体而言,笔者编写本书的主要原因有以下4点:
* 行业需求使然。FPGA行业发展迅猛,应用领域广泛,人才缺口很大,而图书市场上缺少通俗易懂且实用性强的能带领读者快速上手的图书。
* 笔者一直在思考,有没有一种低门槛、易消化、易掌握和易上手的方法,让初学者可以快速掌握FPGA技术,笔者想通过本书来尝试解决这个问题。
* 笔者想通过本书分享自己多年积累的FPGA设计心得和项目开发经验,让FPGA学习人员少走弯路,能更快地将所学知识应用于产品和项目开发,从而加速产品和项目的上市。
* 笔者想通过一本书,让行业内入职的新人可以通过自学快速掌握FPGA,从而节省大量的培训时间和成本。
本书以一位FPGA从业者的身份,详细介绍FPGA产品或项目开发所需要的基本技能。本书首先从FPGA的理论知识讲起,详细介绍FPGA芯片的发展背景、常用专业术语和硬件描述语言的基本语法,然后介绍FPGA的验证方法和知识产权应用,最后结合实例详细介绍低速接口设计与高速接口设计,并总结FPGA的开发技巧,以加深读者对FPGA设计与验证技术的理解。通过阅读本书,读者可以系统地掌握FPGA设计的精髓和流程,并达到实际上手开发产品或项目的水平。
本书特色
* 内容丰富:首先从FPGA的理论知识入手,详细介绍FPGA芯片设计的背景、常用专业术语、硬件描述语言的基本语法;然后介绍FPGA的验证方法和知识产权应用;最后详细介绍低速接口和高速接口设计实例,并总结FPGA的开发技巧。
* 实例丰富:在讲解中穿插多个典型实例,带领读者上手实践,并加深对?FPGA设计与验证技术的理解,进而快速掌握FPGA的开发流程,上手开发实际产品和项目。
* 图文并茂:在讲解中给出大量的示意图,帮助读者高效、直观地理解FPGA的各种概念和实现原理。
* 注重技巧:总结大量的开发技巧,让读者少走很多弯路,从而加速新产品的上市,甚至提前交付项目。
* 源码实用:本书涉及的实例源码大多来源于实际项目,并给出详细的注释,读者对这些源码稍加修改即可直接用于实际项目。
* 提供习题:每章都提供习题,帮助读者巩固和提高所学的知识。
* 配教学PPT:提供配套教学PPT,方便相关院校的授课教师教学时使用。
本书内容
第1篇 Xilinx FPGA基础知识
本篇涵盖第1~4章,主要介绍FPGA的概念、设计流程、基本理论、描述语言和功能验证等内容。通过学习本篇内容,读者可以快速掌握FPGA设计的基础知识。
第1章FPGA概述,主要介绍FPGA的芯片厂商、应用领域、设计流程,以及FPGA工程师需要掌握的基本技能。通过学习本章内容,读者可以对FPGA有个大致的了解。
第2章FPGA的基本理论,主要介绍FPGA的时钟、复位、时序、异步时钟域和约束等相关知识。通过学习本章内容,读者可以系统地了解FPGA的基本理论知识。这些知识在FPGA设计中经常用到,其伴随FPGA设计的整个过程,是FPGA逻辑设计不可缺少的一部分。
第3章FPGA的硬件描述语言,主要介绍VHDL、Verilog HDL和System Verilog语言的语法基础,以及FPGA设计规范与编程技巧。通过学习本章内容,读者可以快速掌握FPGA的常用硬件描述语言,以便进行项目开发。
第4章FPGA功能验证,主要介绍验证的基本概念、仿真激励的编写、常用系统函数任务的调用,以及Vivado仿真软件的使用等。通过学习本章内容,读者可以学会验证自己编写的模块是否满足功能要求。
第2篇 Xilinx FPGA逻辑设计
本篇涵盖第5~10章,主要介绍FPGA的常用IP核设计、用户代码封装、低速接口设计、高速接口设计、硬件调试和开发技巧等内容。FPGA在逻辑接口领域的应用非常广泛。例如,在实际产品的设计中,很多情况下需要与PC(个人计算机)进行数据通信,将采集的数据发送给PC处理,或者将处理后的结果传送给PC进行显示等。通过学习本篇内容,读者可以快速掌握FPGA接口设计的核心基础知识,从而为实际项目开发打下坚实的基础。
第5章FPGA的知识产权,主要介绍MMCM、FIFO、RAM、Counter等常用IP核的设计与应用。通过学习本章内容,读者可以快速掌握常用IP核的设计方法。
第6章FPGA代码封装,主要介绍用户代码的IP核封装和网表文件封装的基本流程。通过学习本章内容,读者可以快速掌握FPGA代码封装的方法,为代码加密设计打下基础。
第7章FPGA低速接口设计,主要介绍SPI、UART、IIC和CAN这4种总线的逻辑设计方法。通过学习本章内容,读者可以掌握低速接口设计的方法,包括方案设计、代码设计、功能仿真和硬件调试。
第8章FPGA高速接口设计,主要介绍DDR3和PCIE这两种接口的设计方法。通过学习本章内容,读者可以快速掌握高速接口的设计方法,包括方案设计、代码设计、功能仿真与硬件调试。
第9章FPGA硬件调试,基于Vivado软件环境,以一个简单的闪烁灯为例,介绍其FPGA硬件调试流程。通过学习本章内容,读者可以简单地了解FPGA的硬件调试流程。对于一些复杂的FPGA设计,可以通过本章介绍的调试方法进行硬件逻辑功能的调试。
第10章FPGA开发技巧,主要介绍笔者基于Xilinx FPGA进行逻辑设计与验证过程中总结的一些FPGA项目开发技巧与心得体会,包括FPGA时钟管理、FPGA复位设计、FPGA时钟域处理、FPGA通用模块设计和FPGA检查表开发。通过学习本章内容,读者可以掌握FPGA的开发技巧,从而少走弯路,提高FPGA产品设计的效率。
读者对象
* FPGA接口设计入门人员;
* FPGA接口设计从业人员;
* 硬件设计工程师;
* 硬件设计科研人员;
* 高校电子信息等相关专业的学生。
配套资源获取
本书提供实例源码文件、习题参考答案和教学PPT等配套资源。这些资源有两种获取方式:一是关注微信公众号“方大卓越”,回复数字“26”获取下载链接;二是在清华大学出版社网站(www.tup.com.cn)上搜索到本书,然后在本书页面上找到“资源下载”栏目,单击“网络资源”或“课件下载”按钮进行下载。
致谢
在编写本书的过程中,笔者查阅了大量的资料,参考了Xilinx公司官方网站(http://www.xilinx.com)提供的英文资料以及Vivado提供的IP核数据手册与帮助文档,在此对资料的作者和提供者表示衷心的感谢!另外也要感谢北京至芯开源科技有限责任公司总经理雷斌、FPGA资深工程师党亚鹏、FPGA高级工程师宋哲和系统架构工程师郝焕妮,他们4位为本书提出了宝贵的意见和建议,在此表示衷心的感谢!此外,感谢妻子全力照顾家庭,为笔者编写本书腾出了大量的时间。
售后服务
由于笔者水平所限,书中可能还存在疏漏与不足之处,恳请广大读者批评与指正。同时也欢迎广大读者就FPGA设计和验证等相关技术与笔者交流。
联系邮箱:[email protected]。
寇强
2024年6月于西安
评论
还没有评论。