第1篇 FPGA基础知识篇 3
第1章 FPGA硬件结构知识 3
1.1 CPLD/FPGA概述 3
1.1.1 CPLD/FPGA的特点 3
1.1.2 CPLD/FPGA的发展方向 5
1.1.3 CPLD/FPGA的应用领域 6
1.2 FPGA体系结构 7
1.2.1 FPGA基本结构 7
1.2.2 FPGA的结构特点 10
1.2.3 FPGA的编程工艺 12
1.3 FPGA常用芯片与选用 12
1.3.1 FPGA常用芯片 12
1.3.2 FPGA器件的选用 15
1.4 本章小结 17
第2章 VHDL语言编程基础 19
2.1 FPGA系统的表示方法 19
2.2 VHDL语言的特点 20
2.3 VHDL语言结构与要素 22
2.3.1 实体说明 24
2.3.2 构造体 26
2.3.3 VHDL语言要素 29
2.3.4 VHDL顺序语句与并发语句 42
2.3.5 描述方式 55
2.4 组合逻辑电路的VHDL实现 60
2.4.1 简单门电路 60
2.4.2 译码器、编码器和选择器 62
2.4.3 加法器、乘法器和除法器 74
2.4.4 三态门和总线缓冲器 81
2.5 时序逻辑电路的VHDL实现 83
2.5.1 锁存器、触发器 83
2.5.2 寄存器 86
2.5.3 计数器 88
2.6 状态机的VHDL实现 98
2.6.1 状态机的结构和功能 98
2.6.2 状态机的VHDL模型 99
2.7 存储器的VHDL实现 108
2.7.1 ROM和RAM 108
2.7.2 FIFO 113
2.8 本章小结 117
第3章 FPGA常用开发工具 119
3.1 集成开发工具MAX+plus Ⅱ 119
3.1.1 功能与菜单说明 119
3.1.2 MAX+plus Ⅱ设计过程 123
3.1.3 MAX+plus Ⅱ综合设计选择项 141
3.2 硬件开发工具Quartus Ⅱ 154
3.2.1 Quartus Ⅱ简介 154
3.2.2 Quartus Ⅱ设计流程 155
3.2.3 Quartus Ⅱ设计方法 159
3.2.4 Quartus Ⅱ功能详解 160
3.2.5 时序约束与分析 169
3.2.6 设计优化 176
3.2.7 SignalTap Ⅱ 184
3.3 本章小结 189
第2篇 FPGA数字系统程序实例第4章 矩阵键盘扫描接口设计 193
4.1 实例内容说明 193
4.2 设计思路与原理 193
4.3 程序设计与验证 195
4.3.1 创建Quartus Ⅱ工程 195
4.3.2 VHDL代码设计 196
4.3.3 矩阵键盘扫描的验证 199
4.4 实例总结 203
第5章 PS/2键盘接口设计 205
5.1 实例内容说明 205
5.2 PS/2键盘接口标准 205
5.2.1 PS/2接口介绍 205
5.2.2 PS/2接口引脚 205
5.3 设计思路与原理 207
5.4 程序设计与验证 208
5.4.1 创建Quartus Ⅱ环境 208
5.4.2 VHDL代码设计 209
5.4.3 PS/2键盘接口设计的验证 213
5.5 实例总结 214
第6章 点阵发光管扫描接口设计 215
6.1 实例内容说明 215
6.2 设计思路与原理 215
6.3 程序设计与验证 217
6.3.1 创建Quartus Ⅱ工程 217
6.3.2 创建VHDL文件 217
6.3.3 程序验证 220
6.4 实例总结 222
第7章 VGA彩条信号发生器 223
7.1 实例内容说明 223
7.2 设计思路与原理 223
7.3 程序设计与验证 224
7.3.1 创建Quartus Ⅱ工程 224
7.3.2 创建VHDL文件 225
7.3.3 程序验证 228
7.4 实例总结 229
第8章 6层电梯控制器 231
8.1 实例内容说明 231
8.2 设计思路与原理 231
8.3 程序设计与验证 232
8.3.1 创建Quartus Ⅱ工程 232
8.3.2 创建VHDL文件 232
8.3.3 程序验证 243
8.4 实例总结 244
第9章 两种分频器设计 245
9.1 实例内容说明 245
9.2 硬件电路分析 245
9.2.1 半整数分频器 245
9.2.2 偶数与奇数分频器 246
9.3 程序设计与仿真 246
9.3.1 VHDL程序 246
9.3.2 时序仿真 252
9.4 实例总结 253
第10章 波形信号发生器的设计 255
10.1 实例内容说明 255
10.2 设计思路与原理 255
10.3 程序代码与注释 256
10.4 实例总结 258
第11章 交通灯控制的设计 259
11.1 实例内容说明 259
11.2 设计思路与原理 259
11.3 程序代码与注释 259
11.4 实例总结 263
第12章 常见的两种数字滤波器的设计 265
12.1 数字滤波器概述 265
12.2 FIR数字滤波器的设计 265
12.2.1 FIR数字滤波器设计原理 265
12.2.2 直接实现形式的FIR滤波器设计 266
12.2.3 直接FIR滤波器设计的改进 267
12.2.4 用查表法实现FIR数字滤波器 268
12.3 IIR数字滤波器的设计 273
12.3.1 设计思路与原理 273
12.3.2 程序实现与注释 275
12.4 实例总结 276
第13章 快速傅里叶变换FFT的设计 277
13.1 FFT的算法特点 277
13.2 旋转因子算法 278
13.2.1 设计思路与原理 278
13.2.2 VHDL代码实现 278
13.3 蝶形处理器 280
13.3.1 设计思路与原理 280
13.3.2 VHDL代码实现 280
13.4 实例总结 282
第14章 数字式频率合成器DSS的设计 283
14.1 DDS特点概述 283
14.2 设计思路与原理 284
14.3 程序实现与仿真 285
14.3.1 生成ROM的参数 285
14.3.2 DDS的VHDL程序代码 286
14.3.3 仿真结果 288
14.4 实例总结 290
第15章 数字电压计的设计 291
15.1 数字电压计概述 291
15.2 设计思路与原理 292
15.3 程序实现与注释 292
15.4 实例总结 295
第3篇 FPGA通信系统程序实例第16章 串行通信接口UART设计 299
16.1 UART协议基础 299
16.2 UART模块程序设计 301
16.2.1 时钟分频模块 301
16.2.2 异步接收模块 302
16.2.3 异步发送模块 305
16.3 实例总结 307
第17章 ASK编码器与译码器设计 309
17.1 实例内容说明 309
17.2 伪随机序列产生器 309
17.2.1 m序列的产生 310
17.2.2 m序列的VHDL语言设计 311
17.2.3 工程编译 312
17.2.4 m序列的仿真 313
17.3 ASK编码器设计 316
17.3.1 ASK编码器设计思路 316
17.3.2 ASK编码器代码设计 316
17.3.3 ASK编码器仿真 318
17.4 ASK译码器设计 319
17.4.1 ASK译码器设计思路 319
17.4.2 ASK译码器代码设计 319
17.4.3 ASK解制器仿真 321
17.5 实例总结 321
第18章 FSK编码器与译码器设计 323
18.1 实例内容说明 323
18.2 FSK编码器设计 323
18.2.1 FSK编码器设计思路 323
18.2.2 FSK编码器代码设计 324
18.2.3 FSK编码器仿真 327
18.3 FSK译码器设计 329
18.3.1 FSK译码器设计思路 329
18.3.2 FSK译码器代码设计 330
18.3.3 FSK译码器仿真 332
18.4 实例总结 332
第19章 CMI编码器与译码器设计 333
19.1 实例内容说明 333
19.2 CMI编码器设计 333
19.2.1 传号反转码(CMI)编码原理 333
19.2.2 CMI编码器设计思路 334
19.2.3 CMI编码器VHDL代码设计 334
19.2.4 CMI编码器仿真 338
19.3 CMI调制器设计 341
19.3.1 CMI调制器设计思路 341
19.3.2 ASK调制器代码设计 341
19.3.3 CMI译码器仿真 343
19.4 实例总结 343
第20章 曼彻斯特编码器与译码器设计 345
20.1 实例内容说明 345
20.2 曼彻斯特编码器设计 345
20.2.1 曼彻斯特编码器设计思路 345
20.2.2 曼彻斯特编码器代码设计 346
20.2.3 曼彻斯特编码仿真 349
20.3 曼彻斯特译码器设计 352
20.3.1 曼彻斯特译码器设计思路 352
20.3.2 曼彻斯特译码器代码设计 353
20.3.3 曼彻斯特译码器仿真 355
20.4 实例总结 356
第21章 HDB3编码器与译码器设计 357
21.1 实例内容说明 357
21.2 HDB3编码器设计 357
21.2.1 HDB3码编码原理 357
21.2.2 HDB3编码器设计思路 358
21.2.3 HDB3编码器插“V”模块代码设计与仿真 358
21.2.4 HDB3编码器插“B”模块代码设计与仿真 364
21.2.5 HDB3编码器的双单极转换模块的设计与仿真 367
21.3 HDB3译码器设计 369
21.3.1 HDB3译码器设计思路 369
21.3.2 HDB3译码器代码设计 369
21.3.3 HDB3译码器仿真 371
21.4 实例总结 372
第4篇 Nios Ⅱ项目程序实例第22章 Nios Ⅱ定时中断器的应用 375
22.1 实例内容说明 375
22.2 设计思路与原理 375
22.3 硬件设计 376
22.4 软件设计与程序代码 389
22.5 实例总结 392
第23章 基于Nios Ⅱ的I2C总线传输应用 393
23.1 实例内容说明 393
23.2 设计思路与原理 393
23.3 I2C总线介绍 394
23.3.1 I2C总线特点 394
23.3.2 I2C总线工作原理 394
23.4 AT24C02芯片应用介绍 395
23.4.1 AT24C02概述 395
23.4.2 AT24C02读写时序 396
23.5 SOPC系统的创建 397
23.6 软件设计与程序代码 413
23.7 实例总结 420
第24章 基于Nios Ⅱ的SPI总线的应用 421
24.1 实例内容说明 421
24.2 设计思路与原理 421
24.3 SPI总线介绍 422
24.4 AD7476介绍 423
24.5 SOPC系统的创建 424
24.6 软件设计与程序代码 439
24.7 实例总结 442
第25章 基于Nios Ⅱ的uCOS应用 443
25.1 实例内容说明 443
25.2 设计思路与原理 443
25.3 SOPC系统的创建 444
25.4 软件设计与程序代码 458
25.5 实例总结 463