第一篇 FPGA基础 2
第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入门 124
第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
第三篇 应用实战 312
第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设计相关的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 II的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