下载链接:
美国赛灵思公司(Xilinx)是全球领先的可编程逻辑完整解决方案的供应商,
赛灵思研发、制造并销售应用范围广泛的高级集成电路、软件设计工具以及作为
预定义系统级功能的 IP(Intellectual Property)核。
赛灵思公司成立于 1984 年,首创了现场可编程逻辑阵列(FPGA)这一创新
性的技术,并于 1985 年首次推出商业化产品。至今,赛灵思公司已经推出从
Spartan3 到 Virtex-II Pro 等系列的 FPGA 产品以及 CoolRunner 等系列的 CPLD 产
品,满足了全世界对可编程逻辑器件(PLD)产品一半以上的需求,同时还提供
了互联网软件解决方案与核心解决方案等软件产品。ISE 是赛灵思公司最主要的
设计软件之一,目前已经推出的最新版本是 ISE 6.2i。该软件提供了可加强现有
可编程设计流程,并可适应客户特有设计方法的全面、丰富的设计选项。
在此,我们郑重推荐由人民邮电出版社出版的《FPGA/CPLD 设计工具──
Xilinx ISE 使用详解》,希望通过本书使对在设计中应用 ISE 解决方案或对其感兴
趣的读者能更深入地了解基于 ISE 进行 FPGA/CPLD 设计的基本原理与方法。也
希望通过本书的编写,能大力促进中国的数字系统现场集成技术的应用普及和推
广。
XILINX ASIA PACIFIC
2004 年 10 月
第 1 章
ISE 系统简介……………………………………………………………………………………..……….1
1.1 FPGA/CPLD 简介…………………………………………………………………………………………………..1
1.1.1 FPGA/CPLD 的基本原理…………………………………………………………………………………2
1.1.2 FPGA 和 CPLD 的特点 ……………………………………………………………………………………7
1.2 FPGA/CPLD 的设计流程………………………………………………………………………………………..9
1.3 ISE 系列产品的特点……………………………………………………………………………………………..11
1.3.1 特点综述……………………………………………………………………………………………………….11
1.3.2 ISE 的新增特性…………………………………………………………………………………………….12
1.4 ISE 6.x 支持的器件……………………………………………………………………………………………….14
1.5 ISE 的 4 个软件系列……………………………………………………………………………………………..14
1.6 ISE 的系统配置与安装………………………………………………………………………………………….18
1.6.1 推荐的系统配置…………………………………………………………………………………………….18
1.6.2 ISE 的安装……………………………………………………………………………………………………19
1.7 ISE 中集成工具及其基本功能……………………………………………………………………………….21
1.8 常用专有名词解释………………………………………………………………………………………………..27
1.9 小结 …………………………………………………………………………………………………………………….29
1.10 问题与思考 ………………………………………………………………………………………………………..29
第 2 章
工程管理器与设计输入工具……………………………………………………………………..31
2.1 ISE 工程管理器──Project Navigator ……………………………………………………………………31
2.1.1 Project Navigator 综述 ……………………………………………………………………………………31
2.1.2 Project Navigator 的用户界面 …………………………………………………………………………32
2.1.3 使用 Project Navigator 创建并管理工程 ………………………………………………………….38
2.2 HDL 语言的输入工具──HDL Editor …………………………………………………………………..43
2.2.1 HDL Editor 综述…………………………………………………………………………………………….43
2.2.2 源代码输入的好助手──Language Templates…………………………………………………44
2.3 状态机输入工具──StateCAD ……………………………………………………………………………..45
2.3.1 StateCAD 综述 ………………………………………………………………………………………………46
2.3.2 StateCAD 的用户界面 ……………………………………………………………………………………46
2.3.3 使用 StateCAD 设计状态机 ……………………………………………………………………………51
2.4 原理图输入工具──ECS ……………………………………………………………………………………..62
2.4.1 ECS 综述 ………………………………………………………………………………………………………63
2.4.2 ECS 的用户界面 ……………………………………………………………………………………………63
2.4.3 使用 ECS 完成原理图输入设计 ……………………………………………………………………..66
2.4.4 使用 ECS 进行混合设计的方法 ……………………………………………………………………..73
2.5 IP 核生成工具──CORE Generator……………………………………………………………………….74 2
2.5.1 CORE Generator 综述…………………………………………………………………………………….74
2.5.2 CORE Generator 的用户界面………………………………………………………………………….75
2.5.3 使用 CORE Generator 生成 IP 核的方法与技巧……………………………………………….78
2.6 测试激励生成器──HDL Bencher ………………………………………………………………………..83
2.6.1 HDL Bencher 综述 …………………………………………………………………………………………83
2.6.2 使用 HDL Bencher 生成测试激励 …………………………………………………………………..85
2.7 设计结构向导──Architecture Wizard …………………………………………………………………..91
2.7.1 Architecture Wizard 综述………………………………………………………………………………..91
2.7.2 Architecture Wizard 使用方法 …………………………………………………………………………91
2.8 小结 …………………………………………………………………………………………………………………….94
2.9 问题与思考…………………………………………………………………………………………………………..94
第 3 章
仿真工具……………………………………………………………………………………………………..95
3.1 ModelSim 的用户接口…………………………………………………………………………………………..97
3.1.1 行为仿真……………………………………………………………………………………………………….99
3.1.2 时序仿真……………………………………………………………………………………………………..101
3.1.3
高级设置……………………………………………………………………………………………………..102
3.2 ModelSim 仿真窗口综述……………………………………………………………………………………..104
3.3 仿真环境的建立………………………………………………………………………………………………….114
3.3.1 各仿真切入点需要的库文件…………………………………………………………………………114
3.3.2 仿真库文件说明…………………………………………………………………………………………..115
3.3.3 库文件编译………………………………………………………………………………………………….116
3.3.4 仿真库的命名………………………………………………………………………………………………120
3.4 一个简单的仿真示例…………………………………………………………………………………………..121
3.4.1 在 ModelSim 环境下进行仿真………………………………………………………………………121
3.4.2 在 ISE 集成环境中进行仿真…………………………………………………………………………128
3.5 ModelSim 中的调试方法……………………………………………………………………………………..130
3.5.1 源文件窗口调试…………………………………………………………………………………………..130
3.5.2 波形窗口调试………………………………………………………………………………………………132
3.5.3 数据流窗口调试…………………………………………………………………………………………..135
3.5.4 存储器窗口调试…………………………………………………………………………………………..140
3.5.5
变量窗口调试………………………………………………………………………………………………142
3.5.6 列表窗口调试………………………………………………………………………………………………145
3.6 ModelSim 的其他常用操作………………………………………………………………………………….146
3.6.1
自动仿真……………………………………………………………………………………………………..146
3.6.2 WLF 文件……………………………………………………………………………………………………149
3.6.3 波形比较……………………………………………………………………………………………………..151
3.6.4 SDF 文件 …………………………………………………………………………………………………….156
3.6.5 VCD 文件……………………………………………………………………………………………………157 3
3.7 小结 …………………………………………………………………………………………………………………..159
3.8 问题与思考…………………………………………………………………………………………………………159
第 4 章
ISE 中集成的综合工具…………………………………………………………………………….161
4.1 新兴的高效综合工具──Synplify/Synplify Pro…………………………………………………….161
4.1.1 Synplify/Synplify Pro 的功能与特点……………………………………………………………..161
4.1.2 Synplify Pro 的用户界面 ………………………………………………………………………………168
4.1.3 Synplify Pro 综合流程 ………………………………………………………………………………….171
4.1.4 Synplify Pro 的其他综合技巧 ……………………………………………………………………….193
4.2 Xilinx 最早的合作伙伴──Synopsys 综合工具 ……………………………………………………205
4.2.1 设计流程……………………………………………………………………………………………………..206
4.2.2 FE 综合优化过程…………………………………………………………………………………………208
4.2.3 FST 操作说明………………………………………………………………………………………………217
4.3 Xilinx 内嵌的综合工具──XST………………………………………………………………………….220
4.3.1 XST 综述…………………………………………………………………………………………………….220
4.3.2 XST 综合属性设置………………………………………………………………………………………221
4.3.3 使用 XST 的综合流程………………………………………………………………………………….226
4.4 全局时钟与第二全局时钟资源…………………………………………………………………………….229
4.4.1 全局时钟资源简介……………………………………………………………………………………….229
4.4.2
常用的与全局时钟资源相关的 Xilinx 器件原语…………………………………………….230
4.4.3 Xilinx 全局时钟资源的使用方法…………………………………………………………………..232
4.4.4 使用 Xilinx 全局时钟资源的注意事项…………………………………………………………..233
4.4.5 第二全局时钟资源……………………………………………………………………………………….235
4.5 小结 …………………………………………………………………………………………………………………..236
4.6 问题与思考…………………………………………………………………………………………………………236
第 5 章
约束 ………………………………………………………………………………………………………….. 237
5.1 概述 …………………………………………………………………………………………………………………..237
5.2 时序约束 ……………………………………………………………………………………………………………239
5.2.1 周期约束(PERIOD 约束) …………………………………………………………………………239
5.2.2 偏移约束(OFFSET 约束) …………………………………………………………………………242
5.2.3 专门约束……………………………………………………………………………………………………..245
5.3 分组约束 ……………………………………………………………………………………………………………248
5.3.1 TNM 约束……………………………………………………………………………………………………248
5.3.2 TNM_NET 约束…………………………………………………………………………………………..251
5.3.3 TIMEGRP 约束……………………………………………………………………………………………251
5.3.4 TPTHRU 约束……………………………………………………………………………………………..252
5.3.5 TPSYNC 约束 ……………………………………………………………………………………………..252
5.4 约束编辑器──Constraints Editor………………………………………………………………………..253
5.4.1 Constraints Editor 的用户界面……………………………………………………………………….253 4
5.4.2 附加全局约束………………………………………………………………………………………………254
5.4.3 附加端口约束………………………………………………………………………………………………256
5.4.4 附加分组约束和时序约束…………………………………………………………………………….257
5.4.5 附加专用约束………………………………………………………………………………………………261
5.5 引脚与区域约束编辑器──PACE……………………………………………………………………….262
5.5.1 PACE 的用户界面………………………………………………………………………………………..263
5.5.2 附加区域约束………………………………………………………………………………………………266
5.5.3 附加 I/O 引脚约束 ……………………………………………………………………………………….267
5.6 约束文件 ……………………………………………………………………………………………………………268
5.6.1 约束文件的概念…………………………………………………………………………………………..268
5.6.2 UCF、NCF 文件的基本语法规则 …………………………………………………………………269
5.7 小结 …………………………………………………………………………………………………………………..271
5.8 问题与思考…………………………………………………………………………………………………………271
第 6 章
辅助设计工具……………………………………………………………………………………………273
6.1 时序分析器──Timing Analyzer………………………………………………………………………….273
6.1.1 时序分析器的用户界面………………………………………………………………………………..274
6.1.2 时序分析器的作用及设计流程……………………………………………………………………..275
6.1.3 基本时序路径………………………………………………………………………………………………276
6.1.4 时序分析器的使用方法………………………………………………………………………………..282
6.2 布局规划器──Floorplanner……………………………………………………………………………….286
6.2.1 布局规划器的用户界面………………………………………………………………………………..286
6.2.2 布局规划器的特点及作用…………………………………………………………………………….288
6.2.3 布局规划设计流程……………………………………………………………………………………….289
6.2.4 设计示例……………………………………………………………………………………………………..292
6.3 FPGA 底层编辑器──FPGA Editor……………………………………………………………………..297
6.3.1 FPGA 底层编辑器的用户接口………………………………………………………………………297
6.3.2 FPGA 底层编辑器的作用 …………………………………………………………………………….298
6.3.3 FPGA 底层编辑器输入输出文件…………………………………………………………………..300
6.3.4 FPGA 底层编辑器的工作流程………………………………………………………………………301
6.3.5 使用 FPGA 底层编辑器的预备知识………………………………………………………………301
6.3.6 设计示例……………………………………………………………………………………………………..303
6.4 小结 …………………………………………………………………………………………………………………..308
6.5 问题与思考…………………………………………………………………………………………………………308
第7 章
XPower、iMPACT 和ChipScope Pro……………………………………………………….309
7.1 XPower ………………………………………………………………………………………………………………309
7.1.1 XPower 综述 ……………………………………………………………………………………………….309
7.1.2 XPower 的用户界面……………………………………………………………………………………..310
7.1.3 用 XPower 分析功耗…………………………………………………………………………………….313 5
7.2 iMPACT……………………………………………………………………………………………………………..316
7.2.1 iMPACT 综述………………………………………………………………………………………………316
7.2.2 iMPACT 的用户界面……………………………………………………………………………………317
7.2.3 用 iMPACT 下载配置文件……………………………………………………………………………320
7.3 ChipScope Pro …………………………………………………………………………………………………….328
7.3.1 ChipScope Pro 综述………………………………………………………………………………………328
7.3.2 ChipScope Pro Core Inserter…………………………………………………………………………..330
7.3.3 ChipScope Pro Analyzer………………………………………………………………………………..336
7.4 小结 …………………………………………………………………………………………………………………..341
7.5 问题与思考…………………………………………………………………………………………………………341
第 8 章
模块化与增量式设计方法 ……………………………………………………………………….343
8.1 模块化设计方法的基本概念………………………………………………………………………………..343
8.2 模块化设计方法的设计流程………………………………………………………………………………..344
8.2.1 Modular Design 的设计输入与综合步骤………………………………………………………..345
8.2.2 Modular Design 的实现步骤………………………………………………………………………….346
8.3 模块化设计方法的注意事项………………………………………………………………………………..350
8.3.1 Modular Design 的应用场合………………………………………………………………………….350
8.3.2 Modular Design 的设计效能………………………………………………………………………….351
8.3.3 Modular Design 的目录管理………………………………………………………………………….352
8.3.4 Modular Design 的常用约束………………………………………………………………………….352
8.3.5 Modular Design 的报告查看………………………………………………………………………….353
8.3.6 使用 XFLOW 自动进行模块化设计………………………………………………………………353
8.4 模块化设计方法的设计实例………………………………………………………………………………..355
8.5 增量式设计方法的基本概念………………………………………………………………………………..364
8.6 增量设计方法的设计流程……………………………………………………………………………………366
8.6.1 增量综合……………………………………………………………………………………………………..367
8.6.2 增量实现……………………………………………………………………………………………………..369
8.7 增量设计方法的设计实例……………………………………………………………………………………372
8.8 小结 …………………………………………………………………………………………………………………..379
8.9 问题与思考…………………………………………………………………………………………………………381
第 9 章 融会贯通──“运动计时表”设计……………………………………………………….383
9.1 示例背景 ……………………………………………………………………………………………………………384
9.2 多元混合设计输入方法……………………………………………………………………………………….385
9.2.1 新建工程“watch_sc” …………………………………………………………………………………..385
9.2.2 使用 ECS 绘制“cnt60”和“outs3”模块原理图………………………………………….386
9.2.3 使用 Core Generator 生成“tenths”IP 核………………………………………………………..392
9.2.4 使用 StateCAD 设计“stmach_v”状态机……………………………………………………..395
9.2.5 使用 Architecture Wizard 生成时钟管理模块“dcm1”…………………………………….403 6
9.2.6 使用语言模板设计“hex2led”和“decode”的 HDL 源代码…………………………405
9.2.7 使用 ECS 设计顶层原理图 …………………………………………………………………………..408
9.3 测试激励与行为级功能仿真………………………………………………………………………………..409
9.3.1 使用 HDL Bencher 生成测试激励 …………………………………………………………………410
9.3.2 调用 ModelSim 进行行为级功能仿真……………………………………………………………412
9.4 Synplify Pro 和 XST 综合方法……………………………………………………………………………..413
9.4.1 使用 XST 综合整个设计………………………………………………………………………………413
9.4.2 使用 Synplify Pro 的特色工具分析、优化设计………………………………………………415
9.5 设计用户约束文件与实现结果的分析………………………………………………………………….421
9.5.1 使用 Constraints Editor 设计 UCF 文件………………………………………………………….422
9.5.2 使用 PACE 设计 UCF…………………………………………………………………………………..425
9.5.3 实现步骤与实现结果分析…………………………………………………………………………….427
9.6 使用 ModelSim 进行布线后仿真………………………………………………………………………….432
9.7 使用 iMPACT 配置 FPGA/CPLD………………………………………………………………………….433
9.8 小结 …………………………………………………………………………………………………………………..438
9.9 问题与思考…………………………………………………………………………………………………………438
第 10 章 ISE 实战──I2C 接口设计……………………………………………………………………..439
10.1 EFX-SP200──实验开发系统简介 ……………………………………………………………………439
10.2 I2C 总线简介…………………………………………………………………………………………………….440
10.2.1 I2C 总线上的数据传输 ………………………………………………………………………………..441
10.2.2 I2C 总线寻址 ………………………………………………………………………………………………443
10.2.3 时钟同步与仲裁………………………………………………………………………………………….445
10.2.4 I2C 协议的扩展 …………………………………………………………………………………………..446
10.3 I2C 总线应用实例──AT24C 系列 EEPROM……………………………………………………..446
10.3.1 AT24C02 概述…………………………………………………………………………………………….447
10.3.2 写操作 ……………………………………………………………………………………………………….448
10.3.3 读操作 ……………………………………………………………………………………………………….448
10.3.4 AT24C 在 IC 卡中的应用简介……………………………………………………………………..449
10.4 I2C 总线控制器设计详解 …………………………………………………………………………………..450
10.4.1 I2C 总线控制器总体描述 …………………………………………………………………………….451
10.4.2 µC 接口设计……………………………………………………………………………………………….452
10.4.3 I2C 接口设计 ………………………………………………………………………………………………458
10.4.4 混合仿真验证……………………………………………………………………………………………..469
10.4.5 上板调试…………………………………………………………………………………………………….478
10.5 小结 …………………………………………………………………………………………………………………478
10.6 问题与思考 ………………………………………………………………………………………………………478
第1章 ISE 系统简介
本章在介绍 FPGA/CPLD 基本理论的基础上,引入 FPGA/CPLD 的完整设计流程,重点
介绍 Xilinx 的 ISE 集成开发环境的特点与 ISE 所集成的工具包的基本功能。
本章主要内容如下:
- FPGA/CPLD 简介;
- FPGA/CPLD 的设计流程;
- ISE 系列产品的新特点;
- ISE 6.x 支持的器件;
- ISE 的 4 个软件系列;
- ISE 的系统配置与安装;
- ISE 中集成的工具及其基本功能;
- 常用专有名词解释。
1.1 FPGA/CPLD 简介
在数字化、信息化的时代,数字集成电路应用得非常广泛。随着微电子技术与工艺的发
展,数字集成电路从电子管、晶体管、中小规模集成电路、超大规模集成电路(VLSIC)逐
步发展到今天的专用集成电路(ASIC)。ASIC 的出现降低了产品的生产成本,提高了系统
的可靠性,减少了产品的物理尺寸,推动了社会的数字化进程。但是 ASIC 因其设计周期
长,改版投资大,灵活性差等缺陷制约着它的应用范围。硬件工程师希望有一种更灵活的设
计方法,根据需要,在实验室就能设计、更改大规模数字逻辑,研制自己的 ASIC 并马上投
入使用。这就是可编程逻辑器件提出的基本思想。
可编程逻辑器件随着微电子制造工艺的发展取得了长足的进步。从早期的只能存储少量
数据,完成简单逻辑功能的可编程只读存储器(PROM)、紫外线可擦除只读存储器
(EPROM)和电可擦除只读存储器(EEPROM),发展到能完成中大规模的数字逻辑功能的
可编程阵列逻辑(PAL)和通用阵列逻辑(GAL),今天已经发展成为可以完成超大规模的
复 杂 组 合 逻 辑 与 时 序 逻 辑 的 现 场 可 编 程 逻 辑 器 件 (FPGA) 和 复 杂 可 编 程 逻 辑 器 件
(CPLD)。随着工艺技术的发展与市场需求,超大规模、高速、低功耗的新型 FPGA/CPLD
不断推陈出新。新一代的 FPGA 甚至集成了中央处理器(CPU)或数字处理器(DSP)内
核,在一片 FPGA 上进行软硬件协同设计,为实现片上可编程系统(SOPC:System On
Programmable Chip)提供了强大的硬件支持。