标题：基于FPGA的SOPC嵌入式系统设计与典型实例
图书信息
作　者：王刚，张潋 [1]编著  出 版 社： 电子工业出版社
出版时间： 2009-1-1
页　数：504页
开　本： 16开
ISBN 9787121079184
分类： 图书 >> 计算机/电子设计>>FPGA
定价：￥65.00元（含光盘1张）
宣传语
实例丰富 即学即用
内容简介
基于FPGA的SOPC设计技术是当前电子系统设计领域最前沿的技术之一。全书通过核心技术与典型实例的形式，全面系统、深入浅出地介绍了基于FPGA的嵌入式SOPC系统设计技术与应用实例。全书共分14章，第1～3章简要介绍了FPGA硬件结构知识、Verilog HDL编程基础、FPGA常用开发工具，引导读者入门；第4～7章重点对嵌入式SOPC系统设计技术进行了细致阐述，内容包括：SOPC硬件系统开发、SOPC软件系统开发、Avalon总线规范、Nios II外围设备及其编程；第8～14章通过7个典型实例，对基于FPGA的嵌入式SOPC系统设计过程进行实际演练，具体包括：七段数码管时钟显示实例、串口通信DMA传输实例、LED灯控PWM IP核的设计实例、通用TFT-LCD控制器及PS2鼠标设计实例、对对碰游戏设计实例、GPS信息接收系统设计实例以及基于Nios II的I2C总线传输应用设计。经过这些例子的学习，读者设计的能力将迅速提升，产生质的飞跃。
丛书说明
工程技术的电子化、集成化和系统化促进了电子工程技术的发展，同时也促进了电子工程技术在社会各行业中的广泛应用，从近年的人才招聘市场来看，电子工程师的人才需求更是一路走高。
电子工程师如此紧俏，除需求不断走高，人才供不应求外，另一重要原因则是电子工程师的门槛相对而言比较高，这个高门槛则来自于工程师的“经验”和“实践”！
因此，为了满足读者学习和工作需要，解决各种工作中的专业问题，我们紧紧围绕“经验”和“实践”，精心策划组织了此套丛书。
1．丛书范围
现代电子科学技术的一个特点是多学科交叉，因此，工程师应当了解、掌握2门以上的相关学科，知识既精深又广博是优秀的工程师成长为某领域专家的重要标志。本丛书内容涉及软件开发、研发电子以及嵌入式项目开发等，包括单片机、USB接口、ARM、CPLD/FPGA、DSP、移动通信系统等。
2．读者对象
本套书面向各领域的初、中级用户。具体为高校计算机、电子信息、通信工程、自动化控制专业在校大学生，以及从事电子开发和应用行业的科研人员。
3．内容组织形式
本套书紧紧围绕“经验”和“实践”，首先介绍一些相关的基础知识，然后根据不同的模块或应用领域，分篇安排应用程序实例的精讲。基础知识用来为一些初级读者打下一定的知识功底；基础好一点的读者则可以跳过这一部分，直接进入实例的学习。
4．实例特色
在应用实例的安排上，着重突出“应用”和“实用”两个基本原则，安排具有代表性、技术领先性，以及应用广泛的典型实例，让读者学习借鉴。这些实例是从作者多年程序开发项目中挑选出的，也是经验的归纳与总结。
在应用实例的讲解上，既介绍了设计原理、基本步骤和流程，也穿插了一些经验、技巧与注意事项。特别在程序设计思路上，在决定项目开发的质量和成功与否的细节上，尽可能地用简洁的语言来清晰阐述大众易于理解的概念和思想；同时，程序代码部分做了很详细的中文注释，有利于读者举一反三，快速应用和提高。
5．光盘内容
本套书的光盘中包含了丰富的实例原图文件和程序源代码，读者稍加修改便可应用于自己的工作中或者完成自己的课题（毕业设计），物超所值。读者使用之前，最好先将光盘内容全部复制到电脑硬盘中，以便于以后可以直接调用，而不需要反复使用光盘，提高操作速度和学习效率。
6．学习指南
对于有一定基础的读者，建议直接从实例部分入手，边看边上机练习，这样印象会比较深，效果更好。基础差一点的读者请先详细学习书中基础部分的理论知识，然后再进行应用实例的学习。在学习中，尽量做到反复理解和演练，以达到融会贯通、举一反三的功效；特别希望尽量和自己的工作设计联系起来，以达到“即学即会，学以致用”的最大化境界。
本套书主要偏重于实用性，具有很强的工程实践指导性。期望读者在学习中顺利、如意！
光盘说明
1．光盘的内容说明
该光盘包括7个实例文件夹，内容是实例的硬件原理图和程序源代码（如下图所示）。
2．光盘的使用说明
在用户已安装好软件并有开发板作为支持的前提下，使用实例工程的具体方法为：
（1）拷贝某一实例工程到磁盘目录下，由于所有实例均在D盘根目录下进行设计，所以建议用户将其也放置到D:\目录下进行使用，避免不必要的问题，解压缩工程文件夹。
（2）点击文件夹中的.qpf文件，打开工程，在Quartus II中即可以看到整个工程中包含的文件。
（3）建议用户首先对工程进行编译，特别是当用户的软件版本与工程创建使用的版本（7.0版本）不相符合时，首先需要对工程重新编译才可使用。
（4）编译过程中，如果用户使用的开发板不是DE1，请对照相应的开发板手册配置好引脚约束，避免适配的问题。并确定其开发板支持实例工程欲达到的接口（比如如果用户使用的开发板本身不支持PS2接口，那么在对实例4进行鼠标使用的时候就自然得不到成功的结果了）。
（5）编译过程如果报错，请用户尝试删除工程目录下的db文件夹，该文件夹的内容是在笔者机器上编译时所保存的临时数据文件，可能会导致不兼容的问题，删除后重新编译即可解决问题。
（6）编译结束后，打开Nios II IDE（建议7.0版本），打开实例工程中的NiosII程序代码。
（7）编译并运行，即可看到最终的结果。 在此过程中如果软件报错，请在Nios II IDE中重新建立工程，并导入所有的软件文件（注意创建工程时需要指定正确的硬件描述文件.ptf），重新编译运行。
3．软硬件要求
本书实例工程均在Quartus II 7.0和Nios II IDE 7.0版本软件环境下进行设计，并使用Altera DE1开发板通过测试验证。用户使用实例之前应安装相应的软件（建议7.0版本以上），而且应该有相应的硬件开发板（建议使用DE1）作为支持，特别地对于某些实例，还需要配备其他的硬件资源作为支持（比如LCD液晶屏、PS2鼠标、GPS模块等）。否则，只能对工程代码进行参考。
目录
第一篇 FPGA基础
第1章 FPGA硬件结构知识 2
1.1 CPLD/FPGA概述 2
1.1.1 CPLD/FPGA的特点 2
1.1.2 CPLD/FPGA的发展方向 4
1.1.3 CPLD/FPGA的应用领域 4
1.2 FPGA体系结构 5
1.2.1 FPGA基本结构 5
1.2.2 FPGA的结构特点 8
1.2.3 FPGA的编程工艺 9
1.3 FPGA常用芯片与选用 9
1.3.1 FPGA常用芯片 10
1.3.2 FPGA器件的选用 12
1.4 本章小结 14
第2章 Verilog HDL语言编程基础 15
2.1 Verilog HDL语言特点 15
2.2 Verilog HDL程序的基本结构 20
2.2.1 模块 20
2.2.2 模块调用 28
2.3 程序格式 29
2.4 注释与间隔符 30
2.5 数值 30
2.6 字符串 32
2.7 标识符 33
2.8 系统任务和函数 34
2.9 编译指令 39
2.10 数据类型 47
2.10.1 线网（Net）和变量（Variable） 47
2.10.2 标量（Scalar）与矢量（Vector） 49
2.10.3 线网（Net）数据类型 50
2.10.4 变量（Variable）数据类型 55
2.10.5 数组（Array）类型 56
2.10.6 参数 58
2.10.7 名字空间 61
2.11 表达式 61
2.11.1 操作符 62
2.11.2 操作数 72
2.11.3 延迟表达式 75
2.11.4 表达式的位宽 76
2.11.5 有符号表达式 78
2.12 本章小结 79
第3章 FPGA常用开发工具 80
3.1 硬件开发工具Quartus II 80
3.1.1 Quartus II简介 80
3.1.2 Quartus II设计流程 81
3.1.3 Quartus II设计方法 84
3.1.4 Quartus II功能详解 85
3.1.5 时序约束与分析 93
3.1.6 设计优化 99
3.1.7 SignalTap II 107
3.2 ModelSim开发工具 111
3.2.1 ModelSim简介 111
3.2.2 基本仿真步骤 111
3.2.3 ModelSim各界面介绍 114
3.2.4 ModelSim调试功能 118
3.3 本章小结 122
第二篇 SOPC入门
第4章 SOPC硬件系统开发 124
4.1 SOPC系统特点与开发流程 124
4.2 SOPC Builder硬件开发环境介绍 125
4.2.1 SOPC Builder功能 125
4.2.2 SOPC Builder组成 126
4.2.3 SOPC Builder中包含的组件 131
4.3 使用SOPC Builder创建Nios II系统模块 132
4.3.1 创建Quartus II工程 132
4.3.2 启动并配置SOPC Builder 135
4.3.3 添加CPU及外设IP模块 136
4.3.4 生成Nios II系统 142
4.4 集成Nios II系统到Quartus II工程 144
4.4.1 创建包含Nios II系统的Quartus II顶层模块 144
4.4.2 FPGA引脚分配及其他设置 149
4.4.3 Quartus II工程的编译并下载 152
4.5 本章小结 155
第5章 SOPC软件系统开发 156
5.1 Nios II处理器结构 156
5.1.1 Nios II处理器概述 157
5.1.2 编程模型 160
5.1.3 JTAG调试模块 166
5.2 Nios II指令系统介绍 168
5.2.1 Nios II处理器的指令集 168
5.2.2 Nios II定制指令介绍 171
5.2.3 定制指令实现方式 177
5.2.4 定制指令设计实例——前导0检测器 179
5.3 Nios II IDE集成开发环境 182
5.3.1 Nios II IDE简介 182
5.3.2 HAL系统库 185
5.3.3 RTOS和TCP/IP协议栈 190
5.4 使用Nios II IDE建立应用程序 190
5.4.1 创建C/C++工程 190
5.4.2 配置工程的系统属性 194
5.4.3 编译及运行工程 196
5.4.4 调试模式 198
5.5 使用Flash Programmer下载 199
5.5.1 定制目标板 200
5.5.2 Flash Programmer配置及下载 203
5.6 本章小结 205
第6章 Avalon总线规范 206
6.1 Avalon总线概述 206
6.1.1 Avalon总线的特点 206
6.1.2 术语和概念 207
6.2 Avalon总线信号 208
6.2.1 Avalon信号类型列表 208
6.2.2 Avalon信号时序 211
6.2.3 Avalon总线传输特性 212
6.3 Avalon从端口传输 212
6.3.1 Avalon从端口信号介绍 212
6.3.2 Avalon从端口读传输 214
6.3.3 Avalon从端口写传输 218
6.4 Avalon主端口传输 222
6.4.1 Avalon主端口模块介绍 222
6.4.2 Avalon主端口读传输 222
6.4.3 Avalon主端口写传输 224
6.5 Avalon流水线传输模式 225
6.5.1 具有固定延迟的从端口流水线读传输 226
6.5.2 具有可变延迟的从端口流水线读传输 227
6.5.3 主端口流水线读传输 228
6.6 Avalon流传输模式 230
6.6.1 流模式从端口传输 230
6.6.2 流模式主端口传输 233
6.7 Avalon三态传输 234
6.7.1 三态从端口传输 235
6.7.2 三态主端口传输 239
6.8 Avalon突发传输 240
6.8.1 主端口突发传输 241
6.8.2 从端口突发传输 243
6.9 与传输无关的信号 246
6.9.1 中断请求信号 246
6.9.2 复位控制信号 247
6.10 Avalon总线地址对齐方式 247
6.10.1 本地地址对齐 248
6.10.2 动态地址对齐 248
6.11 本章小结 249
第7章 Nios II外围设备及其编程 250
7.1 并行输入/输出（PIO） 250
7.1.1 功能描述 250
7.1.2 配置选项 251
7.1.3 寄存器描述与中断 253
7.1.4 软件编程模型 254
7.2 通用异步收发器（UART） 255
7.2.1 功能描述 255
7.2.2 配置选项 256
7.2.3 寄存器描述与中断 260
7.2.4 软件编程模型 264
7.3 定时器（Timer） 267
7.3.1 功能描述 267
7.3.2 配置选项 268
7.3.3 寄存器描述与中断 270
7.3.4 软件编程模型 271
7.4 JTAG UART 273
7.4.1 功能描述 274
7.4.2 配置选项 275
7.4.3 寄存器描述与中断 277
7.4.4 软件编程模型 279
7.5 SDRAM控制器 282
7.5.1 功能描述 282
7.5.2 配置选项 284
7.5.3 SDRAM控制器配置实例 287
7.5.4 软件编程模型 288
7.6 CFI控制器 289
7.6.1 功能描述 289
7.6.2 配置选项 290
7.6.3 软件编程模型 291
7.7 EPCS设备控制器 292
7.7.1 功能描述 292
7.7.2 配置选项 294
7.7.3 软件编程模型 294
7.8 DMA控制器 295
7.8.1 功能描述 295
7.8.2 配置选项 296
7.8.3 寄存器描述与中断 298
7.8.4 软件编程模型 300
7.9 系统ID 301
7.9.1 功能描述 301
7.9.2 配置选项 301
7.9.3 软件编程模型 302
7.10 SPI 302
7.10.1 功能描述 302
7.10.2 配置选项 306
7.10.3 寄存器描述 308
7.10.4 软件编程模型 310
7.11 本章小结 310
第三篇 应用实战
第8章 基于FPGA的SOPC系统开发实例1——七段数码管时钟显示实例 312
8.1 实例内容说明 312
8.2 设计思路分析 313
8.3 硬件设计 314
8.4 软件设计与程序代码 321
8.5 实例小结 325
第9章 基于FPGA的 SOPC系统开发实例2——串口通信DMA传输实例 327
9.1 实例内容说明 327
9.2 设计思路分析 327
9.3 硬件设计 328
9.4 软件设计与程序代码 338
9.4.1 Nios II HAL中与DMA
9.4.1 设计相关的API函数 338
9.4.2 软件部分的设计 339
9.5 实例小结 343
第10章 基于FPGA的SOPC系统开发实例3——LED灯控PWM IP核设计 344
10.1 实例内容说明 344
10.2 设计思路分析 344
10.3 硬件设计 345
10.4 软件设计与程序代码 359
10.5 实例小结 363
第11章 基于FPGA的SOPC系统开发实例4——通用TFT-LCD控制器及PS2鼠标设计实例 364
11.1 实例内容说明 364
11.2 设计思路分析 365
11.3 硬件设计 369
11.4 软件设计与程序代码 393
11.5 实例小结 402
第12章 基于FPGA的SOPC系统开发实例5——对对碰游戏 403
12.1 实例内容说明 403
12.2 设计思路分析 404
12.3 硬件设计 406
12.4 软件设计与程序代码 413
12.5 实例小结 433
第13章 基于FPGA的SOPC系统开发实例6——GPS信息接收系统的设计 434
13.1 实例内容说明 434
13.2 设计思路分析 434
13.3 硬件设计 442
13.4 软件设计与程序代码 451
13.5 实例小结 468
第14章 基于FPGA的SOPC系统开发实例7——基于NiosⅡ的I2C总线传输应用设计 469
14.1 实例内容说明 469
14.2 设计思路分析 469
14.3 I2C总线介绍 470
14.3.1 I2C总线特点 470
14.3.2 I2C总线工作原理 470
14.4 AT24C02芯片介绍 471
14.4.1 AT24C02概述 471
14.4.2 AT24C02读写时序 472
14.5 SOPC系统的创建 473
14.6 软件设计与程序代码 484
14.7 实例小结 489
附录A Nios II HAL中与PIO设计相关的API函数 490