Virtex-5 中文版用户手册

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 372

Virtex-5 用户指南

UG190 (v3.1) 2007 年 9 月 11 日

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 日

Virtex-5 用户指南 www.xilinx.com/cn UG190 (v3.1) 2007 年 9 月 11 日


日期 版本 修订
2006 年 1.1 少量版面修改与澄清。
5 月 12 日
第 1 章:修改图 1-21。
第 2 章:修改图 2-2 和图 2-4。删除对 DCM_PS 基元的引用。从第 76 页删除过时的时
钟控制向导部分。
第 3 章:修改图 3-1、图 3-2、表 3-2、表 3-4、图 3-9、公式 3-8 和图 3-12。增加
“Virtex-4 PMCD 传统模式下的 PLL”部分。
第 4 章:为第 119 页的表 4-5 加注。澄清第 126 页上的 RAMB36 端口映射设计规则。
第 5 章:增加图 5-7 和图 5-11,修改图 5-32,以提高明确性。
第 6 章:更新 “同步开关输出限制”部分。
第 7 章:修改第 310 页的 “ILOGIC 资源”(包括图 7-1)。修改表 7-3。
第 8 章:修改表 8-1。
2006 年 1.2 第 1 章:修改第 21 页的 “全局时钟缓冲器”,以澄清单端时钟引脚。修改图 1-19 中 P
7 月 19 日 和 N 的 I/O 标识。
第 4 章:增加第 127 页的 “寄存器模式下的 Block RAM SSR”和第 137 页的 “FIFO 架
构:顶层视图”。修改第 139 页 “FIFO 操作”项下的 “复位”说明。
第 6 章:少量澄清性修改。将表 6-36、表 6-37 和表 6-38 中的 “未使用”改成 “不
适用”。
第 7 章:小修改,以澄清本章中的 IODELAY。
第 8 章:第 349 页的 “ISERDES 端口”中的澄清性小修改。
2006 年 2.0 在整个技术文档中增加 LXT 平台器件。
9月6日
第 1 章:修改第 38 页的图 1-22。更新第 33 页的 “Clock Capable I/O”。
第 2 章:更新第 58 页的 “输出时钟”。
第 4 章:澄清第 134 页上有关 FULL 和 EMPTY 标志的规则。
第 5 章:修改第 172 页的 “存储元件”。
第 6 章:更新第 231 页的 “差分终端属性”,以使用最新语法和设置。更换 SSO 计算器
的链接。
2006 年 2.1 在前言中增加 《系统监视器用户指南》参考。
10 月 12 日
在表 1-5、表 2-1 和表 5-2 中增加 XC5VLX85T。
第 3 章:修改图 3-1。
第 4 章:在第 120 页的表 4-7 中增加级联。修改第 118 页的图 4-9 中的 ADDR。删除
“内置纠错”部分中的擦除模式。
第 5 章:修改第 191 页的图 5-22。
2007 年 3.0 在表 1-5、表 2-1 和表 5-2 增加三个 SXT 器件和 XC5VLX220T。
2月2日
第 4 章:澄清第 113 页的 “同步时钟控制”中的措词。
第 6 章:增加第 214 页的 “DCI 级联”。将表 6-39 中 SSTL18_II_T_DCI 的 VREF 改成
0.9。
第 7 章:修改第 343 页的图 7-27 中的 OQ。
第 8 章:第 350 页的 “时钟使能输入 - CE1 和 CE2”。

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


日期 版本 修订
2007 年 3.1 第 1 章:增加第 20 页的 “节能时钟门控”。修改第 24 页的图 1-2。修改第 31 页的图
9 月 11 日 1-16。
第 2 章:修改第 46 页的 “复位输入 - RST”中的 DCM 复位和锁定过程。更新第 50 页
的表 2-4 中的 DO[2] 说明。修改第 51 页上的乘数值范围。修改第 54 页的
“FACTORY_JF 属性”的说明。修改第 58 页的 “输出时钟”,更新第 67 页的图 2-7,
并且在第 69 页的图 2-10 中增加一个 BUFG。在第 65 页的动态重配置 (DRP) 下增加加
载新 M 和 D 值时的步骤。更新第 67 页的图 2-7。修改第 80 页的图 2-21 下带圆点项号
的说明。
第 3 章:更新第 84 页的图 3-1。为第 88 页的表 3-2 加注。为第 90 页的 “相移”加
注。在公式 3-3 到公式 3-6 中增加圆整运算。修改 CLKFBIN、CLKFBDCM、
CLKFBOUT、RST 和 LOCKED,并且在第 91 页的表 3-3 中增加 REL 引脚和注 2。在第
93 页的表 3-4 中增加 RESET_ON_LOSS_OF_LOCK 属性。从 “PLL 时钟输入信号”中
删除关于通用布线的讨论。修改 “缺失输入时钟或反馈时钟”部分。在图 3-13 中增加
波形图。纠正第 105 页的图 3-17 和表 3-8 中的 Virtex-4 端口映射。
第 4 章:修改并澄清 “内置纠错”。修改全部 WE 信号。澄清第 115 页的 “简单双端口
Block RAM”中的读回限制。修改第 120 页的 “设置 / 复位 - SSR[A|B]”。增加第 134
页的“Block RAM 重定向”。为第 140 页的表 4-16 修改延迟值并增加注 1。更新第 152
页的 “级联 FIFO 以增加深度”。
第 5 章:在第 172 页的 “存储元件”中澄清关于一个 Slice 中的公共控制信号的信息。
第 6 章:更新第 216 页的 DCI 级联指南。删除对 “带单向终端的 HSLVDCI 控制阻抗驱
动器”的引用,因为软件中不支持这种功能。为第 249 页的表 6-17 增加注 3。澄清对
第 267 页的 “SSTL (线脚系列终端逻辑)”的简介。修改第 268 页的
“DIFF_SSTL2_II_DCI、DIFF_SSTL18_II_DCI”。纠正第 275 页的图 6-73 中的
DIFF_SSTL2_II 参考值。修改第 291 页的 “在同组中合并 I/O 标准的规则”中的规则 2
和 3。从第 295 页的 “上过冲 / 下过冲”中删除绝对最大值表。
第 7 章:从第 313 页的 IDDR 基元中删除 DDLY 端口。在第 321 页的表 7-10 中增加
SIGNAL _PATTERN、DELAY_SRC 和 REFCLK_FREQUENCY 属性。修改第 323 页的图
7-9。在第 331 页上,删除表 7-12 “从 DCM 生成参考时钟”,并更新 “IDELAYCTRL
端口”中的 REFCLK 部分。澄清第 332 页的 “IDELAYCTRL 位置”中的简介。修改第
340 页的 ODDR “随路时钟”。
第 8 章:更新第 348 页的图 8-2 和表 8-1 中的 SR 和 O。更新整个第 356 页的
“BITSLIP 子模块”部分。纠正第 359 页的图 8-11 中的排版错误。

Virtex-5 用户指南 www.xilinx.com/cn UG190 (v3.1) 2007 年 9 月 11 日


前言 : 关于本指南
其他技术文档. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
其他支持资源. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
排版约定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
联机技术文档. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


动态重配置写使能输入 - DWE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
动态重配置使能输入 - DEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
DCM 时钟输出端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
1x 输出时钟 - CLK0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1x 输出时钟,90°相移 - CLK90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1x 输出时钟,180°相移 - CLK180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1x 输出时钟,270°相移 - CLK270 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2x 输出时钟 - CLK2X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2x 输出时钟,180°相移 - CLK2X180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
分频输出时钟 - CLKDV. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
频率合成输出时钟 - CLKFX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
频率合成输出时钟,180°- CLKFX180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
DCM 状态和数据输出端口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
锁定输出 - LOCKED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
相移完成输出 - PSDONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
状态或动态重配置数据输出 - DO[15:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
动态重配置就绪输出 - DRDY. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
DCM 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
CLKDV_DIVIDE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
CLKFX_MULTIPLY 和 CLKFX_DIVIDE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
CLKIN_PERIOD 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
CLKIN_DIVIDE_BY_2 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
CLKOUT_PHASE_SHIFT 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
CLK_FEEDBACK 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
DESKEW_ADJUST 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
DFS_FREQUENCY_MODE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
DLL_FREQUENCY_MODE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
DUTY_CYCLE_CORRECTION 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
DCM_PERFORMANCE_MODE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
FACTORY_JF 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
PHASE_SHIFT 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
STARTUP_WAIT 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
DCM 设计指南 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
时钟去歪斜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
时钟去歪斜工作原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
输入时钟要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
输入时钟变化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
输出时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
配置和启动过程中的 DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
去歪斜调整 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
去歪斜电路的特性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
频率合成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
频率合成工作原理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
频率合成器特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
相移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
相移工作原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
PSEN、PSINCDEC、PSCLK 和 PSDONE 的相互作用 . . . . . . . . . . . . . . . . . . . . . . . 63
相移溢出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
相移特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
动态重配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
将 DCM 连接到 Virtex-5 器件中的其他时钟资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
IBUFG 到 DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
DCM 到 BUFGCTRL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


BUFGCTRL 到 DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
PLL 到 DCM 和 DCM 到 PLL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
DCM 到 PMCD 和 PMCD 到 DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
应用示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
标准用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
板级时钟生成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
具有内部去歪斜的电路板去歪斜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
两个 DCM 之间的时钟切换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
从 PLL 输入的 DCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
VHDL 和 Verilog 模板及时钟控制向导 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
DCM 时序模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
复位 / 锁定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
固定相移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
可变相移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
状态标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
传统器件支持. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


PLL 应用示例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Virtex-4 PMCD 传统模式下的 PLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


用 VHDL 或 Verilog 代码初始化 Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
其他 RAMB18 和 RAMB36 基元设计考虑事项 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
可选输出寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
独立读写端口宽度选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
RAMB18 和 RAMB36 端口映射设计规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
可级联 Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
字节宽度写使能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
其他 Block RAM 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Block RAM 应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
创建较大的 RAM 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
寄存器模式下的 Block RAM SSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Block RAM 时序模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Block RAM 时序参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Block RAM 时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
时钟事件 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
时钟事件 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
时钟事件 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
时钟事件 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Block RAM 时序模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Block RAM 重定向 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
内置 FIFO 支持 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
多速率 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
同步 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
同步 FIFO 的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
FIFO 架构:顶层视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
FIFO 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
FIFO 端口描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
FIFO 操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
复位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
操作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
标准模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
首字直通 (FWFT) 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
状态标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Empty 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Almost Empty 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Read Error 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Full 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Write Error 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Almost Full 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
FIFO 的属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
FIFO Almost Full/Empty 标记偏移范围 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
FIFO 的 VHDL 和 Verilog 模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
FIFO 时序模型和参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
FIFO 时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
情形 1:写入空 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
情形 2:写入满或近满 FIFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
情形 3:从满 FIFO 中读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
情形 4:从空或近空 FIFO 中读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
情形 5:复位所有标记. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
情形 6:多速率 FIFO 的同时读取 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


FIFO 应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
级联 FIFO 以增加深度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
并联 FIFO 以增加宽度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
内置纠错. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
ECC 模式概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Block RAM ECC 架构的顶层视图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Block RAM 和 FIFO ECC 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Block RAM 和 FIFO ECC 端口描述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Block RAM 和 FIFO ECC 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
ECC 的操作模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
标准 ECC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
ECC 只编码模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
ECC 只解码模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
ECC 时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
标准 ECC 写时序 (图 4-31) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
标准 ECC 读时序 (图 4-32) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
只编码 ECC 写时序 (图 4-31) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
只编码 ECC 读时序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
只解码 ECC 写时序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
只解码 ECC 读时序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Block RAM ECC 模式时序参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
在 72 位字中制造故意错误 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
为 64 位字创建八个奇偶校验位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
将单位元或双位元错误插入 72 位字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Block RAM ECC 的 VHDL 和 Verilog 模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


端口信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
移位寄存器 (SRL) 基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
端口信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
其他移位寄存器应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
同步移位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
静态长度移位寄存器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
多路复用器基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
端口信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
进位链基元 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
端口信号 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


HSLVDCI (高速低压数控阻抗) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
PCIX、PCI33、PCI66 (外设组件接口 ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
GTL (射电收发器逻辑). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
GTL_DCI 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
GTLP (射电收发器逻辑增强版) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
GTLP_DCI 用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
HSTL (高速收发器逻辑). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
HSTL_ I、HSTL_ III、HSTL_ I_18、HSTL_ III_18、HSTL_I_12 . . . . . . . . . . . . . . . . 243
HSTL_ I_DCI、HSTL_ III_DCI、HSTL_ I_DCI_18、HSTL_ III_DCI_18 . . . . . . . . . . . . 243
HSTL_ II、HSTL_ IV、HSTL_ II_18、HSTL_ IV_18 . . . . . . . . . . . . . . . . . . . . . . . . . 243
HSTL_ II_DCI、HSTL_ IV_DCI、HSTL_ II_DCI_18、HSTL_ IV_DCI_18 . . . . . . . . . . 244
HSTL_ II_T_DCI、HSTL_ II_T_DCI_18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
DIFF_HSTL_ II、DIFF_HSTL_II_18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
DIFF_HSTL_II_DCI、DIFF_HSTL_II_DCI_18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
DIFF_HSTL_I、DIFF_HSTL_I_18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
DIFF_HSTL_I_DCI、DIFF_HSTL_I_DCI_18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
HSTL I 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
差分 HSTL I 类. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
HSTL II 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
差分 HSTL II 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
HSTL III 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
HSTL IV 类 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
HSTL_II_T_DCI (1.5V) 分裂 Thevenin 终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
HSTL I 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
差分 HSTL I 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
HSTL II 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
差分 HSTL II 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
HSTL III 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
HSTL IV 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
HSTL_II_T_DCI_18 (1.8V) 分裂 Thevenin 终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
HSTL I 类 (1.2V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
SSTL (线脚系列终端逻辑) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
SSTL2_I、SSTL18_I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
SSTL2_I_DCI、SSTL18_I_DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
SSTL2_II、SSTL18_II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
SSTL2_II_DCI、SSTL18_II_DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
DIFF_SSTL2_I、DIFF_SSTL18_I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
DIFF_SSTL2_I_DCI、DIFF_SSTL18_I_DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
DIFF_SSTL2_II、DIFF_SSTL18_II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
DIFF_SSTL2_II_DCI、DIFF_SSTL18_II_DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
SSTL2_II_T_DCI、SSTL18_II_T_DCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
SSTL2 I 类 (2.5V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
差分 SSTL2 I 类 (2.5V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
SSTL2 II 类 (2.5V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
差分 SSTL2 II 类 (2.5V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
SSTL2_II_T_DCI (2.5V) 分裂 Thevenin 终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
SSTL18 I 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
差分 SSTL I 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
SSTL18 II 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
差分 SSTL II 类 (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
SSTL18_II_T_DCI (1.8V) 分裂 Thevenin 终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
差分终端:DIFF_TERM 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
LVDS 和扩展 LVDS (低压差分信令) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
发射器终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


接收器终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
HyperTransport™ 协议 (HT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
低摆幅差分信令 (RSDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
BLVDS (总线 LVDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
差分 LVPECL (低压正发射极耦合逻辑). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
LVPECL 收发器终端 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
在同组中合并 I/O 标准的规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
3.3V I/O 设计指导原则. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
I/O 标准设计规则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
混合方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
同步开关输出限制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
稀疏锯齿形 (Sparse-Chevron) 封装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
标称 PCB 指标. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
PCB 结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
信号回流管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
负载迹线 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
功率分配系统设计. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
标称 SSO 极限值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
实际 SSO 极限值与标称 SSO 极限值的关系 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
SSO 噪声的电气原理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
寄生系数降额法 (PFDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
SSO 的加权平均计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
全器件 SSO 计算器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
其他 SSO 假定条件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
LVDCI 和 HSLVDCI 驱动器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
组 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


IDELAYCTRL 位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
IDELAYCTRL 用法及设计指导原则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
OLOGIC 资源 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
组合输出数据和三态控制通路 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
输出 DDR 概述 (ODDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
OPPOSITE_EDGE 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
SAME_EDGE 模式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
随路时钟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
输出 DDR 基元 (ODDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
ODDR 的 VHDL 和 Verilog 模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
OLOGIC 时序模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

第 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

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


输出数据时钟使能 - OCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
并行三态输入 - T1 到 T4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
三态信号时钟使能 - TCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
OSERDES 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
DATA_RATE_OQ 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
DATA_RATE_TQ 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
DATA_WIDTH 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
SERDES_MODE 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
TRISTATE_WIDTH 属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
OSERDES 宽度扩展 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
扩展并串转换器位宽的指导原则 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
OSERDES 延迟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
OSERDES 时序模型和参数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
时序特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
OSERDES 的 VHDL 和 Verilog 实例模板 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

UG190 (v3.1) 2007 年 9 月 11 日 www.xilinx.com/cn Virtex-5 用户指南


Virtex-5 用户指南 www.xilinx.com/cn UG190 (v3.1) 2007 年 9 月 11 日
R

前言

关于本指南
本技术文档介绍 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 用户指南 www.xilinx.com/cn 17


UG190 (v3.1) 2007 年 9 月 11 日
R

第 章:

• 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
蓝色下划线文字 网站超级链接 (网址)
查阅最新技术文档。

18 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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 逻辑资源”。

Virtex-5 用户指南 www.xilinx.com/cn 19


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 的输入时钟缓冲器

通过将 IOSTANDARD 属性设置成所需标准,这两个基元与 Virtex-5 I/O 资源配合工作。有


关可用 I/O 标准的完整列表,请查阅第 6 章的表 6-39 “I/O 兼容性”。

节能时钟门控
Virtex-5 时钟架构提供一种直截了当的方法,为降低设计中某些部分的功耗而实现时钟门
控。多数设计都包含若干未使用的 BUFGMUX 资源。一个时钟可以驱动多个 BUFGMUX
输入,而相互间同步的 BUFGMUX 输出则可以驱动截然不同的逻辑区域。例如,如果将要
求始终运行的全部逻辑都限制在几个时钟控制区域,则一个 BUFGMUX 输出就可以驱动这
些区域。翻转另一 BUFGMUX 的使能,可以为停止可能节能的逻辑区域中的动态功率消耗
提供一种简单的方法。

20 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

全局时钟控制资源

XPower 工具估计节能情况,通过翻转 BUFGMUX 的使能或者将相应时钟网的频率设置为


0 MHz 来计算差值。

全局时钟缓冲器
每个 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 时钟缓冲器的各种配置、基元和使用模型。

Virtex-5 用户指南 www.xilinx.com/cn 21


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 基元

22 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

全局时钟控制资源

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 向后兼容。

Virtex-5 用户指南 www.xilinx.com/cn 23


UG190 (v3.1) 2007 年 9 月 11 日
R

第 1 章: 时钟资源

图 1-2 中的时序图用 BUFGCTRL 基元说明各种时钟切换条件。速度指标中明确提供了确


切的时序参数。

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-2: BUFGCTRL 时序图

• 在时间事件 1 之前,输出 O 为输入 I0。


• 在时间事件 1 处上升沿之前的 TBCCCK_CE 时段,CE0 和 S0 均置为 Low 无效。几乎在
同时,CE1 和 S1 均置为 High 有效。
• 在时间事件 3 之后的 TBCCKO_O 时段,输出 O 为输入 I1。这发生在 I0 (事件 2)从
High 向 Low 转换紧接 I1 从 High 向 Low 转换之后。
• 在时间事件 4 处,IGNORE1 置为有效。
• 在时间事件 5 处,CE0 和 S0 置为 High 有效,而 CE1 和 S1 置为 Low 无效。在时间
事件 6 之后的 TBCCKO_O 时段,输出 O 在不要求 I1 从 High 向 Low 转换的情况下从 I1
切换到 I0。
BUFGCTRL 的其他功能有:
• 在配置之后但在器件运行之前,预选 I0 和 I1 输入。
• 可以将配置后的初始输出选定为 High 或 Low。
• 仅用 CE0 和 CE1(S0 和 S1 固定为 High)选择时钟,无须等待预选的时钟从 High 向
Low 转换即可改变时钟选择。

24 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

全局时钟控制资源

表 1-4 概述了 BUFGCTRL 基元的属性。

表 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

图 1-3: BUFG 作为 BUFGCTRL


如图 1-4 中的时序图所示,输出是跟随在输入之后。

BUFG(I)

BUFG(O)
TBCCKO_O
ug190_1_04_032206

图 1-4: BUFG 时序图

Virtex-5 用户指南 www.xilinx.com/cn 25


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 1-5: BUFGCE 作为 BUFGCTRL


BUFGCE 的切换条件与 BUFGCTRL 的相似。如果 CE 输入在后续上升时钟沿之前为 Low,
则下一个时钟脉冲不通过时钟缓冲器,输出保持为 Low。在下一个时钟 High 脉冲期间,
CE 的任何电平变化都不起作用,直到时钟转换为 Low。禁用时钟后,输出保持为 Low。
不过,在禁用时钟的过程中,它会完成时钟 High 脉冲。
因为时钟使能线使用 BUFGCTRL 的 CE 引脚,所以选择信号必须满足建立时间要求。违反
这一建立时间可能导致毛刺信号。图 1-6 所示为 BUFGCE 的时序图。

BUFGCE(I)
TBCCCK_CE
BUFGCE(CE)

BUFGCE(O)
TBCCKO_O
ug190_1_06_032206

图 1-6: BUFGCE 时序图


除了切换条件外,BUFGCE_1 与 BUFGCE 相似。如果 CE 输入在后续下降时钟沿之前为
Low,则下一个时钟脉冲不通过时钟缓冲器,输出保持为 High。在下一个时钟 Low 脉冲期
间,CE 的任何电平变化都不起作用,直到时钟转换为 High。禁用时钟后,输出保持为
High。不过,在禁用时钟的过程中,它会完成时钟 Low 脉冲。
图 1-7 所示为 BUFGCE_1 的时序图。

26 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

全局时钟控制资源

BUFGCE_1(I)
TBCCCK_CE
BUFGCE_1(CE)

BUFGCE_1(O)

TBCCKO_O
ug190_1_07_032206

图 1-7: BUFGCE_1 时序图


BUFGMUX 和 BUFGMUX_1
BUFGMUX 是具有两个时钟输入、一个时钟输出和一条选择线的时钟缓冲器。此基元在
BUFGCTRL 的基础上将某些引脚连接到逻辑 High 或 Low。
图 1-8 所示为 BUFGMUX 与 BUFGCTRL 的关系。可以对 BUFGMUX 和 BUFGCTRL 使用
位置约束。

IGNORE1
GND
S CE1
VDD S1

BUFGMUX
I1 I1
O O
I0 I0

S
VDD S0
CE0
IGNORE0
GND
ug190_1_08_032206

图 1-8: BUFGMUX 作为 BUFGCTRL


因为 BUFGMUX 用 CE 引脚作为选择引脚,所以在使用选择功能时必须满足建立时间要
求。违反这一建立时间可能导致毛刺信号。
BUFGMUX 的切换条件与 BUFGCTRL 上 CE 引脚的相同。图 1-9 所示为 BUFGMUX 的时
序图。

TBCCCK_CE

I0

I1

O
TBCCKO_O TBCCKO_O
begin
switching using I1
ug190_1_09_032306

图 1-9: BUFGMUX 时序图

Virtex-5 用户指南 www.xilinx.com/cn 27


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 1-10: BUFGMUX_1 时序图


在图 1-10 中:
• 当前时钟是 I0。
• S 置为 High 有效。
• 如果 I0 当前为 Low,则多路复用器等待将 I0 置为 High 有效。
• 一旦 I0 为 High,则多路复用器输出保持为 High,直到 I1 从 Low 转为 High。
• 当 I1 从 Low 转为 High 时,输出切换到 I1。
• 如果满足了建立 / 保持要求,输出上就不会出现毛刺信号或短脉冲。

BUFGMUX_VIRTEX4
BUFGMUX_VIRTEX4 是具有两个时钟输入、一个时钟输出和一条选择线的时钟缓冲器。此
基元在 BUFGCTRL 的基础上将某些引脚连接到逻辑 High 或 Low。图 1-11 所示为
BUFGMUX_VIRTEX4 与 BUFGCTRL 的关系。

28 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

全局时钟控制资源

IGNORE1
GND
VDD CE1
S S1

BUFGMUX_VIRTEX4

I1 I1
O O
I0 I0

S
S0
CE0
VDD
IGNORE0
GND
ug190_1_11_032206

图 1-11: BUFGMUX_VIRTEX4 作为 BUFGCTRL


BUFGMUX_VIRTEX4 使用 S 引脚作为选择引脚。S 可随时切换而不引起毛刺。S 上的建立
/ 保持时间用于确定输出是否在切换到新时钟之前传送预选时钟的一个附加脉冲。在建立时
间 TBCCCK_S 之前以及在 I0 从 High 向 Low 转换之前,如果 S 如图 1-12 所示变化,则输
出不会传送 I0 的附加脉冲。如果 S 在其保持时间后发生变化,则输出会传送一个附加脉
冲。如果 S 违反建立 / 保持要求,则输出可能传送附加脉冲,但不会产生毛刺。在任一情
况下,输出都会在较慢时钟的三个时钟周期内转换到新时钟。
S0 和 S1 的建立 / 保持要求是对下降沿 (设 INIT_OUT = 0)而言,不像 CE0 和 CE1 的建
立 / 保持要求那样是对上升沿而言。
BUFGMUX_VIRTEX4 的切换条件与 BUFGCTRL 上 S 引脚的相同。图 1-12 所示为
BUFGMUX_VIRTEX4 的时序图。

I0

I1

O
TBCCKO_O
TBCCKO_O

ug190_1_12_032306

图 1-12: BUFGMUX_VIRTEX4 时序图


BUFGMUX_VIRTEX4 基元的其他功能有:
• 在配置之后预选 I0 和 I1 输入。
• 可以将配置后的初始输出选定为 High 或 Low。

Virtex-5 用户指南 www.xilinx.com/cn 29


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 1-13: 使用 BUFGCTRL 设计示例的异步多路复用器

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 有效时,禁用毛刺信号保护。

30 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

全局时钟控制资源

带时钟使能的 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-15: 带 CE 的 BUFGMUX_VIRTEX4 和 BUFGCTRL

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: 带 CE 的 BUFGMUX_VIRTEX4 的时序图

在图 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。

Virtex-5 用户指南 www.xilinx.com/cn 31


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 章 “时钟管理技术”。

XC5VLX30 has 8 Clock Regions XC5VLX330 has 24 Clock Regions


10 CLBs
10 CLBs

All clock regions


span half the die

All clock regions are 20 CLBs tall (10 CLBs above


and 10 CLBs below a horizontal clock line)

Center Column
Logic Resources ug190_1_17_042406

图 1-17: 时钟区域

32 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

区域时钟控制资源

表 1-5: Virtex-5 时钟区域


器件 时钟区域数
XC5VLX30 8
XC5VLX50 12
XC5VLX85 12
XC5VLX110 16
XC5VLX220 16
XC5VLX330 24
XC5VLX30T 8
XC5VLX50T 12
XC5VLX85T 12
XC5VLX110T 16
XC5VLX220T 16
XC5VLX330T 24
XC5VSX35T 8
XC5VSX50T 12
XC5VSX95T 16

区域时钟控制资源
区域时钟网络是一组独立于全局时钟网络的时钟网络。与全局时钟不同,区域时钟信号
(BUFR) 的跨度限于三个时钟区域,而 I/O 时钟信号只驱动一个区域。这些网络对于源同步
接口设计尤其有用。Virtex-5 I/O 组大小与一个时钟区域相同。
要理解区域时钟控制如何工作,重要的是要了解区域时钟信号的信号通路。Virtex-5 时钟
控制资源和网络由以下通路和组件构成:
• Clock Capable I/O
• I/O 时钟缓冲器 - BUFIO
• 区域时钟缓冲器 - BUFR
• 区域时钟网

Clock Capable I/O


典型时钟区域中有四个 clock-capable I/O 引脚对 (中心列有例外)。Clock-capable I/O
对是选择位置中的常规 I/O 对,与附近区域的时钟资源具有特殊硬件连接。有些全局时钟
输入也是 clock capable I/O。每个组中有四个专用 clock capable I/O 区。当用作时钟输入
时,clock-capable 引脚可以驱动 BUFIO 和 BUFR。这些引脚不能直接连接到全局时钟缓
冲器。如果用作单端时钟引脚,则如 “全局时钟缓冲器”中所述,必须使用引脚对的 P
端,因为只有这一引脚上存在直接连接。

Virtex-5 用户指南 www.xilinx.com/cn 33


UG190 (v3.1) 2007 年 9 月 11 日
R

第 1 章: 时钟资源

I/O 时钟缓冲器 - BUFIO


I/O 时钟缓冲器 (BUFIO) 是可以在 Virtex-5 器件中使用的一种时钟缓冲器。BUFIO 驱动 I/O
列内一个独立于全局时钟资源的专用时钟网。这样,BUFIO 就可以理想地适合源同步数据
采集 (传送 / 接收器时钟分配)。BUFIO 只能由位于同一时钟区域的 clock capable I/O 驱
动。典型的时钟区域中有四个 BUFIO。每个 BUFIO 可驱动同一区域 / 组中的一个 I/O 时钟
网络,区域时钟缓冲器 (BUFR) 也是如此。BUFIO 不能驱动逻辑资源 (CLB、Block RAM
等),因为 I/O 时钟网络只能覆盖同一组或时钟区域内的 I/O 列。

BUFIO 基元
BUFIO 其实就是一个时钟输入和时钟输出缓冲器。输入与输出之间有一个相位延迟。
图 1-18 所示为 BUFIO。表 1-6 列出了 BUFIO 的端口。可以对 BUFIO 使用位置约束。

BUFIO

O
I

ug190_1_18_032306

图 1-18: BUFIO 基元

表 1-6: BUFIO 端口列表和定义


端口名称 类型 宽度 定义
O 输出 1 时钟输出端口
I 输入 1 时钟输入端口

BUFIO 使用模型
在图 1-19 中,使用一个 BUFIO 用 clock capable I/O 驱动 I/O 逻辑。这在源同步应用中是
理想的实现方案,其中传送的时钟用于采集输入的数据。

34 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

区域时钟控制资源

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

Not all available BUFIOs are shown.


BUFR To Fabric

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-19: 在一个时钟区域中驱动 I/O 逻辑的 BUFIO

Virtex-5 用户指南 www.xilinx.com/cn 35


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 基元

表 1-7: BUFR 端口列表和定义


端口名称 类型 宽度 定义
O 输出 1 时钟输出端口
CE 输入 1 时钟使能端口。不能在 BYPASS 模式
下使用。
CLR 输入 1 异步清除分频逻辑,并将输出设置为
Low。不能在 BYPASS 模式下使用。
I 输入 1 时钟输入端口

关于 CE 引脚的附加说明
将 CE 置为有效 / 无效后,输出时钟信号关闭。当全局设置 / 复位 (GSR) 信号为 High 时,
BUFR 不翻转,即使 CE 保持为 High 也是如此。当 BUFR 输入端口上有时钟时,BUFR 输
出在 GSR 信号置为无效后翻转。

36 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

区域时钟控制资源

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 使用位置约束。

对于 BUFR_DIVIDE = 1 和 BUFR_DIVIDE = BYPASS,通过 BUFR 的传播延迟不同。当设


置为 1 时,延迟比 BYPASS 时稍长。所有其他分频系数都具有与 BUFR_DIVIDE = 1 时相
同的延迟。对于除 BYPASS 以外的所有可能分频来说,输入时钟与输出时钟之间的相位关
系均相同。
当使用 BUFR_DIVIDE 属性时,BUFR 的输入与输出之间的时序关系如图 1-21 所示。在本
示例中,BUFR_DIVIDE 属性设置为三。在此图之前,CLR 曾置为有效。

1 2 3 4

CE

CLR
TBRCKO_O TBRDO_CLRO TBRCKO_O

ug190_1_21_050906

图 1-21: 带 BUFR_DIVIDE 值的 BUFR 时序图

在图 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 的三分频速率翻转。

Virtex-5 用户指南 www.xilinx.com/cn 37


UG190 (v3.1) 2007 年 9 月 11 日
R

第 1 章: 时钟资源

BUFR 使用模型
对于要求跨时钟域或串并转换的源同步应用来说,BUFR 是理想的。与 BUFIO 不同,
BUFR 能够对 FPGA 中除 IOB 以外的逻辑资源进行时钟控制。图 1-22 是一个 BUFR 设计
示例。

To Region
Above

I/O Tile CLBs

I/O Tile CLBs


DSP
BRAM
Tile
I/O Tile CLBs

I/O Tile CLBs

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

图 1-22: 驱动各种逻辑资源的 BUFR

38 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

VHDL 和 Verilog 模板

区域时钟网
除了全局时钟树和网,Virtex-5 器件还包含区域时钟网。这些时钟树也是为低歪斜和低功
耗操作设计的。未用分枝都不连接。当所有逻辑资源都使用时,时钟树还管理负载 / 扇出。
区域时钟网的传播并非遍及整个 Virtex-5 器件,而是仅限于一个时钟区域。一个时钟区域
包含四个独立的区域时钟网。
要接入区域时钟网,BUFR 必须例化。一个 BUFR 最多可以驱动两个相邻时钟区域中的区
域时钟 (图 1-23)。顶部或底部区域中的 BUFR 只能相应接入下边或上边的一个相邻区
域。左侧的 BUFR 可以向中心列 I/O 馈送信号。

BUFRs

ug190_1_23_012306

图 1-23: 驱动多区域的 BUFR

VHDL 和 Verilog 模板
《库指南》中提供了所有时钟控制资源之基元的 VHDL 和 Verilog 代码以及 ISE 语言模板。

Virtex-5 用户指南 www.xilinx.com/cn 39


UG190 (v3.1) 2007 年 9 月 11 日
R

第 1 章: 时钟资源

40 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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-1: CMT 的位置

Virtex-5 用户指南 www.xilinx.com/cn 41


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

表 2-1 列举了不同 Virtex-5 器件中的 CMT、DCM 和 PLL 资源。


表 2-1: CMT、DCM 和 PLL 资源
可用的
器件 CMT 数 区名称
DCM
XC5VLX30 2 4 下半部:
XC5VLX30T DCM_ADV_X0Y0、DCM_ADV_X0Y1、PLL_ADV_X0Y0
XC5VSX35T
上半部:
DCM_ADV_X0Y2、DCM_ADV_X0Y3、PLL_ADV_X0Y1
XC5VLX50 6 12 下半部:
XC5VLX50T DCM_ADV_X0Y0、DCM_ADV_X0Y1、PLL_ADV_X0Y0
XC5VSX50T
DCM_ADV_X0Y2、DCM_ADV_X0Y3、PLL_ADV_X0Y1
XC5VLX85
XC5VLX85T DCM_ADV_X0Y4、DCM_ADV_X0Y5、PLL_ADV_X0Y2
XC5VSX95T 上半部:
XC5VLX110 DCM_ADV_X0Y6、DCM_ADV_X0Y7、PLL_ADV_X0Y3
XC5VLX110T
DCM_ADV_X0Y8、DCM_ADV_X0Y9、PLL_ADV_X0Y4
XC5VLX220
XC5VLX220T DCM_ADV_X0Y10、DCM_ADV_X0Y11、PLL_ADV_X0Y5
XC5VLX330
XC5VLX330T

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 倍
频,那么在每五个输入周期后或每九个输出周期后,输出的时钟的上升沿就会与输入
时钟的上升沿重合。

42 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 基元

Virtex-5 用户指南 www.xilinx.com/cn 43


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 数据手
册》中规定的范围内。时钟输入信号可以来自以下几种缓冲器之一:

44 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 的相位延迟将得不到补
偿,因而性能无法保证。

Virtex-5 用户指南 www.xilinx.com/cn 45


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 稳定下来。

46 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

DCM 端口

相移递增 / 递减输入 - PSINCDEC


相移递增 / 递减 (PSINCDEC) 输入信号必须与 PSCLK 同步。PSINCDEC 输入信号用于
PSEN 有效时递增或递减相移系数。其结果是使输出时钟移相。对于相位递减,
PSINCDEC 置为高电平,对于相位递减,置为低电平。当 CLKOUT_PHASE_SHIFT 属性设
置为 NONE 或 FIXED 时,此输入必须接地。

相移使能输入 - 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 输出时钟的相位与输入
不对齐。但是,仍可保持所有输出时钟之间的相对相位关系。

Virtex-5 用户指南 www.xilinx.com/cn 47


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 个周期中只发生一次相位对齐。

48 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 用作数据输出的进一步信息。

Virtex-5 用户指南 www.xilinx.com/cn 49


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

如果未使用动态配置端口,强烈建议使用 DCM_BASE 而不使用 DCM_ADV。


表 2-4: 映射到 DO 总线的 DCM 状态
DO 位 状态 描述
DO[0] 相移溢出 当 DCM 相移超过允许相移值时,或者当超过相移延迟
线的绝对延迟范围时,置为有效。如果未使用相移功能
(CLKOUT_PHASE_SHIFT=NONE),DO[0] 置为无效。
DO[1] CLKIN 停止 当输入时钟停止 (CLKIN 在一个或多个时钟周期内保
持为 High 或 Low)时,置为有效。当 CLKIN 停止时,
DO[1],CLKIN 停止状态位在九个 CLKIN 周期内置为有
效。当 CLKIN 重启时,CLK0 开始翻转,DO[1] 在九个
时钟周期内置为无效。
DO[2] CLKFX 停止 当 CLKFX 停止时置为有效。DO[2],CLKFX 停止状态
位,在 CLKFX 停止后的 260 个周期内置为有效。直到
DCM 复位后,CLKFX 才能恢复,DO[2] 才置为无效。
如果未使用 CLKFX/CLKFX180 输出,DO[2] 置为无效。
DO[3] CLKFB 停止 当反馈时钟停止 (CLKFB 在一个或多个时钟周期内保
持为 High 或 Low)时,置为有效。DO[3],CLKFB 停
止状态位,在 CLKFB 停止后的六个 CLKIN 周期内置为
有效。当 CLKFB 在瞬时停止后恢复时,CLKFB 停止状
态在六个 CLKIN 周期内置为无效。CLKFB 偶尔遗漏不
影响 DCM 操作。但是,CLKFB 长时间停止会导致
DCM 失锁。一旦失锁,DCM 就需要复位以恢复操作。
当未使用 DCM 的 DLL 部分时 (例如,当仅使用
CLKFX 输出时),可保持 CLKFB 不连接。在这种情况
下,DO[3] 置为无效。
DO[15:4] 未指定

当 (在复位或锁定过程中)LOCKED 为低电平时,所有状态信号均置为无效。

动态重配置就绪输出 - DRDY
动态重配置就绪 (DRDY) 输出引脚为 DCM 的动态重配置功能提供对 DEN 信号的响应。
《Virtex-5 配置指南》的 “动态重配置”一章提供了关于 DRDY 引脚的进一步信息。

50 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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。将此属性设置为输入
周期值时效果最佳。

Virtex-5 用户指南 www.xilinx.com/cn 51


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 引脚。

52 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 设置的频率下限。
• 需要更大的绝对相移范围。

Virtex-5 用户指南 www.xilinx.com/cn 53


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

CLKIN_PERIOD 此属性指定源时钟周期,以帮助 实数 ns 数 0.0


DCM 调整到最佳 CLKFX/CLKFX180
输出。

CLKIN_DIVIDE_BY_2 此属性允许为满足 DCM 输入时钟频 布尔值:FALSE 或 TRUE FALSE


率的要求而将输入时钟频率减半。

CLKOUT_PHASE_SHIFT 此属性指定相移模式。 字符串:NONE、FIXED、 NONE


VARIABLE_POSITIVE、
VARIABLE_CENTER 或
DIRECT

DESKEW_ADJUST 此属性影响反馈通路中的延迟量, 字符串: SYSTEM_


应当用于源同步接口。 SYSTEM_SYNCHRONOUS SYNCHRONOUS

SOURCE_SYNCHRONOUS
DFS_FREQUENCY_MODE 此属性指定频率合成器的频率模式。 字符串:LOW 或 HIGH LOW

54 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

DCM 属性

表 2-6: DCM 属性 ( 续表 )
DCM 属性名称 描述 值 默认值
DLL_FREQUENCY_MODE 此属性指定 DLL 的频率模式。 字符串:LOW 或 HIGH LOW

DUTY_CYCLE_CORRECTION 此属性控制 DCM 1X 输出 (CLK0、 布尔值:TRUE 或 FALSE TRUE


CLK90、CLK180 和 CLK270),产
生 50/50 占空比。请保留此属性的
默认值设置。
DCM_PERFORMANCE_MODE 此属性允许在最高频率 / 最小抖动和 字符串:MAX_SPEED 或 MAX_SPEED
低频率 / 最大相移范围之间进行选 MAX_RANGE
择。

FACTORY_JF DLL_FREQUENCY_MODE=LOW 默 BIT_VECTOR 0xF0F0


认 (0xF0F0)。
DLL_FREQUENCY_MODE=HIGH
默认 (0xF0F0)。

PHASE_SHIFT 此属性指定相移分子。取值范围取 整数:-255 到 1023 0


决于 CLKOUT_PHASE_SHIFT 和时
钟频率。

STARTUP_WAIT 当此属性设置成 TRUE 时,配置启 布尔值:FALSE 或 TRUE FALSE


动顺序在指定周期中等待,直到
DCM 锁定。

Virtex-5 用户指南 www.xilinx.com/cn 55


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 周边的布线,确定是否必须插入延迟以补偿时钟源或反馈通路。因此,需要使
用专用布线获得可预见的去歪斜功能。

56 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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)
信号为高。

Virtex-5 用户指南 www.xilinx.com/cn 57


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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)。

58 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

DCM 设计指南

Data Input
VCCO
FF
Into the
D Q FPGA

CLK DCM
Source IBUFG
CLKIN CLK0

CLKFB
DCM
Power VCCAUX
Regulator

Feedback Tap Delays


System-Synchronous Source-Synchronous
Default Setting Setting (Delay set to zero)

VCCINT
ug190_2_04_042506

图 2-4: DCM 和反馈 tap 延迟单元

此延迟单元允许调整时钟源与 CLK0 之间的有效时钟延迟,以保证器件中 IOB 输入触发器


的非正保持时间。向 DCM 反馈通路增加延迟可缩短从 FPGA 时钟输入引脚到任意触发器
时钟输入的实际时钟通路的有效延迟。缩短时钟延迟可延长输入触发器中显示的建立时间
并缩短所有所需的正保持时间。时钟通路延迟包括通过 IBUFG、布线、DCM、BUFG 和时
钟树到达目标触发器的延迟。如果反馈延迟等于时钟通路延迟,则有效时钟通路延迟为
零。

系统同步设置 (默认)
在默认情况下,将反馈延迟设置为系统同步模式。对系统同步系统的主要时序要求是非正
保持时间 (或最短正保持时间)以及最短时钟到输出时间和建立时间。较短的时钟到输出
时间和建立时间可缩短系统时钟周期。在理想情况下,DLL 的用途是将时钟延迟清零,以
产生较短的时钟到输出时间和非正保持时间。DESKEW_ADJUST 的系统同步设置 (默认)
配置反馈延迟单元,以保证所有输入 IOB 寄存器都具有非正保持时间。添加到反馈通路的
具体延迟数字取决于器件尺寸。这是用表征法确定的。在时序报告中,这是作为时序缩减
包括在由 TDCMINO 参数表示的输入时钟通路中。如图 2-4 所示,在默认设置中,反馈通路
包括 tap 延迟 (红色线)。《Virtex-5 数据手册》中的引脚对引脚时序参数 (有 DCM)部
分反映 DCM 在系统同步模式下时的建立、保持和时钟到输出时间。

源同步设置
当 DESKEW_ADJUST 设置为源同步模式时,DCM 反馈延迟单元设置为零。如图 2-4 所
示,在源同步模式下,DCM 时钟反馈延迟单元设置成取样窗口最小化。与系统同步模式相
比,这样会导致较长的正保持时间和时钟到输出时间。《Virtex-5 数据手册》中的源同步
开关特性部分反映 DCM 在系统同步模式下时源同步设计的各种时序参数。

Virtex-5 用户指南 www.xilinx.com/cn 59


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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。

60 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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。

Virtex-5 用户指南 www.xilinx.com/cn 61


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

绝对范围 (可变中心模式)= ± FINE_SHIFT_RANGE ÷ 2


可变中心模式令 DCM 在延迟线中间设置零相位歪斜点,从而允许从 -255/256 对称地动态
扫描到 +255/256。这将总延迟线范围一分为二。
绝对范围 (固定模式)= ± FINE_SHIFT_RANGE
在固定模式下,配置过程中将相移设置在 -255/256 到 +255/256 的范围内。

绝对范围 (可变正相移模式和直接模式)= + FINE_SHIFT_RANGE


在可变正相移模式和直接模式下,相移仅在正范围内进行。DCM 在延迟线起始处设置零相
位歪斜点。这样产生的整条延迟线都在一个方向上。
要确定每一应用的限制范围,PHASE_SHIFT 属性和 FINE_SHIFT_RANGE 参数都需要考
虑。“相移示例”部分说明了可能的方案。
在可变和直接模式下,当 PSEN 输入有效时,PHASE_SHIFT 值可以由 PSINCDEC 确定与
PSCLK 同步动态增减。

相移示例
以下使用示例考虑到 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。

62 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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)

For frequency between 50 - 100 MHz


(period 10 - 20 ns). At 50 MHz, use
CLK0 PHASE_SHIFT= 0 - 127 for the
first 10 ns.
CLK0(50 MHz)
Use CLK180 with PHASE_SHIFT= 0 - 127
for the next 10 ns.
CLK180(50 MHz)
For frequency between 25 - 50 MHz
(period 20 - 40 ns). At 25 MHz, use
CLK0 PHASE_SHIFT= 0 - 63 for the
first 10 ns.
CLK0(25 MHz)
Use CLK90 with PHASE_SHIFT= 0 - 63
for the next 10 ns. CLK90(25 MHz)

Use CLK180 with PHASE_SHIFT= 0 - 63


for the next 10 ns. CLK180(25 MHz)

Use CLK270 with PHASE_SHIFT= 0 - 63 CLK270(25 MHz)


for the last 10 ns.
ug0190_2_05_032506

图 2-5: 固定相移示例

在可变模式下,通过将 PSEN 置为在一个 PSCLK 周期内有效来改变相移系数。在启动


PSEN 的 PSCLK 时钟周期处,PSINCDEC 的输入电平决定相移是增还是减。PSINCDEC
的 High 状态增加相移,Low 状态减少相移。
在去歪斜电路增减了相应相移之后,信号 PSDONE 置为在一个 PSCLK 周期内 High 有效。
这样就可以执行下一变化了。
用户接口与物理实现不同。用户接口将相移描述为时钟周期的一个分量 (N/256)。物理实现
将适当数量的缓冲级 (每个 DCM_TAP)添加到时钟延迟中。DCM_TAP 的粒度限制较高
时钟频率下的相位分辨率。
除 DIRECT 模式以外,所有相移模式都需要调整温度和电压。因此,VCC 或温度调整不改
变相移。DIRECT 相移直接控制 DCM_TAP,所以不需要调整温度或电压。改变 VCC/ 温度
比会导致相移在特定电压和温度下与 DCM_TAP 大小成比例变化。

PSEN、PSINCDEC、PSCLK 和 PSDONE 的相互作用


可变和直接相移模式由 PSEN、PSINCDEC、PSCLK 和 PSDONE 端口控制。另外,相移
溢出 (DO[0]) 状态指示何时相移计数器已经达到相移延迟线末端或最大值 (对于可变模式
是 ±255,对于直接模式是 +1023)。
DCM 锁定之后,VARIABLE_POSITIVE 和 VARIABLE_CENTER 模式下的起始相由
PHASE_SHIFT 值确定。DIRECT 模式下的起始相始终为 0,与 PHASE_SHIFT 属性指定的
值无关。仅当 “动态重配置”提供具体 “加载相移值”命令时,才能将 DIRECT 模式的非
零 PHASE_SHIFT 值加载到 DCM。有关详情,请参阅 《Virtex-5 配置指南》中的 “技巧”
部分。DCM 输出时钟的相位根据 PSEN、PSINCDEC、PSCLK 和 PSDONE 的相互作用在
起始相位或动态重配置相位的基础上递增 / 递减。

Virtex-5 用户指南 www.xilinx.com/cn 63


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

PSEN、PSINCDEC 和 PSDONE 与 PSCLK 同步。当 PSEN 置为在一个 PSCLK 时钟周期内


有效时,开始相位递增 / 递减。PSINCDEC 为 High 时开始递增,PSINCDEC 为 Low 时开
始递减。每次递增向 DCM 时钟输出的相移增加 1/256 个 CLKIN 周期。同样,每次递减从
该相移减去 1/256 个 CLKIN 周期。PSEN 必须恰好在一个 PSCLK 周期内有效;否则不能
保证相移只递增 / 递减一次。当相移完成时,PSDONE 恰好在一个时钟周期内为 High。完
成一次相移操作所需的时间会变化。因此,必须监测 PSDONE,以掌握相移状态。在启动
PSEN 与标记 PSDONE 之间,DCM 输出时钟从其原始相移向递增 / 增减后的相移逐渐变
化。PSDONE 置为 High 表示递增或递减的完成。PSDONE 发出 High 脉冲之后,可以开
始另一次递增 / 递减。
图 2-6 所示为相移端口的相互作用。

PSCLK

PSEN

PSDONE

PSINCDEC
ug190_2_06_032506

图 2-6: 相移时序图

在 PSEN 启动后某时刻,PSDONE 仍然在一个 PSCLK 周期内发出 High 脉冲 (如图 2-6


所示)。不过,相移溢出引脚 STATUS(0) 或 DO(0) 为 High 以标记这一状态,而且不执行
任何相位调整。

相移溢出
当以下两种情况之一成立时,相移溢出 (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。

64 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 状态。

Virtex-5 用户指南 www.xilinx.com/cn 65


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

将 DCM 连接到 Virtex-5 器件中的其他时钟资源


大多数 DCM 功能都需要连接到专用的时钟资源,包括专用的时钟 I/O (IBUFG)、时钟缓冲
器 (BUFGCTRL) 和 PLL。这些时钟资源位于 Virtex-5 器件的中央列中。本部分就如何将
DCM 连接到专用时钟资源提供指南。

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 引脚的连接。

PLL 到 DCM 和 DCM 到 PLL


图 2-7 概述了同一 CMT 块中 DCM 与 PLL 之间的专用连接。PLL 可以使用专用连接驱动
同一 CMT 块中的两个 DCM 之一。同样,DCM 可以使用专用连接驱动同一 CMT 块中的
PLL。PLL 与 DCM 之间不需要 BUFGCTRL。

66 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

应用示例

From any IBUFG implementation


From any BUFG implementation CLKIN

DCM1 To Global
Routing (BUFG)
CLKFB
PLL to DCM Input

DCM to PLL Input

CLKIN

PLL To Global
Routing (BUFG)
CLKFBIN
DCM to PLL Input

PLL to DCM Input


CLKIN

DCM2 To Global
Routing (BUFG)
CLKFB
ug190_2_07_072307

图 2-7: 同一 CMT 块中 DCM 与 PLL 的连接

DCM 到 PMCD 和 PMCD 到 DCM


Virtex-5 器件中没有 PMCD 块。不过,可以用 PLL 实现到 PMCD 的一个映射,这个映射
有一定限制。有关详情,请参阅第 3 章的 “Virtex-4 PMCD 传统模式下的 PLL”。

应用示例
Virtex-5 DCM 可用于各种有用的创新应用。以下示例介绍一些较常见的应用。

标准用法
图 2-8 中电路所示为应用了内部反馈以及 RST 和 LOCKED 引脚的 DCM_BASE。此示例介
绍的是最简单的 DCM 用例。

Virtex-5 用户指南 www.xilinx.com/cn 67


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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)。

68 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

应用示例

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

图 2-9: 使用有外部反馈的 DDR 寄存器的板级时钟

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-10: 使用有外部反馈的 OBUF 的板级时钟

Virtex-5 用户指南 www.xilinx.com/cn 69


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 器
件之间的系统时钟去歪斜。

70 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

应用示例

Virtex-5 FPGA VCC ODDR


IBUFG BUFG
DCM_ADV D1 Q
CLKIN CLK0 D2
GND
CLKFB CLK90
IBUFG C
CLK180
CLK270
RST
CLK2X
PSINCDEC CLK2X180
PSEN CLKDV
PSCLK CLKFX
DADDR[6:0] CLKFX180
DI[15:0] INV OBUF
DWE
DEN LOCKED
DCLK DO[15:0]
to
RST
BUFG
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
DO[15:0]
DEN
DCLK

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

This circuit can be duplicated to multiple Virtex devices. Use CLKDLL


for Virtex and Virtex-E devices, DCM for Virtex-II and Virtex-II Pro devices.
ug190_2_12_032506

图 2-12: 具有连接到其他 Virtex 器件的内部去歪斜的电路板去歪斜

Virtex-5 用户指南 www.xilinx.com/cn 71


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

图 2-13 中的示例所示为从 Virtex-5 FPGA 到非 Virtex FPGA 组件的接口。

Virtex-5 FPGA VCC ODDR


IBUFG BUFG
DCM_ADV D1 Q
CLKIN CLK0 D2
CLK90 GND
CLKFB C
IBUFG CLK180
CLK270
CLK2X
RST CLK2X180
CLKDV
PSINCDEC CLKFX
PSEN CLKFX180
PSCLK

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: 具有连接到其他组件的内部去歪斜的电路板去歪斜

72 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

应用示例

两个 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

IBUFG DCM_ADV BUFG

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-14: 两个 DCM 之间的时钟切换

Virtex-5 用户指南 www.xilinx.com/cn 73


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

从 PLL 输入的 DCM


PLL 可用来驱动 DCM,以便在输入 DCM 之前减少源时钟的输入抖动。这种结构可减少源
时钟抖动,同时使用户能够访问所有可用的 DCM 时钟输出。图 2-15 所示为 PLL 使用专
用布线资源 (没有 BUFG)驱动同一 CMT 块内的 DCM。

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

图 2-15: PLL 驱动 DCM

74 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

应用示例

也可以用 DCM 驱动 PLL。这种结构可减少源时钟和 DCM 时钟输出的总体抖动。在这种情


况下,最多只有两个 DCM 输出时钟可以驱动 PLL。所以,最多只有两个 DCM 时钟可以进
入 PLL 并受益于减少的抖动。
图 2-16 和图 2-17 所示为 DCM 驱动 PLL 的两种情况。图 2-16 所示为一个 CMT 内 CDM
与 PLL 之间直接连接。在没有通过全局缓冲器 (BUFG) 布线的 CMT 内,只有一个 DCM 输
出可以用直接连接驱动 PLL。DCM 和 PLL 可以在同一个或不同的 CMT 内。图 2-17 所示
为两个 DCM 驱动 PLL。在这种情况下,还必须在驱动 PLL 输入时钟的两个 DCM 时钟之间
插入 BUFG。DCM 和 PLL 可以在同一个或不同的 CMT 内。有关 PLL 的详情,请参阅第 3
章 “锁相环 (PLL)”。

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-16: DCM 与 PLL 之间直接连接

Virtex-5 用户指南 www.xilinx.com/cn 75


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 2-17: 两个 DCM 驱动 PLL

VHDL 和 Verilog 模板及时钟控制向导


《库指南》中提供了所有基元的 VHDL 和 Verilog 实例模板。另外,ISE 软件中的 “时钟控
制向导”可生成 VHDL 和 Verilog 文件。“时钟控制向导”可设置相应的 DCM 属性、输入
/ 输出时钟和通用缓冲器。

76 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 置为有效表示完成信号的锁定。

Virtex-5 用户指南 www.xilinx.com/cn 77


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 信号也置为有
效。

78 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

DCM 时序模型

可变相移
在图 2-20 中,CLK0 输出用同步用户接口中的动态相移调整移相。当 DCM 完成一次相位
调整时,将 PSDONE 信号置为在一个周期内有效。在将 PSDONE 置为无效之后,可以将
PSEN 再次置为有效,为下次相移做准备。
如图 2-20 所示,所有可变相移的控制和状态信号都与 PSCLK 的上升沿同步。

CLKIN

CLK0
2
1
PSCLK

PSEN
TDMCCK_PSEN

PSDONE TDMCKO_PSDONE
TDMCCK_PSINCDEC

PSINCDEC D.C. D.C.


ug190_2_20_0042406

图 2-20: 相移示例:可变

• 时钟事件 1
在时钟事件 1 之前的 TDMCCK_PSEN 处,PSEN 置为有效。PSEN 必须恰好在一个时钟
周期内有效;否则不能保证相移只递增 / 递减一次。另外,在时钟事件 1 之前的
TDMCCK_PSINCDEC 处,PSINCDEC 值确定它是递增 (逻辑 High)还是递减 (逻辑
Low)。
• 时钟事件 2
在时钟事件 2 之前的 TDMCKO_PSDONE 处,将 PSDONE 置为有效,以指示 DCM 输出的
一次递增或递减。当相移完成时,PSDONE 恰好在一个时钟周期内为 High。完成一次
相移操作所需的时间会变化。因此,必须监测 PSDONE,以掌握相移状态。

Virtex-5 用户指南 www.xilinx.com/cn 79


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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
输出停止翻转。

80 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

传统器件支持

传统器件支持
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] 不可用。

Virtex-5 用户指南 www.xilinx.com/cn 81


UG190 (v3.1) 2007 年 9 月 11 日
R

第 2 章: 时钟管理技术

82 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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 的输出不是扩展频谱。

Virtex-5 用户指南 www.xilinx.com/cn 83


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

From any IBUFG implementation


From any BUFG implementation

To any BUFG
DCM1 implementation

clkout_pll<5:0> To any BUFG


PLL
implementation

DCM2 To any BUFG


implementation

ug190_3_01_071207

图 3-1: Virtex-5 CMT 框图

锁相环 (PLL)
Virtex-5 器件最多包含六个 CMT 模块。PLL 的主要用途是作为广谱频率的频率合成器,并
且与 CMT 的 DCM 配合作为外部或内部时钟的抖动滤波器。
图 3-2 所示 PLL 框图提供了 PLL 组件的一般概况。

84 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

简介

D PFD CP LF VCO O0
Clock Pin
O1

O2
M
O3

O4

O5
ug190_3_02_030506

图 3-2: Virtex-5 PLL 框图


输入多路复用器从 IBUF、BUFG、通用布线或某个 DCM 中选择参考和反馈时钟。每个时
钟输入有一个可编程计数器 D。相位 / 频率检测器 (PFD) 比较输入 (参考)时钟和反馈时
钟的相位和频率。仅考虑上升沿即可,因为只要保持最小 High/Low 脉冲,则占空比无关
紧要。PFD 用来生成与两个时钟之间的相位和频率差成比例的信号。此信号驱动电荷泵
(CP) 和环路滤波器 (LF),以便为 VCO 生成参考电压。PFD 为电荷泵和环路滤波器生成一
个上升或下降信号,以确定 VCO 应该在较高频率还是较低频率工作。当 VCO 工作频率过
高时,PFD 触发一个下降信号,致使控制电压下降,从而降低 VCO 的工作频率。当 VCO
工作频率过低时,上升信号会提高电压。VCO 产生八个输出相位。每个输出相位都可选作
输出计数器的参考时钟 (图 3-3)。可以根据给定的客户设计对每个计数器独立编程。另
外还提供了一个专用计数器 M。此计数器控制 PLL 的反馈时钟,以实现大范围频率合成。

Virtex-5 用户指南 www.xilinx.com/cn 85


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

General
Routing

Clock Lock Detect


Lock
Switch Lock Monitor
Circuit

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

图 3-3: PLL 详细框图

86 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

一般用法说明

一般用法说明

PLL 基元
图 3-4 所示为两个 Virtex-5 PLL 基元 PLL_BASE 和 PLL_ADV。

CLKIN1 CLKOUT0 CLKIN1 CLKOUT0


CLKOUT1 CLKIN2 CLKOUT1
CLKFBIN CLKOUT2 CLKFBIN CLKOUT2
RST CLKOUT3 RST CLKOUT3
CLKOUT4 CLKINSEL CLKOUT4
CLKOUT5 DADDR[4:0] CLKOUT5
CLKFBOUT DI[15:0] CLKFBOUT
DWE CLKOUTDCM0
DEN CLKOUTDCM1
DCLK CLKOUTDCM2
REL CLKOUTDCM3
CLKOUTDCM4
CLKOUTDCM5
CLKFBDCM
LOCKED LOCKED
DO[15:0]
DRDY

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

Virtex-5 用户指南 www.xilinx.com/cn 87


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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。

Virtex-5 PLL 是为支持时钟网络去歪斜、频率合成和减少抖动而设计的混合信号模块。本


部分详细讨论这三种工作模式。可用以下关系式确定压控振荡器 (VCO) 的工作频率:
M
F VCO = F CLKIN × ----- 公式 3-1
D
M 公式 3-2
F OUT = F CLKIN × ---------
DO
其中的 M、D 和 O 计数器如图 3-3 所示。
六个 “O”计数器可以独立编程。例如,O0 可以编程为进行二分频操作,而 O1 编程为进
行三分频操作。唯一的限制是 VCO 的工作频率对所有输出计数器来说必须相同,因为一个
VCO 驱动所有计数器。

时钟网络去歪斜
在许多情况下,设计人员在其 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 时钟。在此示例中,参考时钟和输出时钟之间没
有相位关系,但是各输出时钟之间要求有相位关系。

88 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

一般用法说明

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=4 Memory Interface

D0=8 PCI 66

D=16 PCI 33
ug190_3_05_040906

图 3-5: 用作频率合成器的 PLL

抖动滤波器
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 工作频率下,只可能有离散的占空比。“计数器控制”部分进一步讨论了确
定输出占空比的计数器设置。

Virtex-5 用户指南 www.xilinx.com/cn 89


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 的值附加约束。这样做可以进一步限制可能作为第二个输出频率的输出频率
数。继续这一过程,直到选定所有输出频率。

90 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

一般用法说明

用来确定允许的 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

其目的是找到与 VCO 的理想工作点最接近的 M 值。用最小 D 值来开始这一过程。其目的


是在保持 ƒVCO 尽可能高的同时使 D 和 M 值尽可能小。

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 输出反映状态
信号。

Virtex-5 用户指南 www.xilinx.com/cn 91


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 的分频值。

92 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

一般用法说明

PLL 属性
表 3-4: PLL 属性
属性 类型 允许值 默认 描述
COMPENSATION 字符串 SYSTEM_SYNCHRONOUS SYSTEM_ 指定 PLL 对输入时钟的相位补偿。
SOURCE_SYNCHRONOUS SYNCHRONOUS SYSTEM_SYNCHRONOUS 尝试补偿
所有时钟延迟,以实现 0 保持时间。当
与数据一起提供时钟从而使其与时钟
同步时,使用
SOURCE_SYNCHRONOUS。
由软件自动选择的其他属性:
INTERNAL
EXTERNAL
DCM2PLL
PLL2DCM

BANDWIDTH 字符串 HIGH OPTIMIZED 指定影响 PLL 的抖动、相位容限及其


LOW 他特性的 PLL 编程算法。
OPTIMIZED

CLKOUT[0:5]_DIVIDE 整数 1 到 128 1 如果需要不同的频率,指定相应


CLKOUT 时钟输出的分频量。此值与
FBCLKOUT_MULT 和
DIVCLK_DIVIDE 值相结合,将确定输
出频率。

CLKOUT[0:5]_PHASE 实数 0.0 到 360.0 0.0 允许以偏移度数指定相关 CLKOUT 时


钟输出的输出相位关系 (即,90 指示
90°或 ¼ 周期的相位偏移,而 180 指
示 180°或 ½ 周期的相位偏移)。

CLKOUT[0:5]_ 实数 0.01 到 0.99 0.50 以百分数指定相关 CLKOUT 时钟输出


DUTY_CYCLE 的占空比 (即,0.50 将产生 50% 的占
空比)。

CLKFBOUT_MULT 整数 1 到 64 1 如果需要不同的频率,指定所有
CLKOUT 时钟输出的倍频量。此数字
与相应的 CLKOUT#_DIVIDE 值相结
合,将确定输出频率。

DIVCLK_DIVIDE 整数 1 到 52 1 指定所有输出时钟相对于输入时钟的
分频比。

CLKFBOUT_PHASE 实数 0.0 到 360.0 0.0 以度数指定时钟反馈输出的相位偏移。


反馈时钟的移相导致对 PLL 的所有输
出时钟的负相移。

REF_JITTER 实数 0.000 到 0.999 0.100 允许为参考时钟指定所期望的抖动指


标,以便更好地优化 PLL 性能。当此
抖动未知时,OPTIMIZED 的带宽设置
将尝试为输入时钟控制选择最佳参数。
如果已知此抖动,则应以输入时钟上
预期抖动的 UI 百分数 (最大峰间值)
指定提供的值。

CLKIN1_PERIOD 实数 1.408 到 52.630 0.000 以 ns 数指定 PLL 的 CLKIN1 输入的输


入周期。分辨率可高达 ps 级。此信息
是强制性的,必须提供。

Virtex-5 用户指南 www.xilinx.com/cn 93


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

表 3-4: PLL 属性 ( 续表 )
属性 类型 允许值 默认 描述
CLKIN2_PERIOD 实数 1.408 到 52.630 0.000 以 ns 数指定 PLL 的 CLKIN2 输入的输
入周期。分辨率可高达 ps 级。此信息
是强制性的,必须提供。

RESET_ON_LOSS 字符串 FALSE FALSE 必须设置成 FALSE,硅片中不支持。


_OF_LOCK

PLL CLKIN1 和 CLKIN2 用法


CLKIN1 是 PLL 的通用输入。CLKIN2 引脚用来在工作过程中按照 CLKINSEL 引脚的选择
在 CLKIN1 和 CLKIN2 之间动态切换。如果 CLKIN1 和 CLKIN2 都使用,并且 PLL 输入时
钟由全局时钟引脚驱动,那么对两个时钟信号引脚的布局有几项限制。CLKIN1 只能来自
IBUFG[4-0]。CLKIN2 只能来自 IBUFG[9-5]。此外,CLKIN2 必须根据 CLKIN1 的值映射
到特定位置。这些规则说明如下:
如果 CLKIN1 连接到 IBUFG [x],则 CLKIN2 必须是同样类型的 IBUFG [y]。表 3-5 所示为
通用时钟引脚的配对。
表 3-5: 映射位置
CLKIN1 CLKIN2
[0] [5]
[1] [6]
[2] [7]
[3] [8]
[4] [9]

94 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

一般用法说明

当 PLL 输入时钟由全局时钟树 (BUFG) 驱动时,两个时钟输入必须连接到同样类型的时钟


输入。不可能用 IBUFG 驱动一个 PLL 时钟输入却用 BUFG 驱动另一个 PLL 时钟输入。
以下两个表格对应 CLKIN1 和 CLKIN2 映射 Virtex-5 的全局时钟 IBUFG 引脚。Virtex-5 器
件上半部中的 PLL 由组 3 的全局时钟引脚驱动,可以按表 3-6 所列配对。
表 3-6: 上半部中 PLL 的配对
CLKIN1 CLKIN2
IO_L9P_GC_3 IO_L4P_GC_3
IO_L8P_GC_3 IO_L3P_GC_3
IO_L7P_GC_3 IO_L2P_GC_3
IO_L6P_GC_3 IO_L1P_GC_3
IO_L5P_GC_3 IO_L0P_GC_3

Virtex-5 器件下半部中的 PLL 由组 4 的全局时钟引脚驱动,可以按表 3-7 所列配对。


表 3-7: 下半部中 PLL 的配对
CLKIN1 CLKIN2
IO_L9P_GC_4 IO_L4P_GC_4
IO_L8P_GC_4 IO_L3P_GC_4
IO_L7P_GC_4 IO_L2P_GC_4
IO_L6P_GC_4 IO_L1P_GC_4
IO_L5P_GC_4 IO_L0P_GC_4

关于这些配对的其他重要说明:
• 引脚的描述性名称不含其他可能的多用途功能,如 _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 输出都会补偿此通路的延迟。

Virtex-5 用户指南 www.xilinx.com/cn 95


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

计数器控制
PLL 输出计数器使用 DIVIDE、DUTY_CYCLE 和 PHASE 的组合提供各种各样的合成时钟。
图 3-6 说明了计数器设置如何影响计数器输出。
顶端的波形代表 PLL 模式下 VCO 的任一输出。

Counter Clock Input


(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: 输出计数器时钟合成示例

96 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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),那么无论输入频率如何都会保持这种关系。

Virtex-5 用户指南 www.xilinx.com/cn 97


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

45°
90°
VCO 135°
8 Phases
180°
225°

270°

315°
O0

Counter O1
Outputs O2

O3

One Cycle Delay


ug190_03_08_032506

图 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: 输入时钟切换

98 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

图 3-10: 使用两个 BUFG 的时钟去歪斜


对实现反馈有某些限制。CLKFBOUT 输出可用来提供反馈时钟信号。根本性的限制是两个
对 PFD 的输入频率必须完全相同。因此,必须满足以下关系式:

f IN f VCO
------- = f FB = ------------ 公式 3-8
D M

作为例子,如果 ƒIN 是 166 MHz,D = 1,M = 3,O = 1,则 VCO 和时钟输出的频率都是


498 MHz。因为反馈通路中的 M 值是 3,所以 PFD 上的两个输入频率都是 166 MHz。
另一种更复杂的情况是输入频率为 66.66 MHz,D = 2,M = 15,O = 2。在这种情况下,
VCO 的频率是 500 MHz,而 O 的输出频率是 250 MHz。所以,PFD 上的反馈频率是
500/15 即 33.33 MHz,与 PFD 上输入时钟频率的 66.66MHz/2 相符。

Virtex-5 用户指南 www.xilinx.com/cn 99


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

如果 PLL 用作频率合成器或抖动滤波器,并且 PLL 输入时钟与 PLL 输出时钟之间不要求有


相位关系,那么 PLL 反馈可以是 PLL 的内部反馈。因为反馈时钟根本不通过内核电源供
电,所以反馈时钟不受内核电源噪声干扰,因而 PLL 的性能应有所提升。当然,CLKIN 信
号和 BUFG 上引入的噪声依然存在 (图 3-11)。

IBUFG BUFG

CLKIN1 CLKOUT0 To Logic


CLKFBIN CLKOUT1
RST CLKOUT2
CLKOUT3
PLL CLKOUT4
CLKOUT5
CLKFBOUT

UG190_3_11_040906

图 3-11: 带内部反馈的 PLL

零延迟缓冲器
PLL 还可用来生成零延迟缓冲器时钟。零延迟缓冲器可用于具有一个时钟信号扇出对多个
相互间低歪斜的目标的应用。这种配置如图 3-12 所示。其中,反馈信号在片外传递,而
电路板迹线反馈设计成与通向外部组件的迹线匹配。在这种配置中,假定时钟边沿在
FPGA 的输入与外部组件的输入处对齐。在反馈通路中,对允许的最大延迟有限制。

IBUFG BUFG OBUF


Inside FPGA
CLKIN1 CLKOUT0
To
CLKOUT1 External
Components
CLKFBIN
CLKOUT2
RST
CLKOUT3

CLKOUT4
PLL
CLKOUT5 BUFG

CLKFBOUT

ug190_3_12_050906

图 3-12: 零延迟缓冲器

100 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

PLL 使用模型

在某些情况下,因为外部组件输入电容与 FPGA 反馈通路电容之间存在负载差,所以不会


实现精准对齐。例如,外部组件可有 1 pF 到 4 pF 的输入电容,而 FPGA 的输入电容是 8
pF 左右。信号斜率存在差异,这主要是歪斜。为了确保时序,设计人员有必要了解这种效
应。

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-13: DCM 驱动一个 PLL

Virtex-5 用户指南 www.xilinx.com/cn 101


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 3-14: PLL 驱动一个 DCM

102 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

应用指南

PLL 到 PLL 的连接


可以级联 PLL,以便生成更大范围的时钟频率。频率范围的限制仍然适用。公式 3-9 所示
为最终输出频率与输入频率之间的关系。图 3-15 所示为两个 PLL 的计数器设置。未定义
第二个 PLL 的输出时钟与输入时钟之间的相位关系。要级联 PLL,请将第一个 PLL 的输出
连接到 BUFG,然后再连接到第二个 PLL 的 CLKIN 引脚。此通路产生的器件抖动最小。

M PLL2 M PLL1 M PLL2


f OUTPLL2 = f OUTPLL1 --------------------------------------- = f IN --------------------------------------- × --------------------------------------- 公式 3-9
D PLL2 × O PLL2 D PLL1 × O PLL1 D PLL2 × O PLL2

IBUFG BUFG BUFG

CLKIN1 CLKOUT0 CLKIN1 CLKOUT0 To Logic


CLKFBIN CLKOUT1 CLKFBIN CLKOUT1
RST CLKOUT2 RST CLKOUT2
CLKOUT3 CLKOUT3
PLL CLKOUT4 PLL CLKOUT4
CLKOUT5 CLKOUT5
CLKFBOUT CLKFBOUT

ug190_3_16_032506

图 3-15: 级联两个 PLL

应用指南
本部分概述何时优先选择 DCM,以及何时优先选择 PLL。
Virtex-5 PLL 最多支持六个独立的输出。需要多个不同输出的设计应使用 PLL。下面举例
说明使用多个不同输出的设计。PLL 是这种应用的理想之选,因为它可以生成一组范围广
泛的可配置输出,而 DCM 的输出数目则是固定的,并且基于参考时钟之上。当应用需要
细粒度相移或动态可调相移时,DCM 则是较好的解决方案。

Virtex-5 用户指南 www.xilinx.com/cn 103


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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: 示例波形

104 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Virtex-4 PMCD 传统模式下的 PLL

Virtex-4 PMCD 传统模式下的 PLL


Virtex-5 器件没有相位匹配时钟分频器 (PMCD)。Virtex-5 PLL 支持 Virtex-4 PMCD 的工
作模式。为了利用 Virtex-5 PLL 更强大的功能,Xilinx 建议直接用 PLL 来重新设计 Virtex-
4 PMCD。在 Virtex-4 PMCD 传统模式下,Virtex-5 PLL 与 Virtex-4 PMCD 模块之间的区
别是 Virtex-5 的实现仅支持两个时钟输入,而 Virtex-4 的实现方法最多支持四个时钟输
入。如果必须使用四个时钟输入,那么可以将两个 PLL 置于 PMCD 模式下。这种情况下的
延迟匹配不是最佳匹配。
图 3-17 所示为用 PLL 实现的 Virtex-4 PMCD 基元。PLL 如果已经用作 PMCD 就不能再用
作 PLL。

CLKFBIN CLKFBOUT

CLKIN O0

O1 To BUFG

O2

O3
ug190_3_16_022207

图 3-17: 在 PMCD 传统模式下用 PLL 实现的 PMCD 基元


表 3-8 所示为 PMCD 传统模式下的 Virtex-5 PLL 与 Virtex-4 PMCD 端口名称之间的端口
映射。

表 3-8: 端口名称映射
Virtex-4 端口名称 Virtex-5 端口名称
CLKA CLKIN
CLKB CLKFBIN
CLKC 不适用
CLKD 不适用
CLKA1 CLKOUT3
CLKA1D2 CLKOUT2
CLKA1D4 CLKOUT1
CLKA1D8 CLKOUT0
CLKB1 CLKFBOUT
CLKC1 不适用
CLKD1 不适用

Virtex-5 用户指南 www.xilinx.com/cn 105


UG190 (v3.1) 2007 年 9 月 11 日
R

第 3 章: 锁相环 (PLL)

表 3-8: 端口名称映射 ( 续表 )
Virtex-4 端口名称 Virtex-5 端口名称
RST RST
REL REL

表 3-9 所示为 Virtex-4 PMCD 传统模式下的 PLL 属性。

表 3-9: Virtex-4 PMCD 传统模式下的 PLL 属性


属性 类型 允许值 默认 描述
PLL_PMCD_MODE 布尔值 TRUE 或 FALSE FALSE 启用 PLL 作为 PMCD。
在 PMCD 模式 (PLL_PMCD_MODE = TRUE) 下,当
EN_REL 布尔值 TRUE 或 FALSE FALSE REL 输入引脚置为有效时,指定分频时钟 CLKA 输出
的释放。
CLKA 在 PMCD 模式 (PLL_PMCD_MODE = TRUE) 下,指定
RST_DEASSERT_CLK 字符串 CLKA
CLKB 时钟与 RST 的释放同步。

表 3-10 所示为 Virtex-4 PMCD 传统模式下的 PLL 端口。

表 3-10: Virtex-4 PMCD 传统模式下的 PLL 端口


端口名称 I/O 引脚描述
CLKFB 输入 Virtex-4 PMCD 传统模式下 PMCD 的 CLKB 输入时钟。
CLKIN 输入 Virtex-4 PMCD 传统模式下 PMCD 的 CLKA 输入时钟。
RST 是传统模式 Virtex-4 PMCD 的复位输入。RST 信号的有效置位异步地强制所有输出
RST 输入
为 Low。RST 信号的无效置位同步地允许所有输出翻转。
REL 是传统模式 Virtex-4 PMCD 的释放输入。REL 信号的有效置位释放与 CLKA 同步的
REL 输入
分频输出。
CLKOUT0 输出 Virtex-4 PMCD 传统模式的 CLKB1。
CLKOUT1 输出 Virtex-4 PMCD 传统模式的 CLKA1。
CLKOUT2 输出 Virtex-4 PMCD 传统模式的 CLKA1D2。
CLKOUT3 输出 Virtex-4 PMCD 传统模式的 CLKA1D4。
CLKOUT4 输出 Virtex-4 PMCD 传统模式的 CLKA1D8。

106 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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。

Virtex-5 用户指南 www.xilinx.com/cn 107


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

• 所有输入都由端口时钟寄存,并且具有建立到时钟时序指标。
• 根据写使能 (WE) 引脚的状态,所有输出均具有读功能或边写边读功能。输出在时钟到
输出时序间隔之后有效。边写边读输出具有 WRITE_FIRST、READ_FIRST 和
NO_CHANGE 三种操作模式之一。
• 写操作需要一个时钟沿。
• 读操作需要一个时钟沿。
• 所有输出端口均有锁存。输出端口的状态在端口再次执行读或写操作之前保持不变。
默认的 Block RAM 输出是锁存器模式。
• 输出数据通路有一个可选内部流水线寄存器。我们强烈建议使用该寄存器模式。这样
可使时钟速率较高,但会增加一个周期的时钟周期延迟。

Virtex-5 FPGA Block RAM 的使用规则:


• 如果启用了 ECC 解码器 (EN_ECC_READ = TRUE),则不能使用同步设置 / 复位 (SSR)
端口。
• 不得违反 Block RAM 地址和写使能引脚的建立时间。违反地址的建立时间 (即使写使
能为 Low)会损坏 Block RAM 的数据内容。
• Block RAM 寄存器模式的 SSR 需要 REGCE = 1 来复位输出 DO 的寄存器值。在这种
模式下不能复位 Block RAM 阵列的数据输出锁存器。Block RAM 锁存器模式的 SSR
需要 Block RAM 使能 EN = 1 来复位输出 DO 的锁存器值。
• 虽然 RAMB18SDP (x36 18k Block RAM) 和 RAMB36SDP (x72 36k Block RAM) 是简单
双端口基元,但可以按一个只读端口和一个只写端口的方式使用真双口基元
(RAMB18 和 RAMB36)。例如:一个 RAMB18 的 READ_WIDTH_A = 18,
READ_WIDTH_B = 9,有 WEA = 0 和 WEB = 1,这显然是简单双端口 Block RAM,
具有来自真双口基元的较小端口宽度。同样,也可以用真双口基元 (RAMB18 或
RAMB36)或简单双端口 Block RAM 基元 (RAMB18SDP 或 RAMB36SDP)实现
ROM 功能。
• 使用特定 Block RAM 基元时可选择不同的读端口和写端口宽度。奇偶校验位只可用于
x9、x18 和 x36 端口宽度。当读宽度为 x1、x2 或 x4 时,不能使用奇偶校验位。如果
读宽度是 x1、x2 或 x4,则有效的写宽度是 x1、x2、x4、x8、x16 或 x32。同样,当
写宽度是 x1、x2 或 x4 时,即使基元的属性分别设置为 1、2、4、9、18 或 3,实际的
可用读宽度仍然是 x1、x2、x4、x8、x16 或 x32。表 4-1 所示为几种可能的情况。
表 4-1: 奇偶校验使用情况
设置
基元 有效读宽度 有效写宽度
读宽度 写宽度
RAMB18 1、2 或 4 9 或 18 与设置相同 8 或 16
RAMB18 9 或 18 1、2 或 4 8 或 16 与设置相同
RAMB18 1、2 或 4 1、2 或 4 与设置相同 与设置相同
RAMB18 9 或 18 9 或 18 与设置相同 与设置相同
RAMB36 1、2 或 4 9、18 或 36 与设置相同 8、16 或 32
RAMB36 9、18 或 36 1、2 或 4 8、16 或 32 与设置相同
RAMB36 1、2 或 4 1、2 或 4 与设置相同 与设置相同

108 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 列出了端口的名称和描述。
可以向两个端口或其中任一端口写入数据,也可以从两个端口或其中任一端口读取数据。
每次写操作都是同步的;每个端口都有自己的地址、数据输入、数据输出、时钟、时钟使
能和写使能。读和写操作同步,需要一个时钟沿。
没有专用监视器对两端口上完全相同地址的作用进行仲裁。需要由用户为两个时钟适当定
时。相互冲突地同时写入同一位置不会引起任何物理损坏,但会导致数据的不确定性。

Virtex-5 用户指南 www.xilinx.com/cn 109


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

CASCADEOUTLATA CASCADEOUTLATB
CASCADEOUTREGA CASCADEOUTREGB

36-Kbit Block RAM

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
模式

110 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步双端口和单端口 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 保持先前由读操作产生
的输出。

Virtex-5 用户指南 www.xilinx.com/cn 111


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

WRITE_FIRST 模式,即透明模式 (默认)


在 WRITE_FIRST 模式下,输入数据同时写入存储器并存入数据输出 (透明写),如图 4-
2 所示。当未使用可选输出流水线寄存器时,这些波形对应于锁存器模式。

CLK

WE

DI XXXX 1111 2222 XXXX

ADDR aa bb cc dd

DO 0000 MEM(aa) 1111 2222 MEM(dd)

EN

Disabled Read Write Write Read


MEM(bb)=1111 MEM(cc)=2222

ug190_4_03_032206

图 4-2: WRITE_FIRST 模式波形

READ_FIRST 模式,即先读后写模式
在 READ_FIRST 模式下,原存储在写地址的数据出现在输出锁存器上,而输入数据则存入
存储器 (先读后写)。当未使用可选输出流水线寄存器时,图 4-3 中的波形对应于锁存器
模式。

CLK

WE

DI XXXX 1111 2222 XXXX

ADDR aa bb cc dd

DO 0000 MEM(aa) old MEM(bb) old MEM(cc) MEM(dd)

EN

Disabled Read Write Write Read


MEM(bb)=1111 MEM(cc)=2222

ug190_4_04_032206

图 4-3: READ_FIRST 模式波形

NO_CHANGE 模式
在 NO_CHANGE 模式下,输出锁存器在写操作过程中保持不变。如图 4-4 所示,数据输
出保持最后的读数据,不受同端口上写操作的影响。当未使用可选输出流水线寄存器时,
这些波形对应于锁存器模式。

112 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步双端口和单端口 RAM

CLK

WE

DI XXXX 1111 2222 XXXX

ADDR aa bb cc dd

DO 0000 MEM(aa) MEM(dd)

EN

Disable Read Write Write Read


MEM(bb)=1111 MEM(cc)=2222
ug190_4_05_032206

图 4-4: NO_CHANGE 模式波形

避免冲突
Virtex-5 Block RAM 存储器是真双口 RAM,其中两个端口可以在任意时间访问任意存储
器。但是,当从两个端口访问同一存储器位置时,用户必须遵守某些限制。有两种截然不
同的情况:两个端口共用一个时钟 (同步时钟控制),或者两个端口的时钟频率和相位不
同 (异步时钟控制)。

异步时钟控制
异步时钟控制是较普遍的情况,其中两个时钟的有效沿不同时出现:
• 在两个端口都执行读操作时没有时序约束。
• 当一个端口执行写操作时,另一端口不得使用禁用的时钟间建立时间窗口内的时钟沿
对同一存储器位置进行读或写访问。如果违反这一条件,仿真模型会产生错误。如果
忽略这一限制,读或写操作会产生不可预见的结果。不过,没有对器件造成物理损坏
的危险。

同步时钟控制
同步时钟控制是特殊情况,其中两个端口时钟的有效沿同时出现:
• 在两个端口都执行读操作时没有时序约束。
• 当一个端口执行写操作时,另一端口不得写入同一位置,除非两个端口写入完全相同
的数据。
• 当一个端口执行写操作并且该写操作成功时,如果写端口是在 READ_FIRST 模式下,
则另一端口可以从同一位置可靠地读取数据。这时,两个端口上的 DATA_OUT 都会反
映原存储的数据。
如果写端口是在 WRITE_FIRST 或 NO_CHANGE 模式下,则读端口上的 DATA_OUT
将变为无效 (不稳定)。读端口的模式设置不影响此操作。

Virtex-5 用户指南 www.xilinx.com/cn 113


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

Virtex-5 器件中的其他 Block RAM 功能

可选输出寄存器
可选输出寄存器通过消除对流水线操作 CLB 触发器的布线延迟来提高设计的性能。这些输
出寄存器具有独立的时钟和时钟使能输入。因此,输出数据寄存器可保持其值独立于输入
寄存器的操作。图 4-5 显示了可选输出寄存器。

DO
Address Memory D Q D Q
Register
DI Array Latches Register
(common to
both ports)

Write Read Latch


Strobe Strobe Enable
WE
EN Control Engine

Optional
CLK
Inverter

Configurable Options
UG190_4_06_040606

图 4-5: Block RAM 逻辑图 (显示一个端口)

独立读写端口宽度选择
每个 Block RAM 端口都具有控制数据宽度和地址深度(长宽比)的功能。Virtex-5 真双口
Block RAM 将这种灵活性推广到了读和写,可以用不同的数据位宽度配置各端口。例如,
端口 A 可以有 36 位读宽度和 9 位写宽度,而端口 B 可以有 18 位读宽度和 36 位写宽度。
请见第 122 页的 “Block RAM 属性”。
如果读端口宽度不同于写端口宽度并且配置为 WRITE_FIRST 模式,则 DO 显示所有已启用
写字节的有效新数据和存储在存储器中的所有未启用字节的原数据。
独立的读写端口宽度选择提高了在 Block RAM 中实现内容可编址存储器 (CAM) 的效率。
此选项可用于所有 Virtex-5 真双口 RAM 的端口尺寸和模式。

114 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Virtex-5 器件中的其他 Block RAM 功能

简单双端口 Block RAM


每个 18 Kb 块和 36 Kb 块还可以配置成简单双端口 RAM 模式。在这种模式下,Block RAM
端口宽度对于 18 Kb Block RAM 加倍到 36 位,对于 36 Kb Block RAM 加倍到 72 位。在
简单双端口模式下,可同时进行独立的读和写操作,其中端口 A 指定为读端口,端口 B 指
定为写端口。当读和写端口同时访问同一数据位置时,将其作为碰撞处理,类似于真双口
模式下的端口碰撞。简单双端口 Block RAM 模式不支持通过配置端口读回。图 4-6 所示为
简单双端口数据流。

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 写端口使能

Virtex-5 用户指南 www.xilinx.com/cn 115


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

可级联 Block RAM


在 Virtex-5 Block RAM 架构中,可将两个 32K x 1 RAM 组合起来形成一个 64K x 1 RAM,
无需使用局部互连或其他 CLB 逻辑资源。任意两个相邻的 Block RAM 均可级联形成一个
64K x 1 Block RAM。只有在 64K x 1 模式下才可用级联两个 Block RAM 的方法增加 Block
RAM 的深度。“其他 RAMB18 和 RAMB36 基元设计考虑事项”部分叙述了关于可级联
Block RAM 的进一步信息。有关其他更宽和 / 或更深的尺寸,请查阅 “创建较大的 RAM
结构”部分。图 4-7 所示为在可级联模式下已连接相应端口的 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

图 4-7: 可级联 Block RAM

字节宽度写使能
Block RAM 的字节宽度写使能功能提供了以八位 (一个字节)为单位写入输入数据的能
力。对于 RAMB36 真双口 RAM,有四个独立的字节宽度写使能输入。对于简单双端口模
式下的 Block RAM (RAMB36SDP),有八个独立的字节宽度写使能输入。表 4-4 概述了
36K 和 18K Block RAM 的字节宽度写使能。每个字节宽度写使能与一个输入数据字节和一
个奇偶校验位关联。在所有数据宽度配置中都必须驱动所有字节宽度写使能输入。用
Block RAM 与微处理器进行接口连接时,此功能很有用。字节宽度写使能不能用于多速率
FIFO 或 ECC 模式。“其他 RAMB18 和 RAMB36 基元设计考虑事项”部分中进一步说明了
字节宽度写使能。图 4-8 所示为 RAMB36 的字节宽度写使能时序图。

116 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Block RAM 库基元

表 4-4: 可用的字节宽度写使能
基元 最大位宽度 字节宽度写使能数
RAMB36 36 4
RAMB36SDP 72 8
RAMB18 18 2
RAMB18SDP 36 4

当为 36 位或 18 位宽的数据通路配置 RAMB36 时,任何端口都可限制写入数据字内的指定


字节位置。如果按 READ_FIRST 模式配置,则 DO 总线显示整个已编址字的原内容。在
WRITE_FIRST 模式下,DO 显示新写入的已启用字节和未写字节的初始存储器内容的组
合。

CLK

WE 1111 0011

DI XXXX 1111 2222 XXXX

ADDR aa bb bb cc

DO 0000 MEM(aa) 1111 1122 MEM(cc)

EN

Disabled Read Write Byte Write Read


MEM(bb)=1111 MEM(bb)=1122

ug190_4_10_032106

图 4-8: 字节宽度写使能波形 (x36 WRITE_FIRST)

Block RAM 纠错代码


36 Kb Block RAM 的 Block RAM 和 FIFO 的实现都支持实现 64 位纠错代码 (ECC)。该代码
用来检测 Block RAM 数据读出中的单位元和双位元错误。然后,单位元错误在输出数据中
得到纠正。

Block RAM 库基元


Virtex-5 Block RAM 库基元 RAMB18 和 RAMB36 是所有 Block RAM 配置的基本构建模
块。其他 Block RAM 基元和宏以这些基元为基础。有些 Block RAM 属性只能用这些基元
之一配置 (如流水线寄存器、级联等)。请见 “Block RAM 属性”部分。
输入和输出数据总线用 9 位宽度 (8 + 1)、18 位宽度 (16 + 2) 和 36 位宽度 (32 + 4) 配置的
两条总线表示。与各字节相关的第九个位可以存储奇偶校验 / 纠错位或用作附加数据位。
在第九个位上不执行任何特定功能。奇偶校验位的独立总线有助于某些设计。而其他设计
可以通过合并常规数据总线和奇偶校验总线安全地使用 9 位、18 位或 36 位总线。所有位
(包括奇偶校验位)的读 / 写和存储操作都完全相同。

Virtex-5 用户指南 www.xilinx.com/cn 117


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 4-9: Block RAM 端口信号 (RAMB36)

118 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Block RAM 端口信号

表 4-5: Virtex-5 Block RAM、FIFO、简单双端口和 ECC 基元


基元 描述
RAMB36 支持 x1、x2、x4、x9、x18 和 x36 端口宽度
RAMB36SDP 简单双端口 (端口宽度 x72)和 64 位 ECC 基元 (见图 4-29)
FIFO36 支持 x4、x9、x18 和 x36 端口宽度
FIFO36_72 FIFO (端口宽度 x72),可选支持 ECC
RAMB18 支持 x1、x2、x4、x9 和 x18 端口宽度
RAMB18SDP 简单双端口 (端口宽度 x36)
FIFO18 支持 x4、x9 和 x18 端口宽度
FIFO18_36 FIFO (端口宽度 x36)

注:
1. FIFO18、FIFO36、RAMB18 和 RAMB36 在软件 《库指南》中有描述。全部八个基元在语言模板中均
有描述。

Block RAM 端口信号


在访问同一组 36K 位存储单元时,各 Block RAM 端口独立于另一端口操作。

时钟 - 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 有效)。

Virtex-5 用户指南 www.xilinx.com/cn 119


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 所示。

表 4-6: RAMB18 和 RAMB18SDP 的端口长宽比


端口数据宽度 端口地址宽度 深度 ADDR 总线 DI 总线 / DO 总线 DIP 总线 / DOP 总线
1 14 16,384 <13:0> <0> 不适用
2 13 8,192 <13:1> <1:0> 不适用
4 12 4,096 <13:2> <3:0> 不适用
9 11 2,048 <13:3> <7:0> <0>
18 10 1,024 <13:4> <15:0> <1:0>
36 (RAMB18SDP) 9 512 <13:5> <31:0> <3:0>

表 4-7: RAMB36 的端口长宽比


端口数据宽度 端口地址宽度 深度 ADDR 总线 DI 总线 / DO 总线 DIP 总线 / DOP 总线
1 15 32,768 <14:0> <0> 不适用
2 14 16,384 <14:1> <1:0> 不适用
4 13 8,192 <14:2> <3:0> 不适用
9 12 4,096 <14:3> <7:0> <0>
18 11 2,048 <14:4> <15:0> <1:0>
36 10 1,024 <14:5> <31:0> <3:0>
72 (RAMB36SDP) 9 512 <14:6> <63:0> <7:0>
1 (级联) 16 65536 <15:0> <0> 不适用

对于使用 RAMB36 的可级联 Block RAM,数据宽度是 1 位,地址总线是 16 位 <15:0>。地


址位 15 仅用于可级联的 Block RAM。对于非级联 Block RAM,请连接为 High。

120 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Block RAM 端口信号

“其他 RAMB18 和 RAMB36 基元设计考虑事项”部分中进一步说明了数据和地址引脚映


射。

数据输入总线 - DI[A|B]<#:0> 和 DIP[A|B]<#:0>


数据输入总线提供要写入 RAM 的新数据值。常规数据输入总线 (DI) 加上奇偶校验数据输
入总线 (DIP) (如果有)的总宽度等于端口宽度。例如,36 位端口数据宽度用 DI<31:0>
和 DIP<3:0> 表示,如表 4-6 和表 4-7 所示。

数据输出总线 - DO[A|B]<#:0> 和 DOP[A|B]<#:0>


在读操作过程中的最后一个有效时钟沿上,数据输出总线反映地址总线参考的存储器单元
的内容。在写操作 (WRITE_FIRST 或 READ_FIRST 配置)过程中,数据输出总线反映正
在写入的数据或写之前的已存储值。在 NO_CHANGE 模式下的写操作过程中,数据输出
总线不变。常规数据输出总线 (DO) 加上奇偶校验数据输出总线 (DOP) (如果有)的总宽
度等于端口宽度,如表 4-6 和表 4-7 所示。

级联输入 - CASCADEINLAT[A|B] 和 CASCADEINREG[A|B]


CASCADEIN 引脚用来连接两个 Block RAM 以形成 64K x 1 模式 (图 4-10)。当 Block
RAM 是 UPPER Block RAM 时使用此引脚,将其连接到同一端口的 LOWER Block RAM 的
CASCADEOUT 引脚。如果不使用级联模式,则不需要连接此引脚。请参阅 “可级联
Block RAM”获取进一步信息。

Upper
RAMB36

CASCADEINLATA/B CASCADEINREGA/B
2 2

CASCADEOUTLATA/B CASCADEOUTREGA/B
Lower
RAMB36

ug190_4_12_040606

图 4-10: 两个 RAMB36 级联

级联输出 - CASCADEOUTLAT[A|B] 和 CASCADEOUTREG[A|B]


CASCADEIN 引脚用来连接两个 Block RAM 以形成 64K x 1 模式。当 Block RAM 是
LOWER Block RAM 时使用此引脚,将其连接到同一端口的 UPPER Block RAM 的
CASCADEIN 引脚。如果不使用级联模式,则不需要连接此引脚。请参阅 “可级联 Block
RAM”获取进一步信息。

Virtex-5 用户指南 www.xilinx.com/cn 121


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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。

Block RAM 地址映射


各端口根据它是 RAMB18 还是 RAMB36 使用一套编址方案访问同一组的 18,432 或 36,864
个存储单元。对应特定宽度编址的物理 RAM 位置由以下公式决定 (仅当两个端口使用不
同长宽比时才有意义):
END = ((ADDR + 1) × Width) -1
START = ADDR × Width
表 4-8 所示为对应各端口宽度的低阶地址映射。

表 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 基元设计考虑事项”部分提供了关于使用这些属性的进一步信息。

122 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-9: Block RAM 初始化属性


存储器位置
属性
从 到
INIT_00 255 0

INIT_01 511 256

INIT_02 767 512


… … …

INIT_0E 3839 3584

INIT_0F 4095 3840

INIT_10 4351 4096


… … …

INIT_1F 8191 7936

INIT_20 8447 8192


… … …

INIT_2F 12287 12032


INIT_30 12543 12288
… … …

INIT_3F 16383 16128


… … …

INIT_7F 32767 32512

Virtex-5 用户指南 www.xilinx.com/cn 123


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 属性初始化的位元位置。

输出锁存器初始化 - INIT (INIT_A 或 INIT_B)


INIT 属性 (单端口)或 INIT_A 和 INIT_B 属性 (双端口)定义配置后的输出锁存器或输出
寄存器的值。INIT (INIT_A 和 INIT_B)属性的宽度即端口宽度,如表 4-10 所示。这些属
性是十六进制编码位向量,其默认值是 0。在级联模式下,上下两个 Block RAM 应初始化
为同样的值。

输出锁存器 / 寄存器同步设置 / 复位 (SRVAL_[A|B])


当 SSR 输入置为有效时,SRVAL 属性 (单端口)或 SRVAL_A 和 SRVAL_B 属性 (双端
口)定义输出锁存器的值。SRVAL (SRVAL_A 和 SRVAL_B)属性的宽度即端口宽度,如
表 4-10 所示。这些属性是十六进制编码位向量,其默认值是 0。当设置了可选输出寄存器
属性时,此属性设置输出寄存器的值。如果未使用寄存器,则锁存器设置为 SRVAL。在
36 位模式下,SRVAL[35:32] 对应于 DP[3:0]。
表 4-10: 端口宽度值
端口数据宽度 DOP 总线 DO 总线 INIT / SRVAL

1 不适用 <0> 1

2 不适用 <1:0> 2

4 不适用 <3:0> 4

9 <0> <7:0> (1 + 8) = 9

18 <1:0> <15:0> (2 + 16) = 18

36 <3:0> <31:0> (4 + 32) = 36

可选输出寄存器开关 - 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。

124 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

用 VHDL 或 Verilog 代码初始化 Block RAM

读宽度 - 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。“写模式”部分提供了关于写模式的进一步信息。

Block RAM 位置约束


Block RAM 实例可以附带 LOC 属性以约束布局。Block RAM 布局位置与用来命名 CLB 位
置的传统方法不同,便于在各阵列之间传输 LOC 属性。
LOC 属性使用以下形式:
LOC = RAMB36_X#Y#
RAMB36_X0Y0 是器件上左下方 Block RAM 的位置。如果将 RAMB36 约束在
RAMB36_X#Y#,则不可将 FIFO 约束在 FIFO36_X#Y#,因为它们共用一个位置。
通过使用 BEL UPPER/LOWER 约束,可以将两个 RAMB18 置于同一个 RAMB36 位置:
inst ”my_ramb18” LOC = RAMB36_X0Y0 | BEL = UPPER
inst ”my_ramb18” LOC = RAMB36_X0Y0 | BEL = LOWER

另外,可以将一个 FIFO18 和一个 RAMB16 置于同一个 RAMB36 位置,不需要 BEL 约束:


inst ”my_fifo18” LOC = RAMB36_X0Y0
inst ”my_ramb18” LOC = RAMB36_X0Y0

用 VHDL 或 Verilog 代码初始化 Block RAM


对于合成和仿真,都可以通过在例化的组件内使用类属映射表 (VHDL) 或定义参数
(Verilog) 的方法用 VHDL 或 Verilo 代码初始化 Block RAM 存储器的属性和内容。修改类属
映射表或定义参数的值会影响仿真的行为和已实现的合成结果。Virtex-5 《库指南》包括
用来例化 RAMB36 基元的代码。

其他 RAMB18 和 RAMB36 基元设计考虑事项


在 Virtex-5 Block RAM 解决方案中,RAMB18 和 RAMB36 基元是不可分割的整体。

Virtex-5 用户指南 www.xilinx.com/cn 125


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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。

RAMB18 和 RAMB36 端口映射设计规则


Virtex-5 Block RAM 可以配置成各种端口宽度和尺寸。根据配置,有些数据引脚和地址引
脚不使用。第 120 页的表 4-6 所示为各种配置中使用的引脚。除了表 4-6 中的信息外,
以下规则也可用来确定 RAMB36 的端口连接:
1. 在使用 RAMB36 时,如果 DI[A|B] 引脚不足 32 位宽,在 DI[A|B] 前串接
(32 – DI_BIT_WIDTH) 个逻辑零。
2. 如果 DIP[A|B] 引脚不足 4 位宽,在 DIP[A|B] 前串接 (4 – DIP_BIT_WIDTH) 个逻辑零。
DIP[A|B] 在不使用时可以不连接。
3. DO[A|B] 引脚必须是 32 位宽。不过,只有从 DO_BIT_WIDTH – 1 下数到 0 的引脚上存
在有效数据。
4. DOP[A|B] 引脚必须是 4 位宽。不过,只有从 DOP_BIT_WIDTH – 1 下数到 0 的引脚上
存在有效数据。DOP[A|B] 在不使用时可以不连接。
5. ADDR[A|B] 引脚必须是 16 位宽。不过,只有从 14 到 (15 – 地址宽度)的引脚上存在
非级联 Block RAM 的有效地址。其余引脚 (包括引脚 15)应固定为 High。第 120 页
的表 4-6 中定义了地址宽度。

可级联 Block RAM


要使用可级联 Block RAM 功能,应考虑以下规则:
1. 两个 RAMB36 基元必须例化。
2. 将一个 RAMB36 的 RAM_EXTENSION_A 和 RAM_EXTENSION_B 属性设置成
UPPER,将另一个的设置成 LOWER。
3. 将上 RAMB36 的 CASCADEINA 和 CASCADEINB 端口连接到下 RAMB36 的
CASCADEOUTA 和 CASCADEOUTB 端口。上 RAMB36 的 CASCADEOUT 端口不需
要连接。将下 RAMB36 的 CASCADEIN 端口连接到逻辑 High 或 Low。

126 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

其他 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 文件。

寄存器模式下的 Block RAM SSR


寄存器模式下的 Block RAM SSR 可用来将输出寄存器作为独立于 Block RAM 的真流水线
寄存器予以控制。如图 4-11 所示,Block RAM 不依赖寄存器使能或设置 / 复位即可读写。
在寄存器模式下,SSR 将 DO 设置为 SRVAL,数据可以从 Block RAM 读出到 DBRAM。
DBRAM 中的数据可以在下一周期中同步输出 (DO)。图 4-12 和图 4-13 中的时序图所示
为 SSR 操作的不同情形。

Virtex-5 用户指南 www.xilinx.com/cn 127


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

Block RAM
DBRAM
DI Output DO
Register
EN BRAM_RAMEN
BRAM_SSR

REGCE
SSR

In register mode, the block RAM SSR is disabled


and the SSR pin only sets/resets the output registers.
ug190_4_28_071707

图 4-11: 寄存器模式下的 Block RAM SSR

CLK

RAMEN

REGCE

SSR

DBRAM D0 D1 D2 D3

Block RAM can be read when SSR is active.

DO D0 SRVAL D1 SRVAL D2

Data appears on the output of the next REGCE.


ug190_4_29_071607

图 4-12: 寄存器模式下 REGCE 为 High 时的 SSR 操作

128 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Block RAM 时序模型

CLK

RAMEN

REGCE

SSR

DBRAM D0 D1 D2 D3

SSR only sets/resets DO when REGCE is also High.

DO D0 SRVAL D1 D2

ug190_4_29_071607

图 4-13: 寄存器模式下带变量 REGCE 的 SSR 操作

Block RAM 时序模型


本部分讲述 Virtex-5 器件中与 Block RAM 相关的时序参数 (图 4-14 所示)。同时提供
《Virtex-5 数据手册》中的开关特性部分和 Xilinx 软件中的时序分析器 (TRCE) 报告作为参
考。

Virtex-5 用户指南 www.xilinx.com/cn 129


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

Block RAM 时序参数


表 4-11 所示为 Virtex-5 Block RAM 的时序参数。

表 4-11: Block RAM 时序参数


控制
参数 功能 描述
信号
相对于时钟 (CLK) 的建立和保持时间
TRxCK_x = 建立时间 (时钟沿之前),TRCKx_x = 保持时间 (时钟沿之后)
TRCCK_ADDR 时钟之前,地址信号必须在 Block RAM 的 ADDR 输入上稳定的
时间。(1)
地址输入 ADDR
TRCKC_ADDR 时钟之后,地址信号必须在 Block RAM 的 ADDR 输入上稳定的
时间。(1)
TRDCK_DI 时钟之前,数据必须在 Block RAM 的 DI 输入上稳定的时间。
数据输入 DI
TRCKD_DI 时钟之后,数据必须在 Block RAM 的 DI 输入上稳定的时间。
TRCCK_EN 时钟之前,使能信号必须在 Block RAM 的 EN 输入上稳定的时
间。
使能 EN
TRCKC_EN 时钟之后,使能信号必须在 Block RAM 的 EN 输入上稳定的时
间。
TRCCK_SSR 时钟之前,同步设置 / 复位信号必须在 Block RAM 的 SSR 输入上
稳定的时间。
同步设置 / 复位 SSR
TRCKC_SSR 时钟之后,同步设置 / 复位信号必须在 Block RAM 的 SSR 输入上
稳定的时间。
TRCCK_WE 时钟之前,写使能信号必须在 Block RAM 的 WE 输入上稳定的时
间。
写使能 WE
TRCKC_WE 时钟之后,写使能信号必须在 Block RAM 的 WE 输入上稳定的时
间。
TRCCK_REGCE CLK 之前,寄存器使能信号必须在 Block RAM 的 REGCE 输入上
可选输出寄存器 稳定的时间。
REGCE
TRCKC_REGCE 使能 时钟之后,寄存器使能信号必须在 Block RAM 的 REGCE 输入上
稳定的时间。
时钟到输出延迟
TRCKO_DO 时钟到输出 CLK to 时钟之后,输出数据在 Block RAM 的 DO 输出上稳定的时间(无
(锁存器模式) DO 输出寄存器)。

TRCKO_DO 时钟到输出 CLK to 时钟之后,输出数据在 Block RAM 的 DO 输出上稳定的时间(有


(寄存器模式) DO 输出寄存器)。

注:
1. 当 EN 有效时,即使 WE 无效,ADDR 输入也必须在整个建立 / 保持时间窗口期间稳定。违反这一要求可导致 Block RAM 数据损
坏。如果允许 ADDR 时序违反指定的要求,则 EN 必须无效 (禁用)。

130 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Block RAM 时序模型

Block RAM 时序特性


图 4-14 中的时序图所示为在先写模式下没有可选输出寄存器的单端口 Block RAM。先读
和不变模式的时序与此相似。对于使用可选输出寄存器的时序,在 DO 引脚上出现一个附
加的时钟延迟。当未使用可选输出流水线寄存器时,这些波形对应于锁存器模式。

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

* Write Mode = "WRITE_FIRST"


** SRVAL = 0101 ug190_4_13_022207

图 4-14: Block RAM 时序图


在时间 0 处,Block RAM 禁用,EN (使能)为 Low。

时钟事件 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 功能产生不可预见的影响。

Virtex-5 用户指南 www.xilinx.com/cn 131


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 输出上的数据不变。

132 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Block RAM 时序模型

Block RAM 时序模型


图 4-15 所示为与 Block RAM 的实现相关的延迟通路。此示例采用最简单的片上和片外通
路 (根据设计不同,这些通路可以有很大变化)。此时序模型说明如何以及在何处使用
Block RAM 时序参数。
• NET = 变化的互连延迟
• TIOPI = 焊盘到 IOB 的 I 输出的延迟
• TIOOP = IOB 的 O 输入到焊盘的延迟
• TBCCKO_O = BUFGCTRL 延迟

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-15: Block RAM 时序模型

Virtex-5 用户指南 www.xilinx.com/cn 133


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

Block RAM 重定向


表 4-12 所示为建议在新的 Virtex-5 设计中映射 Virtex-4 Block RAM 设计时选用的最适宜
的基元。

表 4-12: Block RAM 重定向


Virtex-4 Block RAM 18k Virtex-5 Block RAM 36k Virtex-5 Block RAM
端口宽度 端口宽度 端口宽度
基元 深度 基元 深度 基元 深度
R/W R/W R/W
RAMB16 1k 到 1、2、4、 RAMB18 1k 到 1、2、4、 RAMB36 2k 到 1、2、4、
真双口 16k 9、18 16k 9、18 32k 9、18
RAMB16 512 36/36 不适用 不 不适用 RAMB36 1k 36/36
真双口 适用
RAMB16 512 36/36 RAMB18 512 36/36 RAMB36 1k 36/36
简单双端口 简单双端口 简单双端口
RAMB16 可变 使用最接近的 不 不适用 使用最接近的 不 不适用
简单双端口 RAMB18 真双 适用 RAMB36 真双 适用
口 口
两个 RAMB16 级 32k 1 不适用 不 不适用 RAMB36 32k 1
联 适用

内置 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。

134 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置 FIFO 支持

读操作也是同步操作,每当 RDEN 在 RDCLK 上升沿之前一个建立时间有效时将下一数据


字送至 DO。
数据流控制是自动控制,用户不必关心 Block RAM 的编址顺序,尽管当特殊应用需要时还
要引出 WRCOUNT 和 RDCOUNT。
但是,用户必须观察 FULL 和 EMPTY 标记,并且在 FULL 为 High 时停止写操作以及在
EMPTY 为 High 时停止读操作。如果违反这些规则,WREN 在 FULL 为 High 时有效就会激
活 WRERR 标记,而 RDEN 在 EMPTY 为 High 时有效就会激活 RDERR 标记。不过,无论
违反哪条规则,FIFO 内容都会保存下来,并且地址计数器会保持为有效。
为了在 FIFO 接近极限时给用户提供预警,引出可编程的 ALMOSTFULL 和
ALMOSTEMPTY 标记。可以设置这两个标记值,将其配置到 FIFO 地址段内的 (几乎)任
何位置。
两种操作模式影响 FIFO 空出后的首字读取:
• 在标准模式下,写入空 FIFO 的首字会在用户激活 RDEN 后出现在 DO 上。用户必须
从 FIFO 中提出数据。
• 在 FWFT 模式下,写入空 FIFO 的首字会自动出现在 DO 上,无需用户激活 RDEN。然
后,下一个 RDEN 会将后续数据字转送到 DO 上。
• 标准模式和 FWFT 模式的区别仅在于 FIFO 空出后首条数据字的读取。
对于以下情形请使用 EN_SYN = FALSE 设置:
• 当时钟是异步时
• 当两个时钟的频率相同而相位不同时
• 当一个频率是另一频率的倍数时

同步 FIFO
Virtex-4 设计对多速率和同步 FIFO 使用相同的 FIFO 逻辑,因此同步 FIFO 中的标记延迟
可以不同。在使用 Virtex-5 的同步 FIFO 时将 EN_SYN 属性设置为 TRUE,即可消除标记
有效或无效置位时的所有时钟周期延迟。
仅在多速率 FIFO (EN_SYN = FALSE) 下可支持首字直通 (FWFT) 模式。表 4-13 所示为两
种模式下的 FIFO 容量。

Virtex-5 用户指南 www.xilinx.com/cn 135


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 4-16: 同步 FIFO 数据时序图

136 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

图 4-17: Block RAM 中 FIFO 的顶层视图

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 基元

Virtex-5 用户指南 www.xilinx.com/cn 137


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

图 4-19 所示为 FIFO18 基元。


FIFO18

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 端口的名称和描述。

表 4-15: FIFO I/O 端口的名称和描述


端口名称 方向 描述
DI 输入 数据输入。
DIP 输入 奇偶校验位输入。
WREN 输入 写使能。当 WREN = 1 时,将数据写入存储器。当 WREN =
0 时,禁止写操作。
WRCLK 输入 写域操作的时钟。
RDEN 输入 读使能。当 RDEN = 1 时,数据读出到输出寄存器。当
RDEN = 0 时,禁止读操作。
RDCLK 输入 读域操作的时钟。
RESET 输入 所有 FIFO 功能、标记和指针的异步复位。RESET 必须置为
在三个时钟周期内有效。
DO 输出 数据输出,与 RDCLK 同步。
DOP 输出 奇偶校验位输出,与 RDCLK 同步。
FULL 输出 FIFO 存储器的所有字条均已填满。不再接受写操作。与
WRCLK 同步。
ALMOSTFULL 输出 几乎 FIFO 存储器的所有字条均已填满。与 WRCLK 同步。
此标记的偏移可由用户配置。有关标记无效置位的时钟延
迟,请见表 4-16。
EMPTY 输出 FIFO 空出。不再接受读操作。与 RDCLK 同步。
ALMOSTEMPTY 输出 几乎 FIFO 存储器的所有有效字条均已读取。与 RDCLK 同
步。此标记的偏移可由用户配置。有关标记无效置位的时钟
延迟,请见表 4-16。

138 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

FIFO 操作

表 4-15: FIFO I/O 端口的名称和描述 ( 续表 )


端口名称 方向 描述
RDCOUNT 输出 FIFO 数据的读指针。与 RDCLK 同步。如果已经达到读指针
的最大值,则对该值进行圆整。
WRCOUNT 输出 FIFO 数据的写指针。与 WRCLK 同步。如果已经达到写指
针的最大值,则对该值进行圆整。
WRERR 输出 当 FIFO 已满时,任何其他写操作都会生成错误标记。与
WRCLK 同步。
RDERR 输出 当 FIFO 已空时,任何其他读操作都会生成错误标记。与
RDCLK 同步。

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 模式之间的区别。

Virtex-5 用户指南 www.xilinx.com/cn 139


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

RDCLK

RDEN

EMPTY

DO (Standard) Previous Data W1 W2 W3

DO (FWFT) W1 W2 W3

ug190_4_17_032506

图 4-20: 读操作周期时序 (标准模式和 FWFT 模式)

状态标记
表 4-16 所示为多速率 FIFO 的各标记有效或无效置位所需的时钟周期数。同步 FIFO 在标
记有效或无效置位时没有时钟周期延迟。

表 4-16: 多速率 FIFO 标记的有效和无效置位延迟


时钟周期延迟 (1)
状态标记 有效置位 无效置位
标准 FWFT 标准 FWFT
EMPTY 0 0 3 4
FULL 0 0 3 3
ALMOST EMPTY(2) 1 1 3 3
ALMOST FULL(2) 1 1 3 3
READ ERROR 0 0 0 0
WRITE ERROR 0 0 0 0

注:
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
空出后不会导致显著的性能损失。

140 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 所示为标记延迟。

Virtex-5 用户指南 www.xilinx.com/cn 141


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

FIFO 的属性
表 4-17 列出了 FIFO18 和 FIFO36 的属性。多速率 FIFO 的尺寸可通过设置 DATA_WIDTH
属性来配置。“FIFO 的 VHDL 和 Verilog 模板”部分提供了设置属性的示例。

表 4-17: FIFO18 和 FIFO36 的属性


属性名称 类型 值 默认 说明
ALMOST_FULL_OFFSET 13 位十 请见表 4-19 设置确定 FULL 与 ALMOSTFULL 状态
六进制 之间的区别。必须用十六进制记数法设
置。
ALMOST_EMPTY_OFFSET 13 位十 请见表 4-19 设置确定 EMPTY 与 ALMOSTEMPTY
六进制 状态之间的区别。必须用十六进制记数
法设置。
FIRST_WORD_FALL_THROUGH 布尔值 FALSE、 FALSE 如果是 TRUE,则写入空 FIFO 的第一
TRUE 个字出现在 FIFO 的输出上,无需
RDEN 置为有效。
DO_REG 1 位二 0、1 1 对于多速率 (异步)FIFO,必须设置
进制 为 1。
对于同步 FIFO,DO_REG 必须设置为
0 才能使标记和数据遵循标准的同步
FIFO 操作。当 DO_REG 设置为 1 时,
实际上是将一个流水线寄存器添加到同
步 FIFO 的输出。数据因此会有一个时
钟周期的延迟。但是时钟对输出的时序
得到了改善。
DATA_WIDTH 整数 4、9、18、36、 4
72
LOC(1, 2) 字符串 有效的 FIFO18 设置 FIFO18 或 FIFO36 的位置。
或 FIFO36 位置
EN_SYN 布尔值 FALSE、 FALSE 当设置为 TRUE 时,将 WRCLK 和
TRUE RDCLK 捆绑到一起。
当设置为 TRUE 时,FWFT 必须是
FALSE。
当设置为 FALSE 时,DO_REG 必须是
1。

注:
1. 如果将 FIFO18 约束在 FIFO18_X#Y#,则不可将 RAMB18 约束在 RAMB18_X#Y#,因为这样将使用同一位置。
2. 如果将 FIFO18 约束在 FIFO18_X#Y#,使其对应 RAMB18 对的下 RAMB18_X#Y#,则可以将 RAMB18 约束在该对的上
RAMB18_X#Y#。

FIFO Almost Full/Empty 标记偏移范围


表 4-19 列出了 Almost Empty 和 Almost Full 的偏移范围。

142 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

FIFO 的属性

表 4-18: FIFO 数据深度


数据宽度 Block RAM FIFO 容量
FIFO18 FIFO36 存储器 标准 FWFT
x4 8192 8193 8194
x4 x9 4096 4097 4098
x9 x18 2048 2049 2050
x18 x36 1024 1025 1026
x36 x72 512 513 514

注:
1. 任何设计的 ALMOST_EMPTY_OFFSET 和 ALMOST_FULL_OFFSET 都必须小于总 FIFO 深度。

表 4-19: FIFO Almost Full/Almost Empty 标记偏移范围


ALMOST_EMPTY_OFFSET
数据宽度 ALMOST_FULL_OFFSET
标准 FWFT
FIFO18 FIFO36 最小 最大 最小 最大 最小 最大
多速率 (异步) – EN_SYN=FALSE
x4 5 8187 6 8188 4 8187
x4 x9 5 4091 6 4092 4 4091
x9 x18 5 2043 6 2044 4 2043
x18 x36 5 1019 6 1020 4 1019
x36 x72 5 507 6 508 4 507
同步模式 – EN_SYN=TRUE
x4 1 8190 1 8190
x4 x9 1 4094 1 4094
x9 x18 1 2046 1 2046
x18 x36 1 1022 1 1022
x36 x72 1 510 1 510

Almost Full 和 Almost Empty 偏移通常设计为小于 10 的较小数值,用来提供 FIFO 将达到


极限的警告。因为任何 FIFO 的全容量一般都无关紧要,所以多数应用不仅将
ALMOST_FULL 标记用作警告,还将其用作停止写操作的信号。
同样,ALMOST_EMPTY 也可用来停止读操作。不过,这样会使 FIFO 中剩下的最后若干字
条不能读取。用户可以忽略 Almost Empty 信号而继续读,直到 EMPTY 置为有效。
Almost Full 和 Almost Empty 偏移还可以在无间断的块传输应用中用来表示有完整的数据块
可以写入或读出。
在设计工具中设置偏移范围时,请使用十六进制记数法。

Virtex-5 用户指南 www.xilinx.com/cn 143


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

FIFO 的 VHDL 和 Verilog 模板


《库指南》中提供了 VHDL 和 Verilog 模板。

FIFO 时序模型和参数
表 4-20 所示为 FIFO 参数。

表 4-20: FIFO 时序参数


控制
参数 功能 描述
信号
相对于时钟 (CLK) 的建立和保持时间
TRXCK = 建立时间 (时钟沿之前)
TRCKX = 保持时间 (时钟沿之后)
TRDCK_DI/ 数据输入 DI WRCLK 之前 / 之后,D1 必须稳定的时间。
TRCKD_DI(4)
TRCCK_RDEN/ 读使能 RDEN RDCLK 之前 / 之后,RDEN 必须稳定的时间。
TRCKC_RDEN(5)
TRCCK_WREN/ 写使能 WREN WRCLK 之前 / 之后,WREN 必须稳定的时间。
TRCKC_WREN(5)
时钟到输出延迟
TRCKO_DO(1) 时钟到数据输出 DO RDCLK 之后,输出数据在 FIFO 的 DO 输出上稳定
的时间。DO_REG = 0 时的同步 FIFO 与在多速率
模式下时不同。
TRCKO_AEMPTY(2) 时钟到近空输出 AEMPTY RDCLK 之后,Almost Empty 信号在 FIFO 的
ALMOSTEMPTY 输出上稳定的时间。
TRCKO_AFULL(2) 时钟到近满输出 AFULL WRCLK 之后,Almost Full 信号在 FIFO 的
ALMOSTFULL 输出上稳定的时间。
TRCKO_EMPTY(2) 时钟到空输出 EMPTY RDCLK 之后,Empty 信号在 FIFO 的 EMPTY 输出
上稳定的时间。
TRCKO_FULL(2) 时钟到满输出 FULL WRCLK 之后,Full 信号在 FIFO 的 FULL 输出上稳
定的时间。
TRCKO_RDERR(2) 时钟到读错误输出 RDERR RDCLK 之后,Read Error 信号在 FIFO 的 RDERR
输出上稳定的时间。
TRCKO_WRERR(2) 时钟到写错误输出 WRERR WRCLK 之后,Write Error 信号在 FIFO 的 WRERR
输出上稳定的时间。
TRCKO_RDCOUNT(3) 时钟到读指针输出 RDCOUNT RDCLK 之后,Read 指针信号在 FIFO 的
RDCOUNT 输出上稳定的时间。
TRCKO_WRCOUNT(3) 时钟到写指针输出 WRCOUNT WRCLK 之后,Write 指针信号在 FIFO 的
WRCOUNT 输出上稳定的时间。

144 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

FIFO 时序模型和参数

表 4-20: FIFO 时序参数 ( 续表 )


控制
参数 功能 描述
信号
复位到输出
TRCO_AEMPTY 复位到近空输出 AEMPTY 复位之后,Almost Empty 信号在 FIFO 的
ALMOSTEMPTY 输出上稳定的时间。
TRCO_AFULL 复位到近满输出 AFULL 复位之后,Almost FULL 信号在 FIFO 的
ALMOSTFULL 输出上稳定的时间。
TRCO_EMPTY 复位到空输出 EMPTY 复位之后,Empty 信号在 FIFO 的 EMPTY 输出上稳
定的时间。
TRCO_FULL 复位到满输出 FULL 复位之后,Full 信号在 FIFO 的 FULL 输出上稳定的
时间。
TRCO_RDERR 复位到读错误输出 RDERR 复位之后,Read Error 信号在 FIFO 的 RDERR 输出
上稳定的时间。
TRCO_WRERR 复位到写错误输出 WRERR 复位之后,Write Error 信号在 FIFO 的 WRERR 输
出上稳定的时间。
TRCO_RDCOUNT 复位到读指针输出 RDCOUNT 复位之后,Read 指针信号在 FIFO 的 RDCOUNT
输出上稳定的时间。
TRCO_WRCOUNT 复位到写指针输出 WRCOUNT 复位之后,Write 指针信号在 FIFO 的 WRCOUNT
输出上稳定的时间。

注:
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 的同时读取”

Virtex-5 用户指南 www.xilinx.com/cn 145


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 4-21: 写入 FWFT 模式的空 FIFO

时钟事件 1 和时钟事件 3:写操作和 EMPTY 信号的无效置位


在对空 FIFO 的写操作过程中,第一个地址的 FIFO 内容被 DI 引脚上的数据值取代。三个
读时钟周期后 (对于 FWFT 模式是四个读时钟周期后),EMPTY 引脚置为无效,此时
FIFO 不再是空的。由于内部读操作将数据预加载到输出寄存器,RDCOUNT 也加一。
对于图 4-21 中的示例,时序图反映的是 FWFT 模式。时钟事件 1 是对写时钟而言,而时
钟事件 3 是对读时钟而言。时钟事件 3 在时钟事件 1 之后四个读时钟周期出现。
• 在时间事件 1 (WRCLK) 之前的时间 TFDCK_DI 处,数据 00 在 FIFO 的 DI 输入上变为有
效。
• 在时间事件 1 (WRCLK) 之前的时间 TFCCK_WREN 处,写使能在 FIFO 的 WREN 输入上
变为有效。
• 在时间事件 3 (RDCLK) 之后的时间 TFCKO_DO 处,数据 00 在 FIFO 的 DO 输出引脚上
变为有效。在标准模式下,数据 00 不会出现在 FIFO 的 DO 输出引脚上。
• 在时钟事件 3 (RDCLK) 之后的时间 TFCKO_EMPTY 处,EMPTY 置为无效。在标准模式
下,EMPTY 置为无效比时钟事件 3 早一个读时钟。
如果 WRCLK 的上升沿接近 RDCLK 的上升沿,则 EMPTY 置为无效可能晚一个 RDCLK 周
期。

146 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

FIFO 时序模型和参数

时钟事件 2 和时钟事件 4:写操作和 Almost EMPTY 信号的无效置位


第四组数据写入 FIFO 后三个读时钟周期,Almost EMPTY 引脚置为无效,表示 FIFO 未处
于近 EMPTY 状态。
对于图 4-21 中的示例,时序图反映的是 FWFT 模式。时钟事件 2 是对写时钟而言,而时
钟事件 4 是对读时钟而言。时钟事件 4 在时钟事件 2 之后三个读时钟周期出现。
• 在时间事件 2 (WRCLK) 之前的时间 TFDCK_DI 处,数据 03 在 FIFO 的 DI 输入上变为有
效。
• 写使能在 FIFO 的 WREN 输入上保持为有效。
• 在时钟事件 4 处,FIFO 的 DO 输出引脚保持在 00,因为未执行任何读操作。在标准
模式的情况下,数据 00 永远不会出现在 FIFO 的 DO 输出引脚上。
• 在时钟事件 4 (RDCLK) 之后的时间 TFCKO_AEMPTY 处,Almost Empty 在 AEMPTY 引脚
上置为无效。在标准模式的情况下,AEMPTY 置为无效的方式与在 FWFT 模式下相
同。
如果 WRCLK 的上升沿接近 RDCLK 的上升沿,则 AEMPTY 置为无效可能晚一个 RDCLK
周期。

情形 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-22: 写入满 / 近满 FIFO

Virtex-5 用户指南 www.xilinx.com/cn 147


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

时钟事件 1:写操作和 Almost FULL 信号的有效置位


在对近满 FIFO 的写操作过程中,Almost FULL 信号置为有效。
• 在时间事件 1 (WRCLK) 之前的时间 TFDCK_DI 处,数据 00 在 FIFO 的 DI 输入上变为有
效。
• 在时间事件 1 (WRCLK) 之前的时间 TFCCK_WREN 处,写使能在 FIFO 的 WREN 输入上
变为有效。
• 在时间事件 1 (WRCLK) 之后一个时钟周期的时间 TFCKO_AFULL 处,Almost Full 在
FIFO 的 AFULL 输出引脚上置为有效。

时钟事件 2:写操作和 FULL 信号的有效置位


当 FIFO 已满时,FULL 信号引脚置为有效。
• 在时间事件 2 (WRCLK) 之前的时间 TFDCK_DI 处,数据 04 在 FIFO 的 DI 输入上变为有
效。
• 写使能在 FIFO 的 WREN 输入上保持为有效。
• 在时间事件 2 (WRCLK) 之后的时间 TFCKO_FULL 处,Full 在 FIFO 的 FULL 输出引脚上
置为有效。
如果 FIFO 已满,并且执行了一次读操作后接一次写操作,则 FULL 信号保持为有效。

时钟事件 3:写操作和 Write Error 信号的有效置位


当进入 FIFO 的数据由于 FIFO 处于 Full 状态而未写入时,Write Error 信号引脚置为有效。
• 在时间事件 3 (WRCLK) 之前的时间 TFDCK_DI 处,数据 05 在 FIFO 的 DI 输入上变为有
效。
• 写使能在 FIFO 的 WREN 输入上保持为有效。
• 在时间事件 3 (WRCLK) 之后的时间 TFCKO_WRERR 处,Write Error 在 FIFO 的 WRERR
输出引脚上置为有效。数据 05 不写入 FIFO。

时钟事件 4:写操作和 Write Error 信号的无效置位


当用户停止尝试向满 FIFO 写入时,Write Error 信号引脚置为无效。
• 在时间事件 4 (WRCLK) 之前的时间 TFCCK_WREN 处,写使能在 FIFO 的 WREN 输入上
置为无效。
• 在时间事件 4 (WRCLK) 之后的时间 TFCKO_WRERR 处,Write Error 在 FIFO 的 WRERR
输出引脚上置为无效。
Write Error 信号在每个写时钟正沿上置为有效 / 无效。只要写使能和 Full 信号都为 True,
Write Error 就会保持为有效。

148 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

FIFO 时序模型和参数

情形 3:从满 FIFO 中读取


在图 4-23 中执行的操作之前,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-23: 从满 FIFO 中读取

时钟事件 1 和时钟事件 2:读操作和 Full 信号的无效置位


在对满 FIFO 的读操作过程中,第一个地址的 FIFO 内容在 FIFO 的 DO 输出引脚上置为有
效。两次 RDEN 操作确保 FIFO 不再满,并且在三个 WRCLK 周期后 FULL 引脚置为无效。
图 4-23 中的示例反映标准和 FWFT 两种模式。时钟事件 1 和 2 是对读时钟而言。时钟事
件 4 在时钟事件 2 之后三个写时钟周期出现。
• 在时间事件 1 (RDCLK) 之前的时间 TFCCK_RDEN 处,读使能在 FIFO 的 RDEN 输入上
变为有效。
• 在时间事件 1 (RDCLK) 之后的时间 TFCKO_DO 处,数据 00 在 FIFO 的 DO 输出上变为
有效。
• 在时钟事件 4 (WRCLK) 之后的时间 TFCKO_FULL 处,FULL 置为无效。
如果 RDCLK 的上升沿接近 WRCLK 的上升沿,则 FULL 置为无效可能晚一个 WRCLK 周
期。

时钟事件 3 和时钟事件 5:读操作和 Almost FULL 信号的无效置位


从 FIFO 读取第四组数据后三个读时钟周期,Almost FULL 引脚置为无效,表示 FIFO 未处
于近 FULL 状态。
图 4-23 中的示例反映标准和 FWFT 两种模式。时钟事件 3 是对读时钟而言,而时钟事件 5
是对写时钟而言。时钟事件 5 在时钟事件 3 之后三个写时钟周期出现。
• 读使能在 FIFO 的 RDEN 输入上保持为有效。
• 在时钟事件 5 (RDCLK) 之后的时间 TFCKO_AFULL 处,Almost FULL 在 AFULL 引脚上
置为无效。
读时钟上沿与写时钟上沿之间有一个保证 AFULL 置为无效的最短时间。如果未满足这一最
短时间,则 AFULL 的无效置位会多占用一个写时钟周期。

Virtex-5 用户指南 www.xilinx.com/cn 149


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

情形 4:从空或近空 FIFO 中读取


在图 4-24 中执行的操作之前,FIFO 接近全空。在此示例中,时序图反映的是标准模式。
对于 FWFT 模式,DO 上的数据出现早一个读时钟周期。

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

图 4-24: 从空 / 近空 FIFO 中读取 (标准模式)

时钟事件 1:读操作和 Almost EMPTY 信号的有效置位


在对近空 FIFO 的读操作过程中,Almost EMPTY 信号置为有效。
• 在时间事件 1 (RDCLK) 之前的时间 TFCCK_RDEN 处,读使能在 FIFO 的 RDEN 输入上
变为有效。
• 在时间事件 1 (RDCLK) 之后的时间 TFCKO_DO 处,数据 00 在 FIFO 的 DO 输出上变为
有效。
• 在时间事件 1 (RDCLK) 之后一个时钟周期的时间 TFCKO_AEMPTY 处,Almost EMPTY 在
FIFO 的 AEMPTY 输出引脚上置为有效。

时钟事件 2:读操作和 EMPTY 信号的有效置位


当 FIFO 已空时,EMPTY 信号引脚置为有效。
• 读使能在 FIFO 的 RDEN 输入上保持为有效。
• 在时间事件 2 (RDCLK) 之后的时间 TFCKO_DO 处,数据 04 (最后一组数据)在 FIFO
的 DO 输出上变为有效。
• 在时间事件 2 (RDCLK) 之后的时间 TFCKO_EMPTY 处,Empty 在 FIFO 的 EMPTY 输出
引脚上置为有效。
如果 FIFO 已空,并且执行了一次写操作后接一次读操作,则 EMPTY 信号保持为有效。

150 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

FIFO 时序模型和参数

时钟事件 3:读操作和 Read Error 信号的有效置位


当由于 FIFO 处于 Empty 状态而无数据可读时,Read Error 信号引脚置为有效。
• 读使能在 FIFO 的 RDEN 输入上保持为有效。
• 在时间事件 3 (RDCLK) 之后的时间 TFCKO_RDERR 处,Read Error 在 FIFO 的 RDERR
输出引脚上置为有效。
• 数据 04 在 FIFO 的 DO 输出上保持不变。

时钟事件 4:读操作和 Read Error 信号的无效置位


当用户停止尝试从空 FIFO 读出时,Read Error 信号引脚置为无效。
• 在时间事件 4 (RDCLK) 之前的时间 TFCCK_RDEN 处,读使能在 FIFO 的 RDEN 输入上
置为无效。
• 在时间事件 4 (RDCLK) 之后的时间 TFCKO_RDERR 处,Read Error 在 FIFO 的 RDERR
输出引脚上置为无效。
Read Error 信号在每个读时钟正沿上置为有效 / 无效。只要读使能和 Empty 信号都为
True,Read Error 就会保持为有效。

情形 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 输出引脚上
置为无效。

Virtex-5 用户指南 www.xilinx.com/cn 151


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

复位是用来复位所有标记的异步信号。请保持复位信号在三个读写时钟周期内为 High,以
确保将所有内部状态和标记复位到正确值。

情形 6:多速率 FIFO 的同时读取


当 FIFO 处在欲将状态标记置为有效的状态时,异步 FIFO 的同时读写操作是非确定性操
作。FIFO 逻辑可解决这种情况 (无论是否将标记置为有效),而软件仿真模型不能反映这
种行为,所以会出现不匹配。当 RDCLK 和 WRCLK 共用一个时钟时,请在同步模式
(EN_SYN=TRUE) 下使用 FIFO。

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 中设置。

DI<3:0> DI<3:0> DO<3:0> DI<3:0> DO<3:0> DI<3:0> DO<3:0> DO<3:0>


FWFT WREN FWFT WREN
WREN WREN EMPTY EMPTY FULL
Mode Mode ALMOST
RDEN RDEN FULL RDEN ALMOST EMPTY
ALMOSTFULL
WRCLK WRCLK WRCLK WRCLK EMPTY
RDCLK FIFO 1 FULL RDCLK FIFO 2 ... (N–1) RDCLK FIFO N EMPTY EMPTY
INTCLK
RDEN
RDCLK ALMOST
FULL
FULL
N x 8K x 4 FIFO
ug190_4_23_090407

图 4-26: 示例:按深度级联多个 FIFO

152 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

并联 FIFO 以增加宽度
如图 4-27 所示,可以连接 Virtex-5 FIFO36 以增加设计的宽度。CLB 逻辑用来实现
AND/OR 门。所有 FIFO AFULL 信号都必须用 OR 门连接到一起,以建立 AFULL 输出信号
;所有 FIFO EMPTY 信号都必须用 OR 门连接到一起,以建立 EMPTY 输出信号。最高频率
受逻辑门反馈通路限制。

512 x 144 FIFO

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

图 4-27: 示例:并联 FIFO 以增加宽度

内置纠错
每个简单双端口 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 模式。

Virtex-5 用户指南 www.xilinx.com/cn 153


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 配置不适用。

154 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

Block RAM ECC 架构的顶层视图


图 4-28 所示为 ECC 模式下 Virtex-5 Block RAM 的顶层视图。

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-28: Block RAM ECC 的顶层视图

Virtex-5 用户指南 www.xilinx.com/cn 155


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

Block RAM 和 FIFO ECC 基元


图 4-29 所示为 Block RAM (RAMB36SDP) ECC 基元。图 4-30 所示为 FIFO36_72 ECC 基
元。FIFO36_72 仅支持标准模式。

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

图 4-29: RAMB36SDP:Block RAM ECC 基元

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

图 4-30: FIFO36_72:FIFO ECC 基元

156 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

Block RAM 和 FIFO ECC 端口描述


表 4-21 列出并描述 Block RAM ECC 的 I/O 端口名称。

表 4-21: Block RAM ECC 端口名称及描述


端口名称 方向 信号描述
DI[63:0] 输入 数据输入总线。
DIP[7:0] 输入 数据输入奇偶校验总线。在只解码模式下用于输入预先计算的 ECC 奇偶校验位。
WRADDR[8:0] 输入 写地址总线。
RDADDR[8:0] 输入 读地址总线。
WREN 输入 写使能。当 WREN = 1 时,将数据写入存储器。当 WREN = 0 时,禁止写操作。
RDEN 输入 读使能。当 RDEN = 1 时,从存储器读出数据。当 RDEN = 0 时,禁止读操作。
SSR 输入 使用 Block RAM ECC 基元时不支持。始终接地。
WRCLK 输入 写操作的时钟。
RDCLK 输入 读操作的时钟。
DO[63:0] 输出 数据输出总线。
DOP[7:0] 输出 数据输出奇偶校验总线。在只编码模式下用于输出存储的 ECC 奇偶校验位。
SBITERR(1) 输出 单位元错误状态。
DBITERR(1) 输出 双位元错误状态。
ECCPARITY[7:0] 输出 ECC 编码器输出总线。

注:
1. Block RAM ECC 逻辑中实现的汉明码检测这三种状态之一:没有可检测的错误、检测到单位元错误并已在 DO 上纠正 (但未在存
储器中纠正)、检测到双位元错误但未纠正。SBITERR 和 DBITERR 指示这三种状态。

Virtex-5 用户指南 www.xilinx.com/cn 157


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

表 4-22 列出并描述 FIFO ECC 的 I/O 端口名称。

表 4-22: FIFO ECC 的端口名称和描述


端口名称 方向 信号描述
DI[63:0] 输入 数据输入总线。
DIP[7:0] 输入 数据输入奇偶校验总线。使用标准模式时不使用。
WREN 输入 写使能。当 WREN = 1 时,将数据写入存储器。当 WREN = 0 时,禁止写操作。
RDEN 输入 读使能。当 RDEN = 1 时,从存储器读出数据。当 RDEN = 0 时,禁止读操作。
RST 输入 FIFO 计数器和标记的异步复位。复位必须置为在三个时钟周期内有效。复位不
影响 DO 或 ECC 信号。
WRCLK 输入 写操作的时钟。
RDCLK 输入 读操作的时钟。
DO[63:0] 输出 数据输出总线。
DOP[7:0] 输出 数据输出奇偶校验总线。
SBITERR(1) 输出 单位元错误状态。
DBITERR(1) 输出 双位元错误状态。
ECCPARITY[7:0] 输出 ECC 编码器输出总线。
FULL 输出 FIFO FULL 标记。
ALMOSTFULL 输出 FIFO ALMOSTFULL 标记。
EMPTY 输出 FIFO EMPTY 标记。
ALMOSTEMPTY 输出 FIFO ALMOSTEMPTY 标记。
RDCOUNT 输出 FIFO 数据的读指针。
WRCOUNT 输出 FIFO 数据的写指针。
WRERR 输出 当 FIFO 已满时,任何其他写操作都会生成错误标记。
RDERR 输出 当 FIFO 已空时,任何其他读操作都会生成错误标记。

注:
1. FIFO ECC 逻辑中实现的汉明码检测这三种状态之一:没有可检测的错误、检测到单位元错误并已在 DO 上纠正 (但未在存储器中
纠正)、检测到双位元错误但未纠正。SBITERR 和 DBITERR 指示这三种状态。

158 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

Block RAM 和 FIFO ECC 属性


除了解码和纠错逻辑中的内置寄存器,RAMB36SDP 基元还允许使用由 DO_REG 属性控制
的可选流水线寄存器,以获得具有一个附加延迟的较高性能。表 4-23 和表 4-24 列出了
Block RAM 和 FIFO ECC 的属性。

表 4-23: Block RAM (RAMB36SDP) 的属性


属性名称 类型 值 默认 说明
EN_ECC_WRITE 布尔值 TRUE、FALSE FALSE 设置为 TRUE 时启用 ECC 编码器。
EN_ECC_READ 布尔值 TRUE、FALSE FALSE 设置为 TRUE 时启用 ECC 解码器。
DO_REG 1 位二进制 0、1 0 启用寄存器模式或锁存器模式。

表 4-24: FIFO (FIFO36_72) 的属性


属性名称 类型 值 默认 说明
EN_ECC_WRITE TRUE、 要在 FIFO36_72 中启用 ECC 功能,两
布尔值 FALSE
FALSE 个属性都必须设置为 TRUE。
EN_ECC_READ TRUE、
布尔值 FALSE
FALSE
启用寄存器模式或锁存器模式。有关多
1 位二
DO_REG 0、1 1 速率和同步 FIFO 的详情,请见表 4-
进制
17。
当设置为 TRUE 时,将 WRCLK 和
RDCLK 捆绑到一起。
TRUE、 当设置为 TRUE 时,FWFT 必须是
EN_SYN 布尔值 FALSE
FALSE FALSE。
当设置为 FALSE 时,DO_REG 必须是
1。
设置确定 EMPTY 与 ALMOST_EMPTY
9 位十
ALMOST_EMPTY_OFFSET 请见表 4-19 请见表 4-19 状态之间的区别。必须用十六进制记数
六进制
法设置。
设置确定 FULL 与 ALMOST_FULL 状态
9 位十
ALMOST_FULL_OFFSET 请见表 4-19 请见表 4-19 之间的区别。必须用十六进制记数法设
六进制
置。
当设置为 TRUE 时,写入空 FIFO36_72
TRUE、
FIRST_WORD_FALL_THROUGH 布尔值 FALSE 的第一个字出现在 FIFO36_72 的输出
FALSE
上,无需 RDEN 置为有效。

Virtex-5 用户指南 www.xilinx.com/cn 159


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

ECC 的操作模式
ECC 操作有三种类型:标准、只编码、只解码。在标准 ECC 模式下,编码器和解码器二
者都使用。
图 4-31 和图 4-32 显示了 Block RAM 和 FIFO 中的各种 ECC 操作模式。Block RAM 的
WRADDR 和 RDADDR 地址输入由用户提供。FIFO 的 WRADDR 和 RDADDR 地址由写计
数器和读计数器内部生成。

T1W T2W T3W T4W T5W

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

图 4-31: ECC 写操作

T1R T2R T3R T4R


RDCLK

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)

DBITERR Double Bit Error


(Latch Mode) TRCKO_ECC_DBITERR (Latch Mode)
DO[63:0] A B C
(Register Mode)
TRCKO_DO (Register Mode)
DOP[7:0]
(Register Mode) PA PB PC

SBITERR Single Bit Error


(Register Mode) TRCKO_ECC_SBITERR (Register Mode)

DBITERR Double Bit Error


(Register Mode) TRCKO_ECC_DBITERR (Register Mode)
ug190_4_33_020707

图 4-32: ECC 读操作

160 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

标准 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] 引脚。

Virtex-5 用户指南 www.xilinx.com/cn 161


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

同样,在时间 T2W 和 T3W 处,DI[63:0] = B 和 C 与其对应的奇偶校验位 PB (十六进制)


和 PC (十六进制)一起写入存储器的位置 b 和 c。在 T2W 和 T3W 之后,PB 和 PC 立即
出现在输出 ECCPARITY[7:0] 上。

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 解码器还检测奇偶校验位中的双位元错误发生的时间,以及数据位中的单位元错误和
相应奇偶校验位中的单位元错误发生的时间。

162 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

ECC 时序特性
图 4-31 和图 4-32 还显示了各种 ECC 时序参数。
因为写时钟与读时钟相互独立,所以图 4-31 中的所有写时序均参考 WRCLK,而图 4-32
中的所有读时序均参考 RDCLK。

标准 ECC 写时序 (图 4-31)


• 在时间 T1W 之前的时间 TRCCK_EN 处,写使能在 Block RAM 的 WREN 输入上变为
有效。
• 在时间 T1W 之前的时间 TRCCK_ADDR 处,写地址 a 在 Block RAM 的 WRADDR[8:0]
输入上变为有效。FIFO 不需要 WRADDR 输入。
• 在时间 T1W 之前的时间 TRDCK_DI_ECC (标准 ECC)处,写数据 A (十六进制)
在 Block RAM 的 DI[63:0] 输入上变为有效。
• 在时间 T1W 之后的时间 TRCKO_ECC_PARITY (标准 ECC)处,ECC 奇偶校验数据
PA (十六进制)在 Block RAM 的 ECCPARITY[7:0] 输出引脚上变为有效。

标准 ECC 读时序 (图 4-32)


• 在时间 T1R 之前的时间 TRCCK_EN 处,读使能在 Block RAM 的 RDEN 输入上变为有
效。
• 在时间 T1R 之前的时间 TRCCK_ADDR 处,写地址 a 在 Block RAM 的 RDADDR[8:0]
输入上变为有效。FIFO 不需要 RDADDR 输入。

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 置为有效。

Virtex-5 用户指南 www.xilinx.com/cn 163


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

只编码 ECC 写时序 (图 4-31)


• WREN 和 WRADDR 的建立 / 保持时间与标准 ECC 相同。
• 在时间 T1W 之前的时间 TRDCK_DI_ECC (只编码 ECC)处,写数据 A (十六进制)
在 Block RAM 的 DI[63:0] 输入上变为有效。
• 在时间 T1W 之后的时间 TRCKO_ECC_PARITY (只编码 ECC)处,ECC 奇偶校验数
据 PA (十六进制)在 Block RAM 的 ECCPARITY[7:0] 输出引脚上变为有效。

只编码 ECC 读时序


• 只编码 ECC 读时序与正常的 Block RAM 读时序相同。

只解码 ECC 写时序


• 只解码 ECC 写时序与正常的 Block RAM 写时序相同。

只解码 ECC 读时序


• 只解码 ECC 读时序与标准 ECC 读时序相同。

Block RAM ECC 模式时序参数


表 4-25 所示为 Virtex-5 Block RAM ECC 模式的时序参数。

表 4-25: Block RAM ECC 模式时序参数


控制
参数 功能 描述
信号
相对于时钟 (CLK) 的建立和保持时间
TRxCK_x = 建立时间 (时钟沿之前),TRCKx_x = 保持时间 (时钟沿之后)
TRDCK_DI_ECC 时钟之前,数据必须在 Block RAM 的 DI 输入上稳
(标准 ECC 模式) 定的时间。标准 ECC 模式。
数据输入 (1) DI
TRCKD_DI_ECC 时钟之后,数据必须在 Block RAM 的 DI 输入上稳
(标准 ECC 模式) 定的时间。标准 ECC 模式。

TRDCK_DI_ECC 时钟之前,数据必须在 Block RAM 的 DI 输入上稳


(只编码模式) 定的时间。只编码模式。
数据输入 (1) DI
TRCKD_DI_ECC 时钟之后,数据必须在 Block RAM 的 DI 输入上稳
(只编码模式) 定的时间。只编码模式。

时钟到输出延迟
TRCKO_DO 时钟到输出 (2) CLK 到 DO 时钟之后,输出数据在 Block RAM 的 DO 输出上稳
(锁存器模式) 定的时间 (无输出寄存器)。

TRCKO_DO 时钟到输出 (2) CLK 到 DO 时钟之后,输出数据在 Block RAM 的 DO 输出上稳


(寄存器模式) 定的时间 (有输出寄存器)。

164 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

内置纠错

表 4-25: Block RAM ECC 模式时序参数 ( 续表 )


控制
参数 功能 描述
信号
时钟到 ECC 延迟
TRCKO_ECC_PARITY 时钟到 ECC 奇偶 ECCPARITY WRCLK 之后,ECC 奇偶校验信号在 Block RAM 的
(只编码模式)(3) 校验输出 ECCPARITY 输出上稳定的时间 (只编码模式下)。

TRCKO_ECC_SBITERR(3) 时钟到 ECC 单位 SBITERR RDCLK 之后,单位元错误信号在 Block RAM 的


元错误输出 SBITERR 输出上稳定的时间 (无输出寄存器)。
TRCKO_ECCR_SBITERR(4) 时钟到 ECCT 单 SBITERR RDCLK 之后,单位元错误信号在 Block RAM 的
位元错误输出 SBITERR 输出上稳定的时间 (有输出寄存器)。
TRCKO_ECC_DBITERR(3) 时钟到 ECC 双位 DBITERR RDCLK 之后,双位元错误信号在 Block RAM 的
元错误输出 DBITERR 输出上稳定的时间 (无输出寄存器)。
TRCKO_ECCR_DBITERR(4) 时钟到 ECC 双位 DBITERR RDCLK 之后,双位元错误信号在 Block RAM 的
元错误输出 DBITERR 输出上稳定的时间 (有输出寄存器)。

注:
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,这样即可插入单位元或双位元错误。

Block RAM ECC 的 VHDL 和 Verilog 模板


《库指南》中提供了 VHDL 和 Verilog 模板。

Virtex-5 用户指南 www.xilinx.com/cn 165


UG190 (v3.1) 2007 年 9 月 11 日
R

第 4 章: Block RAM

166 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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-1: CLB 内的 Slice 排列


Xilinx 工具用以下定义标示 Slice。“X”后跟一个数字表示各 Slice 在对中的位置以及该
Slice 的列位置。“X”的数字从底部起按 0、1 (第一 CLB 列),2、3 (第二 CLB 列)等
依次计数 Slice。“Y”后跟一个数字表示 Slice 的列。此数字在一个 CLB 内保持不变,从
底部起向上依次计数 CLB 行。图 5-2 所示为位于晶片左下角的四个 CLB。

Virtex-5 用户指南 www.xilinx.com/cn 167


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

COUT COUT COUT COUT

CLB CLB
Slice Slice
X1Y1 X3Y1

Slice Slice
X0Y1 X2Y1

CIN CIN CIN CIN

COUT COUT COUT COUT


CLB CLB
Slice Slice
X1Y0 X3Y0

Slice Slice
X0Y0 X2Y0

UG190_5_02_122605

图 5-2: CLB 与 Slice 之间的行列关系

Slice 描述
每个 Slice 包含四个逻辑函数发生器 (即查找表)、四个存储元件、多功能多路复用器和进
位逻辑。所有 Slice 都通过这些元件进行逻辑、算术和 ROM 函数运算。除此之外,有些
Slice 还支持两个附加功能:用分布式 RAM 存储数据和用 32 位寄存器进行数据移位。支持
这些附加功能的 Slice 称为 SLICEM ;其他 Slice 则称为 SLICEL。SLICEM (如图 5-3 所
示)代表所有 Slice 中元件和连接功能的扩展集。SLICEL 如图 5-4 所示。

168 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 图

Virtex-5 用户指南 www.xilinx.com/cn 169


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

COUT Reset Type


Sync
Async

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 可以包含零个或一个 SLICEM。每隔一个 CLB 列包含一个 SLICEM。另外,


DSP48E 左边的两个 CLB 列各包含一个 SLICEL 和一个 SLICEM。

170 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB 概述

CLB/Slice 配置
表 5-1 概述了 CLB 中的逻辑资源。每个 CLB 或 Slice 都可以配置为下表所列功能之一。
表 5-2 所示为所有 CLB 中的可用资源。

表 5-1: 一个 CLB 中的逻辑资源


算术和
Slice LUT 触发器 分布式 RAM(1) 移位寄存器 (1)
进位链
2 8 8 2 256 位 128 位

注:
1. 仅指 SLICEM,SLICEL 没有分布式 RAM 或移位寄存器。

表 5-2: 可在所有 CLB 中使用的 Virtex-5 逻辑资源


CLB 阵列 6 输入 最大 移位 触发器
器件
行x列 LUT 数 分布式 RAM (Kb) 寄存器 (Kb) 数
XC5VLX30 80 x 30 19,200 320 160 19,200
XC5VLX30T 80 x 30 19,200 320 160 19,200
XC5VSX35T 80 x 34 21,760 520 260 21,760
XC5VLX50 120 x 30 28,800 480 240 28,800
XC5VLX50T 120 x 30 28,800 480 240 28,800
XC5VSX50T 120 x 34 32,640 780 390 32,640
XC5VLX85 120 x 54 51,840 840 420 51,840
XC5VLX85T 120 x 54 51,840 840 420 51,840
XC5VSX95T 160 x 46 58,880 1,520 760 58,880
XC5VLX110 160 x 54 69,120 1,120 560 69,120
XC5VLX110T 160 x 54 69,120 1,120 560 69,120
XC5VLX220 160 x 108 138,240 2,280 1140 138,240
XC5VLX220T 160 x 108 138,240 2,280 1140 138,240
XC5VLX330 240 x 108 207,360 3,420 1710 207,360
XC5VLX330T 240 x 108 207,360 3,420 1710 207,360

查找表 (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 输出进入进位逻辑多路复用器

Virtex-5 用户指南 www.xilinx.com/cn 171


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

的选择线 (见 “快速先行进位逻辑”),或馈入存储元件的 D 输入,或者从 O6 输出传送


到 F7AMUX/F7BMUX。
除了基本 LUT,Virtex-5 Slice 还包含三个多路复用器 (F7AMUX、F7BMUX 和
F8MUX)。这些多路复用器用来将最多四个函数发生器组合在一起,以便在 Slice 中提供
七个或八个输入的任意函数。F7AMUX 和 F7BMUX 用来从 Slice A 和 B 或者 C 和 D 生成
七输入函数;而 F8MUX 则用来组合所有 Slice,以生成八输入函数。超过八个输入的函数
可以用多个 Slice 实现。各 Slice 之间没有直接连接可用来在一个 CLB 中或在各 Slice 之间
形成超过八个输入的函数发生器。

存储元件
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 的真值表。

表 5-3: 使用 SRLOW 时的真值表 (默认状态)


SR REV 功能
0 0 无逻辑变化
0 1 1
1 0 0
1 1 0

表 5-4: 使用 SRHIGH 时的真值表


SR REV 功能
0 0 无逻辑变化
0 1 0
1 0 1
1 1 0

172 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-5: Slice 中的寄存器 / 锁存器配置


对于 Slice 中的各存储元件,可分别设置 SRHIGH 和 SRLOW。对于 Slice 中的各存储元
件,不可分别设置同步 (SYNC) 或异步 (ASYNC) 设置 / 复位 (SRTYPE) 选项。
配置后的初始状态或全局初始状态分别由 INIT0 和 INIT1 属性定义。默认状态下,设置
SRLOW 属性就是设置 INIT0,而设置 SRHIGH 属性就是设置 INIT1。Virtex-5 器件可以将
INIT0 和 INIT1 设置成与 SRHIGH 和 SRLOW 无关。
寄存器或锁存器的设置和复位功能的配置选项如下:
• 无设置或复位
• 同步设置
• 同步复位
• 同步设置和复位
• 异步设置 (预设置)
• 异步复位 (清零)
• 异步设置和复位 (预设置和清零)

Virtex-5 用户指南 www.xilinx.com/cn 173


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

分布式 RAM 和存储器 (只能在 SLICEM 中使用)


可以用各种方法将 SLICEM 中的多个 LUT 组合起来,以存储较大量数据。
可以把 SLICEM 中的函数发生器 (LUT) 配置成一种称为分布式 RAM 元件的同步 RAM 资
源。在 SLICEM 内可以将 RAM 元件配置成以下形式:
• 单端口 32 x 1 位 RAM
• 双端口 32 x 1 位 RAM
• 四端口 32 x 2 位 RAM
• 简单双端口 32 x 6 位 RAM
• 单端口 64 x 1 位 RAM
• 双端口 64 x 1 位 RAM
• 四端口 64 x 1 位 RAM
• 简单双端口 64 x 3 位 RAM
• 单端口 128 x 1 位 RAM
• 双端口 128 x 1 位 RAM
• 单端口 256 x 1 位 RAM
分布式 RAM 模块是同步 (写)资源。可以用同一 Slice 中的一个存储元件或触发器实现同
步写。通过合理设置这个触发器的位置,可以将触发器的延迟缩短到触发器的时钟到输出
范围内,从而提高分布式 RAM 的性能。不过,这样会附加一个时钟延迟。分布式元件共
用相同的时钟输入。对于写操作,必须将写使能 (WE) 输入(由 SLICEM 的 CE 或 SLICEM
的 WE 引脚驱动)设置为 High。

174 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB 概述

表 5-5 所示为各分布式 RAM 配置占用的 LUT 数 (每 Slice 四个)。


表 5-5: 分布式 RAM 配置
RAM LUT 数
32 x 1S 1
32 x 1D 2
32 x 2Q(2) 4
32 x 6SDP(2) 4
64 x 1S 1
64 x 1D 2
64 x 1Q(3) 4
64 x 3SDP(3) 4
128 x 1S 2
128 x 1D 4
256 x 1S 4

注:
1. S = 单端口配置; D = 双端口配置; Q = 四端口配置; SDP = 简单双端口配置。
2. RAM32M 是此配置的相关基元。
3. RAM64M 是此配置的相关基元。

对于单端口配置,分布式 RAM 有一个同步写和异步读共用的地址端口。对于双端口配置,


分布式 RAM 有一个同步写和异步读端口,另外还有一个异步读端口。在简单双端口配置
中,没有来自写端口的数据输出 (读端口)。对于四端口配置,分布式 RAM 有一个同步
写和异步读端口,另外还有三个异步读端口。
在单端口模式下,读和写地址共用同一地址总线。在双端口模式下,一个函数发生器与共
用的读写端口地址连接。第二个函数发生器的 A 输入连接到另一个只读端口地址,WA 输
入共用第一个读 / 写端口地址。
图 5-6 到图 5-14 所示为用一个 SLICEM 配置不同分布式 RAM 的示例。当使用 x2 配置
(RAM32X2Q) 时,A6 和 WA6 由软件置为 High,以保持 O5 与 O6 独立。

Virtex-5 用户指南 www.xilinx.com/cn 175


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 5-6: 分布式 RAM (RAM32X2Q)

176 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-7: 分布式 RAM (RAM32X6SDP)

Virtex-5 用户指南 www.xilinx.com/cn 177


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 5-8: 分布式 RAM (RAM64X1S)

如果构建四个单端口 64 x 1 位模块,这四个 RAM64X1S 基元可以占用一个 SLICEM,只要


它们共用相同的时钟和写使能并且共享了读写端口地址输入即可。这种配置相当于 64 x 4
位单端口分布式 RAM。

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

图 5-9: 分布式 RAM (RAM64X1D)


如果构建两个双端口 64 x 1 位模块,这两个 RAM64X1D 基元可以占用一个 SLICEM,只要
它们共用相同的时钟、写使能和共享读写端口地址输入即可。这种配置相当于 64 x 2 位双
端口分布式 RAM。

178 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-10: 分布式 RAM (RAM64X1Q)

Virtex-5 用户指南 www.xilinx.com/cn 179


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 5-11: 分布式 RAM (RAM64X3SDP)

深度大于 64 的分布式 RAM 配置的实现需要使用多功能多路复用器 (F7AMUX、F7BMUX


和 F8MUX)。

180 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-12: 分布式 RAM (RAM128X1S)


如果构建两个单端口 128 x 1 位模块,这两个 RAM128X1S 基元可以占用一个 SLICEM,只
要它们共用相同的时钟、写使能和共享读写端口地址输入即可。这种配置相当于 128 x 2
位单端口分布式 RAM。

Virtex-5 用户指南 www.xilinx.com/cn 181


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 5-13: 分布式 RAM (RAM128X1D)

182 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-14: 分布式 RAM (RAM256X1S)


大于所提供示例的分布式 RAM 配置需要一个以上 SLICEM。各 Slice 之间没有直接连接以
用来在一个 CLB 中或在各 Slice 之间形成较大的分布式 RAM 配置。

Virtex-5 用户指南 www.xilinx.com/cn 183


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

分布式 RAM 数据流


同步写操作
同步写操作是具有 High 有效写使能 (WE) 功能的单时钟沿操作。当 WE 为 High 时,输入
(D) 加载到地址 A 处的存储器位置。
异步读操作
输出由地址 A (对于单端口模式的输出和双端口模式的 SPO 输出)或地址 DPRA (双端
口模式的 DPO 输出)确定。每当有新地址施加到地址引脚,该地址处的存储器中的数据值
就会在访问 LUT 的时间延迟之后出现在输出上。此操作是异步操作,与时钟信号无关。

分布式 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

移位寄存器 (只能在 SLICEM 中使用)


SLICEM 函数发生器还可配置成 32 位移位寄存器,无需使用 Slice 中提供的触发器。以这
种方法使用的每个 LUT 可以将串行数据延迟 1 到 32 个时钟周期之间的任意长度。移位输
入 D (DI1 LUT 引脚)线和移位输出 Q31 (MC31 LUT 引脚)线用来级联多个 LUT,以形
成较大的移位寄存器。SLICEM 中的四个 LUT 以这种方式级联,可产生长达 128 个时钟周
期的延迟。还可以跨一个以上 SLICEM 组合多个移位寄存器。请注意,各 Slice 之间没有
直接连接可用来形成较长的移位寄存器,而且 LUT B/C/D 也没有 MC31 输出。由此产生的
可编程延迟可用来平衡数据流水线的时序。
需要延时或延迟补偿的应用可使用这些移位寄存器开发高效设计。在同步 FIFO 和内容可
寻址存储器 (CAM) 设计中,移位寄存器也很有用。
写操作是具有一个时钟输入 (CLK) 和一个可选时钟使能 (CE) 的同步操作。动态读访问通过
5 位地址总线 A[4:0] 执行。LUT 的 LSB 不使用,软件自动将其固定为逻辑 High。可配置移
位寄存器不可设置或复位。读操作是异步操作;不过,可以用存储元件或触发器实现同步
读操作。在这种情况下,触发器的时钟到输出时间控制总体延迟,因而可提高性能。不
过,这样会附加一个周期的时钟延迟。通过变换 5 位地址,可以 (从 O6 LUT 输出)异步
读出 32 个位的任意部分。这一功能可用来创建较小的移位寄存器 (小于 32 位)。例如,
如果要构建 13 位移位寄存器,将地址设置到第 13 个位即可。图 5-15 所示为 32 位移位寄
存器的逻辑框图。

184 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB 概述

SRLC32E

SHIFTIN (MC31 of Previous LUT)

SRL32
(AX)
SHIFTIN (D) DI1
MC31
SHIFTOUT (Q31)
5 (A[6:2])
A[4:0] A[6:2]

(CLK) O6 Output (Q)


CLK CLK
(WE/CE) (AQ) Registered
CE CE D Q
Output
(Optional)

ug190_5_15_050506

图 5-15: 32 位移位寄存器配置
图 5-16 所示为占用一个函数发生器的移位寄存器配置示例。图 5-17 所示为 16 位移位寄
存器。

32-bit Shift Register


SHIFTIN (D)

WE SHIFTOUT(Q31)

CLK

5
Address (A[4:0]) MUX

Q UG190_5_16_050506

图 5-16: 移位寄存器图示

Virtex-5 用户指南 www.xilinx.com/cn 185


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 位移位寄存器配置

186 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 位移位寄存器配置

Virtex-5 用户指南 www.xilinx.com/cn 187


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 5-20: 128 位移位寄存器配置


可以跨一个以上 SLICEM 创建长度大于 128 位的移位寄存器。不过,各 Slice 之间没有直
接连接可用来形成这些移位寄存器。

移位寄存器数据流
移位操作
移位操作是具有 High 有效时钟使能功能的单时钟沿操作。当使能为 High 时,输入 (D) 加
载到移位寄存器的首位。同时,每个位移动到下一个最高位元位置。在可级联移位寄存器
配置中,末位在 M31 输出上移出。
由 5 位地址端口 (A[4:0]) 选定的位出现在 Q 输出上。

188 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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。

Virtex-5 用户指南 www.xilinx.com/cn 189


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

SEL C [1:0], DATA C [3:0] (C[6:1]) 6 (CQ) Registered


A[6:1] D Q
Input 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

图 5-21: Slice 中的四个 4:1 多路复用器

190 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB 概述

8:1 多路复用器
每个 Slice 有一个 F7AMUX 和一个 F7BMUX。这两个多路器与两个 LUT 的输出组合,形成
最多 13 个输入的组合函数 (即一个 8:1 多路器)。如图 5-22 所示,一个 Slice 中最多可
以实现两个 8:1 多路器。

SLICE

LUT

O6

SEL D [1:0], DATA D [3:0] (D[6:1]) 6


A[6:1] F7BMUX
Input (1)
(CMUX)
8:1 MUX
LUT Output (1)
(CQ) Registered
O6 D Q
Output
SEL C [1:0], DATA C [3:0] (C[6:1]) 6
A[6:1]
Input (1)
(Optional)

(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-22: Slice 中的两个 8:1 多路复用器

Virtex-5 用户指南 www.xilinx.com/cn 191


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

SEL C [1:0], DATA C [3:0] (C[6:1]) 6


A[6:1]
Input
F8MUX

(CX) (BMUX) 16:1 MUX


SELF7
Output
LUT
(B) Registered
D Q
O6 Output

SEL B [1:0], DATA B [3:0] (B[6:1]) 6


A[6:1] F7AMUX (Optional)
Input

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

图 5-23: Slice 中的 16:1 多路复用器

可以跨一个以上 SLICEM 创建宽度大于 16:1 的多路复用器。不过,各 Slice 之间没有直接


连接可用来形成这些宽多路复用器。

快速先行进位逻辑
除了函数发生器,还提供了专用进位逻辑,用于在 Slice 中实现快速算术加减运算。
Virtex-5 的 CLB 有两条独立进位链,如图 5-1 所示。进位链可以级联,以形成较宽的加减
逻辑,如图 5-2 所示。
Virtex-5 器件中的进位链是上行进位链,每个 Slice 具有四位的高度。对于每个位,有一个
进位多路复用器 (MUXCY) 和一个专用 XOR 门,用于按选定的进位位元对运算元进行加减
运算。专用的进位通路和进位多路复用器 (MUXCY) 还可用来级联函数发生器,以实现宽逻
辑函数。

192 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB 概述

图 5-24 所示为 Slice 中的进位链和相关逻辑元件。

COUT (To Next Slice)


Carry Chain Block
(CARRY4)
CO3
DMUX/DQ*
S3
O6 From LUTD MUXCY
O3
DMUX
O5 From LUTD DI3
DX D Q DQ

(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

CYINIT CIN (Optional)

* 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 形成较长的进位链。随着级联的进位链增

Virtex-5 用户指南 www.xilinx.com/cn 193


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

多,加法器的传播延迟随运算元中的位数呈线性增加。进位链可以和同一 Slice 中的存储元


件或触发器一起使用。

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 应用开关特性)

194 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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-25: 简化的 Virtex-5 Slice

Virtex-5 用户指南 www.xilinx.com/cn 195


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

时序参数
表 5-7 所示为图 5-25 中大多数通路的通用 Slice 时序参数。

表 5-7: 通用 Slice 时序参数


参数 功能 描述
组合延迟
TILO(1) A/B/C/D 输入到 A/B/C/D 输出
从 Slice 的 A/B/C/D 输入通过查找表 (LUT) 到
Slice 的 A/B/C/D 输出的传播延迟 (六输入函
数)。

TILO_2 A/B/C/D 输入到 AMUX/CMUX


输出 从 Slice 的 A/B/C/D 输入通过 LUT 和
F7AMUX/F7BMUX 到 AMUX/CMUX 输出的传播
延迟 (七输入函数)。

TILO_3 A/B/C/D 输入到 BMUX 输出


从 Slice 的 A/B/C/D 输入通过 LUT、
F7AMUX/F7BMUX 和 F8MUX 到 BMUX 输出的传
播延迟 (八输入函数)。

时序延迟
TCKO FF 时钟 (CLK) 到
AQ/BQ/CQ/DQ 输出 时钟之后,数据在 Slice 时序元件 (配置为触发
器)的 AQ/BQ/CQ/DQ 输出上稳定的时间。

TCKLO 锁存器时钟 (CLK) 到


AQ/BQ/CQ/DQ 输出 时钟之后,数据在 Slice 时序元件 (配置为锁存
器)的 XQ/YQ 输出上稳定的时间。

Slice 时序元件的建立和保持时间 (2)


TDICK/TCKDI AX/BX/CX/DX 输入
CLK 前 / 后,来自 Slice 的 AX/BX/CX/DX 输入的
数据必须在 Slice 时序元件 (配置为触发器)的
D 输入上稳定的时间。

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 输出的传播时间。

196 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB/Slice 时序模型

表 5-7: 通用 Slice 时序参数 ( 续表 )


参数 功能 描述
FTOG
翻转频率 - CLB 触发器时钟控制的最高频率:1 /
(TCH + TCL)。

注:
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-26: 通用 Slice 时序特性


• 在时间事件 (1) 之前的时间 TCEO 处,时钟使能信号在 Slice 寄存器的 CE 输入上变为
High 有效。
• 在时间事件 (1) 之前的时间 TDICK 处,来自 AX、BX、CX 或 DX 输入的数据在 Slice 寄
存器的 D 输入上变为 High 有效;在时间事件 (1) 之后的时间 TCKO 处,该数据分别反
映在 AQ、BQ、CQ 或 DQ 引脚上。
• 在时间事件 (3) 之前的时间 TSRCK 处,SR 信号 (配置为同步复位)变为 High 有效,
从而复位 Slice 寄存器。在时钟事件 (3) 之后的时间 TCKO 处,此信号反映在 AQ、
BQ、CQ 或 DQ 引脚上。

Virtex-5 用户指南 www.xilinx.com/cn 197


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

Slice 分布式 RAM 时序模型与参数 (只能在 SLICEM 中使用)


图 5-27 所示为 Virtex-5 Slice 中实现的分布式 RAM 的细节。为简明起见,图中略去了
Virtex-5 Slice 的某些元件,只显示与本部分所述时序通路有关的元件。

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

图 5-27: 简化的 Virtex-5 SLICEM 分布式 RAM

198 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB/Slice 时序模型

分布式 RAM 时序参数


表 5-8 所示为图 5-27 中大多数通路的 SLICEM 中的分布式 RAM 时序参数。

表 5-8: 分布式 RAM 时序参数


参数 功能 描述
配置为 RAM (分布式 RAM)的 Slice LUT 的时序延迟
TSHCKO(1) CLK 到 A/B/C/D 输出 写操作的 CLK 之后,写入分布式 RAM 的数据在
Slice 的 A/B/C/D 输出上稳定的时间。
配置为 RAM (分布式 RAM)的 Slice LUT 的建立和保持时间 (2)
TDS/TDH(3) 配置为数据输入 (DI1) 的 时钟前 / 后,数据必须在 Slice 的 AX/BX/CX/DX
AX/BX/CX/DX 输入上稳定的时间。
TACK/TCKA A/B/C/D 地址输入 时钟前 / 后,地址信号必须在 Slice LUT(配置为
RAM)的 A/B/C/D 输入上稳定的时间。
TWS/TWH WE 输入 时钟前 / 后,写使能信号必须在 Slice LUT (配置
为 RAM)的 WE 输入上稳定的时间。
时钟 CLK
TWPH 最小脉宽,High
TWPL 最小脉宽,Low
TWC 满足地址写周期时间的最小时钟周期。

注:
1. 此参数包括一个配置为 2 位分布式 RAM 的 LUT。
2. TXXCK = 建立时间 (时钟沿之前),TCKXX = 保持时间 (时钟沿之后)。
3. 参数包括配置为数据输入 (DI2) 的 AI/BI/CI/DI。

Virtex-5 用户指南 www.xilinx.com/cn 199


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

分布式 RAM 时序特性


图 5-28 所示为 Virtex-5 Slice 中实现的 16 位分布式 RAM 的时序特性 (LUT 配置为
RAM)。

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

图 5-28: Slice 分布式 RAM 时序特性


时钟事件 1:写操作
在写操作过程中,ADDR 输入的地址处的存储器内容改变。写入此存储器位置的数据同步
反映在 A/B/C/D 输出上。
• 在时间事件 1 之前的时间 TWS 处,写使能信号 (WE) 变为 High 有效,从而为写操作启
用 RAM。
• 在时间事件 1 之前的时间 TAS 处,地址 (2) 在 RAM 的 A/B/C/D 输入上变为有效。
• 在时间事件 1 之前的时间 TDS 处,数据在 RAM 的 DI 输入上变为有效 (1);在时间事件
1 之后的时间 TSHCKO 处,该数据反映在 A/B/C/D 输出上。
在时钟事件 1 之后的时间 TSHCKO 和 TWOSCO 处,此过程也适用于 AMUX、BMUX、
CMUX、DMUX 和 COUT 输出。

时钟事件 2:读操作
分布式 RAM 中的所有读操作都是异步操作。只要 WE 为 Low,地址总线即可随时置为有
效。地址总线上的 RAM 内容在长度为 TILO 的延迟 (通过 LUT 的传播延迟)之后反映在
A/B/C/D 输出上。地址 (F) 在时钟事件 2 之后置为有效,而地址 (F) 处的 RAM 内容在长度
为 TILO 的延迟之后反映在输出上。

200 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB/Slice 时序模型

Slice SRL 时序模型与参数 (只能在 SLICEM 中使用)


图 5-29 所示为 Virtex-5 Slice 中的移位寄存器的实现。为简明起见,图中略去了 Virtex-5
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-29: 简化的 Virtex-5 Slice SRL

Virtex-5 用户指南 www.xilinx.com/cn 201


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

Slice SRL 时序参数


表 5-9 所示为图 5-29 中大多数通路的 SLICEM SRL 时序参数。

表 5-9: Slice SRL 时序参数


参数 功能 描述
配置为 SRL 的 Slice LUT 的时序延迟
TREG(1) CLK 到 A/B/C/D 输出 写操作的 CLK 之后,写入 SRL 的数据在 Slice 的
A/B/C/D 输出上稳定的时间。
TREG_MUX(1) CLK 到 AMUX - DMUX 输出 写操作的 CLK 之后,写入 SRL 的数据在 Slice 的
DMUX 输出上稳定的时间。
TREG_M31 CLK 通过 MC31 输出到 DMUX 写操作的 CLK 之后,写入 SRL 的数据在通过
输出 MC31 输出在 DMUX 输出上稳定的时间。
配置为 SRL 的 Slice LUT 的建立和保持时间 (2)
TWS/TWH CE 输入 (WE) 时钟前 / 后,写使能信号必须在 Slice LUT (配置
为 SRL)的 WE 输入上稳定的时间。
TDS/TDH(3) 配置为数据输入 (DI) 的 时钟之前,数据必须在 Slice (配置为 SRL)的
AX/BX/CX/DX AX/BX/CX/DX 输入上稳定的时间。

注:
1. 此参数包括一个配置为 2 位移位寄存器的 LUT。
2. TXXCK = 建立时间 (时钟沿之前),TCKXX = 保持时间 (时钟沿之后)。
3. 参数包括配置为一个数据输入 (DI2) 或具有共同移位的两个位元的 AI/BI/CI/DI。

Slice SRL 时序特性


图 5-30 所示为 Virtex-5 Slice 中实现的 16 位移位寄存器的时序特性 (LUT 配置为
SRL)。

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

图 5-30: Slice SRL 时序特性

202 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 输
出上。

时钟事件 3:移位输入 / 可寻址 (异步)读


所有读操作都是对 CLK 信号的异步操作。如果地址 (在各时钟事件之间)已经改变,则
该地址处的寄存器内容在长度为 TILO 的延迟 (通过 LUT 的传播延迟)之后反映在可寻址
输出 (A/B/C/D 输出)上。
• 在时间事件 3 之前的时间 TDS 处,数据在 SRL 的 DI 输入上变为有效 (1) ;在时间事件
3 之后的时间 TREG 处,该数据反映在 A/B/C/D 输出上。
• 地址已改变 (从 0 到 2)。此时寄存器 2 中存储的值是 0 (在本示例中,这是移入的
第一个数据),该值在长度为 TILO 的延迟之后反映在 A/B/C/D 输出上。

时钟事件 32:MSB (最高有效位)变化


在时间事件 32 之后的时间 TREG 处,移入 SRL 的首位经过 LUT A (SRL) 的 MC31 输出在
Slice 的 DMUX 输出上变为有效(在本例中是逻辑 0)。在时钟事件 1 之后的时间 TREG 和
TWOSCO 处,此过程也适用于 AMUX、BMUX、CMUX、DMUX 和 COUT 输出。

Virtex-5 用户指南 www.xilinx.com/cn 203


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

Slice 进位链时序模型与参数
第 193 页的图 5-24 所示为 Virtex-5 Slice 中的进位链。为简明起见,图中略去了 Virtex-5
Slice 的某些元件,只显示与本部分所述时序通路有关的元件。

Slice 进位链时序参数
表 5-10 所示为第 193 页的图 5-24 中大多数通路的 Slice 进位链时序参数。

表 5-10: Slice 进位链时序参数


参数 功能 描述
配置为进位链的 Slice LUT 的时序延迟
TAXCY/TBXCY/TCXCY/TDXCY AX/BX/CX/DX 输入到 COUT 输 从 Slice 的 AX/BX/CX/DX 输入到 Slice 的 COUT
出 输出的传播延迟。
TBYP CIN 输入到 COUT 输出 从 Slice 的 CIN 输入到 Slice 的 COUT 输出的传
播延迟。
TOPCYA/TOPCYB/TOPCYC/TOPCYD A/B/C/D 输入到 COUT 输出 从 Slice 的 A/B/C/D 输入到 Slice 的 COUT 输出
的传播延迟。
TCINA/TCINB/TCINC/TCIND A/B/C/D 输入到 使用 XOR (和数)时,从 Slice 的 A/B/C/D 输入
AMUX/BMUX/CMUX/DMUX 输 到 Slice 的 AMUX/BMUX/CMUX/DMUX 输出的
出 传播延迟。
配置为进位链的 Slice LUT 的建立和保持时间 (1)
TCINCK/TCKCIN CIN 数据输入 CLK 之前,来自 Slice 的 CIN 输入的数据必须在
Slice 时序元件 (配置为触发器)的 D 输入上稳
定的时间。

注:
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

图 5-31: Slice 进位链时序特性

204 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

CLB 基元

• 在时间事件 1 之前的时间 TCINCK 处,来自 CIN 输入的数据在 Slice 寄存器的 D 输入上


变为 High 有效。在时钟事件 (1) 之后的时间 TCKO 处,此数据反映在 AQ/BQ/CQ/DQ
当中的任一引脚上。
• 在时间事件 3 之前的时间 TSRCK 处,SR 信号 (配置为同步复位)变为 High 有效,从
而复位 Slice 寄存器。在时钟事件 3 之后的时间 TCKO 处,此信号反映在
AQ/BQ/CQ/DQ 当中的任一引脚上。

CLB 基元
《软件库指南》中提供了关于 CLB 基元的更多信息。

分布式 RAM 基元
从 32 x 2 位到 256 x 1 位,共有七个可用基元,其中三个基元是单端口 RAM,两个基元是
双端口 RAM,另外两个基元是四端口 RAM,如表 5-11 所示。

表 5-11: 单端口、双端口和四端口分布式 RAM


基元 RAM 大小 类型 地址输入
RAM32X1S 32 位 单端口 A[4:0] (读 / 写)
RAM32X1D 32 位 双端口 A[4:0] (读 / 写)
DPRA[4:0] (读)
RAM32M 32 位 四端口 ADDRA[4:0] (读)
ADDRB[4:0] (读)
ADDRC[4:0] (读)
ADDRD[4:0] (读 / 写)
RAM64X1S 64 位 单端口 A[5:0] (读 / 写)
RAM64X1D 64 位 双端口 A[5:0] (读 / 写)
DPRA[5:0] (读)
RAM64M 64 位 四端口 ADDRA[5:0] (读)
ADDRB[5:0] (读)
ADDRC[5:0] (读)
ADDRD[5:0] (读 / 写)
RAM128X1S 128 位 单端口 A[6:0] (读 / 写)
RAM128X1D 128 位 双端口 A[6:0] (读 / 写)
DPRA[6:0] (读)
RAM256X1S 256 位 单端口 A[7:0] (读 / 写)

输入和输出数据是 1 位宽 (32 位 RAM 除外)。


图 5-32 所示为一般的单端口、双端口和四端口分布式 RAM 基元。A、ADDR 和 DPRA 信
号是地址总线。

Virtex-5 用户指南 www.xilinx.com/cn 205


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

RAM#X1S RAM#X1D RAM#XM


D D DI[A:D][#:0]
O
WE WE SPO WE DOD[#:0]
WCLK WCLK WCLK

A[#:0] A[#:0] R/W Port ADDRD[#:0] R/W Port

DPO
DPRA[#:0] Read Port ADDRC[#:0] Read Port DOC[#:0]

ADDRB[#:0] Read Port DOB[#:0]

ADDRA[#:0] Read Port DOA[#:0]

UG190_5_32_051006

图 5-32: 单端口、双端口和四端口分布式 RAM 基元


可以用例化若干分布式 RAM 基元的方法实现宽存储器模块。

端口信号
在读取同一组存储单元时,各分布式 RAM 端口独立于另一端口操作。

时钟 - WCLK
此时钟用于同步写。数据和地址输入要求满足相对 WCLK 引脚的建立时间。

使能 - WE/WED
使能引脚影响端口的写功能。有效写使能阻止对存储器单元的任何写操作。有效写使能致
使时钟沿将数据输入信号写入地址输入所指向的存储器位置。

地址 - A[#:0]、DPRA[#:0] 和 ADDRA[#:0] - ADDRD[#:0]


地址输入 A[#:0] (对于单端口和双端口)、DPRA[#:0] (对于双端口)和 ADDRA[#:0] -
ADDRD[#:0] (对于四端口)选择读或写的存储器单元。端口的宽度确定所需的地址输入。
有些地址输入不是 VHDL 或 Verilog 实例中的总线。表 5-11 概述了各地址引脚的功能。

数据输入 - D、DID[#:0]
数据输入 D (对于单端口和双端口)和 DID[#:0] (对于四端口)提供待写入 RAM 的新数
据值。

数据输出 - O、SPO、DPO 和 DOA[#:0] - DOD[#:0]


数据输出 O (单端口或 SPO)、DPO (双端口)和 DOA[#:0] - DOD[#:0] (四端口)反
映地址输入所指向的存储器单元的内容。继有效的写时钟沿之后,数据输出 (O、SPO 或
DOD[#:0])反映新写入的数据。

206 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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)。

Virtex-5 用户指南 www.xilinx.com/cn 207


UG190 (v3.1) 2007 年 9 月 11 日
R

第 5 章: 可配置逻辑块 (CLB)

数据输出 - Q
数据输出 Q 提供由地址输入选择的数据值 (1 位)。

数据输出 - Q31 (可选)


数据输出 Q31 提供 32 位移位寄存器的末位值。新数据在每次移位输入操作之后有效。

反转时钟引脚
时钟引脚 (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。)

208 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 框图。

Virtex-5 用户指南 www.xilinx.com/cn 209


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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] 输出连接到此引脚即可。

210 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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-1: Virtex-5 I/O 模块

Virtex-5 用户指南 www.xilinx.com/cn 211


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 图

各 IOB 直接连接 ILOGIC/OLOGIC 对,该逻辑对包含输入和输出逻辑资源,可用于数据和


IOB 的三态控制。如第 8 章 “高级 SelectIO 逻辑资源”中所述,ILOGIC 和 OLOGIC 可分
别配置成 ISERDES 和 OSERDES。

SelectIO 资源一般指导原则
本部分简要概括用 Virtex-5 SelectIO 资源进行设计时应考虑的一般指导原则。

212 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

SelectIO 资源一般指导原则

Virtex-5 I/O 组规则


在 Virtex-5 器件中,除了中心列的某些例外,一个 I/O 组由 40 个 IOB 组成(高度为 20 个
CLB,一个时钟区域)。中心列中都有四个半尺寸组 (20 个 IOB)和一个配置组。组数取
决于器件尺寸,较大的器件在中心列中还附加全尺寸组。《Virtex-5 概述》中按器件类型
列出了 I/O 组的总数。例如,XC5VLX30 有 12 个可用 I/O 组和一个配置组。图 6-3 所示示
例是 XC5VLX30 的 I/O 组的列式平面布置。

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

BANK BANK BANK


40 I/O 20 I/O 40 I/O

ug190_6_03_021306

图 6-3: Virtex-5 XC5VLX30 I/O 组

参考电压 (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 标准。

Virtex-5 用户指南 www.xilinx.com/cn 213


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

Virtex-5 数控阻抗 (DCI)


简介
随着 FPGA 日益增大和系统时钟速率日益提高,PC 电路板设计和制造越来越困难。由于边
沿速率不断提高,保持信号完整性成了关键问题。PC 电路板迹线必须妥善端接才能避免反
射或振铃现象。
迹线端接的传统方法是加装电阻器,使得输出和 / 或输入能够将接收器或驱动器的阻抗与
迹线的阻抗匹配起来。然而,由于器件 I/O 增多,在靠近器件引脚处加装电阻器会加大电
路板面积和组件数,并且在某些情况下从物理角度讲是不可能的。为了解决这些问题并获
得较好的信号完整性,Xilinx 开发了数控阻抗 (DCI) 技术。
DCI 通过调整输出阻抗或输入终端,以精确匹配传输线的特征阻抗。DCI 将 I/O 的阻抗自
动调整到与外部参考电阻相等。这样就可补偿由工艺偏差引起的 I/O 阻抗变化。DCI 还会
不断调整 I/O 的阻抗,以补偿温度变化和供电电压波动。
在使用可控阻抗驱动器的情况下,DCI 控制驱动器阻抗以匹配两个参考电阻器,也可以选
择匹配这两个参考电阻器的一半阻值。DCI 免除了对外部串联终端电阻器的需要。
DCI 可以为发射器或接收器提供并联或串联终端。这样就免除了对板上终端电阻器的需
要,可以降低电路板布线难度和组件数,并且可以通过消除短线反射来改善信号完整性。
如果终端电阻器的位置距离传输线端点太远,就会发生短线反射。使用 DCI,可使终端电
阻器尽量靠近输出驱动器或输入缓冲器,因此可以消除短线反射。

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

图 6-4: 在组内使用 DCI


使用 DCI I/O 标准的 Virtex-5 I/O 组现在可以选择从另一个 DCI 组得到 DCI 阻抗值。对于
DCI 级联,一个组 (主组)必须将其 VRN/VRP 引脚连接到外部参考电阻器。同列中的其
他组 (从组)可以使用和主组同样阻抗的 DCI 标准,不必将自己的 VRN/VRP 引脚连接到
外部电阻器。级联组中的 DCI 阻抗控制是从主组获得。

214 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

SelectIO 资源一般指导原则

使用 DCI 级联时,主组中的 DCI 控制电路产生 DCI 控制,并以菊花链方式将其传送到级联


组。特定组的 DCI 控制可以来自紧邻的上组或下组。使用 DCI 级联时,只需要用到主组的
VRN/VRP 引脚。
另外,使用 DCI 级联时,只有一对 VRN/VRP 引脚为多个组提供 DCI 参考电压。使用 DCI
级联的好处是:
• 降低总体功耗,因为需要的参考电压数较少。
• 腾出从组上的 VRN/VRP 引脚用于一般客户用途。
• 允许中心列中的非 DCI 组 (组 1 和 2)使用 DCI I/O 标准,即使这些组没有 VRN/VRP
引脚。级联不能跨越组 0。
图 6-5 所示为支持的 DCI 多组级联。组 B 是主组。

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-5: 支持的 DCI 多组级联

Virtex-5 用户指南 www.xilinx.com/cn 215


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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。

216 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

SelectIO 资源一般指导原则

在配置之后,可以通过例化 DCIRESET 基元来启动阻抗调整第一阶段中的阻抗粗校。在器


件工作时,通过翻转对 DCIRESET 基元的 RST 输入,可以将 DCI 状态机复位,使阻抗调
整的两个阶段相继进行。所有使用 DCI 的 I/O 都在来自 DCIRESET 块的 LOCKED 输出置
为有效之后才可使用。
对于从器件上电到进入标称工作状态期间温度和 / 或供电电压变化显著的应用,这一功能
很有用。一旦达到标称工作温度和电压,执行阻抗调整的第一阶段可给阻抗调整的第二阶
段留下充分的余地。
对于可控阻抗输出驱动器,可以将阻抗调整为与参考电阻器匹配,也可以将其调整为与参
考电阻器的一半阻值匹配。对于片上终端,始终将终端调整为与参考电阻器匹配。
DCI 可以将输出驱动器配置成以下类型:
1. 可控阻抗驱动器 (源终端)
2. 半阻抗可控阻抗驱动器 (源终端)
DCI 还可将输入配置成具有以下类型的片上终端:
1. 接 VCCO 的输入终端 (单终端)
2. 接 VCCO/2 的输入终端 (分裂终端,Thevenin 等效)
对于双向操作,线路两端都可加 DCI 终端,与方向无关:
1. 终端接 VCCO (单终端)的驱动器
2. 终端接 VCCO/2 (分裂终端,Thevenin 等效)的驱动器
另外,双向点对点线路也可以在两端使用可控阻抗驱动器 (带三态缓冲器)。

可控阻抗驱动器 (源终端)
有些 I/O 标准 (如 LVCMOS)必须具有与所驱动线路的特征阻抗相匹配的驱动阻抗。DCI
可以提供可控阻抗输出驱动器,无需外部源终端即可消除反射。阻抗由阻值与迹线阻抗相
等的外部参考电阻器设定。

Virtex-5 用户指南 www.xilinx.com/cn 217


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

支持可控阻抗驱动器的 DCI I/O 标准有:LVDCI_15、LVDCI_18、LVDCI_25、LVDCI_33、


HSLVDCI_15、HSLVDCI_18、HSLVDCI_25 和 HSLVDCI_33。图 6-6 所示为 Virtex-5 器
件中的可控阻抗驱动器。

IOB
R

Z0
Virtex-5 DCI
UG190_6_04_012706

图 6-6: 可控阻抗驱动器

218 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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 的输入终端 (单终端)


有些 I/O 标准需要接 VCCO 的输入终端 (见图 6-8)。

VCCO

IOB
R

Z0
VREF
Virtex-5

UG190_6_06_021306

图 6-8: 接 VCCO 的输入终端 (不使用 DCI)

DCI 还可使用单终端提供接 VCCO 的输入终端。终端电阻由参考电阻器设定。GTL 和 HSTL


标准均由 50 Ω 的参考电阻器控制。支持单终端的 DCI I/O 标准有:GTL_DCI、
GTLP_DCI、HSTL_III_DCI、HSTL_III_DCI_18、HSTL_IV_DCI 和 HSTL_IV_DCI_18。

Virtex-5 用户指南 www.xilinx.com/cn 219


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-9 所示为 Virtex-5 器件中的 DCI 单终端。

IOB
VCCO

Z0
VREF

Virtex-5 DCI

UG190_6_07_021206

图 6-9: 使用 DCI 单终端的输入终端

接 VCCO /2 的输入终端 (分裂终端)


有些 I/O 标准 (如 HSTL I 类和 II 类)需要 VCCO/2 的输入终端电压 (见图 6-10)。

VCCO/2

IOB
R

Z0
VREF

Virtex-5
UG190_6_08_021206

图 6-10: 接 VCCO/2 的输入终端 (不使用 DCI)

这相当于使用由两个电阻器组成的分裂终端。一个电阻器接 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

220 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

SelectIO 资源一般指导原则

图 6-11 所示为 Virtex-5 器件中的分裂终端。

IOB

VCCO

2R

Z0
VREF
2R

Virtex-5 DCI
UG190_6_09_021206

图 6-11: 接 VCCO/2 的输入终端 (使用 DCI 分裂终端)

终端接 VCCO (单终端)的驱动器


有些 I/O 标准(如 HSTL IV 类)需要接 VCCO 的输出终端。图 6-12 所示为接 VCCO 的输出
终端。

VCCO
IOB

Z0

Virtex-5

UG190_6_10_021206

图 6-12: 终端接 VCCO 的驱动器 (不使用 DCI)

DCI 可使用单终端提供接 VCCO 的输出终端。在这种情况下,DCI 只控制终端的阻抗,不


控制驱动器。GTL 和 HSTL 标准都需要 50 Ω 的外部参考电阻器。支持单终端驱动器的 DCI
I/O 标准有:GTL_DCI、GTLP_DCI、HSTL_IV_DCI 和 HSTL_IV_DCI_18。

Virtex-5 用户指南 www.xilinx.com/cn 221


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-13 所示为 Virtex-5 器件中的单终端驱动器。

VCCO IOB

Z0

Virtex-5 DCI

UG190_6_11_021206

图 6-13: 终端接 VCCO 的驱动器 (使用 DCI 单终端)

终端接 VCCO /2 (分裂终端)的驱动器


有些 I/O 标准 (如 HSTL II 类)需要接 VCCO/2 的输出终端 (见图 6-14)。

VCCO/2

IOB
R

Z0

Virtex-5
UG190_6_12_021206

图 6-14: 终端接 VCCO/2 的驱动器 (不使用 DCI)

DCI 可使用分裂终端提供接 VCCO/2 的输出终端。DCI 只控制终端的阻抗,不控制驱动器。


HSTL 和 SSTL 标准都需要 50 Ω 的外部参考电阻器。支持分裂终端驱动器的 DCI 输出标准
如表 6-2 所示。
表 6-2: 支持分裂终端的 DCI 输出标准
HSTL_II_DCI DIFF_HSTL_II_DCI SSTL2_II_DCI DIFF_SSTL2_II_DCI
HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18 SSTL18_II_DCI DIFF_SSTL18_II_DCI

222 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

SelectIO 资源一般指导原则

图 6-15 所示为 Virtex-5 器件中的分裂终端驱动器。

IOB
VCCO

2R

Z0
2R

Virtex-5 DCI
UG190_6_13_021206

图 6-15: 终端接 VCCO/2 的驱动器 (使用 DCI 分裂终端)

Virtex-5 I/O 标准中的 DCI


DCI 使用单端 I/O 标准。DCI 支持表 6-3 所列标准。
表 6-3: Virtex-5 DCI I/O 标准
LVDCI HSTL_I_DCI DIFF_HSTL_I_DCI HSTL_III_DCI SSTL2_I_DCI DIFF_SSTL2_I_DCI
HSLVDCI HSTL_I_DCI_18 DIFF_HSTL_I_DCI_18 HSTL_III_DCI_18 SSTL2_II_DCI DIFF_SSTL2_II_DCI
LVDCI_DV2 HSTL_II_DCI DIFF_HSTL_II_DCI HSTL_IV_DCI SSTL18_I_DCI DIFF_SSTL18_I_DCI
GTL_DCI HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18 HSTL_IV_DCI_18 SSTL18_II_DCI DIFF_SSTL18_II_DCI
GTLP_DCI HSTL_II_T_DCI SSTL2_II_T_DCI
HSTL_II_T_DCI_18 SSTL18_II_T_DCI

要正确使用 Virtex-5 器件中的 DCI,用户必须遵循以下规则:


1. VCCO 引脚必须根据该组中的 IOSTANDARD 连接到适当的 VCCO 电压。
2. 必须通过使用 IOSTANDARD 属性或 HDL 代码中的例化在软件中使用正确的 DCI I/O
缓冲器。
3. 外部参考电阻器必须连接到该组中的多用途引脚 (VRN 和 VRP)。这两个多用途引脚
不得用作常规用户 I/O。关于引脚的具体位置,请查阅 Virtex-5 管脚表。引脚 VRN 必
须由其参考电阻器上拉到 VCCO。引脚 VRP 必须由其参考电阻器下拉到地。
4. 所选外部参考电阻器的阻值应能提供所需输出阻抗。如果使用 GTL_DCI、HSTL_DCI
或 SSTL_DCI I/O 标准,则外部参考电阻器的阻值应为 50 Ω。
5. 参考电阻器的阻值必须在所支持的范围 (20 Ω - 100 Ω) 内。
6. 请遵循以下 DCI I/O 组合规则:

Virtex-5 用户指南 www.xilinx.com/cn 223


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 标准。

224 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

SelectIO 资源一般指导原则

HSTL_I HSTL_II HSTL_III HSTL_IV

VCCO/2 VCCO/2 VCCO/2 VCCO VCCO VCCO


R R R R R R
Conventional
Z0 Z0 Z0 Z0

VCCO/2 VCCO VCCO/2


VCCO VCCO VCCO
DCI Transmit R 2R R
R R R
Conventional Z0 Z0
Receive Z0 Z0
2R
Virtex-5 Virtex-5 Virtex-5
DCI Virtex-5 DCI DCI
DCI

VCCO VCCO/2 VCCO


2R R 2R VCCO VCCO VCCO
Conventional
Transmit Z0 Z0 R R R
DCI Receive Z0 Z0
2R 2R
Virtex-5 Virtex-5 Virtex-5 Virtex-5
DCI DCI DCI DCI

VCCO VCCO VCCO


2R VCCO VCCO VCCO
2R 2R
R R R
DCI Transmit Z0 Z0
DCI Receive Z0 Z0
2R 2R 2R
Virtex-5 Virtex-5 Virtex-5 Virtex-5 Virtex-5 Virtex-5
DCI DCI DCI DCI DCI DCI

VCCO VCCO VCCO VCCO


2R 2R R R
Z0 Z0
Bidirectional N/A 2R 2R N/A

Virtex-5 Virtex-5 Virtex-5 Virtex-5


DCI DCI DCI DCI

Reference
Resistor VRN = VRP = R = Z0 VRN = VRP = R = Z0 VRN = VRP = R = Z0 VRN = VRP = R = Z0

Recommended 50Ω 50Ω 50Ω 50Ω


Z0
Notes:
ug190_6_14_021206
1. Z0 is the recommended PCB trace impedance.

图 6-16: HSTL DCI 用法示例

Virtex-5 用户指南 www.xilinx.com/cn 225


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

SSTL2_I or SSTL18_I SSTL2_II or SSTL18_II

VCCO/2
VCCO/2 VCCO/2
R
R R
Conventional Z0
R/2 Z0
R/2

VCCO/2 VCCO VCCO/2


25Ω(1) R 25Ω(1)
DCI Transmit 2R R
Conventional Z0
Z0
Receive
2R
Virtex-5
DCI Virtex-5
DCI

VCCO VCCO/2 VCCO

2R R 2R
Conventional
Transmit Z0 Z0
DCI Receive R/2 R/2
2R 2R
Virtex-5 Virtex-5
DCI DCI

VCCO VCCO VCCO


25Ω(1) 2R 25Ω(1) 2R
2R
DCI Transmit Z0 Z0
DCI Receive
2R 2R 2R
Virtex-5
DCI Virtex-5 Virtex-5 Virtex-5 DCI
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

图 6-17: SSTL DCI 用法示例

226 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

图 6-18: 输入缓冲器 (IBUF/IBUFG) 基元

IBUF 与 IBUFG 基元相同。当输入缓冲器用作时钟输入时,使用 IBUFG。在 Xilinx 软件工


具中,IBUFG 自动被放在时钟输入端。

OBUF
必须使用输出缓冲器 (OBUF) 将信号从 Virtex-5 器件驱动到外部输出焊盘。图 6-19 所示
为通用 Virtex-5 OBUF 基元。

OBUF

I (Input) O (Output)
From FPGA to device pad

ug190_6_17_022806

图 6-19: 输出缓冲器 (OBUF) 基元

Virtex-5 用户指南 www.xilinx.com/cn 227


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 6-20: 三态输出缓冲器 (OBUFT) 基元

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

图 6-21: 输入 / 输出缓冲器 (IOBUF) 基元

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

图 6-22: 差分输入缓冲器基元 (IBUFDS/IBUFGDS)

228 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

Virtex-5 SelectIO 基元

OBUFDS
图 6-23 所示为差分输出缓冲器基元。

OBUFDS

+ O
I Output to
Device Pads
Input from
FPGA
– OB

ug190_6_21_022806

图 6-23: 差分输出缓冲器基元 (OBUFDS)

OBUFTDS
图 6-24 所示为差分三态输出缓冲器基元。

OBUFTDS

T
3-state Input

+ O
I Output to
Device Pads
Input from
FPGA – OB

ug190_6_22_022806

图 6-24: 差分三态输出缓冲器基元 (OBUFTDS)

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-25: 差分输入 / 输出缓冲器基元 (IOBUFDS)

Virtex-5 用户指南 www.xilinx.com/cn 229


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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,IOSTANDARD 的默认值是 LVCMOS25 ;对于差分 I/O,其默认值是


LVDS_25。

输出斜率属性
此属性有若干可选属性值,用来为单端 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。此默认值用来最小化在切换非关键性信
号时电源总线上的瞬时变化。

230 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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>";

IBUF、OBUFT 和 IOBUF 的 PULLUP/PULLDOWN/KEEPER


当使用三态输出 (OBUFT) 或双向 (IOBUF) 缓冲器时,输出可以有一个弱上拉电阻器、弱下
拉电阻器或弱 “保持器”电路。对于输入 (IBUF) 缓冲器,输入可以有一个弱上拉电阻器或
弱下拉电阻器。将以下可能的约束值添加到相应的缓冲器网络上,即可调用这一功能:
• PULLUP
• PULLDOWN
• KEEPER

差分终端属性
差分终端 (DIFF_TERM) 属性专用于 Virtex-5 支持的差分输入 I/O 标准。此属性用来开启或
关闭内置的 100Ω 差分终端。
DIFF_TERM 属性的允许值是:
• TRUE
• FALSE (默认)
要指定 DIFF_TERM 属性,请在例化 IBUFDS 或 IBUGDS 组件的类属映射表 (VHDL) 或内
嵌语句参数 (Verilog) 中设置适当的值。关于例化此组件和设置 DIFF_TERM 属性恰当的语
法,请参阅 ISE 《语言模板》或 Virtex-5 HDL 《库指南》。

Virtex-5 I/O 资源 VHDL/Verilog 示例


Virtex-5 《库指南》提供了用来声明 Virtex-5 I/O 资源所用 I/O 标准的 VHDL 和 Verilog 示
例语法。

Virtex-5 用户指南 www.xilinx.com/cn 231


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

关于 Virtex-5 I/O 所支持标准的具体指导原则


以下几部分概述所有 Virtex-5 器件支持的 I/O 标准。
尽管 Virtex-5 I/O 支持的大多数标准都指定允许的电压范围,本章只收录典型电压值。可
到电子工业联盟的 JEDEC 网站查阅关于各指标的详细信息,其网址是
http://www.jedec.org。

LVTTL (低压晶体管 - 晶体管逻辑)


低压 TTL (LVTTL) 标准是针对使用 LVTTL 输入缓冲器和推挽式输出缓冲器的 3.3V 应用的通
用 EIA/JESDSA 标准。此标准需要 3.3V 输入和输出供电电压 (VCCO),但不要求使用参考
电压 (VREF) 或终端电压 (VTT)。
图 6-26 和图 6-27 表示单向和双向 LVTTL 终端方法的样本电路。

IOB IOB
LVTTL LVTTL

Z0

IOB IOB
LVTTL LVTTL
RS = Z0 – RD
Z0

VTT
IOB IOB
LVTTL LVTTL
RP = Z0

Z0

Note: VTT is any voltage from 0V to VCCO ug190_6_24_022806

图 6-26: LVTTL 单向终端

232 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

IOB IOB
LVTTL LVTTL

Z0

VTT VTT
IOB IOB
LVTTL LVTTL
RP = Z0 RP = Z0

Z0

Note: VTT is any voltage from 0V to VCCO


ug190_6_25_022806

图 6-27: LVTTL 双向终端


表 6-4 列出了 LVTTL 的直流电压指标。

表 6-4: LVTTL 的直流电压指标


参数 最小值 典型值 最大值
VCCO 3.0 3.3 3.45
VREF - - -
VTT - - -
VIH 2.0 - 3.45
VIL -0.2 - 0.8
VOH 2.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA) 注2 - -
VOL 对应的 IOL (mA) 注2 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 支持的 DRIVE 强度是 2、4、6、8、12、16 和 24 mA。

Virtex-5 用户指南 www.xilinx.com/cn 233


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-5 详细列出了可用于 LVTTL I/O 标准的允许属性。

表 6-5: LVTTL I/O 标准的允许属性


基元
属性
IBUF/IBUFG OBUF/OBUFT IOBUF
IOSTANDARD LVTTL LVTTL LVTTL
DRIVE UNUSED 2、4、6、8、12、 2、4、6、8、12、
16、24 16、24
SLEW UNUSED {FAST、SLOW} {FAST、SLOW}

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

Note: VTT is any voltage from 0V to VCCO ug190_6_26_022806

图 6-28: LVCMOS 单向终端

234 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

IOB IOB
LVCMOS LVCMOS

Z0

VTT VTT
IOB IOB
LVCMOS LVCMOS
RP = Z0 RP = Z0

Z0

Note: VTT is any voltage from 0V to VCCO


ug190_6_27_022806

图 6-29: LVCMOS 双向终端

表 6-6 详细列出了可用于 LVCMOS33 和 LVCMOS25 I/O 标准的允许属性。

表 6-6: LVCMOS33 和 LVCMOS25 I/O 标准的允许属性


基元
属性
IBUF/IBUFG OBUF/OBUFT IOBUF
IOSTANDARD LVCMOS33 LVCMOS33 LVCMOS33
LVCMOS25 LVCMOS25 LVCMOS25
DRIVE UNUSED 2、4、6、8、12、 2、4、6、8、12、
16、24 16、24
SLEW UNUSED {FAST、SLOW} {FAST、SLOW}

表 6-7 详细列出了可用于 LVCMOS18 和 LVCMOS15 I/O 标准的允许属性。

表 6-7: LVCMOS18 和 LVCMOS15 I/O 标准的允许属性


基元
属性
IBUF/IBUFG OBUF/OBUFT IOBUF
IOSTANDARD LVCMOS18 LVCMOS18 LVCMOS18
LVCMOS15 LVCMOS15 LVCMOS15
DRIVE UNUSED 2、4、6、8、12、 2、4、6、8、12、
16 16
SLEW UNUSED {FAST、SLOW} {FAST、SLOW}

Virtex-5 用户指南 www.xilinx.com/cn 235


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-8 详细列出了可用于 LVCMOS12 I/O 标准的允许属性。


表 6-8: LVCMOS12 I/O 标准的允许属性
基元
属性
IBUF/IBUFG OBUF/OBUFT IOBUF
IOSTANDARD LVCMOS12 LVCMOS12 LVCMOS12
DRIVE UNUSED 2、4、6、8 2、4、6、8
SLEW UNUSED {FAST、SLOW} {FAST、SLOW}

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: 双向终端可控阻抗驱动器

236 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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: 双向终端半阻抗可控阻抗驱动器

LVDCI 驱动器没有驱动强度设置。驱动器阻抗是 VRN/VRP 参考电阻器阻抗的一半,这时


以属性名称中加入 DV2 表示。

Virtex-5 用户指南 www.xilinx.com/cn 237


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-9 列出了 LVCMOS、LVDCI 和 LVDCI_DV2 的电压指标。

表 6-9: LVCMOS、LVDCI 和 LVDCI_DV2 在各种参考电压下的直流电压指标


+3.3V +2.5V +1.8V +1.5V +1.2V(2)
标准 最小 典型 最大 最小 典型 最大 最小 典型 最大 最小 典型 最大 最小 典型 最大
值 值 值 值 值 值 值 值 值 值 值 值 值 值 值
VCCO [V] 3.0 3.3 3.45 2.3 2.5 2.7 1.7 1.8 1.9 1.4 1.5 1.6 1.1 1.2 1.3
VIH [V] 2.0 - 3.45 1.7 - VCCO 1.105 - VCCO 0.91 - VCCO 0.715 - VCCO
+0.3 +0.3 +0.3 +0.3
VIL [V] -0.2 - 0.8 -0.3 - 0.7 -0.3 - 0.665 -0.3 - 0.56 0.3 - 0.455
VOH [V] 2.6 - - 1.9 - - 1.25 - - 1.05 - 0.825 - - -
VOL [V] - - 0.4 - - 0.4 - - 0.45 - - 0.4 - - 0.325
IIN [µA] - - ±5 - - ±5 - - ±5 - - ±10 - - ±10

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 当有效 DRIVE 属性为 2、4、6、8 时,在 + 1.2V 下仅支持 LVCMOS。

238 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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-34: 双向终端 HSLVDCI 可控阻抗驱动器


关于输出直流电压指标,请参阅表 6-9 “LVCMOS、LVDCI 和 LVDCI_DV2 在各种参考电
压下的直流电压指标”中的 LVDCI 的 VOH 和 VOL 条目。表 6-10 列出了使用 HSLVDCI
时的输入直流电压指标。VCCO 的有效值是 1.5V、1.8V、2.5V 和 3.3V。请选择 VREF,以便
针对具体使用条件提供最佳噪声容限。

表 6-10: HSLVDCI 输入直流电压指标


标准 最小值 典型值 最大值
VREF - VCCO/2 -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1

Virtex-5 用户指南 www.xilinx.com/cn 239


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 列出了直流电压指标。

表 6-11: PCI33_3 和 PCI66_3 的电压指标 (2)


参数 最小值 典型值 最大值
VCCO 3.0 3.3 3.5
VREF - - -
VTT - - -
VIH = 0.5 × VCCO 1.5 1.65 VCCO
VIL = 0.3 × VCCO -0.2 0.99 1.05
VOH = 0.9 × VCCO 2.7 - -
VOL = 0.1 × VCCO - - 0.35
VOH 对应的 IOH (mA) (注 1) - -
VOL 对应的 IOL (mA) (注 1) - -

注:
1. 已按照相关指标经过测试。
2. 关于完整指标,请参阅 PCI 规范。

表 6-12: PCIX 的直流电压指标 (2)


参数 最小值 典型值 最大值
VCCO 3.0 3.3 3.5
VREF - - -
VTT - - -
VIH = 0.5 × VCCO 1.5 1.65 VCCO
VIL = 0.35 × VCCO -0.2 1.155 1.225
VOH = 0.9 × VCCO 2.7 - -
VOL = 0.1 × VCCO - - 0.35
VOH 对应的 IOH (mA) (注 1) - -
VOL 对应的 IOL (mA) (注 1) - -

注:
1. 已按照相关指标经过测试。
2. 关于完整指标,请参阅 PCIX 规范。

240 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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

图 6-35: 具有外部并联终端和未连接 VCCO 的 GTL

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-36: 具有内部并联驱动器和接收器终端的 GTL_DCI

表 6-13 列出了 GTL 的直流电压指标。

表 6-13: GTL 的直流电压指标


参数 最小值 典型值 最大值
VCCO - 不适用 -
VREF = N × VTT (1) 0.74 0.8 0.86
VTT 1.14 1.2 1.26
VIH = VREF + 0.05 0.79 0.83 -
VIL = VREF - 0.05 - 0.77 0.81
VOH - - -
VOL - 0.2 0.4

Virtex-5 用户指南 www.xilinx.com/cn 241


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-13: GTL 的直流电压指标 ( 续表 )


参数 最小值 典型值 最大值
VOH 对应的 IOH (mA) - - -
VOL 为 0.4V 时对应的 IOL (mA) 32 - -
VOL 为 0.2V 时对应的 IOL (mA) - - 40

注:
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

图 6-37: 具有外部并联终端和未连接 VCCO 的 GTL+

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

50Ω RVRP = Z0 = 50Ω

Z0 = 50 +

VREF = 1.0V –

ug190_6_37_030206

图 6-38: 具有内部并联驱动器和接收器终端的 GTLP_DCI

242 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

表 6-14 列出了 GTLP 的直流电压指标。

表 6-14: GTLP 的直流电压指标


最小值 典型值 最大值
VCCO - - -
VREF = N × VTT (1) 0.88 1.0 1.12
VTT 1.35 1.5 1.65
VIH = VREF + 0.1 0.98 1.1 -
VIL = VREF - 0.1 - 0.9 1.02
VOH - - -
VOL 0.3 0.45 0.6
VOH 对应的 IOH (mA) - - -
IOL 为 0.6V 时对应的 VOL (mA) 36 - -
IOL 为 0.3V 时对应的 VOL (mA) - - 48

注:
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 类差分版本。该标准
的这些差分版本需要一个差分放大器输入缓冲器和一个推挽式输出缓冲器。

HSTL_ I、HSTL_ III、HSTL_ I_18、HSTL_ III_18、HSTL_I_12


HSTL_I 使用 VCCO/2 作为并联终端电压 (VTT)。HSTL_III 使用 VCCO 作为并联终端电压
(VTT)。HSTL_I 和 HSTL_III 专用于单向链路。

HSTL_ I_DCI、HSTL_ III_DCI、HSTL_ I_DCI_18、HSTL_ III_DCI_18


HSTL_I_DCI 提供由 VCCO 供电的片上分裂 Thevenin 终端,以建立 VCCO/2 的等效并联终
端电压 (VTT)。HSTL_III_DCI 提供由 VCCO 供电的片上单终端。HSTL_I_DCI 和
HSTL_III_DCI 专用于单向链路。

HSTL_ II、HSTL_ IV、HSTL_ II_18、HSTL_ IV_18


HSTL_II 使用 VCCO/2 作为并联终端电压 (VTT)。HSTL_IV 使用 VCCO 作为并联终端电压
(VTT)。HSTL_II 和 HSTL_IV 专用于双向链路。

Virtex-5 用户指南 www.xilinx.com/cn 243


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

HSTL_ II_DCI、HSTL_ IV_DCI、HSTL_ II_DCI_18、HSTL_ IV_DCI_18


HSTL_II_DCI 提供由 VCCO 供电的片上分裂 Thevenin 终端,以建立 VCCO/2 的等效终端电
压。HSTL_IV_ DCI 提供接 VCCO (VTT) 的单终端。HSTL_II_DCI 和 HSTL_IV_DCI 专用于双
向链路。

HSTL_ II_T_DCI、HSTL_ II_T_DCI_18


HSTL_ II_T_DCI 和 HSTL_ II_T_DCI_18 提供由 VCCO 供电的片上分裂 Thevenin 终端,以便
当这些标准是三态时建立 VCCO/2 的等效终端电压。当不是三态时,这两个标准没有终端。

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 类专用于单向链路。

244 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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

2RVRP = 2Z0= 100Ω


HSTL_I_DCI HSTL_I_DCI

Z0 +

VREF = 0.75V –

2RVRN = 2Z0= 100Ω

ug190_6_38_030206

图 6-39: HSTL I 类终端

表 6-15 列出了 HSTL I 类的直流电压指标。

表 6-15: HSTL I 类的直流电压指标


最小值 典型值 最大值
VCCO 1.40 1.50 1.60
VREF (2) 0.68 0.75 0.90
VTT - VCCO × 0.5 -
VIH VREF + 0.1 - -
VIL   - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -8 - -
VOL 对应的 IOL (mA)(1) 8 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”

Virtex-5 用户指南 www.xilinx.com/cn 245


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 6-40: 差分 HSTL (1.5V) I 类单向终端

图 6-41 表示单向 DCI 终端差分 HSTL I 类 (1.5V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.5V

DIFF_HSTL_I_DCI
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω DIFF_HSTL_I_DCI

+
VCCO = 1.5V –

DIFF_HSTL_I_DCI
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω

ug190_6_40_030206

图 6-41: 差分 HSTL (1.5V) I 类 DCI 单向终端

246 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

表 6-16 列出了差分 HSTL I 类的直流电压指标。

表 6-16: 差分 HSTL I 类的直流电压指标


最小值 典型值 最大值
VCCO 1.40 1.50 1.60
VTT - VCCO × 0.5 -
VIN (DC) -0.30 - VCCO + 0.30
VDIFF (DC) 0.20 - VCCO + 0.60
VCM (DC)(1) 0.68 - 0.90
VDIFF (AC) 0.40 - VCCO + 0.60
VX (交叉)(2) 0.68 - 0.90

注:
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

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


HSTL_II_DCI
HSTL_II_DCI

Z0 +

VREF = 0.75V –

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_41_030206

图 6-42: HSTL (1.5V) II 类单向终端

Virtex-5 用户指南 www.xilinx.com/cn 247


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-43 表示双向终端 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 –

VREF = 0.75V

DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


HSTL_II_DCI
HSTL_II_DCI

Z0 +

VREF = 0.75V –

2RVRN = 2Z0= 100Ω

VREF = 0.75V 2RVRN = 2Z0= 100Ω

ug190_6_42_030306

图 6-43: HSTL (1.5V) II 类双向终端

248 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

表 6-17 列出了 HSTL (1.5V) II 类的直流电压指标。

表 6-17: HSTL (1.5V) II 类的直流电压指标


最小值 典型值 最大值
VCCO 1.40 1.50 1.60
VREF (2) 0.68 0.75 0.90
VTT - VCCO × 0.5 -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -16 - -
VOL 对应的 IOL (mA)(1) (3) 16 - -

注:
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-44: 差分 HSTL (1.5V) II 类单向终端

Virtex-5 用户指南 www.xilinx.com/cn 249


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-45 表示单向 DCI 终端差分 HSTL II 类 (1.5V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V

DIFF_HSTL_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω DIFF_HSTL_II_DCI

+
VCCO = 1.5V VCCO = 1.5V –

DIFF_HSTL_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_44_020306

图 6-45: 差分 HSTL (1.5V) II 类 DCI 单向终端

图 6-46 表示双向终端差分 HSTL II 类 (1.5V) 所用有效终端方法的样本电路。

External Termination
IOB VTT = 0.75V IOB
VTT = 0.75V
DIFF_HSTL_II DIFF_HSTL_II
50Ω 50Ω
Z0

VTT = 0.75V VTT = 0.75V


DIFF_HSTL_II DIFF_HSTL_II
50Ω 50Ω
Z0

DIFF_HSTL_II DIFF_HSTL_II
+ +
– –

ug190_6_45_020306

图 6-46: 差分 HSTL (1.5V) II 类双向终端

250 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-47 表示双向 DCI 终端差分 HSTL II 类 (1.5V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V

DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI

Z0

VCCO = 1.5V VCCO = 1.5V


DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI
+ 2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω +
– –

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_46_020306

图 6-47: 差分 HSTL (1.5V) II 类 DCI 双向终端

表 6-18 列出了差分 HSTL II 类的直流电压指标。

表 6-18: 差分 HSTL II 类的直流电压指标


最小值 典型值 最大值
VCCO 1.40 1.50 1.60
VTT - VCCO × 0.5 -
VIN (DC) -0.30 - VCCO + 0.30
VDIFF (DC) 0.20 - VCCO + 0.60
VCM (DC)(1) 0.68 - 0.90
VDIFF (AC) 0.40 - VCCO + 0.60
VX (交叉)(2) 0.68 - 0.90

注:
1. 共模电压:VCM = VP - ((VP - VN)/2)
2. 交叉点:VX,此处 VP - VN = 0 (交流耦合)

Virtex-5 用户指南 www.xilinx.com/cn 251


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

RVRP = Z0= 50Ω


HSTL_III_DCI HSTL_III_DCI

Z0 +

VREF = 0.9V –

ug190_6_47_030306

图 6-48: HSTL III 类终端

表 6-19 列出了 HSTL III 类的直流电压指标。

表 6-19: HSTL III 类的直流电压指标


最小值 典型值 最大值
VCCO 1.40 1.50 1.60
VREF (2) - 0.90 -
VTT - VCCO -
VIH VREF + 0.1 - -
VIL   - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -8 - -
VOL 对应的 IOL (mA)(1) 24 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”

252 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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

RVRP = Z0= 50Ω RVRP = Z0= 50Ω


HSTL_IV_DCI
HSTL_IV_DCI

Z0 +

VREF = 0.9V –

ug190_6_48_030306

图 6-49: HSTL IV 类单向终端

Virtex-5 用户指南 www.xilinx.com/cn 253


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-50 表示 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 –

VREF = 0.9V

DCI
IOB IOB
VCCO = 1.5V VCCO = 1.5V

RVRP = Z0= 50Ω RVRP = Z0= 50Ω


HSTL_IV_DCI
HSTL_IV_DCI

Z0 +

VREF = 0.9V –

VREF = 0.9V

ug190_6_49_030306

图 6-50: HSTL IV 类双向终端

254 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

表 6-20 列出了 HSTL IV 类的直流电压指标。

表 6-20: HSTL IV 类的直流电压指标


最小值 典型值 最大值
VCCO 1.40 1.50 1.60
VREF (2) - 0.90 -
VTT - VCCO -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -8 - -
VOL 对应的 IOL (mA)(1) 48 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”

HSTL_II_T_DCI (1.5V) 分裂 Thevenin 终端


图 6-51 表示具有片上分裂 Thevenin 终端的 HSTL_II_T_DCI (1.5V) 所用有效终端方法的样
本电路。在这种双向情况下,如果是三态,则在接收器而非驱动器上调用终端。

DCI Not 3-stated 3-stated


IOB IOB
VCCO = 1.5V

2RVRP = 2Z0= 100Ω


HSTL_II_T_DCI
HSTL_II_T_DCI

Z0 +

VREF = 0.75V –

VREF = 0.75V 2RVRN = 2Z0= 100Ω

ug190_6_90_041206

图 6-51: HSTL_II_T_DCI (1.5V) 分裂 Thevenin 终端

Virtex-5 用户指南 www.xilinx.com/cn 255


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

2RVRP = 2Z0= 100Ω


HSTL_I_DCI_18 HSTL_I_DCI_18

Z0 +

VREF = 0.9V –

2RVRN = 2Z0= 100Ω

ug190_6_50_030306

图 6-52: HSTL I 类 (1.8V) 终端

表 6-21 列出了 HSTL I 类 (1.8V) 的直流电压指标。

表 6-21: HSTL I 类 (1.8V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VREF (2) 0.83 0.9 1.08
VTT - VCCO × 0.5 -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -8 - -
VOL 对应的 IOL (mA)(1) 8 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”

256 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

差分 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

图 6-53: 差分 HSTL (1.8V) I 类单向终端

图 6-54 表示单向 DCI 终端差分 HSTL I 类 (1.8V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.8V

DIFF_HSTL_I_DCI_18
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω DIFF_HSTL_I_DCI_18

+
VCCO = 1.8V –

DIFF_HSTL_I_DCI_18
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω

ug190_6_52_030306

图 6-54: 差分 HSTL (1.8V) I 类 DCI 单向终端

Virtex-5 用户指南 www.xilinx.com/cn 257


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-22 列出了差分 HSTL I 类 (1.8V) 的直流电压指标。

表 6-22: 差分 HSTL I 类 (1.8V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VTT - VCCO × 0.5 -
VIN (DC) -0.30 - VCCO + 0.30
VDIFF (DC) 0.20 - VCCO + 0.60
VCM (DC)(1) 0.83 - 1.08
VDIFF (AC) 0.40 - VCCO + 0.60
VX (交叉)(2) 0.83 - 1.08

注:
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

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


HSTL_II_DCI_18
HSTL_II_DCI_18

Z0 +

VREF = 0.9V –

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_53_030306

图 6-55: 单向终端 HSTL II 类 (1.8V)

258 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-56 表示双向终端 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 –

VREF = 0.9V

DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


HSTL_II_DCI_18
HSTL_II_DCI_18

Z0 +

VREF = 0.9V –

2RVRN = 2Z0= 100Ω

VREF = 0.9V 2RVRN = 2Z0= 100Ω

ug190_6_54_030306

图 6-56: 双向终端 HSTL II 类 (1.8V)

Virtex-5 用户指南 www.xilinx.com/cn 259


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-23 列出了 HSTL II 类 (1.8V) 的直流电压指标。

表 6-23: HSTL II 类 (1.8V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VREF (2) - 0.9 -
VTT - VCCO × 0.5 -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -16 - -
VOL 对应的 IOL (mA)(1) 16 - -

注:
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

VTT = 0.9V VTT = 0.9V +



DIFF_HSTL_II_18
50Ω 50Ω

Z0

ug190_6_55_030306

图 6-57: 差分 HSTL (1.8V) II 类单向终端

260 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-58 表示单向 DCI 终端差分 HSTL II 类 (1.8V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V

DIFF_HSTL_II_DCI_18 2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω DIFF_HSTL_II_DCI_18

+
VCCO = 1.8V VCCO = 1.8V –

DIFF_HSTL_II_DCI_18
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_56_121506

图 6-58: 差分 HSTL (1.8V) II 类 DCI 单向终端

图 6-59 表示双向终端差分 HSTL II 类 (1.8V) 所用有效终端方法的样本电路。

External Termination
IOB IOB
VTT = 0.9V VTT = 0.9V
DIFF_HSTL_II_18 DIFF_HSTL_II_18
50Ω 50Ω
Z0

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-59: 差分 HSTL (1.8V) II 类双向终端

Virtex-5 用户指南 www.xilinx.com/cn 261


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-60 表示双向 DCI 终端差分 HSTL II 类 (1.8V) 所用有效终端方法的样本电路。

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

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

DIFF_HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18

Z0

VCCO = 1.8V VCCO = 1.8V


DIFF_HSTL_II_DCI_18 DIFF_HSTL_II_DCI_18
+ 2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω +
– –

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_58_030306

图 6-60: 差分 HSTL (1.8V) II 类 DCI 双向终端

表 6-24 列出了差分 HSTL II 类 (1.8V) 的直流电压指标。

表 6-24: 差分 HSTL II 类 (1.8V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VTT - VCCO × 0.5 -
VIN (DC) -0.30 - VCCO + 0.30
VDIFF (DC) 0.20 - VCCO + 0.60
VCM (DC)(1) 0.83 - 1.08
VDIFF (AC) 0.40 - VCCO + 0.60
VX (交叉)(2) 0.83 - 1.08

注:
1. 共模电压:VCM = VP - ((VP - VN)/2)
2. 交叉点:VX,此处 VP - VN = 0 (交流耦合)

262 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

HSTL III 类 (1.8V)


图 6-61 表示 HSTL III 类 (1.8V) 所用有效终端方法的样本电路。

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

RVRP = Z0= 50Ω


HSTL_III_DCI_18 HSTL_III_DCI_18

Z0 +

VREF = 1.1V –

ug190_6_59_030306

图 6-61: HSTL III 类 (1.8V) 终端

表 6-25 列出了 HSTL III 类 (1.8V) 的直流电压指标。

表 6-25: HSTL III 类 (1.8V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VREF (2) - 1.1 -
VTT - VCCO -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -8 - -
VOL 对应的 IOL (mA)(1) 24 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”

Virtex-5 用户指南 www.xilinx.com/cn 263


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

RVRP = Z0= 50Ω RVRP = Z0= 50Ω


HSTL_IV_DCI_18
HSTL_IV_DCI_18

Z0 +

VREF = 1.1V –

ug190_6_60_030306

图 6-62: 单向终端 HSTL IV 类 (1.8V)

264 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-63 表示 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 –

VREF = 1.1V

DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V

RVRP = Z0= 50Ω RVRP = Z0= 50Ω


HSTL_IV_DCI_18
HSTL_IV_DCI_18

Z0 +

VREF = 1.1V –

VREF = 1.1V

ug190_6_61_030306

图 6-63: 双向终端 HSTL IV 类 (1.8V)

Virtex-5 用户指南 www.xilinx.com/cn 265


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-26 列出了 HSTL IV 类 (1.8V) 的直流电压指标。

表 6-26: HSTL IV 类 (1.8V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VREF (2) - 1.1 -
VTT - VCCO -
VIH VREF + 0.1 - -
VIL - - VREF - 0.1
VOH VCCO - 0.4 - -
VOL - - 0.4
VOH 对应的 IOH (mA)(1) -8 - -
VOL 对应的 IOL (mA)(1) 48 - -

注:
1. 与较低驱动电流对应的 VOL 和 VOH 已经过采样测试。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”

HSTL_II_T_DCI_18 (1.8V) 分裂 Thevenin 终端


图 6-64 表示具有片上分裂 Thevenin 终端的 HSTL_II_T_DCI_18 (1.8V) 所用有效终端方法
的样本电路。在这种双向情况下,如果是三态,则在接收器而非驱动器上调用终端。

DCI Not 3-stated 3-stated


IOB IOB
VCCO = 1.8V

2RVRP = 2Z0= 100Ω


HSTL_II_T_DCI_18
HSTL_II_T_DCI_18

Z0 +

VREF = 0.9V –

VREF = 0.9V 2RVRN = 2Z0= 100Ω

ug190_6_91_041206

图 6-64: HSTL_II_T_DCI_18 分裂 Thevenin 终端

266 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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

图 6-65: HSTL I 类 (1.2V) 终端

表 6-27 列出了 HSTL I 类 (1.2V) 的直流电压指标。

表 6-27: HSTL I 类 (1.2V) 的直流电压指标


最小值 典型值 最大值
VCCO 1.14 1.2 1.26
VREF (2) VCCO × 0.48 0.6 VCCO × 0.52
VTT - VCCO × 0.5 -
VIH VREF + 0.08 - -
VIL - - VREF - 0.08
VOH VCCO - .0.315 - -
VOL - - 0.315
VOH 对应的 IOH (mA)(1) -6.3 - -
VOL 对应的 IOL (mA)(1) 6.3 - -

注:
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 支持单端
信令和差分信令两种标准。此标准需要一个差分放大器输入缓冲器和一个推挽式输出缓冲
器。

Virtex-5 用户指南 www.xilinx.com/cn 267


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 Ω)。

268 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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

2RVRP = 2Z0= 100Ω


SSTL2_I_DCI SSTL2_I_DCI

Z0 +

VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω

ug190_6_63_030506

图 6-66: SSTL2 I 类终端

Virtex-5 用户指南 www.xilinx.com/cn 269


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-28 列出了 I 类 SSTL2 的直流电压指标。

表 6-28: I 类 SSTL2 的直流电压指标


最小值 典型值 最大值
VCCO 2.3 2.5 2.7
VREF = 0.5 × VCCO 1.13 1.25 1.38
VTT = VREF + N(1) 1.09 1.25 1.42
VIH ≥ VREF + 0.15 1.28 1.4 VCCO + 0.3(2)
VIL ≤ VREF - 0.15 -0.3(3) 1.1 1.23
VOH ≥ VREF + 0.61 1.74 1.84 1.94
VOL ≤ VREF - 0.61(4) 0.56 0.66 0.76
VOH 对应的 IOH (mA) -8.1 - -
VOL 对应的 IOL (mA) 8.1 - -

注:
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

图 6-67: 差分 SSTL2 I 类单向终端

270 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-68 表示单向 DCI 终端差分 SSTL2 I 类 (2.5V) 所用有效终端方法的样本电路。

DCI
IOB
VCCO = 2.5V

DIFF_SSTL2_I_DCI
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω DIFF_SSTL2_I_DCI


R0 = 25Ω

+
VCCO = 2.5V –

DIFF_SSTL2_I_DCI
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω


R0 = 25Ω

ug190_6_65_030506

图 6-68: 差分 SSTL2 (2.5V) I 类单向 DCI 终端

表 6-29 列出了差分 SSTL2 I 类的直流电压指标。

表 6-29: 差分 SSTL2 I 类的直流电压指标


最小值 典型值 最大值
VCCO 2.3 2.5 2.7
输入参数
VTT - VCCO × 0.5 -
VIN (DC)(1) -0.30 - VCCO + 0.30
VID (DC)(2) 0.3 - VCCO + 0.60
VID (AC) 0.62 - VCCO + 0.60
VIX (AC)(3) 0.95 - 1.55
输出参数
VOX (AC)(4) 1.0 - 1.5

注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. VID (DC) 指定开关所需的输入差分电压。
3. VIX (AC) 表示差分输入信号必须交叉处的电压。
4. VOX (AC) 表示差分输出信号必须交叉处的电压。

Virtex-5 用户指南 www.xilinx.com/cn 271


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


SSTL2_II_DCI
SSTL2_II_DCI

Z0 +

VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_66_030506

图 6-69: 单向终端 SSTL2 II 类

272 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-70 表示 SSTL2 II 类所用有效双向终端方法的样本电路。

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

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


SSTL2_II_DCI
SSTL2_II_DCI

Z0 +
VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

VREF = 1.25V

R0 = 25Ω

ug190_6_67_030506

图 6-70: 双向终端 SSTL2 II 类

Virtex-5 用户指南 www.xilinx.com/cn 273


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-30 列出了 II 类 SSTL2 的直流电压指标。

表 6-30: II 类 SSTL2 的直流电压指标


最小值 典型值 最大值
VCCO 2.3 2.5 2.7
VREF = 0.5 × VCCO 1.13 1.25 1.38
VTT = VREF + N(1) 1.09 1.25 1.42
VIH ≥ VREF + 0.15 1.28 1.40 VCCO + 0.3(2)
VIL ≤ VREF - 0.15 -0.3(3) 1.1 1.27
VOH ≥ VREF + 0.81 1.93 2.03 2.13
VOL ≤ VREF - 0.81(4) 0.36 0.46 0.55
VOH 对应的 IOH (mA) -16.2 - -
VOL 对应的 IOL (mA) 16.2 - -

注:
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

图 6-71: 差分 SSTL2 II 类单向终端

274 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-72 表示单向 DCI 终端差分 SSTL2 II 类 (2.5V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 2.5V VCCO = 2.5V

DIFF_SSTL2_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω DIFF_SSTL2_II_DCI


R0 = 25Ω

+
VCCO = 2.5V VCCO = 2.5V –

DIFF_SSTL2_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω


R0 = 25Ω

ug190_6_69_030506

图 6-72: 差分 SSTL2 (2.5V) II 类单向 DCI 终端

图 6-73 表示双向终端差分 SSTL2 II 类 (2.5V) 所用有效终端方法的样本电路。

External Termination
IOB VTT = 1.25V VTT = 1.25V IOB

DIFF_SSTL2_II DIFF_SSTL2_II
50Ω 50Ω
25Ω 25Ω
Z0

VTT = 1.25V VTT = 1.25V


DIFF_SSTL2_II DIFF_SSTL2_II
50Ω 50Ω 25Ω
25Ω
Z0

DIFF_SSTL2_II DIFF_SSTL2_II
+ +
– –

ug190_6_70_071707

图 6-73: 双向终端差分 SSTL2 (2.5V) II 类

Virtex-5 用户指南 www.xilinx.com/cn 275


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-74 表示双向 DCI 终端差分 SSTL2 II 类 (2.5V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 2.5V VCCO = 2.5V

DIFF_SSTL2_II_DCI DIFF_SSTL2_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω


R0 = 25Ω R0 = 25Ω

DIFF_SSTL2_II_DCI DIFF_SSTL2_II_DCI

Z0

R0 = 25Ω R0 = 25Ω

VCCO = 2.5V VCCO = 2.5V


DIFF_SSTL2_II_DCI DIFF_SSTL2_II_DCI
+ 2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω +
– –

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_71_041106

图 6-74: DCI 双向终端差分 SSTL2 (2.5V) II 类

表 6-31 列出了差分 SSTL2 II 类的直流电压指标。

表 6-31: 差分 SSTL2 II 类的直流电压指标


最小值 典型值 最大值
VCCO 2.3 2.5 2.7
输入参数
VTT - VCCO × 0.5 -
VIN (DC)(1) -0.30 - VCCO + 0.30
VID (DC)(2) 0.3 - VCCO + 0.60
VID (AC) 0.62 - VCCO + 0.60
VIX (AC)(3) 0.95 - 1.55
输出参数
VOX (AC)(4) 1.0 - 1.5

注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. VID (DC) 指定开关所需的输入差分电压。
3. VIX (AC) 表示差分输入信号必须交叉处的电压。
4. VOX (AC) 表示差分输出信号必须交叉处的电压。

276 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

SSTL2_II_T_DCI (2.5V) 分裂 Thevenin 终端


图 6-75 表示具有片上分裂 Thevenin 终端的 SSTL2_II_T_DCI (2.5V) 所用有效终端方法的
样本电路。在这种双向 I/O 标准中,如果是三态,则在接收器而非驱动器上调用终端。

DCI Not 3-stated 3-stated


IOB IOB
VCCO = 2.5V

2RVRP = 2Z0= 100Ω


SSTL2_II_T_DCI
SSTL2_II_T_DCI

Z0 +
VREF = 1.25V –
R0 = 25Ω
2RVRN = 2Z0= 100Ω

VREF = 1.25V

R0 = 25Ω

ug190_6_92_041206

图 6-75: SSTL2_II_T_DCI (2.5V) 分裂 Thevenin 终端

Virtex-5 用户指南 www.xilinx.com/cn 277


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

2RVRP = 2Z0= 100Ω


SSTL18_I_DCI SSTL18_I_DCI

Z0 +

VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω

ug190_6_72_030506

图 6-76: SSTL18 (1.8V) I 类终端

278 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

差分 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

图 6-77: 差分 SSTL (1.8V) I 类单向终端

图 6-78 表示单向 DCI 终端差分 SSTL I 类 (1.8V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.8V

DIFF_SSTL18_I_DCI
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω DIFF_SSTL18_I_DCI


R0 = 20Ω

+
VCCO = 1.8V –

DIFF_SSTL18_I_DCI
2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω


R0 = 20Ω

ug190_6_74_032206

图 6-78: 差分 SSTL (1.8V) I 类单向 DCI 终端

Virtex-5 用户指南 www.xilinx.com/cn 279


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-32 列出了差分 SSTL (1.8V) I 类的直流电压指标。

表 6-32: 差分 SSTL (1.8V) I 类和 II 类的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
输入参数
VTT - VCCO × 0.5 -
VIN (DC)(1) -0.30 - VCCO + 0.30
VID (DC)(3) 0.25 - VCCO + 0.60
VID (AC) 0.50 - VCCO + 0.60
VIX (AC)(4) 0.675 - 1.125
输出参数
VOX (AC)(5) 0.725 - 1.075

注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
3. VID (DC) 指定开关所需的输入差分电压。
4. VIX (AC) 表示差分输入信号必须交叉处的电压。
5. VOX (AC) 表示差分输出信号必须交叉处的电压。

280 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

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

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


SSTL18_II_DCI
SSTL18_II_DCI

Z0 +

VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_75_030506

图 6-79: SSTL18 (1.8V) II 类单向终端

Virtex-5 用户指南 www.xilinx.com/cn 281


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

图 6-80 表示 SSTL (1.8V) II 类所用有效双向终端方法的样本电路。

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

2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω


SSTL18_II_DCI
SSTL18_II_DCI

Z0 +

VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

VREF = 0.9V

R0 = 20Ω

ug190_6_76_071707

图 6-80: SSTL (1.8V) II 类终端

282 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

表 6-33 和表 6-34 分别列出了 I 类和 II 类 SSTL (1.8V) 的直流电压指标。

表 6-33: I 类 SSTL (1.8V) 的直流电压指标 I 类


I类
最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VREF = 0.5 × VCCO 0.833 0.9 0.969
VTT = VREF + N(1) 0.793 0.9 1.009
VIH ≥ VREF + 0.125 0.958 - VCCO + 0.3(2)
VIL ≤ VREF - 0.125 -0.3(3) - 0.844
VOH ≥ VTT + 0.47(4) 1.263 - -
VOL ≤ VTT - 0.47(4) - - 0.539
VOH 对应的 IOH (mA) -6.7 - -
VOL 对应的 IOL (mA) 6.7 - -

注:
1. N 必须大于或等于 -0.04 且小于或等于 0.04。
2. VIH 的最大值是 VCCO +0.3。
3. VIL 的最小值不依据此公式。
4. 因为 SSTL_I_DCI 使用可控阻抗驱动器,所以 VOH 与 VOL 不同。

表 6-34: II 类 SSTL (1.8V) 的直流电压指标


II 类
最小值 典型值 最大值
VCCO 1.7 1.8 1.9
VREF = 0.5 × VCCO 0.833 0.9 0.969
VTT = VREF + N(1) 0.793 0.9 1.009
VIH ≥ VREF + 0.125 0.958 - VCCO + 0.3(2)
VIL ≤ VREF - 0.125 -0.3(3) - 0.844
VOH ≥ VTT + 0.603(4) 1.396 - -
VOL ≤ VTT - 0.603(4) - - 0.406
VOH 对应的 IOH (mA) -13.4 - -
VOL 对应的 IOL (mA) 13.4 - -

注:
1. N 必须大于或等于 -0.04 且小于或等于 0.04。
2. VIH 的最大值是 VCCO +0.3。
3. VIL 的最小值不依据此公式。
4. 因为 SSTL_I_DCI 使用可控阻抗驱动器,所以 VOH 与 VOL 不同。

Virtex-5 用户指南 www.xilinx.com/cn 283


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

DIFF_SSTL18_II 50Ω 50Ω


RS = 20Ω
Z0

ug190_6_77_030506

图 6-81: 差分 SSTL (1.8V) II 类单向终端

图 6-82 表示单向 DCI 终端差分 SSTL II 类 (1.8V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V

DIFF_SSTL18_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω DIFF_SSTL18_II_DCI


R0 = 20Ω

+
VCCO = 1.8V VCCO = 1.8V –

DIFF_SSTL18_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω


R0 = 20Ω

ug190_6_78_030506

图 6-82: 差分 SSTL (1.8V) II 类单向 DCI 终端

284 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

图 6-83 表示双向终端差分 SSTL II 类 (1.8V) 所用有效终端方法的样本电路。

External Termination
IOB IOB
VCCO = 0.9V VCCO = 0.9V
DIFF_SSTL18_II DIFF_SSTL18_II
50Ω 50Ω
20Ω 20Ω
Z0

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

图 6-83: 双向终端差分 SSTL (1.8V) II 类

图 6-84 表示双向 DCI 终端差分 SSTL II 类 (1.8V) 所用有效终端方法的样本电路。

DCI
IOB IOB
VCCO = 1.8V VCCO = 1.8V

DIFF_SSTL18_II_DCI DIFF_SSTL18_II_DCI
2RVRP = 2Z0= 100Ω 2RVRP = 2Z0= 100Ω

Z0

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω


R0 = 20Ω R0 = 20Ω

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Ω +
– –

2RVRN = 2Z0= 100Ω 2RVRN = 2Z0= 100Ω

ug190_6_80_030506

图 6-84: DCI 双向终端差分 SSTL (1.8V) II 类

Virtex-5 用户指南 www.xilinx.com/cn 285


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-35 列出了差分 SSTL (1.8V) II 类的直流电压指标。

表 6-35: 差分 SSTL (1.8V) II 类的直流电压指标


最小值 典型值 最大值
VCCO 1.7 1.8 1.9
输入参数
VTT - VCCO × 0.5 -
VIN (DC)(1) -0.30 - VCCO + 0.30
VID (DC)(3) 0.25 - VCCO + 0.60
VID (AC) 0.50 - VCCO + 0.60
VIX (AC)(4) 0.675 - 1.125
输出参数
VOX (AC)(5) 0.725 - 1.075

注:
1. VIN (DC) 指定各差分输入的允许直流偏移。
2. 根据 EIA/JESD8-6,“VREF 的值应由用户选择,以便针对用户指定的使用条件提供最佳噪声容限。”
3. VID (DC) 指定开关所需的输入差分电压。
4. VIX (AC) 表示差分输入信号必须交叉处的电压。
5. VOX (AC) 表示差分输出信号必须交叉处的电压。

SSTL18_II_T_DCI (1.8V) 分裂 Thevenin 终端


图 6-85 表示具有片上分裂 Thevenin 终端的 SSTL18_II_T_DCI (1.8V) 所用有效终端方法的
样本电路。在这种双向 I/O 标准中,如果是三态,则在接收器而非驱动器上调用终端。

DCI Not 3-stated 3-stated


IOB IOB
VCCO = 1.8V

2RVRP = 2Z0= 100Ω


SSTL18_II_T_DCI
SSTL18_II_T_DCI

Z0 +
VREF = 0.9V –
R0 = 20Ω
2RVRN = 2Z0= 100Ω

VREF = 0.9V

R0 = 20Ω

ug190_6_93_041206

图 6-85: SSTL18_II_T_DCI (1.8V) 分裂 Thevenin 终端

286 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

差分终端: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) 部
分简要描述了如何使用此功能。

LVDS 和扩展 LVDS (低压差分信令)


低压差分信令 (LVDS) 是一种功能强大的高速接口,普遍见于许多系统应用。Virtex-5 I/O
是按照 EIA/TIA 的 LVDS 电气规范设计的,以便于系统和电路板设计。因为在 IOB 中使用
了 LVDS 电流模式驱动器,因此免除了点对点应用对外部源终端的需要;而 Virtex-5 器件
选用了扩展模式,从而为在 FPGA 中实现 LVDS 设计提供了极灵活的解决方案。
扩展 LVDS 提高了驱动能力和电压摆幅 (350 - 750 mV),因而是远距离或电缆 LVDS 链路
的理想方案。LVDS 扩展模式驱动器的输出交流特性不在 EIA/TIA 规范的范围之内。LVDS
扩展模式驱动器适合需要较高驱动能力的场合,用于在接收器上产生符合 EIA/TIA 规范的
LVDS 信号。

发射器终端
Virtex-5 LVDS 发射器不需要任何外部终端。表 6-36 列出了对应于 Virtex-5 LVDS 电流模
式驱动器的允许属性。Virtex-5 LVDS 电流模式驱动器是真电流源,可以产生适当 (符合
EIA/TIA)的 LVDS 信号。

Virtex-5 用户指南 www.xilinx.com/cn 287


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

接收器终端
图 6-86 中的示例是一个差分终端,用于具有 50 Ω 传输线的电路板上的 LVDS 接收器。

External Termination
IOB IOB

Z0 LVDS_25
LVDS_25

+
RDIFF = 2Z0= 100Ω

Z0

ug190_6_81_030506

图 6-86: LVDS_25 接收器终端

图 6-87 中的示例是一个差分终端,用于具有 50 Ω 传输线的电路板上的 LVDS 接收器。

IOB IOB
0 Z0 = 50Ω
LVDS_25 LVDS_25
+
RDIFF= 100Ω
Data in

Z0 = 50Ω 0

ug190_6_82_030506

图 6-87: 具有 DIFF_TERM 接收器终端的 LVDS_25

表 6-36 列出了可用的 Virtex-5 LVDS I/O 标准和支持的属性。

表 6-36: LVDS I/O 标准的允许属性


基元
属性
IBUFDS/IBUFGDS OBUFDS/OBUFTDS
IOSTANDARD LVDS_25、LVDSEXT_25
DIFF_TERM TRUE、FALSE 不适用

288 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

关于 Virtex-5 I/O 所支持标准的具体指导原则

HyperTransport™ 协议 (HT)
HyperTransport 协议 (HT) 又称为闪电数据传输 (LDT),是一种高速接口的低压标准。其基
于差分信令的接口与 LVDS 非常相似。Virtex-5 IOB 配备有 HT 缓冲器。表 6-37 简要描述
了所有可用的 HT I/O 标准和支持的属性。

表 6-37: HT I/O 标准的允许属性


基元
属性
IBUFDS/IBUFGDS OBUFDS/OBUFTDS
IOSTANDARD HT_25
DIFF_TERM TRUE、FALSE 不适用

低摆幅差分信令 (RSDS)
低摆幅差分信令 (RSDS) 与使用差分信令的 LVDS 高速接口相似。RSDS 的实现与 Virtex-5
器件中 LVDS 的实现相似,仅适用于点对点应用。

表 6-38: RSDS I/O 标准的允许属性


基元
属性
IBUFDS/IBUFGDS OBUFDS/OBUFTDS
IOSTANDARD RSDS_25
DIFF_TERM TRUE、FALSE 不适用

BLVDS (总线 LVDS)


因为是面向点对点应用,所以 BLVDS 不是 EIA/TIA 标准实现,需要确保适用 I/O 和 PCB 布
局设计规则。双向 LVDS 的软件库中提供的基元不使用 Virtex-5 LVDS 电流模式驱动器,
而是使用互补单端差分驱动器,所以需要源终端。图 6-88 所示为 BLVDS 发射器终端。

BLVDS_25 IOB IOB


RS Z0 = 50Ω IN
BLVDS_25
165Ω
RDIV -
BLVDS_25 RDIFF = 100Ω
140Ω + Data in
RS Z0 = 50Ω

165Ω INX

ug190_6_83_030506

图 6-88: BLVDS 发射器终端

Virtex-5 用户指南 www.xilinx.com/cn 289


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 的输出。

LVPECL_25 IOB IOB


RS Z0 = 50Ω IN
LVPECL_25
70Ω
RDIV -
LVPECL_25 RDIFF = 100Ω
187Ω + Data in
RS Z0 = 50Ω

70Ω INX

ug190_6_84_030506

图 6-89: LVPECL 发射器终端

290 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

在同组中合并 I/O 标准的规则

在同组中合并 I/O 标准的规则


要在同组中合并不同的输入、输出和双向标准,必须遵守以下规则:
1. 仅合并输出标准。具有同样输出 VCCO 要求的输出标准可以在同组中合并。
兼容的示例:
SSTL2_I 输出和 LVDCI_25 输出
不兼容的示例:
SSTL2_I (输出 VCCO = 2.5V)输出和
LVCMOS33 (输出 VCCO = 3.3V)输出
2. 仅合并输入标准。具有同样 VCCO 和 VREF 要求的输入标准可以在同组中合并。
兼容的示例:
LVCMOS15 输入和 HSTL_IV 输入
不兼容的示例:
LVCMOS15 (输入 VCCO = 1.5V)输入和
LVCMOS18 (输入 VCCO = 1.8V)输入
不兼容的示例:
HSTL_I_DCI_18 (VREF = 0.9V) 输入和
HSTL_IV_DCI_18 (VREF = 1.1V) 输入
3. 合并输入标准和输出标准。具有同样 VCCO 要求的输入标准和输出标准可以在同组中
合并。
兼容的示例:
LVDS_25 输出和 HSTL_I 输入
不兼容的示例:
LVDS_25 输出 (输出 VCCO = 2.5V)和
HSTL_I_DCI_18 输入 (输入 VCCO = 1.8V)
4. 双向标准与输入或输出标准合并。双向 I/O 与其他标准合并时,双向标准务必满足前三
条规则。
5. 合并 DCI I/O 标准的其他规则。
a. 同组中只可有一个单终端类型 (输入或输出)。
不兼容的示例:
HSTL_IV_DCI 输入和 HSTL_III_DCI 输入
b. 同组中只可有一个分裂终端类型 (输入或输出)。
不兼容的示例:
HSTL_I_DCI 输入和 HSTL_II_DCI 输入
实现工具强制执行这些设计规则。

Virtex-5 用户指南 www.xilinx.com/cn 291


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-39 简要描述了 Virtex-5 支持的 I/O 标准。

表 6-39: I/O 兼容性


VCCO VREF 终端类型
I/O 标准
输出 输入 输入 输出 输入
LVTTL (1) N/R N/R N/R
LVCMOS33 (1) N/R N/R N/R
LVDCI_33 (1) N/R 串联 N/R
HSLVDCI_33 (1) 3.3 3.3 VCCO/2 串联 N/R
PCIX (1) N/R N/R N/R
PCI33_3 (1) N/R N/R N/R
PCI66_3 (1) N/R N/R N/R
LVDS_25 N/R N/R N/R
LVDSEXT_25 N/R N/R N/R
HT_25 N/R N/R N/R
RSDS_25(4) N/R N/R N/R
BLVDS_25 N/R N/R N/R
注 (2)
LVPECL_25 N/R N/R N/R
SSTL2_I 1.25 N/R N/R
SSTL2_II 1.25 N/R N/R
DIFF_SSTL2_I N/R N/R N/R
DIFF_SSTL2_II 2.5 N/R N/R N/R
LVCMOS25 N/R N/R N/R
LVDCI_25 N/R 串联 N/R
HSLVDCI_25 VCCO/2 串联 N/R
LVDCI_DV2_25 N/R 串联 N/R
SSTL2_I_DCI 2.5 1.25 N/R 分裂
SSTL2_II_DCI 1.25 分裂 分裂
SSTL2_II_T_DCI 1.25 N/R 分裂
DIFF_SSTL2_I_DCI N/R N/R 分裂
DIFF_SSTL2_II_DCI N/R 分裂 分裂

292 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

在同组中合并 I/O 标准的规则

表 6-39: I/O 兼容性 ( 续表 )


VCCO VREF 终端类型
I/O 标准
输出 输入 输入 输出 输入
HSTL_III_18 1.08 N/R N/R
HSTL_IV_18 1.08 N/R N/R
HSTL_I_18 0.9 N/R N/R
HSTL_II_18 0.9 N/R N/R
DIFF_HSTL_I_18 N/R N/R N/R
注 (2)
DIFF_HSTL_II_18 N/R N/R N/R
SSTL18_I 0.9 N/R N/R
SSTL18_II 0.9 N/R N/R
DIFF_SSTL18_I N/R N/R N/R
DIFF_SSTL18_II N/R N/R N/R
LVCMOS18 N/R N/R N/R
LVDCI_18 N/R 串联 N/R
HSLVDCI_18 VCCO/2 串联 N/R
1.8
LVDCI_DV2_18 N/R 串联 N/R
HSTL_III_18_DCI 1.08 N/R 单
HSTL_IV_18_DCI 1.08 单 单
HSTL_I_18_DCI 0.9 N/R 分裂
HSTL_II_18_DCI 0.9 分裂 分裂
1.8
HSTL_II_T_18_DCI N/R N/R 分裂
DIFF_HSTL_I_18_DCI N/R N/R 分裂
DIFF_HSTL_II_18_DCI N/R 分裂 分裂
SSTL18_I_DCI 0.9 N/R 分裂
SSTL18_II_DCI 0.9 分裂 分裂
SSTL18_II_T_DCI 0.9 N/R 分裂
DIFF_SSTL18_I_DCI N/R N/R 分裂
DIFF_SSTL18_II_DCI N/R 分裂 分裂

Virtex-5 用户指南 www.xilinx.com/cn 293


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

表 6-39: I/O 兼容性 ( 续表 )


VCCO VREF 终端类型
I/O 标准
输出 输入 输入 输出 输入
HSTL_III 0.9 N/R N/R
HSTL_IV 0.9 N/R N/R
HSTL_I 0.75 N/R N/R
注 (2)
HSTL_II 0.75 N/R N/R
DIFF_HSTL_I N/R N/R N/R
DIFF_HSTL_II N/R N/R N/R
LVCMOS15 N/R N/R N/R
LVDCI_15 N/R 串联 N/R
HSLVDCI_15 VCCO/2 串联 N/R
1.5
LVDCI_DV2_15 N/R 串联 N/R
GTLP_DCI 1 单 单
HSTL_III_DCI 0.9 N/R 单
1.5
HSTL_IV_DCI 0.9 单 单
HSTL_I_DCI 0.75 N/R 分裂
HSTL_II_DCI 0.75 分裂 分裂
HSTL_II_T_DCI 0.75 N/R 分裂
DIFF_HSTL_I_DCI N/R N/R 分裂
DIFF_HSTL_II_DCI N/R 分裂 分裂
GTL_DCI 1.2 1.2 0.8 单 单
GTLP 1 N/R N/R
N/R 注 (2)
GTL 0.8 N/R N/R
LVCMOS12 N/R N/R N/R
1.2 1.2
HSTL_I_12 0.6 N/R N/R

注:
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 属性来选择的。

294 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

在同组中合并 I/O 标准的规则

3.3V I/O 设计指导原则


为了获得 Virtex-5 器件的最高性能,本部分集中介绍若干 3.3V I/O 设计指导原则和方法,
其中包括用终端方法处理上过冲 / 下过冲、用电压调节器将 VCCO 调节到 3.0V、使用外部
总线开关、检查配置方法,以及其他设计考虑事项。

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。

Output Driver Input Buffer


VCCO VCCO

Po
Pi
Power External
Clamp Pin
Diode
DP

No
Ground Ni
Clamp
Diode
DG

GND GND

ug190_6_85_030506

图 6-90: Virtex-5 I/O:三态输出驱动器


箝位二极管在瞬时电压近乎超过 VCCO + 0.5V 和地电压 - 0.5V 时提供保护。二极管两端的
电压与通过二极管的电流呈正比上升。所以,箝位电平不固定,而是因电路板的设计不同
而有所变化。即使箝位二极管导通,仍可能超过绝对最大 I/O 极限值。
IBIS 模型包含 I/O 驱动器和箝位二极管的电压 - 电流特性。
为了验证上过冲和下过冲是否在 I/O 的绝对最大指标之内,Xilinx 建议妥善端接 I/O 并进行
IBIS 仿真。

Virtex-5 用户指南 www.xilinx.com/cn 295


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 6-91: 用 LVDCI_33 标准连接 LVTTL 或 LVCMOS

296 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

在同组中合并 I/O 标准的规则

图 6-92 所示接线图适用于双向总线方案。R0 可能会使信号性能下降。因此,建议用 IBIS


仿真验证 R0 值和性能。

OBUFT_LVDCI_33
R0
Z0

IBUF_LVDCI

Virtex-5
External Device
FPGA
ug190_6_87_030506

图 6-92: 3.3V I/O 配置

当用 LVDCI_33 标准进行设计时:
• 输出驱动强度和斜率不可编程。输出阻抗参考 VRP 和 VRN 电阻器,而输出电流则由
输出阻抗确定。
• 如果仅使用 LVDCI_33 输入,则不必将 VRP 和 VRN 连接到外部参考电阻器。实现的
焊盘报告不记录正在使用的 VRP 和 VRN。仅当组中存在 LVDCI_33 输出时才需要外部
参考电阻器。
• LVDCI_33 仅兼容 LVTTL 和 LVCMOS 标准。
另外,减慢斜率和 / 或降低电流驱动强度可能显著减少上过冲和下过冲。
《Virtex-5 PC 电路板设计指南》包含更多设计信息,可帮助 PCB 设计人员和信号完整性
工程师。

将 VCCO 调节到 3.0V


以下部分讨论管理 LVTTL、LVCMOS33 和 PCI 应用的上过冲和下过冲的其他办法。
当 VCCO 降至 3.0V 时,电源箝位二极管在 3.5V 左右导通,从而对任何高于 3.5V 的过冲在
其达到 4.05V 绝对最大电平之前加以限制。另外,绝对最大值下限不是对应 VCCO = 3.75V
的 -0.3V,而是对应 VCCO = 3.0V 的 -1.05V。在这种情况下,地箝位二极管在下冲达到绝
对最大值下限之前对其进行箝制。
因此,把 VCCO 降至 3.0V 便可满足全部所支持 3.3 V 标准 (包括 LVCMOS_33、LVTTL、
LVDCI_33 和 PCI)的上过冲和下过冲指标。

混合方法
使用 LVDCI_33 标准和将 VCCO 降至 3.0V 都是解决上过冲和下过冲的好办法。也可把两种
办法结合起来。如果 VCCO 已经降至 3.0V,则不必调整参考电阻器 VRP 和 VRN。VRP 和
VRN 的值应始终与电路板迹线阻抗相同。

Virtex-5 用户指南 www.xilinx.com/cn 297


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 对设限。

298 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步开关输出限制

标称 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 µ)。

Virtex-5 用户指南 www.xilinx.com/cn 299


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

300 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步开关输出限制

表 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

Virtex-5 用户指南 www.xilinx.com/cn 301


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

302 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步开关输出限制

表 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

Virtex-5 用户指南 www.xilinx.com/cn 303


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

304 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步开关输出限制

表 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 极限值的关系


Virtex-5 SSO 极限值是针对表 6-40 中的一组标称系统条件规定的。要针对特定用户系统
计算实际极限值,必须使用 “寄生系数降额法 (PFDM)”。用户可以用 PFDM 算出实际与
标称 PCB 电源系统、接收器容性负载以及最大允许地弹或 VCC 反弹之间的差异。“全器件
SSO 计算器”是一种电子表格计算器,可以自动完成这一过程。

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 容限系数”的数字作为单一降额系数,用来
考虑全部三组系统电气参数的综合影响。

Virtex-5 用户指南 www.xilinx.com/cn 305


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

SSO 容限系数是一个 0 到 100% 之间的数字,是以下三个换算系数的乘积:


“第一换算系数”表示 PCB PDS 寄生电感。其确定方法是以用户的 PCB PDS 电感
LPDS_USR 除以标称 PCB PDS 电感。PCB PDS 电感的确定是依据一组电路板几何参数:电
路板厚度、过孔直径、中断迹线的宽度和长度,以及包括插槽在内的所有其他附加结构。
“第二换算系数”表示最大允许电源系统扰动。其确定方法是以标称最大电源系统扰动除
以用户的最大允许电源系统扰动 (VDISTURBANCE_USER)。VDISTURBANCE_USER 的确定方法通
常是取输入下过冲电压和输入逻辑低阈值二者中的较小者。
“第三换算系数”表示 FPGA 所驱动输出的容性负载。此换算系数的依据是在假定的标称
值上每附加一皮法负载电容所产生的瞬时电流影响。在标称值上每附加 1 pF 负载电容,电
源系统扰动就会增大约 9 mV。将增加的电源系统扰动与标称电源系统扰动进行比较,然后
从这种关系中导出换算系数。CLOAD_USER 是用户的平均负载电容。
以下计算示例说明如何计算各换算系数以及 SSO 容限系数。此示例中使用的系统参数是:
LPDS_USER = 1.1 nH
VDISTURBANCE_USER = 550 mV
CLOAD_USER = 22 pF
第一换算系数 (SF1) = LPDS_NOM/LPDS_USER
= 1.0 nH/1.1 nH
= 0.909

第二换算系数 (SF2) = VDISTURBANCE_USER/VDISTURBANCE_NOM


= 550 mV/600 mV
= 0.917
第三换算系数 (SF3)
= VDISTURBANCE_NOM/((CLOAD_USER – CLOAD_NOM) × 9 mV/pF) + VDISTURBANCE_NOM
= 600 mV/((22 pF – 15 pF) × 9 mV/pF) + 600 mV
= 600 mV/663 mV
= 0.905
SSO 容限系数 = SF1 × SF2 × SF3 × 100%
= 0.909 × 0.917 × 0.905 × 100%
= 75.4%

306 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

同步开关输出限制

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 )

以下是示例 SSO 计算。使用的系统参数是:


器件: XC5VLX50 FF1153
组号: 11
I/O 标准,数量:
SSTL2_II,12
LVCMOS25_24 Fast,6
LVCMOS25_6 Fast,19
首先,从表 6-40 中查出各 I/O 标准的 SSO 极限值:

I/O 组 I/O 标准 SSO 极限值 (每组驱动器数)


1 SSTL2_II 40
2 LVCMOS25_24 Fast 30
3 LVCMOS25_6 Fast 40

各 I/O 标准的 SSO 组分计算如下:


SSO 组分 = (驱动器数量)/ (组 SSO 极限值)
SSO 组分 (1) = 12/40 = 30%
SSO 组分 (2) = 6/30 = 20%
SSO 组分 (3) = 19/40 = 48%
最后,计算组 SSO:
组 1 SSO = SSO 组分 (1) + SSO 组分 (2) + SSO 组分 (3)
= 30% + 20% + 48% = 98%

Virtex-5 用户指南 www.xilinx.com/cn 307


UG190 (v3.1) 2007 年 9 月 11 日
R

第 6 章: SelectIO 资源

全器件 SSO 计算器


Virtex-5 SSO 计算器是一个基于 Microsoft Excel 的电子表格,可以自动完成所有 PFDM 和
SSO 计算。Virtex-5 SSO 计算器使用 PCB 几何参数 (电路板厚度、过孔直径以及中断迹
线的宽度和长度)确定电源系统电感。此工具考虑本技术文档中提到的所有板级设计参
数,从而确定所有输入器件中的最低下过冲和逻辑低阈值电压,计算平均输出电容,并且
确定 SSO 容限系数。另外,Virtex-5 SSO 计算器还检查相邻组和封装的 SSO,以确保整
个器件设计不超过 SSO 容限。由于 Virtex-5 器件的列式架构 (对照以前器件的外设 I/O
架构),其各种封装的组号分配不尽相同。因此,对于各 Virtex-5 封装,在 SSO 计算器屏
显界面下端另有一个标签。使用此自定制功能可以布置实际相邻的组 (因为各组在每个特
定封装中是按顺时针显示,即使它们不是按连续方式标记),并且可以为每组 VCCO/GND
对的数目进行硬编码。
可以从 Xilinx 网站下载 Virtex-5 SSO 计算器,其网址是:
http://www.xilinx.com/cn/bvdocs/userguides/ug190_SSO_Calculator.zip

其他 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 分析。

308 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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 模式

Virtex-5 用户指南 www.xilinx.com/cn 309


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 7-1: ILOGIC 模块图

ILOGIC 可支持以下操作:
• 边沿触发 D 型触发器
• IDDR 模式 (OPPOSITE_EDGE、SAME_EDGE 或 SAME_EDGE_PIPELINED)。关于
输入 DDR 的进一步讨论,请见第 311 页的 “输入 DDR 概述 (IDDR)”。
• 电平敏感型锁存器
• 异步 / 组合

所有 ILOGIC 模块寄存器都具有公共时钟使能信号 (CE1),该信号默认为 High 有效。如果


不连接时钟使能引脚,则任何存储元件的该引脚都默认为有效状态。
所有 ILOGIC 模块寄存器都具有公共同步或异步设置和复位 (SR 和 REV)信号。设置 / 复
位输入引脚 SR 强制存储元件进入由 SRVAL 属性指定的状态。当使用 SR 时,另一个输入
REV 强制存储元件进入相反的状态。复位状态优先于设置状态。表 7-1 和表 7-2 所示为
SR 与 REV 配合的操作。

表 7-1: SRVAL = 0 时的真值表 (默认状态)


SR REV 功能
0 0 NOP
0 1 复位
1 0 设置
1 1 复位

310 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

ILOGIC 资源

表 7-2: SRVAL = 1 时的真值表


SR REV 功能
0 0 NOP
0 1 设置
1 0 复位
1 1 复位

对于 ILOGIC 模块中的各存储元件,可分别设置 SRVAL 属性,但不可分别选择同步或异步


设置 / 复位 (SRTYPE)。
以下各部分讨论 ILOGIC 模块中的各种资源。ILOGIC 中各资源之间的所有连接均由 Xilinx
软件管理。

组合输入通路
组合输入通路用来创建输入驱动器与 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 时序图。

Virtex-5 用户指南 www.xilinx.com/cn 311


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

CE

D D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D12A D13A

Q1 D0A D2A D4A D6A D8A D10A D12A

Q2 D1A D3A D5A D7A D9A D11A


ug190_7_02_041206

图 7-2: OPPOSITE_EDGE 模式下的输入 DDR 时序

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

Q1 D0A D2A D4A D6A D8A D10A

Q2 Don't care D1A D3A D5A D7A D9A D11A


ug190_7_03_041206

图 7-3: SAME_EDGE 模式下的输入 DDR 时序

SAME_EDGE_PIPELINED 模式
在 SAME_EDGE_PIPELINED 模式下,数据在同一时钟沿上送至 FPGA 内部资源。
与 SAME_EDGE 模式不同的是,数据对没有一个时钟周期的间隔。但是,需要增加一个时
钟延迟,以消除 SAME_EDGE 模式的间隔效果。图 7-4 所示为使用
SAME_EDGE_PIPELINED 模式时的输入 DDR 时序图。输出对 Q1 和 Q2 同时送至 FPGA
内部资源。

312 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

ILOGIC 资源

CE

D D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D12A D13A

Q1 D0A D2A D4A D6A D8A D10A

Q2 D1A D3A D5A D7A D9A D11A

ug190_7_04_041206

图 7-4: SAME_EDGE_PIPELINED 模式下的输入 DDR 时序

输入 DDR 基元 (IDDR)
图 7-5 所示为 IDDR 基元的框图。表 7-3 列出了 IDDR 端口信号。表 7-4 所示为 IDDR 基
元的各种可用属性和默认值。

D Q1
IDDR Q2
CE
C

R
ug190_7_05_062207

图 7-5: IDDR 基元框图

表 7-3: IDDR 端口信号


端口
功能 描述
名称
Q1 和 Q2 数据输出 IDDR 寄存器输出。
C 时钟输入端口 C 引脚表示时钟输入引脚。
CE 该使能引脚影响 DDR 触发器的数据加载。当置为 Low
时钟使能端口 时,忽略时钟的变化,不向 DDR 触发器中加载新数据。
CE 必须为 High 才能向 DDR 触发器中加载新数据。
D
数据输入 (DDR) 来自 IOB 的 IDDR 寄存器输入。

Virtex-5 用户指南 www.xilinx.com/cn 313


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

表 7-3: IDDR 端口信号 ( 续表 )


端口
功能 描述
名称
R
复位 同步 / 异步复位引脚。复位置为 High 有效。

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

IDDR 的 VHDL 和 Verilog 模板


《库指南》包括用 VHDL 和 Verilog 例化 IDDR 基元的模板。

ILOGIC 时序模型
本部分讲述 ILOGIC 模块中各种资源的相关时序。

314 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

图 7-6: ILOGIC 输入寄存器时序特性

时钟事件 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 所示增加相应延迟。

Virtex-5 用户指南 www.xilinx.com/cn 315


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 7-7: IDDR 模式下的 ILOGIC 时序特性


时钟事件 1
• 在时钟事件 1 之前的时间 TICE1CK 处,输入时钟使能信号在两个 DDR 输入寄存器的
CE1 输入上变为高有效,允许输入数据使用这两个输入寄存器。因为 CE1 和 D 信号是
两个 DDR 寄存器共用,所以在 CLK 的上升沿和下降沿之间翻转这些信号时必须慎重,
并且要满足相对于两个时钟的寄存器建立时间。
• 在时钟事件 1 之前的时间 TIDOCK 处 (CLK 的上升沿),输入信号在两个寄存器的 D
输入上变为高有效;在时钟事件 1 之后的时间 TICKQ 处,该信号反映在输入寄存器 1
的 Q1 输出上。

时钟事件 2
• 在时钟事件 2 之前的时间 TIDOCK 处 (CLK 的下降沿),输入信号在两个寄存器的 D
输入上变为低有效;在时钟事件 2 之后的时间 TICKQ 处,该信号反映在输入寄存器 2
的 Q2 输出上 (在本例中无变化)。

时钟事件 9
• 在时钟事件 9 之前的时间 TISRCK 处,SR 信号 (在本例中配置为同步复位)变为高有
效,以在时钟事件 9 之后的时间 TICKQ 处复位 Q1,并且在时钟事件 10 之后的时间
TICKQ 处复位 Q2。

316 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

表 7-5 所示为 《Virtex-5 数据手册》中 ILOGIC 开关特性的功能和控制信号。


表 7-5: ILOGIC 开关特性
符号 描述
建立 / 保持
TICE1CK/TICKCE1 相对于 CLK 的 CE1 引脚建立 / 保持
TISRCK/TICKSR 相对于 CLK 的 SR/REV 引脚建立 / 保持
TIDOCK/TIOCKD 相对于 CLK 的 D 引脚建立 / 保持
组合
TIDI D 引脚到 O 引脚的传播延迟,无延迟
时序延迟
TIDLO 触发器用作锁存器时 D 引脚到 Q1 引脚的延迟,无延迟
TICKQ CLK 到 Q 输出
TICE1Q 触发器用作锁存器时 CE1 引脚到 Q1 的传播延迟
TRQ SR/REV 引脚到 OQ/TQ 输出

注: DDLY 的时序图和参数与 D 的完全相同。

输入 / 输出延迟单元 (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
用法及设计指导原则”。

Virtex-5 用户指南 www.xilinx.com/cn 317


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

当用作 ODELAY 时,数据从 OLOGIC/OSERDES 输入,然后输出到 OBUF。有一种可用操


作模式:
• 固定延迟输出模式
在固定延迟输出模式下,配置时将延迟值预设置成由属性 ODELAY_VALUE 确定的 tap
数。此值配置后不可更改。在这种模式下使用时,必须例化 IDELAYCTRL 基元。有关
更多详情,请见 “IDELAYCTRL 用法及设计指导原则”。
当用作双向延迟时,将 IOB 配置成双向模式。IODELAY 交替延迟输入通路和输出通路上的
数据。有两种可用操作模式:
• 固定 IDELAY (IDELAY_TYPE = FIXED) 和固定 ODELAY 模式
在这种模式下,IDELAY 和 ODELAY 的值都是在配置时预设置,分别由
IDELAY_VALUE 和 ODELAY_VALUE 属性确定。此值配置后不可更改。在这种模式下
使用时,必须例化 IDELAYCTRL 基元。有关更多详情,请见 “IDELAYCTRL 用法及设
计指导原则”。
• 可变 IDELAY (IDELAY_TYPE = VARIABLE) 和固定 ODELAY 模式
在这种模式下,只有 IDELAY 值可以在配置后通过操控控制信号 CE 和 INC 来动态更
改。IODELAY 基元中 T 引脚的逻辑级别动态确定模块是 IDELAY 模式还是 ODELAY 模
式。在这种模式下使用时,必须例化 IDELAYCTRL 基元。有关更多详情,请见
“IDELAYCTRL 用法及设计指导原则”。
表 7-6 列出了支持的 IODELAY 配置。
表 7-6: 支持的 IODELAY 配置
IODELAY
IODELAY IODELAY
单元中使用 信号源 目标 支持的延迟模式
模式 的方向
的输入引脚
I IDATAIN IBUF ILOGIC/ISERDES/ 内部资源 默认 / 固定 / 可变
IDELAY
DATAIN 内部资源 固定 / 可变
ODELAY O ODATAIN OLOGIC/OSERDES OBUF 固定
I (T = 1 时) IDATAIN IBUF ILOGIC/ISERDES/ 内部资源 固定 / 可变
双向延迟
O (T = 0 时) ODATAIN OLOGIC/OSERDES OBUF 固定

318 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

IODELAY 基元
图 7-8 所示为 IODELAY 基元。

IODELAY
ODATAIN DATAOUT
IDATAIN
T
INC
RST
CE
DATAIN
C
ug190_7_08_041106

图 7-8: IODELAY 基元

表 7-7 列出了 IODELAY 基元中的可用端口。所有端口均为 1 位宽。


表 7-7: IODELAY 基元端口
端口
方向 功能
名称
来自三个数据输入端口 (IDATAIN、ODATAIN、DATAIN)
DATAOUT 输出
之一的延迟数据
IDATAIN 输入 来自 IOB 的 IODELAY 的数据输入
ODATAIN 输入 来自 OSERDES/OLOGIC 的 IODELAY 的数据输入
DATAIN 输入 来自 FPGA 内部资源的 IODELAY 的数据输入
三态输入控制端口。此端口动态确定 IODELAY 是用作
T 输入
IDELAY 还是用作 ODELAY
CE 输入 启用递增 / 递减功能
INC 输入 Tap 延迟的递增 / 递减数
RST 输入 将 IODELAY 单元复位到预设定值
C 输入 可变模式下使用的时钟输入

IODELAY 端口
来自 IOB 的数据输入 - IDATAIN
IDATAIN 输入由相应的 IOB 驱动。在 IDELAY 模式下,可以将数据驱动到
ILOGIC/ISERDES 模块或直接驱动到 FPGA 内部资源中,也可以通过 DATAOUT 端口按照
由 IDELAY_VALUE 设置的延迟将数据同时驱动到这二者。

Virtex-5 用户指南 www.xilinx.com/cn 319


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

来自 FPGA 内部资源的数据输入 - ODATAIN


ODATAIN 输入由 OLOGIC/OSERDES 驱动。在 ODELAY 模式下,ODATAIN 按照由
ODELAY_VALUE 设置的延迟驱动连接到 IOB 的 DATAOUT 端口。

来自 FPGA 内部资源的 IODELAY 的数据输入 - DATAIN


DATAIN 输入直接由 FPGA 内部资源驱动,以提供一条可访问内部资源逻辑的延迟线。数
据按照由 IDELAY_VALUE 设置的延迟通过 DATAOUT 端口返回到内部资源中。DATAIN 可
以在芯片内反转。数据不能驱动到 IOB。

数据输出 - 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 的状态无关。

320 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

当 CE 转为 High 时,在下一个时钟上升沿上开始递增 / 递减操作。当 CE 转为 Low 时,在


下一个时钟上升沿上停止递增 / 递减操作。
IODELAY 是环绕可编程延迟单元。当达到延迟单元的末尾 (tap 63) 时,随后的递增功能就
会返回到 tap 0。同样的规则也适用于递减功能,即低于零的递减会转到 tap 63。表 7-9
概述了递增 / 递减操作。

表 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 的长短序列。

Virtex-5 用户指南 www.xilinx.com/cn 321


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

表 7-10: IODELAY 属性概述 ( 续表 )


属性 值 默认值 描述
REFCLK_FREQUENCY 实数:190.0 到 200 IDELAYCTRL 参考时钟频率 (MHz)。
210.0
DELAY_SRC 字符串:I、O、 DATAIN I:IODELAY 链输入是 IDATAIN
IO 或 DATAIN O:IODELAY 链输入是 ODATAIN
IO:IODELAY 链输入是 IDATAIN 和 ODATAIN
(由 T 控制)
DATAIN:IODELAY 链输入是 DATAIN

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 属性致使时序分析器计入数据或时钟通路中的相应延迟链抖动量。

322 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

IODELAY 时序
表 7-11 所示为 IODELAY 开关特性。

表 7-11: IODELAY 开关特性


符号 描述
TIDELAYRESOLUTION IDELAY 的 tap 分辨率
TICECK/TICKCE 相对于 C 的 CE 引脚建立 / 保持
TIINCCK/TICKINC 相对于 C 的 INC 引脚建立 / 保持
TIRSTCK/TICKRST 相对于 C 的 RST 引脚建立 / 保持

图 7-9 所示为 IDELAY 时序图。假设 IDELAY_VALUE = 0。

1 2 3

RST

CE

INC

O Tap 0 Tap 1

UG190_7_09_082107

图 7-9: IDELAY 时序图

时钟事件 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 引脚上有进一步活动。

Virtex-5 用户指南 www.xilinx.com/cn 323


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 设置,不会扰乱可能正在该
时钟上运行的状态机。

IODELAY 的 VHDL 和 Verilog 实例模板


《库指南》中提供了所有基元和子模块的 VHDL 和 Verilog 实例模板。
每个 VHDL 模板都有一个元件声明部分和一个架构部分。模板的每个部分均应插到 VHDL
设计文件中。架构部分的端口映射应包括设计信号名称。

固定延迟模式
《库指南》包括的模板显示了如何在 tap 设置为 31 的固定延迟模式下例化 IODELAY 模块。
在此模式下操作时,还必须例化 IDELAYCTRL。请见第 330 页的 “IDELAYCTRL 概述”。

可变延迟模式
《库指南》显示了如何在可变延迟模式下例化 IODELAY 模块。在此模式下操作时,还必须
例化 IDELAYCTRL。请见第 330 页的 “IDELAYCTRL 概述”。

IODELAY 转换时间使用模型
当在双向模式下使用 IODELAY 时,需要考虑转换时间。图 7-10 所示为 Virtex-5 IOB 中
IODELAY 的简化框图,该框图适用于一次使用双向 IODELAY 功能。

324 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (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-10: IODELAY 转换与有关通路的模块的基本组成

当 DELAY_SRC = IO 时,MUXE 和 MUXF 在 IODELAY 模块内动态选择 ODATAIN 或


IDATAIN 以及 ODELAY_VALUE 或 IDELAY_VALUE。
以下 Verilog 代码段用于演示双向 IODELAY:
IDDR #(
.DDR_CLK_EDGE ("SAME_EDGE"),
.INIT_Q1 (1'b0),
.INIT_Q2 (1'b0),
.SRTYPE ("SYNC")
)IDDR_INST (
.C(clk),
.CE(1'b1),
.D(DATAOUT),
.R(1'b0),
.S(1'b0),
.Q1(Q1),
.Q2(Q2)
);
IOBUF #(
.IOSTANDARD ("LVCMOS25")
)IOBUF_INST (
.I(DATAOUT),
.T(TSCONTROL),
.O(IDATAIN),
.IO(IOPAD_DATA)
);

Virtex-5 用户指南 www.xilinx.com/cn 325


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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()
);

326 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

对于给定 I/O 引脚,使用双向 IODELAY 功能的情形主要有两种。第一种使用双向


IODELAY 的情形是 I/O 从输出切换为输入的过程。图 7-11 所示为 IOB 和 IODELAY 正在
按照来自 ODDR 触发器的 TSCONTROL 网所设置向输入模式转移。此过程控制为 IOB 输
入通路和 IDELAY_VALUE 分别选择多路器 E 和 F 的操作。另外,OBUF 是三态。

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-11: 禁用三态时输入模式下的 IODELAY 和 IOB

Virtex-5 用户指南 www.xilinx.com/cn 327


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

图 7-12 中的时序图所示为 I/O 使用三态控制从输出切换到输入时的相关信号时序。

ODDR CLK

TOCKQ

TSCONTROL
TIOTP

TIODDO_T
ODDR CLK to 3-state
deassertion time.

Previous PAD New PAD


PAD
Output Value Input Value

ODDR CLK to
IDELAY ready

IDDR CLK

Pad to IDDR Setup Time is:


TIOPI + TIODDO_IDATAIN + TIDOCKD
(where TIODDO_IDATAIN is a
function of IDELAY_VALUE)

IODELAY_03_082107

图 7-12: 当 IOB 从输出切换到输入时用来检查 IODELAY 时序的相关时序信号


OBUFT 引脚由来自 ODDR 触发器的 TSCONTROL 信号的传播与状态控制。在 OBUF 和
IDDR 触发器上,从 PAD 接收的三态控制数据相互并行;根据 IDELAY_VALUE 设置,
IDDR 触发器输入上对应时钟沿的最终值在三态控制驱动焊盘之前或之后有效。在三态控制
传播到 PAD 并且 IODELAY 已切换到输入之后,IDDR 建立时间是基于 IDELAY_VALUE 的
时序的唯一确定因素,也是 Xilinx 速度指标中所定义和 ISE 工具中所显示的其他时序参数
的唯一确定因素。

328 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

第二种使用双向 IODELAY 的情形是 I/O 从输入切换为输出的过程。图 7-13 所示为 IOB 和


IODELAY 正在按照来自 ODDR T 触发器的三态 TSCONTROL 信号所设置向输出模式转
移。此过程控制为输出通路和 ODELAY_VALUE 分别选择多路器 E 和 F 的操作。另外,
OBUF 变为非三态并开始驱动 PAD。

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-13: 启用三态时输出模式下的 IODELAY 和 IOB

Virtex-5 用户指南 www.xilinx.com/cn 329


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

图 7-14 中的时序图所示为 I/O 使用三态控制从输入切换到输出时的相关信号时序。

Clock-to-Out with
ODELAY_VALUE = 0

Clock-to-Out with
ODELAY_VALUE = 63
TOCKQ + TIODDO_ODATAIN
ODDR CLK

Clock to DATAOUT is variable


DATAOUT based on internal timing the
ODELAY_VALUE (0-63)

TIOTP
TSCONTROL TOCKQ

Previous PAD
PAD
input value

Clock to PAD being driven or


TOCKQ + TIODDO_ODATAIN + TIOOP IODELAY_05_082107

图 7-14: 当 IOB 从输入切换到输出时用来检查 IODELAY 时序的相关时序信号


在 IOB 和 ODDR 触发器的 OBUF 上,对 PAD 时序的三态控制相互并行;根据
ODELAY_VALUE 设置,ODDR CLK 引脚上对应时钟沿的最终输出值在三态控制驱动焊盘
之前或之后有效。在三态控制传播到 PAD 并且 IODELAY 切换之后,通过 IODELAY 单元
(具有 ODELAY_VALUE 设置)的 ODDR 触发器的时钟到输出时间是对焊盘的时钟到输出
时间的唯一确定因素。

IDELAYCTRL 概述
如果用设置为 FIXED 或 VARIABLE 的 IOBDELAY_TYPE 属性例化 IODELAY 或 ISERDES
基元,则必须在代码中例化 IDELAYCTRL 模块。IDELAYCTRL 模块在其区域内连续标定各
延迟单元 (IODELAY) (见第 333 页的图 7-17),以减少随工艺、电压和温度变化的影响。
IDELAYCTRL 模块使用用户提供的 REFCLK 标定 IODELAY。

330 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (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 之间的时序关系。

Virtex-5 用户指南 www.xilinx.com/cn 331


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

IDELAYCTRL 时序
表 7-12 所示为 IDELAYCTRL 开关特性。

表 7-12: IDELAYCTRL 开关特性


符号 描述
FIDELAYCTRL_REF REFCLK 频率
IDELAYCTRL_REF_PRECISION REFCLK 精度
TIDELAYCTRLCO_RDY IDELAYCTRL 从复位 / 启动到就绪的时间

如图 7-16 所示,Virtex-5 RST 是边沿触发信号。

REFCLK

RST

TIDELAYCTRLCO_RDY

RDY
ug190_7_11_041206

图 7-16: RST 与 RDY 之间的时序关系

IDELAYCTRL 位置
每个时钟区域的每个 I/O 列中都有 IDELAYCTRL 模块。一个 IDELAYCTRL 模块标定其时钟
区域内的所有 IDELAY 模块。有关时钟区域的定义,请见第 1 章中的 “全局和区域时
钟”。
图 7-17 所示为各 IDELAYCTRL 模块的相对位置。

332 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

Left I/O Center I/O Right I/O


Column Column Column
CMT

1 Clock Region

IDELAYCTRL
Configuration

CMT

ug190_7_12_041206

图 7-17: 各 IDELAYCTRL 模块的相对位置

IDELAYCTRL 用法及设计指导原则
本部分讲述 Virtex-5 IDELAYCTRL 模块的使用、设计指导原则和推荐用法。

例化无 LOC 约束的 IDELAYCTRL


当例化无 LOC 约束的 IDELAYCTRL 时,用户在 HDL 设计代码中必须只例化一个
IDELAYCTRL 实例。实现工具将 IDELAYCTRL 实例自动复制到整个器件,甚至复制到未使
用延迟单元的时钟区域中。这样做资源占用率较高,在每个时钟区域内都要使用一个全局
时钟资源,并且使用布线资源较多,因此功耗较大。已例化 IDELAYCTRL 实例的 RST 和
REFCLK 输入端口和所复制 IDELAYCTRL 实例的对应输入端口相连接。
有两个特例:
1. 当忽略 RDY 端口时,所有被复制的 IDELAYCTRL 实例的 RDY 信号均不连接。
对于例化无 LOC 约束的 IDELAYCTRL 基元并且不连接 RDY 输出端口的情况,《库指南》
中提供了 VHDL 和 Verilog 使用模型。
图 7-18 所示为例化 IDELAYCTRL 组件后形成的电路。

Virtex-5 用户指南 www.xilinx.com/cn 333


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

Instantiated by user

REFCLK REFCLK RDY


IDELAYCTRL
RST RST

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

图 7-18: 例化无 LOC 约束的 IDELAYCTRL - 不连接 RDY


2. 当连接 RDY 端口时,例化一个宽度等于时钟区域数的与门,并且将例化和复制的
IDELAYCTRL 实例的 RDY 输出端口连接到与门的输入。工具将连接到已例化
IDELAYCTRL 实例的 RDY 端口的信号名称赋予与门的输出。
对于例化无 LOC 约束的 IDELAYCTRL 基元并且连接 RDY 端口的情况,《库指南》中提供
了 VHDL 和 Verilog 使用模型。
图 7-19 所示为例化 IDELAYCTRL 组件后形成的电路。

334 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

Instantiated by user

REFCLK REFCLK RDY


IDELAYCTRL
RST RST

REFCLK RDY RDY


IDELAYCTRL
RST

. . Replicated for
.
. . all IDELAYCTRL .
. . sites .

REFCLK RDY
IDELAYCTRL Auto-generated by
RST
mapper tool

ug190_7_14_041306

图 7-19: 例化无 LOC 约束的 IDELAYCTRL - 连接 RDY


例化有位置 (LOC) 约束的 IDELAYCTRL
使用 IDELAYCTRL 模块的最有效方法是定义并锁定设计中所用每个 IDELAYCTRL 实例的
位置。具体做法是例化有位置 (LOC) 约束的 IDELAYCTRL 实例。用户必须在用延迟单元时
定义并锁定所有 ISERDES 和 IDELAY 组件的位置。(IOBDELAY_TYPE 属性设置为 FIXED
或 VARIABLE。)完成后,可以选择 IDELAYCTRL 的位置并指定 LOC 约束。Xilinx 强烈建
议使用有 LOC 约束的 IDELAYCTRL。

位置约束
每个 IDELAYCTRL 模块都有 XY 位置坐标 (X:行,Y:列)。为了约束位置,
IDELAYCTRL 实例可以附带 LOC 属性。IDELAYCTRL 位置坐标的命名规则与用来命名
CLB 位置的规则不同。这样做便于在各阵列之间传递 LOC 属性。
为 IDELAYCTRL 实例附加 LOC 属性有两种方法。
1. 在 UCF 文件中插入 LOC 约束
2. 在 HDL 设计文件中直接嵌入 LOC 约束

在 UCF 文件中插入 LOC 约束


下列语法用于在 UCF 文件中插入 LOC 约束。
INST "instance_name" LOC=IDELAYCTRL_X#Y#;

在 HDL 设计文件中直接嵌入 LOC 约束


下列语法用于在 HDL 设计文件中嵌入 LOC 约束。
// synthesis attribute loc of instance_name is "IDELAYCTRL_X#Y0#";

Virtex-5 用户指南 www.xilinx.com/cn 335


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

在 VHDL 代码中,用 VHDL 属性描述 LOC 约束。约束必须用下列语法声明后才能使用:


attribute loc : string;

声明之后,LOC 约束可以指定为:
attribute loc of instance_name:label is "IDELAYCTRL_X#Y0#";

《库指南》包括用于例化有 LOC 约束的 IDELAYCTRL 基元的 VHDL 和 Verilog 使用模型模


板。
图 7-20 所示为例化 IDELAYCTRL 组件后形成的电路。

REFCLK REFCLK RDY rdy_1


IDELAYCTRL_1
rst_1 RST

REFCLK RDY rdy_2


IDELAYCTRL_2
rst_2 RST

. . .
. . .
. . .

REFCLK RDY rdy_n


IDELAYCTRL_n
rst_n RST

ug190_7_15_041306

图 7-20: 例化有 LOC 约束的 IDELAYCTRL


例化有 LOC 约束和无 LOC 约束的 IDELAYCTRL
在有些情况下,用户例化有 LOC 约束的 IDELAYCTRL 模块,但还例化无 LOC 约束的
IDELAYCTRL 模块。如果用无位置约束的 IDELAYCTRL 模块例化 IP 核,但还需要为设计
的另一部分例化无 LOC 约束的 IDELAYCTRL 模块,则实现工具会执行以下各项:
• 按 “例化有位置 (LOC) 约束的 IDELAYCTRL”部分所述例化 LOC IDELAYCTRL 实
例。
• 复制无位置约束的 IDELAYCTRL 实例,以便用一个 IDELAYCTRL 实例填充每个不具
备有位置约束 IDELAYCTRL 实例的时钟区域。
• 将无位置约束 IDELAYCTRL 实例的 RST 和 REFCLK 输入端口和所复制 IDELAYCTRL
实例的对应输入端口相连接。
• 如果忽略无位置约束 IDELAYCTRL 实例的 RDY 端口,则同时忽略所复制
IDELAYCTRL 实例的所有 RDY 信号。
• 如果连接无位置约束 IDELAYCTRL 实例的 RDY 端口,则将无位置约束实例的 RDY 端
口和所复制实例的 RDY 端口连接到一个自动生成的与门。实现工具将连接到无位置约
束实例的 RDY 端口的信号之名称赋予与门的输出。
• 有位置约束实例的所有端口 (RST、REFCLK 和 RDY)均相互独立并且独立于复制的
实例。

336 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入 / 输出延迟单元 (IODELAY)

《库指南》中提供了用于例化混合用法的 VHDL 和 Verilog 使用模型。此例所示为用户例化


无位置约束的 IDELAYCTRL 实例并连接了 RDY 信号。此讨论也适用于忽略 RDY 信号的情
况。
图 7-21 所示为例化 IDELAYCTRL 组件后形成的电路。

Instantiated with
LOC Constraint

REFCLK REFCLK RDY rdy_1


IDELAYCTRL_1
rst_1 RST

REFCLK RDY rdy_2


IDELAYCTRL_2
rst_2 RST

. . .
. . .
. . .

REFCLK RDY rdy_n


IDELAYCTRL_n
rst_n RST

Instantiated without
LOC Constraint

REFCLK RDY
IDELAYCTRL_noloc
RST_NOLOC RST

REFCLK RDY RDY_NOLOC


IDELAYCTRL_noloc
RST

. . Replicated for .
. . all IDELAYCTRL .
. . sites .

REFCLK RDY
IDELAYCTRL_noloc
RST Auto-generated
by mapper tool

ug190_7_16_041306

图 7-21: IDELAYCTRL 单元的混合例化

Virtex-5 用户指南 www.xilinx.com/cn 337


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

例化多个无 LOC 约束的 IDELAYCTRL


禁止例化多个无 LOC 属性的 IDELAYCTRL。如果发生这种情况,实现工具就会报错。

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

图 7-22: OLOGIC 模块图


文档的本部分讨论使用 OLOGIC 资源时的各种可用特性。各 OLOGIC 资源之间的所有连
接均由 Xilinx 软件管理。

组合输出数据和三态控制通路
组合输出通路用于创建从 FPGA 内部资源到输出驱动器或输出驱动器控制的直接连接。这
些通路用于以下情况:
1. FPGA 架构中的逻辑资源与输出数据或三态控制之间存在直接 (不寄存)连接。
2. “将 I/O 寄存器 / 锁存器合并到 IOB 中”设置为 OFF。

338 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

D1 D1A D1B D1C D1D

D2 D2A D2B D2C D2D

OQ D1A D2A D1B D2B D1C D2C D1D


ug190_7_18_041206

图 7-23: OPPOSITE_EDGE 模式下的输出 DDR 时序

SAME_EDGE 模式
在 SAME_EDGE 模式下,数据可以在同一时钟沿上送至 IOB。与使用 CLB 寄存器相比,
在同一时钟沿上将数据送至 IOB 可以避免违反建立时间,并且使用户能够以尽量短的寄存

Virtex-5 用户指南 www.xilinx.com/cn 339


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

器到寄存器延迟实现较高的 DDR 频率。图 7-24 所示为使用 SAME_EDGE 模式时输出


DDR 的时序图。

CLK

OCE

D1 D1A D1B D1C D1D

D2 D2A D2B D2C D2D

OQ D1A D2A D1B D2B D1C D2C D1D


ug190_7_19_041206

图 7-24: SAME_EDGE 模式下的输出 DDR 时序

随路时钟
输出 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

图 7-25: ODDR 基元框图

表 7-13: ODDR 端口信号


端口
功能 描述
名称
Q 数据输出 (DDR) ODDR 寄存器输出。
C 时钟输入端口 CLK 引脚表示时钟输入引脚。

340 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

OLOGIC 资源

表 7-13: ODDR 端口信号 ( 续表 )


端口
功能 描述
名称
CE 时钟使能端口 CE 表示时钟使能引脚。当置为 Low 有效时,此端口关
闭端口 Q 上的输出时钟。
D1 和 D2 数据输入 ODDR 寄存器输入。
R 复位 同步 / 异步复位引脚。复位置为 High 有效。
S 设置 同步 / 异步设置引脚。设置置为 High 有效。

表 7-14: ODDR 属性
属性名称 描述 可能值
DDR_CLK_EDGE 设置相对于时钟沿的 ODDR 操作模式 OPPOSITE_EDGE (默
认)、SAME_EDGE
INIT 设置 Q 端口的初始值 0 (默认)、1
SRTYPE 相对于时钟 (C) 的设置 / 复位类型 ASYNC、SYNC (默认)

ODDR 的 VHDL 和 Verilog 模板


《库指南》包括用 VHDL 和 Verilog 例化 ODDR 模块的模板。

OLOGIC 时序模型
本部分讨论与 OLOGIC 模块相关的所有时序模型。表 7-15 所示为 《Virtex-5 数据手册》
中 OLOGIC 开关特性的功能和控制信号。

表 7-15: OLOGIC 开关特性


符号 描述
建立 / 保持
TODCK/TOCKD 相对于 CLK 的 D1/D2 引脚建立 / 保持
TOOCECK/TOCKOCE 相对于 CLK 的 OCE 引脚建立 / 保持
TOSRCK/TOCKSR 相对于 CLK 的 SR/REV 引脚建立 / 保持
TOTCK/TOCKT 相对于 CLK 的 T1/T2 引脚建立 / 保持
TOTCECK/TOCKTCE 相对于 CLK 的 TCE 引脚建立 / 保持
时钟到输出
TOCKQ CLK 到 OQ/TQ 输出
TRQ SR/REV 引脚到 OQ/TQ 输出

Virtex-5 用户指南 www.xilinx.com/cn 341


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

时序特性
图 7-26 所示为 OLOGIC 输出寄存器时序。

1 2 3 4 5

CLK

TODCK
D1

TOOCECK
OCE

TOSRCK
SR

TOCKQ
OQ

ug190_7_21_041206

图 7-26: OLOGIC 输出寄存器时序特性

时钟事件 1
• 在时钟事件 1 之前的时间 TOOCECK 处,输出时钟使能信号在输出寄存器的 OCE 输入
上变为高有效,允许输入数据使用输出寄存器。
• 在时钟事件 1 之前的时间 TODCK 处,输出信号在输出寄存器的 D1 输入上变为高有效
;在时钟事件 1 之后的时间 TOCKQ 处,该信号反映在 OQ 输出上。

时钟事件 4
在时钟事件 4 之前的时间 TOSRCK 处,SR 信号 (在本例中配置为同步复位)变为高有效,
以复位输出寄存器;在时钟事件 4 之后的时间 TRQ 处,该信号反映在 OQ 输出上。

342 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

OLOGIC 资源

图 7-27 所示为 OLOGIC ODDR 寄存器时序。

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

图 7-27: OLOGIC ODDR 寄存器时序特性

时钟事件 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 输出上无变化)。

Virtex-5 用户指南 www.xilinx.com/cn 343


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

图 7-28 所示为 OLOGIC 三态寄存器时序。

1 2 3 4 5

CLK
TOTCK

T1

TOTCECK

TCE

TOSRCK
SR
TOCKQ TRQ

TQ

UG190_7_23_041106

图 7-28: OLOGIC 三态寄存器时序特性

时钟事件 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 所示增加相应延迟。

344 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

图 7-29: OLOGIC ODDR 三态寄存器时序特性


时钟事件 1
• 在时钟事件 1 之前的时间 TOTCECK 处,三态时钟使能信号在三态 ODDR 寄存器的
TCE 输入上变为高有效,允许输入数据使用这些寄存器。在 CLK 的上升沿和下降沿之
间翻转三态 ODDR 寄存器的 TCE 信号时必须慎重,并且要满足相对于两个时钟沿的寄
存器建立时间。
• 在时钟事件 1 之前的时间 TOTCK 处 (CLK 的上升沿),三态信号 T1 在三态寄存器的
T1 输入上变为高有效;在时钟事件 1 之后的时间 TOCKQ 处,该信号反映在 TQ 输出
上。

时钟事件 2
• 在时钟事件 2 之前的时间 TOTCK 处 (CLK 的下降沿),三态信号 T2 在三态寄存器的
T2 输入上变为高有效;在时钟事件 2 之后的时间 TOCKQ 处,该信号反映在 TQ 输出上
(在本例中 TQ 输出上无变化)。

时钟事件 9
• 在时钟事件 9 之前的时间 TOSRCK 处 (CLK 的上升沿),SR 信号 (在本例中配置为
同步复位)变为高有效,以复位三态寄存器;在时钟事件 9 之后的时间 TRQ 处,该信
号反映在 TQ 输出上(在本例中 TQ 输出上无变化),以复位三态寄存器;在时钟事件
10 之后的时间 TRQ 处,该信号反映在 TQ 输出上 (在本例中 TQ 输出上无变化)。

Virtex-5 用户指南 www.xilinx.com/cn 345


UG190 (v3.1) 2007 年 9 月 11 日
R

第 7 章: SelectIO 逻辑资源

346 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

第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 跨时钟域的功能。此功能可以提高性能和简化实现。
• 对网络接口的专门支持

Virtex-5 用户指南 www.xilinx.com/cn 347


UG190 (v3.1) 2007 年 9 月 11 日
R

第 8 章: 高级 SelectIO 逻辑资源

图 8-1 所示为 ISERDES 的框图,重点显示该模块的所有主要元件和功能。

CLKDIV

Serial to Parallel SHIFTIN1/2


CE1 Converter
CE
CE2 Module SHIFTOUT1/2

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 基元

348 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入串并转换逻辑资源 (ISERDES)

表 8-1 列出了 ISERDES 基元中的可用端口。


表 8-1: ISERDES 端口列表和定义
端口名称 类型 宽度 描述
Q1 - Q6 输出 1 (每端口) 寄存输出。请见 “寄存输出 - Q1 到 Q6”。
O 输出 1 组合输出。
SHIFTOUT1 输出 1 数据宽度扩展的进位输出。连接到从 IOB 的 SHIFTIN1。请见 “ISERDES 宽
度扩展”。
SHIFTOUT2 输出 1 数据宽度扩展的进位输出。连接到从 IOB 的 SHIFTIN2。请见 “ISERDES 宽
度扩展”。
BITSLIP 输入 1 启动 Bitslip 操作。请见 “Bitslip 操作 - BITSLIP”。
CE1 输入 1 (每端口) 时钟使能输入。请见 “时钟使能输入 - CE1 和 CE2”。
CE2
CLK 输入 1 高速时钟输入。对串行输入数据流进行时钟控制。请见 “高速时钟输入 -
CLK”。
CLKDIV 输入 1 分频时钟输入。对延迟单元、解串数据、Bitslip 子模块和 CE 单元进行时钟控
制。请见 “分频时钟输入 - CLKDIV”。
D 输入 1 来自 IOB 的串行输入数据。请见 “来自 IOB 的串行输入数据 - D”。
OCLK 输入 1 存储器应用的高速时钟输入。请见 “选通存储器接口的高速时钟 - OCLK”。
SHIFTIN1 输入 1 数据宽度扩展的进位输入。连接到主 IOB 的 SHIFTOUT1。请见 “ISERDES
宽度扩展”。
SHIFTIN2 输入 1 数据宽度扩展的进位输入。连接到主 IOB 的 SHIFTOUT2。请见 “ISERDES
宽度扩展”。
SR 输入 1 设置 / 复位。在 ISERDES 模块中,此引脚仅用作异步复位。

ISERDES 端口
寄存输出 - Q1 到 Q6
输出端口 Q1 到 Q6 是 ISERDES 模块的寄存输出。一个 ISERDES 模块最多可以支持六个
数据位 (即 1:6 解串)。可以支持大于六的位宽 (最多 10 位)。请见 “ISERDES 宽度扩
展”。接收到的第一个数据位出现在最高阶 Q 输出上。

Bitslip 操作 - BITSLIP
当置为有效 (高有效)时,BITSLIP 引脚执行与 CLKDIV 同步的 Bitslip 操作。此后,如同
桶式移位器操作,每当启动 Bitslip 操作,Q1 到 Q6 输出端口上的数据就会移动一个位置
(DDR 的操作与 SDR 的不同)。有关更多详情,请见 “BITSLIP 子模块”。

Virtex-5 用户指南 www.xilinx.com/cn 349


UG190 (v3.1) 2007 年 9 月 11 日
R

第 8 章: 高级 SelectIO 逻辑资源

时钟使能输入 - CE1 和 CE2


每个 ISERDES 模块包含一个时钟使能模块。此时钟使能模块用作 2:1 串并转换器,由
CLKDIV 进行时钟控制。当 ISERDES 配置成 DDR 模式的 1:4 解串时,双向存储器接口需
要特别的时钟使能模块。当属性 NUM_CE = 2 时,启用时钟使能模块,CE1 和 CE2 端口
均可用。当 NUM_CE = 1 时,只能使用 CE1,将其作为常规时钟使能端口。
当 CE1 和 / 或 CE2 用作时钟禁用端口时,并非冻结 ISERDES 链中的所有数据。只有该链
中的前四个触发器连接到 CE1 和 CE2。一旦 CE1 和 CE2 设置为 Low,这些寄存器中的数
据就会填充该链的其余部分。在 DDR 模式下,读入 ISERDES 模块的后两位会传输到奇偶
输出。

高速时钟输入 - 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

350 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入串并转换逻辑资源 (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 宽度扩展”。

Virtex-5 用户指南 www.xilinx.com/cn 351


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 8-3: ISERDES 宽度扩展的框图

扩展串并转换器位宽的指导原则
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。

352 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入串并转换逻辑资源 (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: ISERDES 开关特性


符号 描述
控制线的建立 / 保持
TISCCK_BITSLIP/ TISCKC_BITSLIP 相对于 CLKDIV 的 BITSLIP 引脚建立 / 保持
TISCCK_CE /TISCKC_CE 相对于 CLK 的 CE 引脚建立 / 保持 (对于 CE1)
TISCCK_CE /TISCKC_CE 相对于 CLKDIV 的 CE 引脚建立 / 保持 (对于 CE2)
数据线的建立 / 保持
TISDCK_D / TISCKD_D 相对于 CLK 的 D 引脚建立 / 保持
相对于 CLK 的 D 引脚建立 / 保持
相对于 CLK 的 D 引脚建立 / 保持
TISDCK_DDR / TISCKD_DDR DDR 模式下,相对于 CLK 的 D 引脚建立 / 保持
DDR 模式下,相对于 CLK 的 D 引脚建立 / 保持
DDR 模式下,相对于 CLK 的 D 引脚建立 / 保持
时序延迟
TISCKO_Q Q 引脚上的 CLKDIV 到输出

时序特性
在图 8-4 和图 8-5 所示时序图中,时序参数名称因模式不同 (SDR/DDR) 而变化,但不会
因总线输入宽度不同而变化,包括当两个 ISERDES 级联形成 10 个数据位时。在 DDR 模
式下,数据输入 (D) 在每个 CLK 沿 (上升和下降)上切换。

Virtex-5 用户指南 www.xilinx.com/cn 353


UG190 (v3.1) 2007 年 9 月 11 日
R

第 8 章: 高级 SelectIO 逻辑资源

图 8-4 所示为向 ISERDES 输入数据时的 ISERDES 时序图。

1 2
CLK

TISCCK_CE

CE
TISDCK_D

ug190_8_04_041206

图 8-4: ISERDES 输入数据时序图

时钟事件 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

图 8-5: ISERDES 输出数据时序图

时钟事件 1
• 在时钟事件 1 之后的时间 TISCKO_Q 处,数据出现在 Q1 到 Q6 输出引脚上。

时钟事件 2
• 在时钟事件 2 的时间处,复位信号为高有效 (异步复位)。
• 在时钟事件 2 之后,Q1 到 Q6 输出引脚异步复位到零。

8:1 SDR ISERDES


图 8-6 所示为 8:1 SDR ISERDES 的 ISERDES 时序图。由于 ISERDES 的性质,数据需要
多个 CLKDIV 周期才能出现。周期数取决于 INTERFACE_TYPE 属性。时序参数名称因模
式不同 (SDR/DDR) 而不同,但不会因总线输入宽度不同而变化。除了数据输入 (D) 在每个
CLK 沿 (上升和下降)上切换外,同样的示例也适用于 DDR 模式。接收到的第一个数据
位出现在最高阶输出上。

354 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入串并转换逻辑资源 (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

图 8-6: 8:1 SDR ISERDES

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 输出异步变为零。

ISERDES 的 VHDL 和 Verilog 实例模板


《库指南》中提供了所有基元和子模块的 VHDL 和 Verilog 实例模板。
每个 VHDL 模板具有一个元件声明部分和一个架构部分。
模板的每个部分均应插到 VHDL 设计文件中。架构部分的端口映射应包括设计信号名称。

Virtex-5 用户指南 www.xilinx.com/cn 355


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 操作时
还原到初始模式。这里假定串行数据是八位重复模式。

Bitslip Operation in SDR Mode Bitslip Operation in DDR Mode

Bitslip Output Bitslip Output


Operations Pattern (8:1) Operations Pattern (8:1)
Executed Executed
Initial 10010011 Initial 00100111
1 00100111 1 10010011
2 01001110 2 10011100
3 10011100 3 01001110
4 00111001 4 01110010
5 01110010 5 00111001
6 11100100 6 11001001
7 11001001 7 11100100
ug190_8_16_041206

图 8-7: Bitslip 操作示例


图 8-8 所示为配置成 1:8 SDR 模式的 ISERDES,其 Bitslip_ENABLE 设置为 TRUE。两个
ISERDES 模块是八位数据宽度的主从配置。

356 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输入串并转换逻辑资源 (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

图 8-8: 1:8 SDR 模式 Bitslip 配置的电路图

使用 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 的相应
重新对齐方式。

Virtex-5 用户指南 www.xilinx.com/cn 357


UG190 (v3.1) 2007 年 9 月 11 日
R

第 8 章: 高级 SelectIO 逻辑资源

1 2 3 4 5

D C D A B C D A B C D A B C D

CLK

BITSLIP Bitslip1 Bitslip2

CLKDIV

Q4–Q1 CDAB BCDA ABCD

ug190_8_09_071707

图 8-9: Bitslip 时序图


时钟事件 1
第一个完整的字 CDAB 已经被采样到 ISERDES 的输入侧寄存器。Bitslip 引脚未置为有效
;该字不经任何重新对齐传播到 ISERDES。

时钟事件 2
第二个字 CDAB 已经被采样到 ISERDES 的输入侧寄存器。Bitslip 引脚置为有效,使 Bitslip
控制器在内部将所有数据位右移一位。

时钟事件 3
第三个字 CDAB 已经被采样到 ISERDES 的输入侧寄存器。Bitslip 引脚再次置为有效,使
Bitslip 控制器在内部将所有数据位左移三位。
同样在此 CLKDIV 沿上,第一个字的样本不经任何重新对齐送至 Q1-Q4。图 8-10 中 A 项
所示为在此周期中出现在 Q1-Q4 输出上的输入流中的实际数据位。

A Q1–Q4 During Clock Event 3


(No Bitslip) C D A B C D A B C D A B C D

Q1–Q4 During Clock Event 4


B C D A B C D A B C D A B C D
(1st Bitslip, Rotate 1 Bit to Right)

Q1–Q4 During Clock Event 5


C C D A B C D A B C D A B C D
(2nd Bitslip, Rotate 3 Bits to Left)

ug190_c8_18_071707

图 8-10: 图 8-9 中数据输入流 (D) 中的数据位

358 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输出并串转换逻辑资源 (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 之间的关系。

Virtex-5 用户指南 www.xilinx.com/cn 359


UG190 (v3.1) 2007 年 9 月 11 日
R

第 8 章: 高级 SelectIO 逻辑资源

表 8-5: 数据并串转换器的 CLK/CLKDIV 关系


SDR 模式下的输入数据 DDR 模式下的输入数据
CLK CLKDIV
宽度输出 宽度输出
2 4 2X X
3 6 3X X
4 8 4X X
5 10 5X X
6 - 6X X
7 - 7X X
8 - 8X X

三态并串转换
除了数据的并串转换,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 基元

360 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输出并串转换逻辑资源 (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 端口所连接时钟的分频
版本。

Virtex-5 用户指南 www.xilinx.com/cn 361


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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 基元的各种可用属性。该表包括默认值。

表 8-7: OSERDES 属性概述


OSERDES 属性 描述 值 默认值
DATA_RATE_OQ 定义数据 (OQ) 是在相对于 CLK 的每个时钟 字符串:SDR 或 DDR DDR
边沿还是时钟上升沿上变化。
DATA_RATE_TQ 定义三态 (TQ) 是在相对于时钟的每个时钟沿 字符串:BUF、SDR 或 DDR DDR
还是每个上升时钟沿上变化,或者是设置成
缓冲器配置。
DATA_WIDTH 定义并串数据转换器的宽度。此值还取决于 整数:2、3、4、5、6、7、8 4
DATA_RATE_OQ 的值。 或 10。如果 DATA_RATE_OQ
= DDR,则此值限制为 4、6、8
或 10。如果 DATA_RATE_OQ
= SDR,则此值限制为 2、3、
4、5、6、7 或 8。
SERDES_MODE 当使用宽度扩展时,定义 OSERDES 模块是 字符串:MASTER 或 SLAVE MASTER
主模块还是从模块。
TRISTATE_WIDTH 定义并串三态转换器的宽度。 整数:1 或 4 4
如果 ATA_RATE_TQ = DDR,
则此值限制为 4。如果
ATA_RATE_TQ = SDR 或 BUF,
则此值限制为 1。

362 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输出并串转换逻辑资源 (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。

Virtex-5 用户指南 www.xilinx.com/cn 363


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 8-13: OSERDES 宽度扩展的模块图

表 8-8 列出了 SDR 和 DDR 模式的可用数据宽度。


表 8-8: SDR/DDR 模式下 OSERDES 的可用数据宽度
SDR 数据宽度 2、3、4、5、6、7、8
DDR 数据宽度 4、6、8、10

扩展并串转换器位宽的指导原则
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 属性”。

364 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输出并串转换逻辑资源 (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 周期

Virtex-5 用户指南 www.xilinx.com/cn 365


UG190 (v3.1) 2007 年 9 月 11 日
R

第 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

图 8-14: OSERDES 的 2:1 SDR 数据串行化时序图

366 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

输出并串转换逻辑资源 (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

D1 D1A D1B D1C

D6 D6A D6B D6C

OQ --- D1A D2A D3A D4A D5A D6A D1B D2B D3B D4B

ug190_8_14_041206

图 8-15: SDR 6:1 OSERDES 操作示例

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-16: DDR 6:1 OSERDES 操作示例

Virtex-5 用户指南 www.xilinx.com/cn 367


UG190 (v3.1) 2007 年 9 月 11 日
R

第 8 章: 高级 SelectIO 逻辑资源

图 8-17 所示为 2:1 SDR 三态控制串行化的时序。时序参数名称和行为不随总线宽度不同


而改变,包括两个 OSERDES 级联时。除了 OQ 在每个 CLK 沿 (上升和下降)上切换外,
同样的示例也适用于 DDR 模式。

1 2 3
CLK

CLKDIV

TOSCCK_TCE

TCE

SR
TOSDCK_T
T1 - T2

TOSCKO_TQ TOSCO_TQ

TQ

ug190_8_16_041206

图 8-17: OSERDES 的 2:1 SDR 三态控制串行化时序图

时钟事件 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 输出被异步复位到零。

OSERDES 的 VHDL 和 Verilog 实例模板


《库指南》包括 OSERDES 模块的 VHDL 和 Verilog 实例模板。

368 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
索引
A C D
asynchronous 异步 CLB 167 DCI 214
clocking 时钟控制 113 array size by device 按器件列出的阵 defined 定义 214
distributed RAM 分布式 RAM 175 列尺寸 171 DCLK 46
global set/reset 全局设置 / 复位 122 distributed RAM 分布式 RAM 174 DCM 42
mux 多路器 30 maximum distributed RAM 最大分布 allocation in device 器件中的分配 42
式 RAM 171
set/reset in register or latch 寄存器或 attributes 属性 51, 54
锁存器中的设置 / 复位 173 number of flip-flops 触发器数 171
clock deskew 时钟去歪斜 42, 56
number of LUTs by device 按器件列
出的 LUT 数 171 clocking wizard 时钟控制向导 76
configuration 配置 58
B number of shift registers 移位寄存器
数 171 DCM_ADV 44
Bitslip 356 register/latch configuration 寄存器 / DCM_BASE 44
guidelines for use 使用指导原则 357 锁存器配置 173 design guidelines 设计指南 56
operation 操作 356 slice description Slice 描述 168 deskew 去歪斜 60
See ISERDES 见 ISERDES 347 SLICEL 168 dynamic reconfiguration 动态重配置
timing 时序 357 SLICEM 168 43, 65
block RAM CLK2X 48 frequency synthesis 频率合成 42,
CLKDV 48 60
asynchronous clocking 异步时钟控
制 113 CLKFB 45 output ports 输出端口 47
defined 定义 109 CLKFX 48 phase shifting 相移 43, 61, 78
ECC 153 clock capable I/O 33 ports 端口 44
Primitive 基元 156 clock forwarding 随路时钟 340 timing models 时序模型 77
ECC Port ECC 端口 157 clock regions 时钟区域 33 DDR
operating modes 操作模式 clock tree 时钟树 32 IDDR 311
NO_CHANGE 112 clocking wizard 时钟控制向导 76 delay element 延迟单元
READ_FIRST 112 clocks 时钟 See IDELAY 见 IDELAY 317
WRITE_FIRST 112 global clock buffers 全局时钟缓冲器 differential termination 差分终端 287
ports 端口 119 20, 21 DIFF_TERM 231, 287
synchronous clocking 同步时钟控制 I/O clock buffer I/O 时钟缓冲器 34 Differential 差分 243
113 regional clock buffers 区域时钟缓冲 HSTL Class II (1.8V) HSTL II 类
BLVDS 289 器 33, 36 (1.8V) 257, 260
BUFG 25 regions 区域 32 HSTL Class II HSTL II 类 249
BUFGCE 26 resources 资源 23 LVPECL 290
BUFGCTRL 22 CMT 41 SSTL Class II (1.8V) SSTL II 类 (1.8V)
allocation in device 器件中的分配 42 279, 284
BUFGMUX 27
combinatorial input path 组合输入通路 SSTL2 Class II (2.5V) SSTL2 II 类
BUFGMUX_VIRTEX4 28
311 (2.5V) 270, 274
with CE 带 CE 31
BUFIO 34 configuration 配置
BUFR 36 DCM 58
E
Error Correction Code (ECC) 纠错码
(ECC) 153

Virtex-5 用户指南 www.xilinx.com/cn 369


UG190 (v3.1) 2007 年 9 月 11 日
R

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

370 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日
R

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

Virtex-5 用户指南 www.xilinx.com/cn 371


UG190 (v3.1) 2007 年 9 月 11 日
R

372 www.xilinx.com/cn Virtex-5 用户指南


UG190 (v3.1) 2007 年 9 月 11 日

You might also like