Virtex-5 中文版用户手册
Virtex-5 中文版用户手册
R
R
Xilinx is disclosing this Document and Intellectual Property (hereinafter "the Design") to you for use in the development of designs to
operate on, or interface with Xilinx FPGAs. Except as stated herein, none of the Design may be copied, reproduced, distributed,
republished, downloaded, displayed, posted, or transmitted in any form or by any means including, but not limited to, electronic,
mechanical, photocopying, recording, or otherwise, without the prior written consent of Xilinx. Any unauthorized use of the Design may
violate copyright laws, trademark laws, the laws of privacy and publicity, and communications regulations and statutes.
Xilinx does not assume any liability arising out of the application or use of the Design; nor does Xilinx convey any license under its patents,
copyrights, or any rights of others. You are responsible for obtaining any rights you may require for your use or implementation of the
Design. Xilinx reserves the right to make changes, at any time, to the Design as deemed desirable in the sole discretion of Xilinx. Xilinx
assumes no obligation to correct any errors contained herein or to advise you of any correction if such be made. Xilinx will not assume any
liability for the accuracy or correctness of any engineering or technical support or assistance provided to you in connection with the
Design.
THE DESIGN IS PROVIDED "AS IS" WITH ALL FAULTS, AND THE ENTIRE RISK AS TO ITS FUNCTION AND IMPLEMENTATION IS WITH
YOU. YOU ACKNOWLEDGE AND AGREE THAT YOU HAVE NOT RELIED ON ANY ORAL OR WRITTEN INFORMATION OR ADVICE,
WHETHER GIVEN BY XILINX, OR ITS AGENTS OR EMPLOYEES. XILINX MAKES NO OTHER WARRANTIES, WHETHER EXPRESS,
IMPLIED, OR STATUTORY, REGARDING THE DESIGN, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE, TITLE, AND NONINFRINGEMENT OF THIRD-PARTY RIGHTS.
IN NO EVENT WILL XILINX BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL DAMAGES,
INCLUDING ANY LOST DATA AND LOST PROFITS, ARISING FROM OR RELATING TO YOUR USE OF THE DESIGN, EVEN IF YOU HAVE
BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE TOTAL CUMULATIVE LIABILITY OF XILINX IN CONNECTION WITH
YOUR USE OF THE DESIGN, WHETHER IN CONTRACT OR TORT OR OTHERWISE, WILL IN NO EVENT EXCEED THE AMOUNT OF FEES
PAID BY YOU TO XILINX HEREUNDER FOR USE OF THE DESIGN. YOU ACKNOWLEDGE THAT THE FEES, IF ANY, REFLECT THE
ALLOCATION OF RISK SET FORTH IN THIS AGREEMENT AND THAT XILINX WOULD NOT MAKE AVAILABLE THE DESIGN TO YOU
WITHOUT THESE LIMITATIONS OF LIABILITY.
The Design is not designed or intended for use in the development of on-line control equipment in hazardous environments requiring fail-
safe controls, such as in the operation of nuclear facilities, aircraft navigation or communications systems, air traffic control, life support,
or weapons systems ("High-Risk Applications"). Xilinx specifically disclaims any express or implied warranties of fitness for such High-
Risk Applications. You represent that use of the Design in such High-Risk Applications is fully at your risk.
© 2006-2007 Xilinx, Inc. All rights reserved. XILINX, the Xilinx logo, and other designated brands included herein are trademarks of Xilinx,
Inc. PowerPC is a trademark of IBM, Inc. All other trademarks are the property of their respective owners.
修订历史
下表说明此技术文档的修订历史。
日期 版本 修订
2006 年 1.0 Xilinx 最初版本。
4 月 14 日
第 1 章 : 时钟资源
全局和区域时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
全局时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
区域时钟和 I/O 时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
全局时钟控制资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
全局时钟输入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
全局时钟输入缓冲器基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
节能时钟门控. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
全局时钟缓冲器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
全局时钟缓冲器基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
其他使用模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
时钟树和时钟网 - GCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
时钟区域 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
区域时钟控制资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Clock Capable I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
I/O 时钟缓冲器 - BUFIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
BUFIO 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
BUFIO 使用模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
区域时钟缓冲器 - BUFR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
BUFR 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
BUFR 属性和模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
BUFR 使用模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
区域时钟网 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
VHDL 和 Verilog 模板. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
第 2 章 : 时钟管理技术
时钟管理概述. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
DCM 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
DCM 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
DCM_BASE 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
DCM_ADV 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
DCM 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
DCM 时钟输入端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
时钟源输入 - CLKIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
反馈时钟输入 - CLKFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
相移时钟输入 - PSCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
动态重配置时钟输入 - DCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
DCM 控制和数据输入端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
复位输入 - RST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
相移递增 / 递减输入 - PSINCDEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
相移使能输入 - PSEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
动态重配置数据输入 - DI[15:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
动态重配置地址输入 - DADDR[6:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
第 3 章 : 锁相环 (PLL)
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
锁相环 (PLL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
一般用法说明. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
PLL 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
PLL_BASE 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
PLL_ADV 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
时钟网络去歪斜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
仅用于频率合成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
抖动滤波器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
VCO 的工作范围. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
最低和最高输入频率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
占空比可编程性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
相移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
PLL 编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
确定输入频率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
确定 M 和 D 值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
PLL 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
PLL 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
PLL CLKIN1 和 CLKIN2 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
PLL 时钟输入信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
计数器控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
时钟移相 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
VCO 和输出计数器的详细波形 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
参考时钟切换. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
缺失输入时钟或反馈时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
PLL 使用模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
时钟网络去歪斜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
零延迟缓冲器. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
DCM 驱动 PLL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
PLL 驱动 DCM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
PLL 到 PLL 的连接 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
应用指南. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
第 4 章 : Block RAM
Block RAM 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Block RAM 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
同步双端口和单端口 RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
数据流 ........................................................... 109
读操作 ........................................................... 111
写操作 ........................................................... 111
写模式 ........................................................... 111
WRITE_FIRST 模式,即透明模式 (默认). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
READ_FIRST 模式,即先读后写模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
NO_CHANGE 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
避免冲突 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
异步时钟控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
同步时钟控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Virtex-5 器件中的其他 Block RAM 功能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
可选输出寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
独立读写端口宽度选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
简单双端口 Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
可级联 Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
字节宽度写使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Block RAM 纠错代码 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Block RAM 库基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Block RAM 端口信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
时钟 - CLK[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
使能 - EN[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
字节宽度写使能 - WE[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
寄存器使能 - REGCE[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
设置 / 复位 - SSR[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
地址总线 - ADDR[A|B]<13:#><14:#><15:#> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
数据输入总线 - DI[A|B]<#:0> 和 DIP[A|B]<#:0> . . . . . . . . . . . . . . . . . . . . . . . . . . 121
数据输出总线 - DO[A|B]<#:0> 和 DOP[A|B]<#:0> . . . . . . . . . . . . . . . . . . . . . . . . 121
级联输入 - CASCADEINLAT[A|B] 和 CASCADEINREG[A|B] . . . . . . . . . . . . . . . . . 121
级联输出 - CASCADEOUTLAT[A|B] 和 CASCADEOUTREG[A|B] . . . . . . . . . . . . . 121
反转控制引脚. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
GSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
未用输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Block RAM 地址映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Block RAM 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
内容初始化 - INIT_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
内容初始化 - INITP_xx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
输出锁存器初始化 - INIT (INIT_A 或 INIT_B) . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
输出锁存器 / 寄存器同步设置 / 复位 (SRVAL_[A|B]) . . . . . . . . . . . . . . . . . . . . . . . . 124
可选输出寄存器开关 - DO[A|B]_REG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
扩展模式地址判定 - RAM_EXTENSION_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
读宽度 - READ_WIDTH_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
写宽度 - WRITE_WIDTH_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
写模式 - WRITE_MODE_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Block RAM 位置约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
第 5 章 : 可配置逻辑块 (CLB)
CLB 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Slice 描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
CLB/Slice 配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
查找表 (LUT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
存储元件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
分布式 RAM 和存储器 (只能在 SLICEM 中使用) . . . . . . . . . . . . . . . . . . . . . . . . . 174
只读存储器 (ROM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
移位寄存器 (只能在 SLICEM 中使用). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
多路复用器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
设计大型多路复用器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
快速先行进位逻辑. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
CLB/Slice 时序模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
通用 Slice 时序模型与参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
时序参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Slice 分布式 RAM 时序模型与参数 (只能在 SLICEM 中使用) . . . . . . . . . . . . . . . 198
分布式 RAM 时序参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
分布式 RAM 时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Slice SRL 时序模型与参数 (只能在 SLICEM 中使用). . . . . . . . . . . . . . . . . . . . . . 201
Slice SRL 时序参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Slice SRL 时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Slice 进位链时序模型与参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Slice 进位链时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
CLB 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
分布式 RAM 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
第 6 章 : SelectIO 资源
I/O 模块概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
SelectIO 资源简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
SelectIO 资源一般指导原则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Virtex-5 I/O 组规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
参考电压 (VREF) 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
输出驱动源电压 (VCCO) 引脚 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Virtex-5 数控阻抗 (DCI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
DCI 级联 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Xilinx DCI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
可控阻抗驱动器 (源终端) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
半阻抗可控阻抗驱动器 (源终端) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
接 VCCO 的输入终端 (单终端) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
接 VCCO/2 的输入终端 (分裂终端). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
终端接 VCCO (单终端)的驱动器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
终端接 VCCO /2 (分裂终端)的驱动器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Virtex-5 I/O 标准中的 DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
DCI 用法示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Virtex-5 SelectIO 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
IBUF 和 IBUFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
OBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
OBUFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
IOBUF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
IBUFDS 和 IBUFGDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
OBUFDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
OBUFTDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
IOBUFDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Virtex-5 SelectIO 属性 / 约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
位置约束 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
IOSTANDARD 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
输出斜率属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
输出驱动强度属性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
IBUF、OBUFT 和 IOBUF 的 PULLUP/PULLDOWN/KEEPER . . . . . . . . . . . . . . . . . . 231
差分终端属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Virtex-5 I/O 资源 VHDL/Verilog 示例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
关于 Virtex-5 I/O 所支持标准的具体指导原则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
LVTTL (低压晶体管 - 晶体管逻辑) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
LVCMOS (低压互补金属氧化物半导体). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
LVDCI (低压数控阻抗). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
LVDCI_DV2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
第 7 章 : SelectIO 逻辑资源
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
ILOGIC 资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
组合输入通路. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
输入 DDR 概述 (IDDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
OPPOSITE_EDGE 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
SAME_EDGE 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
SAME_EDGE_PIPELINED 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
输入 DDR 基元 (IDDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
IDDR 的 VHDL 和 Verilog 模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
ILOGIC 时序模型. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
ILOGIC 时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
ILOGIC 时序特性,DDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
输入 / 输出延迟单元 (IODELAY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
IODELAY 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
IODELAY 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
IODELAY 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
IODELAY 时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
递增 / 递减操作后的稳定性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
IODELAY 的 VHDL 和 Verilog 实例模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
IODELAY 转换时间使用模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
IDELAYCTRL 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
IDELAYCTRL 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
IDELAYCTRL 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
IDELAYCTRL 时序 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
第 8 章 : 高级 SelectIO 逻辑资源
简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
输入串并转换逻辑资源 (ISERDES) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
ISERDES 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
ISERDES 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
寄存输出 - Q1 到 Q6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Bitslip 操作 - BITSLIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
时钟使能输入 - CE1 和 CE2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
高速时钟输入 - CLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
分频时钟输入 - CLKDIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
来自 IOB 的串行输入数据 - D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
选通存储器接口的高速时钟 - OCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
ISERDES 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
BITSLIP_ENABLE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
DATA_RATE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
DATA_WIDTH 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
INTERFACE_TYPE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
NUM_CE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
SERDES_MODE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
ISERDES 宽度扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
扩展串并转换器位宽的指导原则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
ISERDES 延迟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
ISERDES 时序模型和参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
8:1 SDR ISERDES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
ISERDES 的 VHDL 和 Verilog 实例模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
BITSLIP 子模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Bitslip 操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Bitslip 时序模型和参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
输出并串转换逻辑资源 (OSERDES). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
数据并串转换器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
三态并串转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
OSERDES 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
OSERDES 端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
数据通路输出 - OQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
三态控制输出 - TQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
高速时钟输入 - CLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
分频时钟输入 - CLKDIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
并行数据输入 - D1 到 D6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
前言
关于本指南
本技术文档介绍 Virtex™-5 架构。有关 Virtex-5 系列 FPGA 的最新完整技术文档可以从
Xilinx 网站获得,网址是 http://www.xilinx.com/cn/virtex5。
其他技术文档
还可以从 http://www.xilinx.com/cn/virtex5 下载下列技术文档。
• Virtex-5 系列概述
本概述简要介绍 Virtex-5 系列的功能和产品选择。
• Virtex-5 数据手册:直流和开关特性
本数据手册包含 Virtex-5 系列的直流和开关特性指标。
• Virtex-5 RocketIO GTP 收发器用户指南
本指南介绍 Virtex-5 LXT 和 SXT 平台器件中提供的 RocketIO™ GTP 收发器。
• Virtex-5 三态以太网媒体访问控制器用户指南
本指南介绍 Virtex-5 LXT 和 SXT 平台器件中提供的专用三态以太网媒体访问控制器。
• 用于 PCI Express 设计的 Virtex-5 集成端点模块用户指南
本指南介绍兼容 PCI Express® 的 Virtex-5 LXT 和 SXT 平台器件中的集成端点模块。
• XtremeDSP 设计考虑因素
本指南介绍 XtremeDSP™ Slice,并包含使用 DSP48E 的参考设计。
• Virtex-5 配置指南
本配置指南包罗万象,包含有关配置接口 (串行和 SelectMAP)、比特流加密、边界
扫描和 JTAG 配置、重配置技术以及通过 SelectMAP 和 JTAG 接口读回的章节。
• Virtex-5 系统监视器用户指南
本指南简要介绍所有 Virtex-5 器件中提供的系统监视器功能。
第 章:
• Virtex-5 封装技术规范
本规范包含器件 / 封装组合和最大 I/O 数表、引脚定义表、管脚布局表、管脚图、机械
图和热性能技术规范。
• Virtex-5 PCB 设计指南
本指南提供有关 Virtex-5 器件的 PCB 设计的信息,重点讲述在 PCB 和接口层制定设
计决策的策略。
其他支持资源
若要搜索硅片数据库和软件问题解答或者在 WebCase 中创建技术支持案例,请访问 Xilinx
的网站,网址是:
http://www.xilinx.com/cn/support。
排版约定
本技术文档使用以下排版约定,并举例说明各项约定。
约定 意义或用途 示例
有关详情,请见 《Virtex-5 配置
引用其他技术文档
指南》。
斜体字
地址 (F) 在时钟事件 2 之后方可置
强调文字
为有效。
下划线文字 指示网页链接。 http://www.xilinx.com/cn/virtex5
联机技术文档
本技术文档使用以下约定:
约定 意义或用途 示例
详情请见 “其他技术文档”部
当前技术文档某位置的交叉引用 分。
蓝色文字
链接 详情请参考第 2 章 “时钟管理
技术”。
另一技术文档某位置的交叉引用 请见 《Virtex-5 数据手册》中的
红色文字
链接 图5
请转到 http://www.xilinx.com/cn
蓝色下划线文字 网站超级链接 (网址)
查阅最新技术文档。
第1章
时钟资源
全局和区域时钟
为时钟控制之目的,每个 Virtex-5 器件分成若干个时钟区域。区域数因器件大小而异,从
最小器件的八个区域到最大器件的 24 个区域。
全局时钟
每个 Virtex-5 器件有 32 条全局时钟线,它们可以对整个器件上的所有顺序资源 (CLB、
Block RAM、CMT 和 I/O)进行时钟控制,并且还可以驱动逻辑信号。可以将这 32 条全局
时钟线中的任何十条用于任意区域。全局时钟线仅由一个全局时钟缓冲器驱动,该全局时
钟缓冲器还可用作时钟使能电路或无毛刺信号的多路复用器。它可以在两个时钟源之间进
行选择,还可以切离其中一个失效的时钟源。
一个全局时钟缓冲器常常由一个时钟管理模块 (CMT) 驱动,以消除时钟分配延迟或调整其
相对于另一时钟的延迟。全局时钟多于 CMT,但一个 CMT 常常可驱动多个全局时钟。
区域时钟和 I/O 时钟
每区域有两个区域时钟缓冲器和四个区域时钟树。除了中心列中的某些组 (bank) 以外,一
个 Virtex-5 I/O 组恰好横跨一个区域。大小与区域完全相同的每个组含有四个 clock-
capable 时钟输入。其中每个输入可以差分驱动或单端驱动同一组或区域中的四个 I/O 时
钟和两个区域时钟。另外,区域时钟可以驱动相邻区域中的区域时钟树。如果 clock-
capable I/O 由单端时钟驱动,则时钟必须连接到差分 “clock capable”引脚对的正 (P)
端。负 (N) 端可以用作通用 I/O 或者空出不连接。
通过对区域时钟缓冲器进行编程可对输入时钟的频率以 1 到 8 的任意整数进行分频。这一
功能与 IOB 中的可编程串行器 / 解串器 (请见第 8 章 “高级 SelectIO 逻辑资源”)配合,
使源同步系统无需使用附加逻辑资源即可跨时钟域。
第三种时钟控制资源是 I/O 时钟,其速度非常快,可用于局部化的 I/O 串行器 / 解串器电
路。请见第 8 章 “高级 SelectIO 逻辑资源”。
第 1 章: 时钟资源
全局时钟控制资源
全局时钟是一种专用互连网络,是专为覆盖对 FPGA 中各种资源的所有时钟输入设计的。
这些网络的设计旨在降低歪斜、占空比失真和功耗并提高抖动容限。其设计目的还在于支
持甚高频信号。
了解全局时钟的信号通路可以加深对各种全局时钟资源的理解。全局时钟控制资源和网络
由以下通路和组件构成:
• 全局时钟输入
• 全局时钟缓冲器
• 时钟树和时钟网 - GCLK
• 时钟区域
全局时钟输入
Virtex-5 FPGA 包含专用的全局时钟输入位置,这些输入位置即使不用作时钟输入,也可
用作常规用户 I/O。每个器件有 20 个全局时钟输入。时钟输入可以按任意 I/O 标准配置,
包括差分 I/O 标准。每个时钟输入可以是单端输入,也可以是差分输入。如果需要,全部
20 个时钟输入都可以是差分输入。当用作输出时,全局时钟输入引脚可以按任意输出标准
配置。每个全局输入引脚可支持任何单端或差分输出标准。
全局时钟输入缓冲器基元
表 1-1 中的基元是输入时钟 I/O 输入缓冲器的不同配置。
表 1-1: 时钟缓冲器基元
基元 输入 输出 描述
IBUFG I O 单端 I/O 的输入时钟缓冲器
IBUFGDS I、IB O 差分 I/O 的输入时钟缓冲器
节能时钟门控
Virtex-5 时钟架构提供一种直截了当的方法,为降低设计中某些部分的功耗而实现时钟门
控。多数设计都包含若干未使用的 BUFGMUX 资源。一个时钟可以驱动多个 BUFGMUX
输入,而相互间同步的 BUFGMUX 输出则可以驱动截然不同的逻辑区域。例如,如果将要
求始终运行的全部逻辑都限制在几个时钟控制区域,则一个 BUFGMUX 输出就可以驱动这
些区域。翻转另一 BUFGMUX 的使能,可以为停止可能节能的逻辑区域中的动态功率消耗
提供一种简单的方法。
全局时钟控制资源
全局时钟缓冲器
每个 Virtex-5 器件有 32 个全局时钟缓冲器。每半个晶片 (上半 / 下半)包含 16 个全局时
钟缓冲器。一个全局时钟输入可以从差分输入引脚对的 P 端直接连接到器件同一半 (上半
或下半)中的任意全局时钟缓冲器的输入。每个差分全局时钟引脚对可以连接到 PCB 上的
一个差分或单端时钟。如果使用单端时钟,则必须使用引脚对的 P 端,因为只有这一引脚
上存在直接连接。有关引脚命名的约定,请参阅 《Virtex-5 封装技术规范》。必须将一个
单端时钟连接到差分全局时钟引脚的正 (P) 端。如果单端时钟连接到差分引脚对的 P 端,
则不能用其 N 端作为另一个单端时钟引脚。不过,可以将其用作普通 I/O。Virtex-5 器件
上的 20 个全局时钟引脚可以连接到 20 个差分电路板时钟或 20 个单端电路板时钟。
全局时钟缓冲器允许各种时钟源 / 信号源接入全局时钟树和网。可以输入全局时钟缓冲器
的源包括:
• 全局时钟输入
• 时钟管理模块 (CMT) 输出,包括:
♦ 数字时钟管理器 (DCM)
♦ 锁相环 (PLL)
• 其他全局时钟缓冲器输出
• 通用互连
全局时钟缓冲器只能由同半个晶片 (上半 / 下半)中的源驱动。
所有全局时钟缓冲器都可以驱动 Virtex-5 器件中的全部时钟区域 (无需遵守 Virtex-II 和
Virtex-II Pro FPGA 的主要 / 次要规则),但是,在一个时钟区域中仅能驱动十个不同的时
钟。一个时钟区域 (20 个 CLB)是由上十个 CLB 行和下十个 CLB 行组成的时钟树的一个
枝。一个时钟区域仅横跨器件的一半。
时钟缓冲器的设计允许将其配置成一个具有两个时钟输入的同步或异步无毛刺信号 2:1 多
路复用器。Virtex-5 控制引脚提供了广泛的功能性和可靠的输入切换性能。以下各小节详
述 Virtex-5 时钟缓冲器的各种配置、基元和使用模型。
第 1 章: 时钟资源
全局时钟缓冲器基元
表 1-2 中的基元是全局时钟缓冲器的不同配置。
表 1-2: 全局时钟缓冲器基元
基元 输入 输出 控制
BUFGCTRL I0、I1 O CE0、CE1、IGNORE0、IGNORE1、S0、
S1
BUFG I O -
BUFGCE I O CE
BUFGCE_1 I O CE
BUFGMUX I0、I1 O S
BUFGMUX_1 I0、I1 O S
BUFGMUX_VIRTEX4 (2) I0、I1 O S
注:
1. 所有基元均出自 BUFGCTRL 的软件预设置。
2. BUFGMUX_VIRTEX4 是从 Virtex-4 系列沿用下来的传统基元名称。
BUFGCTRL
图 1-1 所示 BUFGCTRL 基元可以在两个异步时钟之间切换。所有其他全局时钟缓冲器基
元均出自 BUFGCTRL 的某些配置。ISE 软件工具可管理所有这些基元的配置。
BUFGCTRL 具有 S0、S1、CE0 和 CE1 四条选择线。它还有 IGNORE0 和 IGNORE1 两条
附加控制线路。这六条控制线路用于控制输入 I0 和 I1。
BUFGCTRL
IGNORE1
CE1
S1
I1
O
I0
S0
CE0
IGNORE0
ug190_1_01_032206
图 1-1: BUFGCTRL 基元
全局时钟控制资源
BUFGCTRL 的设计目的是在两个时钟输入之间切换而不会产生毛刺信号。当目前所选时钟
在 S0 和 S1 变化后从 High 转为 Low 时,输出保持为 Low,直到另一 (待选)时钟从
High 转为 Low。然后,新的时钟开始驱动输出。BUFGCTRL 的默认配置是对下降沿敏感,
并且在输入切换之前保持为 Low。BUFGCTRL 也可以对上升沿敏感,并且在输入切换之前
保持为 High。
在某些应用中,并不需要前述条件。将 IGNORE 引脚置为有效会忽略 BUFGCTRL 检测在
两个时钟输入之间进行切换的条件。换言之,将 IGNORE 置为有效会使多路复用器在选择
引脚变化的瞬间切换输入。IGNORE0 使输出在选择引脚变化时立即切离 I0 输入,而
IGNORE1 则使输出在选择引脚变化时立即切离 I1 输入。
输入时钟的选择需要将一个 “选择”对 (S0 和 CE0 或者 S1 和 CE1)置为 High 有效。如
果 S 和 CE 二者之一未置为 High 有效,就不会选择所需的输入。在正常操作中,并不希望
将 S 对和 CE 对二者 (全部四条选择线)同时置为 High 有效。通常仅将 “选择”对的一
个引脚用作选择线,而将另一引脚固定为 High。真值表如表 1-3 所示。
表 1-3: 时钟资源真值表
CE0 S0 CE1 S1 O
1 1 0 X I0
1 1 X 0 I0
0 X 1 1 I1
X 0 1 1 I1
1 1 1 1 旧输入 (1)
注:
1. 旧输入是指获得此状态之前的有效输入时钟。
2. 对于所有其他状态,输出变为 INIT_OUT 的值并且不翻转。
虽然 S 和 CE 二者都用于选择所需输出,但其中各引脚的行为略有不同。当使用 CE 切换时
钟时,时钟选择的变化会比使用 S 时更快。违反 CE 引脚的建立 / 保持时间会在时钟输出端
造成毛刺信号。另一方面,使用 S 引脚允许用户在两个时钟输入之间切换而无须顾及建立 /
保持时间。这样不会导致毛刺信号。请见 “BUFGMUX_VIRTEX4”。CE 引脚的设计允许
从 Virtex-II 和 Virtex-II Pro FPGA 向后兼容。
第 1 章: 时钟资源
1 2 3 4 5 6
I0
I1
TBCCCK_CE
CE0
CE1
S0
S1
IGNORE0
IGNORE1
TBCCKO_O TBCCKO_O TBCCKO_O
at I0 Begin I1 Begin I0
ug190_1_02_071707
全局时钟控制资源
表 1-4: BUFGCTRL 属性
属性名称 描述 可能值
INIT_OUT 将 BUFGCTRL 输出初始化为配置后的指定值。 0 (默认)、1
设定正沿或负沿的行为。设定改变时钟选择时的
输出电平。
PRESELECT_I0 如果为 TRUE,则 BUFGCTRL 输出将使用配置后 FALSE (默认)、
的 I0 输入。(1) TRUE
PRESELECT_I1 如果为 TRUE,则 BUFGCTRL 输出将使用配置后 FALSE (默认)、
的 I1 输入。(1) TRUE
注:
1. 两个 PRESELECT 属性不能同时为 TRUE。
2. 可用位置约束。
BUFG
BUFG 其实就是具有一个时钟输入和一个时钟输出的时钟缓冲器。此基元在 BUFGCTRL 的
基础上将某些引脚连接到逻辑 High 或 Low。图 1-3 所示为 BUFG 与 BUFGCTRL 的关系。
可以对 BUFG 使用位置约束。
IGNORE1
VDD
CE1
GND
GND S1
BUFG
I1
VDD
O O
I
I0
I
VDD S0
VDD CE0
IGNORE0
GND
ug190_1_03_032206
BUFG(I)
BUFG(O)
TBCCKO_O
ug190_1_04_032206
第 1 章: 时钟资源
BUFGCE 和 BUFGCE_1
与 BUFG 不同,BUFGCE 是具有一个时钟输入、一个时钟输出和一条时钟使能线的时钟缓
冲器。此基元在 BUFGCTRL 的基础上将某些引脚连接到逻辑 High 或 Low。图 1-5 所示为
BUFGCE 与 BUFGCTRL 的关系。可以对 BUFGCE 和 BUFGCE_1 使用位置约束。
BUFGCE as BUFGCTRL
IGNORE1
VDD
CE1
GND
BUFGCE GND S1
CE
I1
VDD
O O
I
I0
I
VDD S0
CE CE0
IGNORE0
GND
ug190_1_05_032206
BUFGCE(I)
TBCCCK_CE
BUFGCE(CE)
BUFGCE(O)
TBCCKO_O
ug190_1_06_032206
全局时钟控制资源
BUFGCE_1(I)
TBCCCK_CE
BUFGCE_1(CE)
BUFGCE_1(O)
TBCCKO_O
ug190_1_07_032206
IGNORE1
GND
S CE1
VDD S1
BUFGMUX
I1 I1
O O
I0 I0
S
VDD S0
CE0
IGNORE0
GND
ug190_1_08_032206
TBCCCK_CE
I0
I1
O
TBCCKO_O TBCCKO_O
begin
switching using I1
ug190_1_09_032306
第 1 章: 时钟资源
在图 1-9 中:
• 当前时钟是 I0。
• S 为 High 有效。
• 如果 I0 当前为 High,则多路复用器等待将 I0 置为 Low 无效。
• 一旦 I0 为 Low,则多路复用器输出保持为 Low,直到 I1 从 High 转为 Low。
• 当 I1 从 High 转为 Low 时,输出切换到 I1。
• 如果满足了建立 / 保持要求,输出上就不会出现毛刺信号或短脉冲。
BUFGMUX_1 对上升沿敏感,并且在输入切换之前保持为 High。图 1-10 所示为
BUFGMUX_1 的时序图。可以对 BUFGMUX 和 BUFGMUX_1 使用位置约束。
TBCCCK_CE
S
I0
I1
O
TBCCKO_O
ug190_1_10_032306
BUFGMUX_VIRTEX4
BUFGMUX_VIRTEX4 是具有两个时钟输入、一个时钟输出和一条选择线的时钟缓冲器。此
基元在 BUFGCTRL 的基础上将某些引脚连接到逻辑 High 或 Low。图 1-11 所示为
BUFGMUX_VIRTEX4 与 BUFGCTRL 的关系。
全局时钟控制资源
IGNORE1
GND
VDD CE1
S S1
BUFGMUX_VIRTEX4
I1 I1
O O
I0 I0
S
S0
CE0
VDD
IGNORE0
GND
ug190_1_11_032206
I0
I1
O
TBCCKO_O
TBCCKO_O
ug190_1_12_032306
第 1 章: 时钟资源
其他使用模型
基于 BUFGCTRL 的异步多路复用器
某些情况下的应用要求立即在各时钟输入之间切换或者忽略 BUFGCTRL 的边沿敏感性。
其中一个例子就是当时钟输入之一不再切换时。如果发生这种情况,时钟输出就不会有适
宜的切换条件,因为 BUFGCTRL 永远检测不到时钟沿。这种情况使用异步多路器。图 1-
13 所示为使用 BUFGCTRL 设计示例的异步多路复用器。图 1-14 所示为该异步多路复用
器的时序图。
IGNORE1
VDD
VDD CE1
S S1
Asynchronous MUX
Design Example
I1 I1
O O
I0 I0
S0
CE0
VDD
VDD IGNORE0
ug190_1_13_032306
I1
I0
S
TBCCKO_O TBCCKO_O
O
at I0 Begin I1
UG190_1_14_032306
图 1-14: 异步多路复用器的时序图
在图 1-14 中:
• 当前时钟来自 I0。
• S 置为 High 有效。
• 时钟输出立即切换到 I1。
• 当 Ignore 信号置为 High 有效时,禁用毛刺信号保护。
全局时钟控制资源
带时钟使能的 BUFGMUX_VIRTEX4
带时钟使能 BUFGCTRL 配置的 BUFGMUX_VIRTEX4 允许用户在后续的各时钟输入之间进
行选择。如果需要,可以用时钟使能禁止输出。图 1-15 所示为 BUFGCTRL 使用设计示例
;图 1-16 所示为其时序图。
IGNORE1
GND
CE CE1
S S1
BUFGMUX_VIRTEX4+CE
Design Example
I1 I1
O O
I0 I0
S
S0
CE
CE0
IGNORE0
GND
ug190_1_15_032206
1 2 3
I0
I1
S
TBCCCK_CE
CE
TBCCKO_O TBCCKO_O
O
Begin I1
at I0 Clock Off
ug190_1_16_040907
在图 1-16 中:
• 在时间事件 1 处,输出 O 使用输入 I0。
• 在时间事件 2 之前,S 置为 High 有效。
• 在时间事件 2 之后的 TBCCKO_O 时段,输出 O 使用输入 I1。这发生在完成 I0 从 High
向 Low 转换紧接 I1 从 High 向 Low 转换之后。
• 在时间事件 3 之前的 TBCCCK_CE 时段,CE 置为 Low 有效。在 I1 完成从 High 向 Low
转换后,时钟输出切换到 Low 并保持为 Low。
第 1 章: 时钟资源
时钟树和时钟网 - GCLK
Virtex-5 时钟树是为低歪斜和低功耗操作设计的。任何未用分枝都不连接。当所有逻辑资
源都使用时,时钟树还管理负载 / 扇出。
所有全局时钟线和缓冲器都以差分形式实现,这有助于大大改善占空比和共模噪声抑制能
力。
在 Virtex-5 架构中,全局时钟线的引脚接入不仅限于逻辑资源的时钟引脚。全局时钟线不
用局部互连即可接入 CLB 中的其他引脚。需要很快信号连接和大型负载 / 扇出的应用可得
益于这种架构。
时钟区域
Virtex-5 器件通过使用时钟区域改善时钟控制分配。每个时钟区域最多可有十个全局时钟
域。这十个全局时钟可以由 32 个全局时钟缓冲器的任意组合驱动。时钟区域的尺寸固定为
20 个 CLB 高 (40 个 IOB),横跨半个晶片 (图 1-17)。通过固定时钟区域的尺寸,可使
较大的 Virtex-5 器件具有较多时钟区域。因此,Virtex-5 器件可支持的跨时钟域比以前的
FPGA 架构多许多。表 1-5 所示为各 Virtex-5 器件中的时钟区域数。中心列中的逻辑资源
(CMT、IOB 等)位于左侧时钟区域中。
CMT (如果使用)利用左侧区域中的全局时钟作为反馈线。一个特定区域中最多可有四个
CMT。如果在同一个区域中使用 IDELAYCTRL,则 IDELAYCTRL 使用该区域中的另一个
全局时钟。请见第 2 章 “时钟管理技术”。
Center Column
Logic Resources ug190_1_17_042406
图 1-17: 时钟区域
区域时钟控制资源
区域时钟控制资源
区域时钟网络是一组独立于全局时钟网络的时钟网络。与全局时钟不同,区域时钟信号
(BUFR) 的跨度限于三个时钟区域,而 I/O 时钟信号只驱动一个区域。这些网络对于源同步
接口设计尤其有用。Virtex-5 I/O 组大小与一个时钟区域相同。
要理解区域时钟控制如何工作,重要的是要了解区域时钟信号的信号通路。Virtex-5 时钟
控制资源和网络由以下通路和组件构成:
• Clock Capable I/O
• I/O 时钟缓冲器 - BUFIO
• 区域时钟缓冲器 - BUFR
• 区域时钟网
第 1 章: 时钟资源
BUFIO 基元
BUFIO 其实就是一个时钟输入和时钟输出缓冲器。输入与输出之间有一个相位延迟。
图 1-18 所示为 BUFIO。表 1-6 列出了 BUFIO 的端口。可以对 BUFIO 使用位置约束。
BUFIO
O
I
ug190_1_18_032306
图 1-18: BUFIO 基元
BUFIO 使用模型
在图 1-19 中,使用一个 BUFIO 用 clock capable I/O 驱动 I/O 逻辑。这在源同步应用中是
理想的实现方案,其中传送的时钟用于采集输入的数据。
区域时钟控制资源
I/O To Adjacent
Region
I/O
I/O
I/O
I/O
I/O
P I/O
Clock Capable I/O
N I/O
P I/O
Clock Capable I/O
N I/O
BUFIO
BUFR
BUFIO
P I/O
Clock Capable I/O
N I/O
P I/O
Clock Capable I/O
N I/O
I/O
I/O
I/O
I/O
I/O
To Adjacent
I/O Region
ug190_1_19_060706
第 1 章: 时钟资源
区域时钟缓冲器 - BUFR
区域时钟缓冲器 (BUFR) 是可以在 Virtex-5 器件中使用的另一种时钟缓冲器。BUFR 将时
钟信号驱动到时钟区域内一个独立于全局时钟树的专用时钟网。每个 BUFR 可以驱动其所
在区域中的四个区域时钟和相邻区域 (最多三个时钟区域)中的四个时钟网。与 BUFIO
不同,BUFR 不仅可以驱动其所在时钟区域和相邻时钟区域中的 I/O 逻辑,还可以驱动其中
的逻辑资源 (CLB、Block RAM 等)。BUFR 可由 clock capable 引脚或局部互连驱动。另
外,BUFR 能够根据时钟输入生成分频时钟输出。分频值为一到八之间的整数。对于要求
跨时钟域或串并转换的源同步应用来说,BUFR 是理想的。典型的时钟区域 (四个区域时
钟网络)中有两个 BUFR。中心列没有 BUFR。
BUFR 基元
BUFR 是一个具有输入时钟分频功能的时钟输入 / 时钟输出缓冲器。
I O
CE
CLR
ug190_1_20_032306
图 1-20: BUFR 基元
关于 CE 引脚的附加说明
将 CE 置为有效 / 无效后,输出时钟信号关闭。当全局设置 / 复位 (GSR) 信号为 High 时,
BUFR 不翻转,即使 CE 保持为 High 也是如此。当 BUFR 输入端口上有时钟时,BUFR 输
出在 GSR 信号置为无效后翻转。
区域时钟控制资源
BUFR 属性和模式
BUFR 中的时钟分频是在软件中通过 BUFR_DIVIDE 属性进行控制。表 1-8 所列为使用
BUFR_DIVIDE 属性时的可能值。
表 1-8: BUFR_DIVIDE 属性
属性名称 描述 可能值
BUFR_DIVIDE 规定输出时钟是否是输入时钟的一个分频版 1、2、3、4、5、6、
本。 7、8、BYPASS (默
认)
注:
1. 可以对 BUFR 使用位置约束。
1 2 3 4
CE
CLR
TBRCKO_O TBRDO_CLRO TBRCKO_O
ug190_1_21_050906
在图 1-21 中:
• 在时钟事件 1 之前,CE 置为 High 有效。
• 当 CE 置为有效然后经过四个时钟周期和 TBRCKO_O 后,输出 O 开始以输入 I 的三分频
速率翻转。速度指标中明确提供了 TBRCKO_O 及其他时序参数。
注:奇数分频的占空比不是 50/50。Low 脉冲长出 I 的一个周期。
• 在时间事件 2 处,CLR 置为有效。在时间事件 2 后再经过 TBRDO_CLRO,O 停止翻转。
• 在时间事件 3 处,CLR 置为无效。
• 在时钟事件 4 后再经过时段 TBRCKO_O,O 再次开始以输入 I 的三分频速率翻转。
第 1 章: 时钟资源
BUFR 使用模型
对于要求跨时钟域或串并转换的源同步应用来说,BUFR 是理想的。与 BUFIO 不同,
BUFR 能够对 FPGA 中除 IOB 以外的逻辑资源进行时钟控制。图 1-22 是一个 BUFR 设计
示例。
To Region
Above
CLBs
I/O Tile
CLBs
I/O Tile DSP
BRAM
CLBs Tile
I/O Tile
Clock Capable I/O
CLBs
I/O Tile
BUFIO
BUFR
To Center
of Die
To Region
Below ug190_1_22_072806
VHDL 和 Verilog 模板
区域时钟网
除了全局时钟树和网,Virtex-5 器件还包含区域时钟网。这些时钟树也是为低歪斜和低功
耗操作设计的。未用分枝都不连接。当所有逻辑资源都使用时,时钟树还管理负载 / 扇出。
区域时钟网的传播并非遍及整个 Virtex-5 器件,而是仅限于一个时钟区域。一个时钟区域
包含四个独立的区域时钟网。
要接入区域时钟网,BUFR 必须例化。一个 BUFR 最多可以驱动两个相邻时钟区域中的区
域时钟 (图 1-23)。顶部或底部区域中的 BUFR 只能相应接入下边或上边的一个相邻区
域。左侧的 BUFR 可以向中心列 I/O 馈送信号。
BUFRs
ug190_1_23_012306
VHDL 和 Verilog 模板
《库指南》中提供了所有时钟控制资源之基元的 VHDL 和 Verilog 代码以及 ISE 语言模板。
第 1 章: 时钟资源
第2章
时钟管理技术
时钟管理概述
Virtex-5 时钟管理模块 (CMT) 提供非常灵活的高性能时钟控制。每个 CMT 包含两个 DCM
和一个 PLL。图 2-1 所示为包括 CMT 模块在内的 Virtex-5 中心列资源的简化视图,DCM
位于 CMT 模块当中。每个 CMT 模块包含两个 DCM 和一个 PLL。
I/O Banks
(Larger Devices Only)
CMT Blocks
(Top Half DCMs/PLLs)
Clock I/O
(Top Half)
Config I/O
(Top Half)
Virtex-5
Config Blocks and Center Column
BUFGs
Config I/O
(Bottom Half)
Clock I/O
(Bottom Half)
CMT Blocks
(Bottom Half DCMs/PLLs)
I/O Banks
(Larger Devices Only)
ug190_2_01_032506
第 2 章: 时钟管理技术
DCM 概述
Virtex-5 数字时钟管理器 (DCM) 提供广泛而强大的时钟管理功能:
• 时钟去歪斜
DCM 包含一个延迟锁定环 (DLL),该延迟锁定环根据输入时钟去除 DCM 的输出时钟
歪斜,以完全消除时钟分布延迟。DLL 包含延迟单元 (分立的小型缓冲器)和控制逻
辑。输入的时钟驱动一连串延迟单元,因此,每个延迟单元的输出代表在不同点延迟
的输入时钟的一个版本。
控制逻辑包含一个相位检测器和一个延迟线选择器。相位检测器将输入的时钟信号
(CLKIN) 与一个反馈输入 (CLKFB) 进行比较,然后控制延迟线选择器,这实质上是通
过对 DCM 的输出加入延迟直到 CLKIN 与 CLKFB 重合。
• 频率合成
提供两个独立的倍频时钟 (CLK2X 和 CLK2X180)输出。另外还提供一个对输入频率
进行指定分频的输出 CLKDV。
另外两个输出 CLKFX 和 CLKFX180,提供对输入时钟分频和倍频后获得的输出频率。
用户可以在 《Virtex-5 数据手册》的 “DCM 时序参数”部分规定的范围内指定任意
整数的倍频系数 (M) 和分频系数 (D)。内部计算器通过确定适当的 tap 连接选择,在每
若干个周期使输出时钟沿与输入时钟重合。例如,当 M = 9 以及 D = 5 时,即 1.8 倍
频,那么在每五个输入周期后或每九个输出周期后,输出的时钟的上升沿就会与输入
时钟的上升沿重合。
DCM 基元
• 相移
DCM 提供粗调和微调两种时钟相移。粗调相移通过对 CLK0 进行 90°、180° 和 270°
的相移得到 CLK90、CLK180 和 CLK270 输出。CLK2X180 和 CLKFX180 时钟输出分
别是 CLK2X 和 CLKFX 的 180° 相移输出。
还有四种微调相移模式:固定相移、可变正相移、可变中心相移和直接相移模式。微
调相移允许所有 DCM 输出时钟都相对 CLKIN 移相,同时保持各粗调移相输出之间的
相位关系。使用固定相移模式,可以在配置过程中定义一个 1/256 个时钟周期若干倍
的固定相移。使用可变正相移和可变中心相移模式,可以动态并重复进行前后移相
1/256 个时钟周期。使用直接相移模式,相位可以动态并重复进行前后移相一个
DCM_TAP 的值。参见 《Virtex-5 数据手册》的 “DCM 时序参数”部分。
• 动态重配置
DCM 具有一组总线,用户可以通过其改变 DCM 属性而不必重新配置器件的其他部
分。详见 《Virtex-5 配置指南》的 “动态重配置”一章。
DADDR[6:0]、DI[15:0]、DWE、DEN 和 DCLK 输入端口以及 DO[15:0] 和 DRDY 输出
端口可用来动态重配置 DCM 功能。使用动态重配置可以修改 DCM 属性,改变其相
移、倍频系数 (M) 或分频系数 (D)。
DCM 基元
图 2-2 所示为 DCM 基元 DCM_BASE 和 DCM_ADV。
DCM_BASE DCM_ADV
CLKIN CLK0 CLKIN CLK0
CLKFB CLK90 CLKFB CLK90
CLK180 CLK180
RST CLK270 RST CLK270
CLK2X PSINCDEC CLK2X
CLK2X180 PSEN CLK2X180
PSCLK
CLKDV CLKDV
DADDR[6:0]
CLKFX DI[15:0] CLKFX
CLKFX180 DWE CLKFX180
LOCKED DEN LOCKED
DCLK PSDONE
DO[15:0]
DRDY
ug190_2_02_042706
图 2-2: DCM 基元
第 2 章: 时钟管理技术
DCM_BASE 基元
DCM_BASE 基元包含常用的 DCM 基本功能,简化了用户接口。使用 DCM_BASE,可以
完成对时钟去歪斜、进行频率合成和固定相移的功能。表 2-2 列出了 DCM_BASE 基元的
可用端口。
表 2-2: DCM_BASE 基元
可用端口 端口名称
时钟输入 CLKIN、CLKFB
控制和数据输入 RST
时钟输出 CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180、
CLKDV、CLKFX、CLKFX180
状态和数据输出 LOCKED
DCM_ADV 基元
DCM_ADV 基元除包含 DCM_BASE 中的所有 DCM 功能和可用端口之外,还包含具有动态
重配置功能的端口。DCM_ADV 基元是 DCM_BASE 基元的扩展。DCM_ADV 包括所有
DCM 功能,包括时钟去歪斜、频率合成、固定或可变相移以及动态重配置。表 2-3 列出
了 DCM_ADV 基元中的可用端口。
表 2-3: DCM_ADV 基元
可用端口 端口名称
时钟输入 CLKIN、CLKFB、PSCLK、DCLK
控制和数据输入 RST、PSINCDEC、PSEN、DADDR[6:0]、DI[15:0]、DWE、
DEN
时钟输出 CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180、
CLKDV、CLKFX、CLKFX180
状态和数据输出 LOCKED、PSDONE、DO[15:0]、DRDY
DCM 端口
Virtex-5 有四种可用的 DCM 端口:
• DCM 时钟输入端口
• DCM 控制和数据输入端口
• DCM 时钟输出端口
• DCM 状态和数据输出端口
DCM 时钟输入端口
时钟源输入 - CLKIN
源时钟 (CLKIN) 输入引脚提供 DCM 的时钟源。CLKIN 的频率必须在 《Virtex-5 数据手
册》中规定的范围内。时钟输入信号可以来自以下几种缓冲器之一:
DCM 端口
1. IBUFG - 全局时钟输入缓冲器
当采用反馈时钟 CLKFB 并且使用器件与 DCM 相同半边(上半边或下半边)的 IBUFG
时,DCM 会补偿时钟输入通路上的相位延迟。
2. BUFGCTRL - 内部全局时钟缓冲器
任何 BUFGCTRL 都可以通过专用全局布线驱动 Virtex-5 器件中的任意一个 DCM。当
用来串联两个 DCM 时,BUFGCTRL 可以驱动 DCM 的 CLKIN 端口。
3. PLL - 锁相环
PLL 模块可以驱动同一 CMT 内两个 DCM 中任一个的 CLKIN。二者之间不需要全局缓
冲器。详情请见第 67 页的 “应用示例”。
4. IBUF - 输入缓冲器
当 IBUF 驱动 CLKIN 输入时,从 PAD 到 DCM 输入的相位延迟将得不到补偿。
反馈时钟输入 - CLKFB
反馈时钟 (CLKFB) 输入引脚向 DCM 提供一个参考或反馈信号,对输出时钟进行延迟补偿
并且将其与输入时钟对齐。为了给 DCM 提供必须的反馈,应当将 DCM 的 CLK0 输出连接
到 CLKFB 端口。采用 CLKFB 端口后,可以去除所有时钟输出对 CLKIN 的歪斜。若不采用
CLKFB 端口,则无法去除 DCM 时钟输出对 CLKIN 的歪斜,但仍可保持所有输出时钟之间
的相对相位关系。
在内部反馈配置中,DCM 的 CLK0 输出连接到同一上半部或下半部的一个全局缓冲器。全
局缓冲器的输出连接到同一 DCM 的 CLKFB 输入。
在外部反馈配置中,适用以下规则:
1. 要传输时钟信号,DCM 的 CLK0 必须直接驱动一个 OBUF 或 BUFG 到 DDR 配置。
2. 在 FPGA 外部,传输的时钟信号必须连接到 IBUFG (GCLK 引脚)或连接到驱动
DCM 的 CLKFB 的 IBUF。CLK 和 CLKFB 二者应采用相同的 I/O 缓冲器。
第 67 页的 “应用示例”中的图 2-9 和图 2-10 所示为外部反馈配置中的时钟传送。
反馈时钟输入信号可以由以下几种缓冲器驱动:
1. IBUFG - 全局时钟输入缓冲器
它是外部反馈配置中优先采用的。当 IBUFG 驱动器件同一上半或下半部分中的 DCM
的 CLKFB 引脚时,从引脚到 DCM 的相位延迟将得到补偿。
2. BUFGCTRL - 内部全局时钟缓冲器
它在内部反馈配置中由 CLK0 驱动。
3. IBUF - 输入缓冲器
它在外部反馈配置中被采用。当采用 IBUF 时,从引脚到 DCM 的相位延迟将得不到补
偿,因而性能无法保证。
第 2 章: 时钟管理技术
相移时钟输入 - PSCLK
相移时钟 (PSCLK) 输入端口为 DCM 相移提供时钟源。PSCLK 可以(在相位和频率上)与
CLKIN 异步。相移时钟信号可以由任何时钟源 (外部或内部)驱动,包括:
1. IBUF - 输入缓冲器
2. IBUFG - 全局时钟输入缓冲器
只用通过 DCM 同边 (上半边或下半边)的 IBUFG, 才能使用专用布线资源驱动 DCM
的 PSCLK 输入。
3. BUFGCTRL - 内部全局时钟缓冲器
4. 内部时钟 - 任何使用通用布线资源的内部时钟。
PSCLK 的频率范围由 PSCLK_FREQ_LF/HF 定义,请见 《Virtex-5 数据手册》。当
CLKOUT_PHASE_SHIFT 属性设置为 NONE 或 FIXED 时,此输入必须接地。
动态重配置时钟输入 - DCLK
动态重配置时钟 (DCLK) 输入端口为 DCM 的动态重配置电路提供时钟源。DCLK 的频率可
以 (在相位和频率上)与 CLKIN 异步。动态重配置时钟信号可以由任何时钟源 (外部或
内部)驱动,包括:
1. IBUF - 输入缓冲器
2. IBUFG - 全局时钟输入缓冲器
只有器件上与 DCM 同边 (上半边或下半边)的 IBUFG 可用于驱动 DCM 的 CLKIN 输
入。
3. BUFGCTRL - 内部全局时钟缓冲器
4. 内部时钟 - 任何使用通用布线资源的内部时钟。
DCLK 的频率范围请参见 《Virtex-5 数据手册》。当不使用动态重配置时,此输入必须接
地。详情请见 《Virtex-5 配置指南》的 “动态重配置”一章。
DCM 控制和数据输入端口
复位输入 - RST
复位 (RST) 输入端口用于对 DCM 电路进行复位。它是高电平有效的异步复位信号。采用
RST 信号异步复位使所有 DCM 输出 (LOCKED 信号、所有状态信号以及所有输出时钟)
在一定传播延迟后都输出低电平。复位信号有效后,最后一个时钟周期会出现短脉冲和占
空比严重失真,或者在高电平情况下无法去除相互间的歪斜。将 RST 信号置为无效后将在
下一 CLKIN 周期开始锁定过程。
为了确保正确的 DCM 复位和锁定过程,必须将 RST 信号保持到 CLKIN 和 CLKFB 信号出
现并且稳定至少三个 CLKIN 周期。对 CLKFB 稳定三个 CLKIN 周期的要求只在外部反馈时
才适用。
《Virtex-5 数据手册》中将 DCM 在复位后锁定所需的时间定义为 LOCK_DLL (对于 DLL
输出)和 LOCK_FX (对于 DFS 输出)。这就是 “DCM 时钟输出端口”中所述的 CLK 和
CLKFX 输出。频率越高,DCM 锁定得越快。《Virtex-5 数据手册》中给出了最坏情况下的
数据。在所有设计中,DCM 都必须将复位状态保持到 CLKIN 稳定下来。
DCM 端口
相移使能输入 - PSEN
相移使能 (PSEN) 输入信号必须与 PSCLK 同步。PSEN 输入信号启动一个可变相移操作。
该信号必须保持一个 PSCLK 周期。相位在启动 PSEN 后渐变,以 PSDONE 的一个脉冲指
示其完成。在相变过程中,任何输出上均无突变或毛刺信号。从启动 PSEN 时起到标记
PSDONE 时止,DCM 输出时钟从其初始相移向目标相移逐步移动。相移在标记 PSDONE
时结束。当 CLKOUT_PHASE_SHIFT 属性设置为 NONE 或 FIXED 时,PSEN 必须接地。
图 2-6 所示为此输入的时序图。
动态重配置数据输入 - DI[15:0]
动态重配置数据 (DI) 输入总线为动态重配置提供重配置数据。在不使用时,必须将所有位
赋零。有关详情,请见 《Virtex-5 配置指南》的 “动态重配置”一章。
动态重配置地址输入 - DADDR[6:0]
动态重配置地址 (DADDR) 输入总线为动态重配置提供重配置地址。在不使用时,必须将所
有位赋零,DO 输出反映 DCM 的状态。有关详情,请见 《Virtex-5 配置指南》的 “动态
重配置”一章。
动态重配置写使能输入 - DWE
动态重配置写使能 (DWE) 输入引脚提供写使能控制信号,以便将 DI 数据写入 DADDR 地
址。在不使用时,必须将其置为低电平。有关详情,请见 《Virtex-5 配置指南》的 “动态
重配置”一章。
动态重配置使能输入 - DEN
动态重配置使能 (DEN) 输入引脚为使用动态重配置功能提供使能控制信号。当不使用动态
重配置功能时,必须将 DEN 置为低电平。当 DEN 置为低电平,DO 反映 DCM 的状态信
号。有关详情,请见 《Virtex-5 配置指南》的 “动态重配置”一章。
DCM 时钟输出端口
DCM 提供具有特定频率和相位关系的九个时钟输出。当连接 CLKFB 时,所有 DCM 时钟
输出均与 CLKIN 具有固定的相位关系。当不连接 CLKFB 时,DCM 输出时钟的相位与输入
不对齐。但是,仍可保持所有输出时钟之间的相对相位关系。
第 2 章: 时钟管理技术
1x 输出时钟 - CLK0
CLK0 输出时钟提供一个频率与 DCM 的有效 CLKIN 频率相同的时钟。默认情况下,该有
效输入时钟频率等于 CLKIN 频率。若将 CLKIN_DIVIDE_BY_2 属性设置为 TRUE,则使有
效 CLKIN 频率等于 ½ 实际 CLKIN 频率。“CLKIN_DIVIDE_BY_2 属性”部分做了详细的说
明。当连接 CLKFB 时,CLK0 与 CLKIN 相位对齐。
1x 输出时钟,90°相移 - CLK90
CLK90 输出时钟提供一个与 DCM 的 CLK0 相移 90° 后同频的时钟。
1x 输出时钟,180°相移 - CLK180
CLK180 输出时钟提供一个与 DCM 的 CLK0 相移 180° 后同频的时钟。
1x 输出时钟,270°相移 - CLK270
CLK270 输出时钟提供一个与 DCM 的 CLK0 相移 270° 后同频的时钟。
2x 输出时钟 - CLK2X
CLK2X 输出时钟提供一个与 CLK0 相位对齐的时钟,其频率是 CLK0 的两倍,具有 50/50
占空比自动校正。在 DCM 锁定之前,CLK2X 输出频率与输入时钟相同,具有 25/75 占空
比。这使 DCM 能够在相对源时钟的正确沿上锁定。
2x 输出时钟,180°相移 - CLK2X180
CLK2X180 输出时钟提供一个与 DCM 的 CLK2X 同频,并移相 180° 后的时钟。
分频输出时钟 - CLKDV
CLKDV 输出时钟提供一个与 CLK0 相位对齐的时钟,其频率是有效 CLKIN 频率的一个分
频。该分频值由 CLKDV_DIVIDE 属性确定。有关详情,请参见 “CLKDV_DIVIDE 属性”。
频率合成输出时钟 - CLKFX
CLKFX 输出时钟提供一个具有以下频率定义的时钟:
CLKFX 频率 = (M/D) × 有效 CLKIN 频率
在此公式中,M 是倍频系数 (分子),其值由 CLKFX_MULTIPLY 属性定义。D 是分频系
数 (分母),其值由 CLKFX_DIVIDE 属性定义。《Virtex-5 数据手册》中提供了 M 和 D 以
及频率合成器的输入和输出频率范围的技术指标。
CLKFX 输出的上升沿与 CLK0、CLK2X 和 CLKDV 的上升沿对齐。当 M 和 D 没有公因数
时,CLK0 的每 D 个周期中只发生一次相位对齐。
DCM 端口
频率合成输出时钟,180°- CLKFX180
CLKFX180 输出时钟提供一个与 DCM 的 CLKFX 同频,并相移 180° 后的时钟。
DCM 状态和数据输出端口
锁定输出 - LOCKED
LOCKED 输出指示 DCM 时钟输出是否有效,即是否输出正确的频率和相位。复位后,
DCM 对数千个时钟周期进行取样以获得锁定。DCM 锁定之后,LOCKED 信号置高电平。
《Virtex-5 数据手册》的 “DCM 时序参数”部分提供了锁定时间的估算值。
为了保证在启动周期末尾建立起系统时钟,DCM 可以将器件配置过程的完成延迟到 DCM
锁定之后。STARTUP_WAIT 参数启动这一功能。“STARTUP_WAIT 属性”说明提供了进
一步信息。
在 LOCKED 信号置为高有效之前,DCM 输出时钟无效,可能出现毛刺信号、尖脉冲或其
他虚假动作。尤其是 CLK2X 输出表现为一个具有 25/75 占空比的 1x 时钟。
相移完成输出 - PSDONE
相移完成 (PSDONE) 输出信号与 PSCLK 同步。在请求的相移完成时,PSDONE 在 PSCLK
的一个周期内输出高电平。此信号还指示可以对相移开始新的变化。如果当前未使用相移
功能或者该功能处于固定模式,则 PSDONE 输出信号无效。
状态或动态重配置数据输出 - DO[15:0]
当使用动态重配置时,DO 输出总线提供 DCM 状态或数据输出 (表 2-4)。《Virtex-5 配
置指南》的 “动态重配置”一章提供了关于将 DO 用作数据输出的进一步信息。
第 2 章: 时钟管理技术
当 (在复位或锁定过程中)LOCKED 为低电平时,所有状态信号均置为无效。
动态重配置就绪输出 - DRDY
动态重配置就绪 (DRDY) 输出引脚为 DCM 的动态重配置功能提供对 DEN 信号的响应。
《Virtex-5 配置指南》的 “动态重配置”一章提供了关于 DRDY 引脚的进一步信息。
DCM 属性
DCM 属性
少许 DCM 属性控制 DCM 的功能。表 2-6 概述了所有适用的 DCM 属性。本部分详细介绍
各属性。有关在 UCF、VHDL 或 Verilog 代码中应用这些属性的详细信息,请参阅 《约束
指南》,网址是: http://www.support.xilinx.com/cn/support/software_manuals.htm。
CLKDV_DIVIDE 属性
CLKDV_DIVIDE 属性控制 CLKDV 频率。源时钟用此属性的值分频。CLKDV_DIVIDE 的可
能值有:1.5、2、2.5、3、3.5、4、4.5、5、5.5、6、6.5、7、7.5、8、9、10、11、12、
13、14、15 或 16。默认值是 2。在低频模式下,任何 CLKDV_DIVIDE 值均产生一个具有
50/50 占空比的 CLKDV 输出。在高频模式下,CLKDV_DIVIDE 值必须设置为整数值才能
产生具有 50/50 占空比的 CLKDV 输出。对于非整数 CLKDV_DIVIDE 值,CLKDV 输出的占
空比如表 2-5 所示。
表 2-5: 非整数 CLKDV_DIVIDE
高频模式下的
CLKDV_DIVIDE 值 CLKDV 占空比
(高脉冲 / 低脉冲值)
1.5 1/3
2.5 2/5
3.5 3/7
4.5 4/9
5.5 5/11
6.5 6/13
7.5 7/15
CLKFX_MULTIPLY 和 CLKFX_DIVIDE 属性
CLKFX_MULTIPLY 属性设置 CLKFX 输出的倍频系数 (M) 值。CLKFX_DIVIDE 属性设置
CLKFX 输出的分频系数 (D) 值。这两个属性控制 CLKFX 输出,使 CLKFX 频率等于有效
CLKIN(源时钟)频率乘以 M/D。M 的可能值是 2 到 33 之间的任意整数。D 的可能值是 1
到 32 之间的任意整数。默认设置是 M = 4 和 D= 1。
CLKIN_PERIOD 属性
CLKIN_PERIOD 属性指定源时钟周期 (纳秒数)。默认值是 0.0 ns。将此属性设置为输入
周期值时效果最佳。
第 2 章: 时钟管理技术
CLKIN_DIVIDE_BY_2 属性
CLKIN_DIVIDE_BY_2 属性用来启用通向 DCM 的输入时钟通路中的一个翻转触发器。当设
置成 FALSE 时,DCM 的有效 CLKIN 频率等于驱动 CLKIN 输入的源时钟频率。当设置成
TRUE 时,CLKIN 频率在到达 DCM 的其余部分之前除以二。这样,DCM 看到的就是
CLKIN 输入频率的一半,并且根据这一频率操作。例如,如果由一个 100 MHz 的时钟驱动
CLKIN,并且将 CLKIN_DIVIDE_BY_2 设置为 TRUE,则有效 CLKIN 频率是 50 MHz。因
此,CLK0 输出是 50 MHz,而 CLK2X 输出是 100 MHz。源自 CLKIN 频率的任何操作或指
标都必须用有效 CLKIN 频率评价。CLKIN_DIVIDE_BY_2 的可能值是 TRUE 和 FALSE。默
认值是 FALSE。
CLKOUT_PHASE_SHIFT 属性
CLKOUT_PHASE_SHIFT 属性指示 DCM 输出使用的相移模式。其可能值是 NONE、
FIXED、VARIABLE_POSITIVE、VARIABLE_CENTER 或 DIRECT。默认值是 NONE。
当设置成 NONE 时,不能执行相移,相移值对 DCM 输出不起作用。当设置成 FIXED 时,
由相对 CLKIN 的固定相位作为 DCM 移相输出。相移值由 PHASE_SHIFT 属性确定。如果
将 CLKOUT_PHASE_SHIFT 属性设置成 FIXED 或 NONE,则 PSEN、PSINCDEC 和
PSCLK 输入必须接地。
当设置成 VARIABLE_POSITIVE 时,DCM 输出可以在相对于 CLKIN 的正范围内以可变模
式移相。当设置成 VARIABLE_CENTER 时,DCM 输出可以在相对于 CLKIN 的正范围和负
范围内以可变模式移相。如果设置成 VARIABLE_POSITIVE 或 VARIABLE_CENTER,则每
次相移递增 (或递减)将相移增大 (或减小)1/256 个 CLKIN 周期。
当设置成 DIRECT 时,DCM 输出可以在相对于 CLKIN 的正范围内以可变模式移相。每次
相移递增 / 递减将相移增大 / 减小一个 DCM_TAP。请见 《Virtex-5 数据手册》。
VARIABLE_POSITIVE 和 VARIABLE_CENTER 模式下的起始相位由相移值确定。无论
PHASE_SHIFT 属性指定何值,DIRECT 模式下的起始相位始终为零。因此,当使用
DIRECT 模式时,应将 PHASE_SHIFT 属性设置为零。可以用 《Virtex-5 配置指南》所述
“动态重配置端口”将 DIRECT 模式的非零相移值加载到 DCM。
CLK_FEEDBACK 属性
CLK_FEEDBACK 属性确定 CLKFB 所用反馈的类型。其可能值是 1X 或 NONE。默认值是
1X。当设置成 1X 时,必须由 CLK0 驱动 CLKFB 引脚。当设置成 NONE 时,不连接
CLKFB 引脚。
DCM 属性
DESKEW_ADJUST 属性
DESKEW_ADJUST 属性影响反馈通路中的延迟量。其可能值是
SYSTEM_SYNCHRONOUS、SOURCE_SYNCHRONOUS、0、1、2、3……或 31。默认
值是 SYSTEM_SYNCHRONOUS。
默认值适宜大多数设计。在源同步设计中,请将此属性设置成
SOURCE_SYNCHRONOUS。与 Xilinx 协商后才可使用其余值。有关详情,请查阅 “源同
步设置”部分。
DFS_FREQUENCY_MODE 属性
DFS_FREQUENCY_MODE 属性指定数字频率合成器 (DFS) 的频率模式。其可能值是 Low
和 High。默认值是 Low。《Virtex-5 数据手册》中规定了这两种频率模式的频率范围。
DFS_FREQUENCY_MODE 确定 CLKIN、CLKFX 和 CLKFX180 的频率范围。
DLL_FREQUENCY_MODE 属性
DLL_FREQUENCY_MODE 属性指定延迟锁定环 (DLL) 的高频或低频模式。默认值是
Low。《Virtex-5 数据手册》中规定了这两种频率模式的频率范围。
DUTY_CYCLE_CORRECTION 属性
DUTY_CYCLE_CORRECTION 属性控制 1x 时钟输出 (CLK0、CLK90、CLK180 和
CLK270)的占空比校正。其可能值是 TRUE 和 FALSE。默认值是 TRUE。当设置成 TRUE
时,将 1x 时钟输出的占空比校正到指定限度之内。详情请见 《Virtex-5 数据手册》。强烈
建议将 DUTY_CYCLE_CORRECTION 属性始终设置为 TRUE。将此属性设置为 FALSE 不
一定能产生具有与源时钟相同占空比的输出时钟。
DCM_PERFORMANCE_MODE 属性
DCM_PERFORMANCE_MODE 属性允许选择针对高频低抖动或低频宽相移范围优化
DCM。此属性的值是 MAX_SPEED 和 MAX_RANGE。默认值是 MAX_SPEED。当设置成
MAX_SPEED 时,将 DCM 优化成产生低抖动高频时钟。不过,其相移范围比选择
MAX_RANGE 时的小。当设置成 MAX_RANGE 时,将 DCM 优化成产生相移范围较宽的低
频时钟。DCM_PERFORMANCE_MODE 影响的指标有:DCM 的输入和输出频率范围、相
移范围、输出抖动、DCM_TAP、CLKIN_CLKFB_PHASE、CLKOUT_PHASE 和占空比精
度。《Virtex-5 数据手册》规定了这些值。
对于大多数情况来说,应将 DCM_PERFORMANCE_MODE 属性设置为 MAX_SPEED (默
认)。仅在以下情况下才考虑改成 MAX_RANGE:
• 频率低于 MAX_SPEED 设置的频率下限。
• 需要更大的绝对相移范围。
第 2 章: 时钟管理技术
FACTORY_JF 属性
Factory_JF 属性影响 DCM 抖动滤波器的特性。此属性控制 DCM 的 tap 更新速率。
DLL_FREQUENCY_MODE = LOW 和 DLL_FREQUENCY_MODE = HIGH 对应的默认值是
0xF0F0。
PHASE_SHIFT 属性
PHASE_SHIFT 属性确定 DCM 输出使用的相移量。此属性在固定和可变相移模式下均可使
用。如果用于可变模式,此属性设置起始相移。当 CLKOUT_PHASE_SHIFT =
VARIABLE_POSITIVE 时,PHASE_SHIFT 值的范围是 0 到 255。当
CLKOUT_PHASE_SHIFT = VARIABLE_CENTER 或 FIXED 时,PHASE_SHIFT 值的范围是
-255 到 255。当 CLKOUT_PHASE_SHIFT = DIRECT 时,PHASE_SHIFT 值的范围是 0 到
1023。默认值是 0。
有关相移操作及其与 CLKOUT_PHASE_SHIFT 和 PHASE_SHIFT 属性之关系的信息,请参
阅 “相移”部分。
STARTUP_WAIT 属性
STARTUP_WAIT 属性确定 DCM 是否在启动周期之一中等待 DCM 锁定。此属性的可能值
是 TRUE 和 FALSE。默认值是 FALSE。如果将 STARTUP_WAIT 设置成 TRUE 并且使用
BitGen 选项 LCK_cycle,则配置启动顺序在 LCK_cycle 指定的启动周期中等待,直到
DCM 锁定。
表 2-6: DCM 属性
DCM 属性名称 描述 值 默认值
CLKDV_DIVIDE 此属性控制 CLKDV,以使源时钟用 实数: 2.0
N 分频。 1.5、2.0、2.5、3.0、3.5、
此功能提供占空比自动校正,以使 4.0、4.5、5.0、5.5、6.0、
CLKDV 输出引脚在低频模式下始终 6.5、7.0、7.5、8、9、10、
具有 50/50 占空比,并且在高频模 11、12、13、14、15、16
式下对应分频系数 N 的所有整数值
也是如此。
CLKFX_DIVIDE 整数:1 到 32 1
CLKFX_MULTIPLY 整数:2 到 32 4
DCM 属性
表 2-6: DCM 属性 ( 续表 )
DCM 属性名称 描述 值 默认值
DLL_FREQUENCY_MODE 此属性指定 DLL 的频率模式。 字符串:LOW 或 HIGH LOW
第 2 章: 时钟管理技术
DCM 设计指南
本部分提供关于使用 Virtex-5 DCM 的详细使用说明和设计指南。
时钟去歪斜
Virtex-5 DCM 提供全数字专用片上时钟去歪斜功能。去歪斜功能提供源时钟和输出时钟之
间的零传播延迟、可减小输出时钟由于在片上分布而产生的歪斜以及进行高级时钟域控
制。
去歪斜功能的另一个作用是作为服务于多器件的板级时钟的时钟镜像。这一作用的过程是
将 CLK0 从芯片输出到电路板 (以及板上其他器件),然后再将时钟作为反馈时钟送回芯
片。请参见 “应用示例”部分。利用去歪斜功能,可大大简化和改进包含高扇出和高性能
时钟的系统级设计。
时钟去歪斜工作原理
去歪斜功能利用 DCM 中的 DLL 电路。形式最简单的 DLL 由一条可变延迟线(包含分立的
小型延迟单元或缓冲器)和控制逻辑组成。输入的时钟驱动延迟线。每个延迟单元的输出
代表在不同点延迟的输入时钟 (CLKIN) 的一个版本。时钟分布网络将时钟传送到所有内部
寄存器和时钟反馈 CLKFB 引脚。控制逻辑包含一个相位检测器和一个延迟线选择器。相位
检测器将输入的时钟信号 (CLKIN) 与一个反馈输入 (CLKFB) 进行对比,然后操纵延迟线选
择器,这实质上是不断增加 DCM 输出时钟的延迟直到 CLKIN 与 CLKFB 重合,即使两个
时钟具有 360° 相位差 (从而达到同相)。当输入时钟各沿与反馈时钟各沿重合时,DCM
就可以锁定输出。这两个时钟没有明显差别。这样,DCM 输出时钟便可补偿时钟分布网络
中的延迟,从而有效去除源时钟与其负载之间的延迟。每个内部延迟单元的大小是一个
DCM_TAP (请见 《Virtex-5 数据手册》中的 “交流特性”表)。图 2-3 所示为一个简单
DLL 电路。
Clock
Variable CLKOUT Distribution
CLKIN
Delay Line Network
Control
CLKFB
ug190_2_03_032506
图 2-3: 简单 DLL 电路
DCM 依靠时钟源和反馈输入中使用的专用布线与其它资源来提供正确的时钟去歪斜功能。
还有一个延迟单元 (参见 “去歪斜调整”) 可用来补偿时钟源或反馈通路。Xilinx ISE 工具
分析 DCM 周边的布线,确定是否必须插入延迟以补偿时钟源或反馈通路。因此,需要使
用专用布线获得可预见的去歪斜功能。
DCM 设计指南
输入时钟要求
DCM 的时钟输入可以由 IBUFG/IBUFGDS、IBUF 或 BUFGMUX 驱动,也可以由
BUFGCTRL 驱动。但由于 IBUF 与 DCM 时钟输入之间没有专用布线资源,所以使用 IBUF
会导致 DCM 额外的输入延迟,而且这部分延迟是无法补偿的,从而无法保证性能。
DCM 输出时钟信号实质上是输入时钟信号的一个延迟版本。因此输入时钟的任何不稳定都
会反应在 DCM 的输出中。《Virtex-5 数据手册》中规定了 DCM 输入时钟要求。
一旦锁定,DCM 能承受的输入时钟周期变化可达 CLKIN_PER_JITT_DLL_HF (在高频模
式下)或 CLKIN_PER_JITT_DLL_LF (在低频模式下)指定的值。较大的抖动 (周期变
化)可导致 DCM 失锁,失锁由 LOCKED 输出置为无效予以指示。失锁后,用户必须将
DCM 复位,DCM 才能再次开始工作。必须保持周期对周期的输入抖动在低频模式下小于
CLKIN_CYC_JITT_DLL_LF 以及在高频模式下小于 CLKIN_CYC_JITT_DLL_HF。
输入时钟变化
当输入时钟周期变化超过最大输入周期抖动指标时,就需要手动复位 DCM。未复位 DCM
会产生不可靠的 LOCKED 信号和输出时钟。如果没有使用 CLKFX 或 CLKFX180,可以暂
时停止输入时钟和反馈时钟,这对去歪斜电路几乎没有影响。
在使用 CLKFX 或 CLKFX180 的情况下停止输入时钟,则 CLKFX 或 CLKFX180 输出可能停
止翻转,而 DO[2] (指示 CLKFX 已停止)置为有效。必须复位 DCM 才能从这一事件中恢
复。
DO[2] CLKFX 停止状态位在 CLKFX 停止 100 µs 后置为有效。直到 DCM 复位后,CLKFX
才能恢复,DO[2] 才置为无效。
为尽量减少器件冷却的影响,时钟在任何其他情况下均不应停止 100 ms 以上,否则 tap 延
迟可能改变。输入时钟可以停止在一个高电平或者低电平上,并且恢复时必须有着同样的
输入时钟周期 / 频率。在这段时间内,LOCKED 处于 High 状态并且在时钟恢复时保持为
High。因此,LOCKED 的 High 状态不一定说明存在有效的时钟。
在停止输入时钟 (CLKIN 在一个或多个时钟周期内保持为 High 或 Low)时,由于延迟线
处于活动状态,所以仍然会有一到九个时钟周期的输出。当输出时钟停止时,CLKIN 停止
状态位 (DO[1]) 信号置为有效。在时钟重新开始有输入时,由于需要先 “填充”延迟线,
在一到八个时钟周期内是没有时钟输出的。最常见的情况是两三个时钟周期内没有输出。
一旦有时钟输出,则 DO[1] 信号置为无效。CLKIN 能够以前一 CLKIN 的任何相位关系重
新开始输入。但如果频率已经改变,则 DCM 需要复位。只要 LOCKED 为 Low,就会迫使
DO[1] 为 Low。在 DCM 锁定过程中,DO[1] 状态保持为 Low,直到完成锁定 (LOCKED)
信号为高。
第 2 章: 时钟管理技术
输出时钟
可以用 DCM 的九个时钟输出的任意几个或全部驱动一个全局时钟网络。全缓冲式全局时
钟分布网络可尽量减小负载差异引起的时钟歪斜。通过监测输出时钟的一个样本 (CLK0),
去歪斜电路会补偿布线网络上的延迟,以有效去除从外部输入端口到器件内各时钟负载的
延迟。
输出引脚的连接性具有几项限制。DCM 时钟输出必须驱动全局时钟缓冲器 BUFGCTRL。
DCM 时钟输出不能驱动通用布线。要使用专用布线,DCM 时钟输出就必须驱动器件与
DCM 位于同一上半部或下半部上的 BUFGCTRL。如果 DCM 和 BUFGCTRL 不在同一上半
部或下半部上,就会使用局部布线资源,则 DCM 可能无法妥善去歪斜。
请勿在 LOCKED 信号有效之前使用 DCM 输出时钟信号。在 LOCKED 信号有效之前,
DCM 输出时钟无效。
配置和启动过程中的 DCM
在 FPGA 配置过程中,DCM 处于复位状态,并且在 FPGA 启动顺序开始时进行时钟的锁
定。DCM 在开始锁定时需要 CLKIN 和 CLKFB 两个输入时钟存在并保持稳定。如果器件在
没有输入时钟或输入时钟不稳定的情况下进入配置启动顺序,那么在器件配置成功后,且
时钟输入稳定时,对 DCM 进行一次复位。
请注意以下启动周期依赖性问题:
1. 默认值是 -g LCK_cycle:NoWait。当使用这一设置时,启动顺序不等待 DCM 锁定而按
步骤进行。当 LCK_cycle 设置成其他值时,配置启动在指定的启动周期中停留,直到
DCM 锁定才进行下一步的工作。
2. 如果在 BitGen 的选项中将 LCK_cycle 选项设置成启动的某一个周期,则必须将 DCM
的 STARTUP_WAIT 属性设置为 TRUE。
3. 如果要改变器件启动顺序 (用 BitGen 选项),请勿将 LCK_cycle (等待 DCM 锁定)
放在 GTS_cycle (将 GTS 置为无效)之前。执行不正确会导致 DCM 不锁定且配置无
法完成。
去歪斜调整
DESKEW_ADJUST 属性为可配置的可变 tap 延迟单元设置用来控制添加到 DCM 反馈通路
的延迟量的数值大小 (见图 2-4)。
DCM 设计指南
Data Input
VCCO
FF
Into the
D Q FPGA
CLK DCM
Source IBUFG
CLKIN CLK0
CLKFB
DCM
Power VCCAUX
Regulator
VCCINT
ug190_2_04_042506
系统同步设置 (默认)
在默认情况下,将反馈延迟设置为系统同步模式。对系统同步系统的主要时序要求是非正
保持时间 (或最短正保持时间)以及最短时钟到输出时间和建立时间。较短的时钟到输出
时间和建立时间可缩短系统时钟周期。在理想情况下,DLL 的用途是将时钟延迟清零,以
产生较短的时钟到输出时间和非正保持时间。DESKEW_ADJUST 的系统同步设置 (默认)
配置反馈延迟单元,以保证所有输入 IOB 寄存器都具有非正保持时间。添加到反馈通路的
具体延迟数字取决于器件尺寸。这是用表征法确定的。在时序报告中,这是作为时序缩减
包括在由 TDCMINO 参数表示的输入时钟通路中。如图 2-4 所示,在默认设置中,反馈通路
包括 tap 延迟 (红色线)。《Virtex-5 数据手册》中的引脚对引脚时序参数 (有 DCM)部
分反映 DCM 在系统同步模式下时的建立、保持和时钟到输出时间。
源同步设置
当 DESKEW_ADJUST 设置为源同步模式时,DCM 反馈延迟单元设置为零。如图 2-4 所
示,在源同步模式下,DCM 时钟反馈延迟单元设置成取样窗口最小化。与系统同步模式相
比,这样会导致较长的正保持时间和时钟到输出时间。《Virtex-5 数据手册》中的源同步
开关特性部分反映 DCM 在系统同步模式下时源同步设计的各种时序参数。
第 2 章: 时钟管理技术
去歪斜电路的特性
• 通过添加一个有效时钟周期延迟消除时钟分布延迟。
• 将时钟歪斜调整到 CLKOUT_PHASE 指定的值之内,CLKOUT_PHASE 见 《Virtex-5
数据手册》。
• 消除片上及片外时钟延迟。
• 对反馈时钟通路中的延迟没有限制。
• 要求输入时钟是连续的。
• 输入频率范围较大。但是,一旦锁定在某个频率就不能承受大幅度输入频率变化。
• 不消除抖动。去歪斜电路的输出抖动是输入抖动与由去歪斜电路引起的全部附加抖动
值的累计。
• 配置可以推迟到 DCM 锁定之后完成,以保证在启动器件之前建立起系统时钟。
频率合成
DCM 提供若干种生成新时钟频率的灵活方法。每种方法有不同的工作频率范围和不同的交
流特性。CLK2X 和 CLK2X180 输出将时钟频率加倍。CLKDV 输出提供分频输出时钟 (降
低频率),可选分频系数有 1.5、2、2.5、3、3.5、4、4.5、5、5.5、6、6.5、7、7.5、8、
9、10、11、12、13、14、15 和 16。
DCM 还提供全数字专用频率合成器输出 CLKFX 及其反相位 CLKFX180。输出频率可以是
用 M ÷ D 表示的输入时钟频率的任意函数,其中 M 是倍频系数 (分子),D 是分频系数
(分母)。
频率合成输出可以驱动器件内的全局时钟布线网络。充分缓冲的全局时钟分布网络可尽量
减小距离或负载差异引起的时钟歪斜。
频率合成工作原理
DCM 时钟输出 CLKFX 是 DCM 时钟输入的任意 M ÷ D 倍。《Virtex-5 数据手册》中提供了
M 和 D 以及频率合成器的输入和输出频率范围的技术指标。
仅当向 CLKFB 提供反馈时,DCM 的输入才是与时钟输出 CLK0 对齐相位的频率合成器输
出。
频率合成器的内部工作原理很复杂,已经超出本技术文档的范围。只要是在 《Virtex-5 数
据手册》中规定的范围之内,频率合成器就可以将输入频率乘以预先计算的商 M ÷ D,从
而生成正确的输出频率。
例如,假设输入频率为 50 MHz,M = 25,D = 8 (M 和 D 的值没有公因数,因此不能约
分)。尽管分别计算 25 x 50 MHz = 1.25 GHz 和 50 MHz ÷ 8 = 6.25 MHz 所产生的似乎是
落在输入频率范围之外的分散值,但输出频率是 156.25 MHz。
DCM 设计指南
频率合成器特性
• 频率合成器提供的输出频率等于输入频率乘以 M 再除以 D。
• 输出 CLKFX 和 CLKFX180 始终有 50/50 占空比。
• 较小的 M 和 D 值可获得较短的锁定时间。尽可能将 M 和 D 除以最大公因数,以得到
最小数值。(例如,如果所需
CLKFX = 9/6 x CLKIN,请使用 M = 3 和 D = 2,不要使用 M = 9 和 D = 6。)
• 当连接了 CLKFB 时,如果 M/D 是最简分数,则在 CLK0 的每 D 个周期和 CLKFX 的每
M 个周期处 CLKFX 与 CLK0 相位对齐。
相移
DCM 提供粗粒度和细粒度时钟相移。对于粗粒度相位控制,CLK0、CLK90、CLK180 和
CLK270 输出依次相对移相 ¼ 个输入时钟周期。同样,CLK2X180 和 CLKFX180 分别提供
CLK2X 和 CLKFX 的 180° 粗调相移。粗粒度相移时钟从 DLL 电路的延迟线产生。当不连
接 CLKFB 时,这些时钟的相位关系仍能保留。
细粒度相移使用 CLKOUT_PHASE_SHIFT 和 PHASE_SHIFT 属性相对 CLKIN 移动 DCM 输
出时钟的相位。因为 CLKIN 用作参考时钟,所以相移电路需要反馈 (CLKFB) 连接,以便
将输入时钟与已移相的时钟进行比较。本部分其余内容说明 Virtex-5 DCM 中的细粒度相
移。
相移工作原理
启动细粒度相移时,九个 DCM 输出时钟都要调整。CLKIN 和 CLKFB 的上升沿之间的相移
是输入时钟周期的指定分量或 DCM_TAP 的特定量。其他 DCM 输出时钟都保留其与 CLK0
的相位关系。
相移范围
CLKIN 和 CLKFB 之间的允许相移受相移范围限制。有两种不同的相移范围:
• PHASE_SHIFT 属性范围
• FINE_SHIFT_RANGE DCM 时序参数范围
在 FIXED、VARIABLE_POSITIVE 和 VARIABLE_CENTER 相移模式下,PHASE_SHIFT 属
性是以下公式中的分子。
相移 (ns) = (PHASE_SHIFT/256) PERIODCLKIN
其中 PERIODCLKIN 表示有效 CLKIN 频率。
在 VARIABLE_CENTER 和 FIXED 模式下,PHASE_SHIFT 属性的全范围始终是 -255 到
+255。在 VARIABLE_POSITIVE 模式下,PHASE_SHIFT 属性的范围是 0 到 +255。
在 DIRECT 相移模式下,PHASE_SHIFT 属性是以下公式中的乘数:
相移 (ns) = PHASE_SHIFT x DCM_TAP
在 DIRECT 模式下,PHASE_SHIFT 属性的全范围是 0 到 1023。
FINE_SHIFT_RANGE 表示可以用相移延迟线获得的总延迟。总延迟是电路中所用延迟 tap
数的函数。《Virtex-5 数据手册》的 “DCM 时序参数”部分中规定了涵盖过程、电压和温
度的绝对范围。本部分概述了各种绝对范围。
固定模式允许 DCM 在 CLKFB 或 CLKIN 通路中插入一条延迟线。这样,当 PHASE_SHIFT
属性设置为正值时可以进入 +FINE_SHIFT_RANGE,而当 PHASE_SHIFT 属性设置为负值
时可以进入 -FINE_SHIFT_RANGE。
第 2 章: 时钟管理技术
相移示例
以下使用示例考虑到 PHASE_SHIFT 属性和 FINE_SHIFT_RANGE 参数:
• 如果 PERIODCLKIN = 2 × FINE_SHIFT_RANGE,则 PHASE_SHIFT 在固定模式下限
于 ±128。在可变正相移模式下,PHASE_SHIFT 限于 +128。在可变中心模式下,
PHASE_SHIFT 限于 ±64。
• 如果 PERIODCLKIN = FINE_SHIFT_RANGE,则 PHASE_SHIFT 在可变正相移模式下
限于 +255。在固定和可变中心模式下,PHASE_SHIFT 限于 ±255。
• 如果 PERIODCLKIN ≤ FINE_SHIFT_RANGE,则 PHASE_SHIFT 在可变正相移模式下
限于 +255。在固定和可变中心模式下,PHASE_SHIFT 限于 ±255。
• 对于上述所有情况,直接模式始终限于 +1023。
如果相移受限于 FINE_SHIFT_RANGE,请使用粗粒度相移扩大相移范围,或者将
DCM_PERFORMANCE_MODE 属性设置到 MAX_RANGE,以加大 FINE_SHIFT_RANGE。
图 2-5 说明了使用 CLK90、CLK180 和 CLK270 输出的情况,设 FINE_SHIFT_RANGE =
10 ns。
DCM 设计指南
10 ns 10 ns 10 ns 10 ns
For frequency ≥ 100 MHz (period ≤ 10 ns)
CLK0 PHASE_SHIFT = 0 - 255 covers the
whole range of period. CLK0(100 MHz)
图 2-5: 固定相移示例
第 2 章: 时钟管理技术
PSCLK
PSEN
PSDONE
PSINCDEC
ug190_2_06_032506
图 2-6: 相移时序图
相移溢出
当以下两种情况之一成立时,相移溢出 (DO[0]) 状态信号置为有效:
• DCM 相移超过允许的相移值。在这种情况下,如果相移在 VARIABLE_CENTER 模式
下递减超过 -255 和递增超过 +255,在 VARIABLE_POSITIVE 模式下递增超过 +255,
或者在 DIRECT 模式下递减超过 0 和递增超过 1023,则相移溢出信号置为 High 有
效。
• DCM 相移超出相移延迟线的绝对范围。在这种情况下,如果一定时间 (ns) 内相移在
VARIABLE_CENTER 模式下超出 ±FINE_SHIFT_RANGE/2,在 VARIABLE_POSITIVE
模式下超出 +FINE_SHIFT_RANGE,或者在 DIRECT 模式下超出 0 到
+FINE_SHIFT_RANGE 的范围,则相移溢出信号置为 High 有效。相移溢出信号一旦置
为有效便可以翻转。确定是否超出延迟线的条件是动态标定的。所以,在超出延迟线
的边界处,可以在相移不变的情况下将相移溢出信号置为有效和无效。一旦置为有效,
相移溢出信号就会至少在 40 个 CLKIN 周期内保持有效。如果 DCM 是在
FINE_SHIFT_RANGE 极限附近运行,请勿用相移溢出信号作为反转相移方向的标记。
如果相移溢出在短程相移范围内置为有效、置为无效然后又置为有效,它就会错误地
反转相移方向。请改用一个简单计数器跟踪相移值,并且仅当计算器达到预先确定的
最大 / 最小相移值时才反转相移方向 (PSINCDEC)。例如,如果相移必须在 0 到 128
之内,则将计算器设置成在达到 0 或 128 时翻转 PSINCDEC。
DCM 设计指南
相移特性
• 提供分辨率为 ±1/256 个时钟周期 (或 ±1 个 DCM_TAP,取其中较大者)的相位微
调。这可以在用户控制下动态更改。
• 相移设置影响全部九个 DCM 输出。
• 除了在直接相移模式下以外,VCC 和温度不影响相移。
• 在固定或可变模式下,可以选择 CLK90、CLK180 或 CLK270 而非 CLK0,选择
CLK2X180 而非 CLK2X,或者选择 CLKFX180 而非 CLKFX,以此扩大相移范围。固
定模式与各种 CLK 相位相结合,甚至在 25 MHz 频率 (40 ns 周期)下仍允许在整个
输入时钟周期范围内移动。
• 采用 MAX_RANGE 模式扩大相移范围。
• DCM 中的相移 (DPS) 功能需要 CLKFB 进行延迟调整。
因为 CLKFB 必须来自 CLK0,所以在此也使用了 DLL 的输出。DPS 功能的最低
CLKIN 频率由 DLL 频率模式确定。
动态重配置
动态重配置端口 (DRP) 无需向 FPGA 重新加载新比特流即可更新 DCM 初始设置。Virtex-
5 FPGA 中的 DRP 地址映射已经改变。《Virtex-5 配置指南》提供了关于使用 DRP 的更多
信息。针对 DCM,DRP 可以完成以下功能:
• 允许动态调整 CLKFX_MULTIPLY(M) 和 CLKFX_DIVIDE(D) 值,以产生新的 CLKFX 频
率。
• 允许动态调整 PHASE_SHIFT 值,以产生新相移。在固定、可变或直接相移模式下,
可以用此功能设置特定相移值。
用 DRP 加载新的 M 和 D 值时,需要以下步骤:
• 将所需 M 和 D 值减去一。例如,如果所需 M/D = 9/4,则加载 M/D = 8/3。
• 将 DCM 保持在复位状态 (将 RST 信号置为有效),并在写入新的 M 和 D 值后将其从
复位状态释放。在将 LOCKED 重新置为 High 有效之后,可以使用 CLKFX 输出。
• 读入 DADDR0,以恢复 D0 的默认状态。
• 释放 RST 状态。
第 2 章: 时钟管理技术
IBUFG 到 DCM
Virtex-5 器件包含 20 个时钟输入。通过例化 IBUFG 可以访问这些时钟输入。Virtex-5 器
件的上半部和下半部各包含 10 个 IBUFG。Virtex-5 器件上半部或下半部中的任意 IBUFG
可以驱动位于该器件同一上 / 下半部中的 DCM 的时钟输入引脚 (CLKIN、CLKFB、
PSCLK 或 DCLK)。
DCM 到 BUFGCTRL
任何 DCM 时钟输出都可以驱动器件同一上 / 下半部中的任意 BUFGCTRL 输入。对于同时
可使用多少个 DCM 输出没有限制。
BUFGCTRL 到 DCM
任何 BUFGCTRL 都可以驱动 Virtex-5 器件中的任意 DCM。但是,一个特定时钟区域中最
多只存在八个专用时钟布线资源。因为要通过 BUFGCTRL 输出接入时钟布线,所以这间
接限制了 BUFGCTRL 到 DCM 的连接。如果已经有八个 BUFGCTRL 输出接入某时钟区
域,而且该区域中有一个 DCM,则该区域中不再有其他 BUFGCTRL 可用,包括对 DCM
的 FB 引脚的连接。
应用示例
DCM1 To Global
Routing (BUFG)
CLKFB
PLL to DCM Input
CLKIN
PLL To Global
Routing (BUFG)
CLKFBIN
DCM to PLL Input
DCM2 To Global
Routing (BUFG)
CLKFB
ug190_2_07_072307
应用示例
Virtex-5 DCM 可用于各种有用的创新应用。以下示例介绍一些较常见的应用。
标准用法
图 2-8 中电路所示为应用了内部反馈以及 RST 和 LOCKED 引脚的 DCM_BASE。此示例介
绍的是最简单的 DCM 用例。
第 2 章: 时钟管理技术
DCM_BASE BUFG
IBUFG
CLK0
CLKIN CLK90
CLK180
CLKFB CLK270
IBUF CLK2X
CLK2X180
RST CLKDV
CLKFX
CLKFX180 OBUF
LOCKED
ug190_2_08_032506
图 2-8: 标准用法
板级时钟生成
图 2-9 中的板级时钟生成示例说明如何使用 DCM 为电路板上的其他组件生成输出时钟。
这一时钟可用于与其他器件的接口连接。此示例中使用了一个 DDR 寄存器,其输入连接到
GND 和 VCC。因为 DCM 的输出通至 BUFG,所以该时钟在到达输出寄存器之前是使用全
局布线资源。这样可以保证时钟的质量。
如果设计需要在其他部位有全局缓冲器,请使用 OBUF,不要使用 BUFG 和 ODDR
(图 2-10)。
不过,时钟信号的质量不如用全局缓冲器和 DDR 寄存器连接时好 (图 2-11)。
应用示例
Outside FPGA
Inside FPGA VCC
ODDR
DCM_ADV BUFG
IBUFG D1 Q
CLK0
CLKIN CLK90
CLK180 D2
IBUFG CLKFB CLK270 GND
CLK2X
CLK2X180 C
RST CLKDV
CLKFX
PSINCDEC CLKFX180
PSEN
PSCLK
DADDR[6:0]
LOCKED
DI[15:0]
DO(15:0)
DWE
DEN
DCLK
UG190_2_09_032506
Outside FPGA
Inside FPGA
DCM_ADV BUFG OBUF
IBUFG
CLK0
CLKIN CLK90
CLK180
IBUFG CLKFB CLK270
CLK2X
CLK2X180
RST CLKDV
CLKFX
PSINCDEC CLKFX180
PSEN
PSCLK
DADDR[6:0]
LOCKED
DI[15:0]
DO(15:0)
DWE
DEN
DCLK
ug190_2_10_070607
第 2 章: 时钟管理技术
VCC
ODDR
DCM_ADV BUFG
IBUFG D1 Q
CLK0
CLKIN CLK90
CLK180 D2
CLKFB CLK270 GND
CLK2X
CLK2X180 C
RST CLKDV
CLKFX
PSINCDEC CLKFX180
PSEN
PSCLK
DADDR[6:0]
LOCKED
DI[15:0]
DO(15:0)
DWE
DEN
DCLK
ug190_2_11_032506
图 2-11: 使用内部反馈的板级时钟
具有内部去歪斜的电路板去歪斜
有些应用需要具有内部去歪斜功能的电路板去时钟歪斜以实现与其他器件的接口连接。这
些应用可以用两个或更多 DCM 实现。图 2-12 所示电路可用来为同一系统中多个 Virtex 器
件之间的系统时钟去歪斜。
应用示例
Virtex-5 FPGA
BUFG
IBUFG DCM_ADV
CLK0
CLKIN CLK90
CLK180
CLKFB
CLK270
CLK2X
RST CLK2X180
PSINCDEC CLKDV
PSEN CLKFX
PSCLK CLKFX180
DADDR[6:0]
DI[15:0]
LOCKED
DWE
DEN DO(15:0)
DCLK
第 2 章: 时钟管理技术
DADDR[6:0]
DI[15:0] LOCKED
DWE
DO[15:0]
DEN
DCLK
BUFG
DCM_ADV
CLKIN CLK0
CLK90
CLKFB CLK180
CLK270
RST CLK2X
CLK2X180
PSINCDEC CLKDV
PSEN CLKFX
PSCLK CLKFX180
DADDR[6:0]
DI[15:0]
DWE
DEN LOCKED
DCLK DO[15:0]
...non-Virtex chips
ug190_2_13_032506
图 2-13: 具有连接到其他组件的内部去歪斜的电路板去歪斜
应用示例
两个 DCM 之间的时钟切换
图 2-14 所示为来自两个 DCM 的两个时钟之间的切换,同时两个 DCM 都保持锁定。
IBUFG BUFG
DCM_ADV
CLKIN CLK0
CLK90
CLK180
CLKA CLKFB
CLK270
CLK2X
RST
CLK2X180
CLKDV BUFGMUX
PSINCDEC
CLKFX
PSEN
CLKFX180
PSCLK
DADDR[6:0] I0
DI[15:0]
DWE LOCKED
I0
DEN DO(15:0) S
DCLK
CLKIN CLK0
CLK90
CLKFB CLK180
CLKB CLK270
RST CLK2X
CLK2X180
PSINCDEC CLKDV
PSEN CLKFX
PSCLK CLKFX180
DADDR[6:0]
DI[15:0]
DWE LOCKED
DEN DO(15:0)
DCLK
ug190_2_14_032506
第 2 章: 时钟管理技术
IBUFG
PLL
CLKIN1 CLKOUT0
CLKFBIN CLKOUT1
CLKOUT2
RST
CLKOUT3
CLKOUT4
CLKOUT5
CLKFBOUT
BUFG
DCM
CLKIN CLK0
CLK90
CLKFBIN
CLK180
RST BUFG
CLK270
CLK2X
CLK2X180
CLKDV
CLKFX
CLKFX180
ug190_2_15_040906
应用示例
IBUFG BUFG
DCM
CLKIN CLK0
CLK90
CLKFBIN
CLK180
RST
CLK270
CLK2X
CLK2X180
CLKDV
CLKFX
CLKFX180
PLL BUFG
CLKIN1 CLKOUT0
CLKFBIN CLKOUT1
CLKOUT2
RST
CLKOUT3
CLKOUT4
CLKOUT5
CLKFBOUT
ug190_2_16_040906
第 2 章: 时钟管理技术
IBUFG
BUFG
DCM1
CLKIN CLK0
CLK90
CLKFBIN
CLK180
RST
CLK270
CLK2X
CLK2X180 BUFG
CLKDV
CLKFX
CLKFX180
PLL BUFG
CLKIN1 CLKOUT0
CLKIN2 CLKOUT1
CLKFBIN CLKOUT2
CLKOUT3
RST
CLKOUT4
CLKOUT5
CLKFBOUT
IBUFG BUFG
DCM
CLKIN CLK0
CLK90
CLKFBIN
CLK180
CLK270
CLK2X
CLK2X180
BUFG
CLKDV
CLKFX
CLKFX180
ug190_2_18_040906
DCM 时序模型
DCM 时序模型
以下时序图说明 DCM 时钟输出在四种不同条件下的行为:
1. 复位 / 锁定
2. 固定相移
3. 可变相移
4. 状态标记
复位 / 锁定
在图 2-18 中,DCM 已经锁定。用复位信号进行复位后,所有输出时钟均稳定到期望值,
并且 LOCKED 信号置为有效。
1 2
CLKIN
RST 3 Periods
CLK0
CLK90
CLK180
CLKFX
CLKFX180
CLKDV
LOCK
LOCKED DLL ug190_2_18_042406
图 2-18: 复位 / 锁定示例
• 时钟事件 1 之前
在时钟事件 1 之前,DCM 锁定。所有时钟输出均与正确的频率和行为同相。
• 时钟事件 1
在时钟事件 1 后某时刻,复位信号在 RST 引脚置为有效。复位置为有效时,所有时钟
输出均变为逻辑零。复位信号是非同步复位。注:此图不是按比例绘制。为了使 DCM
工作正常,复位信号必须置为至少在三个 CLKIN 周期内有效。
• 时钟事件 2
时钟事件 2 在复位信号置为有效又置为无效后的若干周期后发生。在时钟事件 2 处,
锁定过程开始。如果未选定固定相移,则所有时钟输出均在时钟事件 2 后的
LOCK_DLL 时段稳定并同相。同样,LOCKED 置为有效表示完成信号的锁定。
第 2 章: 时钟管理技术
固定相移
在图 2-19 中,DCM 输出正确的频率。然而,时钟输出与所需时钟相位不同相。为时钟输
出移相,使其比输入时钟晚些时候出现,然后置 LOCKED 为有效。
1
CLKIN
CLK0
CLK90
CLK180
CLK2X
Lock Time
LOCKED
ug190_2_19_042406
图 2-19: 相移示例:固定
• 时钟事件 1
时钟事件 1 在将所需相移应用到 DCM 之后出现。此示例中的相移是正向移动。CLK0
和 CLK2X 不再与 CLKIN 对齐。但是,CLK0 和 CLK2X 相互对齐,同时 CLK90 和
CLK180 仍为 CLK0 的 90° 和 180° 版本。一旦时钟输出就绪,LOCK 信号也置为有
效。
DCM 时序模型
可变相移
在图 2-20 中,CLK0 输出用同步用户接口中的动态相移调整移相。当 DCM 完成一次相位
调整时,将 PSDONE 信号置为在一个周期内有效。在将 PSDONE 置为无效之后,可以将
PSEN 再次置为有效,为下次相移做准备。
如图 2-20 所示,所有可变相移的控制和状态信号都与 PSCLK 的上升沿同步。
CLKIN
CLK0
2
1
PSCLK
PSEN
TDMCCK_PSEN
PSDONE TDMCKO_PSDONE
TDMCCK_PSINCDEC
图 2-20: 相移示例:可变
• 时钟事件 1
在时钟事件 1 之前的 TDMCCK_PSEN 处,PSEN 置为有效。PSEN 必须恰好在一个时钟
周期内有效;否则不能保证相移只递增 / 递减一次。另外,在时钟事件 1 之前的
TDMCCK_PSINCDEC 处,PSINCDEC 值确定它是递增 (逻辑 High)还是递减 (逻辑
Low)。
• 时钟事件 2
在时钟事件 2 之前的 TDMCKO_PSDONE 处,将 PSDONE 置为有效,以指示 DCM 输出的
一次递增或递减。当相移完成时,PSDONE 恰好在一个时钟周期内为 High。完成一次
相移操作所需的时间会变化。因此,必须监测 PSDONE,以掌握相移状态。
第 2 章: 时钟管理技术
状态标记
图 2-21 中和示例显示状态标记在相移溢出和 CLKIN/CLKFB/CLKFX 时的行为。
4
CLKIN
3
CLKFB
2
CLKFX
DO(0)
DO(1)
257 - 260 Cycles
DO(2)
1
PSCLK
PSEN
PSDONE
DO(3)
ug190_2_21_042406
图 2-21: 状态标记示例
• 时钟事件 1
在此时序图的起点之前,CLK0 (未显示)已经在其最大值处移相。在时间事件 1 处,
PSDONE 置为有效。但是,因为 DCM 已经达到其最大相移能力,所以不执行任何相
位调整。反而是将相移溢出状态引脚 DO(0) 置为有效,以指示这一状态。
• 时钟事件 2
CLKFX 输出停止翻转。CLKFX 的停止状态 DO(2) 置为在此事件后的 257 到 260 个时
钟周期内有效,以指示 CLKFX 输出停止翻转。
• 时钟事件 3
CLKFB 输入停止翻转。CLKFB 的停止状态 DO(3) 置为在此事件后的 257 到 260 个时
钟周期内有效,以指示 CLKFB 输出停止翻转。
• 时钟事件 4
CLKIN 输入停止翻转。DO(1) 置为在此事件后的 9 个时钟周期内有效,以指示 CLKIN
输出停止翻转。
传统器件支持
传统器件支持
Virtex-5 DCM(DCM_BASE 和 DCM_ADV)的端口名称与 Virtex-4 DCM 的完全相同。不
过,DRP 地址映射已经改变。有关详情,请参阅 《Virtex-5 配置指南》。
Virtex-5 器件支持 Virtex-II 系列和 Virtex-II Pro 的 DCM 基元的模式。Virtex-II 或 Virtex-
II Pro 的 DCM 对 Virtex-5 DCM_ADV 的映射如下:
• Virtex-5 基元 (DCM_BASE/DCM_ADV) 的 CLKIN、CLKFB、PSCLK、PSINDEC、
PSEN、RST、CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180、CLKFX、
CLKFX180、CLKDV、PSDONE 和 LOCKED 映射到 Virtex-II DCM 或 Virtex-II Pro 的
DCM 的相同对应引脚。
• 在使用 Virtex-II 或 Virtex-II Pro 的 DCM 时,除 DO[15:0] 以外,不可访问 Virtex-5
DCM_ADV 的动态重配置引脚。
• Virtex-5 DCM_ADV 的 DO[7:0] 引脚映射到 Virtex-II 或 Virtex-II Pro 的 DCM 的
Status[7:0]。当使用 Virtex-II 或 Virtex-II Pro 的 DCM 模式时,DCM_ADV 的
DO[15:8] 不可用。
第 2 章: 时钟管理技术
第3章
锁相环 (PLL)
简介
Virtex-5 时钟管理模块 (CMT) 包括两个 DCM 和一个 PLL。CMT 内有专用布线将各种组件
连接到一起。模块中的每个块可分别处理,不过,各块之间存在的专用布线对某些连接构
成限制。使用这些专用布线可以将全局资源释放出来供其他设计单元使用。另外,因为局
部布线是在局部操作,从而减少噪声耦合的可能性,所以在 CMT 内使用局部布线可以改进
时钟通路。
图 3-1 所示 CMT 图是各种时钟输入源之间的连接以及 DCM 到 PLL 和 PLL 到 DCM 专用
布线的高层视图。六个 (全部)PLL 输出时钟多路转换成一个时钟信号,用作 DCM 的参
考时钟。来自 PLL 的两个输出时钟可以驱动 DCM。这两个时钟 100% 独立。PLL 输出时钟
0 可以驱动 DCM1,而 PLL 输出时钟 1 可以驱动 DCM2。每个 DCM 输出可以多路转换成
一个时钟信号,用作 PLL 的参考时钟。在任意给定时间,只有一个 DCM 可以用作 PLL 的
参考时钟。不可将 DCM 插入 PLL 的反馈通路。CMT 的 PLL 和 DCM 均可分别用作独立的
功能元件。PLL 的输出不是扩展频谱。
第 3 章: 锁相环 (PLL)
To any BUFG
DCM1 implementation
ug190_3_01_071207
锁相环 (PLL)
Virtex-5 器件最多包含六个 CMT 模块。PLL 的主要用途是作为广谱频率的频率合成器,并
且与 CMT 的 DCM 配合作为外部或内部时钟的抖动滤波器。
图 3-2 所示 PLL 框图提供了 PLL 组件的一般概况。
简介
D PFD CP LF VCO O0
Clock Pin
O1
O2
M
O3
O4
O5
ug190_3_02_030506
第 3 章: 锁相环 (PLL)
General
Routing
8-phase
CLKIN1 taps
D O0
CLKIN2 PFD CP LF VCO
O1
O2
CLKFBOUT 8
M
O3
CLKFB
VCO feedback phase
selection for negative O4
phase-shift affecting
all outputs
O5
ug190_3_03_050906
一般用法说明
一般用法说明
PLL 基元
图 3-4 所示为两个 Virtex-5 PLL 基元 PLL_BASE 和 PLL_ADV。
PLL_BASE PLL_ADV
ug190_3_04_050806
图 3-4: PLL 基元
PLL_BASE 基元
PLL_BASE 基元允许使用独立 PLL 的最常用功能。通过 PLL_BASE,可以使用时钟去歪
斜、频率合成、粗粒度相移和占空比编程功能。其端口如表 3-1 所示。
表 3-1: PLL_BASE 端口
描述 端口
时钟输入 CLKIN、CLKFBIN
控制输入 RST
时钟输出 CLKOUT0 到 CLOCKOUT5、CLKFBOUT
状态和数据输出 LOCKED
第 3 章: 锁相环 (PLL)
PLL_ADV 基元
PLL_ADV 基元具备所有 PLL_BASE 功能以及时钟切换的其他端口、同一 CMT 中 DCM 的
连接性以及动态重配置端口 (DRP) 的使用。其端口如表 3-2 所示。
表 3-2: PLL_ADV 端口
描述 端口
时钟输入 CLKIN1、CLKIN2、CLKFBIN、DCLK
控制和数据输入 RST、CLKINSEL、DWE、DEN、DADDR、DI、REL(1)
时钟输出 CLKOUT0 到 CLOCKOUT5、CLKFBOUT、
CLKOUTDCM0 到 CLKOUTDCM5、CLKFBDCM
状态和数据输出 LOCKED、DO、DRDY
注:
1. REL 仅用于 PMCD 模式。在 PLL 模式下,不连接 REL 或将其固定为 Low。
时钟网络去歪斜
在许多情况下,设计人员在其 I/O 时序预算中不希望造成时钟网络上的延迟,因此他们使
用 PLL 或 DLL 补偿时钟网络延迟。Virtex-5 PLL 支持这一功能。一个与参考时钟 CLKIN
的频率相匹配的时钟输出 (通常是 O0)连接到 BUFG,并且反馈到 PLL 的 CLKFB 反馈引
脚。其余输出仍可用来分解时钟频率,以合成更多频率。在这种情况下,所有输出时钟对
于输入参考时钟都具有限定的相位关系。
仅用于频率合成
PLL 还可以用于独立频率合成。在这种应用中,PLL 不能用于时钟网络去歪斜,而是用来
为其他模块生成输出时钟频率。在这种模式下,PLL 反馈通路因为要将所有布线保留为局
部布线而应设置成 INTERNAL,并且应当尽量减少抖动。图 3-5 所示为配置成频率合成器
的 PLL。在此示例中,可以使用一个 33 MHz 的外部参考时钟。该参考时钟可以是一个晶
振或另一 PLL 的输出。将 M 计数器设置到 16 可使 VCO 晶振的频率为 533 MHz (33.333
MHz x 16)。六个 PLL 输出编程为提供一个 533 MHz 的 PowerPC® 时钟、一个 266 MHz
的 PowerPC 衬垫时钟、一个 178 MHz 的时钟、一个 133 MHz 的存储器接口时钟、一个
66 MHz 的 PCI 时钟和一个 33 MHz 的 PCI 时钟。在此示例中,参考时钟和输出时钟之间没
有相位关系,但是各输出时钟之间要求有相位关系。
一般用法说明
33 MHz
Reference PFD, CP, Power PC Core
D=1 D0=1
Clock LF, VCO
D0=2 Power PC Gasket
M = 16
D0=3 CLB/Fabric
D0=8 PCI 66
D=16 PCI 33
ug190_3_05_040906
抖动滤波器
PLL 始终可以降低参考时钟上固有的抖动。PLL 只能通过例化来滤掉外部时钟在驱动另一
个模块前 (包括 DCM)的抖动。作为抖动滤波器,PLL 通常被设想成一个缓冲器,在输
出上重新生成输入频率 (例如,FIN = 100 MHz,FOUT = 100 MHz)。一般来说,通过使
用 PLL 的 BANDWIDTH 属性并且将其设置为 Low,可以实现较强的抖动过滤。将
BANDWIDTH 设置为 Low 会导致 PLL 的静态偏差增大。
限制
PLL 有些必须遵守的限制。《Virtex-5 数据手册》中的 PLL 电气指标概括了这些限制。一
般说来,主要限制是 VCO 的工作范围、输入频率、占空比可编程性和相移。
VCO 的工作范围
《Virtex-5 数据手册》中的电气指标规定了 VCO 的最低和最高工作频率。可以从速度指标
中提取这些数值。
最低和最高输入频率
《Virtex-5 数据手册》中的电气指标规定了最低和最高 CLKIN 输入频率。
占空比可编程性
在给定的 VCO 工作频率下,只可能有离散的占空比。“计数器控制”部分进一步讨论了确
定输出占空比的计数器设置。
第 3 章: 锁相环 (PLL)
相移
在许多情况下,各时钟之间需要有相移。VCO 能够以 45°的间隔提供八个移相的时钟,
因此以时间为单位的相移分辨率定义为:PS = 1/8 FVCO 或 D/8MFIN。
VCO 的频率越高,相移分辨率就越高。因为 VCO 具有明确的工作范围,所以可以把相移
分辨率的范围界定为从 1/8 FVCO_MIN 到 1/8 FVCO_MAX。
各输出计数器可分别编程,允许每个计数器在 VCO 的输出频率的基础上具有不同的相移。
注: 可能有非 45°相移。较高的相移分辨率取决于输出的占空比和 0 值。有关其他相移设置,请查
阅架构向导。
PLL 编程
PLL 的编程必须遵循规定的流程,以确保配置的稳定性和性能。本部分介绍如何根据特定
设计要求为 PLL 编程。实现设计有两种方法,即直接通过 GUI 界面 (PLL 向导)实现,或
者通过例化直接实现。无论选择哪种方法,以下信息对于 PLL 编程都是必要的:
• 参考时钟周期
• 输出时钟频率 (最多六个频率)
• 输出时钟占空比 (默认 50%)
• 以最快输出时钟周期为单位的输出时钟相移关系
• PLL 的所需带宽 (默认 OPTIMIZED,在软件中选择带宽)
• 补偿模式 (由软件自动确定)
• 以 UI (即参考时钟周期的百分数)为单位的参考时钟抖动
确定输入频率
第一步是确定输入频率。这样就可以用最低和最高输入频率定义 D 计数器的范围,用 VCO
的工作范围确定 M 计数器的范围,并且直接使用输出计数器的范围 (因为它没有限制),
从而确定所有可能的输出频率。可以有非常多种频率。在最坏的情况下,会有 52 x 64 x
128 = 425,984 种可能的组合。实际上不同频率的总数没有这么大,因为无法实现 M 和 D
计数器的整个范围,而且各种设置之间有重叠。作为例子,请考虑 FIN = 100 MHz。如果
最低 PFD 频率是 20 MHz,则 D 只能是 1 到 5。对于 D = 1,M 的值只能是 4 到 11。如果
D = 2,M 的值可以是 8 到 22。另外,D = 1 和 M = 4 是 D = 2 和 M = 8 的一个子集,因
而可以忽略 D = 1 和 M = 4 的情况。对于这种情况,只考虑 D = 3、4 和 5,因为所有其他
D 值都是这些情况的子集。这样便大大减少了可能的输出频率的数量。输出频率要按顺序
选择。应当对照可能生成的输出频率检查所需输出频率。一旦确定了第一个输出频率,便
可对 M 和 D 的值附加约束。这样做可以进一步限制可能作为第二个输出频率的输出频率
数。继续这一过程,直到选定所有输出频率。
一般用法说明
用来确定允许的 M 和 D 值的约束如以下公式所示:
f IN
D MIN = roundup ------------------------ 公式 3-3
f PFD MAX
f IN
D MAX = rounddown ----------------------- 公式 3-4
f PFD MIN
f VCOMIN
M MIN = roundup ---------------------- 公式 3-5
f IN
D MIN × f VCOMAX
M MAX = rounddown ------------------------------------------- 公式 3-6
f IN
确定 M 和 D 值
确定输入频率可得若干可能的 M 和 D 值。下一步是确定最佳 M 和 D 值。首先确定 M 的起
始值。这是根据 VCO 的目标频率 (即 VCO 的理想工作频率)计算出来的。
D MIN × f VCOMAX
M IDEAL = ------------------------------------------- 公式 3-7
f IN
PLL 端口
表 3-3 概述了 PLL 的端口。表 3-4 列出了 PLL 的属性。
表 3-3: PLL 端口
引脚名称 I/O 引脚描述
CLKIN1 输入 通用时钟输入。
CLKIN2 输入 用来动态切换 PLL 参考时钟的第二时钟输入。
CLKFBIN 输入 反馈时钟输入。
CLKINSEL 输入 控制输入多路复用器状态的信号,High = CLKIN1,Low = CLKIN2。
异步复位信号。对于 PLL,复位信号是异步复位。当发出这一信号 (即重新启用
RST 输入 PLL)时,PLL 会同步地自我重新启用。当输入时钟条件 (如频率)改变时,需要
复位。
动态重配置地址 (DADDR) 输入总线为动态重配置提供重配置地址。在不使用时,必
DADDR[4:0] 输入
须将所有位赋零。
动态重配置数据输入 (DI) 总线提供重配置数据。在不使用时,必须将所有位设置为
DI[15:0] 输入
零。
动态重配置写使能 (DWE) 输入引脚提供写使能控制信号,以便将 DI 数据写入
DWE 输入
DADDR 地址。在不使用时,必须将其固定为 Low。
动态重配置使能 (DEN) 为使用动态重配置功能提供使能控制信号。当不使用动态重
DEN 输入 配置功能时,必须将 DEN 固定为 Low。当 DEN 固定为 Low 时,DO 输出反映状态
信号。
第 3 章: 锁相环 (PLL)
表 3-3: PLL 端口 ( 续表 )
引脚名称 I/O 引脚描述
DCLK 输入 DCLK 信号是动态重配置端口的参考时钟。
当 PLL 处在 PMCD 模式下时,使用释放引脚。在 PLL 模式下,不连接此引脚或将其
REL 输入
固定为 Low。仅当移植包含传统 PMCD 模式的现有 Virtex-4 设计时才使用此引脚。
用户可配置时钟输出 (0 到 5),可以是 VCO 相位输出 (用户可控制)的 1 (忽
CLKOUT[0:5](1) 输出
略)到 128 分频版。输入时钟与输出时钟相位对齐。
专用的 PLL 反馈输出。用户可配置时钟输出,可以是 VCO 相位输出的 1(忽略)到
CLKFBOUT(2) 输出
64 分频版。输入时钟与输出时钟相位对齐。
CLKOUTDCM[0:5](1) 输出 用户可配置时钟 (0 到 5),只可连接到 PLL 所在的同一 CMT 中的 DCM。
PLL 反馈,当 PLL 驱动 DCM 时用于补偿。如果将 CLKFBOUT 引脚用于此目的,则
CLKFBDCM 输出
软件会自动映射到正确的端口。
PLL 的同步输出,指示 PLL 何时达到预定义窗口内的相位对齐和预定义 PPM 范围内
LOCKED 输出 的频率匹配。接通电源后 PLL 自动锁定,无需另行复位。如果输入时钟停止或违反
了相位对齐 (如输入时钟相移),则 LOCKED 置为无效。
DO[15:0] 输出 当使用动态重配置时,动态重配置输出总线提供 PLL 数据输出。
DRDY 输出 动态重配置就绪输出 (DRDY) 为 PLL 的动态重配置功能提供对 DEN 信号的响应。
注:
1. CLKOUTN 和 CLKOUTDCMN 使用相同的输出计数器,因此不能独立工作。
2. PLL 一旦达到 LOCKED 的 CLKFBOUT 频率,就会始终与 PFD 处的 CLKIN 频率匹配。设置 CLKFBOUT_MULT 可以有效地设置
CLKFBOUT 的分频值。
一般用法说明
PLL 属性
表 3-4: PLL 属性
属性 类型 允许值 默认 描述
COMPENSATION 字符串 SYSTEM_SYNCHRONOUS SYSTEM_ 指定 PLL 对输入时钟的相位补偿。
SOURCE_SYNCHRONOUS SYNCHRONOUS SYSTEM_SYNCHRONOUS 尝试补偿
所有时钟延迟,以实现 0 保持时间。当
与数据一起提供时钟从而使其与时钟
同步时,使用
SOURCE_SYNCHRONOUS。
由软件自动选择的其他属性:
INTERNAL
EXTERNAL
DCM2PLL
PLL2DCM
CLKFBOUT_MULT 整数 1 到 64 1 如果需要不同的频率,指定所有
CLKOUT 时钟输出的倍频量。此数字
与相应的 CLKOUT#_DIVIDE 值相结
合,将确定输出频率。
DIVCLK_DIVIDE 整数 1 到 52 1 指定所有输出时钟相对于输入时钟的
分频比。
第 3 章: 锁相环 (PLL)
表 3-4: PLL 属性 ( 续表 )
属性 类型 允许值 默认 描述
CLKIN2_PERIOD 实数 1.408 到 52.630 0.000 以 ns 数指定 PLL 的 CLKIN2 输入的输
入周期。分辨率可高达 ps 级。此信息
是强制性的,必须提供。
一般用法说明
关于这些配对的其他重要说明:
• 引脚的描述性名称不含其他可能的多用途功能,如 _CC、_VRN、_VRP 或 _VREF。
• 只显示 P 端引脚。对于差分时钟连接,请使用等效的 N 端引脚。在 FPGA 内部,只有
差分引脚对的 P 端可以连接到 CMT。
• 有关对实际引脚号的映射,请查阅 《Virtex-5 封装技术规范》。
PLL 时钟输入信号
PLL 时钟源可以来自若干种源,包括:
• IBUFG – 全局时钟输入缓冲器,PLL 会补偿此通路的延迟。
• BUFGCTRL – 内部全局时钟缓冲器,PLL 不会补偿此通路的延迟。
• IBUF – 不推荐,因为 PLL 不能补偿通用布线的延迟。IBUF 时钟输入在通至 PLL 之前
必须先通至 BUFG。
• DCMOUT – 对 PLL 的任何 DCM 输出都会补偿此通路的延迟。
第 3 章: 锁相环 (PLL)
计数器控制
PLL 输出计数器使用 DIVIDE、DUTY_CYCLE 和 PHASE 的组合提供各种各样的合成时钟。
图 3-6 说明了计数器设置如何影响计数器输出。
顶端的波形代表 PLL 模式下 VCO 的任一输出。
DIVIDE = 2
DUTY_CYCLE = 0.5
PHASE = 0
DIVIDE = 2
DUTY_CYCLE = 0.5
PHASE = 180
DIVIDE = 2
DUTY_CYCLE = 0.75
PHASE = 180
DIVIDE = 1
DUTY_CYCLE = 0.5
PHASE = 0
DIVIDE = 1
DUTY_CYCLE = 0.5
PHASE = 360
DIVIDE = 3
DUTY_CYCLE = 0.33
PHASE = 0
DIVIDE = 3
DUTY_CYCLE = 0.5
PHASE = 0
UG190_3_06_041406
图 3-6: 输出计数器时钟合成示例
VCO 和输出计数器的详细波形
时钟移相
可以通过选择参考通路或反馈通路中的八个相位之一插入延迟,以此来对 PLL 输出时钟进
行移相。下图所示为没有任何移相的情况与反馈通路插入延迟和参考通路插入延迟这两种
情况在 PLL 输出处对时钟信号边沿之影响的对比。
original
clock
dT feedback
added delay in
feedback path
dT reference
added delay in
reference path ug190_03_07_032506
图 3-7: 基本输出时钟移相
VCO 和输出计数器的详细波形
图 3-8 所示为 VCO 的八个相位输出和四个不同计数器输出。各 VCO 相位按相应的启动顺
序显示。这里保证了相位关系和启动顺序,以确保能保持正确的相位。这意味着 0°相位
的上升沿先于 45°相位的上升沿出现。通过配置 O0 计数器对 0°相位 tap 的参考时钟进
行简单的二分频。O1 计数器也配置为简单的二分频,但是相对于 VCO 有 180°的相差。
这种计数器设置可以用来为 DDR 接口提供时钟,该接口的参考时钟与数据传输边沿对齐。
O2 计数器配置为三分频。除了相位有一个周期的延迟外,O3 的输出配置与 O2 相同。
如果 PLL 用来配置特定相位关系并且输入频率有变化,那么这种相位关系也会因 VCO 频
率变化而变化,因此以 ps 为单位的绝对相移会改变。用 PLL 进行设计时必须考虑这一方
面。如果设计的一个重要方面是在各种时钟输出当中保持某种相位关系 (如 CLK 和
CLK90),那么无论输入频率如何都会保持这种关系。
第 3 章: 锁相环 (PLL)
0°
45°
90°
VCO 135°
8 Phases
180°
225°
270°
315°
O0
Counter O1
Outputs O2
O3
图 3-8: 选择 VCO 相位
所有 “O”计数器都是等同的,O0 可以做的任何事,O1 都可以做。各 PLL 输出完全相
同,因而可以灵活地连接到时钟网络。因为软件和 PLL 向导通过 PLL 的属性和向导的输出
确定正确的设置,所以在多数情况下,如此细节对于设计人员来说是难以察觉的。
参考时钟切换
PLL 参考时钟可以用 CLKINSEL 引脚动态切换。切换是异步进行的。因为时钟信号可能生
成导致 PLL 错误行为的窄脉冲,所以,当用 CLKINSEL (CLKSRC) 信号选择变换的时钟
时,PLL 应保持为 RESET 状态。PLL 时钟多路切换如图 3-9 所示。CLKINSEL (CLKSRC)
信号直接控制多路复用器。不存在同步逻辑。
CLKSRC
BUFG
IBUFG
DCM
CLKIN1
PLL
CLKIN
BUFG
IBUFG
DCM
CLKIN2
ug190_3_09_050906
图 3-9: 输入时钟切换
PLL 使用模型
缺失输入时钟或反馈时钟
当输入时钟或反馈时钟丢失时,PLL 会驱动输出时钟产生更低或更高的频率,从而导致所
有输出时钟提高 / 降低频率。频率升高 / 降低会导致时钟输出频率变化达原配置的六倍之
多。
PLL 使用模型
用 PLL 设计有几种方法。ISE 软件中的 PLL 向导可以帮助生成各种 PLL 参数。另外,可以
手动将 PLL 例化成一个组件。还可以将 PLL 与 IP 核合并。IP 核将包含并管理 PLL。
时钟网络去歪斜
PLL 的主要用途之一是时钟网络去歪斜。图 3-10 所示为这种模式下的 PLL。O 计数器之
一的时钟输出用来驱动片内逻辑或 I/O。反馈计数器用来控制输入时钟与输出时钟之间的精
确相位关系 (例如,当需要 90°相移时)。右侧所示相关时钟的波形是输入时钟与输出时
钟需要相位对齐的情况。这是最灵活的配置,但它需要两个全局时钟网络 (图 3-10)。
IBUFG BUFG
1 2 4 5 1
CLKIN1 CLKOUT0 To Logic
3 2
CLKFBIN CLKOUT1
RST CLKOUT2
3
CLKOUT3
PLL CLKOUT4 4
BUFG
CLKOUT5
6 5
CLKFBOUT
6
UG190_3_10_032506
f IN f VCO
------- = f FB = ------------ 公式 3-8
D M
第 3 章: 锁相环 (PLL)
IBUFG BUFG
UG190_3_11_040906
零延迟缓冲器
PLL 还可用来生成零延迟缓冲器时钟。零延迟缓冲器可用于具有一个时钟信号扇出对多个
相互间低歪斜的目标的应用。这种配置如图 3-12 所示。其中,反馈信号在片外传递,而
电路板迹线反馈设计成与通向外部组件的迹线匹配。在这种配置中,假定时钟边沿在
FPGA 的输入与外部组件的输入处对齐。在反馈通路中,对允许的最大延迟有限制。
CLKOUT4
PLL
CLKOUT5 BUFG
CLKFBOUT
ug190_3_12_050906
图 3-12: 零延迟缓冲器
PLL 使用模型
DCM 驱动 PLL
DCM 提供了一种生成精确相移时钟的极好方法。但是,DCM 不能减少参考时钟上的抖
动。PLL 可用来减少一个 DCM 时钟输出的输出抖动。这种配置如图 3-13 所示。PLL 配置
成不引入任何相移 (通过 PLL 的零延迟)。框图右侧所示为相关波形。当使用 DCM 的输
出直接驱动 PLL 时,DCM 和 PLL 必须同处在一个 CMT 模块内。这种实现方案在局部专用
布线上产生的噪声量最小,因此是首选方案。不过,连接方法也可以是把 DCM 连接到
BUFG,然后再连接到 PLL 的 CLKIN 输入。
IBUFG BUFG
1 2 6
CLKIN CLK0
3 7
CLKFBIN CLK90
RST CLK190
CLK270
DCM CLK2X 1
CLK2X190
CLKDV 2
CLKFX
CLKFX180 3
4
BUFG
5
4 8 9
CLKIN1 CLKOUT0
Matches 5 To Logic, etc.
CLKFBIN CLKOUT1 6
RST CLKOUT2
PLL CLKOUT3 7
CLKOUT4
CLKOUT5 8
CLKFBOUT
9
ug190_3_13_041007
第 3 章: 锁相环 (PLL)
PLL 驱动 DCM
减少时钟抖动的另一种可选方案是在输入时钟抖动传入 DCM 之前用 PLL 将其清除。这样
可以改善所有 DCM 输出的输出抖动,但 DCM 附加的任何抖动都仍会传到时钟输出。PLL
和 DCM 应处在同一个 CMT 模块中,因为 PLL 与 DCM 之间存在用来支持零延迟模式的专
用资源。如果 PLL 和 DCM 不在同一个 CMT 中,那么唯一的连接就是通过一个能抑制歪斜
可能性的 BUFG。
只要参考频率可以由一个 PLL 生成,则一个 PLL 即可驱动多个 DCM。例如,如果将一个
33 MHz 的参考时钟送入 PLL,而设计用一个 DCM 在 200 MHz 频率下工作,同时用另一
个在 100 MHz 频率下工作,那么 VCO 就可以在 600 MHz (M1 = 18) 频率下工作。可以对
VCO 的频率进行三分频以生成 200 MHz 的时钟,同时可以对另一个计数器进行六分频以
生成 100 MHz 的时钟。对于图 3-14 中的示例,一个 PLL 可以驱动两个 DCM。
IBUFG
1 2
CLKIN1 CLKOUT0
3
CLKFBIN CLKOUT1
RST CLKOUT2
PLL CLKOUT3
CLKOUT4
CLKOUT5
CLKFBOUT
Matches
BUFG
4 6
CLKIN CLK0 1
5
CLKFBIN CLK90 To Logic, etc.
2
RST CLK190
CLK270 3
7
DCM CLK2X To Logic, etc.
CLK2X190 4
CLKDV
5
CLKFX
CLKFX180 6
ug190_3_14_040906
应用指南
ug190_3_16_032506
应用指南
本部分概述何时优先选择 DCM,以及何时优先选择 PLL。
Virtex-5 PLL 最多支持六个独立的输出。需要多个不同输出的设计应使用 PLL。下面举例
说明使用多个不同输出的设计。PLL 是这种应用的理想之选,因为它可以生成一组范围广
泛的可配置输出,而 DCM 的输出数目则是固定的,并且基于参考时钟之上。当应用需要
细粒度相移或动态可调相移时,DCM 则是较好的解决方案。
第 3 章: 锁相环 (PLL)
PLL 应用示例
以下 PLL 属性设置可产生各种各样的合成时钟:
CLKOUT0_PHASE = 0;
CLKOUT0_DUTY_CYCLE = 0.5;
CLKOUT0_DIVIDE = 2;
CLKOUT1_PHASE = 90;
CLKOUT1_DUTY_CYCLE = 0.5;
CLKOUT1_DIVIDE = 2;
CLKOUT2_PHASE = 0;
CLKOUT2_DUTY_CYCLE = 0.25;
CLKOUT2_DIVIDE = 4;
CLKOUT3_PHASE = 90;
CLKOUT3_DUTY_CYCLE = 0.5;
CLKOUT3_DIVIDE = 8;
CLKOUT4_PHASE = 0;
CLKOUT4_DUTY_CYCLE = 0.5;
CLKOUT4_DIVIDE = 8;
CLKOUT5_PHASE = 135;
CLKOUT5_DUTY_CYCLE = 0.5;
CLKOUT5_DIVIDE = 8;
CLKFBOUT_PHASE = 0;
CLKFBOUT_MULT = 8;
DIVCLK_DIVIDE = 1;
CLKIN1_PERIOD = 10.0;
图 3-16 所示为产生的波形。
REFCLK
VCOCLK
CLKOUT0
CLKOUT1
CLKOUT2
CLKOUT3
CLKOUT4
CLKOUT5
UG190_3_19_032506
图 3-16: 示例波形
CLKFBIN CLKFBOUT
CLKIN O0
O1 To BUFG
O2
O3
ug190_3_16_022207
表 3-8: 端口名称映射
Virtex-4 端口名称 Virtex-5 端口名称
CLKA CLKIN
CLKB CLKFBIN
CLKC 不适用
CLKD 不适用
CLKA1 CLKOUT3
CLKA1D2 CLKOUT2
CLKA1D4 CLKOUT1
CLKA1D8 CLKOUT0
CLKB1 CLKFBOUT
CLKC1 不适用
CLKD1 不适用
第 3 章: 锁相环 (PLL)
表 3-8: 端口名称映射 ( 续表 )
Virtex-4 端口名称 Virtex-5 端口名称
RST RST
REL REL
第4章
Block RAM
Block RAM 概述
Virtex-5 Block RAM 最多存储 36K 位数据,并且可以配置成两个独立的 18 Kb RAM 或一
个 36 Kb RAM。每个 36 Kb Block RAM 可配置成一个 64K x 1 (当与一个相邻的 36 Kb
Block RAM 级联时)、32K x 1、16K x 2、8K x 4、4K x 9、2K x 18 或 1K x 36 存储器。每
个 18 Kb Block RAM 可配置成一个 16K x 1、8K x2、4K x 4、2K x 9 或 1K x 18 存储器。
与 Virtex-4 Block RAM 相似,写和读是同步操作;两个端口对称且完全独立,仅共享存储
的数据。每个端口均可配置成可用的宽度之一,与另一端口无关。另外,每个端口的读端
口宽度可与写端口宽度不同。存储器内容可用配置比特流初始化或清除。在写操作过程
中,存储器可以设置成让数据输出保持不变,或者令其反映正在写入的新数据或正在覆盖
的旧数据。
Virtex-5 FPGA Block RAM 的新增特性包括:
• 提高了存储器的每块存储能力。每个 Block RAM 最多可存储 36K 位数据。
• 支持两个独立的 18K 或一个 36K Block RAM。
• 每个 36K Block RAM 可以设置成简单双端口模式,从而将 Block RAM 的数据宽度加
倍到 72 位。18K Block RAM 也可以设置成简单双端口模式,从而将数据宽度加倍到
36 位。简单双端口模式的定义是具有带独立时钟的一个只读端口和一个只写端口。
• 不使用任何外部逻辑即可将两个相邻的 Block RAM 组合成一个更深的 64K x 1 存储
器。
• 每个 36 Kb Block RAM 或 36 Kb FIFO 提供一个 64 位纠错编码模块。可分别使用编码
/ 解码功能。
• Block RAM 输出的锁存器和寄存器模式均可将输出同步设置 / 复位到初始值。
• 提供了将 Block RAM 配置成同步 FIFO 的属性,可以消除标记延迟的不确定性。
• Virtex-5 FIFO 的 FULL 标记没有置位延迟。
Virtex-5 FPGA Block RAM 的功能:
• 18、36 或 72 位宽的端口可以每字节各有一个写使能。此功能常用于对片上微处理器
的接口连接。
• 每个 Block RAM 包含可选的地址排序和控制电路,可以用作内置多速率 FIFO 存储
器。在 Virtex-5 架构中,Block RAM 可配置成一个 18Kb 或 36Kb 的 FIFO。
第 4 章: Block RAM
• 所有输入都由端口时钟寄存,并且具有建立到时钟时序指标。
• 根据写使能 (WE) 引脚的状态,所有输出均具有读功能或边写边读功能。输出在时钟到
输出时序间隔之后有效。边写边读输出具有 WRITE_FIRST、READ_FIRST 和
NO_CHANGE 三种操作模式之一。
• 写操作需要一个时钟沿。
• 读操作需要一个时钟沿。
• 所有输出端口均有锁存。输出端口的状态在端口再次执行读或写操作之前保持不变。
默认的 Block RAM 输出是锁存器模式。
• 输出数据通路有一个可选内部流水线寄存器。我们强烈建议使用该寄存器模式。这样
可使时钟速率较高,但会增加一个周期的时钟周期延迟。
Block RAM 简介
表 4-1: 奇偶校验使用情况 ( 续表 )
设置
基元 有效读宽度 有效写宽度
读宽度 写宽度
RAMB36 9、18 或 36 9、18 或 36 与设置相同 与设置相同
注:
1. 当一个端口宽度小于 9 而另一端口宽度大于或等于 9 时,请勿使用奇偶校验位 DIP/DOP。
Block RAM 简介
除了分布式 RAM 存储器接口和高速 SelectIO™ 存储器接口,Virtex-5 器件还具有大量 36
Kb Block RAM。每个 36 Kb Block RAM 包含两个可独立控制的 18 Kb RAM。Block RAM
按列布置,而 Block RAM 存储器的总数取决于 Virtex-5 器件的尺寸。36 Kb Block 可以级
联,以便以最小的时序损失实现更深和更宽的存储器。
使用 Xilinx CORE Generator™ 块存储器模块,可轻松实现嵌入式双端口或单端口 RAM 模
块、ROM 模块、同步 FIFO 和数据宽度转换器。使用 CORE Generator FIFO Generator 模
块,可生成多速率 FIFO。同步或异步 (多速率)FIFO 的实现使用专用的硬件资源,所以
不需要为 FIFO 控制逻辑消耗其他 CLB 资源。
同步双端口和单端口 RAM
数据流
真双口 36 Kb Block RAM 双端口存储器由一个 36 Kb 存储区域以及 A 和 B 两个完全独立的
访问端口组成。同样,每个 18 Kb Block RAM 双端口存储器由一个 18 Kb 存储区域以及 A
和 B 两个完全独立的访问端口组成。其结构完全对称,并且两个端口可互换。图 4-1 所示
为真双口数据流。表 4-2 列出了端口的名称和描述。
可以向两个端口或其中任一端口写入数据,也可以从两个端口或其中任一端口读取数据。
每次写操作都是同步的;每个端口都有自己的地址、数据输入、数据输出、时钟、时钟使
能和写使能。读和写操作同步,需要一个时钟沿。
没有专用监视器对两端口上完全相同地址的作用进行仲裁。需要由用户为两个时钟适当定
时。相互冲突地同时写入同一位置不会引起任何物理损坏,但会导致数据的不确定性。
第 4 章: Block RAM
CASCADEOUTLATA CASCADEOUTLATB
CASCADEOUTREGA CASCADEOUTREGB
DIA
DIPA
ADDRA Port A
WEA
ENA
SSRA DOA
CLKA DOPA
REGCEA
36 Kb
Memory
Array
DIB DOB
DIPB DOPB
ADDRB
WEB
ENB Port B
SSRB
CLKB
REGCEB
CASCADEINLATA CASCADEINLATB
CASCADEINREGA CASCADEINREGB
ug0190_4_01_032106
图 4-1: 真双口数据流
表 4-2: 真双口的名称和描述
端口名称 描述
DI[A | B] 数据输入总线
DIP[A | B](1) 数据输入奇偶校验总线,可用于其他数据输入
ADDR[A | B] 地址总线
WE[A | B] 字节宽度写使能
EN[A | B] 当无效时,没有数据写入 Block RAM,输出总线保持其原
状态
SSR[A | B] 锁存器或寄存器模式的同步设置 / 复位
CLK[A | B] 时钟输入
DO[A | B] 数据输出总线
DOP[A | B](1) 数据输出奇偶校验总线,可用于其他数据输出
REGCE[A | B] 输出寄存器使能
CASCADEINLAT[A | B] 当未启用可选输出寄存器时,将输入引脚级联为 64K x 1
模式
同步双端口和单端口 RAM
表 4-2: 真双口的名称和描述 ( 续表 )
端口名称 描述
CASCADEOUTLAT[A | B] 当未启用可选输出寄存器时,将输出引脚级联为 64K x 1
模式
CASCADEINREG[A | B] 当启用了可选输入寄存器时,将输入级联为 64K x 1 模式
CASCADEOUTREG[A | B] 当启用了可选输出寄存器时,将输出级联为 64K x 1 模式
注:
1. “数据输入总线 - DI[A|B]<#:0> 和 DIP[A|B]<#:0>”部分有关于数据奇偶校验引脚的更多信息。
读操作
在锁存器模式下,读操作使用一个时钟沿。读地址寄存在读端口;存储的数据在 RAM 访
问后加载到输出锁存器中。当使用输出寄存器时,读操作会多占用一个延迟周期。
写操作
写操作是单时钟沿操作。写地址寄存在写端口;数据输入存储在存储器中。
写模式
在写时钟沿之后,输出锁存器上有效数据的行为取决于 WRITE_FIRST、READ_FIRST 和
NO_CHANGE 三项写模式设置。写模式的选择由配置设定。可以为各端口分别选择写模式
属性。默认模式是 WRITE_FIRST。WRITE_FIRST 将新写入的数据输出到输出总线。
READ_FIRST 在写入新数据时输出原来存储的数据。NO_CHANGE 保持先前由读操作产生
的输出。
第 4 章: Block RAM
CLK
WE
ADDR aa bb cc dd
EN
ug190_4_03_032206
READ_FIRST 模式,即先读后写模式
在 READ_FIRST 模式下,原存储在写地址的数据出现在输出锁存器上,而输入数据则存入
存储器 (先读后写)。当未使用可选输出流水线寄存器时,图 4-3 中的波形对应于锁存器
模式。
CLK
WE
ADDR aa bb cc dd
EN
ug190_4_04_032206
NO_CHANGE 模式
在 NO_CHANGE 模式下,输出锁存器在写操作过程中保持不变。如图 4-4 所示,数据输
出保持最后的读数据,不受同端口上写操作的影响。当未使用可选输出流水线寄存器时,
这些波形对应于锁存器模式。
同步双端口和单端口 RAM
CLK
WE
ADDR aa bb cc dd
EN
避免冲突
Virtex-5 Block RAM 存储器是真双口 RAM,其中两个端口可以在任意时间访问任意存储
器。但是,当从两个端口访问同一存储器位置时,用户必须遵守某些限制。有两种截然不
同的情况:两个端口共用一个时钟 (同步时钟控制),或者两个端口的时钟频率和相位不
同 (异步时钟控制)。
异步时钟控制
异步时钟控制是较普遍的情况,其中两个时钟的有效沿不同时出现:
• 在两个端口都执行读操作时没有时序约束。
• 当一个端口执行写操作时,另一端口不得使用禁用的时钟间建立时间窗口内的时钟沿
对同一存储器位置进行读或写访问。如果违反这一条件,仿真模型会产生错误。如果
忽略这一限制,读或写操作会产生不可预见的结果。不过,没有对器件造成物理损坏
的危险。
同步时钟控制
同步时钟控制是特殊情况,其中两个端口时钟的有效沿同时出现:
• 在两个端口都执行读操作时没有时序约束。
• 当一个端口执行写操作时,另一端口不得写入同一位置,除非两个端口写入完全相同
的数据。
• 当一个端口执行写操作并且该写操作成功时,如果写端口是在 READ_FIRST 模式下,
则另一端口可以从同一位置可靠地读取数据。这时,两个端口上的 DATA_OUT 都会反
映原存储的数据。
如果写端口是在 WRITE_FIRST 或 NO_CHANGE 模式下,则读端口上的 DATA_OUT
将变为无效 (不稳定)。读端口的模式设置不影响此操作。
第 4 章: Block RAM
可选输出寄存器
可选输出寄存器通过消除对流水线操作 CLB 触发器的布线延迟来提高设计的性能。这些输
出寄存器具有独立的时钟和时钟使能输入。因此,输出数据寄存器可保持其值独立于输入
寄存器的操作。图 4-5 显示了可选输出寄存器。
DO
Address Memory D Q D Q
Register
DI Array Latches Register
(common to
both ports)
Optional
CLK
Inverter
Configurable Options
UG190_4_06_040606
独立读写端口宽度选择
每个 Block RAM 端口都具有控制数据宽度和地址深度(长宽比)的功能。Virtex-5 真双口
Block RAM 将这种灵活性推广到了读和写,可以用不同的数据位宽度配置各端口。例如,
端口 A 可以有 36 位读宽度和 9 位写宽度,而端口 B 可以有 18 位读宽度和 36 位写宽度。
请见第 122 页的 “Block RAM 属性”。
如果读端口宽度不同于写端口宽度并且配置为 WRITE_FIRST 模式,则 DO 显示所有已启用
写字节的有效新数据和存储在存储器中的所有未启用字节的原数据。
独立的读写端口宽度选择提高了在 Block RAM 中实现内容可编址存储器 (CAM) 的效率。
此选项可用于所有 Virtex-5 真双口 RAM 的端口尺寸和模式。
36 Kb Memory Array
64
DI 64
8 DO
DIP 8
8 DOP
WE
9
WEADDR
WRCLK
WREN
RDEN
9
RDADDR
RDCLK
REGCE
SSR
ug190_4_02_041206
图 4-6: 简单双端口数据流
表 4-3: 简单双端口名称和描述
端口名称 描述
DO 数据输出总线
DOP 数据输出奇偶校验总线
DI 数据输入总线
DIP 数据输入奇偶校验总线
RDADDR 读数据地址总线
RDCLK 读数据时钟
RDEN 读端口使能
REGCE 输出寄存器时钟使能
SSR 同步设置 / 复位
WE 字节宽度写使能
WRADDR 写数据地址总线
WRCLK 写数据时钟
WREN 写端口使能
第 4 章: Block RAM
CASCADEOUT
(No Connect)
DI D Q DI D0
Optional
Output FF
A[14:0] D Q A[14:0]
A15 D Q
A15 1
RAM_EXTENSION =
UPPER(0) D0
0
0 WE
1 D Q
CASCADEIN of Top
WE[3:0]
DI D Q DI D0 Optional
CASCADEOUT of Bottom
Output FF
A[14:0] D Q A[14:0]
1
A15 D Q
A15 D0
RAM_EXTENSION = 0 Not Used
LOWER(1)
0 WE
1 D Q
WE[3:0] CASCADEIN
Connect to logic High or Low
Interconnect Block RAM
ug190_4_07_071607
字节宽度写使能
Block RAM 的字节宽度写使能功能提供了以八位 (一个字节)为单位写入输入数据的能
力。对于 RAMB36 真双口 RAM,有四个独立的字节宽度写使能输入。对于简单双端口模
式下的 Block RAM (RAMB36SDP),有八个独立的字节宽度写使能输入。表 4-4 概述了
36K 和 18K Block RAM 的字节宽度写使能。每个字节宽度写使能与一个输入数据字节和一
个奇偶校验位关联。在所有数据宽度配置中都必须驱动所有字节宽度写使能输入。用
Block RAM 与微处理器进行接口连接时,此功能很有用。字节宽度写使能不能用于多速率
FIFO 或 ECC 模式。“其他 RAMB18 和 RAMB36 基元设计考虑事项”部分中进一步说明了
字节宽度写使能。图 4-8 所示为 RAMB36 的字节宽度写使能时序图。
表 4-4: 可用的字节宽度写使能
基元 最大位宽度 字节宽度写使能数
RAMB36 36 4
RAMB36SDP 72 8
RAMB18 18 2
RAMB18SDP 36 4
CLK
WE 1111 0011
ADDR aa bb bb cc
EN
ug190_4_10_032106
第 4 章: Block RAM
图 4-9 所示为 36 Kb 真双口 Block RAM 基元 (RAMB36) 的所有 I/O 端口。表 4-5 列出了
这些基元。
CASCADEOUTLATA CASCADEOUTLATB
CASCADEOUTREGA CASCADEOUTREGB
32
DIA
4
DIPA
16 32
ADDRA DOA
4 4
WEA DOPA
ENA
REGCEA
SSRA
CLKA
32
DIB
4
DIPB
16 32
ADDRB DOB
4 4
WEB DOPB
ENB
REGCEB
SSRB
CLKB
CASCADEINLATA CASCADEINLATB
CASCADEINREGA CASCADEINREGB
ug0190_4_10_100906
注:
1. FIFO18、FIFO36、RAMB18 和 RAMB36 在软件 《库指南》中有描述。全部八个基元在语言模板中均
有描述。
时钟 - CLK[A|B]
各端口与独立时钟引脚完全同步。所有端口输入引脚的建立时间均参照 CLK 引脚。输出数
据总线的时钟到输出时间也参照 CLK 引脚。时钟的极性可配置 (默认为上升沿)。
使能 - EN[A|B]
使能引脚影响端口的读、写和设置 / 复位功能。具有无效使能引脚的端口输出引脚保持为
原状态,不向存储单元写入数据。使能的极性可配置 (默认为 High 有效)。
字节宽度写使能 - WE[A|B]
要将数据输入总线的内容写入已编址的存储器位置,EN 和 WE 都必须在有效时钟沿之前的
建立时间内有效。输出锁存器根据写配置 (WRITE_FIRST、READ_FIRST 或
NO_CHANGE)加载或不加载。当 WE 无效时,如果进行读操作,地址总线所指向的存储
器单元的内容会出现在数据输出总线上,这与写模式属性无关。写使能的极性不可配置
(High 有效)。
寄存器使能 - REGCE[A|B]
寄存器使能引脚 (REGCE) 控制可选输出寄存器。当 RAM 在寄存器模式下时,REGCE = 1
在时钟沿上将输出寄存到寄存器中。REGCE 的极性不可配置 (High 有效)。
第 4 章: Block RAM
设置 / 复位 - SSR[A|B]
在锁存器模式下,SSR 引脚强制数据输出锁存等于 SRVAL。请见第 122 页的 “Block
RAM 属性”。如果启用了可选输出寄存器,SSR 引脚也可把 SRVAL 值强行存入数据输出
寄存器。SSR 不影响已锁存的值。数据输出锁存器或输出寄存器同步地置为 0 或 1 有效,
包括奇偶校验位。各端口具有独立的 36 位 SRVAL[A|B] 属性。此操作不影响 RAM 存储单
元,也不干扰另一端口上的写操作。与读写操作相似,设置 / 复位功能仅当端口的使能引
脚有效时才有效。设置 / 复位的极性可配置 (默认为 High 有效)。
地址总线 - ADDR[A|B]<13:#><14:#><15:#>
地址总线选择读或写的存储单元。端口的数据位宽度决定一个 RAMB18 或 RAMB36 所需
的地址总线宽度,如表 4-6 和表 4-7 所示。
Upper
RAMB36
CASCADEINLATA/B CASCADEINREGA/B
2 2
CASCADEOUTLATA/B CASCADEOUTREGA/B
Lower
RAMB36
ug190_4_12_040606
图 4-10: 两个 RAMB36 级联
第 4 章: Block RAM
反转控制引脚
每个端口的六个控制引脚 (CLK、EN 和 SSR)各有独立的反转选项。EN 和 SSR 控制信
号可以配置成 High 或 Low 有效,而时钟可以在上升沿或下降沿上有效 (默认为在上升沿
上有效),不需要其他逻辑资源。
GSR
Virtex-5 器件的全局设置 / 复位 (GSR) 信号是异步全局信号,在器件配置结束时有效。
GSR 也可随时恢复 Virtex-5 的初始状态。GSR 信号将输出锁存器初始化为 INIT 值 (简单
双端口)或 INIT_A 和 INIT_B 值 (真双口)。请见 “Block RAM 属性”。GSR 信号不影响
内部存储器内容。因为 GSR 是全局信号,所以它在功能层 (Block RAM 基元)没有输入
引脚。
未用输入
未使用的数据和 / 或地址输入应连接为 High。
表 4-8: 端口地址映射
端口 奇偶校验
数据位置
宽度 位置
1 N.A. 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
2 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
4 7 6 5 4 3 2 1 0
8+1 3 2 1 0 3 2 1 0
16 + 2 1 0 1 0
32 + 4 0 0
Block RAM 属性
“用 VHDL 或 Verilog 代码初始化 Block RAM”部分中讨论了所有属性代码的示例。“其他
RAMB18 和 RAMB36 基元设计考虑事项”部分提供了关于使用这些属性的进一步信息。
Block RAM 属性
内容初始化 - INIT_xx
INIT_xx 属性定义初始存储器内容。默认情况下,Block RAM 存储器在器件配置序列过程
中初始化为全部归零。RAMB18 的 64 个初始化属性 (从 INIT_00 到 INIT_3F)和
RAMB36 的 128 个初始化属性 (从 INIT_00 到 INIT_7F)表示常规存储器内容。每个
INIT_xx 都是一个 64 位的十六进制编码位向量。存储器内容可以部分初始化,然后以零自
动完成。
以下公式用来确定各 INIT_xx 属性的位元位置。
设 yy = 十六进制编码对十进制的换算系数 (xx),INIT_xx 对应以下存储单元:
• 从 [(yy + 1) × 256] – 1
• 到 (yy) × 256
例如,属性 INIT_1F 的换算如下:
• yy = 十六进制编码对十进制的换算系数 (xx) “1F”= 31
• 从 [(31+1) × 256] – 1 = 8191
• 到 31 × 256 = 7936
表 4-9 给出了更多示例。
第 4 章: Block RAM
内容初始化 - INITP_xx
INITP_xx 属性定义与 DIP/DOP 总线相对应的存储器单元的初始内容 (奇偶校验位)。默认
情况下,这些存储器单元也初始化为全部归零。初始化属性表示奇偶校验位的存储器内
容。RAMB18 的八个初始化属性是 INITP_00 到 INITP_07。RAMB36 的 16 个初始化属性
是 INITP_00 到 INITP_0F。每个 INITP_xx 都是一个 64 位的十六进制编码位向量,具有常
规 INIT_xx 属性的行为。可以用同样的公式计算用特定 INITP_xx 属性初始化的位元位置。
1 不适用 <0> 1
2 不适用 <1:0> 2
4 不适用 <3:0> 4
9 <0> <7:0> (1 + 8) = 9
可选输出寄存器开关 - DO[A|B]_REG
此属性设置 Block RAM 的 A/B 输出上流水线寄存器的数值。有效值是 0 (默认)或 1。
扩展模式地址判定 - RAM_EXTENSION_[A|B]
当使用级联模式时,此属性确定所考虑的 Block RAM 是否将其 A/B 端口作为
UPPER/LOWER 地址。请参阅 “可级联 Block RAM”部分。如果未在级联模式下使用
Block RAM,则默认值为 NONE。
读宽度 - READ_WIDTH_[A|B]
此属性确定 Block RAM 的 A/B 读端口宽度。有效值是 0 (默认)、1、2、4、9、18 和
36。
写宽度 - WRITE_WIDTH_[A|B]
此属性确定 Block RAM 的 A/B 写端口宽度。有效值是 0 (默认)、1、2、4、9、18 和
36。
写模式 - WRITE_MODE_[A|B]
此属性确定 A/B 输入端口的写模式。可能的值是 WRITE_FIRST(默认)、READ_FIRST 和
NO_CHANGE。“写模式”部分提供了关于写模式的进一步信息。
第 4 章: Block RAM
可选输出寄存器
可选输出寄存器可用于 RAMB18 和 RAMB36 的 A|B 输出端口或其中之一。其选择用
DO[A|B]_REG 属性完成。两个独立的时钟使能引脚是 REGCE[A|B]。当在端口 [A|B] 使用
可选输出寄存器时,[A|B] 端口同步设置 / 复位 (SSR) 引脚的有效置位会使属性 SRVAL 指
定的值寄存到输出。图 4-5 显示了可选输出寄存器。
独立读写端口宽度选择
要用 Block RAM 的双端口模式指定端口宽度,设计人员必须使用 READ_WIDTH_[A|B] 和
WRITE_WIDTH_[A|B] 属性。应考虑以下规则:
• 设计单端口 Block RAM 需要设置一写一读端口对的宽度 (例如,READ_WIDTH_A 和
WRITE_WIDTH_A)。
• 设计双端口 Block RAM 需要设置所有端口的宽度。
• 在使用这些属性时,如果两个写端口或两个读端口都设置为 0,Xilinx ISE 工具就不会
实现该设计。在简单双端口模式下,端口宽度是固定的,并且读端口宽度等于写端口
宽度。RAMB18 的数据端口宽度是 36,而 RAMB36 的数据端口宽度是 72。
其他 Block RAM 基元
4. 下 RAMB36 的数据输出端口不使用。这些引脚不连接。
5. 如果对两个 RAMB36 设置位置约束,则它们必须相邻。如果未指定位置约束,则
Xilinx ISE 软件会自动管理 RAMB36 的位置。
6. 地址引脚 ADDR[A|B] 必须是 16 位宽。读和写两个端口都必须是一位宽。
图 4-7 所示为可级联 Block RAM。
字节宽度写使能
使用字节宽度写使能功能时应考虑以下规则:
• 在 x36 模式下,WE[3:0] 连接到四个用户 WE 输入。
• 在 x18 模式下,WE[0] 和 WE[2] 连接到用户 WE[0] 并由用户 WE[0] 驱动,而 WE[1]
和 WE[3] 由用户 WE[1] 驱动。
• 在 x9、x4、x2 和 x1 模式下,WE[3:0] 全部连接到一个用户 WE。
• 在 x72 简单双端口模式下,WE[7:0] 连接到八个用户 WE 输入。
其他 Block RAM 基元
除了 RAMB18 和 RAMB36,还有其他 Block RAM 基元可用于特定实现。RAMB18SDP 和
RAMB36SDP 用于实现 Block RAM 的简单双端口模式配置。第 115 页的表 4-3 所示为按
简单双端口模式配置的 18 Kb Block RAM 的可用端口。
RAMB36SDP 还可配置成具有内置 Block RAM ECC。有关带 ECC 功能的 RAMB36SDP 的
详细信息,请见第 153 页的 “内置纠错”。
Block RAM 应用
创建较大的 RAM 结构
Block RAM 列具有专用布线,以便用布线延迟最小的 36 Kb Block RAM 创建更宽 / 更深的
模块。这样便能以比使用常规布线资源时更小的时序损失获得更宽或更深的 RAM 结构。
Xilinx CORE Generator 程序为设计人员提供了一种简便方法,可以用多个 Block RAM 实例
生成更宽更深的存储器结构。该程序输出 VHDL 或 Verilog 实例模板和仿真模型,附带一个
可以包括在设计中的 EDIF 文件。
第 4 章: Block RAM
Block RAM
DBRAM
DI Output DO
Register
EN BRAM_RAMEN
BRAM_SSR
REGCE
SSR
CLK
RAMEN
REGCE
SSR
DBRAM D0 D1 D2 D3
DO D0 SRVAL D1 SRVAL D2
CLK
RAMEN
REGCE
SSR
DBRAM D0 D1 D2 D3
DO D0 SRVAL D1 D2
ug190_4_29_071607
第 4 章: Block RAM
注:
1. 当 EN 有效时,即使 WE 无效,ADDR 输入也必须在整个建立 / 保持时间窗口期间稳定。违反这一要求可导致 Block RAM 数据损
坏。如果允许 ADDR 时序违反指定的要求,则 EN 必须无效 (禁用)。
1 2 3 4 5
CLK
TRCCK_ADDR
ADDR 00 0F 7E 8F 20
TRDCK_DI
DI DDDD CCCC BBBB AAAA 0000
TRCKO_DO
DO MEM (00) CCCC* MEM (7E) 0101**
TRCCK_EN
EN
TRCCK_SSR
SSR
TRCCK_WE
WE
Disabled Read Write Read Reset Disabled
时钟事件 1
读操作
在读操作过程中,在 ADDR 输入上地址处的存储器内容保持不变。
• 在时间事件 1 之前的时间 TRCCK_ADDR 处,地址 00 在 Block RAM 的 ADDR 输入上变
为有效。
• 在时间事件 1 之前的时间 TRCCK_EN 处,使能在 Block RAM 的 EN 输入上置为 High 有
效,从而为后续的 READ 操作启用存储器。
• 在时间事件 1 之后的时间 TRCKO_DO 处,地址 00 处的存储器内容在 Block RAM 的 DO
引脚上变得稳定。
• 只要 EN 置为有效,所有地址变化就必须满足指定的建立和保持窗口。异步地址变化
会对存储器内容和 Block RAM 功能产生不可预见的影响。
第 4 章: Block RAM
时钟事件 2
写操作
在写操作过程中,ADDR 输入上的地址所指定位置的存储器内容被 DI 引脚上的值取代,并
且立即反映到输出锁存器上 (以 WRITE_FIRST 模式);此时写使能 (WE) 为 High。
• 在时间事件 2 之前的时间 TRCCK_ADDR 处,地址 0F 在 Block RAM 的 ADDR 输入上变
为有效。
• 在时间事件 2 之前的时间 TRDCK_DI 处,数据 CCCC 在 Block RAM 的 DI 输入上变为有
效。
• 在时间事件 2 之前的时间 TRCCK_WE 处,写使能在 Block RAM 后的 WE 处变为有效。
• 在时间事件 2 之后的时间 TRCKO_DO 处,数据 CCCC 在 Block RAM 的 DO 输出上变为
有效。
时钟事件 4
SSR (同步设置 / 复位)操作
在 SSR 操作过程中,初始化参数值 SRVAL 加载到 Block RAM 的输出锁存器中。SSR 操作
不会改变存储器的内容,并且与 ADDR 和 DI 输入无关。
• 在时间事件 4 之前的时间 TRCCK_SSR 处,同步设置 / 复位信号在 Block RAM 的 SSR 输
入上变为有效 (High)。
• 在时间事件 4 之后的时间 TRCKO_DO 处,SRVAL 0101 在 Block RAM 的 DO 输出上变
为有效。
时钟事件 5
禁止操作
将使能信号 EN 置为无效将禁止任何写、读或 SSR 操作。禁止操作不会改变存储器的内容
或输出锁存器的值。
• 在时间事件 5 之前的时间 TRCCK_EN 处,使能信号在 Block RAM 的 EN 输入上变为无
效 (Low)。
• 在时间事件 5 之后,Block RAM 的 DO 输出上的数据不变。
FPGA
Block RAM
[TIOPI + NET] + TRDCK_DI
Data DI
[TIOPI + NET] + TRCCK_ADDR
Address ADDR
Write Enable [TIOPI + NET] + TRCCK_WEN
WE
[TIOPI + NET] + TRCCK_EN
Enable EN
Synchronous [TIOPI + NET] + TRCCK_SSR
SSR
Set/Reset TRCKO_DO + [NET + TIOOP]
CLK DO Data
[TBCCKO_O + NET]
BUFGCTRL
Clock
[TIOPI + NET]
ug190_4_14_022207
第 4 章: Block RAM
内置 FIFO 支持
许多 FPGA 设计都使用 Block RAM 实现 FIFO。在 Virtex-5 架构中,Block RAM 中的专用
逻辑让用户能够轻松地实现同步或多速率 (异步)FIFO。这样就不必为计数器、比较器或
状态标记的生成使用其他 CLB 逻辑,而是每个 FIFO 只使用一个 Block RAM 即可。标准和
首字直通 (FWFT) 两种模式均可支持。
在 Virtex-5 架构中,FIFO 可以配置成 18 Kb 或 36 Kb 存储器。对于 18 Kb 模式,支持的
配置是 4K x 4、2K x 9、1K x 18 和 512 x 36。36 Kb FIFO 的支持配置是 8K x 4、4K x 9、
2K x 18、1K x 36 和 512 x 72。
Block RAM 可以配置成使用公共或独立读写时钟的先进 / 先出 (FIFO) 存储器。Block RAM
的端口 A 用作 FIFO 的读端口,而端口 B 是 FIFO 的写端口。数据在读时钟的上升沿上从
FIFO 读出,在写时钟的上升沿上写入 FIFO。如果没有外部 CLB 协助,FIFO 模式不支持独
立读写端口宽度选择。
多速率 FIFO
多速率 FIFO 提供了非常简单的用户接口。设计依靠自由运行的读写时钟,时钟频率可以
相同也可以不同,最高可达指定的频率上限。设计甚至在两个频率完全无关时仍可避免任
何歧义性、伪信号或亚稳态问题。
写操作是同步操作,每当 WREN 在 WRCLK 上升沿之前一个建立时间有效时将 DI 上提供
的数据字写入 FIFO。
内置 FIFO 支持
同步 FIFO
Virtex-4 设计对多速率和同步 FIFO 使用相同的 FIFO 逻辑,因此同步 FIFO 中的标记延迟
可以不同。在使用 Virtex-5 的同步 FIFO 时将 EN_SYN 属性设置为 TRUE,即可消除标记
有效或无效置位时的所有时钟周期延迟。
仅在多速率 FIFO (EN_SYN = FALSE) 下可支持首字直通 (FWFT) 模式。表 4-13 所示为两
种模式下的 FIFO 容量。
第 4 章: Block RAM
表 4-13: FIFO 容量
标准模式 FWFT 模式
18 Kb FIFO 36 Kb FIFO 18 Kb FIFO 36 Kb FIFO
4k + 1 条乘以 4 位 8k + 1 条乘以 4 位 4k + 2 条乘以 4 位 8k + 2 条乘以 4 位
2k + 1 条乘以 9 位 4k + 1 条乘以 9 位 2k + 2 条乘以 9 位 4k + 2 条乘以 9 位
1k + 1 条乘以 18 位 2k + 1 条乘以 18 位 1k + 2 条乘以 18 位 2k + 2 条乘以 18 位
512 + 1 条乘以 36 位 1k + 1 条乘以 36 位 512 + 2 条乘以 36 位 1k + 2 条乘以 36 位
512 + 1 条乘以 72 位 512 + 2 条乘以 72 位
同步 FIFO 的实现
表 4-14 概述了同步 FIFO 的各种实现。图 4-16 所示为时序区别。
表 4-14: 各种同步 FIFO 实现的比较
同步 FIFO 的实现 优点 缺点
EN_SYN = TRUE,DO_REG = 0 没有标记不确定性 时钟到输出信号较慢
EN_SYN = TRUE,DO_REG = 1 时钟到输出信号较快,没有标记 数据延迟加一。行为与具有一个附加数据
不确定性 输出流水线寄存器的同步 FIFO 相似
EN_SYN = FALSE,DO_REG = 1 时钟到输出信号较快。与 Virtex- 下降沿有标记不确定性。上升沿可保证
RDCLK = WRCLK 4 FIFO 相似 FULL 和 EMPTY 标记
rdclk
rden
DO
EN_SYN = TRUE TCKO = 1.9ns
DO_REG = 0
DO
EN_SYN = TRUE
DO_REG = 1
DO
EN_SYN = FALSE
DO_REG = 1
ug190_c4_x1_071007
FIFO 架构:顶层视图
FIFO 架构:顶层视图
图 4-17 所示为 Virtex-5 FIFO 架构的顶层视图。读指针、写指针和状态标记逻辑仅为
FIFO 专用。
waddr raddr
WRCOUNT RDCOUNT
Write Block Read
Pointer RAM Pointer
mem_wen
mem_ren
oe
DIN/DINP DO/DOP
WRCLK RDCLK
Status Flag
WREN RDEN
Logic
RST
FULL
EMPTY
ALMOSTFULL
ALMOSTEMPTY
RDERR
WRERR ug190_4_27_061906
FIFO 基元
图 4-18 所示为 FIFO36 基元。
FIFO36
DI[31:0] DO[31:0]
DIP[3:0] DOP[3:0]
RDEN WRCOUNT[12:0]
RDCLK RDCOUNT[12:0]
FULL
WREN EMPTY
WRCLK
ALMOSTFULL
RST ALMOSTEMPTY
RDERR
WRERR
ug190_4_15_021107
图 4-18: FIFO36 基元
第 4 章: Block RAM
DI[15:0] DO[15:0]
DIP[1:0] DOP[1:0]
RDEN WRCOUNT[11:0]
RDCLK RDCOUNT[11:0]
FULL
WREN EMPTY
WRCLK
ALMOSTFULL
RST ALMOSTEMPTY
RDERR
WRERR
ug190_4_15_040606
图 4-19: FIFO18 基元
FIFO 端口描述
表 4-15 列出了 FIFO I/O 端口的名称和描述。
FIFO 操作
FIFO 操作
复位
复位对于多速率和同步 FIFO 都是异步信号。必须将复位置为在三个周期内有效才能在上
电后复位所有读写地址指针并初始化标记。复位不清空存储器,也不清空输出寄存器。当
复位置为 High 有效时,EMPTY 和 ALMOST_EMPTY 将设置为 1,FULL 和 ALMOST_FULL
将设置为 0。复位信号必须至少在三个读写时钟周期内为 High,以确保将所有内部状态复
位到正确值。在 RESET 期间,RDEN 和 WREN 必须保持为 Low。
操作模式
FIFO 功能有两种操作模式,其区别仅在于紧接首字写入原已空出的 FIFO 之后的输出行
为。
标准模式
首字写入空 FIFO 之后,Empty 标记与 RDCLK 同步置为无效。Empty 置为 Low 无效以及
RDEN 置为有效之后,首字随着 RDCLK 的上升沿出现在 DO 上。
首字直通 (FWFT) 模式
首字写入空 FIFO 之后,该字在 RDEN 置为有效之前自动出现在 DO 上。后续的读操作需
要 Empty 为 Low 和 RDEN 为 High。图 4-20 所示为标准模式与 FWFT 模式之间的区别。
第 4 章: Block RAM
RDCLK
RDEN
EMPTY
DO (FWFT) W1 W2 W3
ug190_4_17_032506
状态标记
表 4-16 所示为多速率 FIFO 的各标记有效或无效置位所需的时钟周期数。同步 FIFO 在标
记有效或无效置位时没有时钟周期延迟。
注:
1. 延迟是对 RDCLK 和 WRCLK 而言。
2. 根据读写时钟沿之间的偏移,Almost Empty 和 Almost Full 标记的无效置位可以晚一个周期。
Empty 标记
Empty 标记与 RDCLK 同步,在 FIFO 中的末字条读取后置为有效。当 FIFO 队列中不再有
有效字条时,读指针会冻结。在新数据写入 FIFO 之后的三个 (标准模式)或四个
(FWFT 模式)读时钟后,Empty 标记置为无效。
Empty 标记在读时钟域中使用。EMPTY 的上升沿永远与 RDCLK 同步。Empty 状态只能由
WRCLK 终止,通常与 RDCLK 异步。因此,必须将 EMPTY 的下降沿人工移动到 RDCLK
时间域。因为这两个时钟具有未知的相位关系,所以需要用几个级联的触发器来保证这种
移动不会引起伪信号或亚稳态问题。这样即可在首次写入原已空出的 FIFO 之后将 EMPTY
的下降沿延迟若干个 RDCLK 周期。此延迟在任何情况下都可保证正常操作,并且在 FIFO
空出后不会导致显著的性能损失。
FIFO 操作
Almost Empty 标记
当 FIFO 包含的字条数等于或小于 ALMOST_EMPTY_OFFSET 值指定的字条数时,设置
Almost Empty 标记。Almost Empty 标记警告用户停止读操作。当 FIFO 中的字条数大于
ALMOST_EMPTY_OFFSET 值加一时,此标记置为无效。有效和无效置位与 RDCLK 同步。
表 4-16 所示为标记延迟。
Read Error 标记
一旦 Empty 标记置为有效,任何进一步读尝试都不会使读地址指针移动,但会触发 Read
Error 标记。当读使能或 Empty 置为 Low 无效时,Read Error 标记置为无效。Read Error
标记与 RDCLK 同步。
Full 标记
Full 标记与 WRCLK 同步,当 FIFO 队列中不再有可用字条时置为有效。当 FIFO 已满时,
写指针冻结。Virtex-5 的 Full 标记在两次后续读操作之后的三个写时钟周期后置为无效。
在 Virtex-4 设计中,Full 标记在最后一次写操作之后的一个写时钟周期后置为有效,而在
首次读操作之后的三个写时钟周期后置为无效。
Write Error 标记
一旦 Full 标记置为有效,任何进一步写尝试都不会使写地址指针移动,但会触发 Write
Error 标记。当读使能或 Full 置为 Low 无效时,Write Error 标记置为无效。此信号与
WRCLK 同步。
Almost Full 标记
当 FIFO 包含的可用空位数等于或小于 ALMOST_FULL_OFFSET 值指定的可用空位数时,
设置 Almost Full 标记。Almost Full 标记警告用户停止写操作。当 FIFO 中的空位数大于
ALMOST_FULL_OFFSET 值加一时,此标记置为无效。有效和无效置位与 WRCLK 同步。
表 4-16 所示为标记延迟。
第 4 章: Block RAM
FIFO 的属性
表 4-17 列出了 FIFO18 和 FIFO36 的属性。多速率 FIFO 的尺寸可通过设置 DATA_WIDTH
属性来配置。“FIFO 的 VHDL 和 Verilog 模板”部分提供了设置属性的示例。
注:
1. 如果将 FIFO18 约束在 FIFO18_X#Y#,则不可将 RAMB18 约束在 RAMB18_X#Y#,因为这样将使用同一位置。
2. 如果将 FIFO18 约束在 FIFO18_X#Y#,使其对应 RAMB18 对的下 RAMB18_X#Y#,则可以将 RAMB18 约束在该对的上
RAMB18_X#Y#。
FIFO 的属性
注:
1. 任何设计的 ALMOST_EMPTY_OFFSET 和 ALMOST_FULL_OFFSET 都必须小于总 FIFO 深度。
第 4 章: Block RAM
FIFO 时序模型和参数
表 4-20 所示为 FIFO 参数。
FIFO 时序模型和参数
注:
1. TRCKO_DO 包括奇偶校验输出 (TRCKO_DOP)。
2. 在 《Virtex-5 数据手册》中,TRCKO_AEMPTY、TRCKO_AFULL、TRCKO_EMPTY、TRCKO_FULL、TRCKO_RDERR 和 TRCKO_WRERR 组合到
了 TRCKO_FLAGS 中。
3. 在 《Virtex-5 数据手册》中,TRCKO_RDCOUNT 和 TRCKO_WRCOUNT 组合到了 TRCKO_POINTERS 中。
4. TRCDCK_DI 包括奇偶校验输入 (TRCDCK_DIP)。
5. 在 《Virtex-5 数据手册》中,WRITE 使能和 READ 使能组合到了 TRCCK_EN 中。
FIFO 时序特性
本部分讲述 FIFO 中的各种时序参数。还有关于 FIFO 功能的其他数据。时序图说明以下六
种情形的行为。
• “情形 1:写入空 FIFO”
• “情形 2:写入满或近满 FIFO”
• “情形 3:从满 FIFO 中读取”
• “情形 4:从空或近空 FIFO 中读取”
• “情形 5:复位所有标记”
• “情形 6:多速率 FIFO 的同时读取”
第 4 章: Block RAM
情形 1:写入空 FIFO
在图 4-21 中执行的操作之前,FIFO 全空。
1 2 3 4
WRCLK
TFCCK_WREN
WREN
TFDCK_DI TFDCK_DI
DI 00 01 02 03 04 05 06
RDCLK
RDEN
TFCKO_DO
DO 00
TFCKO_EMPTY
EMPTY
TFCKO_AEMPTY
AEMPTY
ug190_4_18_032506
FIFO 时序模型和参数
情形 2:写入满或近满 FIFO
在图 4-22 中执行的操作之前,FIFO 接近全满。在此示例中,时序图反映的是标准和
FWFT 两种模式。
1 2 3 4
WRCLK
TFCCK_WREN TFCCK_WREN
WREN
TFDCK_DI TFDCK_DI TFDCK_DI
DI 00 01 02 03 04 05 06
RDCLK
RDEN
TFCKO_FULL
FULL
AFULL TFCKO_WERR
TFCKO_WERR
WRERR TFCKO_AFULL
ug190_4_18_012605
第 4 章: Block RAM
FIFO 时序模型和参数
1 2 3 4 5
WRCLK
WREN
RDCLK
TFCCK_RDEN
RDEN
TFCKO_DO
DO 00 01 02 03 04 05 06
TFCKO_AFULL
TFCKO_FULL
FULL
AFULL
ug190_4_19_040606
第 4 章: Block RAM
1 2 3 4
WRCLK
WREN
RDCLK
TFCCK_RDEN TFCCK_RDEN
RDEN
TFCKO_DO TFCKO_DO
DO 00 01 02 03 04
TFCKO_EMPTY
EMPTY
TFCKO_AEMPTY
AEMPTY
TFCKO_RDERR
RDERR
TFCKO_RDERR
ug190_4_21_032506
FIFO 时序模型和参数
情形 5:复位所有标记
RST
WRCLK
RDCLK
TFCO_EMPTY
EMPTY
TFCO_AEMPTY
AEMPTY
TFCO_FULL
FULL
TFCO_AFULL
AFULL
ug190_4_22_032506
图 4-25: 复位所有标记
当复位信号置为有效时,所有标记都复位。
• 在复位 (RST) 之后的时间 TFCO_EMPTY 处,Empty 在 FIFO 的 EMPTY 输出引脚上置为
有效。
• 在复位 (RST) 之后的时间 TFCO_AEMPTY 处,Almost Empty 在 FIFO 的 AEMPTY 输出引
脚上置为有效。
• 在复位 (RST) 之后的时间 TFCO_FULL 处,Full 在 FIFO 的 FULL 输出引脚上置为无效。
• 在复位 (RST) 之后的时间 TFCO_AFULL 处,Almost Full 在 FIFO 的 AFULL 输出引脚上
置为无效。
第 4 章: Block RAM
复位是用来复位所有标记的异步信号。请保持复位信号在三个读写时钟周期内为 High,以
确保将所有内部状态和标记复位到正确值。
FIFO 应用
可以用以下方法创建大于一个 Virtex-5 FIFO 模块的 FIFO:
• 用级联两个或更多 FIFO 的方法形成一个较深的 FIFO。
• 用并联两个或更多 FIFO 的方法构建一个较宽的 FIFO。
级联 FIFO 以增加深度
图 4-26 所示为通过级联 N 个 FIFO36 来增加深度的方法。该应用将前 N–1 个 FIFO 设置为
FWFT 模式,并使用外部资源将它们连接到一起。此应用的数据延迟是各 FIFO 延迟之和。
最高频率受反馈通路限制。NOR 门是用 CLB 逻辑实现。
• N 可以是 2 或更大的数字;如果 N 是 2,则不需要中间 FIFO。
• 如果 WRCLK 快于 RDCLK,则 INTCLK = WRCLK。
• 如果 WRCLK 等于或慢于 RDCLK,则 INTCLK = RDCLK。
• ALMOST_EMPTY 阈值是在第 N 个 FIFO 中设置; ALMOST_FULL 阈值是在第 1 个
FIFO 中设置。
内置纠错
并联 FIFO 以增加宽度
如图 4-27 所示,可以连接 Virtex-5 FIFO36 以增加设计的宽度。CLB 逻辑用来实现
AND/OR 门。所有 FIFO AFULL 信号都必须用 OR 门连接到一起,以建立 AFULL 输出信号
;所有 FIFO EMPTY 信号都必须用 OR 门连接到一起,以建立 EMPTY 输出信号。最高频率
受逻辑门反馈通路限制。
DIN<71:0> DOUT<71:0>
DIN<71:0> DOUT<71:0>
WREN
RDEN RDEN
WRCLK EMPTY EMPTY
WRCLK
RDCLK
RDCLK FIFO #1 AFULL
DOUT<143:72>
DIN<143:72> DOUT<71:0>
DIN<71:0>
WREN WREN
RDEN
WRCLK EMPTY
AFULL
RDCLK AFULL
FIFO #2
ug190_4_24_012706
内置纠错
每个简单双端口 Block RAM 可以配置成一个带内置汉明码纠错的 512 x 64 RAM,纠错码
占用 72 位宽的 RAM 中的八个附加位。操作对用户透明。
每次写操作过程生成八个保护位 (ECCPARITY),与 64 位数据一起存到存储器中。这些
ECCPARITY 位在每次读操作过程中用来纠正任意单位元错误或检测 (但不纠正)任意双
位元错误。ECCPARITY 位在 WRCLK 的每个上升沿写入存储器并输出到 FPGA 结构。在
ECCPARITY 输出位上不使用可选输出寄存器。
在每次读操作过程中,72 位数据 (64 个数据位加 8 个奇偶校验位)从存储器读出并馈入
ECC 解码器。ECC 解码器生成两个状态输出 (SBITERR 和 DBITERR),用来指示三种可
能的读操作结果:无错误、已纠正单位元错误、检测到双位元错误。在标准 ECC 模式下,
读操作不纠正存储器阵列中的错误,仅仅将已经纠正的数据送到 DO。为了改善 FMAX,可
以将由 DO_REG 属性控制的可选寄存器用于数据输出 (DO)、SBITERR 和 DBITERR。
这种 ECC 配置方案可以用 36K Block RAM 简单双端口基元 (RAMB36SDP) 或 36K FIFO 基
元 (FIFO36_72) 实现。针对 Virtex-5 设计映射的 Virtex-4 ECC 18K Block RAM 占用整个
RAMB36 区。FIFO36_72 仅支持标准 ECC 模式。
第 4 章: Block RAM
ECC 模式概述
在标准 ECC 模式 (EN_ECC_READ = TRUE 和 EN_ECC_WRITE = TRUE)下,编码器和
解码器二者都启用。在写过程中,64 位数据和 ECC 生成的 8 位奇偶校验码存储在阵列中,
忽略外部奇偶校验位。在读过程中,读出 72 位解码数据和奇偶校验码。
在 RAMB36SDP 中,可以分别访问编码器和解码器以作外部之用。要单独使用编码器,请
通过 DI 端口输入数据,并在 ECCPARITY 输出端口取样。要单独使用解码器,请禁用编码
器,将数据写入 Block RAM,并从 Block RAM 读取经过纠错的数据和状态位。请见
“Block RAM (RAMB36SDP) 的属性”。
要在仅 ECC 解码模式下使用解码器,请设置成 EN_ECC_WRITE = FALSE 和
EN_ECC_READ = TRUE。
可以按以下两种方式使用编码器:
• 要在标准 ECC 模式下使用编码器,请设置成 EN_ECC_WRITE = TRUE 和
EN_ECC_READ = TRUE。在这种模式下,DI 的建立时间较短,但 ECCPARITY 的时
钟到输出时间较长。
• 要使用只编码器模式,请设置成 EN_ECC_WRITE = TRUE 和 EN_ECC_READ =
FALSE。在这种模式下,DI 的建立时间较长,但 ECCPARITY 的时钟到输出时间较
短。
使用 ECC 模式时的 Block RAM 功能说明如下:
• Block RAM 的两个端口仍具有独立的地址、时钟和使能输入,但一个是专用写端口,
另一个是专用读端口 (简单双端口)。
• DO 表示纠错后的读数据。
• DO 保持有效,直到下一次有效的读操作。
• 允许同时解码和编码 (即便使用异步时钟),但如果读写地址完全相同就需要有缜密
的时钟时序。
• 正常 Block RAM 操作的 READ_FIRST 或 WRITE_FIRST 模式对 ECC 配置不适用。
内置纠错
wraddr 9
WRADDR[8:0]
rdaddr 9
RDADDR[8:0]
8
DIP[7:0] 0 8
8
ECCPARITY[7:0] 1
8
64-bit EN_ECC_WRITE
64
DI[63:0] ECC Data In 64
Encode
DO_REG BRAM
EN_ECC_READ 512 x 72
0 64
DO[63:0] 64 0
1 Q D 64 Data 64
1
Out
DO_REG
0
DBITERR 1 0
1 Q D
1
1
DO_REG Decode
and
0 Correct
SBITERR 1 0
1 Q D
1
1
DO_REG
0 8 Parity
DOP[7:0] 8 1
1 Q D Out
8 8
0
EN_ECC_READ ug190_4_25_071707
第 4 章: Block RAM
RAMB36SDP
DI[63:0] DO[63:0]
DIP[7:0]
DOP[7:0]
(Decode Only)
WRADDR[8:0]
ECCPARITY[7:0]
RDADDR[8:0] (Standard or
WREN Encode Only)
RDEN SBITERR
SSR DBITERR
WRCLK
RDCLK
ug190_4_26_022207
FIFO36_72
DI[63:0] DO[63:0]
DOP[7:0]
DIP[7:0]
ECCPARITY[7:0]
SBITERR
DBITERR
FULL
WREN
EMPTY
RDEN
ALMOSTFULL
RST
ALMOSTEMPTY
WRCLK
WRERR
RDCLK
RDERR
WRCOUNT[8:0]
RDCOUNT[8:0]
ug190_4_34_022207
内置纠错
注:
1. Block RAM ECC 逻辑中实现的汉明码检测这三种状态之一:没有可检测的错误、检测到单位元错误并已在 DO 上纠正 (但未在存
储器中纠正)、检测到双位元错误但未纠正。SBITERR 和 DBITERR 指示这三种状态。
第 4 章: Block RAM
注:
1. FIFO ECC 逻辑中实现的汉明码检测这三种状态之一:没有可检测的错误、检测到单位元错误并已在 DO 上纠正 (但未在存储器中
纠正)、检测到双位元错误但未纠正。SBITERR 和 DBITERR 指示这三种状态。
内置纠错
第 4 章: Block RAM
ECC 的操作模式
ECC 操作有三种类型:标准、只编码、只解码。在标准 ECC 模式下,编码器和解码器二
者都使用。
图 4-31 和图 4-32 显示了 Block RAM 和 FIFO 中的各种 ECC 操作模式。Block RAM 的
WRADDR 和 RDADDR 地址输入由用户提供。FIFO 的 WRADDR 和 RDADDR 地址由写计
数器和读计数器内部生成。
WRCLK
WREN
TRCCK_EN
WRADDR[8:0] a b c d
TRCCK_ADDR
DI[63:0] A B C D
TRCCK_DI_ECC
DIP[7:0] PA PB PC PD
(Decode Only Mode)
ECCPARITY[7:0] PA PB PC PD
TRCKO_ECC_PARITY
ug190_4_32_022307
RDEN
TRCCK_EN
RDADDR[8:0] a b c d
TRCCK_ADDR
DO[63:0] A B C
(Latch Mode)
TRCKO_DO (Latch Mode)
DOP[7:0] PA PB PC
(Latch Mode)
SBITERR Single Bit Error
(Latch Mode) TRCKO_ECC_SBITERR (Latch Mode)
内置纠错
标准 ECC
用以下属性设置
EN_ECC_READ = TRUE
EN_ECC_WRITE = TRUE
标准 ECC 写操作
在时间 T1W 处,DI[63:0] = A 写入存储器的位置 a。ECC 奇偶校验值 PA (十六进制)对
应的 8 个位由内部生成并附加到 64 个数据位,然后写入存储器。紧接写操作之后,奇偶校
验值 PA 出现在输出 ECCPARITY[7:0] 上。因为 ECC 奇偶校验值是内部生成的,所以不使
用 DIP[7:0] 引脚。
同样,在时间 T2W 和 T3W 处,DI[63:0] = B 和 C 与其对应的奇偶校验位 PB (十六进制)
和 PC (十六进制)一起写入存储器的位置 b 和 c。在 T2W 和 T3W 之后,PB 和 PC 立即
出现在输出 ECCPARITY[7:0] 上。
标准 ECC 读操作
在时间 T1R 处,地址位置 a 的 72 位存储器内容 (由数据 A 的 64 个位和奇偶校验值 PA
(十六进制)的 8 个位组成)读出并在内部解码。如果没有错误,则在 DO[63:0] 和
DOP[7:0] 输出原数据和奇偶校验位。如果数据或奇偶校验位中有单位元错误,则纠正该错
误,SBITERR 为 High。如果数据和奇偶校验位中有双位元错误,则不纠正该错误,输出原
数据和奇偶校验位,DBITERR 为 High。
如果属性 DO_REG 设置为 0,则在 T1R 之后立即有 DO[63:0] = A 和 DOP[7:0] = PA。同
样,在时间 T2R 和 T3R 处,地址位置 b 和 c 的存储器内容读出并在 DO[63:0] 和 DOP[7:0]
上解码。如果在数据集 A 上检测到单位元或双位元错误,SBITERR/DBITERR 输出还可以
在 T1R 之后切换。图 4-32 显示了时钟沿 T1R 之后在锁存器模式的数据 A 上检测到单位元
错误 (SBITERR),以及时钟沿 T2R 之后在锁存器模式的数据 B 上检测到双位元错误
(DBITERR)。
如果属性 DO_REG 设置为 1,则在 T2R 之后立即有 DO[63:0] = A 和 DOP[7:0] = PA。同
样,在时间 T3R 和 T4R 处,地址位置 b 和 c 的存储器内容读出并在 DO[63:0] 和 DOP[7:0]
上解码。如果在数据集 A 上检测到单位元或双位元错误,SBITERR/DBITERR 输出还可以
在 T2R 之后切换。图 4-32 显示了时钟沿 T2R 之后在寄存器模式的数据 A 上检测到单位元
错误 (SBITERR),以及时钟沿 T3R 之后在寄存器模式的数据 B 上检测到双位元错误
(DBITERR)。
在 ECC 模式下,只编码端口和只解码端口相互独立操作。
ECC 只编码模式
用以下属性设置
EN_ECC_READ = FALSE
EN_ECC_WRITE = TRUE
ECC 只编码写操作
在时间 T1W 处,DI[63:0] = A 写入存储器的位置 a。ECC 奇偶校验值 PA (十六进制)对
应的 8 个位由内部生成并附加到 64 个数据位,然后写入存储器。紧接写操作之后,奇偶校
验值 PA 出现在输出 ECCPARITY[7:0] 上。因为 ECC 奇偶校验值是内部生成的,所以不使
用 DIP[7:0] 引脚。
第 4 章: Block RAM
ECC 只编码读操作
ECC 只编码读操作与正常的 Block RAM 读操作完全相同。64 位数据出现在 DO[63:0],而
8 位数据出现在 DOP[7:0]。单位元纠错不会发生,错误标记 SBITERR 和 DBITERR 永远不
会置为有效。
ECC 只解码模式
用以下属性设置
EN_ECC_READ = TRUE
EN_ECC_WRITE = FALSE
在 ECC 只解码模式下,仅启用 ECC 解码器。ECC 编码器被禁用。只解码模式用来插入单
位元或双位元错误,以测试 ECC 解码器的功能。ECC 奇偶校验位必须用 DIP[7:0] 引脚从
外部提供。
用 ECC 只解码模式插入单位元错误
• 在时间 T1W、T2W、T3W 处,DI[63:0] = 有单位元错误的 A、B、C,而 DIP[7:0] =
PA (十六进制)、PB (十六进制)、PC (十六进制),A、B 和 C 对应的 ECC 奇偶
校验位写入存储器位置 a、b 和 c。
• 在时间 T1R、T2R 和 T3R 处,读出地址 a、b 和 c 的内容并按需要纠错。
• 锁存器模式:T1R、T2R、T3R 之后立即有 DO[63:0] = A、B、C 和 DOP[7:0] = PA、
PB、PC。
• 寄存器模式:T2R、T3R、T4R 之后立即有 DO[63:0] = A、B、C 和 DOP[7:0] = PA、
PB、PC。
• SBITERR 与相应的 DO/DOP 数据对齐。
ECC 解码器还纠正奇偶校验位中的单位元错误。
用 ECC 只解码模式插入双位元错误
• 在时间 T1W、T2W、T3W 处,DI[63:0] = 有双位元错误的 A、B、C,而 DIP[7:0] =
PA (十六进制)、PB (十六进制)、PB (十六进制),A、B 和 C 对应的 ECC 奇偶
校验位写入存储器位置 a、b 和 c。
• 在时间 T1R、T2R 和 T3R 处,读出地址 a、b 和 c 的原内容,并检测到双位元错误。
• 锁存器模式:T1R、T2R、T3R 之后立即有 DO[63:0] = 有双位元错误的 A、B、C 和
DOP[7:0] = PA、PB、PC。
• 寄存器模式:T2R、T3R、T4R 之后立即有 DO[63:0] = 有双位元错误的 A、B、C 和
DOP[7:0] = PA、PB、PC。
• DBITERR 与相应的 DO/DOP 数据对齐。
ECC 解码器还检测奇偶校验位中的双位元错误发生的时间,以及数据位中的单位元错误和
相应奇偶校验位中的单位元错误发生的时间。
内置纠错
ECC 时序特性
图 4-31 和图 4-32 还显示了各种 ECC 时序参数。
因为写时钟与读时钟相互独立,所以图 4-31 中的所有写时序均参考 WRCLK,而图 4-32
中的所有读时序均参考 RDCLK。
DO_REG = 0
♦ 在时间 T1R 之后的时间 TRCKO_DO (锁存器模式)处,数据 A (十六进制)在
Block RAM 的 DO[63:0] 输出引脚上变为有效。
♦ 在时间 T1R 之后的时间 TRCKO_DOP (锁存器模式)处,数据 PA (十六进制)
在 Block RAM 的 DOP[7:0] 输出引脚上变为有效。
♦ 在时间 T1R 之后的时间 TRCKO_ECC_SBITERR (锁存器模式)处,如果在数据
集 A 上检测到并已纠正单位元错误,则 SBITERR 置为有效。
♦ 在时间 T2R 之后的时间 TRCKO_ECC_DBITERR (锁存器模式)处,如果在数据
集 B 上检测到双位元错误,则 DBITERR 置为有效。
DO_REG = 1
♦ 在时间 T2R 之后的时间 TRCKO_DO (寄存器模式)处,数据 A (十六进制)在
Block RAM 的 DO[63:0] 输出引脚上变为有效。
♦ 在时间 T2R 之后的时间 TRCKO_DOP (寄存器模式)处,数据 PA (十六进制)
在 Block RAM 的 DOP[7:0] 输出引脚上变为有效。
♦ 在时间 T2R 之后的时间 TRCKO_ECCR_SBITERR (寄存器模式)处,如果在数据
集 A 上检测到并已纠正单位元错误,则 SBITERR 置为有效。
♦ 在时间 T3R 之后的时间 TRCKO_ECCR_DBITERR (寄存器模式)处,如果在数
据集 B 上检测到双位元错误,则 DBITERR 置为有效。
第 4 章: Block RAM
时钟到输出延迟
TRCKO_DO 时钟到输出 (2) CLK 到 DO 时钟之后,输出数据在 Block RAM 的 DO 输出上稳
(锁存器模式) 定的时间 (无输出寄存器)。
内置纠错
注:
1. TRDCK_DI_ECC/TRCKD_DI_ECC 包括奇偶校验输入 TRDCK_DIP_ECC/TRCKD_DIP_ECC。
2. TRCKO_DO 包括奇偶校验输出 (TRCKO_DOP)。
3. 在 《Virtex-5 数据手册》中,TRCKO_ECC_PARITY、TRCKO_ECC_SBITERR 和 TRCKO_ECC_DBITERR 组合到了 TRCKO_ECC 参数中。
4. 在 《Virtex-5 数据手册》中,TRCKO_ECC_SBITERR 和 TRCKO_ECC_DBITERR 组合到了 TRCKO_ECCR 参数中。
在 72 位字中制造故意错误
要在 72 字中故意制造错误,请配置 ECC 只解码模式,然后创建含有一位或两位错误的 72
位字。将该字写入 Block RAM。读出该 72 位字会自动纠正单位元错误并将 SBITERR 错误
标记置为有效,或者检测双位元错误并将 DBITERR 错误标记置为有效。
为 64 位字创建八个奇偶校验位
使用 Block RAM 外部的逻辑 (大量 XOR 电路),可以为 64 位字创建八个奇偶校验位。但
是,如果使用 ECC 只编码模式就无需附加逻辑,通过将任意 64 位字写入另一个 Block
RAM 即可自动创建八个奇偶校验位。这样,可立即得到编好码的 8 位 ECC 奇偶校验数
据,即读出完整的 72 位字。
将单位元或双位元错误插入 72 位字
读取一个 72 位字,有选择地修改一位或两位,然后在 ECC 只解码模式下将全部 72 位写入
要测试的 Block RAM,这样即可插入单位元或双位元错误。
第 4 章: Block RAM
第5章
可配置逻辑块 (CLB)
CLB 概述
可配置逻辑块 (CLB) 是实现时序电路和组合电路的主要逻辑资源。每个 CLB 元件连接到一
个可访问通用布线矩阵的开关矩阵 (如图 5-1 所示)。CLB 元件包含一对 Slice。这两个
Slice 相互间没有直接连接,各 Slice 组织成一个列。列中的每个 Slice 具有独立的进位链。
对于每个 CLB,CLB 底部的 Slice 标为 SLICE(0),CLB 顶部的 Slice 标为 SLICE(1)。
COUT COUT
CLB
Slice(1)
Switch
Matrix
Slice(0)
CIN CIN
UG190_5_01_122605
第 5 章: 可配置逻辑块 (CLB)
CLB CLB
Slice Slice
X1Y1 X3Y1
Slice Slice
X0Y1 X2Y1
Slice Slice
X0Y0 X2Y0
UG190_5_02_122605
Slice 描述
每个 Slice 包含四个逻辑函数发生器 (即查找表)、四个存储元件、多功能多路复用器和进
位逻辑。所有 Slice 都通过这些元件进行逻辑、算术和 ROM 函数运算。除此之外,有些
Slice 还支持两个附加功能:用分布式 RAM 存储数据和用 32 位寄存器进行数据移位。支持
这些附加功能的 Slice 称为 SLICEM ;其他 Slice 则称为 SLICEL。SLICEM (如图 5-3 所
示)代表所有 Slice 中元件和连接功能的扩展集。SLICEL 如图 5-4 所示。
CLB 概述
COUT
Reset Type
Sync
Async
DI
DMUX
DI2
D6 A6
DPRAM64/32
D5 A5 SPRAM64/32 D
D4 A4 SRL32 O6 D
FF
SRL16 O5 LATCH
D3 A3 LUT DX DQ
INIT1 Q
D2 A2 RAM DI1 D INIT0
D1 A1 ROM MC31 CE SRHIGH
WA1-WA6 CK SRLOW
SR REV
WA7
WA8
DX
CI
CMUX
DI2
C6 A6
DPRAM64/32
C5 A5 SPRAM64/32 C
C
C4 A4 SRL32 O6 FF
SRL16 O5 LATCH
C3 A3 LUT CX Q CQ
INIT1
C2 A2 RAM DI1 D INIT0
C1 A1 ROM MC31 CE SRHIGH
CK SRLOW
WA1-WA6
SR REV
WA7
WA8
CX
BI BMUX
DI2
B6 A6 DPRAM64/32
B5 A5 SPRAM64/32 B
B
B4 A4 SRL32 O6 FF
SRL16 O5 LATCH
B3 A3 LUT BX INIT1 Q BQ
B2 A2 RAM DI1 D INIT0
B1 A1 ROM MC31 CE SRHIGH
CK SRLOW
WA1-WA6 SR REV
WA7
WA8
BX
AI
AMUX
DI2
A6 A6
DPRAM64/32
A5 A5 SPRAM64/32 A
A
A4 A4 SRL32 O6 FF
SRL16 O5 LATCH
A3 A3 LUT AX INIT1 Q AQ
A2 A2 RAM DI1 D INIT0
A1 A1 ROM MC31 CE SRHIGH
CK SRLOW
WA1-WA6
SR REV
WA7
WA8
AX
0/1
SR
CE
CLK
CLK
WSGEN
WE WE
CIN
UG190_5_03_041006
图 5-3: SLICEM 图
第 5 章: 可配置逻辑块 (CLB)
DMUX
D6 A6
D5 A5 LUT
ROM D
D4 A4 O6 D
FF
D3 A3 O5 LATCH
DX Q DQ
INIT1
D2 A2 D INIT0
D1 A1 CE SRHIGH
CK SRLOW
DX SR REV
CMUX
C6 A6
C5 A5 LUT
ROM C
C
C4 A4 O6 FF
C3 A3 O5 LATCH
CX INIT1 Q CQ
C2 A2 D INIT0
C1 A1 CE SRHIGH
CK SRLOW
CX SR REV
BMUX
B6 A6
B5 A5 LUT
ROM B
B FF
B4 A4 O6
O5 LATCH
B3 A3 BX INIT1 Q BQ
B2 A2 D INIT0
B1 A1 CE SRHIGH
CK SRLOW
BX SR REV
AMUX
A6 A6
A5 A5 LUT
ROM A
A
A4 A4 O6 FF
O5 LATCH
A3 A3 AX INIT1 Q AQ
A2 A2 D INIT0
A1 A1 CE SRHIGH
CK SRLOW
AX SR REV
0/1
SR
CE
CLK
CIN UG190_5_04_032606
图 5-4: SLICEL 图
CLB 概述
CLB/Slice 配置
表 5-1 概述了 CLB 中的逻辑资源。每个 CLB 或 Slice 都可以配置为下表所列功能之一。
表 5-2 所示为所有 CLB 中的可用资源。
注:
1. 仅指 SLICEM,SLICEL 没有分布式 RAM 或移位寄存器。
查找表 (LUT)
Virtex-5 函数发生器是以六输入查找表 (LUT) 形式实现的。Slice 中的四个函数发生器
(A、B、C 和 D)各有六个独立输入 (A 输入 - A1 到 A6)和两个独立输出 (O5 和
O6)。这些函数发生器可以实现任何任意定义的六输入布尔函数。各函数发生器还可以实
现两个任意定义的五输入布尔函数,只要这两个函数可共用输入即可。实现六输入函数
时,只使用函数发生器的 O6 输出。在实现的两个五输入函数发生器中,O5 和 O6 都会用
到。在这种情况下,A6 由软件置为 High。通过 LUT 的传播延迟与所实现的函数无关,也
与实现的是一个六输入发生器还是两个五输入发生器无关。来自函数发生器的信号可以离
开 Slice (对于 O6 是通过 A、B、C、D 输出,对于 O5 是通过 AMUX、BMUX、CMUX、
DMUX 输出),从 O6 输出进入专用的 XOR 门 (见 “快速先行进位逻辑”),或从 O5 输
出进入进位逻辑链 (见 “快速先行进位逻辑”),或从 O6 输出进入进位逻辑多路复用器
第 5 章: 可配置逻辑块 (CLB)
存储元件
Virtex-5 Slice 中的存储元件可以配置成边沿触发式 D 型触发器或电平敏感型锁存器。D 输
入可由 LUT 的一个通过 AFFMUX、BFFMUX、CFFMUX 或 DFFMUX 的输出直接驱动,也
可由 BYPASS Slice 输入通过 AX、BX、CX 或 DX 输入通过旁路函数发生器后直接驱动。
如果配置成锁存器,则当 CLK 为 Low 时锁存器透明。
在一个 Slice 中,时钟 (CK)、时钟使能 (CE)、设置 / 复位 (SR) 和反转 (REV) 这些控制信号
为所有存储元件共用。如果 Slice 中一个触发器的 SR 或 CE 已经激活,则该 Slice 中使用
的其他触发器的 SR 或 CE 也会被公共信号激活。仅 CLK 信号具有独立极性。放置在时钟
信号上的任何倒相器都被自动吸收。CE、SR 和 REV 信号为 High 有效。所有触发器和锁
存器基元都有 CE 和非 CE 版本。
SR 信号强制存储元件进入由属性 SRHIGH 或 SRLOW 指定的状态。当 SR 置为有效时,
SRHIGH 强制存储元件的输出为逻辑 High,而 SRLOW 则强制存储元件的输出为逻辑
Low。当使用 SR 时,可选的第二输入 (DX) 通过 REV 引脚强制存储元件的输出进入相反的
状态。复位状态优先于设置状态 (见图 5-5)。表 5-3 和表 5-4 分别提供了使用 SRLOW
和使用 SRHIGH 时的 SR 和 REV 的真值表。
CLB 概述
DFF
LUT D Output
FF
LATCH
INIT1 Q DQ
D INIT0
CE SRHIGH
CK SRLOW
SR REV
DX
CFF
LUT C Output
FF
LATCH
INIT1 Q CQ
D INIT0
CX CE SRHIGH
CK SRLOW
SR REV
Reset Type
SR
Sync
LUT B Output Async
BFF
FF
LATCH
INIT1 Q BQ
BX D INIT0
CE CE SRHIGH
CK SRLOW
CLK SR REV
AFF
LUT A Output
FF
LATCH
INIT1 Q AQ
D INIT0
AX CE SRHIGH
CK SRLOW
SR REV
UG190_5_05_071207
第 5 章: 可配置逻辑块 (CLB)
CLB 概述
注:
1. S = 单端口配置; D = 双端口配置; Q = 四端口配置; SDP = 简单双端口配置。
2. RAM32M 是此配置的相关基元。
3. RAM64M 是此配置的相关基元。
第 5 章: 可配置逻辑块 (CLB)
RAM 32X2Q
DPRAM32
(DX)
DID[1] DI1 O6 DOD[0]
(AI/BI/CI/DI)
DID[0] DI2
D[5:1] 5
ADDRD[4:0] A[6:1]
5
WA[6:1]
(CLK)
WCLK CLK O5 DOD[1]
(WE)
WED WE
DPRAM32
DI1 O6 DOC[0]
DI2
C[5:1] 5
ADDRC[4:0] A[6:1]
5
WA[6:1]
CLK O5 DOC[1]
WE
DPRAM32
DI1 O6 DOB[0]
DI2
B[5:1] 5
ADDRB[4:0] A[6:1]
5
WA[6:1]
CLK O5 DOB[1]
WE
DPRAM32
DI1 O6 DOA[0]
DI2
A[5:1] 5
ADDRA[4:0] A[6:1]
5
WA[6:1]
CLK O5 DOA[1]
WE
UG190_5_06_032706
CLB 概述
RAM 32X6SDP
DPRAM32
unused DI1
unused DI2
WADDR[5:1] D[5:1] 5
A[6:1]
WADDR[6] = 1 5
WA[6:1]
(CLK)
WCLK CLK
(WE)
WED WE
DPRAM32
DATA[1] DI1 O6 O[1]
DATA[2] DI2
C[5:1] 5
RADDR[5:1] A[6:1]
RADDR[6] = 1 5
WA[6:1]
CLK O5 O[2]
WE
DPRAM32
DATA[3] DI1 O6 O[3]
DATA[4] DI2
B[5:1] 5
A[6:1]
5
WA[6:1]
CLK O5 O[4]
WE
DPRAM32
DATA[5] DI1 O6 O[5]
DATA[6] DI2
A[5:1] 5
A[6:1]
5
WA[6:1]
CLK O5 O[6]
WE
UG190_5_06_032706
第 5 章: 可配置逻辑块 (CLB)
RAM64X1S
SPRAM64
(DX) O
D DI1 O6 Output
6 (D[6:1]) Registered
A[5:0] A[6:1] D Q
Output
6
WA[6:1]
(CLK) (Optional)
WCLK CLK
(WE/CE)
WE WE
ug190_5_07_032706
RAM64X1D
DPRAM64
(DX) SPO
D DI1 O6
(D[6:1]) 6 Registered
A[5:0] A[6:1] D Q
Output
6
WA[6:1]
(CLK) (Optional)
WCLK CLK
(WE/CE)
WE WE
DPRAM64
DPO
DI1 O6
(C[6:1]) 6 Registered
DPRA[5:0] A[6:1] D Q
Output
6
WA[6:1]
(Optional)
CLK
WE
UG190_5_09_050506
CLB 概述
RAM64X1Q
DPRAM64
(DX) DOD
DID DI1 O6
(D[6:1]) Registered
ADDRD A[6:1] D Q Output
WA[6:1]
(CLK)
WCLK CLK
(WE) (Optional)
WE WE
DPRAM64
DI1 DOC
O6
(C[6:1])
ADDRC A[6:1] Registered
D Q Output
WA[6:1]
CLK
WE (Optional)
DPRAM64
DOB
DI1 O6
(B[6:1]) Registered
ADDRB A[6:1] D Q Output
WA[6:1]
CLK
WE (Optional)
DPRAM64
DOA
DI1 O6
(A[6:1]) Registered
ADDRA A[6:1] D Q Output
WA[6:1]
CLK
WE (Optional)
ug190_5_10_032706
第 5 章: 可配置逻辑块 (CLB)
RAM 64X3SDP
DPRAM32
unused DI1
unused DI2
D[6:1] 6
WADDR[6:1] A[6:1]
6
WA[6:1]
(CLK)
WCLK CLK
(WE)
WED WE
DPRAM32
DATA[1] DI1 O6 O[1]
DI2
C[6:1] 6
RADDR[6:1] A[6:1]
6
WA[6:1]
CLK O5
WE
DPRAM32
DATA[2] DI1 O6 O[2]
DI2
B[6:1] 6
A[6:1]
6
WA[6:1]
CLK O5
WE
DPRAM32
DATA[3] DI1 O6 O[3]
DI2
A[6:1] 6
A[6:1]
6
WA[6:1]
CLK O5
WE
UG190_5_06_050506
CLB 概述
RAM128X1S
A6 (CX)
SPRAM64
(DX)
D DI1 O6
[5:0]
A[6:0] A[6:1]
7
WA[7:1]
(CLK)
WCLK CLK
(WE/CE)
WE WE
0
Output
SPRAM64 Registered
F7BMUX D Q
Output
DI1 O6
[5:0]
(Optional)
A[6:1]
7
WA[7:1]
CLK
WE
ug190_5_12_050506
第 5 章: 可配置逻辑块 (CLB)
RAM128X1D
A6 (CX)
DPRAM64
DX
D DI1 O6
6
A[6:0] A[6:1]
7
WA[7:1]
(CLK)
WCLK CLK
(WE)
WE WE
SPO
DPRAM64 Registered
F7BMUX D Q
Output
DI1 O6
(Optional)
6
A[6:1]
7
WA[7:1]
CLK
WE
DPRAM64
DI1 O6
6
DPRA[6:0] A[6:1]
7
WA[7:1]
CLK
WE
DPO
DPRAM64 Registered
F7AMUX D Q
Output
DI1 O6
(Optional)
6
A[6:1]
7
WA[7:1]
CLK
WE
AX
UG190_5_13_050506
CLB 概述
RAM256X1S
SPRAM64
D DI1 O6
6
A[7:0] A[6:1]
8
WA[8:1]
(CLK)
WCLK CLK
(WE/CE) A6 (CX)
WE WE
SPRAM64 F7BMUX
DI1 O6
6
A[6:1]
8
WA[8:1]
A7 (BX)
CLK
WE O
Output
Registered
F8MUX D Q
SPRAM64 Output
DI1 O6 (Optional)
6
A[6:1]
8
WA[8:1] A6 (AX)
CLK
WE
SPRAM64 F7AMUX
DI1 O6
6
A[6:1]
8
WA[8:1]
CLK
WE
UG190_5_14_050506
第 5 章: 可配置逻辑块 (CLB)
分布式 RAM 小结
• SLICEM 可使用单端口和双端口模式。
• 写操作需要一个时钟沿。
• 读操作是异步操作 (Q 输出)。
• 数据输入具有建立到时钟时序指标。
只读存储器 (ROM)
SLICEM 和 SLICEL 中的每个函数发生器可以实现一个 64 x 1 位 ROM。有三种可用配置:
ROM64x1、ROM128x1 和 ROM256x1。在每次器件配置时加载 ROM 内容。表 5-6 所示
为各种 ROM 配置占用的 LUT 数。
表 5-6: ROM 配置
ROM LUT 数
64 x 1 1
128 x 1 2
256 x 1 4
CLB 概述
SRLC32E
SRL32
(AX)
SHIFTIN (D) DI1
MC31
SHIFTOUT (Q31)
5 (A[6:2])
A[4:0] A[6:2]
ug190_5_15_050506
图 5-15: 32 位移位寄存器配置
图 5-16 所示为占用一个函数发生器的移位寄存器配置示例。图 5-17 所示为 16 位移位寄
存器。
WE SHIFTOUT(Q31)
CLK
5
Address (A[4:0]) MUX
Q UG190_5_16_050506
图 5-16: 移位寄存器图示
第 5 章: 可配置逻辑块 (CLB)
SRL16
SHIFTIN1 (AX) DI1 O5
4
A[3:0] A[5:2]
CLK CLK
CE WE
SRL16
SHIFTIN2 (AI) DI2 O6
4
A[5:2] MC31
CLK
WE
UG190_5_17_050506
图 5-17: 16 位移位寄存器配置
如前所述,可以用附加输出 (MC31) 和各移位寄存器之间的专用连接将一个移位寄存器的
末位连接到下一个的首位,无需使用 LUT O6 输出。可以将较长的移位寄存器构建成能够
动态访问寄存器链中的任意位。移位寄存器链接加上 F7AMUX、F7BMUX 和 F8MUX 多路
复用器,可构建长达 128 位的移位寄存器,可以在一个 SLICEM 中实现可寻址访问。
图 5-18 到图 5-20 所示为可以占用一个 SLICEM 的各种移位寄存器配置示例。
SRL32
SHIFTIN (D) DI1 O6
5
A[5:0] A[6:2]
MC31 A5 (AX)
(CLK)
CLK CLK
(WE/CE)
WE WE
Output (Q)
(AQ) Registered
SRL32 F7AMUX D Q
Output
DI1 O6
(Optional)
5 (MC31)
A[6:2] MC31
CLK
WE SHIFTOUT (Q63)
UG190_5_18_050506
图 5-18: 64 位移位寄存器配置
CLB 概述
CX (A5)
SRL32
SHIFTIN (D) DI1 O6
5
A[6:0] A[6:2]
MC31 F7BMUX
BX (A6)
(CLK)
CLK CLK
(WE/CE)
WE WE (BMUX)
Output (Q)
(BQ) Registered
F8MUX D Q
Output
SRL32 (Optional)
DI1 O6
5
A[6:2]
MC31
CLK
WE
AX (A5)
SRL32
Not Used
DI1 O6
F7AMUX
5
A[6:2]
(MC31)
MC31 SHIFTOUT (Q95)
CLK
WE UG190_5_19_050506
图 5-19: 96 位移位寄存器配置
第 5 章: 可配置逻辑块 (CLB)
SRL32
SHIFTIN (D) DI1 O6
5
A[6:0] A[6:2]
MC31 CX (A5)
(CLK)
CLK CLK
(WE/CE)
WE WE
SRL32 F7BMUX
DI1 O6
A[6:2] BX (A6)
MC31
CLK
WE (BMUX)
Output (Q)
(BQ) Registered
D Q
F8MUX Output
SRL32 (Optional)
DI1 O6
A[6:2]
MC31 AX (A5)
CLK
WE
SRL32
F7AMUX
DI1 O6
A[6:2]
(MC31)
MC31
CLK SHIFTOUT (Q127)
WE
UG190_5_20_050506
移位寄存器数据流
移位操作
移位操作是具有 High 有效时钟使能功能的单时钟沿操作。当使能为 High 时,输入 (D) 加
载到移位寄存器的首位。同时,每个位移动到下一个最高位元位置。在可级联移位寄存器
配置中,末位在 M31 输出上移出。
由 5 位地址端口 (A[4:0]) 选定的位出现在 Q 输出上。
CLB 概述
动态读操作
Q 输出由 5 位地址确定。每当有新地址施加到 5 输入地址引脚,新位元位置的值就会在访
问 LUT 的时间延迟之后出现在 Q 输出上。此操作是异步操作,与时钟信号和时钟使能信号
无关。
静态读操作
如果 5 位地址固定,则 Q 输出始终使用同一个地址的数据位。这种模式可以在一个 LUT 中
实现从 1 到 16 位任意长度的移位寄存器。移位寄存器长度是 (N+1),其中 N 是输入地址
(0 - 31)。
Q 输出与每次移位操作同步变化。上一个地址的数据位移动到下一地址,并且出现在 Q 输
出上。
移位寄存器小结
• 位移操作需要一个时钟沿。
• 动态长度读操作是异步操作 (Q 输出)。
• 静态长度读操作是同步操作 (Q 输出)。
• 数据输入具有建立到时钟时序指标。
• 在级联配置中,Q31 输出始终包含末位值。
• Q31 输出在每次移位操作后同步变化。
多路复用器
Virtex-5 函数发生器及相关多路复用器可以实现以下各项:
• 使用一个 LUT 的 4:1 多路复用器
• 使用两个 LUT 的 8:1 多路复用器
• 使用四个 LUT 的 16:1 多路复用器
这些宽输入多路复用器是使用专用的 F7AMUX、F7BMUX 和 F8MUX 多路复用器在一个层
或逻辑 (或 LUT)中实现的。这些多路复用器允许在一个 Slice 中最多组合四个 LUT。
第 5 章: 可配置逻辑块 (CLB)
设计大型多路复用器
4:1 多路复用器
每个 Virtex-5 LUT 可以配置成一个 4:1 多路器。4:1 多路器可以用同一 Slice 中的触发器实
现。如图 5-21 所示,一个 Slice 中最多可以实现四个 4:1 多路器。
SLICE
LUT
(D)
O6 4:1 MUX Output
(D[6:1]) 6 (DQ) Registered
SEL D [1:0], DATA D [3:0] D Q
A[6:1] Output
Input
(Optional)
LUT
(C)
O6 4:1 MUX Output
(Optional)
LUT
(B)
O6 4:1 MUX Output
(B[6:1]) 6 (BQ) Registered
SEL B [1:0], DATA B [3:0] A[6:1] D Q
Output
Input
(Optional)
LUT
(A)
O6 4:1 MUX Output
(A[6:1]) (AQ) Registered
SEL A [1:0], DATA A [3:0] 6 D Q
A[6:1] Output
Input
(CLK) (Optional)
CLK
UG190_5_21_050506
CLB 概述
8:1 多路复用器
每个 Slice 有一个 F7AMUX 和一个 F7BMUX。这两个多路器与两个 LUT 的输出组合,形成
最多 13 个输入的组合函数 (即一个 8:1 多路器)。如图 5-22 所示,一个 Slice 中最多可
以实现两个 8:1 多路器。
SLICE
LUT
O6
(CX)
SELF7(1)
(CLK)
CLK
LUT
O6
(B[6:1]) 6
SEL B [1:0], DATA B [3:0] A[6:1]
Input (2) F7AMUX
(AMUX)
8:1 MUX
LUT Output (2)
(AQ) Registered
O6 D Q
Output
(A[6:1])
SEL A [1:0], DATA A [3:0] 6
A[6:1]
Input (2)
(Optional)
(AX)
SELF7(2)
UG190_5_22_090806
第 5 章: 可配置逻辑块 (CLB)
16:1 多路复用器
每个 Slice 有一个 F8MUX。F8MUX 将 F7AMUX 和 F7BMUX 的输出组合,形成最多 27 个
输入的组合函数 (即一个 16:1 多路器)。如图 5-23 所示,一个 Slice 中只能实现一个
16:1 多路器。
SLICE
LUT
O6
(D[6:1]) 6
SEL D [1:0], DATA D [3:0] A[6:1] F7BMUX
Input
LUT
O6
LUT
O6
SEL A [1:0], DATA A [3:0] (A[6:1])
6
Input A[6:1]
(AX)
SELF7
(BX)
SELF8
(CLK)
CLK
UG190_5_23_050506
快速先行进位逻辑
除了函数发生器,还提供了专用进位逻辑,用于在 Slice 中实现快速算术加减运算。
Virtex-5 的 CLB 有两条独立进位链,如图 5-1 所示。进位链可以级联,以形成较宽的加减
逻辑,如图 5-2 所示。
Virtex-5 器件中的进位链是上行进位链,每个 Slice 具有四位的高度。对于每个位,有一个
进位多路复用器 (MUXCY) 和一个专用 XOR 门,用于按选定的进位位元对运算元进行加减
运算。专用的进位通路和进位多路复用器 (MUXCY) 还可用来级联函数发生器,以实现宽逻
辑函数。
CLB 概述
(Optional)
CO2
CMUX/CQ*
S2
O6 From LUTC MUXCY
O2
CMUX
O5 From LUTC DI2
CX D Q CQ
(Optional)
CO1
BMUX/BQ*
S1
O6 From LUTB MUXCY
O1
BMUX
O5 From LUTB DI1
BX D Q BQ
(Optional)
CO0
AMUX/AQ*
S0
O6 From LUTA MUXCY
O0
AMUX
O5 From LUTA DI0
AX D Q AQ
* Can be used if
01 unregistered/registered
outputs are free.
CIN (From Previous Slice)
UG190_5_24_050506
图 5-24: 快速进位逻辑通路和相关元件
进位链还包含伴随函数发生器的先行逻辑。有十个独立输入 (S 输入 - S0 到 S3、DI 输入
- DI1 到 DI4、CYINIT 和 CIN)和八个独立输出 (O 输出 - O0 到 O3,以及 CO 输出 -
CO0 到 CO3)。
S 输入用于进位先行逻辑的 “传播”信号。“传播”信号源自函数发生器的 O6 输出。DI
输入是进位先行逻辑的 “生成”信号。“生成”信号源自函数发生器的 O5 输出或 Slice 的
BYPASS 输入 (AX、BX、CX 或 DX)。前一输入用来创建乘法器,而后者用来创建加法
器 / 累加器。CYINIT 是进位链中首位的 CIN。CYINIT 的值可以是 0 (对于加法)、1 (对
于减法)或 AX 输入 (对于第一个动态进位位元)。CIN 输入用来级联各 Slice,以形成较
长的进位链。O 输出包含加减运算的和数。CO 输出计算每个位的进位输出。CO3 连接到
Slice 的 COUT 输出,从而通过级联多个 Slice 形成较长的进位链。随着级联的进位链增
第 5 章: 可配置逻辑块 (CLB)
CLB/Slice 时序模型
由于 Virtex-5 FPGA 的大尺寸和复杂性,理解与各种通路和功能元件关联的时序是一项困
难而重要的任务。虽然不必理解用 Xilinx 软件实现大多数设计所需的各种时序参数,但是
详尽的时序模型可以帮助高级用户分析关键通路或规划速度敏感型设计。
以下叙述三个时序模型部分:
• 功能元件图 - 说明引脚和连接的基本架构原理图
• 时序参数 - 《Virtex-5 数据手册》中时序参数的定义
• 时序图 - 说明彼此相关的功能元件时序参数
请结合 Xilinx 时序分析器软件 (TRCE) 和《Virtex-5 数据手册》中的开关特性部分使用本章
中的模型。所有引脚名称、参数名称和通路均与布线后的时序报告和布线前的静态时序报
告一致。本章讲述见于开关特性部分的大多数时序参数。
《Virtex-5 数据手册》中收录的所有时序参数均涉及 Slice 和 CLB。以下部分对应
《Virtex-5 数据手册》中的特定开关特性部分。
• “通用 Slice 时序模型与参数”(CLB 开关特性)
• “Slice 分布式 RAM 时序模型与参数 (只能在 SLICEM 中使用)”(CLB 分布式 RAM
开关特性)
• “Slice SRL 时序模型与参数 (只能在 SLICEM 中使用)”(CLB SRL 开关特性)
• “Slice 进位链时序模型与参数”(CLB 应用开关特性)
CLB/Slice 时序模型
通用 Slice 时序模型与参数
图 5-25 所示为简化的 Virtex-5 Slice。为简明起见,图中略去了 Virtex-5 Slice 的某些元
件,只显示与本部分所述时序通路有关的元件。
LUT
D 6
O6 D
Inputs
O5 DMUX
FE/LAT
D Q DQ
DX CE
CLK
SR REV
F7BMUX
LUT
C 6
O6 C
Inputs
CMUX
O5
FE/LAT
D Q CQ
CX
F8MUX CE
CLK
SR REV
LUT
B 6
O6 B
Inputs
BMUX
O5
FE/LAT
D Q BQ
BX
CE
CLK
SR REV
F7AMUX
LUT
A 6
O6 A
Inputs
AMUX
O5
FE/LAT
D Q AQ
AX
CE
CE CLK
CLK SR REV
SR
REV
(DX) UG190_5_25_050506
第 5 章: 可配置逻辑块 (CLB)
时序参数
表 5-7 所示为图 5-25 中大多数通路的通用 Slice 时序参数。
时序延迟
TCKO FF 时钟 (CLK) 到
AQ/BQ/CQ/DQ 输出 时钟之后,数据在 Slice 时序元件 (配置为触发
器)的 AQ/BQ/CQ/DQ 输出上稳定的时间。
TCECK/TCKCE CE 输入
CLK 前 / 后,Slice 的 CE 输入必须在 Slice 时序元
件 (配置为触发器)的 CE 输入上稳定的时间。
TSRCK/TCKSR SR/BY 输入
CLK 前 / 后,Slice 的 SR (设置 / 复位)和 BY
(Rev) 输入必须在 Slice 时序元件 (配置为触发
器)的 SR/Rev 输入上稳定的时间。
设置 / 复位
TRPW
SR (设置 / 复位)和 BY (Rev) 引脚的最小脉宽。
TRQ
Slice 时序元件的异步设置 / 复位从 SR/BY 输入到
AQ/BQ/CQ/DQ 输出的传播时间。
CLB/Slice 时序模型
注:
1. 此参数包括一个配置为两个五输入函数的 LUT。
2. TXXCK = 建立时间 (时钟沿之前),TCKXX = 保持时间 (时钟沿之后)。
时序特性
图 5-26 所示为 Virtex-5 Slice 的通用时序特性。
1 2 3
CLK
TCEO
CE
TDICK
AX/BX/CX/DX
(DATA)
TSRCK
SR (RESET)
TCKO TCKO
AQ/BQ/CQ/DQ
(OUT)
ug190_5_26_050506
第 5 章: 可配置逻辑块 (CLB)
RAM
DX DI1
DI DI2 O6 D
6
D input A[6:0]
WA[6:0]
CLK CLK O5 DMUX
WE WE
RAM
CX DI1
CI DI2 O6 C
6
C input A[6:0]
WA[6:0]
CLK O5 CMUX
WE
RAM
BX DI1
BI DI2 O6 B
6
B input A[6:0]
WA[6:0]
CLK O5 BMUX
WE
RAM
AX DI1
AI DI2 O6 A
6
A input A[6:0]
WA[6:0]
CLK O5 AMUX
WE
UG190_5_27_050506
CLB/Slice 时序模型
注:
1. 此参数包括一个配置为 2 位分布式 RAM 的 LUT。
2. TXXCK = 建立时间 (时钟沿之前),TCKXX = 保持时间 (时钟沿之后)。
3. 参数包括配置为数据输入 (DI2) 的 AI/BI/CI/DI。
第 5 章: 可配置逻辑块 (CLB)
1 2 3 4 5 6 7
TWC
TWPH
TWPL
CLK
TAS
A/B/C/D
2 F 3 4 5 E
(ADDR)
TDS
AX/BX/CX/DX
1 X 0 1 0 X
(DI)
TWS TILO TILO
WE
TSHCKO
DATA_OUT
A/B/C/D 1 MEM(F) 0 1 0 MEM(E)
Output
WRITE READ WRITE WRITE WRITE READ
UG190_5_28_050506
时钟事件 2:读操作
分布式 RAM 中的所有读操作都是异步操作。只要 WE 为 Low,地址总线即可随时置为有
效。地址总线上的 RAM 内容在长度为 TILO 的延迟 (通过 LUT 的传播延迟)之后反映在
A/B/C/D 输出上。地址 (F) 在时钟事件 2 之后置为有效,而地址 (F) 处的 RAM 内容在长度
为 TILO 的延迟之后反映在输出上。
CLB/Slice 时序模型
SRL
DX DI1
O6 D
D address A MC31
6
CLK WE
CLK
W
SRL
DI1
CX O6 C
C address A MC31
6
CLK WE
SRL
DI1
BX O6 B
B address A MC31
6
CLK WE
SRL
DI1
AX O6 A
A address A MC31 DMUX
6
CLK WE
UG190_5_29_050506
第 5 章: 可配置逻辑块 (CLB)
注:
1. 此参数包括一个配置为 2 位移位寄存器的 LUT。
2. TXXCK = 建立时间 (时钟沿之前),TCKXX = 保持时间 (时钟沿之后)。
3. 参数包括配置为一个数据输入 (DI2) 或具有共同移位的两个位元的 AI/BI/CI/DI。
1 2 3 4 5 6 32
CLK
TWS
Write Enable
(WE)
TDS
Shift_In (DI) 0 1 1 0 1 0
Address
0 2 1
(A/B/C/D)
TREG TILO TILO
Data Out
X 0 1 1 0 1 1 0 1
(A/B/C/D)
TREG
MSB
X X X X X X X 0
(MC31/DMUX)
ug190_5_30_050506
CLB/Slice 时序模型
时钟事件 1:移位输入
在写 (移位输入)操作过程中,随着数据移到 SRL,A/B/C/D 输入上的地址处的寄存器单
位元内容被改变。如果地址在时钟事件过程中未改变,则写入此寄存器的数据同步反映在
A/B/C/D 输出上。如果 A/B/C/D 输入在时钟事件过程中已改变,则可寻址输出 (A/B/C/D
输出)上的数据值无效。
• 在时间事件 1 之前的时间 TWS 处,写使能信号 (WE) 变为 High 有效,从而为后续的写
操作启用 SRL。
• 在时间事件 1 之前的时间 TDS 处,数据在 SRL 的 DI 输入上变为有效 (0) ;在时间事件
1 后的长度为 TREG 的延迟之后,该数据反映在 A/B/C/D 输出上。因为地址 0 是在时钟
事件 1 处指定的,而且 DI 输入上的数据是写入寄存器 0,所以该数据反映在 A/B/C/D
输出上。
时钟事件 2:移位输入
• 在时间事件 2 之前的时间 TDS 处,数据在 SRL 的 DI 输入上变为有效 (1) ;在时间事件
2 后的长度为 TREG 的延迟之后,该数据反映在 A/B/C/D 输出上。因为地址 0 仍然是在
时钟事件 2 处指定的,而且 DI 输入上的数据是写入寄存器 0,所以该数据反映在 D 输
出上。
第 5 章: 可配置逻辑块 (CLB)
Slice 进位链时序模型与参数
第 193 页的图 5-24 所示为 Virtex-5 Slice 中的进位链。为简明起见,图中略去了 Virtex-5
Slice 的某些元件,只显示与本部分所述时序通路有关的元件。
Slice 进位链时序参数
表 5-10 所示为第 193 页的图 5-24 中大多数通路的 Slice 进位链时序参数。
注:
1. TXXCK = 建立时间 (时钟沿之前),TCKXX = 保持时间 (时钟沿之后)。
Slice 进位链时序特性
图 5-31 所示为 Virtex-5 Slice 中实现的 Slice 进位链的时序特性。
1 2 3
CLK
TCINCK
CIN
(DATA)
TSRCK
SR (RESET)
TCKO TCKO
AQ/BQ/CQ/DQ
(OUT)
ug190_5_31_050506
CLB 基元
CLB 基元
《软件库指南》中提供了关于 CLB 基元的更多信息。
分布式 RAM 基元
从 32 x 2 位到 256 x 1 位,共有七个可用基元,其中三个基元是单端口 RAM,两个基元是
双端口 RAM,另外两个基元是四端口 RAM,如表 5-11 所示。
第 5 章: 可配置逻辑块 (CLB)
DPO
DPRA[#:0] Read Port ADDRC[#:0] Read Port DOC[#:0]
UG190_5_32_051006
端口信号
在读取同一组存储单元时,各分布式 RAM 端口独立于另一端口操作。
时钟 - WCLK
此时钟用于同步写。数据和地址输入要求满足相对 WCLK 引脚的建立时间。
使能 - WE/WED
使能引脚影响端口的写功能。有效写使能阻止对存储器单元的任何写操作。有效写使能致
使时钟沿将数据输入信号写入地址输入所指向的存储器位置。
数据输入 - D、DID[#:0]
数据输入 D (对于单端口和双端口)和 DID[#:0] (对于四端口)提供待写入 RAM 的新数
据值。
CLB 基元
反转时钟引脚
时钟引脚 (CLK) 具有独立的反转选项。时钟信号可以在时钟的下降沿有效,也可以在时钟
的上升沿有效,无需其他逻辑资源。默认是在时钟上升沿有效。
全局设置 / 复位 - GSR
全局设置 / 复位 (GSR) 信号不影响分布式 RAM 模块。
移位寄存器 (SRL) 基元
一个基元可用于 32 位移位寄存器 (SRLC32E)。图 5-33 所示为该 32 位移位寄存器基元。
SRLC32E
D
6 Q
A[4:0]
CE
Q31
CLK
UG190_5_33_050506
图 5-33: 32 位移位寄存器
通过使用专用的多路器 (F7AMUX、F7BMUX 和 F8MUX)例化若干 32 位移位寄存器,可
以在一个 Slice 中实现长达 128 位的可级联移位寄存器链。本技术文档的 “移位寄存器
(只能在 SLICEM 中使用)”部分中的图 5-18 到图 5-20 所示为大于 32 位的可级联移位
寄存器的各种实现。
端口信号
时钟 - CLK
可将时钟的上升沿或下降沿用于同步移位操作。数据和时钟使能输入引脚要求满足相对
CLK 沿的建立时间。
数据输入 - D
数据输入提供待移入移位寄存器的新数据 (1 位)。
时钟使能 - CE
时钟使能引脚作用于移位功能。无效的时钟使能引脚不向移位寄存器移入数据,也不写入
新数据。将时钟使能置为有效允许将数据输入 (D) 写入第一个位置,并且将全部数据移动
一个位置。当有新数据时,新数据会出现在输出引脚 (Q) 和可级联输出引脚 (Q31) 上。
地址 - A[4:0]
地址输入选择待读的数据位 (范围从 0 到 31)。第 n 个位出现在输出引脚 (Q) 上。地址输
入对可级联输出引脚 (Q31) 没有影响。该引脚始终是移位寄存器的末位 (位 31)。
第 5 章: 可配置逻辑块 (CLB)
数据输出 - Q
数据输出 Q 提供由地址输入选择的数据值 (1 位)。
反转时钟引脚
时钟引脚 (CLK) 具有独立的反转选项。时钟信号可以在时钟的下降沿有效,也可以在其上
升沿有效,无需其他逻辑资源。默认是时钟上升沿。
全局设置 / 复位 - GSR
全局设置 / 复位 (GSR) 信号不影响移位寄存器。
其他移位寄存器应用
同步移位寄存器
移位寄存器基元不使用同一 Slice 中的寄存器。要实现全同步读写移位寄存器,必须将输出
引脚 Q 连接到触发器。如图 5-34 所示,移位寄存器和触发器共用一个时钟。
SRLC32G FF
Synchronous
D Q D Q Output
Address
CE (Write Enable)
CLK Q31
UG190_5_34_050506
图 5-34: 同步移位寄存器
此配置提供了更好的时序方案并且简化了设计。因为必须考虑将触发器作为移位寄存器链
中的最后一个寄存器,所以静态或动态地址应指向所需长度减一的位置。如果需要,亦可
将可级联输出连接到触发器上。
静态长度移位寄存器
可级联 32 位移位寄存器可以实现任意静态长度模式的移位寄存器,无需使用专用多路复用
器 (F7AMUX、F7BMUX 和 F8MUX)。图 5-35 所示为 72 位移位寄存器。只有最后一个
SRLC32E 基元需要将其地址输入固定为 0b00111。另外,也可以把移位寄存器的长度限
制在 71 位 (地址固定为 0b00110),并且用触发器作为最后一级寄存器。(在 SRLC32E
基元中,移位寄存器的长度是地址输入 + 1。)
CLB 基元
LUT LUT
D D D D
Q31 Q31
SRLC32G SRLC32G
LUT LUT
D D
Q31 Q31
SRLC32G SRLC32G
FF
LUT LUT
D Q OUT D Q D Q OUT
(72-bit SRL) (72-bit SRL)
00111 A[4:0] 00110 A[4:0]
5 5
Q31 Q31
SRLC32G SRLC32G
UG190_5_35_050506
图 5-35: 静态长度移位寄存器示例
多路复用器基元
每个 Slice 中有两个基元 (MUXF7 和 MUXF8)可用来访问专用的 F7AMUX、F7BMUX 和
F8MUX。这些多路复用器基元与 LUT 组合,还可用来构建较大宽度的多路复用器 (从 8:1
到 16:1)。“设计大型多路复用器”部分提供了关于构建较大多路复用器的更多信息。
端口信号
数据输入 - I0、I1
数据输入提供将由选择信号 (S) 选择的数据。
控制输入 - S
选择输入信号确定将输入数据连接到输出端 O。逻辑 0 选择 I0 输入,而逻辑 1 选择 I1 输
入。
数据输出 - O
数据输出 Q 输出由控制输入所选择的数据值 (1 位)。
进位链基元
CARRY4 基元为 Virtex-5 架构中的 Slice 提供快速进位逻辑。此基元与 LUT 配合工作,以
便构建加法器和乘法器。通常可以用综合工具从标准 RTL 代码中推导出此基元。就性能和
面积而言,综合工具可以找出最适合映射到此逻辑的算术和 / 或逻辑功能。 它还可正确地
自动使用和连接此功能。第 193 页的图 5-24 所示为 CARRY4 框图。
第 5 章: 可配置逻辑块 (CLB)
端口信号
和数输出 - O[3:0]
和数输出提供加减运算的最终结果。
进位输出 - CO[3:0]
进位输出提供每个位的进位输出。如果将 CO[3] 连接到另一 CARRY4 基元的 CI 输入,则
可以创建更长的进位链。
数据输入 - DI[3:0]
数据输入用作进位先行逻辑的 “生成”信号。“生成”信号由 LUT 输出。
选择输入 - S[3:0]
选择输入用作进位先行逻辑的 “传播”信号。“传播”信号由 LUT 输出。
进位初始化 - CYINIT
进位初始化输入用来选择进位链中的首位。此引脚的值是 0 (对于加法)、1 (对于减法)
或 AX 输入 (对于第一个动态进位位元)。
进位输入 - CI
进位输入用来级联各 Slice,以形成较长的进位链。要创建较长的进位链,将另一个
CARRY4 的 CO[3] 输出连接到此引脚即可。
第6章
SelectIO 资源
I/O 模块概述
本文连续三章介绍输入 / 输出特性和逻辑资源。
第 6 章 “SelectIO 资源”讲述输出驱动器和输入接收器的电气特性,并且给出多种标准接
口的详尽示例。第 7 章 “SelectIO 逻辑资源”讲述输入输出数据寄存器及其双倍数据速率
(DDR) 操作以及可编程输入延迟 (IDELAY)。第 8 章 “高级 SelectIO 逻辑资源”讲述数据
串行器 / 解串器 (SERDES)。
I/O 模块包含两个 IOB、两个 ILOGIC、两个 OLOGIC 和两个 IODELAY。图 6-1 所示为
Virtex-5 I/O 模块。
IODELAY
(Chapter 7)
ILOGIC
(Chapter 7)
or
ISERDES
(Chapter 8)
IOB
Pad
(Chapter 6)
OLOGIC
(Chapter 7)
or
OSERDES
(Chapter 8)
ILOGIC
(Chapter 7)
or
ISERDES
(Chapter 8)
IOB
Pad
(Chapter 6)
OLOGIC
(Chapter 7)
or
OSERDES
(Chapter 8)
IODELAY
(Chapter 7)
ug190_6_01_041106
第 6 章: SelectIO 资源
SelectIO 资源简介
Virtex-5 FPGA 具有可配置高性能 SelectIOTM 驱动器和接收器,可支持种类繁多的标准接
口。强大的功能集包括输出强度和斜率的可编程控制以及使用数控阻抗 (DCI) 的片上终端。
每个 IOB 包含输入、输出和三态 SelectIO 驱动器。这些驱动器可以按照各种 I/O 标准配
置。差分 I/O 使用在一个模块中的两个 IOB。
• 单端 I/O 标准 (LVCMOS、LVTTL、HSTL、SSTL、GTL、PCI)
• 差分 I/O 标准 (LVDS、HT、LVPECL、BLVDS、差分 HSTL 和 SSTL)
• 差分输入和 VREF 相关输入由 VCCAUX 供电
如第 7 章 “SelectIO 逻辑资源”中所述,每个 Virtex-5 I/O 模块包含两个 IOB,还包含两
个 ILOGIC 块和两个 OLOGIC 块。
图 6-2 所示为基本 IOB 及其与内部逻辑和器件焊盘的连接。
DIFFO_IN
DIFFO_OUT
PAD
PADOUT
T
O I
OUTBUF
INBUF
DIFFI_IN
ug190_6_02_021306
图 6-2: 基本 IOB 图
SelectIO 资源一般指导原则
本部分简要概括用 Virtex-5 SelectIO 资源进行设计时应考虑的一般指导原则。
SelectIO 资源一般指导原则
BANK BANK
40 I/O 40 I/O
BANK
20 I/O
BANK BANK BANK
40 I/O 20 I/O 40 I/O
CONFIG
BANK BANK
40 I/O 40 I/O
BANK
20 I/O
ug190_6_03_021306
参考电压 (VREF) 引脚
带有差分放大器输入缓冲器的低压单端 I/O 标准需要输入参考电压 (VREF)。VREF 是对
Virtex-5 器件的外部输入引脚。如果使用需要差分放大器输入缓冲器的单端 I/O 标准,则
在各个 I/O 组中,每 20 个 I/O 引脚中就有一个自动配置成 VREF 输入。
输出驱动源电压 (VCCO) 引脚
Virtex-5 器件支持的低压 I/O 标准有许多需要不同的输出驱动电压 (VCCO)。因此,各器件
常常支持多个输出驱动源电压。
给定 VCCO 组中的各输出缓冲器必须共用同样的输出驱动源电压。使用 VCCO 电压源的输
入缓冲器标准有:LVTTL、LVCMOS、PCI、LVDCI 及其他 DCI 标准。
第 6 章: SelectIO 资源
DCI 级联
以前,在组中使用 DCI I/O 标准需要将外部参考电阻器连接到同组中的 VRN 和 VRP 引脚。
VRN/VRP 引脚提供一个参考电压,由内部 DCI 电路用来调整 I/O 输出阻抗,以匹配外部参
考电阻器。如图 6-4 所示,一条数控总线遍布于整个组内,用来控制各 I/O 的阻抗。
To
Local DCI VRN/VRP
Bank
UG190_6_95_019507
SelectIO 资源一般指导原则
To Banks Above
(When Cascaded)
To
Local Bank A
Bank
To
Local DCI VRN/VRP Bank B
Bank
To
Local Bank C
Bank
To Banks Below
(When Cascaded) UG190_6_96_012907
第 6 章: SelectIO 资源
使用 DCI 级联时的指导原则如下:
• 主组和从组必须都在器件的同一列上 (左列、中列或右列)。
• 主组和从组必须具有同样的 VCCO 和 VREF (如果适用)电压。
• 所有主从组之间必须满足 DCI I/O 组合兼容性规则 (例如,所有主从组之间只允许有
一种使用单终端类型的 DCI I/O 标准)。实现 DCI 级联时的 DCI I/O 标准兼容性限制不
只是针对一个组,而是制约所有主从组。
• DCI 级联必须是跨同列中的连续组延伸。使用 DCI 级联时不能跳过某些组。作为示
例,请考虑同列中 A、B、C 和 D 四个组自上而下排列的情形。在这种情况下,若假定
其他所有指导原则均已满足,则以下是允许的 DCI 级联方案:
♦ DCI 级联可以延伸到组 A 或组 C,也可同时延伸到这两个组。
♦ 既然组 D 是在同列中,DCI 级联也可以延伸到组 D。不过,DCI 级联还必须延伸
到介于中间的组 C。如果在组 C 中实现 DCI I/O 标准,则全部三个组 (B、C 和
D)之间都必须遵守 DCI I/O 组合兼容性。
• 只要满足上述指导原则,DCI 级联就可以纵跨整个列。
• 要确定相邻组的位置。可以根据 Partgen 生成的封装文件 (partgen -v
XC5VLX50TFF1136) 完全确定组位置信息。生成的封装文件 (扩展名为 .pkg)包含
XY I/O 位置信息。标识符 X 表示同列中的 I/O。标识符 Y 表示特定组中某 I/O 的位置。
文件还能表示出组编号。跨组边界的连续 Y 位置表示相邻的组。例如,FF1136 封装中
的 XC5VLXT 表示从 I/O 的 X0Y159 端起到 I/O 的 X0Y120 位置止的组 11。组 13 从 I/O
X0Y119 起,到 X0Y80 止。组 15 从 I/O X0Y199 起,到 X0Y160 止。这说明组 13 是在
组 11 的南侧,而组 15 是在其北侧。因为这两个组的 Y 坐标是连续的,所以认为这两
个组连续,可以进行 DCI 级联。可以级联到未键合的组。
• 可以使用约束指南中所述的 DCI_CASCADE 约束启用 DCI 级联。
Xilinx DCI
DCI 使用每组中的两个多用途参考引脚控制驱动器的阻抗或该组中所有 I/O 的并联终端值。
N 参考引脚 (VRN) 必须由一个参考电阻器上拉到 VCCO,而 P 参考引脚 (VRP) 则必须由另
一个参考电阻器下拉到接地。各参考电阻器的阻值应等于 PC 电路板迹线的特征阻抗,或
者应是该值的两倍。请见第 222 页的 “终端接 VCCO/2 (分裂终端)的驱动器”。
当在特定组上使用 DCI I/O 标准时,两个多用途参考引脚不可用作常规 I/O。但是,如果该
组中未使用 DCI I/O 标准,则可以将这些引脚用作常规 I/O 引脚。《Virtex-5 封装技术规
范》给出了详细的引脚描述。
DCI 通过有选择地开启或关闭 I/O 中的晶体管来调整 I/O 的阻抗,将阻抗调整到与外部参考
电阻器匹配。阻抗调整过程有两个阶段。第一阶段是通过控制 I/O 中的较大晶体管来补偿
工艺偏差。这个阶段是在器件启动程序过程中进行。第二阶段是通过控制 I/O 中的较小晶
体管来保持阻抗与温度和供电电压的变化相适应。这个阶段紧接第一阶段之后开始并无限
期地持续下去,即使在器件工作时也不停止。默认情况下,DONE 引脚直到阻抗调整过程
的第一阶段完成才转为 High。
SelectIO 资源一般指导原则
可控阻抗驱动器 (源终端)
有些 I/O 标准 (如 LVCMOS)必须具有与所驱动线路的特征阻抗相匹配的驱动阻抗。DCI
可以提供可控阻抗输出驱动器,无需外部源终端即可消除反射。阻抗由阻值与迹线阻抗相
等的外部参考电阻器设定。
第 6 章: SelectIO 资源
IOB
R
Z0
Virtex-5 DCI
UG190_6_04_012706
图 6-6: 可控阻抗驱动器
SelectIO 资源一般指导原则
半阻抗可控阻抗驱动器 (源终端)
DCI 还提供具有参考电阻器一半阻抗的驱动器。这种参考电阻器阻值翻倍的方法可将这些
电阻器的静态功耗减少一半。支持半阻抗可控阻抗驱动器的 DCI I/O 标准有
LVDCI_DV2_15、LVDCI_DV2_18 和 LVDCI_DV2_25。
图 6-7 所示为 Virtex-5 器件中的半阻抗可控驱动器。参考电阻器 R 必须是 2 × Z0 才能与
Z0 的阻抗匹配。
IOB
R/2
Z0
Virtex-5 DCI
UG190_6_05_021206
图 6-7: 半阻抗可控阻抗驱动器
VCCO
IOB
R
Z0
VREF
Virtex-5
UG190_6_06_021306
第 6 章: SelectIO 资源
IOB
VCCO
Z0
VREF
Virtex-5 DCI
UG190_6_07_021206
VCCO/2
IOB
R
Z0
VREF
Virtex-5
UG190_6_08_021206
这相当于使用由两个电阻器组成的分裂终端。一个电阻器接 VCCO,另一个接地。电阻器
的阻值为 2R。DCI 使用分裂终端提供接 VCCO/2 的终端。终端电阻由外部参考电阻器设
定,即接 VCCO 和接地的电阻器阻值各是参考电阻器的两倍。HSTL 和 SSTL 标准都需要 50
Ω 的外部参考电阻器。支持分裂终端的 DCI 输入标准如表 6-1 所示。
表 6-1: 支持分裂终端的 DCI 输入标准
HSTL_I_DCI DIFF_HSTL_I_DCI SSTL2_I_DCI DIFF_SSTL2_I_DCI
HSTL_I_DCI_18 DIFF_HSTL_I_DCI_18 SSTL2_II_DCI DIFF_SSTL2_II_DCI
HSTL_II_DCI DIFF_HSTL_II_DCI SSTL18_I_DCI DIFF_SSTL18_I_DCI
HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18 SSTL18_II_DCI DIFF_SSTL18_II_DCI
HSTL_II_T_DCI SSTL2_II_T_DCI
HSTL_II_T_DCI_18 SSTL18_II_T_DCI
SelectIO 资源一般指导原则
IOB
VCCO
2R
Z0
VREF
2R
Virtex-5 DCI
UG190_6_09_021206
VCCO
IOB
Z0
Virtex-5
UG190_6_10_021206
第 6 章: SelectIO 资源
VCCO IOB
Z0
Virtex-5 DCI
UG190_6_11_021206
VCCO/2
IOB
R
Z0
Virtex-5
UG190_6_12_021206
SelectIO 资源一般指导原则
IOB
VCCO
2R
Z0
2R
Virtex-5 DCI
UG190_6_13_021206
第 6 章: SelectIO 资源
a. VREF 必须兼顾同组中的所有输入。
b. VCCO 必须兼顾同组中的所有输入和输出。
c. 每组中只可有一个使用单终端类型的 DCI I/O 标准。
d. 每组中只可有一个使用分裂终端类型的 DCI I/O 标准。
e. 单终端和分裂终端、可控阻抗驱动器和半阻抗可控阻抗驱动器可以在同组中并存。
7. 组 1 和组 2 不支持 DCI。
DCI 三态输出的行为如下:
如果一个 LVDCI 或 LVDCI_DV2 驱动器处于三态,则驱动器就是三态。如果一个单终端或
分裂终端驱动器处于三态,则驱动器就是三态,但终端电阻器保持不变。
以下部分列出了针对各 DCI I/O 标准必须采取的措施。
DCI 用法示例
• 图 6-16 提供的示例说明如何使用 HSTL_I_DCI、HSTL_II_DCI、HSTL_III_DCI 和
HSTL_IV_DCI I/O 标准。
• 图 6-17 提供的示例说明如何使用 SSTL2_I_DCI 和 SSTL2_II_DCI I/O 标准。
SelectIO 资源一般指导原则
Reference
Resistor VRN = VRP = R = Z0 VRN = VRP = R = Z0 VRN = VRP = R = Z0 VRN = VRP = R = Z0
第 6 章: SelectIO 资源
VCCO/2
VCCO/2 VCCO/2
R
R R
Conventional Z0
R/2 Z0
R/2
2R R 2R
Conventional
Transmit Z0 Z0
DCI Receive R/2 R/2
2R 2R
Virtex-5 Virtex-5
DCI DCI
VCCO VCCO
25Ω(1) 2R
2R
Z0
Bidirectional N/A 2R 2R
25Ω
Virtex-5 Virtex-5
DCI DCI
Reference
Resistor VRN = VRP = R = Z0 VRN = VRP = R = Z0
Recommended 50 Ω 50 Ω
Z0(2)
Notes:
1. The SSTL-compatible 25 Ω or 20 Ω series resistor is accounted for in the DCI buffer,
and it is not DCI controlled.
2. Z0 is the recommended PCB trace impedance.
ug190_6_15_041106
Virtex-5 SelectIO 基元
Virtex-5 SelectIO 基元
Xilinx 软件库罗列了大量基元,可支持在 Virtex-5 I/O 基元中使用多种 I/O 标准。以下五个
通用基元名称代表了大多数可用的单端 I/O 标准。
• IBUF (输入缓冲器)
• IBUFG (时钟输入缓冲器)
• OBUF (输出缓冲器)
• OBUFT (三态输出缓冲器)
• IOBUF (输入 / 输出缓冲器)
以下五个通用基元名称代表了大多数可用的差分 I/O 标准:
• IBUFDS (输入缓冲器)
• IBUFGDS (时钟输入缓冲器)
• OBUFDS (输出缓冲器)
• OBUFTDS (三态输出缓冲器)
• IOBUFDS (输入 / 输出缓冲器)
IBUF 和 IBUFG
用作 Virtex-5 器件输入的信号必须使用一个输入缓冲器 (IBUF)。图 6-18 所示为通用
Virtex-5 IBUF 基元。
IBUF/IBUFG
I (Input) O (Output)
From device pad into FPGA
ug190_6_16_022806
OBUF
必须使用输出缓冲器 (OBUF) 将信号从 Virtex-5 器件驱动到外部输出焊盘。图 6-19 所示
为通用 Virtex-5 OBUF 基元。
OBUF
I (Input) O (Output)
From FPGA to device pad
ug190_6_17_022806
第 6 章: SelectIO 资源
OBUFT
通用三态输出缓冲器 OBUFT (图 6-20 所示)通常用来实现三态输出或双向 I/O。
OBUFT
T
3-state input
I (Input) O (Output)
From FPGA to device pad
ug190_6_18_022806
IOBUF
当双向信号需要输入缓冲器和具有 High 有效三态引脚的三态输出缓冲器时,需要使用
IOBUF 基元。图 6-21 所示为通用 Virtex-5 I/O IOBUF。
IOBUF
T
3-state input
I (Input) I/O
from FPGA to/from device pad
O (Output)
to FPGA
ug190_6_19_022806
IBUFDS 和 IBUFGDS
差分基元的相应用法和规则与单端 SelectIO 基元的相似。差分 SelectIO 基元有两个来往于
器件焊盘的引脚,用来显示差分对中的 P 沟道和 N 沟道引脚。N 沟道引脚带有 “B”后
缀。
图 6-22 所示为差分输入缓冲器基元。
IBUFDS/IBUFGDS
I + O
Output to
FPGA
IB –
Inputs from
device pads
ug190_6_20_022806
Virtex-5 SelectIO 基元
OBUFDS
图 6-23 所示为差分输出缓冲器基元。
OBUFDS
+ O
I Output to
Device Pads
Input from
FPGA
– OB
ug190_6_21_022806
OBUFTDS
图 6-24 所示为差分三态输出缓冲器基元。
OBUFTDS
T
3-state Input
+ O
I Output to
Device Pads
Input from
FPGA – OB
ug190_6_22_022806
IOBUFDS
图 6-25 所示为差分输入 / 输出缓冲器基元。
IOBUFDS
T
3-state Input
+ IO I/O
I (Input) to/from
from FPGA – IOB device pad
+
O (Output)
to FPGA –
ug190_6_23_022806
第 6 章: SelectIO 资源
Virtex-5 SelectIO 属性 / 约束
可以通过与某些 Virtex-5 I/O 资源功能 (如:位置约束、输入延迟、输出驱动强度和斜
率)相关的属性 / 约束使用这些功能。有关更多信息,请到 Xilinx 网站查阅 “约束指南”,
其中有语法示例和 VHDL/Verilog 参考代码。《软件手册》中提供了该指南,其网址是:
http://www.support.xilinx.com/cn/support/software_manuals.htm
位置约束
必须使用位置约束 (LOC) 指定被例化的 I/O 基元的 I/O 位置。位置约束的可能值是全部外
部端口标识符 (如 A8、M5、AM6 等)。这些值取决于器件和封装的尺寸。
LOC 属性在 UCF 文件中使用以下语法:
INST <I/O_BUFFER_INSTANTIATION_NAME> LOC = "<EXTERNAL_PORT_IDENTIFIER>";
例如:
INST MY_IO LOC=R7;
IOSTANDARD 属性
IOSTANDARD 属性可用来为所有 I/O 缓冲器选择一个 I/O 标准的值。表 6-39 列出了支持
的标准。IOSTANDARD 属性在 UCF 文件中使用以下语法:
INST <I/O_BUFFER_INSTANTIATION_NAME> IOSTANDARD=”<IOSTANDARD VALUE>”;
输出斜率属性
此属性有若干可选属性值,用来为单端 I/O 输出缓冲器选择所需斜率。对于 LVTTL 和
LVCMOS 输出缓冲器 (OBUF、OBUFT 和 IOBUF),可用 SLEW 属性指定所需斜率。
SLEW 属性的允许值是:
• SLEW = SLOW (默认)
• SLEW = FAST
SLEW 属性在 UCF 文件中使用以下语法:
INST <I/O_BUFFER_INSTANTIATION_NAME> SLEW = "<SLEW_VALUE>";
默认情况下,各输出缓冲器的斜率设置为 SLOW。此默认值用来最小化在切换非关键性信
号时电源总线上的瞬时变化。
Virtex-5 SelectIO 基元
输出驱动强度属性
对于 LVTTL 和 LVCMOS 输出缓冲器(OBUF、OBUFT 和 IOBUF),可用 DRIVE 属性指定
所需驱动强度 (单位 mA)。
DRIVE 属性的允许值是:
• DRIVE = 2
• DRIVE = 4
• DRIVE = 6
• DRIVE = 8
• DRIVE = 12 (默认)
• DRIVE = 16
• DRIVE = 24
LVCMOS12 仅支持 2、4、6 和 8 mA 的 DRIVE 设置。LVCMOS15 和 LVCMOS18 仅支持
2、4、6、8、12 和 16 mA 的 DRIVE 设置。
DRIVE 属性在 UCF 文件中使用以下语法:
INST <I/O_BUFFER_INSTANTIATION_NAME> DRIVE = "<DRIVE_VALUE>";
差分终端属性
差分终端 (DIFF_TERM) 属性专用于 Virtex-5 支持的差分输入 I/O 标准。此属性用来开启或
关闭内置的 100Ω 差分终端。
DIFF_TERM 属性的允许值是:
• TRUE
• FALSE (默认)
要指定 DIFF_TERM 属性,请在例化 IBUFDS 或 IBUGDS 组件的类属映射表 (VHDL) 或内
嵌语句参数 (Verilog) 中设置适当的值。关于例化此组件和设置 DIFF_TERM 属性恰当的语
法,请参阅 ISE 《语言模板》或 Virtex-5 HDL 《库指南》。
第 6 章: SelectIO 资源
IOB IOB
LVTTL LVTTL
Z0
IOB IOB
LVTTL LVTTL
RS = Z0 – RD
Z0
VTT
IOB IOB
LVTTL LVTTL
RP = Z0
Z0
IOB IOB
LVTTL LVTTL
Z0
VTT VTT
IOB IOB
LVTTL LVTTL
RP = Z0 RP = Z0
Z0
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 支持的 DRIVE 强度是 2、4、6、8、12、16 和 24 mA。
第 6 章: SelectIO 资源
LVCMOS (低压互补金属氧化物半导体)
LVCMOS 是一种广泛用于 CMOS 晶体管的开关标准。此标准是由 JEDEC 制定的 (JESD
8-5)。Virtex-5 FPGA 中支持的 LVCMOS 标准有:LVCMOS12、LVCMOS15、
LVCMOS18、LVCMOS25 和 LVCMOS33。
图 6-28 和图 6-29 表示单向和双向 LVCMOS 终端方法的样本电路。
IOB IOB
LVCMOS LVCMOS
Z0
IOB IOB
LVCMOS LVCMOS
RS = Z0 – RD
Z0
VTT
IOB IOB
LVCMOS LVCMOS
RP = Z0
Z0
IOB IOB
LVCMOS LVCMOS
Z0
VTT VTT
IOB IOB
LVCMOS LVCMOS
RP = Z0 RP = Z0
Z0
第 6 章: SelectIO 资源
LVDCI (低压数控阻抗)
使用这些 I/O 缓冲器可以将输出配置成可控阻抗驱动器。LVDCI 接收器与 LVCMOS 接收器
完全相同。有些 I/O 标准 (如 LVTTL、LVCMOS 等)必须具有与所驱动线路的特征阻抗相
匹配的驱动阻抗。Virtex-5 器件提供的可控阻抗驱动器可以提供不使用外部源终端电阻器
的串联终端。阻抗由阻值与迹线特征阻抗 Z0 相等的公共外部参考电阻器设定。
图 6-30 和图 6-31 表示可控阻抗驱动器所用单向和双向 LVCMOS 终端方法的样本电路。
支持可控阻抗驱动器的 DCI I/O 标准是:LVDCI_15、LVDCI_18、LVDCI_25 和
LVDCI_33。
IOB IOB
LVDCI LVDCI
Z0
R0 = RVRN = RVRP = Z0
ug190_6_28_022806
图 6-30: 单向终端可控阻抗驱动器
IOB IOB
LVDCI LVDCI
Z0
R0 = RVRN = RVRP = Z0
R0 = RVRN = RVRP = Z0
ug190_6_29_022806
图 6-31: 双向终端可控阻抗驱动器
LVDCI_DV2
半阻抗 (源终端)可控阻抗驱动器还可提供具有参考电阻器一半阻抗的驱动器。这样便可
使用两倍大的参考电阻器,从而减少通过 VRN/VRP 的静态功耗。支持半阻抗可控阻抗驱动
器的 I/O 标准有:LVDCI_DV2_15、LVDCI_DV2_18 和 LVDCI_DV2_25。图 6-32 和图 6-
33 所示为具有半阻抗单向和双向终端的可控驱动器。
当使用半阻抗驱动器时,为了让驱动阻抗与 Z0 匹配,参考电阻器 R 必须是 Z0 的两倍。
IOB IOB
LVDCI_DV2 LVDCI_DV2
Z0
R0 = ½RVRN = ½RVRP = Z0
ug190_6_30_022806
图 6-32: 单向终端半阻抗可控阻抗驱动器
IOB IOB
LVDCI_DV2 LVDCI_DV2
Z0
R0 = ½RVRN = ½RVRP = Z0
R0 = ½RVRN = ½RVRP = Z0
ug190_6_31_022806
图 6-33: 双向终端半阻抗可控阻抗驱动器
第 6 章: SelectIO 资源
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 当有效 DRIVE 属性为 2、4、6、8 时,在 + 1.2V 下仅支持 LVCMOS。
HSLVDCI (高速低压数控阻抗)
HSLVDCI 标准为双向专用。其驱动器与 LVDCI 的完全相同,而输入与 HSTL 和 SSTL 的完
全相同。HSLVDCI 的输入以 VREF 为参考电压,因而其接收器的输入灵敏度要比使用单端
LVCMOS 型接收器时高。
图 6-34 表示 HSLVDCI 可控阻抗驱动器所用双向终端方法的样本电路。支持以 VREF 为输
入参考电压的可控阻抗驱动器的 DCI I/O 标准有:HSLVDCI_15、HSLVDCI_18、
HSLVDCI_25 和 HSLVDCI_33。
IOB IOB
HSLVDCI
HSLVDCI
Z0 +
VREF = VCCO/2 –
R0 = RVRN = RVRP = Z0
R0 = RVRN = RVRP = Z0
ug190_6_33_022806
第 6 章: SelectIO 资源
PCIX、PCI33、PCI66 (外设组件接口 )
PCI 标准规定支持 33 MHz、66 MHz 和 133 MHz PCI 总线应用。该标准使用一个 LVTTL 输
入缓冲器和一个推挽式输出缓冲器。此标准不需要使用参考电压 (VREF) 或电路板终端电压
(VTT)。但是,此标准需要 3.3V 输入 / 输出源电压 (VCCO)。
如第 297 页的“将 VCCO 调节到 3.0V”中所述,PCI 上过冲 / 下过冲指标可能需要将 VCCO
调节到 3.0V。如果能通过缜密设计来控制上过冲和下过冲,则不必这样做。
表 6-11 和表 6-12 列出了直流电压指标。
注:
1. 已按照相关指标经过测试。
2. 关于完整指标,请参阅 PCI 规范。
注:
1. 已按照相关指标经过测试。
2. 关于完整指标,请参阅 PCIX 规范。
GTL (射电收发器逻辑)
射电收发器逻辑 (GTL) 标准是 Xerox 发明的高速总线标准 (JESD8.3)。Xilinx 实现了此标准
的带终端的版本。此标准需要一个差分放大器输入缓冲器和一个开漏输出缓冲器。差分输
入缓冲器的负端参考 VREF 引脚。
图 6-35 表示具有外部并联终端和未连接 VCCO 的 GTL 所用有效终端方法的样本电路。
IOB IOB
VTT = 1.2V VTT = 1.2V
RP = Z0 = 50Ω RP = Z0 = 50Ω
VCCO = Unconnected
Z0 = 50 +
VREF = 0.8V –
ug190_6_34_022806
GTL_DCI 用法
GTL 不需要 VCCO 电压。但对于 GTL_DCI 来说,VCCO 必须连接到 1.2V。GTL_DCI 提供
接 VCCO 的输入或输出单终端。
图 6-36 表示具有内部并联驱动器和接收器终端的 GTL_DCI 所用有效终端方法的样本电
路。
IOB IOB V
VCCO = 1.2V CCO = 1.2V
RVRP = Z0 = 50Ω RVRP = Z0 = 50Ω
Z0 = 50 +
VREF = 0.8V –
ug190_6_35_030206
第 6 章: SelectIO 资源
注:
1. N 必须大于或等于 0.653 且小于或等于 0.68。
GTLP (射电收发器逻辑增强版)
射电收发器逻辑增强版 (GTL+) 标准是 Pentium Pro 处理器首先使用的高速总线标准
(JESD8.3)。此标准需要一个差分放大器输入缓冲器和一个开漏输出缓冲器。差分输入缓冲
器的负端参考 VREF 引脚。
图 6-37 表示具有外部并联终端和未连接 VCCO 的 GTL+ 所用有效终端方法的样本电路。
IOB IOB
VTT = 1.5V VTT = 1.5V
RP = Z0 = 50Ω RP = Z0 = 50Ω
VCCO = Unconnected
Z0 = 50 +
VREF = 1.0V –
ug190_6_36_030206
GTLP_DCI 用法
GTL+ 不需要 VCCO 电压。但对于 GTLP_DCI 来说,VCCO 必须连接到 1.5V。GTLP_DCI 提
供接 VCCO 的输入或输出单终端。
图 6-38 表示具有内部并联驱动器和接收器终端的 GTLP_DCI 所用有效终端方法的样本电
路。
IOB IOB V
VCCO = 1.5V CCO = 1.5V
Z0 = 50 +
VREF = 1.0V –
ug190_6_37_030206
注:
1. N 必须大于或等于 0.653 且小于或等于 0.68。
HSTL (高速收发器逻辑)
高速收发器逻辑 (HSTL) 标准是 IBM 公司提出的通用高速总线标准 (EIA/JESD8-6)。1.5V
和 1.8V 有四个变化版本 (类)。为了支持高速存储器接口的时钟控制,此标准增加了一个
差分版本。Virtex-5 I/O 支持 1.5V 和 1.8V 的全部四个类以及 I 类和 II 类差分版本。该标准
的这些差分版本需要一个差分放大器输入缓冲器和一个推挽式输出缓冲器。
第 6 章: SelectIO 资源
DIFF_HSTL_ II、DIFF_HSTL_II_18
差分 HSTL II 类组成具有差分接收器的互补单端 HSTL_II 型驱动器对。差分 HSTL II 类专用
于双向链路。差分 HSTL 还可在存储器接口设计中用于差分时钟和 DQS 信号。
DIFF_HSTL_II_DCI、DIFF_HSTL_II_DCI_18
差分 HSTL II 类组成具有差分接收器 (包括片上差分分裂 Thevenin 终端)的互补单端
HSTL_II 型驱动器对。差分 HSTL II 类专用于双向链路。差分 HSTL 还可在存储器接口设计
中用于差分时钟和 DQS 信号。
DIFF_HSTL_I、DIFF_HSTL_I_18
差分 HSTL I 类组成具有差分接收器的互补单端 HSTL_I 型驱动器对。差分 HSTL I 类专用于
单向链路。
DIFF_HSTL_I_DCI、DIFF_HSTL_I_DCI_18
差分 HSTL I 类组成具有差分接收器 (包括片上差分分裂 Thevenin 终端)的互补单端
HSTL_I 型驱动器对。差分 HSTL I 类专用于单向链路。
HSTL I 类
图 6-39 表示 HSTL I 类所用有效终端方法的样本电路。
External Termination
VTT = 0.75V
IOB IOB
HSTL_I HSTL_I
RP = Z0 = 50Ω
Z0 +
VREF = 0.75V –
DCI
IOB IOB
VCCO = 1.5V
Z0 +
VREF = 0.75V –
ug190_6_38_030206
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
第 6 章: SelectIO 资源
差分 HSTL I 类
图 6-40 表示单向终端差分 HSTL I 类 (1.5V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.75V
IOB IOB
DIFF_HSTL_I
50Ω
Z0
DIFF_HSTL_I
+
–
VTT = 0.75V
DIFF_HSTL_I
50Ω
Z0
ug190_6_39_030206
DCI
IOB IOB
VCCO = 1.5V
DIFF_HSTL_I_DCI
2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 1.5V –
DIFF_HSTL_I_DCI
2RVRP = 2Z0= 100Ω
Z0
ug190_6_40_030206
注:
1. 共模电压:VCM = VP - ((VP - VN)/2)
2. 交叉点:VX,此处 VP - VN = 0 (交流耦合)
HSTL II 类
图 6-42 表示单向终端 HSTL II 类 (1.5V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.75V VTT = 0.75V
IOB IOB
HSTL_II HSTL_II
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 0.75V –
DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V
Z0 +
VREF = 0.75V –
ug190_6_41_030206
第 6 章: SelectIO 资源
External Termination
VTT = 0.75V VTT = 0.75V
IOB IOB
HSTL_II HSTL_II
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 0.75V –
VREF = 0.75V
DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V
Z0 +
VREF = 0.75V –
ug190_6_42_030306
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
3. HSTL_II_T_DCI 的驱动器比 HSTL_II_DCI 的弱。
差分 HSTL II 类
图 6-44 表示单向终端差分 HSTL II 类 (1.5V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.75V VTT = 0.75V
IOB IOB
DIFF_HSTL_II
50Ω 50Ω
Z0
DIFF_HSTL_II
+
–
VTT = 0.75V VTT = 0.75V
DIFF_HSTL_II
50Ω 50Ω
Z0
ug190_6_40_030206
第 6 章: SelectIO 资源
DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V
DIFF_HSTL_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 1.5V VCCO = 1.5V –
DIFF_HSTL_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
ug190_6_44_020306
External Termination
IOB VTT = 0.75V IOB
VTT = 0.75V
DIFF_HSTL_II DIFF_HSTL_II
50Ω 50Ω
Z0
DIFF_HSTL_II DIFF_HSTL_II
+ +
– –
ug190_6_45_020306
DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V
DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI
Z0
ug190_6_46_020306
注:
1. 共模电压:VCM = VP - ((VP - VN)/2)
2. 交叉点:VX,此处 VP - VN = 0 (交流耦合)
第 6 章: SelectIO 资源
HSTL III 类
图 6-48 表示 HSTL III 类所用有效终端方法的样本电路。
External Termination
VTT = 1.5V
IOB IOB
HSTL_III HSTL_III
RP = Z0 = 50Ω
Z0 +
VREF = 0.9V –
DCI
IOB IOB
VCCO = 1.5V
Z0 +
VREF = 0.9V –
ug190_6_47_030306
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
HSTL IV 类
图 6-49 表示 HSTL IV 类所用有效单向终端方法的样本电路。
External Termination
VTT = 1.5V VTT = 1.5V
IOB IOB
HSTL_IV HSTL_IV
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 0.9V –
DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V
Z0 +
VREF = 0.9V –
ug190_6_48_030306
第 6 章: SelectIO 资源
External Termination
VTT = 1.5V VTT = 1.5V
IOB IOB
HSTL_IV HSTL_IV
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 0.9V –
VREF = 0.9V
DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V
Z0 +
VREF = 0.9V –
VREF = 0.9V
ug190_6_49_030306
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
Z0 +
VREF = 0.75V –
ug190_6_90_041206
第 6 章: SelectIO 资源
HSTL I 类 (1.8V)
图 6-52 表示 HSTL I 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V
IOB IOB
HSTL_I_18 HSTL_I_18
RP = Z0 = 50Ω
Z0 +
VREF = 0.9V –
DCI
IOB IOB
VCCO = 1.8V
Z0 +
VREF = 0.9V –
ug190_6_50_030306
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
差分 HSTL I 类 (1.8V)
图 6-53 表示单向终端差分 HSTL I 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V
IOB IOB
DIFF_HSTL_I_18
50Ω
Z0
DIFF_HSTL_I_18
VTT = 0.9V +
–
DIFF_HSTL_I_18
50Ω
Z0
ug190_6_51_030306
DCI
IOB IOB
VCCO = 1.8V
DIFF_HSTL_I_DCI_18
2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 1.8V –
DIFF_HSTL_I_DCI_18
2RVRP = 2Z0= 100Ω
Z0
ug190_6_52_030306
第 6 章: SelectIO 资源
注:
1. 共模电压:VCM = VP - ((VP - VN)/2)
2. 交叉点:VX,此处 VP - VN = 0 (交流耦合)
HSTL II 类 (1.8V)
图 6-55 表示单向终端 HSTL II 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V VTT = 0.9V
IOB IOB
HSTL_II_18 HSTL_II_18
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 0.9V –
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0 +
VREF = 0.9V –
ug190_6_53_030306
External Termination
VTT = 0.9V VTT = 0.9V
IOB IOB
HSTL_II_18 HSTL_II_18
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 0.9V –
VREF = 0.9V
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0 +
VREF = 0.9V –
ug190_6_54_030306
第 6 章: SelectIO 资源
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
差分 HSTL II 类 (1.8V)
图 6-57 表示单向终端差分 HSTL II 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V VTT = 0.9V
IOB IOB
DIFF_HSTL_II_18
50Ω 50Ω
Z0
DIFF_HSTL_II_18
Z0
ug190_6_55_030306
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0
+
VCCO = 1.8V VCCO = 1.8V –
DIFF_HSTL_II_DCI_18
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
ug190_6_56_121506
External Termination
IOB IOB
VTT = 0.9V VTT = 0.9V
DIFF_HSTL_II_18 DIFF_HSTL_II_18
50Ω 50Ω
Z0
DIFF_HSTL_II_18 DIFF_HSTL_II_18
+ +
– –
ug190_6_57_030306
第 6 章: SelectIO 资源
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
DIFF_HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
DIFF_HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18
Z0
ug190_6_58_030306
注:
1. 共模电压:VCM = VP - ((VP - VN)/2)
2. 交叉点:VX,此处 VP - VN = 0 (交流耦合)
External Termination
VTT = 1.8V
IOB IOB
HSTL_III_18 HSTL_III_18
RP = Z0 = 50Ω
Z0 +
VREF = 1.1V –
DCI
IOB IOB
VCCO = 1.8V
Z0 +
VREF = 1.1V –
ug190_6_59_030306
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
第 6 章: SelectIO 资源
HSTL IV 类 (1.8V)
图 6-62 表示 HSTL IV 类 (1.8V) 所用有效单向终端方法的样本电路。
External Termination
VTT = 1.8V VTT = 1.8V
IOB IOB
HSTL_IV_18 HSTL_IV_18
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 1.1V –
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0 +
VREF = 1.1V –
ug190_6_60_030306
External Termination
VTT = 1.8V VTT = 1.8V
IOB IOB
HSTL_IV_18 HSTL_IV_18
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
VREF = 1.1V –
VREF = 1.1V
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0 +
VREF = 1.1V –
VREF = 1.1V
ug190_6_61_030306
第 6 章: SelectIO 资源
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
Z0 +
VREF = 0.9V –
ug190_6_91_041206
HSTL I 类 (1.2V)
图 6-65 表示 HSTL I 类 (1.2V) 所用有效终端方法的样本电路,用于单向链路。
External Termination
VTT = 0.6V
IOB IOB
HSTL_I_12 HSTL_I_12
RP = Z0 = 50Ω
Z0 +
VREF = 0.6V –
ug190_6_62_030306
注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
SSTL (线脚系列终端逻辑)
线脚系列终端逻辑 (SSTL) 标准的 2.5V 版本 (SSTL2) 和 1.8V 版本 (SSTL18) 用于通用存储
器总线。SSTL2 由 JEDEC 标准 JESD8-9B 定义; SSTL18 由 JEDEC 标准 JESD8-15 定
义。SSTL2 标准有两个类; I 类用于单向信令,II 类用于双向信令。Virtex-5 I/O 支持单端
信令和差分信令两种标准。此标准需要一个差分放大器输入缓冲器和一个推挽式输出缓冲
器。
第 6 章: SelectIO 资源
SSTL2_I、SSTL18_I
I 类信令用 VTT (VCCO/2) 作为接收器上的 50 Ω 电阻器的并联终端电压。必须将一个串联电
阻器 (在 2.5V 下是 25 Ω,在 1.8V 下是 20 Ω)连接到发射器输出。
SSTL2_I_DCI、SSTL18_I_DCI
DCI 发射器提供内部串联电阻(在 2.5V 下是 25 Ω,在 1.8V 下是 20 Ω)。DCI 接收器有一
个由 VCCO 供电的内部分裂 Thevenin 终端,以建立等效 VTT 电压和终端阻抗。
SSTL2_II、SSTL18_II
II 类信令用 VTT (VCCO/2) 分别作为接收器和发射器上的 50 Ω 电阻器的并联终端电压。对于
单向链路,必须将一个串联电阻器 (在 2.5V 下是 25 Ω,在 1.8V 下是 20 Ω)连接到发射
器输出。对于双向链路,必须将 25 Ω 串联电阻器连接到收发器的发射器。
SSTL2_II_DCI、SSTL18_II_DCI
DCI 电路有一个由 VCCO 供电的分裂 Thevenin 终端和一个内部串联电阻器 (在 2.5V 下是
25 Ω,在 1.8V 下是 20 Ω)。对于单向链路,只为发射器提供内部串联电阻。双向链路的
两个发射器都有内部串联电阻器。
DIFF_SSTL2_I、DIFF_SSTL18_I
差分 SSTL 2.5V 和 1.8V I 类组成具有差分接收器的互补单端 SSTL_I 型驱动器对。
DIFF_SSTL2_I_DCI、DIFF_SSTL18_I_DCI
差分 SSTL 2.5V 和 1.8V I 类组成具有差分接收器 (包括片上差分分裂 Thevenin 终端)的
互补单端 SSTL_II 型驱动器对。
DIFF_SSTL2_II、DIFF_SSTL18_II
差分 SSTL 2.5V 和 1.8V II 类组成具有差分接收器的互补单端 SSTL_II 型驱动器对。对于双
向链路,必须将串联电阻器连接到两个发射器。
DIFF_SSTL2_II_DCI、DIFF_SSTL18_II_DCI
差分 SSTL 2.5V 和 1.8V II 类组成具有差分接收器 (包括片上差分终端)的互补单端
SSTL_II 型驱动器对。DCI 可用于单向和双向链路。
SSTL2_II_T_DCI、SSTL18_II_T_DCI
SSTL2_II_T_DCI 和 SSTL18_II_T_DCI 提供由 VCCO 供电的片上分裂 Thevenin 终端,以便
当这些标准是三态时建立 VCCO/2 的等效终端电压。这两个标准如果不是三态则没有并联
终端,但在调用时具有一个内部串联电阻器 (在 2.5V 下是 25 Ω,在 1.8V 下是 20 Ω)。
SSTL2 I 类 (2.5V)
图 6-66 表示 SSTL2 I 类所用有效终端方法的样本电路。
External Termination
VTT = 1.25V
IOB IOB
SSTL2_I SSTL2_I
RS = 25Ω RP = Z0 = 50Ω
Z0 +
VREF = 1.25V –
DCI
IOB IOB
VCCO = 2.5V
Z0 +
VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω
ug190_6_63_030506
第 6 章: SelectIO 资源
注:
1. N 必须大于或等于 -0.04 且小于或等于 0.04。
2. VIH 的最大值是 VCCO +0.3。
3. VIL 的最小值不依据此公式。
4. 因为 SSTL2_I_DCI 使用可控阻抗驱动器,所以 VOH 与 VOL 不同。
差分 SSTL2 I 类 (2.5V)
图 6-67 表示单向终端差分 SSTL2 I 类 (2.5V) 所用有效终端方法的样本电路。
External Termination
VTT = 1.25V
IOB IOB
DIFF_SSTL2_I
50Ω
RS = 25Ω
Z0
DIFF_SSTL2_I
VTT = 1.25V
+
DIFF_SSTL2_I –
RP = Z0 = 50Ω
RS = 25Ω
Z0
ug190_6_64_030506
DCI
IOB
VCCO = 2.5V
DIFF_SSTL2_I_DCI
2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 2.5V –
DIFF_SSTL2_I_DCI
2RVRP = 2Z0= 100Ω
Z0
ug190_6_65_030506
注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. VID (DC) 指定开关所需的输入差分电压。
3. VIX (AC) 表示差分输入信号必须交叉处的电压。
4. VOX (AC) 表示差分输出信号必须交叉处的电压。
第 6 章: SelectIO 资源
SSTL2 II 类 (2.5V)
图 6-69 表示 SSTL2 II 类所用有效单向终端方法的样本电路。
External Termination
VTT = 1.25V VTT = 1.25V
IOB IOB
SSTL2_II SSTL2_II
RP = Z0 = 50Ω RP = Z0 = 50Ω
Z0 +
25Ω –
VREF = 1.25V
DCI
IOB IOB
VCCO = 2.5V VCCO = 2.5V
Z0 +
VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω
ug190_6_66_030506
External Termination
VTT = 1.25V VTT = 1.25V
IOB IOB
SSTL2_II RP = Z0 = 50Ω SSTL2_II
RS = 25Ω RP = Z0 = 50Ω RS = 25Ω
Z0 +
VREF = 1.25V –
VREF = 1.25V
DCI
IOB IOB
VCCO = 2.5V VCCO = 2.5V
Z0 +
VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω
VREF = 1.25V
R0 = 25Ω
ug190_6_67_030506
第 6 章: SelectIO 资源
注:
1. N 必须大于或等于 -0.04 且小于或等于 0.04。
2. VIH 的最大值是 VCCO +0.3。
3. VIL 的最小值不依据此公式。
4. 因为 SSTL2_I_DCI 使用可控阻抗驱动器,所以 VOH 与 VOL 不同。
差分 SSTL2 II 类 (2.5V)
图 6-71 表示单向终端差分 SSTL2 II 类 (2.5V) 所用有效终端方法的样本电路。
External Termination
VTT = 1.25V VTT = 1.25V
IOB IOB
DIFF_SSTL2_II
50Ω 50Ω
RS = 25Ω
Z0
DIFF_SSTL2_II
VTT = 1.25V VTT = 1.25V
+
DIFF_SSTL2_II –
50Ω 50Ω
RS = 25Ω
Z0
ug190_6_68_030506
DCI
IOB IOB
VCCO = 2.5V VCCO = 2.5V
DIFF_SSTL2_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 2.5V VCCO = 2.5V –
DIFF_SSTL2_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
ug190_6_69_030506
External Termination
IOB VTT = 1.25V VTT = 1.25V IOB
DIFF_SSTL2_II DIFF_SSTL2_II
50Ω 50Ω
25Ω 25Ω
Z0
DIFF_SSTL2_II DIFF_SSTL2_II
+ +
– –
ug190_6_70_071707
第 6 章: SelectIO 资源
DCI
IOB IOB
VCCO = 2.5V VCCO = 2.5V
DIFF_SSTL2_II_DCI DIFF_SSTL2_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
DIFF_SSTL2_II_DCI DIFF_SSTL2_II_DCI
Z0
R0 = 25Ω R0 = 25Ω
ug190_6_71_041106
注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. VID (DC) 指定开关所需的输入差分电压。
3. VIX (AC) 表示差分输入信号必须交叉处的电压。
4. VOX (AC) 表示差分输出信号必须交叉处的电压。
Z0 +
VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω
VREF = 1.25V
R0 = 25Ω
ug190_6_92_041206
第 6 章: SelectIO 资源
SSTL18 I 类 (1.8V)
图 6-76 表示 SSTL I 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V
IOB IOB
SSTL18_I SSTL18_I
50Ω
RS = 20Ω
Z0 +
VREF = 0.9V –
DCI
IOB IOB
VCCO = 1.8V
Z0 +
VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω
ug190_6_72_030506
差分 SSTL I 类 (1.8V)
图 6-77 表示单向终端差分 SSTL I 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V
IOB IOB
DIFF_SSTL18_I 50Ω
RS = 20Ω
Z0
DIFF_SSTL18_I
+
–
VTT = 0.9V
DIFF_SSTL18_I RP = Z0 = 50Ω
RS = 20Ω
Z0
ug190_6_73_030506
DCI
IOB IOB
VCCO = 1.8V
DIFF_SSTL18_I_DCI
2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 1.8V –
DIFF_SSTL18_I_DCI
2RVRP = 2Z0= 100Ω
Z0
ug190_6_74_032206
第 6 章: SelectIO 资源
注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
3. VID (DC) 指定开关所需的输入差分电压。
4. VIX (AC) 表示差分输入信号必须交叉处的电压。
5. VOX (AC) 表示差分输出信号必须交叉处的电压。
SSTL18 II 类 (1.8V)
图 6-79 表示 SSTL II 类 (1.8V) 所用有效单向终端方法的样本电路。
External Termination
VTT = 0.9V VTT = 0.9V
IOB IOB
SSTL18_II SSTL18_II
RP = Z0 = 50Ω RP = Z0 = 50Ω
RS = 20Ω
Z0 +
VREF = 0.9V –
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0 +
VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω
ug190_6_75_030506
第 6 章: SelectIO 资源
External Termination
VTT = 0.9V VTT = 0.9V
IOB IOB
SSTL18_II SSTL18_II
RS = 20Ω RP = Z0 = 50Ω RP = Z0 = 50Ω RS = 20Ω
Z0 +
VREF = 0.9V –
VREF = 0.9V
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
Z0 +
VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω
VREF = 0.9V
R0 = 20Ω
ug190_6_76_071707
注:
1. N 必须大于或等于 -0.04 且小于或等于 0.04。
2. VIH 的最大值是 VCCO +0.3。
3. VIL 的最小值不依据此公式。
4. 因为 SSTL_I_DCI 使用可控阻抗驱动器,所以 VOH 与 VOL 不同。
注:
1. N 必须大于或等于 -0.04 且小于或等于 0.04。
2. VIH 的最大值是 VCCO +0.3。
3. VIL 的最小值不依据此公式。
4. 因为 SSTL_I_DCI 使用可控阻抗驱动器,所以 VOH 与 VOL 不同。
第 6 章: SelectIO 资源
差分 SSTL II 类 (1.8V)
图 6-81 表示单向终端差分 SSTL II 类 (1.8V) 所用有效终端方法的样本电路。
External Termination
VTT = 0.9V VTT = 0.9V
IOB IOB
DIFF_SSTL18_II
50Ω 50Ω
RS = 20Ω
Z0
DIFF_SSTL18_II
+
–
VTT = 0.9V VTT = 0.9V
ug190_6_77_030506
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
DIFF_SSTL18_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
+
VCCO = 1.8V VCCO = 1.8V –
DIFF_SSTL18_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
ug190_6_78_030506
External Termination
IOB IOB
VCCO = 0.9V VCCO = 0.9V
DIFF_SSTL18_II DIFF_SSTL18_II
50Ω 50Ω
20Ω 20Ω
Z0
DIFF_SSTL18_II DIFF_SSTL18_II
+ +
– –
ug190_6_79_030506
DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V
DIFF_SSTL18_II_DCI DIFF_SSTL18_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω
Z0
DIFF_SSTL18_II_DCI DIFF_SSTL18_II_DCI
Z0
R0 = 20Ω R0 = 20Ω
VCCO = 1.8V VCCO = 1.8V
DIFF_SSTL18_II_DCI DIFF_SSTL18_II_DCI
+ 2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω +
– –
ug190_6_80_030506
第 6 章: SelectIO 资源
注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
3. VID (DC) 指定开关所需的输入差分电压。
4. VIX (AC) 表示差分输入信号必须交叉处的电压。
5. VOX (AC) 表示差分输出信号必须交叉处的电压。
Z0 +
VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω
VREF = 0.9V
R0 = 20Ω
ug190_6_93_041206
差分终端:DIFF_TERM 属性
Virtex-5 IOB 提供一个跨接输入差分接收器两端的 100Ω 差分终端。此属性与 LVDS_25、
LVDSEXT_25、HT_25 和 RSDS_25 一起使用。HT_25 取代 Virtex-4 LDT_25 标准。
Virtex-5 器件中的片上输入差分终端完全去除了接收器上的短线,因而可显著改善信号完
整性,具有以下两大优点:
• 比 DCI 终端功耗小
• 不使用 VRP/VRN 引脚 (DCI)
I/O 组的 VCCO 必须连接到 2.5V ±5%,以提供 100 Ω 的有效差分终端。DIFF_TERM 只可
用于输入,而且只能与 VCCO =2.5V 的组电压一起使用。“差分终端属性”(DIFF_TERM) 部
分简要描述了如何使用此功能。
发射器终端
Virtex-5 LVDS 发射器不需要任何外部终端。表 6-36 列出了对应于 Virtex-5 LVDS 电流模
式驱动器的允许属性。Virtex-5 LVDS 电流模式驱动器是真电流源,可以产生适当 (符合
EIA/TIA)的 LVDS 信号。
第 6 章: SelectIO 资源
接收器终端
图 6-86 中的示例是一个差分终端,用于具有 50 Ω 传输线的电路板上的 LVDS 接收器。
External Termination
IOB IOB
Z0 LVDS_25
LVDS_25
+
RDIFF = 2Z0= 100Ω
–
Z0
ug190_6_81_030506
IOB IOB
0 Z0 = 50Ω
LVDS_25 LVDS_25
+
RDIFF= 100Ω
Data in
–
Z0 = 50Ω 0
ug190_6_82_030506
HyperTransport™ 协议 (HT)
HyperTransport 协议 (HT) 又称为闪电数据传输 (LDT),是一种高速接口的低压标准。其基
于差分信令的接口与 LVDS 非常相似。Virtex-5 IOB 配备有 HT 缓冲器。表 6-37 简要描述
了所有可用的 HT I/O 标准和支持的属性。
低摆幅差分信令 (RSDS)
低摆幅差分信令 (RSDS) 与使用差分信令的 LVDS 高速接口相似。RSDS 的实现与 Virtex-5
器件中 LVDS 的实现相似,仅适用于点对点应用。
165Ω INX
ug190_6_83_030506
第 6 章: SelectIO 资源
差分 LVPECL (低压正发射极耦合逻辑)
LVPECL 是一种功能强大的高速接口,普遍见于许多系统应用。Virtex-5 I/O 是按照
EIA/TIA 的 2.5V LVPECL 电气规范设计的,以便于系统和电路板设计。
LVPECL 收发器终端
Virtex-5 LVPECL 发射器和接收器需要图 6-89 所示终端,图示为具有 50 Ω 传输线的电路
板上的 Virtex-5 LVPECL 发射器和接收器。LVPECL 驱动器由两个 LVCMOS 驱动器组成,
与三电阻器输出终端电路组合形成符合 LVPECL 的输出。
70Ω INX
ug190_6_84_030506
第 6 章: SelectIO 资源
第 6 章: SelectIO 资源
注:
1. 关于更多详细信息,请见 “3.3V I/O 设计指导原则”。
2. 差分输入和使用 VREF 的输入均由 VCCAUX 供电。不过,由于存在 VCCO 的箝位二极管,引脚
电压不得超过 VCCO。
3. N/R = 无要求。
4. RSDS_25 的直流指标与 LVDS_25 的相同。有关 LVDS_25 的所有信息都适用于 RSDS_25。
5. I/O 标准是用 IOSTANDARD 属性来选择的。
I/O 标准设计规则
上过冲 / 下过冲
当 VCCO 是 3.75V 时,工作电压为 3.3V 的 I/O 上的下过冲和上过冲电压分别不应超过
-0.3V 到 4.05V 的绝对最大标称值。《Virtex-5 数据手册》中的绝对最大标称值表规定了这
些绝对最大值限制。不过,最大下过冲值直接受 VCCO 值影响。
栅氧化层两侧的电压在任何时候均不得超过 4.05V。请考虑 I/O 作为输入或三态缓冲器的情
形(如图 6-90 所示)。输出 PMOS 晶体管 P0 和 NMOS 晶体管 N0 的栅极实质上是分别接
VCCO 和接地。
不会使 PMOS 晶体管 P0 过载的允许下过冲的量是栅电压减去栅氧化层极限值,即
VCCO - 4.05V。
同理,不会使 NMOS 晶体管 N0 过载的允许绝对最大上过冲的量是栅电压加上栅氧化层极
限值,即地电压 + 4.05V。
Po
Pi
Power External
Clamp Pin
Diode
DP
No
Ground Ni
Clamp
Diode
DG
GND GND
ug190_6_85_030506
第 6 章: SelectIO 资源
源终端与 LVDCI_33
一般而言,为了尽量减少上过冲和下过冲,I/O 驱动器应与电路板迹线阻抗匹配到 ±10% 之
内。源终端常常用于单向接口。DCI 功能在所有用户输出引脚上都具有内置源终端。它可
以补偿电压和 / 或温度波动引起的阻抗变化,并且可与参考电阻器的阻值匹配。假定参考
电阻器阻值与电路板迹线阻抗相同,则驱动器的输出阻抗就会与电路板迹线近似匹配。
LVDCI_33 标准用来为 3.3V I/O 操作启用 DCI 功能。如图 6-91 所示,OBUF_LVDCI_33 基
元用来实现 Virtex-5 输出驱动器中的源终端功能。连接 VRN 的上拉电阻器和连接 VRP 的
下拉电阻器决定着同组中所有输出驱动器的输出阻抗。“Virtex-5 数控阻抗 (DCI)”部分提
供了关于如何使用 DCI 的更多详细信息。
因为 LVDCI_33 标准不提供输入终端,所以必须在驱动器一侧实现源终端。图 6-91 所示
为推荐在外部器件一侧加入的外部源终端电阻器。
为了尽量减少上过冲和下过冲,加到串联终端电阻器 R0 上的 LVTTL/LVCMOS 驱动器的总
阻抗必须与电路板迹线阻抗匹配到 ±10% 之内。建议进行 IBIS 仿真,以计算 R0 所需的准
确值。
VCCO
VCCO = 3.3V
RREF
R0
VRN
Z0
VRP
R0 + RDriver = IBUF_LVDCI_33
Any 3.3V
LVTTL/ RREF
Z0 = 50Ω (typical) I/O Device
LVCMOS Virtex-5 FPGA
Driver
Z0
OBUF_LVDCI_33
External Device ug190_6_86_030506
OBUFT_LVDCI_33
R0
Z0
IBUF_LVDCI
Virtex-5
External Device
FPGA
ug190_6_87_030506
当用 LVDCI_33 标准进行设计时:
• 输出驱动强度和斜率不可编程。输出阻抗参考 VRP 和 VRN 电阻器,而输出电流则由
输出阻抗确定。
• 如果仅使用 LVDCI_33 输入,则不必将 VRP 和 VRN 连接到外部参考电阻器。实现的
焊盘报告不记录正在使用的 VRP 和 VRN。仅当组中存在 LVDCI_33 输出时才需要外部
参考电阻器。
• LVDCI_33 仅兼容 LVTTL 和 LVCMOS 标准。
另外,减慢斜率和 / 或降低电流驱动强度可能显著减少上过冲和下过冲。
《Virtex-5 PC 电路板设计指南》包含更多设计信息,可帮助 PCB 设计人员和信号完整性
工程师。
混合方法
使用 LVDCI_33 标准和将 VCCO 降至 3.0V 都是解决上过冲和下过冲的好办法。也可把两种
办法结合起来。如果 VCCO 已经降至 3.0V,则不必调整参考电阻器 VRP 和 VRN。VRP 和
VRN 的值应始终与电路板迹线阻抗相同。
第 6 章: SelectIO 资源
同步开关输出限制
如果多个输出驱动器同时改变状态,就会发生电源扰动。这种扰动会导致输出驱动器、输
入接收器或内部逻辑发生不需要的瞬时行为。这种扰动通常称为同步开关输出 (SSO) 噪
声。SSO 极限值对可同时开关的 I/O 输出驱动器的数量和类型进行控制,同时保持安全的
SSO 噪声水平。
稀疏锯齿形 (Sparse-Chevron) 封装
Virtex-5 封装采用稀疏锯齿形管脚布置。稀疏锯齿形管脚布置形式是在过去设计基础上的
改进,降低了串扰和 SSO 噪声。这种管脚布置旨在尽量减少 PDS 电感,并且使 I/O 信号回
流通路与其相关 I/O 信号引脚紧密靠拢。
在稀疏锯齿形封装中,I/O 引脚数与参考引脚 (VCCO 和 GND)数的最大比率是 4:1。对于
每四个 I/O 引脚,总是至少有一个参考引脚。
对于不满足 “标称 PCB 指标”中所列标称 PCB 要求的电路板,可以使用 Virtex-5 SSO 计
算器,其中包含针对所有 I/O 标准的全部 SSO 极限值数据。对于混用有限值和 “无限值”
I/O 标准的标称 PCB 中的设计,必须使用 Virtex-5 SSO 计算器,以确保 I/O 的使用不超过
极限值。“全器件 SSO 计算器”部分提供了关于计算器的信息。
与以前系列不同的是,Virtex-5 器件只有 20 I/O 和 40 I/O 两种组规格。因为信号引脚数与
参考引脚数的比率保持不变,所以各 20 I/O 组的 SSO 能力都相同,各 40 I/O 组的能力也
都相同。Virtex-5 器件的 SSO 极限值是按组列出,不是按 VCCO/GND 对设限。
同步开关输出限制
标称 PCB 指标
标称 SSO 表 (表 6-40)包含针对 PCB 参数满足以下要求情形的 SSO 极限值。
注: 对于 PCB 参数不能完全满足下列要求的情况,必须使用 Virtex-5 SSO 计算器根据具体 PCB 的
物理因素确定 SSO 极限值。
PCB 结构
• VCCO 和 GND 过孔直径应不小于 11 毫英寸 (279 µ)。
• 电路板总厚度不得大于 62 毫英寸 (1575 µ)。
信号回流管理
• 迹线必须以相邻 PCB 层上的平面作参考平面。
• 参考平面必须是与输出驱动器关联的 GND 或 VCCO。
• 器件与器件之间的参考层必须在其全长上保持连续。
负载迹线
• 所有 IOB 输出缓冲器必须驱动特征阻抗为 50Ω ± 10% 的可控阻抗迹线。
• 迹线远端的总容性负载 (接收器件的输入电容)不得大于 10 pF。
功率分配系统设计
• 按照 《Virtex-5 PC 电路板设计指南》设计。
♦ 去耦电容器符合器件指导原则
♦ 经过验证的焊盘图形
• VCCO 和 GND 平面相距不得超过 5.0 毫英寸 (152 µ)。
第 6 章: SelectIO 资源
标称 SSO 极限值
表 6-40 提供了关于每组允许最大同步开关输出数的指导原则,以避免地弹效应。
表 6-40: 每组允许最大同步开关输出数
电压 IOSTANDARD 每 20 引脚组极限值 每 40 引脚组极限值
HSTL_I_12 20 40
LVCMOS12_2_slow 20 40
LVCMOS12_4_slow 20 40
LVCMOS12_6_slow 20 40
1.2V LVCMOS12_8_slow 20 40
LVCMOS12_2_fast 20 40
LVCMOS12_4_fast 20 40
LVCMOS12_6_fast 20 40
LVCMOS12_8_fast 20 40
同步开关输出限制
表 6-40: 每组允许最大同步开关输出数 ( 续表 )
电压 IOSTANDARD 每 20 引脚组极限值 每 40 引脚组极限值
LVCMOS15_2_slow 20 40
LVCMOS15_4_slow 20 40
LVCMOS15_6_slow 20 40
LVCMOS15_8_slow 20 40
LVCMOS15_12_slow 20 40
LVCMOS15_16_slow 20 40
LVCMOS15_2_fast 20 40
LVCMOS15_4_fast 20 40
LVCMOS15_6_fast 20 40
LVCMOS15_8_fast 20 40
LVCMOS15_12_fast 20 40
LVCMOS15_16_fast 20 40
LVDCI_15 50 Ω 20 40
1.5V
HSTL_I_15 20 40
HSTL_I_15_DCI 20 40
HSTL_II_15 20 40
HSTL_II_15_DCI 20 40
HSTL_III_15 20 40
HSTL_III_15_DCI 20 40
HSTL_IV_15 12 25
HSTL_IV_15_DCI 12 25
HSLVDCI_15 50 Ω 20 40
DIFF_HSTL_I_15 20 40
DIFF_HSTL_I_15_DCI 20 40
DIFF_HSTL_II_15 20 40
DIFF_HSTL_II_15_DCI 20 40
第 6 章: SelectIO 资源
表 6-40: 每组允许最大同步开关输出数 ( 续表 )
电压 IOSTANDARD 每 20 引脚组极限值 每 40 引脚组极限值
LVCMOS18_2_slow 20 40
LVCMOS18_4_slow 20 40
LVCMOS18_6_slow 20 40
LVCMOS18_8_slow 20 40
LVCMOS18_12_slow 20 40
LVCMOS18_16_slow 20 40
LVCMOS18_2_fast 20 40
LVCMOS18_4_fast 20 40
LVCMOS18_6_fast 20 40
LVCMOS18_8_fast 20 40
LVCMOS18_12_fast 20 40
LVCMOS18_16_fast 20 40
LVDCI_18 50 Ω 20 40
HSTL_I_18 20 40
HSTL_I_18_DCI 20 40
HSTL_II_18 20 40
HSTL_II_18_DCI 20 40
1.8V
HSTL_III_18 17 35
HSTL_III_18_DCI 17 35
HSTL_IV_18 10 20
HSTL_IV_18_DCI 10 20
SSTL18_I 20 40
SSTL18_I_DCI 20 40
SSTL18_II 20 40
SSTL18_II_DCI 20 40
HSLVDCI_18 50 Ω 20 40
DIFF_HSTL_I_18 20 40
DIFF_HSTL_I_18_DCI 20 40
DIFF_HSTL_II_18 20 40
DIFF_HSTL_II_18_DCI 20 40
DIFF_SSTL18_I 20 40
DIFF_SSTL18_I_DCI 20 40
DIFF_SSTL18_II 20 40
DIFF_SSTL18_II_DCI 20 40
同步开关输出限制
表 6-40: 每组允许最大同步开关输出数 ( 续表 )
电压 IOSTANDARD 每 20 引脚组极限值 每 40 引脚组极限值
LVCMOS25_2_slow 20 40
LVCMOS25_4_slow 20 40
LVCMOS25_6_slow 20 40
LVCMOS25_8_slow 20 40
LVCMOS25_12_slow 20 40
LVCMOS25_16_slow 20 40
LVCMOS25_24_slow 20 40
LVCMOS25_2_fast 20 40
LVCMOS25_4_fast 20 40
LVCMOS25_6_fast 20 40
LVCMOS25_8_fast 20 40
LVCMOS25_12_fast 20 40
LVCMOS25_16_fast 20 40
LVCMOS25_24_fast 15 30
LVDCI_25 50 Ω 20 40
2.5V
SSTL2_I 20 40
SSTL2_I_DCI 20 40
SSTL2_II 20 40
SSTL2_II_DCI 20 40
HSLVDCI_25 50 Ω 20 40
DIFF_SSTL_I 20 40
DIFF_SSTL_I_DCI 20 40
DIFF_SSTL_II 20 40
DIFF_SSTL_II_DCI 20 40
LVPECL_25 20 40
BLVDS_25 20 40
LVDS_25 20 40
LVDSEXT_25 20 40
RSDS_25 20 40
HT_25 20 40
第 6 章: SelectIO 资源
表 6-40: 每组允许最大同步开关输出数 ( 续表 )
电压 IOSTANDARD 每 20 引脚组极限值 每 40 引脚组极限值
LVCMOS33_2_slow 20 40
LVCMOS33_4_slow 20 40
LVCMOS33_6_slow 20 40
LVCMOS33_8_slow 20 40
LVCMOS33_12_slow 20 40
LVCMOS33_16_slow 20 40
LVCMOS33_24_slow 20 40
LVCMOS33_2_fast 20 40
LVCMOS33_4_fast 20 40
LVCMOS33_6_fast 20 40
LVCMOS33_8_fast 20 40
LVCMOS33_12_fast 20 40
LVCMOS33_16_fast 20 40
LVCMOS33_24_fast 15 30
LVTTL_2_slow 20 40
3.3V LVTTL_4_slow 20 40
LVTTL_6_slow 20 40
LVTTL_8_slow 20 40
LVTTL_12_slow 20 40
LVTTL_16_slow 20 40
LVTTL_24_slow 20 40
LVTTL_2_fast 20 40
LVTTL_4_fast 20 40
LVTTL_6_fast 20 40
LVTTL_8_fast 20 40
LVTTL_12_fast 20 40
LVTTL_16_fast 20 40
LVTTL_24_fast 15 30
PCI33_3 20 40
PCI66_3 20 40
PCIX 20 40
同步开关输出限制
表 6-40: 每组允许最大同步开关输出数 ( 续表 )
电压 IOSTANDARD 每 20 引脚组极限值 每 40 引脚组极限值
GTL 12 25
GTL_DCI 12 25
GTLP 12 25
3.3V
GTLP_DCI 12 25
LVDCI_25 50 Ω 20 40
HSLVDCI_33 50 Ω 20 40
SSO 噪声的电气原理
SSO 噪声可用地弹或 VCC 反弹的形式表示电源扰动。GND 和 VCC 反弹是晶片供电电压
(晶片 GND 轨或晶片 VCC 轨)对相关的 PCB 供电电压(PCB GND 轨或 PCB VCC 轨)的
偏差。晶片供电相对 PCB 供电的偏差源于供电瞬时电流在电源系统的寄生回路上产生的感
应电压。瞬时电流的一个起因是输出驱动器开关事件。众多输出开关事件同时发生会导致
较大的瞬时电流,从而产生较高的感应电压 (地弹、VCC 反弹或塌轨)。晶片、封装和
PCB 中都存在相应的瞬时电流通路,所以必须考虑来自这三者的寄生效应。这些寄生效应
的值越大,瞬时电流 (电源扰动)感应的电压就越高。
VCC 反弹影响稳定的高输出。地弹影响稳定的低输出。地弹还影响按某些 I/O 标准配置的
输入,因为这些输入是通过将输入信号与参考晶片地端的阈值进行比较来解释输入信号
(这与输入阈值参考 VREF 电压的 I/O 标准不同)。如果晶片电压扰动超过接口的瞬时噪声
容限,就会将无变化的输入或输出错误地解释为有变化。
SSO 噪声还表现为密集 I/O 之间串扰的形式。Virtex-5 器件的稀疏锯齿形管脚分配可将管
脚分配区中的串扰降到最低。
寄生系数降额法 (PFDM)
本部分介绍一种评估设计是否在 SSO 极限值范围内的方法,当考虑用户特定系统的具体电
气参数时可以使用这种方法。
表 6-40 中的 SSO 极限值是以系统寄生系数的标称值为假定条件。这些系数分为以下三个
电气参数组:
• PCB PDS 寄生电感 (标称每过孔 1 nH)
• 最大允许电源系统扰动电压 (标称 600 mV)
• 容性负载 (标称每负载 10 pF)
当设计的电气参数与标称值有差异时,系统的 SSO 极限值就会变化。差异的程度决定着设
计的新的有效极限值。我们将一个称为 “SSO 容限系数”的数字作为单一降额系数,用来
考虑全部三组系统电气参数的综合影响。
第 6 章: SelectIO 资源
同步开关输出限制
SSO 的加权平均计算
本部分讲述 SSO 的计算,其中将组中所有 I/O 的 SSO 组分综合到一个数字中。
各组 SSO 的计算方法是求出组中各 I/O 标准的 SSO 组分之和。SSO 组分是任一组中的任
一 I/O 标准充分使用时所占的百分比。对于各 I/O 标准的驱动器,计算如下:
SSO 组分 (第 n 个 I/O 组)= (驱动器数量)/ (组 SSO 极限值)
对于具有多 I/O 标准驱动器的组,SSO 的计算是:
Bank SSO = ∑ SSO Contribution ( n )
( 1 to n )
第 6 章: SelectIO 资源
其他 SSO 假定条件
LVDCI 和 HSLVDCI 驱动器
对于可控阻抗 DCI I/O 标准的所有极限值,均假定输出阻抗为 50 Ω。对于较高的参考电阻
器 (RR) 阻值,需要的驱动强度较小,SSO 极限值呈线性增大。对于具有不同参考电阻器
的可控阻抗驱动器,请使用以下公式计算 SSO 极限值:
User RR
User SSO = ⎛ ------------------------ Ω⎞ ( SSO Limit for Ω )
⎝ 50Ω ⎠
示例
设计人员使用带有 65 Ω 参考电阻器的 LVDCI_18 驱动器。首先,从表 6-40 中查出
LVDCI_18 驱动器对应 50 Ω 阻抗的 SSO 极限值。LVDCI_18 驱动器对应 50 Ω 的 SSO 极限
值是每 VCCO/GND 引脚对 11 个 SSO。所以,LVDCI_18 对应 65 Ω 的 SSO 极限值是:
LVDCI_18 对应 65 Ω 的 SSO 极限值 = ((65 Ω)/50 Ω) × 11 = 14.3
组0
所有器件中的组 0 都只包含配置和专用信号。因为组 0 中没有用户 I/O,所以不必对此组进
行 SSO 分析。
第7章
SelectIO 逻辑资源
简介
本章讲述位于第 6 章 “SelectIO 资源”中 I/O 驱动器与接收器之后的逻辑。
Virtex-5 FPGA 包含 Virtex-II/Virtex-II Pro FPGA 的所有基本 I/O 逻辑资源,其中包括:
• 组合输入 / 输出
• 三态输出控制
• 寄存输入 / 输出
• 寄存三态输出控制
• 双倍数据速率 (DDR) 输入 / 输出
• DDR 输出三态控制
另外,Virtex-5 FPGA 可实现以下架构功能,Virtex-4 FPGA 也支持这些功能:
• IODELAY 提供对高分辨率可调整延迟单元的用户控制
• SAME_EDGE 输出 DDR 模式
• SAME_EDGE 和 SAME_EDGE_PIPELINED 输入 DDR 模式
第 7 章: SelectIO 逻辑资源
ILOGIC 资源
图 7-1 所示为 ILOGIC 模块。
D
O
DDLY
D Q1 Q1
Q2 Q2
CE1
CE
CLK
CK
SR REV
SR
REV
ug190_7_01_050906
ILOGIC 可支持以下操作:
• 边沿触发 D 型触发器
• IDDR 模式 (OPPOSITE_EDGE、SAME_EDGE 或 SAME_EDGE_PIPELINED)。关于
输入 DDR 的进一步讨论,请见第 311 页的 “输入 DDR 概述 (IDDR)”。
• 电平敏感型锁存器
• 异步 / 组合
ILOGIC 资源
组合输入通路
组合输入通路用来创建输入驱动器与 FPGA 内部资源之间的直接连接。当有以下情况时,
此通路由软件自动使用:
1. 输入数据与 FPGA 架构中的逻辑资源之间存在直接 (非寄存)连接。
2. “将 I/O 寄存器 / 锁存器合并到 IOB 中”设置为 OFF。
输入 DDR 概述 (IDDR)
Virtex-5 器件的 ILOGIC 中有专用寄存器来实现输入双倍数据速率 (DDR) 寄存器。可以通
过例化 IDDR 基元来使用此功能。
IDDR 基元只有一个时钟输入。下降沿数据由输入时钟的反转版本 (在芯片上完成该反转)
进行时钟控制。所有输入 I/O 模块的时钟均为完全多路复用,即 ILOGIC 与 OLOGIC 模块
不共用时钟。IDDR 基元支持以下操作模式:
• OPPOSITE_EDGE 模式
• SAME_EDGE 模式
• SAME_EDGE_PIPELINED 模式
SAME_EDGE 和 SAME_EDGE_PIPELINED 模式与 Virtex-4 架构的相同。这些模式允许设
计人员在 ILOGIC 模块内部将下降沿数据转移到上升沿时钟域,以节省 CLB 和时钟资源并
提高性能。这些模式是用 DDR_CLK_EDGE 属性实现的。以下部分详述各模式。
OPPOSITE_EDGE 模式
OPPOSITE_EDGE 模式是在 ILOGIC 中通过单输入实现的传统输入 DDR 解决方案。数据
在时钟上升沿上通过输出 Q1 以及在时钟下降沿上通过输出 Q2 送至内部资源。这种结构与
Virtex-II、Virtex-II Pro 和 Virtex-4 的实现相似。图 7-2 所示为使用 OPPOSITE_EDGE 模
式时的输入 DDR 时序图。
第 7 章: SelectIO 逻辑资源
CE
D D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D12A D13A
SAME_EDGE 模式
在 SAME_EDGE 模式下,数据在同一时钟沿上送至 FPGA 内部资源。不过,一对数据之间
要有一个时钟周期的间隔。这种结构与 Virtex-II、Virtex-II Pro 和 Virtex-4 的实现相似。
图 7-3 所示为使用 SAME_EDGE 模式时的输入 DDR 时序图。在此时序图中,输出对 Q1
和 Q2 不再是 (0) 和 (1)。取而代之的是输送的第一对为 Q1 分别与 Q2 (0) 和 ( 无用数据 ),
后跟下一时钟周期的输出对 (1) 和 (2)。
CE
D D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A
SAME_EDGE_PIPELINED 模式
在 SAME_EDGE_PIPELINED 模式下,数据在同一时钟沿上送至 FPGA 内部资源。
与 SAME_EDGE 模式不同的是,数据对没有一个时钟周期的间隔。但是,需要增加一个时
钟延迟,以消除 SAME_EDGE 模式的间隔效果。图 7-4 所示为使用
SAME_EDGE_PIPELINED 模式时的输入 DDR 时序图。输出对 Q1 和 Q2 同时送至 FPGA
内部资源。
ILOGIC 资源
CE
D D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D12A D13A
ug190_7_04_041206
输入 DDR 基元 (IDDR)
图 7-5 所示为 IDDR 基元的框图。表 7-3 列出了 IDDR 端口信号。表 7-4 所示为 IDDR 基
元的各种可用属性和默认值。
D Q1
IDDR Q2
CE
C
R
ug190_7_05_062207
第 7 章: SelectIO 逻辑资源
S
设置 同步 / 异步设置引脚。设置置为 High 有效。
表 7-4: IDDR 属性
属性名称 描述 可能值
DDR_CLK_EDGE 设置相对于时钟沿的 IDDR 操作模 OPPOSITE_EDGE (默认)、
式 SAME_EDGE、
SAME_EDGE_PIPELINED
INIT_Q1 设置 Q1 端口的初始值 0 (默认)、1
INIT_Q2 设置 Q2 端口的初始值 0 (默认)、1
SRTYPE 相对于时钟 (C) 的设置 / 复位类型 ASYNC (默认)、SYNC
ILOGIC 时序模型
本部分讲述 ILOGIC 模块中各种资源的相关时序。
ILOGIC 资源
ILOGIC 时序特性
图 7-6 所示为 ILOGIC 寄存器时序。当使用 IDELAY 时,用 TIDOCKD 取代 TIDOCK。
1 2 3 4 5
CLK
TIDOCK
D
TICE1CK
CE1
TISRCK
SR
TICKQ TICKQ
Q1
ug190_7_06_041206
时钟事件 1
• 在时钟事件 1 之前的时间 TICE1CK 处,输入时钟使能信号在输入寄存器的 CE1 输入上
变为高有效,允许输入数据使用输入寄存器。
• 在时钟事件 1 之前的时间 TIDOCK 处,输入信号在输入寄存器的 D 输入上变为高有效
;在时钟事件 1 之后的时间 TICKQ 处,输入信号反映在输入寄存器的 Q1 输出上。
时钟事件 4
• 在时钟事件 4 之前的时间 TISRCK 处,SR 信号 (在本例中配置为同步复位)变为高有
效,以复位输入寄存器;在时钟事件 4 之后的时间 TICKQ 处,该信号反映在 IOB 的
Q1 输出上。
ILOGIC 时序特性,DDR
图 7-7 所示为 IDDR 模式下的 ILOGIC 时序特性。当使用 IDELAY 时,用 TIDOCKD 取代
TIDOCK。所示示例为 OPPOSITE_EDGE 模式下的 IDDR。对于其他模式,按第 313 页的图
7-4 所示增加相应延迟。
第 7 章: SelectIO 逻辑资源
1 2 3 4 5 6 7 8 9 10 11
CLK
TIDOCK TIDOCK
D
TICE1CK
CE1
TISRCK
SR
(Reset)
TICKQ TICKQ
Q1
TICKQ TICKQ
Q2
UG190_7_07_041206
时钟事件 2
• 在时钟事件 2 之前的时间 TIDOCK 处 (CLK 的下降沿),输入信号在两个寄存器的 D
输入上变为低有效;在时钟事件 2 之后的时间 TICKQ 处,该信号反映在输入寄存器 2
的 Q2 输出上 (在本例中无变化)。
时钟事件 9
• 在时钟事件 9 之前的时间 TISRCK 处,SR 信号 (在本例中配置为同步复位)变为高有
效,以在时钟事件 9 之后的时间 TICKQ 处复位 Q1,并且在时钟事件 10 之后的时间
TICKQ 处复位 Q2。
输入 / 输出延迟单元 (IODELAY)
输入 / 输出延迟单元 (IODELAY)
每个 I/O 模块包含一个可编程绝对延迟单元,称为 IODELAY。IODELAY 可以连接到
ILOGIC/ISERDES 或 OLOGIC/OSERDES 模块,也可同时连接到这两个模块。IODELAY 是
具有 64 个 tap 的环绕延迟单元,具有标定的 tap 分辨率。请见 《Virtex-5 数据手册》。
IODELAY 可用于组合输入通路、寄存输入通路、组合输出通路或寄存输出通路,还可以在
内部资源中直接使用。IODELAY 允许各输入信号有独立的延迟。通过在 《Virtex-5 数据
手册》中规定的范围内选择 IDELAYCTRL 参考时钟,可以改变 tap 延迟分辨率。IODELAY
资源可用作 IDELAY、ODELAY 或组合延迟。
当用作 IDELAY 时,数据从 IBUF 或内部资源输入,然后输出到 ILOGIC/ISERDES。有三种
可用操作模式:
• 零保持时间延迟模式 (IDELAY_TYPE = DEFAULT)
这种操作模式允许向后兼容,以使用 Virtex-II、Virtex-II Pro 和 Virtex-4 器件中的零保
持时间延迟功能的设计。当在没有 DCM 的情况下使用全局时钟采集数据 (引脚到引
脚参数)时,用这种延迟单元提供非正保持时间。在这种模式下使用时,不需要例化
IDELAYCTRL 基元。有关更多详情,请见 “IDELAYCTRL 用法及设计指导原则”。
• 固定延迟模式 (IDELAY_TYPE = FIXED)
在固定延迟模式下,配置时将延迟值预设置成由属性 IDELAY_VALUE 确定的 tap 数。
此值配置后不可更改。在这种模式下使用时,必须例化 IDELAYCTRL 基元。有关更多
详情,请见 “IDELAYCTRL 用法及设计指导原则”。
• 可变延迟模式 (IDELAY_TYPE = VARIABLE)
在可变延迟模式下,可以在配置后通过操控控制信号 CE 和 INC 来改变延迟值。在这
种模式下使用时,必须例化 IDELAYCTRL 基元。有关更多详情,请见 “IDELAYCTRL
用法及设计指导原则”。
第 7 章: SelectIO 逻辑资源
输入 / 输出延迟单元 (IODELAY)
IODELAY 基元
图 7-8 所示为 IODELAY 基元。
IODELAY
ODATAIN DATAOUT
IDATAIN
T
INC
RST
CE
DATAIN
C
ug190_7_08_041106
图 7-8: IODELAY 基元
IODELAY 端口
来自 IOB 的数据输入 - IDATAIN
IDATAIN 输入由相应的 IOB 驱动。在 IDELAY 模式下,可以将数据驱动到
ILOGIC/ISERDES 模块或直接驱动到 FPGA 内部资源中,也可以通过 DATAOUT 端口按照
由 IDELAY_VALUE 设置的延迟将数据同时驱动到这二者。
第 7 章: SelectIO 逻辑资源
数据输出 - DATAOUT
来自三个数据输入端口的延迟数据。DATAOUT 连接到内部资源 (IDELAY 模式)或 IOB
(ODELAY 模式),或同时连接到这二者 (双向延迟模式)。如果在双向延迟模式下使用,
则 T 端口在 IDATAIN 和 ODATAIN 通路之间动态切换,根据来自 OLOGIC 模块的三态信号
T 所指示的方向交替提供输入 / 输入延迟。
三态输入 - T
这是三态输入控制端口。对于双向操作,T 引脚信号还控制 OBUFT 的 T 引脚。
时钟输入 - C
对 IODELAY 基元的所有控制输入 (RST、CE 和 INC)均与时钟输入 (C) 同步。当
IODELAY 配置成可变模式时,必须将一个时钟连接到此端口。C 可以在芯片内反转。
模块复位 - RST
IODELAY 复位信号 RST 将延迟单元复位到由 IDELAY_VALUE 或 ODELAY_VALUE 属性设
置的值。如果未指定这些属性,则假定该值为零。RST 信号是高有效复位,与输入时钟信
号 (C) 同步。
表 7-8 概述了控制引脚。
表 7-8: 控制引脚描述
引脚 类型 值 描述
INC 输入 1 Tap 延迟的递增 / 递减数
CE 输入 1 启用递增 / 递减功能
将延迟单元复位到预设定的值。如果没有预设定值则复
RST 输入 1
位到 0
递增 / 递减信号 – CE、INC
递增 / 递减由使能信号 (CE) 控制。当 IDELAY_TYPE = VARIABLE 时,此接口只可用于
IDELAY 模式。
只要 CE 保持为 High,IDELAY 就会每时钟 (C) 周期按 IDELAYRESOLUTION 递增或递减。
INC 的状态确定 IDELAY 是递增还是递减:INC = 1 为递增,INC = 0 为递减,与时钟 (C)
同步。如果 CE 为 Low,则通过 IDELAY 的延迟不变,与 INC 的状态无关。
输入 / 输出延迟单元 (IODELAY)
表 7-9: 递增 / 递减操作
操作 RST CE INC
复位到 IDELAY_VALUE 1 x x
递增 tap 数 0 1 1
递减 tap 数 0 1 0
无变化 0 0 x
注:
1. RST 优先于 CE 和 INC。
IODELAY 属性
表 7-10 概述了 IODELAY 属性。
表 7-10: IODELAY 属性概述
属性 值 默认值 描述
IDELAY_TYPE 字符串: DEFAULT 设置 tap 延迟线的类型。默认延迟用于保证零保
DEFAULT、 持时间,固定延迟用于设置静态延迟值,可变延
FIXED 或 迟用于动态调整延迟值。
VARIABLE
IDELAY_VALUE 整数:0 到 63 0 指定固定模式下的固定延迟 tap 数或可变模式下
的初始 tap 数 (输入通路)。
ODELAY_VALUE 整数:0 到 63 0 指定固定延迟 tap 数 (输出通路)。
HIGH_PERFORMANCE_MODE 布尔值: FALSE 当设置为 TRUE 时,此属性减少输出抖动。
FALSE、TRUE
SIGNAL_PATTERN 字符串:DATA、 DATA
CLOCK
时钟和数据信号具有不同的电气特征曲线,因此
在 IODELAY 链中累计的抖动量不同。通过设置
此属性,用户可以令时序分析器在计算时序时计
入相应的抖动。时钟信号具有周期性,没有 1 或
0 的连续长序列;而数据具有随机性,可以有 1
和 0 的长短序列。
第 7 章: SelectIO 逻辑资源
IDELAY_TYPE 属性
IDELAY_TYPE 属性设置所用延迟的类型。此属性的值是 DEFAULT、FIXED 和
VARIABLE。当设置成 DEFAULT 时,选择零保持时间延迟单元。当在没有 DCM 的情况下
使用全局时钟采集数据 (引脚到引脚参数)时,用这种延迟单元提供非正保持时间。
当设置成 FIXED 时,tap 延迟值固定为由 IDELAY_VALUE 属性设置确定的 tap 数。此值是
预设置的,配置后不可更改。
当设置成 VARIABLE 时,选择可变 tap 延迟单元。Tap 延迟可以通过设置 CE = 1 和 INC =
1 递增,或通过设置 CE = 1 和 INC = 0 递减。递增 / 递减操作与输入时钟信号 C 同步。
IDELAY_VALUE 属性
IDELAY_VALUE 属性指定初始 tap 延迟数。可能的值是 0 到 63 之间的任意整数。默认值
是零。当 tap 延迟复位时,tap 延迟值恢复到 IDELAY_VALUE。在可变模式下,此属性确
定延迟线的初始设置。
ODELAY_VALUE 属性
ODELAY_VALUE 指定 tap 延迟数。可能的值是 0 到 63 之间的任意整数。默认值是零。当
tap 延迟复位时,tap 延迟值恢复到 ODELAY_VALUE。
HIGH_PERFORMANCE_MODE 属性
当设置为 TRUE 时,此属性减少输出抖动。输出抖动减少导致 IODELAY 单元的功率耗散
略有上升。
SIGNAL_PATTERN 属性
SIGNAL_PATTERN 属性致使时序分析器计入数据或时钟通路中的相应延迟链抖动量。
输入 / 输出延迟单元 (IODELAY)
IODELAY 时序
表 7-11 所示为 IODELAY 开关特性。
1 2 3
RST
CE
INC
O Tap 0 Tap 1
UG190_7_09_082107
时钟事件 1
在 C 的上升沿上检测到复位,致使输出 O 选择 tap 0 为 64 tap 链的输出 (假设
IDELAY_VALUE = 0)。
时钟事件 2
在 C 的上升沿上检测到 CE 和 INC 上的脉冲。这说明是递增操作。输出从 tap 0 到 tap 1 无
毛刺变化。请见 “递增 / 递减操作后的稳定性”。
时钟事件 3
至此,输出已经稳定在 tap 1,因而完成了递增操作。输出无限期地保持在 tap 1,直到
RST、CE 或 INC 引脚上有进一步活动。
第 7 章: SelectIO 逻辑资源
递增 / 递减操作后的稳定性
图 7-9 显示了输出从一个 tap 向另一个变化时的不稳定时段。显然,当 tap 0 处的数据值
与 tap 1 处的数据值不同时,输出必须改变状态。然而,如果 tap 0 和 tap 1 处的数据值相
同 (例如两者都是 0 或 1),则从 tap 0 到 tap 1 的过渡就不会在输出上造成毛刺或混乱。
这一概念可以通过设想 IODELAY 的 tap 链中的接收器数据信号来理解。如果 tap 0 和 tap
1 都靠近接收器数据眼的中心,则在 tap 0 处采样的数据应与在 tap 1 处采样的数据没有区
别。在这种情况下,从 tap 0 到 tap 1 的过渡不会引起输出变化。为了确保这种情况,
IODELAY 的递增 / 递减操作设计成了无毛刺操作。
在活动用户数据通过 IODELAY 单元时,用户可以实时动态调整 IODELAY 的 tap 设置,不
会扰乱活动用户数据。
当在时钟信号通路中使用 IODELAY 单元时,也适用无毛刺行为。调整 tap 设置不会在输出
上引起毛刺或混乱。可以调整时钟通路中 IODELAY 单元的 tap 设置,不会扰乱可能正在该
时钟上运行的状态机。
固定延迟模式
《库指南》包括的模板显示了如何在 tap 设置为 31 的固定延迟模式下例化 IODELAY 模块。
在此模式下操作时,还必须例化 IDELAYCTRL。请见第 330 页的 “IDELAYCTRL 概述”。
可变延迟模式
《库指南》显示了如何在可变延迟模式下例化 IODELAY 模块。在此模式下操作时,还必须
例化 IDELAYCTRL。请见第 330 页的 “IDELAYCTRL 概述”。
IODELAY 转换时间使用模型
当在双向模式下使用 IODELAY 时,需要考虑转换时间。图 7-10 所示为 Virtex-5 IOB 中
IODELAY 的简化框图,该框图适用于一次使用双向 IODELAY 功能。
输入 / 输出延迟单元 (IODELAY)
ODDR TSCONTROL
T1
T2
CLK
ODDR ODATAIN
D1
D2
DATAOUT IOB
OBUF PAD
IODELAY T
IDDR ODATAIN
Delay
Q1 Chain IDATAIN
Q2
MUX E IBUF
CLK
ODELAY_VALUE
IDELAY_VALUE
MUX F
IODELAY_01_081407
第 7 章: SelectIO 逻辑资源
IODELAY #(
.DELAY_SRC ("IO"),
.IDELAY_TYPE ("FIXED"),
.IDELAY_VALUE (12),
.ODELAY_VALUE (12),
.REFCLK_FREQUENCY (200.0)
)IODELAY_INST (
.C(1'b0),
.CE(1'b0),
.DATAIN(1'b0),
.IDATAIN(IDATAIN),
.INC(1'b0),
.ODATAIN(ODATAIN),
.RST(1'b0),
.T(TSCONTROL),
.DATAOUT(DATAOUT)
);
ODDR #(
.DDR_CLK_EDGE ("SAME_EDGE"),
.INIT (1'b0),
.SRTYPE ("SYNC")
)ODDR_INST (
.C(clk),
.CE(1'b1),
.D1(D1),
.D2(D2),
.R(1'b0),
.S(1'b0),
.Q(ODATAIN)
);
ODDR #(
.DDR_CLK_EDGE ("SAME_EDGE"),
.INIT (1'b0),
.SRTYPE ("SYNC")
)TRI_ODDR_INST (
.C(clk),
.CE(1'b1),
.D1(T1),
.D2(T2),
.R(1'b0),
.S(1'b0),
.Q(TSCONTROL)
);
IDELAYCTRL IDELAYCTRL_INST (
.REFCLK(refclk),
.RST(1'b0),
.RDY()
);
输入 / 输出延迟单元 (IODELAY)
ODDR TSCONTROL
T1
T2
CLK
ODDR ODATAIN
D1
D2
DATAOUT IOB
OBUF PAD
IODELAY T
IDDR ODATAIN
Delay
Q1 Chain IDATAIN
Q2
MUX E IBUF
CLK
ODELAY_VALUE
IDELAY_VALUE
MUX F
IODELAY_02_082107
第 7 章: SelectIO 逻辑资源
ODDR CLK
TOCKQ
TSCONTROL
TIOTP
TIODDO_T
ODDR CLK to 3-state
deassertion time.
ODDR CLK to
IDELAY ready
IDDR CLK
IODELAY_03_082107
输入 / 输出延迟单元 (IODELAY)
ODDR TSCONTROL
T1
T2
CLK
ODDR ODATAIN
D1
D2
DATAOUT IOB
OBUF PAD
IODELAY T
IDDR ODATAIN
Delay
Q1 Chain IDATAIN
Q2
MUX E IBUF
CLK
ODELAY_VALUE
IDELAY_VALUE
MUX F
IODELAY_04_082107
第 7 章: SelectIO 逻辑资源
Clock-to-Out with
ODELAY_VALUE = 0
Clock-to-Out with
ODELAY_VALUE = 63
TOCKQ + TIODDO_ODATAIN
ODDR CLK
TIOTP
TSCONTROL TOCKQ
Previous PAD
PAD
input value
IDELAYCTRL 概述
如果用设置为 FIXED 或 VARIABLE 的 IOBDELAY_TYPE 属性例化 IODELAY 或 ISERDES
基元,则必须在代码中例化 IDELAYCTRL 模块。IDELAYCTRL 模块在其区域内连续标定各
延迟单元 (IODELAY) (见第 333 页的图 7-17),以减少随工艺、电压和温度变化的影响。
IDELAYCTRL 模块使用用户提供的 REFCLK 标定 IODELAY。
输入 / 输出延迟单元 (IODELAY)
IDELAYCTRL 基元
图 7-15 所示为 IDELAYCTRL 基元。
IDELAYCTRL
REFCLK RDY
RST
ug190_7_10_041206
图 7-15: IDELAYCTRL 基元
IDELAYCTRL 端口
RST - 复位
复位输入引脚 (RST) 是 High 有效异步复位。IDELAYCTRL 在配置 (以及 REFCLK 信号稳
定)之后必须复位,以确保 IODELAY 操作正常。要求复位脉冲宽度为 TIDELAYCTRL_RPW。
IDELAYCTRL 在配置后必须复位。
REFCLK - 参考时钟
参考时钟 (REFCLK) 提供对 IDELAYCTRL 的时间参考,以标定同区域中的所有 IODELAY
模块。此时钟必须由全局时钟缓冲器 (BUFGCTRL) 驱动。REFCLK 必须是
FIDELAYCTRL_REF ± 指定的 ppm 容差 (IDELAYCTRL_REF_PRECISION),以保证指定的
IODELAY 分辨率 (TIDELAYRESOLUTION)。REFCLK 可以由用户提供的信号源、PLL 或 DCM
直接提供,必须在全局时钟缓冲器上传输。
RDY - 就绪
就绪 (RDY) 信号指示特定区域内的 IODELAY 模块标定完毕。如果 REFCLK 在一个或几个
时钟周期内保持为 High 或 Low,则 RDY 信号置为无效。如果 RDY 置为 Low 无效,则
IDELAYCTRL 模块必须复位。实现工具允许不连接 / 忽略 RDY。图 7-16 所示为 RDY 与
RST 之间的时序关系。
第 7 章: SelectIO 逻辑资源
IDELAYCTRL 时序
表 7-12 所示为 IDELAYCTRL 开关特性。
REFCLK
RST
TIDELAYCTRLCO_RDY
RDY
ug190_7_11_041206
IDELAYCTRL 位置
每个时钟区域的每个 I/O 列中都有 IDELAYCTRL 模块。一个 IDELAYCTRL 模块标定其时钟
区域内的所有 IDELAY 模块。有关时钟区域的定义,请见第 1 章中的 “全局和区域时
钟”。
图 7-17 所示为各 IDELAYCTRL 模块的相对位置。
输入 / 输出延迟单元 (IODELAY)
1 Clock Region
IDELAYCTRL
Configuration
CMT
ug190_7_12_041206
IDELAYCTRL 用法及设计指导原则
本部分讲述 Virtex-5 IDELAYCTRL 模块的使用、设计指导原则和推荐用法。
第 7 章: SelectIO 逻辑资源
Instantiated by user
REFCLK RDY
IDELAYCTRL
RDY signal ignored
RST
. . Replicated for .
. . all IDELAYCTRL .
sites
. . .
REFCLK RDY
IDELAYCTRL
RST
Auto-generated by
mapper tool
ug190_7_13_041206
输入 / 输出延迟单元 (IODELAY)
Instantiated by user
. . Replicated for
.
. . all IDELAYCTRL .
. . sites .
REFCLK RDY
IDELAYCTRL Auto-generated by
RST
mapper tool
ug190_7_14_041306
位置约束
每个 IDELAYCTRL 模块都有 XY 位置坐标 (X:行,Y:列)。为了约束位置,
IDELAYCTRL 实例可以附带 LOC 属性。IDELAYCTRL 位置坐标的命名规则与用来命名
CLB 位置的规则不同。这样做便于在各阵列之间传递 LOC 属性。
为 IDELAYCTRL 实例附加 LOC 属性有两种方法。
1. 在 UCF 文件中插入 LOC 约束
2. 在 HDL 设计文件中直接嵌入 LOC 约束
第 7 章: SelectIO 逻辑资源
声明之后,LOC 约束可以指定为:
attribute loc of instance_name:label is "IDELAYCTRL_X#Y0#";
. . .
. . .
. . .
ug190_7_15_041306
输入 / 输出延迟单元 (IODELAY)
Instantiated with
LOC Constraint
. . .
. . .
. . .
Instantiated without
LOC Constraint
REFCLK RDY
IDELAYCTRL_noloc
RST_NOLOC RST
. . Replicated for .
. . all IDELAYCTRL .
. . sites .
REFCLK RDY
IDELAYCTRL_noloc
RST Auto-generated
by mapper tool
ug190_7_16_041306
第 7 章: SelectIO 逻辑资源
OLOGIC 资源
OLOGIC 由两个主要模块组成,一个用于配置输出数据通路,另一个用于配置三态控制通
路。这两个模块具有共同的时钟 (CLK),但具有不同的使能信号 OCE 和 TCE。二者都具有
由表 7-1 和表 7-2 中所述的独立的 SRVAL 属性控制的异步及同步设置和复位 (SR 和
REV)信号。
输出和三态通路可独立配置成以下模式之一。
• 边沿触发 D 型触发器
• DDR 模式 (SAME_EDGE 或 OPPOSITE_EDGE)
• 电平敏感锁存器
• 异步 / 组合
图 7-22 所示为 OLOGIC 模块中的各种逻辑资源。
T1
TQ
D1 Q
T2 D2
TCE
CE
CLK CK
SR REV
D1
OQ
D1 Q
D2 D2
OCE
CE
CK
SR REV
SR
REV ug190_7_17_041206
组合输出数据和三态控制通路
组合输出通路用于创建从 FPGA 内部资源到输出驱动器或输出驱动器控制的直接连接。这
些通路用于以下情况:
1. FPGA 架构中的逻辑资源与输出数据或三态控制之间存在直接 (不寄存)连接。
2. “将 I/O 寄存器 / 锁存器合并到 IOB 中”设置为 OFF。
OLOGIC 资源
输出 DDR 概述 (ODDR)
Virtex-5 器件的 OLOGIC 中具有专用寄存器,用来实现 DDR 输出寄存器。例化 ODDR 基
元时可使用此功能。当使用 OLOGIC 时,DDR 自动为多路复用。无需手动控制多路器的
选择。此控制信号从时钟生成。
ODDR 基元只有一个时钟输入。下降沿数据由输入时钟局部反转后进行时钟控制。提供给
I/O 模块的所有时钟均为完全多路复用,即在 ILOGIC 或 OLOGIC 模块之间没有时钟共用。
ODDR 基元支持以下操作模式:
• OPPOSITE_EDGE 模式
• SAME_EDGE 模式
SAME_EDGE 模式与 Virtex-4 架构的相同。此模式允许设计人员在 ODDR 时钟的上升沿
上将两个数据输入送至 ODDR 基元,以节省 CLB 和时钟资源并提高性能。此模式用
DDR_CLK_EDGE 属性实现。三态控制也支持这种模式。以下部分详述各模式。
OPPOSITE_EDGE 模式
在 OPPOSITE_EDGE 模式下,使用时钟 (CLK) 的两个沿以两倍吞吐量从 FPGA 内部资源采
集数据。这种结构与 Virtex-II、Virtex-II Pro 和 Virtex-4 的实现相似。两个输出都送至
IOB 的数据输入或三态控制输入。图 7-23 所示为使用 OPPPOSITE_EDGE 模式时输出
DDR 的时序图。
CLK
OCE
SAME_EDGE 模式
在 SAME_EDGE 模式下,数据可以在同一时钟沿上送至 IOB。与使用 CLB 寄存器相比,
在同一时钟沿上将数据送至 IOB 可以避免违反建立时间,并且使用户能够以尽量短的寄存
第 7 章: SelectIO 逻辑资源
CLK
OCE
随路时钟
输出 DDR 可以将时钟的一个副本传送到输出。对于以完全相同的延迟传播时钟和 DDR 数
据,以及对于生成多个时钟 (其中每个时钟负载具有独立的时钟驱动器),此功能很有
用。实现此功能的方法是将 ODDR 基元的 D1 输入固定为 High,并将其 D2 输入固定为
Low。Xilinx 建议使用这种方案从 FPGA 内部资源向输出引脚传送时钟。
输出 DDR 基元 (ODDR)
图 7-25 所示为 ODDR 基元框图。表 7-13 列出了 ODDR 端口信号。表 7-14 所示为
ODDR 基元的各种可用属性和默认值。
D1 Q
D2 ODDR
CE
C
R
ug190_7_20_012207
OLOGIC 资源
表 7-14: ODDR 属性
属性名称 描述 可能值
DDR_CLK_EDGE 设置相对于时钟沿的 ODDR 操作模式 OPPOSITE_EDGE (默
认)、SAME_EDGE
INIT 设置 Q 端口的初始值 0 (默认)、1
SRTYPE 相对于时钟 (C) 的设置 / 复位类型 ASYNC、SYNC (默认)
OLOGIC 时序模型
本部分讨论与 OLOGIC 模块相关的所有时序模型。表 7-15 所示为 《Virtex-5 数据手册》
中 OLOGIC 开关特性的功能和控制信号。
第 7 章: SelectIO 逻辑资源
时序特性
图 7-26 所示为 OLOGIC 输出寄存器时序。
1 2 3 4 5
CLK
TODCK
D1
TOOCECK
OCE
TOSRCK
SR
TOCKQ
OQ
ug190_7_21_041206
时钟事件 1
• 在时钟事件 1 之前的时间 TOOCECK 处,输出时钟使能信号在输出寄存器的 OCE 输入
上变为高有效,允许输入数据使用输出寄存器。
• 在时钟事件 1 之前的时间 TODCK 处,输出信号在输出寄存器的 D1 输入上变为高有效
;在时钟事件 1 之后的时间 TOCKQ 处,该信号反映在 OQ 输出上。
时钟事件 4
在时钟事件 4 之前的时间 TOSRCK 处,SR 信号 (在本例中配置为同步复位)变为高有效,
以复位输出寄存器;在时钟事件 4 之后的时间 TRQ 处,该信号反映在 OQ 输出上。
OLOGIC 资源
1 2 3 4 5 6 7 8 9 10 11
CLK
TODCK
D1
TODCK
D2
TOOCECK
OCE
TOSRCK
SR
TOCKQ
TRQ
OQ
ug190_7_22_012407
时钟事件 1
• 在时钟事件 1 之前的时间 TOOCECK 处,ODDR 时钟使能信号在 ODDR 的 OCE 输入上
变为高有效,允许输入数据使用 ODDR。在 CLK 的上升沿和下降沿之间翻转 ODDR
寄存器的 OCE 信号时必须慎重,并且要满足相对于两个时钟沿的寄存器建立时间。
• 在时钟事件 1 之前的时间 TODCK 处 (CLK 的上升沿),数据信号 D1 在 ODDR 寄存器
的 D1 输入上变为高有效;在时钟事件 1 之后的时间 TOCKQ 处,该信号反映在 OQ 输
出上。
时钟事件 2
• 在时钟事件 2 之前的时间 TODCK 处 (CLK 的下降沿),数据信号 D2 在 ODDR 寄存器
的 D2 输入上变为高有效;在时钟事件 2 之后的时间 TOCKQ 处,该信号反映在 OQ 输
出上 (在本例中 OQ 输出上无变化)。
时钟事件 9
在时钟事件 9 之前的时间 TOSRCK 处 (CLK 的上升沿),SR 信号 (在本例中配置为同步
复位)变为高有效,以复位 ODDR 寄存器;在时钟事件 9 之后的时间 TRQ 处,该信号反映
在 OQ 输出上 (在本例中 OQ 输出上无变化),以复位 ODDR 寄存器;在时钟事件 10 之
后的时间 TRQ 处,该信号反映在 OQ 输出上 (在本例中 OQ 输出上无变化)。
第 7 章: SelectIO 逻辑资源
1 2 3 4 5
CLK
TOTCK
T1
TOTCECK
TCE
TOSRCK
SR
TOCKQ TRQ
TQ
UG190_7_23_041106
时钟事件 1
• 在时钟事件 1 之前的时间 TOTCECK 处,三态时钟使能信号在三态寄存器的 TCE 输入上
变为高有效,允许输入数据使用三态寄存器。
• 在时钟事件 1 之前的时间 TOTCK 处,三态信号在三态寄存器的 T 输入上变为高有效;
在时钟事件 1 之后的时间 TOCKQ 处,将引脚恢复到高阻抗。
时钟事件 2
• 在时钟事件 2 之前的时间 TOSRCK 处,SR 信号 (在本例中配置为同步复位)变为高有
效,以复位输出寄存器;在时钟事件 2 之后的时间 TRQ 处,复位三态寄存器。
图 7-29 所示为 IOB DDR 三态寄存器时序。示例所示为在反沿 (opposite edge) 模式下使
用 DDR。对于其他模式,请按第 313 页的图 7-4 所示增加相应延迟。
OLOGIC 资源
1 2 3 4 5 6 7 8 9 10 11
CLK
TOTCK
T1
TOTCK
T2
TOTCECK
TCE
TOSRCK
SR
TOCKQ
TRQ
TQ
ug190_7_24_041106
时钟事件 2
• 在时钟事件 2 之前的时间 TOTCK 处 (CLK 的下降沿),三态信号 T2 在三态寄存器的
T2 输入上变为高有效;在时钟事件 2 之后的时间 TOCKQ 处,该信号反映在 TQ 输出上
(在本例中 TQ 输出上无变化)。
时钟事件 9
• 在时钟事件 9 之前的时间 TOSRCK 处 (CLK 的上升沿),SR 信号 (在本例中配置为
同步复位)变为高有效,以复位三态寄存器;在时钟事件 9 之后的时间 TRQ 处,该信
号反映在 TQ 输出上(在本例中 TQ 输出上无变化),以复位三态寄存器;在时钟事件
10 之后的时间 TRQ 处,该信号反映在 TQ 输出上 (在本例中 TQ 输出上无变化)。
第 7 章: SelectIO 逻辑资源
第8章
高级 SelectIO 逻辑资源
简介
本用户指南的第 6 章到第 8 章讲述了 Virtex-5 I/O 功能。
• 第 6 章涵盖了输入接收器和输出驱动器的电气特性及其对多种行业标准的兼容性。
• 第 7 章讲述了专用于收发 SDR 或 DDR 数据的寄存器结构。
• 本章涵盖以下资源:
♦ 输入串并转换器 (ISERDES) 和输出并串转换器 (OSERDES),可支持非常高的 I/O
数据速率,允许内部逻辑以 I/O 十分之一的低速率运行。
♦ Bitslip 子模块,可以根据培训模式检测数据,重新对齐字节边界。
输入串并转换逻辑资源 (ISERDES)
Virtex-5 ISERDES 是专用的串并转换器,具有专门用来帮助实现高速源同步应用的特定时
钟控制与逻辑功能。当在 FPGA 架构中设计解串器时,ISERDES 可以避免由其带来的时序
复杂性。
ISERDES 功能包括:
• 专用解串器 / 串并转换器
ISERDES 解串器可以实现高速数据传输,不要求 FPGA 内部资源与输入数据频率匹
配。此转换器支持单倍数据速率 (SDR) 和双倍数据速率 (DDR) 两种模式。在 SDR 模式
下,串并转换器可以创建 2、3、4、5、6、7 或 8 位宽的并行字。在 DDR 模式下,串
并转换器可以创建 4、6、8 或 10 位宽的并行字。
• Bitslip 子模块
Bitslip 子模块允许设计人员对进入 FPGA 内部资源的并行数据流重新排序。此功能可
用来培训包括培训模式的源同步接口。
• 对选通存储器接口的专门支持
ISERDES 包含专用电路 (包括 OCLK 输入引脚),可以完全在 ISERDES 模块内部处
理选通门到 FPGA 跨时钟域的功能。此功能可以提高性能和简化实现。
• 对网络接口的专门支持
第 8 章: 高级 SelectIO 逻辑资源
CLKDIV
Q1 - Q6
OCLK
BITSLIP
CLK
Module
RST
Bitslip
ug190_8_01_050906
图 8-1: ISERDES 框图
ISERDES 基元
图 8-2 所示为 ISERDES 基元。
BITSLIP
O
CE1
Q1
CE2 Q2
CLK
Q3
CLKDIV ISERDES
Primitive Q4
D
Q5
OCLK
Q6
SHIFTIN1
SHIFTOUT1
SHIFTIN2
SHIFTOUT2
SR
ug190_8_02_071207
图 8-2: ISERDES 基元
输入串并转换逻辑资源 (ISERDES)
ISERDES 端口
寄存输出 - Q1 到 Q6
输出端口 Q1 到 Q6 是 ISERDES 模块的寄存输出。一个 ISERDES 模块最多可以支持六个
数据位 (即 1:6 解串)。可以支持大于六的位宽 (最多 10 位)。请见 “ISERDES 宽度扩
展”。接收到的第一个数据位出现在最高阶 Q 输出上。
Bitslip 操作 - BITSLIP
当置为有效 (高有效)时,BITSLIP 引脚执行与 CLKDIV 同步的 Bitslip 操作。此后,如同
桶式移位器操作,每当启动 Bitslip 操作,Q1 到 Q6 输出端口上的数据就会移动一个位置
(DDR 的操作与 SDR 的不同)。有关更多详情,请见 “BITSLIP 子模块”。
第 8 章: 高级 SelectIO 逻辑资源
高速时钟输入 - CLK
高速时钟输入 (CLK) 用于对输入串行数据流进行时钟控制。
分频时钟输入 - CLKDIV
分频时钟输入 (CLKDIV) 通常是 CLK 的一个分频版本 (取决于所实现解串的宽度)。此端
口驱动串并转换器、Bitslip 子模块和 CE 模块的输出。
来自 IOB 的串行输入数据 - D
串行输入数据端口 (D) 是 ISERDES 的串行(高速)数据输入端口。此端口与所有 Virtex-5
I/O 资源配合工作,以满足所需的 I/O 标准。
选通存储器接口的高速时钟 - OCLK
OCLK 时钟输入对选通存储器接口中的数据传输进行同步控制。
ISERDES 属性
表 8-2 概述了所有适用的 ISERDES 属性。该表后面是各属性的详细描述。有关在 UCF、
VHDL 或 Verilog 代码中应用这些属性的更多信息,请参阅 《Xilinx ISE 软件手册》。
表 8-2: ISERDES 属性
属性名称 描述 值 默认值
BITSLIP_ENABLE 允许用户使用或忽略 Bitslip 子模块。请见 字符串:TRUE 或 FALSE FALSE
“BITSLIP_ENABLE 属性”。
DATA_RATE 允许将输入数据流作为 SDR 或 DDR 数据处 字符串:SDR 或 DDR DDR
理。请见 “DATA_RATE 属性”。
DATA_WIDTH 定义串并转换器的宽度。合法值取决于 整数:2、3、4、5、6、7、8 或 4
DATA_RATE 属性 (SDR 或 DDR)。请见 10。
“DATA_WIDTH 属性”。 如果 DATA_RATE = DDR,则此
值限制为 4、6、8 或 10。
如果 DATA_RATE = SDR,则此
值限制为 2、3、4、5、6、7 或
8。
INTERFACE_TYPE 选择 ISERDES 使用模型。请见 字符串:MEMORY 或 MEMORY
“INTERFACE_TYPE 属性”。 NETWORKING
输入串并转换逻辑资源 (ISERDES)
表 8-2: ISERDES 属性 ( 续表 )
属性名称 描述 值 默认值
NUM_CE 定义时钟使能数。请见 “NUM_CE 属性”。 整数:1 或 2 2
SERDES_MODE 当使用宽度扩展时,定义 ISERDES 模块是主 字符串:MASTER 或 SLAVE MASTER
模块还是从模块。请见 “SERDES_MODE 属 MASTER
性”。
BITSLIP_ENABLE 属性
BITSLIP_ENABLE 属性启用 Bitslip 子模块。其可能值是 TRUE 和 FALSE (默认)。当设置
为 TRUE 时,Bitslip 子模块响应 BITSLIP 信号。当设置为 FALSE 时,忽略 Bitslip 子模块。
请见 “BITSLIP 子模块”。
DATA_RATE 属性
DATA_RATE 属性定义将输入数据流作为单倍数据速率 (SDR) 还是双倍数据速率 (DDR) 数
据处理。此属性的允许值是 SDR 和 DDR。默认值是 DDR。
DATA_WIDTH 属性
DATA_WIDTH 属性定义串并转换器的并行数据输出宽度。此属性的可能值取决于
DATA_RATE 属性。当 DATA_RATE 设置为 SDR 时,DATA_WIDTH 属性的可能值是 2、
3、4、5、6、7 和 8。当 DATA_RATE 设置为 DDR 时,DATA_WIDTH 属性的可能值是 4、
6、8 和 10。
当 DATA_WIDTH 设置为大于六的宽度时,必须将一对 ISERDES 配置成主从配置。请见
“ISERDES 宽度扩展”。
INTERFACE_TYPE 属性
INTERFACE_TYPE 属性确定将 ISERDES 配置为存储器模式还是网络模式。此属性的允许
值是 MEMORY 或 NETWORKING。默认模式是 MEMORY。
当 INTERFACE_TYPE 设置成 NETWORKING 时,可以使用 Bitslip 子模块,不使用 OCLK
端口。当设置成 MEMORY 时,不可使用 Bitslip 子模块,可以使用 OCLK 端口。
NUM_CE 属性
NUM_CE 属性定义所用时钟使能 (CE1 和 CE2)数。其可能值是 1 和 2 (默认值 = 2)。
SERDES_MODE 属性
当使用宽度扩展时,SERDES_MODE 属性定义 ISERDES 模块是主模块还是从模块。其可
能值是 MASTER 和 SLAVE。默认值是 MASTER。请见 “ISERDES 宽度扩展”。
第 8 章: 高级 SelectIO 逻辑资源
ISERDES 宽度扩展
构建大于 1:6 的串并转换器需要用两个 ISERDES 模块。每个 I/O 模块中有一主一从两个
ISERDES 模块。通过将主 ISERDES 的 SHIFTOUT 端口连接到从 ISERDES 的 SHIFTIN 端
口,可以将串并转换器最大扩展到 1:10 (DDR) 和 1:8 (SDR)。
图 8-3 所示为使用主从 ISERDES 模块的 1:10 DDR 串并转换器的框图。端口 Q3 - Q6 用
于从 ISERDES 上的并行接口的后四位。
SERDES_MODE=MASTER
Data Input
D Q1
Q2
ISERDES Q3
Data_internal [0:5]
(Master) Q4
Q5
Q6
SHIFTOUT1 SHIFTOUT2
SHIFTIN1 SHIFTIN2
D Q1
Q2
ISERDES Q3
(Slave) Q4
Data_internal [6:9]
Q5
Q6
SERDES_MODE=SLAVE
ug190_8_03_041206
扩展串并转换器位宽的指导原则
1. 两个 ISERDES 模块必须是相邻的主从对。
2. 将主 ISERDES 的 SERDES_MODE 属性设置为 MASTER,将从 ISERDES 的该属性设
置为 SLAVE。请见 “SERDES_MODE 属性”。
3. 用户必须将 SLAVE 的 SHIFTIN 端口连接到 MASTER 的 SHIFTOUT 端口。
4. SLAVE 仅使用端口 Q3 到 Q6 作为输入。
5. 在图 8-3 中,DATA_WIDTH 适用于 MASTER 和 SLAVE。
输入串并转换逻辑资源 (ISERDES)
ISERDES 延迟
ISERDES 模块的输入到输出延迟取决于 DATA_RATE、DATA_WIDTH 和 SERDES_MODE
属性。此处所述延迟是快时钟 (CLK) 采集数据位样本之后该数据位出现在 Q 输出上所需的
慢时钟 (CLKDIV) 周期数。表 8-3 概述了各种 ISERDES 延迟值。
表 8-3: ISERDES 延迟
SERDES_MODE
Data_RATE
存储器模式的延迟 网络模式的延迟
SDR 1 个 CLKDIV 周期 2 个 CLKDIV 周期
DDR 1 个 CLKDIV 周期 2 个 CLKDIV 周期
ISERDES 时序模型和参数
表 8-4 所示为 《Virtex-5 数据手册》中 ISERDES 开关特性的功能和控制信号。
时序特性
在图 8-4 和图 8-5 所示时序图中,时序参数名称因模式不同 (SDR/DDR) 而变化,但不会
因总线输入宽度不同而变化,包括当两个 ISERDES 级联形成 10 个数据位时。在 DDR 模
式下,数据输入 (D) 在每个 CLK 沿 (上升和下降)上切换。
第 8 章: 高级 SelectIO 逻辑资源
1 2
CLK
TISCCK_CE
CE
TISDCK_D
ug190_8_04_041206
时钟事件 1
• 在时钟事件 1 之前的时间 TISCCK_CE 处,时钟使能信号变为高有效,ISERDES 可以采
集数据。
时钟事件 2
• 在时钟事件 2 之前的时间 TISDCK_D 处,输入数据引脚 (D) 变为有效;在下一个上升时
钟沿上,在该引脚上采样。
图 8-5 所示为从 ISERDES 输出数据时的 ISERDES 时序图。
1 2
CLKDIV
Asynchronous
TISCKO_Q Reset
Q1 to Q6
Reset
ug190_8_05_041206
时钟事件 1
• 在时钟事件 1 之后的时间 TISCKO_Q 处,数据出现在 Q1 到 Q6 输出引脚上。
时钟事件 2
• 在时钟事件 2 的时间处,复位信号为高有效 (异步复位)。
• 在时钟事件 2 之后,Q1 到 Q6 输出引脚异步复位到零。
输入串并转换逻辑资源 (ISERDES)
CLKDIV
Event 1 CLK CLK CLKDIV Reset Event 1
1 2 Event 2
CLK
CLKDIV
SR
TISCCK_CE
CE
TISDCK_D
D
TISCKO_Q
Q1 - Q8 00000000 00000000 11111010 00000000
11100101
ug190_8_06_041206
CLKDIV 事件 1
• 在 CLKDIV 事件 1 之前的时间 TISCCK_CE 处,时钟使能信号变为高有效。ISERDES 可
以从 CLKDIV 上升沿之后的第一个时钟边沿开始采样数据。
CLK 事件 1
• 在 CLK 事件 1 之前的时间 TISDCK_D 处,输入数据在 ISERDES 的 D 输入引脚上变为有
效。对于 8:1 SERDES,在 CLK 事件 2 处采样总线上的第八个数据。对后续输入数据
重复此过程。
CLKDIV 事件 2
• 在 CLKDIV 事件 2 之后的时间 TISCKO_Q 处,即第一个数据样本输入 ISERDES 之后两
个 CLKDIV 周期,数据出现在 Q1 到 Q8 总线上。
Reset 事件 1
在 Reset 事件 1 处,Q1 到 Q8 输出异步变为零。
第 8 章: 高级 SelectIO 逻辑资源
BITSLIP 子模块
Virtex-5 器件中的所有 ISERDES 模块都包含一个 Bitslip 子模块。这个子模块可在源同步
网络型应用中进行字对齐。Bitslip 对 ISERDES 模块中的并行数据重新排序,以便将解串器
所接收重复串行模式的每种组合都送至 FPGA 结构。这种重复串行模式通常称为培训模式
(许多网络和电信标准都支持培训模式)。
Bitslip 操作
通过将 ISERDES 模块的 Bitslip 引脚置为有效,可以在并行侧对输入串行数据流重新排序。
此操作重复进行,直到形成训练模式。图 8-7 中的表格所示为 SDR 和 DDR 模式下 Bitslip
操作的效果。为了便于说明,采用了八位数据宽度。Bitslip 操作与 CLKDIV 同步。在 SDR
模式下,每次 Bitslip 操作使输出模式左移一位。在 DDR 模式下,每次 Bitslip 操作使输出
模式在右移一位和左移三位之间交替变化。在此示例中,输出模式在第八次 Bitslip 操作时
还原到初始模式。这里假定串行数据是八位重复模式。
输入串并转换逻辑资源 (ISERDES)
IOB
SERDES_MODE=MASTER 1st 2nd 3th 4th 5th 6th 7th 8th Bitslip
Initial Bitslip Bitslip Bitslip Bitslip Bitslip Bitslip Bitslip (Back to initial)
BITSLIP_ENABLE = TRUE
1001 0011
D Q1 1 1 1 0 0 1 0 0 1
(Repeating
Pattern) Q2 0 1 1 1 0 0 1 0 0
ISERDES Q3 0 0 1 1 1 0 0 1 0
(Master) Q4 1 0 0 1 1 1 0 0 1
Q5 0 1 0 0 1 1 1 0 0
Q6 0 0 1 0 0 1 1 1 0
BITSLIP
SHIFTOUT1 SHIFTOUT2
SHIFTIN1 SHIFTIN2
D Q1
Q2
ISERDES (Q7)Q3 1 0 0 1 0 0 1 1 1
(Slave) (Q8)Q4 1 1 0 0 1 0 0 1 1
Q5
Q6
BITSLIP Bitslip signal from system
SERDES_MODE=SLAVE
BITSLIP_ENABLE = TRUE
ug190_8_08_071707
使用 Bitslip 子模块的指导原则
将 BITSLIP_ENABLE 属性设置为 TRUE。当 BITSLIP_ENABLE 设置为 FALSE 时,Bitslip
引脚无效。在主从配置中,两个模块的 BITSLIP_ENABLE 属性都必须设置为 TRUE。
要启动 Bitslip 操作,BITSLIP 端口置为 High 有效的时间必须持续在一个 CLKDIV 周期。在
SDR 模式下,Bitslip 的置位时间不能长达两个连续的 CLKDIV 周期;在两次 Bitslip 有效置
位之间,Bitslip 的无效时间至少有一个 CLKDIV 周期。在 SDR 和 DDR 两种模式下,从
ISERDES 捕获到已置位的 Bitslip 输入起,到 CLKDIV 采集的 “bit-slipped”ISERDES 输
出 Q1-Q6 的样本输入 FPGA 内部资源止,总延迟是两个 CLKDIV 周期。
Bitslip 时序模型和参数
本部分讨论 1:4 DDR 配置中 Bitslip 控制器的相关时序模型。数据 (D) 是重复的 4 位培训模
式 ABCD。ABCD 在 ISERDES 的并行输出 Q1-Q4 上出现的可能方式有四种:ABCD、
BCDA、CDAB 和 DABC。这四种并行字对齐方式中只有一种对用户的上游逻辑有意义,
该逻辑是从 ISERDES 的 Q1-Q4 输出读取数据。在本例中,假定 ABCD 是有意义的字对齐
方式。将 Bitslip 置为有效可以让用户看到 ABCD 的所有可能配置,然后选择所需的对齐方
式 (ABCD)。图 8-9 所示为两种 Bitslip 操作的时序以及 ISERDES 并行输出 Q1-Q4 的相应
重新对齐方式。
第 8 章: 高级 SelectIO 逻辑资源
1 2 3 4 5
D C D A B C D A B C D A B C D
CLK
CLKDIV
ug190_8_09_071707
时钟事件 2
第二个字 CDAB 已经被采样到 ISERDES 的输入侧寄存器。Bitslip 引脚置为有效,使 Bitslip
控制器在内部将所有数据位右移一位。
时钟事件 3
第三个字 CDAB 已经被采样到 ISERDES 的输入侧寄存器。Bitslip 引脚再次置为有效,使
Bitslip 控制器在内部将所有数据位左移三位。
同样在此 CLKDIV 沿上,第一个字的样本不经任何重新对齐送至 Q1-Q4。图 8-10 中 A 项
所示为在此周期中出现在 Q1-Q4 输出上的输入流中的实际数据位。
ug190_c8_18_071707
输出并串转换逻辑资源 (OSERDES)
输出并串转换逻辑资源 (OSERDES)
Virtex-5 OSERDES 是专用的并串转换器,具有专门用来帮助实现高速源同步接口的特定
时钟控制和逻辑资源。每个 OSERDES 模块包括一个用于数据和三态控制的专用串行器。
数据和三态串行器都可以配置成 SDR 和 DDR 模式。数据串行化可达 6:1 (如果使用
“OSERDES 宽度扩展”则是 10:1)。三态串行化可达 4:1。
图 8-11 所示为 OSERDES 的框图,重点显示该模块的所有主要元件和功能。
T1 - T4 IOB
3-State TQ
Parallel-to-Serial Converter
TCE
CLK
CLKDIV
SR
D1 - D6
Data OQ
Parallel-to-Serial Converter
OCE
Output Driver
ug190_8_10_071707
图 8-11: OSERDES 框图
数据并串转换器
一个 OSERDES 模块中的数据并串转换器接收来自内部资源的二到六位并行数据 (如果使
用 “OSERDES 宽度扩展”则是 10:1),将数据串行化,然后通过 OQ 输出将数据送至
IOB。并行数据串行化是按照从数据输入引脚的最低位到最高的顺序进行的 (即 D1 输入
引脚上的数据传输到 OQ 引脚的首位)。可以在两种模式下使用数据并串转换器:单倍数
据速率 (SDR) 和双倍数据速率 (DDR)。
OSERDES 使用 CLK 和 CLKDIV 两个时钟进行数据速率转换。CLK 是高速串行时钟;
CLKDIV 是分频并行时钟。假定 CLK 和 CLKDIV 相位对齐。表 8-5 所示为各种模式下 CLK
与 CLKDIV 之间的关系。
第 8 章: 高级 SelectIO 逻辑资源
三态并串转换
除了数据的并串转换,OSERDES 模块还包含一个用于对 IOB 进行三态控制的并串转换
器。与数据转换不同的是,三态转换器最多只能串行化四位并行三态信号。三态转换器不
能级联。
OSERDES 基元
图 8-12 所示为 OSERDES 基元。
CLK
CLKDIV
D1
D2
D3
D4
D5
OSERDES
D6 Primitive
OCE
SHIFTIN1
SHIFTIN2
SR
T1
OQ
T2
SHIFTOUT1
T3
SHIFTOUT2
T4
TQ
ug190_8_11_041206
图 8-12: OSERDES 基元
输出并串转换逻辑资源 (OSERDES)
OSERDES 端口
表 8-6 列出了 OSERDES 基元中的可用端口。
表 8-6: OSERDES 端口列表和定义
端口名称 类型 宽度 描述
OQ 输出 1 数据通路输出。请见 “数据通路输出 - OQ”。
SHIFTOUT1 输出 1 数据宽度扩展的进位输出。连接到主 OSERDES 的 SHIFTIN1。请见
“OSERDES 宽度扩展”。
SHIFTOUT2 输出 1 数据宽度扩展的进位输出。连接到主 OSERDES 的 SHIFTIN2。请见
“OSERDES 宽度扩展”。
TQ 输出 1 三态控制输出。请见 “三态控制输出 - TQ”。
CLK 输入 1 高速时钟输入。请见 “高速时钟输入 - CLK”。
CLKDIV 输入 1 分频时钟输入。对延迟单元、解串数据、Bitslip 子模块和 CE 单元进行时钟控
制。请见 “分频时钟输入 - CLKDIV”。
D1 - D6 输入 1 (每端口) 并行数据输入。请见 “并行数据输入 - D1 到 D6”。
OCE 输入 1 输出数据时钟使能。请见 “输出数据时钟使能 - OCE”。
REV 输入 1 反转 SR 引脚。OSERDES 模块中没有此端口。
SHIFTIN1 输入 1 数据宽度扩展的进位输入。连接到从 OSERDES 的 SHIFTOUT1。请见
“OSERDES 宽度扩展”。
SHIFTIN2 输入 1 数据宽度扩展的进位输入。连接到从 OSERDES 的 SHIFTOUT2。请见
“OSERDES 宽度扩展”。
SR 输入 1 设置 / 复位。在 OSERDES 模块中,此引脚仅用作异步复位。
T1 to T4 输入 1 (每端口) 并行三态输入。请见 “并行三态输入 - T1 到 T4”。
TCE 输入 1 三态时钟使能。请见 “三态信号时钟使能 - TCE”。
数据通路输出 - OQ
OQ 端口是 OSERDES 模块的数据输出端口。输入端口 D1 上的数据会首先出现在 OQ 上。
此端口将数据并串转换器的输出连接到 IOB 的数据输入。
三态控制输出 - TQ
此端口是 OSERDES 模块的三态控制输出。当使用时,此端口将三态并串转换器的输出连
接到 IOB 的控制 / 三态输入。
高速时钟输入 - CLK
此高速时钟输入端口驱动并串转换器的串行侧。
分频时钟输入 - CLKDIV
此分频高速时钟输入端口驱动并串转换器的并行侧。此时钟是 CLK 端口所连接时钟的分频
版本。
第 8 章: 高级 SelectIO 逻辑资源
并行数据输入 - D1 到 D6
所有输入并行数据都通过端口 D1 到 D6 进入 OSERDES 模块。这些端口连接到 FPGA 内部
资源,可以配置成二到六位 (即 6:1 串行化)。可以支持大于六的位宽 (最多 10 位)。请
见 “OSERDES 宽度扩展”。
输出数据时钟使能 - OCE
OCE 是数据通路的 High 有效时钟使能。
并行三态输入 - T1 到 T4
所有并行三态信号都通过端口 T1 到 T4 进入 OSERDES 模块。这些端口连接到 FPGA 内部
资源,可以配置成一位或四位。
三态信号时钟使能 - TCE
TCE 是三态控制通路的 High 有效时钟使能。
OSERDES 属性
表 8-7 列出并描述了 OSERDES 基元的各种可用属性。该表包括默认值。
输出并串转换逻辑资源 (OSERDES)
DATA_RATE_OQ 属性
DATA_RATE_OQ 属性定义将数据作为单倍数据速率 (SDR) 还是双倍数据速率 (DDR) 数据
处理。此属性的允许值是 SDR 和 DDR。默认值是 DDR。
DATA_RATE_TQ 属性
DATA_RATE_TQ 属性定义将三态控制作为单倍数据速率 (SDR) 还是双倍数据速率 (DDR)
数据处理。此属性的允许值是 SDR 和 DDR。默认值是 DDR。
DATA_WIDTH 属性
DATA_WIDTH 属性定义并串转换器的并行数据输入宽度。此属性的可能值取决于
DATA_RATE_OQ 属性。当 DATA_RATE_OQ 设置为 SDR 时,DATA_WIDTH 属性的可能
值是 2、3、4、5、6、7 和 8。当 DATA_RATE_OQ 设置为 DDR 时,DATA_WIDTH 属性
的可能值是 4、6、8 和 10。
当 DATA_WIDTH 设置为大于六的宽度时,必须将一对 OSERDES 配置成主从配置。请见
“OSERDES 宽度扩展”。
SERDES_MODE 属性
当使用宽度扩展时,SERDES_MODE 属性定义 OSERDES 模块是主模块还是从模块。其可
能值是 MASTER 和 SLAVE。默认值是 MASTER。请见 “OSERDES 宽度扩展”。
TRISTATE_WIDTH 属性
TRISTATE_WIDTH 属性定义三态控制并串转换器的并行三态输入宽度。此属性的可能值取
决于 DATA_RATE_TQ 属性。当 DATA_RATE_TQ 设置为 SDR 或 BUF 时,
TRISTATE_WIDTH 属性只能设置为 1。当 DATA_RATE_TQ 设置为 DDR 时,
TRISTATE_WIDTH 属性的可能值是 4。
在此情况下,TRISTATE_WIDTH 不能设置为大于四的宽度,应设置为 1。
第 8 章: 高级 SelectIO 逻辑资源
OSERDES 宽度扩展
构建大于 6:1 的并串转换器需要用两个 OSERDES 模块。每个 I/O 模块中有一主一从两个
OSERDES 模块。通过将主 OSERDES 的 SHIFTIN 端口连接到从 OSERDES 的 SHIFTOUT
端口,可以将并串转换器最大扩展到 10:1 (DDR) 和 8:1 (SDR)。
图 8-13 所示为使用主从 OSERDES 模块的 10:1 DDR 并串转换器的框图。端口 Q3 - Q6
用于从 OSERDES 上的并行接口的后四位 (LSB 到 MSB)。
SERDES_MODE = MASTER
D1 OQ Data Out
D2
D3 OSERDES
Data Inputs[0:5] D4 (Master)
D5
D6
SHIFTIN1 SHIFTIN2
SHIFTOUT1 SHIFTOUT2
D1 OQ
D2
D3 OSERDES
D4 (Slave)
Data Inputs[6:9]
D5
D6
SERDES_MODE=SLAVE
ug190_8_12_041206
扩展并串转换器位宽的指导原则
1. 两个 OSERDES 模块必须是相邻的主从对。
2. 将主 OSERDES 的 SERDES_MODE 属性设置为 MASTER,将从 OSERDES 的该属性
设置为 SLAVE。请见 “SERDES_MODE 属性”。
3. 用户必须将 MASTER 的 SHIFTIN 端口连接到 SLAVE 的 SHIFTOUT 端口。
4. SLAVE 仅将端口 D3 到 D6 作为输入。
5. Master 和 Slave 的 DATA_WIDTH 相等。请见 “DATA_WIDTH 属性”。
输出并串转换逻辑资源 (OSERDES)
OSERDES 延迟
OSERDES 模块的输入到输出延迟取决于 DATA_RATE 和 DATA_WIDTH 属性。延迟的定义
是,并行数据样本输入 OSERDES 所需的慢时钟 (CLKDIV) 周期数,后加 OSERDES 在并
行数据采样之后将第一个串行化数据送入 QQ 输出所需的快时钟 (CLK) 周期数。表 8-9 概
述了各种 OSERDES 延迟值。
表 8-9: OSERDES 延迟
DATA_RATE DATA_WIDTH 延迟
SDR 2:1 1 个 CLKDIV 周期加 1 个 CLK 周期
3:1 1 个 CLKDIV 周期加 3 个 CLK 周期
4:1 1 个 CLKDIV 周期加 4 个 CLK 周期
5:1 1 个 CLKDIV 周期加 4 个 CLK 周期
6:1 1 个 CLKDIV 周期加 5 个 CLK 周期
7:1 1 个 CLKDIV 周期加 5 个 CLK 周期
8:1 1 个 CLKDIV 周期加 6 个 CLK 周期
DDR 4:1 1 个 CLKDIV 周期加 1 个 CLK 周期
6:1 1 个 CLKDIV 周期加 3 个 CLK 周期
8:1 1 个 CLKDIV 周期加 4 个 CLK 周期
10:1 1 个 CLKDIV 周期加 4 个 CLK 周期
第 8 章: 高级 SelectIO 逻辑资源
OSERDES 时序模型和参数
本部分讨论 OSERDES 基元的所有相关时序模型。表 8-10 所示为 《Virtex-5 数据手册》
中 OSERDES 开关特性的功能和控制信号。
表 8-10: OSERDES 开关特性
符号 描述
建立 / 保持
TOSDCK_D/TOSCKD_D 相对于 CLKDIV 的 D 输入建立 / 保持
TOSDCK_T/TOSCKD_T 相对于 CLK 的 T 输入建立 / 保持
TOSDCK_T/TOSCKD_T 相对于 CLKDIV 的 T 输入建立 / 保持
TOSCCK_OCE/TOSCKC_OCE 相对于 CLK 的 OCE 输入建立 / 保持
TOSCCK_TCE/TOSCKC_TCE 相对于 CLK 的 TCE 输入建立 / 保持
时序延迟
TOSCKO_OQ 从 CLK 到 OQ 的时钟到输出
TOSCKO_TQ 从 CLK 到 TQ 的时钟到输出
组合
TOSCO_OQ 对 OQ 的异步复位
TOSCO_TQ 对 TQ 的异步复位
时序特性
图 8-14 所示为 2:1 SDR 数据串行化的时序。时序参数名称和行为不随总线宽度不同而改
变,包括两个 OSERDES 级联时。除了 OQ 在每个 CLK 沿 (上升和下降)上切换外,同
样的示例也适用于 DDR 模式。
1 2 3
CLK
CLKDIV
TOSCCK_OCE
OCE
SR
TOSDCK_D
D1 - D2
TOSCKO_OQ TOSCO_OQ
OQ
ug190_8_13_041206
输出并串转换逻辑资源 (OSERDES)
时钟事件 1
• 在时钟事件 1 (CLK) 之前的时间 TOSCCK_OCE 处,输出时钟使能引脚在 OSERDES 的
OCE 输入上变为高有效,允许输出寄存器向 OQ 输出传送数据。
时钟事件 2
• 在时钟事件 2 (CLKDIV) 之前的时间 TOSDCK_D 处,数据在 D1 和 D2 输入上变为有效。
• 在时钟事件 2 (CLK) 之后的时间 TOSCKO_OQ 处,数据出现在 OQ 输出上。
时钟事件 3
• 在时钟事件 3 处,复位信号置为高有效 (异步复位)。
• 在时钟事件 3 之后的时间 TOSCO_OQ 处,OQ 输出被异步复位到零。
图 8-15 和图 8-16 中的时序图所示为 OSERDES 数据 I/O 端口及其与 CLK 和 CLKDIV 的
关系。
CLK
CLKDV
OQ --- D1A D2A D3A D4A D5A D6A D1B D2B D3B D4B
ug190_8_14_041206
CLK
CLKDV
D1 1A 1B 1C 1D 1E
D6 6A 6B 6C 6D 6E
OQ --- 1A 2A 3A 4A 5A 6A 1B 2B 3B 4B 5B 6B 1C 2C ---
ug190_8_15_041206
第 8 章: 高级 SelectIO 逻辑资源
1 2 3
CLK
CLKDIV
TOSCCK_TCE
TCE
SR
TOSDCK_T
T1 - T2
TOSCKO_TQ TOSCO_TQ
TQ
ug190_8_16_041206
时钟事件 1
• 在时钟事件 1 (CLK) 之前的时间 TOSCCK_TCE 处,输出时钟使能引脚在 OSERDES 的
TCE 输入上变为高有效,允许输出寄存器向 TQ 输出传送数据。
时钟事件 2
• 在时钟事件 2 (CLKDIV) 之前的时间 TOSDCK_T 处,数据在 T1 和 T2 输入上变为有效。
• 在时钟事件 2 (CLK) 之后的时间 TOSCKO_TQ 处,数据出现在 TQ 输出上。
时钟事件 3
• 在时钟事件 3 的时间处,复位信号置为高有效 (异步复位)。
• 在时钟事件 3 之后的时间 TOSCO_TQ 处,TQ 输出被异步复位到零。
F I defined 定义 212
IOBUF 228
FIFO 134 I/O standards PULLUP/PULLDOWN/KEEPER 231
attributes 属性 142 bank rules 组规则 291 IOBUFDS 229
cascading 级联 152 I/O standards I/O 标准 212 IODELAY 317
FWFT mode FWFT 模式 139 compatibility 兼容性 292 DATAIN 320
operating modes 操作模式 139 differential I/O 差分 I/O 212 DATAOUT 320
ports 端口 138 single-ended I/O 单端 I/O 212 IDATAIN 319
primitive 基元 137 I/O tile I/O 模块 211 ODATAIN 320
standard mode 标准模式 139 ILOGIC 211 ports 端口 319
status flags 状态标志 140 IOB 211 ISERDES 347
timing parameters 时序参数 144 OLOGIC 211 attributes 属性 350
IBUF 227 bitslip 347, 349, 356
PULLUP/PULLDOWN/KEEPER 231 BITSLIP_ENABLE attribute
G IBUFDS 228 BITSLIP_ENABLE 属性 351
GCLK 32 IBUFG 20, 227 defined 定义 347
global clocks 全局时钟 IBUFGDS 20, 228 IDELAY
clock buffers 时钟缓冲器 19, 20 IDDR 311 IDELAYCTRL 330
clock I/O inputs 时钟 I/O 输入 20 OPPOSITE_EDGE mode ports 端口 349, 361
OPPOSITE_EDGE 模式 311 primitive 基元 348
GSR
ports 端口 313 SDR 354
defined 定义 122
primitive 基元 313 serial-to-parallel converter 串并转
GTL 241
SAME_EDGE mode SAME_EDGE 模 换器 347, 352
defined 定义 241
式 312 switching characteristics 开关特性
GTL_DCI 241 353
SAME_EDGE_PIPELINED mode
GTLP 242 SAME_EDGE_PIPELINED 模式 timing models 时序模型 353
GTLP_DCI 242 312
width expansion 宽度扩展 352
IDELAY 317
attributes 属性 321
H defined 定义 317 L
HSTL 243 delay mode 延迟模式
LDT
class I (1.8V) I 类 (1.8V) 256, 267 fixed 固定 317
See HyperTransport 见
class I I 类 245 variable 可变 317 HyperTransport 289
class II (1.8V) II 类 (1.8V) 258 zero-hold time 零保持时间 317 LVCMOS 234
class II II 类 247 IDELAYCTRL 330 defined 定义 234
class III (1.8V) III 类 (1.8V) 263 increment/decrement 递增 / 递减 LVDCI 236
321
class III III 类 252 defined 定义 236
primitive 基元 319
class IV (1.8V) IV 类 (1.8V) 264 LVDCI_DV2 237
switching characteristics 开关特性
class IV IV 类 253 323 source termination 源终端 296
CSE differential HSTL class II CSE 差 timing 时序 323 LVDS 287
分 HSTL II 类 258 defined 定义 287
IDELAYCTRL 330
defined 定义 243 LVDS_25_DCI 288
instantiating 例化 333, 335
Differential HSTL class II 差分 HSTL LVPECL 290
II 类 257, 260 RDY port RDY 端口 334
location 位置 332 defined 定义 290
differential HSTL class II 差分 HSTL II
类 249 primitive 基元 331 LVTTL 232
HyperTransport REFCLK 330, 337 defined 定义 232
HT 289 ILOGIC 211, 310
IDDR 311
SR 310
M
switching characteristics 开关特性 multirate 多速率
317 FIFO 109, 134
timing 时序 314
IOB 211
N S
NO_CHANGE mode NO_CHANGE 模式 SelectIO
112 IBUF 227
IBUFDS 228
IBUFG 227
O IBUFGDS 228
OBUF 227 IOBUF 228
OBUFDS 229 IOBUFDS 229
OBUFT 228 OBUF 227
PULLUP/PULLDOWN/KEEPER 231 OBUFDS 229
OBUFTDS 229 OBUFT 228
ODDR 339 OBUFTDS 229
clock forwarding 时钟随路 340 Simultaneous Switching Output (SSO) 同
OPPOSITE_EDGE mode 步开关输出 (SSO) 298
OPPOSITE_EDGE 模式 339 Slew Rate 斜率
ports 端口 340 SLEW 230
primitive 基元 340 SRHIGH 172
SAME_EDGE mode SAME_EDGE 模 SRLOW 172
式 339
SSTL 267
OLOGIC 211, 338
Differential SSTL Class II (1.8V) 差分
timing 时序 341 SSTL II 类 (1.8V) 279, 284
OSERDES 359 Differential SSTL2 Class II (2.5V) 差
parallel-to-serial converter 并串转 分 SSTL2 II 类 (2.5V) 270, 274
换器 359 SSTL18 Class I (1.8V) SSTL18 I 类
timing 时序 366 (1.8V) 278
SSTL18 Class II (1.8V) SSTL18 II 类
(1.8V) 281
P SSTL2 Class I (2.5V) SSTL2 I 类
(2.5V) 269
parallel-to-serial converter 并串转换器 SSTL2 Class II (2.5V) SSTL2 II 类
359 (2.5V) 272
DDR 359
SDR 359
PCI 240 W
PFDM 305
WRITE_FIRST mode WRITE_FIRST 模式
PLL 112
allocation in device 器件中的分配 42
PSCLK 46
R
READ_FIRST mode READ_FIRST 模式
112
REFCLK 331, 337
regional clock buffers 区域时钟缓冲器
19, 33
regional clocks 区域时钟
clock buffers 时钟缓冲器 36
clock nets 时钟网 39
REV 310
RSDS 289