第1章 Xilinx FPGA设计流程 1
1.1 设计流程 1
1.2 设计输入和综合 3
1.2.1 层次化设计 3
1.2.2 原理图输入 4
1.2.3 HDL输入和综合 5
1.3 设计实现 6
1.3.1 FPGA设计实现 6
1.3.2 CPLD设计实现 7
1.4 设计验证 8
1.4.1 仿真 9
1.4.2 静态时序分析 13
1.4.3 电路验证 13
1.5 IP核复用技术 14
1.5.1 IP核分类 14
1.5.2 IP核优化 15
1.5.3 IP核生成 16
第2章 Xilinx FPGA结构及分类 17
2.1 CPLD原理及结构 17
2.1.1 功能块 18
2.1.2 宏单元 19
2.1.3 快速连接矩阵 20
2.1.4 输入输出块 20
2.2 FPGA原理及结构 21
2.2.1 查找表结构及功能 22
2.2.2 可配置逻辑块 23
2.2.3 时钟资源和时钟管理单元 25
2.2.4 块存储器资源 30
2.2.5 互联资源 32
2.2.6 专用的DSP模块 32
2.2.7 输入输出块 34
2.2.8 吉比特收发器 36
2.2.9 PCI-E模块 36
2.2.10 XADC模块 37
2.3 Xilinx可编程逻辑器件分类 39
2.3.1 Xilinx CPLD芯片介绍 39
2.3.2 Xilinx FPGA芯片介绍 41
2.3.3 Xilinx最新一代7系列 49
2.4 Xilinx配置存储器 57
2.4.1 平台Flash在系统可编程PROM 57
2.4.2 平台Flash高密度存储和配置器件 58
第3章 HDL高级设计技术 60
3.1 HDL语言 60
3.1.1 HDL语言设计FPGA的优势 60
3.1.2 使用HDL语言设计FPGA 61
3.2 混合语言设计支持 63
3.3 层次化设计 64
3.3.1 层次化设计的优缺点 64
3.3.2 在分层设计中使用综合工具 65
3.4 选择数据类型(只限于VHDL) 66
3.4.1 使用std_logic(IEEE 1164) 66
3.4.2 声明端口 66
3.4.3 端口声明中的数组 67
3.5 使用’timescale指令(只限于Verilog) 68
3.6 if和case描述比较 68
3.6.1 if设计描述 69
3.6.2 case设计描述 70
3.6.3 避免出现锁存器 71
3.7 逻辑结构设计 75
3.7.1 逻辑结构的分类及实现 75
3.7.2 数字信号处理中的逻辑结构 77
3.8 逻辑复制和复用技术 79
3.8.1 逻辑复制技术 79
3.8.2 逻辑复用(共享)技术 81
3.9 并行和流水技术 81
3.9.1 并行设计技术 82
3.9.2 流水设计技术 83
3.10 同步和异步单元处理技术 86
3.10.1 同步单元处理技术 86
3.10.2 异步单元处理技术 88
3.11 控制信号 89
3.11.1 置位、复位和综合优化 89
3.11.2 使用时钟使能引脚代替门控时钟 91
3.11.3 转换门控时钟到时钟使能 92
3.12 寄存器/锁存器和RAM的初始状态 93
3.12.1 寄存器和锁存器的初始化状态 93
3.12.2 RAM的初始化状态 94
3.13 有限自动状态机设计 97
3.13.1 有限状态机分类 97
3.13.2 有限状态机设计 97
3.14 存储器的实现 100
3.14.1 推断RAM 101
3.14.2 例化RAM 103
3.15 移位寄存器的实现 103
3.15.1 基于SRL的移位寄存器的实现 104
3.15.2 基于BRAM的移位寄存器的实现 106
3.16 多路复用器的实现 107
3.17 I/O寄存器的实现 108
3.18 算术运算的实现 109
3.18.1 HDL对符号/无符号运算的描述 109
3.18.2 FPGA内算术运算实现的方法 110
3.19 扩展的DSP推断 111
3.20 计数器和累加器的实现 113
3.21 属性/约束及传递 114
3.21.1 属性及传递 114
3.21.2 约束及传递 115
3.22 例化元件和FPGA原语 117
3.22.1 例化FPGA原语 117
3.22.2 例化核生成器模块 118
第4章 基于HDL设计输入 119
4.1 Xilinx ISE Design Suite介绍 119
4.2 ISE开发平台主界面及功能 120
4.3 设计内容和设计原理 124
4.4 创建工程 124
4.5 添加设计文件 127
4.5.1 添加计数器模块 127
4.5.2 添加分频器模块 130
4.5.3 添加顶层设计模块 132
第5章 基于原理图的设计输入 136
5.1 设计内容和设计原理 136
5.2 创建工程 137
5.3 添加已存在的设计文件 139
5.4 生成所添加文件的RTL符号 141
5.5 创建原理图文件 141
第6章 设计综合和行为仿真 146
6.1 设计综合 146
6.1.1 行为综合描述 146
6.1.2 基于XST的综合 147
6.1.3 综合属性参数功能 147
6.1.4 综合属性参数设置 157
6.1.5 设计综合和综合结果分析 158
6.1.6 原理图符号的查看 158
6.2 行为仿真的实现 162
6.2.1 测试向量 162
6.2.2 基于ISim的行为仿真实现 163
第7章 设计实现和时序仿真 169
7.1 实现过程 169
7.2 设计约束原理 169
7.2.1 时序约束原理 171
7.2.2 引脚和面积约束原理 175
7.3 引脚约束的实现 177
7.4 时序约束的实现 179
7.5 实现属性参数设置选项功能 181
7.5.1 翻译属性 182
7.5.2 映射属性 184
7.5.3 布局布线属性 190
7.5.4 映射后静态时序报告属性 193
7.5.5 布局布线后静态时序报告属性 195
7.5.6 仿真模型属性 196
7.6 设计翻译 201
7.7 设计映射 202
7.7.1 设计映射原理 202
7.7.2 设计映射的实现 203
7.7.3 映射后时序分析 203
7.8 布局布线 204
7.8.1 布局布线流程 205
7.8.2 布局布线的实现 206
7.8.3 布局布线结果的查看 206
7.8.4 分析时序/布局设计 209
7.9 时序仿真实现 210
7.9.1 时序仿真 210
7.9.2 使用ISE仿真器进行时序仿真 210
7.10 XPower功耗分析 214
第8章 设计下载 216
8.1 可编程逻辑器件配置接口 216
8.1.1 JTAG配置模式 216
8.1.2 串行模式 218
8.1.3 SelectMAP配置模式 221
8.1.4 SPI模式 222
8.1.5 主BPI模式 222
8.2 配置属性 226
8.2.1 通用选项 226
8.2.2 配置选项 228
8.2.3 启动选项 234
8.2.4 回读选项 236
8.2.5 加密选项 237
8.2.6 停止/唤醒选项 238
8.3 编程文件生成 240
8.4 使用JTAG模式配置器件 241
8.5 使用BPI模式配置器件 244
8.5.1 生成BPI存储器配置文件 244
8.5.2 编程BPI文件到BPI存储器 247
8.6 使用SPI模式配置器件 249
第9章 ChipScope Pro调试工具 250
9.1 ChipScope Pro调试工具 250
9.2 ChipScope Pro核 252
9.2.1 ICON核 252
9.2.2 ILA核 252
9.2.3 VIO核 255
9.2.4 ATC2核 256
9.2.5 IBERT核 257
9.3 ChipScope Pro核插入器使用 258
9.3.1 ISE中添加核插入器文件 258
9.3.2 ChipScope Pro核插入器特性 259
9.3.3 片内逻辑分析仪的使用 273
第10章 可重配置技术 300
10.1 可重配置 300
10.1.1 可重配置的概念 300
10.1.2 可重配置的特点 301
10.1.3 可重配置的典型应用 302
10.1.4 细粒度部分可重配置支持 306
10.1.5 ISE软件使能部分可重配置设计 306
10.1.6 管理动态设备重配置 307
10.1.7 可重配置术语 308
10.2 部分可重配置设计流程 309
10.2.1 创建PlanAhead工程 310
10.2.2 定义可配置分区 313
10.2.3 添加可配置的模块 314
10.2.4 定义可重配置的分区区域 315
10.2.5 运行设计规则检查 317
10.2.6 创建第一个配置 317
10.2.7 创建其他配置 318
10.2.8 运行PR验证 319
10.2.9 产生比特文件 320
10.2.10 创建映像文件并测试 320
10.3 应用时序约束并实现分析 322
10.3.1 综合HDL文件 322
10.3.2 创建PlanAhead工程 325
10.3.3 定义可重配置分区 327
10.3.4 添加可重配置模块 328
10.3.5 定义可重配置分区区域 329
10.3.6 运行设计规则检查 330
10.3.7 创建时序约束 330
10.3.8 导入时序约束 338
10.3.9 复位实现运行 340
10.3.10 创建第一个配置 340
10.3.11 创建其他配置 340
10.3.12 运行PR_验证 341
10.3.13 执行时序分析 342
10.3.14 生成完整的和部分的比特文件 344
10.3.15 创建映像文件并测试 345
第11章 处理器系统可重配置实现 347
11.1 使用ICAP实现重配置处理器外设 347
11.1.1 创建一个处理器硬件系统 348
11.1.2 创建PlanAhead工程 350
11.1.3 定义可重配置分区 352
11.1.4 添加可重配置模块 352
11.1.5 定义可重配置分区区域 354
11.1.6 运行设计规则检查 354
11.1.7 创建第一个配置 354
11.1.8 创建其他配置 356
11.1.9 运行PR验证 356
11.1.10 生成比特文件 357
11.1.11 创建软件工程 357
11.1.12 创建完整比特流PROM文件和编程BPI存储器 358
11.1.13 在Flash中保存部分比特流 360
11.1.14 测试和验证 361
11.2 定制ICAP处理器重配置用户逻辑 362
11.2.1 创建处理器硬件系统 363
11.2.2 创建顶层设计 367
11.2.3 创建PlanAhead工程 367
11.2.4 添加ChipScope在线逻辑分析仪 369
11.2.5 定义可重配置分区 371
11.2.6 添加可重配置模块 371
11.2.7 定义可重配置分区区域 373
11.2.8 运行设计规则检查 374
11.2.9 创建第一个配置 375
11.2.10 创建其他配置 376
11.2.11 运行PR验证 376
11.2.12 生成比特文件 376
11.2.13 创建软件工程 377
11.2.14 创建完整比特流PROM文件和编程BPI 378
11.2.15 在Flash中保存部分比特流 380
11.2.16 使用ChipScope调试系统 381
11.3 定制HWICAP重配置FSL外设 386
11.3.1 创建处理器硬件系统 387
11.3.2 创建PlanAhead工程 390
11.3.3 定义可重配置分区 392
11.3.4 添加可重配置模块 392
11.3.5 定义可重配置分区区域 394
11.3.6 运行设计规则检查 394
11.3.7 创建第一个配置 394
11.3.8 创建其他配置 395
11.3.9 运行PR验证 396
11.3.10 生成比特文件 397
11.3.11 创建软件工程 397
11.3.12 创建完整比特流PROM文件和编程BPI 398
11.3.13 在Flash中保存部分比特流 400
11.3.14 测试设计 401
11.4 重配置音频滤波器 401
11.4.1 创建处理器硬件系统 402
11.4.2 创建PlanAhead工程 405
11.4.3 定义可重配置分区 406
11.4.4 添加可重配置模块 407
11.4.5 定义可重配置分区区域 408
11.4.6 运行设计规则检查 408
11.4.7 创建第一个配置 409
11.4.8 创建其他配置 410
11.4.9 运行PR验证 411
11.4.10 生成比特文件 412
11.4.11 创建软件工程 412
11.4.12 创建完整比特流PROM文件和编程BPI 413
11.4.13 在Flash中保存部分比特流 415
11.4.14 测试设计 417
第12章 基于ISE的数字/模拟混合系统设计 418
12.1 数字/模拟混合系统的设计 418
12.2 模拟/数字混合系统的设计 419
12.2.1 模拟/数字混合系统设计原理 419
12.2.2 串行ADC转换器控制时序 420
12.2.3 峰值和频率检测原理 422
12.2.4 FPGA模拟/数字混合设计的实现 422
12.2.5 设计综合和实现 442
12.2.6 使用ChipScope Pro工具调试系统 447
12.3 数字/模拟混合系统的设计 451
12.3.1 数字/模拟混合系统设计原理 451
12.3.2 串行DAC转换器原理及控制时序 451
12.3.3 FPGA数字/模拟混合设计的实现 452
12.3.4 设计综合和实现 460
第13章 基于双摄像头的HDMI视频系统的实现 462
13.1 VmodCAM的工作原理 462
13.1.1 数字图像传感器功能 462
13.1.2 数字图像传感器的控制 463
13.1.3 VHDCI接口 469
13.1.4 HDMI的工作原理 469
13.2 基于FPGA的双摄像头控制器的实现 474
第14章 基于System Generator的数字系统建模 478
14.1 System Generator概述 478
14.2 Xilinx Blockset和Xilinx Reference Blockset 480
14.2.1 Xilinx Blockset 480
14.2.2 Xilinx Reference Blockset 480
14.3 System Generator设计流程的实现 481
14.3.1 模型的建立 482
14.3.2 模型参数的设置和仿真 483
14.3.3 生成模型子系统 486
14.3.4 模型HDL代码的生成和仿真 486
14.3.5 协同仿真的配置及实现 488
14.4 编译MATLAB到FPGA 491
14.4.1 模型的设计原理 491
14.4.2 MCode模型的建立 492
14.4.3 系统模型的建立 493
14.4.4 系统模型参数的设置 494
14.4.5 系统模型的仿真 495
14.5 FIR滤波器的设计与实现 495
14.5.1 FIR滤波器设计原理 495
14.5.2 生成FIR滤波器系数 496
14.5.3 建模和仿真FIR滤波器 497
附录 Nexys3的原理图 503