本书以浅入深出、图文并茂的方式,全面介绍了全球最大可编程器件生产商Xilinx的CoolRunner-Ⅱ、Spartan-3、Virtex-Ⅱ和Virtex-Ⅱ Pro等一系列最新器件的结构和特性;同时还用较大篇幅介绍了最新设计开发环境ISE 6及其辅助设计工具,可编程逻辑器件的高级应用和设计技巧,基于CPLD/FPGA的8位和32位嵌入式处理器的原理与设计,高速串行数据通信接口设计和信号完整性设计等内容。
本书既是从事消费类电子产品设计、通信系统设计、嵌入式处理器系统设计及控制设备开发设计人员不可或缺的、针对性非常强的技术书籍,又可作为逻辑和专用集成电路设计相关专业高年级本科及研究生教学、科研参考书。
第1章 CoolRunner-Ⅱ系列器件结构及描述
1.1 概述
1.2 CoolRunner-Ⅱ器件的逻辑结构
1.2.1 功能模块
1.2.2 高级内部互连矩阵
1.2.3 输入输出模块
1.2.4 时钟分频器模块
1.3 CoolRunner-Ⅱ器件的时序模型
1.3.1 时序模型描述
1.3.2 时序模型设计范例
1.4 CoolRunner-Ⅱ器件的设计和使用
1.4.1 双沿触发寄存器的使用
1.4.2 时钟分频器的使用
1.4.3 频率合成的使用
1.4.4 门控功能的应用
1.4.5 施密特触发器的应用
1.4.6 输入输出标准的应用
1.4.7 输入输出引脚作为参考电源输入的设置
1.5 本章小结
第2章 Virtex-Ⅱ/Virtex-Ⅱ Pro系列器件结构及描述
2.1 概述
2.2 Virtex-Ⅱ系列器件结构和特性
2.2.1 Virtex-Ⅱ系列器件特性
2.2.2 Virtex-Ⅱ的逻辑结构
2.3 Virtex-Ⅱ Pro系列器件结构和特性
2.3.1 Virtex-Ⅱ Pro系列器件简介
2.3.2 Virtex-Ⅱ Pro系列器件的组织结构
2.4 Virtex-Ⅱ Pro X系列器件简介
2.5 本章小结
第3章 Spartan-ⅡE和Spartan-3系列器件结构及描述
3.1 概述
3.2 Spartan-ⅡE系列FPGA
3.2.1 Spartan-ⅡE器件简介
3.2.2 Spartan-ⅡE器件结构描述
3.3 Spartan-3系列FPGA
3.3.1 Spartan-3器件简介
3.3.2 Spartan-3器件结构描述
3.4 本章小结
第4章 ISE 6.x设计工具简介和使用
4.1 概述
4.2 Xilinx设计流程
4.3 ISE 6.1软件的使用
4.3.1 设计开始
4.3.2 设计输入(VHDL)
4.3.3 仿真行为模型(功能仿真)
4.3.4 使用ModelSim进行仿真
4.3.5 设计输入
4.3.6 设计实现
4.3.7 对顶层设计进行仿真(时序仿真)
4.3.8 EDIF设计方法
4.4 引脚与区域约束编辑器(PACE)
4.4.1 利用PACE指定输入输出的引脚和特性
4.4.2 利用PACE工具完成对逻辑区域的控制
4.4.3 PACE的SSO分析和DRC功能
4.4.4 PACE时序分析功能
4.5 Xilinx综合技术XST
4.6 Xilinx器件的设计实现
4.7 Xilinx器件的编程和配置工具iMPACT
4.7.1 编程参数的说明和选择
4.7.2 编程工具iMPACT的配置模式概述
4.7.3 编程工具iMPACT的使用
4.7.4 用iMPACT编程工具执行和下载配置文件
4.8 本章小结
第5章 ISE 6的辅助设计工具
5.1 概述
5.2 IP核生成工具
5.2.1 Core Generator在ISE 6工具中的使用
5.2.2 用Core Generator 建立一个新的工程
5.2.3 CoreGen中的存储器编辑器
5.3 布局规划器
5.3.1 布局规划器概述
5.3.2 布局规划器的功能和应用
5.3.3 布局规划器的使用
5.4 FPGA底层编辑器
5.4.1 FPGA底层编辑器概述
5.4.2 FPGA底层编辑器的使用
5.5 集成化逻辑分析工具
5.5.1 集成化逻辑分析工具简介
5.5.2 集成化逻辑分析工具的组成和设计流程
5.5.3 ChipScope Pro 6.1i的操作和使用
5.6 XPower功耗分析工具
5.6.1 XPower概述
5.6.2 XPower的使用
5.7 本章小结
第6章 约束设计与时序分析
6.1 概述
6.2 时序约束
6.2.1 周期约束
6.2.2 偏移约束
6.2.3 特定约束
6.2.4 分组约束
6.3 约束编辑器
6.3.1 约束编辑器的使用
6.3.2 约束设计的范例
6.4 时序分析器
6.4.1 时序分析器的用户界面
6.4.2 时序分析器的使用
6.4.3 时序分析报告的分析和阅读
6.5 本章小结
第7章 可编程逻辑器件的高级设计
7.1 概述
7.2 宏生成器
7.2.1 宏生成器简介
7.2.2 RPM设计流程和设计步骤
7.2.3 用于RPM设计的约束命令
7.2.4 使用RPM(宏生成)的设计范例
7.3 增量设计
7.3.1 增量设计简介和设计流程
7.3.2 增量设计的运用
7.3.3 使用增量设计的范例
7.4 模块化设计
7.4.1 模块化设计流程
7.4.2 模块化设计的运用
7.4.3 模块化设计的应用技巧
7.4.4 模块化设计的应用范例
7.5 本章小结
第8章 Xilinx可编程逻辑器件设计技巧
8.1 概述
8.2 可编程逻辑器件的时钟设计
8.2.1 时钟设计概述
8.2.2 片内时钟的设计
8.2.3 系统时钟的设计
8.3 同步设计与提高器件工作速度
8.3.1 同步设计
8.3.2 提高器件工作速度
8.4 存储器设计
8.4.1 可编程逻辑器件的片内存储器概述
8.4.2 存储器模块的HDL代码实现
8.5 可编程逻辑器件FPGA的配置
8.5.1 FPGA器件配置模式
8.5.2 FPGA器件配置流程
8.5.3 FPGA器件配置时常见的问题
8.6 可编程逻辑器件的电源、接地和去耦网络设计
8.6.1 电源设计的重要性
8.6.2 几种典型的电源电路
8.6.3 去耦(旁路)电容设计
8.6.4 接地设计
8.7 LVDS接口设计
8.7.1 LVDS概述
8.7.2 LVDS的使用
8.8 CPLD器件设计中需注意的一些问题
8.8.1 设计的优化处理
8.8.2 锁存器和触发器
8.8.3 case语句和if…else语句的使用
8.8.4 XC95*系列CPLD乘积项与触发器
8.8.5 CPLD器件的多接口电平应用
8.9 本章小结
第9章 Virtex-Ⅱ Pro MGT高速串行I/O设计
9.1 概述
9.1.1 推动串行连接发展的因素
9.1.2 高速串行通信的拓扑结构
9.1.3 Xilinx在高速串行通信方面的策略
9.2 Virtex-Ⅱ Pro Rocket I/O体系结构
9.3 Virtex-Ⅱ Pro Rocket I/O原理与应用
9.3.1 Virtex-Ⅱ Pro MGT收发器模块信号定义和说明
9.3.2 发送缓冲器和接收弹性缓冲器
9.3.3 8B/10B编码
9.3.4 时钟修正和通道绑定
9.3.5 MGT时钟设计
9.3.6 MGT的循环冗余码校验设计
9.4 Virtex-Ⅱ Pro MGT设计范例
9.4.1 建立一个新的工程和MGT、DCM模块
9.4.2 建立一个顶层文件和用核生成工具生成块存储器
9.4.3 完成顶层设计文件
9.5 本章小结
第10章 32位嵌入式处理器设计
10.1 概述
10.2 Virtex-Ⅱ Pro的PowerPC 405处理器内核概述
10.2.1 PowerPC 405嵌入式处理器结构和特性
10.2.2 PowerPC 405的应用模式
10.2.3 PowerPC 405处理器的总线结构
10.3 MicroBlaze 32位嵌入式处理器概述
10.3.1 MicroBlaze 处理器结构
10.3.2 MicroBlaze处理器的总线接口
10.4 基于Virtex-Ⅱ Pro器件的超级控制器
10.5 PowerPC 405和MicroBlaze嵌入式处理器的设计流程
10.5.1 EDK 6.1开发工具简介
10.5.2 EDK 6.1开发工具的使用
10.5.3 PowerPC 405和MicroBlaze处理器硬件和软件设计流程
10.5.4 为嵌入式处理器增加用户内核
10.6 PowerPC 405和MicroBlaze处理器设计范例
10.6.1 PowerPC 405处理器设计说明
10.6.2 PowerPC 405处理器设计流程
10.6.3 在ISE 6.1工程管理器中创建一个新的处理器设计XMP文件
10.7 为处理器增加外围设备设计范例
10.7.1 使用向导工具建立用户OPB外部设备
10.7.2 将所生成的用户OPB外部设备加入系统
10.7.3 实现设计
10.8 本章小结
第11章 PicoBlaze 8位嵌入式微控制器设计
11.1 概述
11.2 PicoBlaze的逻辑结构
11.2.1 通用处理器的基本结构
11.2.2 PicoBlaze处理器的基本结构
11.2.3 PicoBlaze处理器的指令系统
11.3 PicoBlaze设计流程
11.3.1 PicoBlaze处理器的设计
11.3.2 CoolBlaze处理器设计流程
11.4 重新定制PicoBlaze处理器和设计范例
11.4.1 定制新的CoolBlaze处理器
11.4.2 CoolBlaze处理器设计范例
11.5 本章小结
第12章 高速电路设计和信号完整性分析
12.1 概述
12.2 信号完整性的提出
12.2.1 传输线效应
12.2.2 信号的边沿速率
12.2.3 同步切换噪声(SSN)和地线反弹
12.2.4 串扰(交调干扰)
12.2.5 反射、振铃、环绕振荡
12.3 高速电路设计和端接技术
12.3.1 阻抗匹配原理
12.3.2 典型的传输线端接方案
12.3.3 Xilinx器件的阻抗匹配和端接方案
12.3.4 阻抗端接技术的仿真分析
12.4 本章小结
第13章 第三方设计与开发工具
13.1 概述
13.2 ModelSim仿真验证工具
13.2.1 ModelSim简介
13.2.2 ISE环境下的ModelSim使用
13.2.3 测试激励程序Testbench
13.3 Synplify和Synplify Pro高性能综合工具
13.3.1 Synplify和Synplify Pro简介
13.3.2 Synplify Pro综合工具的使用
13.3.3 Synplify Pro综合工具的高级应用
13.3.4 针对Xilinx器件的综合设计
13.4 本章小结
随着3C(通信、消费和计算)融合功能越来越多地出现在各种电子产品中,数字化、智能化设计已经变得愈来愈普及,产品的更新换代不断加快,个性化产品不断涌现。同时,随着系统向高速度、低功耗、低电压和多媒体、网络化、移动化方向的发展,其对电路的要求越来越高,因此,传统的单一功能的集成电路设计技术已无法满足性能日益提高的整机系统的要求。而可编程逻辑器件(CPLD/FPGA)由于其固有的特性,正好填补了这方面的需求。可编程逻辑器件可以方便地通过对逻辑结构的修改和配置,完成对系统和设备的升级,以便迅速适应市场的变化。可编程逻辑器件的另一个特点是,可以支持多种通信协议和接口标准,并可以随着标准和协议的演变而改变功能。对系统设计师来说这是一大优势,因为他们可以在早期当标准还在变化时就开始硬件设计,以后再改变代码来反映最终的标准。可编程逻辑在速度和等待时间方面优于纯软件解决方案。由于NRE(不可回收工程)成本较低,开发时间较短,同时比ASIC(专用集成电路)实现具有更大的灵活性,促使了可编程逻辑器件的高速发展。
另外,由于半导体技术的飞速发展,其工艺水平已经达到了深亚微米级,以90nm工艺技术制造的芯片已经问世;芯片的集成度成倍数地提高;时钟频率已发展到数吉赫兹。因此,未来的集成电路技术的发展趋势,是把整个系统集成到一个芯片上去,这种芯片被称为片上系统。芯片内除了丰富的可编程逻辑资源以外,还包括了高速的处理器硬核、处理器软核、DSP模块、大量的存储器资源、高速串行收发器模块、系统时钟管理器、多标准的输入输出接口模块等。片上系统比起当今的超大规模集成电路来说,无论是集成规模还是运行频率都有长足的发展。而采用具有系统级性能的复杂可编程逻辑器件和现场可编程门阵列实现可编程片上系统也成为今后的一个发展方向。也许,在不久的将来,我们看到的计算机中央处理器芯片不是传统的CPU,而是一个能够实现高速、多任务并行处理、随心所欲“换芯”(升级)的可编程逻辑器件。正是因为集成电路的迅猛发展,推动了电子技术的发展,带来了电子系统设计的不断变革。
Xilinx公司是全球最大的可编程逻辑器件制造商,也是FPGA器件的发明者,特别是在通信技术领域,Xilinx不仅是一个提供通信器件的供应商,还积极地参与通信标准的制定,提供系统集成和系统解决方案等。为了满足和适应市场的需要,该公司不断地推出高性能的可编程器件。从早期的XC95*、XC4000、Spartan/SpartanXL、Virtex/Virtex-E、Spartan-Ⅱ/Spartan-ⅡE系列,发展到现在的CoolRunner-Ⅱ、平台级和系统级的Virtex-Ⅱ、Virtex-Ⅱ Pro/Virtex-ProX,以及90nm工艺技术的Spartan-3系列器件。在器件内,不仅有32位的PowerPC 405处理器硬核、32位的MicroBlaze处理器软核、8位的PicoBlaze处理器软核,还提供了能够支持3.125GHz/10GHz高速串行通信的RocketIO模块,以及DSP模块等。而且器件的价格不断地下降,如Spartan-3系列中的40万门器件价格在8美元以下。这些器件已广泛地应用于医疗设备、通信设备和航天、消费等各个领域。在2004年,Xilinx还将推出基于ASMBL(Application Specific Modular Block,面向应用的组合模块架构的可编程逻辑器件),这又将带来一场平台级和系统级逻辑器件的革命。
作为一位从事多年可编程逻辑器件应用和技术服务的专业技术人员,有必要和义务不断地将Xilinx最新的器件和信息及其应用介绍给广大的科技工作者,这也是作者编写此书的目的。本书将以Xilinx公司的产品为背景,系统介绍该公司最新CPLD和FPGA产品的结构原理、性能特点、设计方法,详细介绍ISE 6集成化设计工具的特点和使用方法,重点介绍CPLD/FPGA在数字系统设计、嵌入式处理器设计、高速串行数据通信等方面的应用;同时,还将对高速电路设计及信号完整性问题进行深入的探讨。而对于Xilinx 推出的早期CPLD/FPGA器件,如XC95*系列、XC4000系列、第一代和第二代的Spartan系列及Virtex系列,已经有很多资料和书籍进行了详细介绍,许多读者或设计者对这些器件的使用也较为熟悉,因此,本书将不对这些器件进行重复讲解,以节省篇幅。
本书共分13章。第1章介绍Xilinx的新一代复杂可编程逻辑器件CoolRunner-Ⅱ的结构、特性及每个功能模块的设计应用。第2章介绍Xilinx的平台级现场可编程门阵列器件Virtex-Ⅱ和Virtex-Ⅱ Pro的结构、特性及设计应用;同时还将对用于可支持10Gb/s串行数据传输模块的Virtex-Ⅱ ProX系列器件进行简单描述。第3章介绍Xilinx提供的最新的低成本、高性能Spartan-ⅡE和Spartan-3系列器件的结构、特性及设计应用。第4章介绍Xilinx提供的集成化设计环境ISE 6的初级应用,通过本章的学习和书中提供的设计范例,可以使读者熟练地掌握ISE 6设计工具的设计流程、基本功能和使用,并能进行基本的逻辑设计。第5章是第4章的提高篇,介绍Xilinx的各种辅助设计工具,通过本章的学习,可以使读者掌握辅助设计工具的使用,以满足复杂逻辑设计的需要。在进行复杂逻辑设计时,为了提高逻辑设计的性能,设计者希望对设计进行一些设计方面的约定。第6章介绍约束设计的原理、使用,以及如何利用设计工具提供的报告进行时序方面的分析,并对设计进行修改,从而满足设计的要求。第7章介绍针对Xilinx可编程逻辑器件的一些高级设计方法,这些设计方法对大型、复杂的逻辑设计非常有用。在本章中,针对不同的设计群体,可以选择不同的设计方法。这些设计方法包括:①宏生成器,设计者采用该工具可以设计一些IP模块;②增量设计,可以方便设计的调试,并加快设计的速度;③模块化设计,该设计方法为基于团队的设计方式,将大型、复杂的设计分成数个模块,采用并行设计,从而缩短设计周期,提高设计性能。第8章介绍一些在进行逻辑设计时经常出现的问题及解决方法和设计技巧。第9章介绍Xilinx在高速串行通信方面的应用,包括在Virtex-Ⅱ Pro和Virtex-Ⅱ ProX平台级系列器件中集成3.125Gb/s和10Gb/s串行通信收发器模块的原理、结构及使用。第10章介绍Xilinx在FPGA中提供的两种32位嵌入式处理器方案,一种是采用先进的IP-植入技术嵌入在Virtex-Ⅱ Pro系列器件中的IBM公司的PowerPC 405硬核处理器模块;另一种是采用了IBM总线技术的MicroBlaze 32位嵌入式处理器软核。本章将详细介绍这两种处理器的内部结构、原理。此外,还介绍采用PowerPC 405处理器实现的UltraController控制器,处理器开发工具EDK 6.1,以及如何使用该工具进行嵌入式处理器的设计。PicoBlaze是Xilinx推出的8位嵌入式处理器软核模块,该模块可以集成到CPLD和FPGA可编程逻辑器件中,根据设计者的需要可以集成多个该模块。第11章介绍PicoBlaze模块的原理、结构、设计流程和应用。第12章为高速电路设计篇,介绍在进行复杂和高速的逻辑及板级设计时,如何保证信号的传输质量,如何在设计之前进行设计评估。第13章介绍与Xilinx逻辑器件设计和ISE有关的第三方的ModelSim仿真工具和Synplify Pro综合工具的使用。
由于篇幅所限,本书不对VHDL和Verilog语言的语法结构及设计使用进行专门介绍。有关这方面的知识,请参考《VHDL程序设计》、《硬件描述语言Verilog》等有关书籍和资料。在阅读和使用这本书时,需掌握一些基本的VHDL和Verilog语法结构和知识。书中所涉及到的参考设计,可登录网站http://www.insight-ap.com.cn和http://www.insight-FAE.org获取,或发送E-mail与作者联系,地址为:hunter.sun@vista-asiapacific.com。
在本书编写过程中,得到Xilinx公司深圳办事处高级工程师李进华和胡锓同志的大力帮助,并提供了宝贵的意见,在此表示衷心的感谢!
孙 航