第1章 Xilinx器件概述 1
1.1 可编程逻辑器件基础 1
1.1.1 可编程逻辑器件的基本情况 1
1.1.2 可编程逻辑器件的发展历史 2
1.1.3 PLD开发工具 3
1.1.4 典型FPGA开发流程 3
1.2 Xilinx FPGA芯片 6
1.2.1 FPGA的工作原理 6
1.2.2 Xilinx FPGA芯片结构 7
1.2.3 软核、硬核及固核 13
1.2.4 Xilinx主流FPGA 14
1.3 Xilinx软件工具 18
1.3.1 ISE Foundation软件 18
1.3.2 EDK开发工具 20
1.3.3 System Generator DSP工具 20
1.3.4 ChipScope Pro 20
1.3.5 PlanAhead 21
1.4 本书案例验证平台——S6 CARD开发板 22
1.4.1 S6 CARD开发板的组成与功能 22
1.4.2 S6 CARD板卡引脚约束说明 25
本章小结 26
第2章 Verilog HDL开发基础与进阶 27
2.1 Verilog HDL语言 27
2.1.1 Verilog HDL语言的历史 28
2.1.2 Verilog HDL的主要功能 28
2.1.3 Verilog HDL和VHDL的区别 29
2.1.4 Verilog HDL设计方法 29
2.2 Verilog HDL基本程序结构 30
2.3 Verilog HDL语言的数据类型和运算符 32
2.3.1 标志符 32
2.3.2 数据类型 32
2.3.3 模块端口 34
2.3.4 常量集合 34
2.3.5 运算符和表达式 36
2.4 Verilog HDL语言的描述语句 40
2.4.1 结构描述形式 41
2.4.2 数据流描述形式 42
2.4.3 行为描述形式 42
2.4.4 混合设计模式 50
2.5 Verilog HDL建模与调试技巧 50
2.5.1 双向端口的使用和仿真 51
2.5.2 阻塞赋值与非阻塞赋值 53
2.5.3 输入值不确定的组合逻辑电路 55
2.5.4 数学运算中的扩位与截位操作 56
2.5.5 利用块RAM来实现数据延迟 57
2.5.6 测试向量的生成 59
2.6 Verilog HDL常用程序示例 60
2.6.1 数字电路中基本单元的FPGA实现 61
2.6.2 基本时序处理模块 66
2.7 Xilinx器件原语的使用 71
本章小结 74
第3章 Xilinx FPGA电路原理与系统设计 75
3.1 FPGA配置电路 75
3.1.1 Xilinx FPGA配置电路 75
3.1.2 Xilinx FPGA常用的配置引脚 77
3.1.3 Xilinx FPGA配置电路分类 78
3.2 JTAG电路的原理与设计 80
3.2.1 JTAG电路的工作原理 80
3.2.2 Xilinx JTAG下载线 82
3.3 FPGA的常用配置电路 85
3.3.1 主串模式——最常用的FPGA配置模式 86
3.3.2 SPI串行Flash配置模式 91
3.3.3 从串配置模式 97
3.3.4 主字节宽度并行配置模式 98
3.3.5 JTAG配置模式 101
3.3.6 System ACE配置方案 102
3.4 iMPACT软件使用 107
3.4.1 iMPACT软件 107
3.4.2 iMPACT中的JTAG配置操作 109
3.4.3 iMPACT中的Xilinx PROM配置操作 112
3.4.4 iMPACT中的SPI Flash配置操作 114
3.4.5 FPGA配置失败的常见问题 117
3.5 从配置PROM中读取用户数据 118
3.5.1 从PROM中引导数据 118
3.5.2 硬件电路设计方法 119
3.5.3 软件操作流程 121
本章小结 122
第4章 基于ISE Foundation的逻辑设计 123
4.1 ISE套件 123
4.1.1 ISE的特点 123
4.1.2 ISE的功能 124
4.1.3 ISE的安装 125
4.1.4 ISE的用户界面 125
4.2 基于ISE的设计输入 126
4.2.1 新建工程 126
4.2.2 代码输入 128
4.2.3 代码模板的使用 130
4.2.4 Xilinx IP Core的原理与应用 131
4.3 ISE基本操作 135
4.3.1 基于Xilinx XST的综合 135
4.3.2 基于ISim的仿真 137
4.3.3 基于ISE的实现 140
4.3.4 基于目标和策略的设计方法 143
4.3.5 基于SmartGuide的设计方法 146
4.3.6 比特文件的生成 149
4.3.7 基于IMPACT的芯片配置 154
4.3.8 功耗分析以及XPower的使用 155
4.4 约束 158
4.4.1 约束文件 158
4.4.2 UCF文件的语法说明 159
4.4.3 引脚和区域约束语法 161
4.4.4 时序约束语法 163
4.5 调试利器——ChipScope Pro 167
4.5.1 ChipScope Pro工作原理 167
4.5.2 ChipScope Pro操作流程 169
4.5.3 ChipScope Pro开发实例 171
4.6 ISE与第三方EDA软件 179
4.6.1 ModelSim软件的使用 179
4.6.2 ModelSim和ISE的联合开发流程 183
4.6.3 MATLAB软件的使用 183
4.6.4 ISE与MATLAB的联合使用 184
4.6.5 MATLAB、ModelSim和ISE联合开发实例 186
本章小结 194
第5章 时序分析 195
5.1 时序分析的作用和原理 195
5.1.1 时序分析的作用 195
5.1.2 静态时序分析原理 196
5.1.3 时序分析的基础知识 197
5.2 Xilinx FPGA中的时钟资源 203
5.2.1 全局时钟资源 203
5.2.2 第二全局时钟资源 206
5.3 ISE时序分析器 207
5.3.1 时序分析器的特点 207
5.3.2 时序分析器的文件类型 208
5.3.3 时序分析器的调用与用户界面 208
5.3.4 提高时序性能的手段 214
本章小结 218
第6章 逻辑开发专题 219
6.1 Verilog HDL设计进阶 219
6.1.1 面向硬件的程序设计思维 219
6.1.2 “面积”和“速度”的转换原则 223
6.1.3 同步电路的设计原则 224
6.2 Xilinx FPGA芯片底层单元的使用 227
6.2.1 Xilinx全局时钟网络的使用 227
6.2.2 CMT时钟管理模块的使用 228
6.2.3 Xilinx内嵌块存储器的使用 233
6.2.4 硬核乘加器的使用 240
6.3 代码风格 242
6.3.1 代码风格的含义 242
6.3.2 代码书写风格 242
6.3.3 通用设计代码风格 246
6.3.4 Xilinx专用设计代码风格 255
6.4 UART接口开发实例 259
6.4.1 串口接口与RS-232协议 259
6.4.2 串口通信控制器的Verilog HDL实现 261
6.4.3 RS-232设计板级调试 274
本章小结 284
第7章 基于EDK的嵌入式系统设计 285
7.1 可配置嵌入式系统(EDK) 285
7.1.1 基于FPGA的可编程嵌入式开发系统 285
7.1.2 Xilinx公司的解决方案 286
7.2 Xilinx嵌入式开发系统组成 287
7.2.1 片内微处理器软核MicroBlaze 287
7.2.2 PLB总线系统结构 290
7.2.3 IP核以及设备驱动 295
7.3 EDK软件 301
7.3.1 EDK设计的实现流程 301
7.3.2 EDK的文件管理架构 303
7.4 XPS软件典型操作 307
7.4.1 XPS的启动 308
7.4.2 利用BSB创建新工程 308
7.4.3 XPS的用户界面 314
7.4.4 XPS的目录结构与硬件平台 318
7.4.5 在XPS加入IP Core 319
7.4.6 XPS工程的综合与实现 322
7.5 SDK软件典型操作 325
7.5.1 SDK的用户界面 325
7.5.2 SDK的典型操作 327
7.5.3 IP外设的API函数查阅和使用方法 335
7.5.4 GPIO外设开发实例 337
7.5.5 其他外设开发实例 340
本章小结 340
第8章 基于System Generator的DSP系统设计 341
8.1 System Generator的特点与安装 341
8.1.1 System Generator的主要特点 342
8.1.2 System Generator的安装和配置 343
8.2 System Generator的使用基础 344
8.2.1 System Generator开发流程 344
8.2.2 Simulink的应用 346
8.3 基于System Generator的DSP系统设计 348
8.3.1 System Generator的应用 348
8.3.2 System Generator中的信号类型 360
8.3.3 自动代码生成 360
8.3.4 编译MATLAB设计生成FPGA代码 362
8.3.5 子系统的建立与ISE调用 364
8.4 基于System Generator的硬件协仿真 368
8.4.1 硬件协仿真平台的特点与平台安装 368
8.4.2 硬件协仿真的基本操作 369
8.4.3 共享存储器的操作 375
8.5 System Generator的高级应用 377
8.5.1 导入外部的HDL程序模块 377
8.5.2 设计在线调试 383
8.5.3 系统中的多时钟设计 386
8.5.4 FPGA设计的高级技巧 388
本章小结 392
第9章 数字信号处理专题 393
9.1 数字信号 393
9.1.1 数字信号的产生 393
9.1.2 采样定理 394
9.1.3 数字系统的主要性能指标 395
9.1.4 A/D转换的字长效应 395
9.2 常用DSP IP Core及其应用 397
9.2.1 DDS模块IP Core的应用 397
9.2.2 FFT算法IP Core的应用 400
9.2.3 Cordic算法IP Core的应用 411
9.2.4 FIR滤波器IP Core的应用 414
9.3 多速率滤波器的FPGA实现 428
9.3.1 多速率信号处理的意义 428
9.3.2 多速率信号滤波器的基本操作 428
9.3.3 CIC滤波器的FPGA实现 434
9.3.4 HB滤波器的FPGA实现 445
本章小结 447
第10章 SERDES技术专题 448
10.1 高速数据连接功能 448
10.1.1 高速数据传输 448
10.1.2 Xilinx公司高速连接功能的解决方案 449
10.2 实现吉比特高速串行I/O的相关技术 449
10.2.1 吉比特高速串行I/O的特点和应用 449
10.2.2 吉比特串行I/O系统的组成 451
10.2.3 吉比特串行I/O的设计要点 455
10.3 Rocket I/O收发器原理与开发 457
10.3.1 Rocket I/O硬核组成与工作原理 457
10.3.2 GTP硬核组成与工作原理 459
10.3.3 GTP Wizard开发实例 473
10.4 PCI-Express G1端点接口设计 488
10.4.1 PCI Express G1技术 488
10.4.2 Xilinx PCI Express G1端点模块 489
10.4.3 PCI Express G1端点接口实例解读 496
本章小结 499
参考文献 500