书籍详情
Xilinx FPGA权威设计指南:基于Vivado 2023设计套件

作者:何宾
出版社:电子工业出版社
出版时间:2024-04-01
ISBN:9787121475160
定价:¥198.00
购买这本书可以去
内容简介
本书全面系统介绍了Xilinx新一代集成开发环境Vivado 2023的设计方法、设计流程和具体实现。全书共11章,内容包括:Xilinx新一代UltraScale 架构FPGA、Vivado设计套件导论、Vivado工程模式基本设计实现、Vivado非工程模式基本设计实现、Vivado创建和封装用户IP核流程、Vivado时序和物理约束原理及实现、Vivado调试工具原理及实现、Vivado动态功能交换原理及实现、Vitis HLS原理详解、Vitis HLS实现过程详解,以及HDMI显示屏驱动原理和实现。本书参考了Xilinx最新的Vivado 2023设计套件设计资料,理论与应用并重,将Xilinx最新的设计理论贯穿在具体的设计实现中。
作者简介
何宾,知名的嵌入式和EDA技术专家,长期从事电子设计自动化方面的教学和科研工作,与全球多家知名的半导体厂商和EDA工具厂商密切合作。已经出版电子信息方面的著作共40余部,内容涵盖电路仿真、电路设计、FPGA、数字信号处理、单片机、嵌入式系统等。典型的代表作有《模拟电子系统设计指南(基础篇):从半导体、分立元件到TI集成电路的分析与实现》、《模拟电子系统设计指南(实践篇):从半导体、分立元件到TI集成电路的分析与实现》、《Xilinx Zynq-7000嵌入式系统设计与实现-基于ARM Cortex-A9双核处理器和Vivado的设计方法》、《Altium Designer17一体化设计标准教程-从仿真原理和PCB设计到单片机系统》、《STC8系列单片机开发指南:面向处理器、程序设计和操作系统的分析与应用》等。
目录
目 录
第 章 Xilinx新一代UltraScale 架构FPGA 1
1.1 UltraScale 结构特点 1
1.1.1 Artix UltraScale FPGA系列 1
1.1.2 Kintex UltraScale FPGA系列 2
1.1.3 Virtex UltraScale FPGA系列 3
1.2 可配置逻辑块 4
1.2.1 查找表功能和配置 7
1.2.2 多路复用器 10
1.2.3 进位逻辑 21
1.2.4 存储元件 29
1.2.5 分布式RAM(只有SLICEM) 33
1.2.6 只读存储器(ROM) 37
1.2.7 移位寄存器(只有SLICEM) 42
1.3 时钟资源和时钟管理模块 45
1.3.1 时钟架构概述 45
1.3.2 时钟布线资源概述 46
1.3.3 CMT概述 46
1.3.4 时钟资源 47
1.3.5 时钟管理模块 52
1.4 存储器资源 56
1.4.1 BRAM资源 56
1.4.2 UltraRAM资源 66
1.5 专用的DSP模块 72
1.6 SelectIO资源 83
1.6.1 SelectIO接口资源 83
1.6.2 SelectIO接口通用指南 87
1.6.3 SelectIO接口逻辑资源 90
1.6.4 高密度I/O组 99
1.7 高速串行收发器 100
1.7.1 GTH和GTY收发器 101
1.7.2 GTM收发器 103
1.8 系统监控器模块 104
1.9 互联资源 107
1.10 配置模块 107
1.10.1 配置模式概述 108
1.10.2 JTAG连接 110
1.10.3 保护比特流 111
1.11 参考资料 112
第 章 Vivado设计套件导论 113
2.1 Vivado设计套件框架 113
2.1.1 Vivado设计套件功能 113
2.1.2 Vivado设计套件支持的工业标准 114
2.1.3 Vivado对第三方工具的支持 114
2.2 Vivado系统级设计流程 114
2.3 Vivado两种设计流程模式 117
2.3.1 工程模式 117
2.3.2 非工程模式 117
2.3.3 两种模式不同点比较 118
2.3.4 两种模式命令的区别 119
2.4 Vivado中电路结构的网表描述 120
2.5 Vivado中工程数据的目录结构 121
2.6 Vivado中Journal文件和Log文件功能 121
2.6.1 Journal文件(Vivado.jou) 121
2.6.2 Log文件(Vivado.log) 122
2.7 Vivado中XDC文件 124
2.7.1 XDC的特性 124
2.7.2 XDC与UCF区别 125
2.7.3 约束文件的使用方法 125
2.7.4 约束顺序 126
2.7.5 XDC命令 127
2.8 Vivado IDE的启动方法 128
2.9 Vivado IDE主界面 128
2.9.1 Quick Start分组 129
2.9.2 Tasks分组 132
2.9.3 Learning Center分组 132
2.10 Vivado IDE工程界面及功能 133
2.10.1 流程处理主界面及功能 133
2.10.2 Sources窗口及功能 134
2.10.3 工程总结窗口 136
2.10.4 运行设计的交互窗口 138
2.11 Vivado支持的属性 142
第 章 Vivado工程模式基本设计实现 159
3.1 创建新的设计工程 159
3.2 修改工程属性 162
3.2.1 修改目标语言设置 162
3.2.2 General设置参数含义 163
3.3 创建并添加一个新的设计文件 164
3.4 设计RTL分析 169
3.4.1 运行Linter 169
3.4.2 详细描述的实现 170
3.4.3 运行方法检查 173
3.4.4 报告DRC 174
3.4.5 报告噪声 176
3.4.6 生成HDL例化模板 177
3.5 行为级仿真 179
3.5.1 仿真功能概述 179
3.5.2 编译仿真库(可选) 179
3.5.3 行为级仿真的实现 180
3.5.4 仿真器界面的功能 184
3.6 设计综合和分析 187
3.6.1 综合的概念和特性 187
3.6.2 设计综合选项 188
3.6.3 执行设计综合 191
3.6.4 打开综合后的设计 193
3.6.5 打开综合后的原理图 194
3.6.6 查看综合报告 196
3.6.7 添加其他报告 197
3.6.8 创建新的运行 198
3.7 综合后的仿真 199
3.8 创建实现约束 200
3.8.1 实现约束的原理 200
3.8.2 I/O规划工具 201
3.8.3 添加引脚约束 206
3.8.4 添加时序约束 210
3.9 设计实现和分析 212
3.9.1 设计实现原理 213
3.9.2 设计实现设置 214
3.9.3 设计实现及分析 228
3.9.4 静态时序分析 236
3.10 布局布线后时序仿真 241
3.11 生成编程文件 242
3.11.1 配置器件属性 242
3.11.2 修改生成编程文件选项 248
3.11.3 执行生成可编程文件 249
3.12 下载比特流文件到FPGA 249
3.13 生成并烧写PROM文件 251
第 章 Vivado非工程模式基本设计实现 255
4.1 非工程模式基本命令和功能 255
4.1.1 非工程模式基本命令列表 255
4.1.2 典型Tcl脚本的使用 256
4.2 Vivado集成开发环境分析设计 257
4.2.1 启动Vivado集成开发环境 257
4.2.2 打开设计检查点的方法 257
4.3 修改设计路径 258
4.4 设置设计输出路径 258
4.5 读取设计文件 259
4.6 运行设计综合 259
4.7 运行设计布局 260
4.8 运行设计布线 262
4.9 生成比特流文件 263
4.10 下载比特流文件 263
第 章 Vivado创建和封装用户IP核流程 265
5.1 Vivado IP设计方法 265
5.1.1 Vivado IP设计流程 265
5.1.2 IP核术语 266
5.2 创建并封装包含源文件的IP 266
5.2.1 创建新的用于创建IP的工程 266
5.2.2 设置定制IP的库名和目录 268
5.2.3 封装定制IP的实现 270
5.3 调用并验证包含源文件的IP设计 273
5.3.1 创建新的用于调用IP的工程 273
5.3.2 设置包含调用IP的路径 274
5.3.3 创建基于IP的系统 275
5.3.4 执行行为级仿真 279
5.3.5 系统设计综合 281
5.3.6 系统实现和验证 281
5.4 创建并封装不包含源文件的IP 282
5.4.1 创建网表文件 282
5.4.2 创建新的设计工程 282
5.4.3 设置定制IP的库名和目录 283
5.4.4 封装定制IP的实现 283
5.5 调用并验证不包含源文件的IP设计 285
5.5.1 创建新的用于调用IP的工程 285
5.5.2 设置包含调用IP的路径 285
5.5.3 创建基于IP的系统 285
5.5.4 系统设计综合 287
第 章 Vivado时序和物理约束原理及实现 288
6.1 时序检查的概念 288
6.1.1 基本术语 288
6.1.2 时序路径 288
6.1.3 建立和保持松弛 290
6.1.4 时序分析关键概念 291
6.2 定义时钟 297
6.2.1 关于时钟 297
6.2.2 基本时钟 298
6.2.3 虚拟时钟 299
6.2.4 生成时钟 300
6.2.5 时钟组 309
6.2.6 时钟延迟、抖动和不确定性 315
6.3 I/O延迟约束 316
6.3.1 输入延迟 316
6.3.2 输出延迟 318
6.4 时序例外 332
6.4.1 多周期路径 333
6.4.2 假路径 345
6.4.3 最大和最小延迟 346
6.4.4 Case分析 355
6.4.5 禁止时序弧 356
6.5 CDC约束 357
6.5.1 关于总线偏移约束 357
6.5.2 set_bus_skew命令的语法 358
6.6 物理约束原理 359
6.6.1 关于布局约束 359
6.6.2 网表约束 360
6.6.3 布局约束原理 361
6.6.4 布线约束原理 362
6.7 配置约束 363
6.8 定义相对布局的宏 363
6.8.1 定义设计元素集 363
6.8.2 创建宏 364
6.8.3 单元分配到RPM集 364
6.8.4 分配相对位置 365
6.8.5 分配固定位置到RPM 368
6.9 布局约束实现 369
6.9.1 修改综合属性 369
6.9.2 布局约束方法 370
6.10 布线约束实现 372
6.10.1 手工布线 373
6.10.2 进入分配布线模式 373
6.10.3 分配布线节点 375
6.10.4 取消分配布线节点 375
6.10.5 完成并退出分配布线模式 375
6.10.6 锁定LUT负载上的单元输入 376
6.10.7 分支布线 376
6.10.8 直接约束布线 377
6.11 修改逻辑实现 378
6.12 增量编译 379
6.12.1 增量编译流程 379
6.12.2 运行增量布局和布线 379
6.12.3 使用增量编译 381
6.12.4 增量编译高级分析 383
第 章 Vivado调试工具原理和实现 384
7.1 设计调试原理和方法 384
7.2 创建新的调试设计 385
7.2.1 创建新的FIFO调试工程 385
7.2.2 添加FIFO IP到设计中 386
7.2.3 添加顶层设计文件 389
7.2.4 在顶层文件中添加设计代码 389
7.2.5 添加约束文件 393
7.3 网表插入调试探测流程的实现 395
7.3.1 网表插入调试探测流程的方法 395
7.3.2 网表插入调试探测流程的实现 396
7.4 添加HDL属性调试探测流程的实现 404
7.5 添加HDL例化调试核探测流程的实现 405
7.6 VIO原理和应用 408
7.6.1 设计原理 409
7.6.2 添加VIO核 409
7.6.3 生成比特流文件 413
7.6.4 下载并调试设计 414
第 章 Vivado动态功能交换原理及实现 416
8.1 动态功能交换导论 416
8.1.1 动态功能交换介绍 416
8.1.2 术语解释 417
8.1.3 设计考虑 418
8.1.4 常见应用 421
8.1.5 Vivado软件流程 424
8.2 基于工程的动态功能交换实现 425
8.2.1 设计原理 425
8.2.2 建立动态功能交换工程 427
8.2.3 创建新的分区定义 429
8.2.4 添加新的可重配置模块 430
8.2.5 设置不同的配置选项 432
8.2.6 查看/修改分区的布局 436
8.2.7 执行DRC 437
8.2.8 实现第一个运行配置并生成比特流文件 439
8.2.9 实现第二个运行配置并生成比特流文件 439
8.2.10 实现第三个运行配置并生成比特流文件 440
8.2.11 实现第四个运行配置并生成比特流文件 440
8.2.12 下载不同运行配置的部分比特流 441
8.3 基于非工程的动态功能交换实现 442
8.3.1 查看脚本 443
8.3.2 综合设计 443
8.3.3 实现第一个配置 444
8.3.4 实现第二个配置 449
8.3.5 验证配置 451
8.3.6 生成比特流 451
8.3
第 章 Xilinx新一代UltraScale 架构FPGA 1
1.1 UltraScale 结构特点 1
1.1.1 Artix UltraScale FPGA系列 1
1.1.2 Kintex UltraScale FPGA系列 2
1.1.3 Virtex UltraScale FPGA系列 3
1.2 可配置逻辑块 4
1.2.1 查找表功能和配置 7
1.2.2 多路复用器 10
1.2.3 进位逻辑 21
1.2.4 存储元件 29
1.2.5 分布式RAM(只有SLICEM) 33
1.2.6 只读存储器(ROM) 37
1.2.7 移位寄存器(只有SLICEM) 42
1.3 时钟资源和时钟管理模块 45
1.3.1 时钟架构概述 45
1.3.2 时钟布线资源概述 46
1.3.3 CMT概述 46
1.3.4 时钟资源 47
1.3.5 时钟管理模块 52
1.4 存储器资源 56
1.4.1 BRAM资源 56
1.4.2 UltraRAM资源 66
1.5 专用的DSP模块 72
1.6 SelectIO资源 83
1.6.1 SelectIO接口资源 83
1.6.2 SelectIO接口通用指南 87
1.6.3 SelectIO接口逻辑资源 90
1.6.4 高密度I/O组 99
1.7 高速串行收发器 100
1.7.1 GTH和GTY收发器 101
1.7.2 GTM收发器 103
1.8 系统监控器模块 104
1.9 互联资源 107
1.10 配置模块 107
1.10.1 配置模式概述 108
1.10.2 JTAG连接 110
1.10.3 保护比特流 111
1.11 参考资料 112
第 章 Vivado设计套件导论 113
2.1 Vivado设计套件框架 113
2.1.1 Vivado设计套件功能 113
2.1.2 Vivado设计套件支持的工业标准 114
2.1.3 Vivado对第三方工具的支持 114
2.2 Vivado系统级设计流程 114
2.3 Vivado两种设计流程模式 117
2.3.1 工程模式 117
2.3.2 非工程模式 117
2.3.3 两种模式不同点比较 118
2.3.4 两种模式命令的区别 119
2.4 Vivado中电路结构的网表描述 120
2.5 Vivado中工程数据的目录结构 121
2.6 Vivado中Journal文件和Log文件功能 121
2.6.1 Journal文件(Vivado.jou) 121
2.6.2 Log文件(Vivado.log) 122
2.7 Vivado中XDC文件 124
2.7.1 XDC的特性 124
2.7.2 XDC与UCF区别 125
2.7.3 约束文件的使用方法 125
2.7.4 约束顺序 126
2.7.5 XDC命令 127
2.8 Vivado IDE的启动方法 128
2.9 Vivado IDE主界面 128
2.9.1 Quick Start分组 129
2.9.2 Tasks分组 132
2.9.3 Learning Center分组 132
2.10 Vivado IDE工程界面及功能 133
2.10.1 流程处理主界面及功能 133
2.10.2 Sources窗口及功能 134
2.10.3 工程总结窗口 136
2.10.4 运行设计的交互窗口 138
2.11 Vivado支持的属性 142
第 章 Vivado工程模式基本设计实现 159
3.1 创建新的设计工程 159
3.2 修改工程属性 162
3.2.1 修改目标语言设置 162
3.2.2 General设置参数含义 163
3.3 创建并添加一个新的设计文件 164
3.4 设计RTL分析 169
3.4.1 运行Linter 169
3.4.2 详细描述的实现 170
3.4.3 运行方法检查 173
3.4.4 报告DRC 174
3.4.5 报告噪声 176
3.4.6 生成HDL例化模板 177
3.5 行为级仿真 179
3.5.1 仿真功能概述 179
3.5.2 编译仿真库(可选) 179
3.5.3 行为级仿真的实现 180
3.5.4 仿真器界面的功能 184
3.6 设计综合和分析 187
3.6.1 综合的概念和特性 187
3.6.2 设计综合选项 188
3.6.3 执行设计综合 191
3.6.4 打开综合后的设计 193
3.6.5 打开综合后的原理图 194
3.6.6 查看综合报告 196
3.6.7 添加其他报告 197
3.6.8 创建新的运行 198
3.7 综合后的仿真 199
3.8 创建实现约束 200
3.8.1 实现约束的原理 200
3.8.2 I/O规划工具 201
3.8.3 添加引脚约束 206
3.8.4 添加时序约束 210
3.9 设计实现和分析 212
3.9.1 设计实现原理 213
3.9.2 设计实现设置 214
3.9.3 设计实现及分析 228
3.9.4 静态时序分析 236
3.10 布局布线后时序仿真 241
3.11 生成编程文件 242
3.11.1 配置器件属性 242
3.11.2 修改生成编程文件选项 248
3.11.3 执行生成可编程文件 249
3.12 下载比特流文件到FPGA 249
3.13 生成并烧写PROM文件 251
第 章 Vivado非工程模式基本设计实现 255
4.1 非工程模式基本命令和功能 255
4.1.1 非工程模式基本命令列表 255
4.1.2 典型Tcl脚本的使用 256
4.2 Vivado集成开发环境分析设计 257
4.2.1 启动Vivado集成开发环境 257
4.2.2 打开设计检查点的方法 257
4.3 修改设计路径 258
4.4 设置设计输出路径 258
4.5 读取设计文件 259
4.6 运行设计综合 259
4.7 运行设计布局 260
4.8 运行设计布线 262
4.9 生成比特流文件 263
4.10 下载比特流文件 263
第 章 Vivado创建和封装用户IP核流程 265
5.1 Vivado IP设计方法 265
5.1.1 Vivado IP设计流程 265
5.1.2 IP核术语 266
5.2 创建并封装包含源文件的IP 266
5.2.1 创建新的用于创建IP的工程 266
5.2.2 设置定制IP的库名和目录 268
5.2.3 封装定制IP的实现 270
5.3 调用并验证包含源文件的IP设计 273
5.3.1 创建新的用于调用IP的工程 273
5.3.2 设置包含调用IP的路径 274
5.3.3 创建基于IP的系统 275
5.3.4 执行行为级仿真 279
5.3.5 系统设计综合 281
5.3.6 系统实现和验证 281
5.4 创建并封装不包含源文件的IP 282
5.4.1 创建网表文件 282
5.4.2 创建新的设计工程 282
5.4.3 设置定制IP的库名和目录 283
5.4.4 封装定制IP的实现 283
5.5 调用并验证不包含源文件的IP设计 285
5.5.1 创建新的用于调用IP的工程 285
5.5.2 设置包含调用IP的路径 285
5.5.3 创建基于IP的系统 285
5.5.4 系统设计综合 287
第 章 Vivado时序和物理约束原理及实现 288
6.1 时序检查的概念 288
6.1.1 基本术语 288
6.1.2 时序路径 288
6.1.3 建立和保持松弛 290
6.1.4 时序分析关键概念 291
6.2 定义时钟 297
6.2.1 关于时钟 297
6.2.2 基本时钟 298
6.2.3 虚拟时钟 299
6.2.4 生成时钟 300
6.2.5 时钟组 309
6.2.6 时钟延迟、抖动和不确定性 315
6.3 I/O延迟约束 316
6.3.1 输入延迟 316
6.3.2 输出延迟 318
6.4 时序例外 332
6.4.1 多周期路径 333
6.4.2 假路径 345
6.4.3 最大和最小延迟 346
6.4.4 Case分析 355
6.4.5 禁止时序弧 356
6.5 CDC约束 357
6.5.1 关于总线偏移约束 357
6.5.2 set_bus_skew命令的语法 358
6.6 物理约束原理 359
6.6.1 关于布局约束 359
6.6.2 网表约束 360
6.6.3 布局约束原理 361
6.6.4 布线约束原理 362
6.7 配置约束 363
6.8 定义相对布局的宏 363
6.8.1 定义设计元素集 363
6.8.2 创建宏 364
6.8.3 单元分配到RPM集 364
6.8.4 分配相对位置 365
6.8.5 分配固定位置到RPM 368
6.9 布局约束实现 369
6.9.1 修改综合属性 369
6.9.2 布局约束方法 370
6.10 布线约束实现 372
6.10.1 手工布线 373
6.10.2 进入分配布线模式 373
6.10.3 分配布线节点 375
6.10.4 取消分配布线节点 375
6.10.5 完成并退出分配布线模式 375
6.10.6 锁定LUT负载上的单元输入 376
6.10.7 分支布线 376
6.10.8 直接约束布线 377
6.11 修改逻辑实现 378
6.12 增量编译 379
6.12.1 增量编译流程 379
6.12.2 运行增量布局和布线 379
6.12.3 使用增量编译 381
6.12.4 增量编译高级分析 383
第 章 Vivado调试工具原理和实现 384
7.1 设计调试原理和方法 384
7.2 创建新的调试设计 385
7.2.1 创建新的FIFO调试工程 385
7.2.2 添加FIFO IP到设计中 386
7.2.3 添加顶层设计文件 389
7.2.4 在顶层文件中添加设计代码 389
7.2.5 添加约束文件 393
7.3 网表插入调试探测流程的实现 395
7.3.1 网表插入调试探测流程的方法 395
7.3.2 网表插入调试探测流程的实现 396
7.4 添加HDL属性调试探测流程的实现 404
7.5 添加HDL例化调试核探测流程的实现 405
7.6 VIO原理和应用 408
7.6.1 设计原理 409
7.6.2 添加VIO核 409
7.6.3 生成比特流文件 413
7.6.4 下载并调试设计 414
第 章 Vivado动态功能交换原理及实现 416
8.1 动态功能交换导论 416
8.1.1 动态功能交换介绍 416
8.1.2 术语解释 417
8.1.3 设计考虑 418
8.1.4 常见应用 421
8.1.5 Vivado软件流程 424
8.2 基于工程的动态功能交换实现 425
8.2.1 设计原理 425
8.2.2 建立动态功能交换工程 427
8.2.3 创建新的分区定义 429
8.2.4 添加新的可重配置模块 430
8.2.5 设置不同的配置选项 432
8.2.6 查看/修改分区的布局 436
8.2.7 执行DRC 437
8.2.8 实现第一个运行配置并生成比特流文件 439
8.2.9 实现第二个运行配置并生成比特流文件 439
8.2.10 实现第三个运行配置并生成比特流文件 440
8.2.11 实现第四个运行配置并生成比特流文件 440
8.2.12 下载不同运行配置的部分比特流 441
8.3 基于非工程的动态功能交换实现 442
8.3.1 查看脚本 443
8.3.2 综合设计 443
8.3.3 实现第一个配置 444
8.3.4 实现第二个配置 449
8.3.5 验证配置 451
8.3.6 生成比特流 451
8.3
猜您喜欢



