Vertex 5 User Guide
Vertex 5 User Guide
Xilinx is disclosing this user guide, manual, release note, and/or specification (the "Documentation") to you solely for use in the development of designs to operate with Xilinx hardware devices. You may not reproduce, distribute, republish, download, display, post, or transmit the Documentation 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. Xilinx expressly disclaims any liability arising out of your use of the Documentation. Xilinx reserves the right, at its sole discretion, to change the Documentation without notice at any time. Xilinx assumes no obligation to correct any errors contained in the Documentation, or to advise you of any corrections or updates. Xilinx expressly disclaims any liability in connection with technical support or assistance that may be provided to you in connection with the Information. THE DOCUMENTATION IS DISCLOSED TO YOU AS-IS WITH NO WARRANTY OF ANY KIND. XILINX MAKES NO OTHER WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, REGARDING THE DOCUMENTATION, INCLUDING ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT OF THIRD-PARTY RIGHTS. IN NO EVENT WILL XILINX BE LIABLE FOR ANY CONSEQUENTIAL, INDIRECT, EXEMPLARY, SPECIAL, OR INCIDENTAL DAMAGES, INCLUDING ANY LOSS OF DATA OR LOST PROFITS, ARISING FROM YOUR USE OF THE DOCUMENTATION. 20062010 Xilinx, Inc. XILINX, the Xilinx logo, Virtex, Spartan, ISE, and other designated brands included herein are trademarks of Xilinx in the United States and other countries. PCI, PCI Express, PCIe, and PCI-X are trademarks of PCI-SIG. The PowerPC name and logo are registered trademarks of IBM Corp. and used under license. All other trademarks are the property of their respective owners.
Revision History
The following table shows the revision history for this document.
Date 04/14/06 05/12/06 Version 1.0 1.1 Initial Xilinx release. Minor typographical edits and clarifications. Chapter 1: Revised Figure 1-21. Chapter 2: Revised Figure 2-2 and Figure 2-4. Removed reference to a DCM_PS primitive. Removed outdated clocking wizard section page 83. Chapter 3: Revised Figure 3-1, Figure 3-2, Table 3-2, Table 3-4, Figure 3-9, Equation 3-8, and Figure 3-12. Added PLL in Virtex-4 FPGA PMCD Legacy Mode section. Chapter 4: Added a note to Table 4-5, page 124. Clarified the RAMB36 port mapping design rules on page 132. Chapter 5: Added Figure 5-7 and Figure 5-11, revised Figure 5-32 for clarity. Chapter 6: Updated Simultaneous Switching Output Limits section. Chapter 7: Revised ILOGIC Resources, page 318 including Figure 7-1. Revised Table 7-3. Chapter 8: Revised Table 8-1. 7/19/06 1.2 Chapter 1: Revised Global Clock Buffers, page 27 to clarify single-ended clock pins. Changed the P and N I/O designations in Figure 1-19. Chapter 4: Added Block RAM SSR in Register Mode, page 133 and FIFO Architecture: a Top-Level View, page 142. Revised the FIFO operations Reset, page 144 description. Chapter 6: Minor clarification edits. Changed to N/A from unused in Table 6-36, Table 6-37, and Table 6-38. Chapter 7: Minor edits to clarify IODELAY in this chapter. Chapter 8: Small clarifications in ISERDES_NODELAY Ports, page 355. Revision
www.xilinx.com
Date 9/06/06
Version 2.0
Revision Added the LXT platform devices throughout document. Chapter 1: Revised Figure 1-22, page 45. Updated Clock Capable I/O, page 40. Chapter 2: Updated Output Clocks, page 65. Chapter 4: Clarified the rules regarding FULL and EMPTY flags on page 139. Chapter 5: Revised Storage Elements, page 178. Chapter 6: Differential Termination Attribute, page 237 is updated for the latest syntax and settings. Replaced the link to the SSO calculator.
10/12/06
2.1
Added System Monitor User Guide reference in the Preface. Added XC5VLX85T to Table 1-5, Table 2-1, and Table 5-2. Chapter 3: Revised Figure 3-1. Chapter 4: Added cascade to Table 4-7, page 126. Revised ADDR in Figure 4-9, page 124. Removed scrub mode in Built-in Error Correction section. Chapter 5: Revised Figure 5-22, page 197.
02/02/07
3.0
Added the three SXT devices and the XC5VLX220T to Table 1-5, Table 2-1, and Table 5-2. Chapter 4: Clarified wording in Synchronous Clocking, page 119. Chapter 6: Added DCI Cascading, page 220. Changed VREF for SSTL18_II_T_DCI to 0.9 in Table 6-39. Chapter 7: Revised OQ in Figure 7-27, page 349. Chapter 8: Clock Enable Inputs - CE1 and CE2, page 356.
www.xilinx.com
Date 09/11/07
Version 3.1
Revision Chapter 1: Added Clock Gating for Power Savings, page 26. Revised Figure 1-2, page 30. Revised Figure 1-16, page 37. Chapter 2: Revised DCM reset and locking process in Reset Input - RST, page 53. Updated DO[2] description in Table 2-4, page 56. Changed the multiply value range on page 58. Revised the description for FACTORY_JF Attribute, page 61. Revised Output Clocks, page 65, updated Figure 2-7, page 74, and added a BUFG to Figure 2-10, page 72. Added more steps to Dynamic Reconfiguration (DRPs) when loading new M and D values on page 73. Updated Figure 2-7, page 74. Revised bulleted descriptions under Figure 2-20, page 87. Chapter 3: Updated Figure 3-1, page 90. Add notes to Table 3-2, page 93. Added a note to Phase Shift, page 95. Added rounding to Equation 3-3 through Equation 3-6. Revised CLKFBIN, CLKFBDCM, CLKFBOUT, RST, LOCKED, and added the REL pin and note 2 to Table 3-3, page 96. Added RESET_ON_LOSS_OF_LOCK attribute to Table 3-4, page 98. Removed general routing discussion from PLL Clock Input Signals. Revised Missing Input Clock or Feedback Clock section. Added waveforms to Figure 3-13. Corrected the Virtex-4 port mapping in Figure 3-17 and Table 3-8, page 111. Chapter 4: Revised and clarified Built-in Error Correction. Edited WE signal throughout. Clarified Readback limitation in Simple Dual-Port Block RAM, page 121. Edited Set/Reset - SSR[A|B], page 125. Added Block RAM Retargeting, page 139. Revised latency values and added Note 1 to Table 4-16, page 145. Updated Cascading FIFOs to Increase Depth, page 157. Chapter 5: Clarified information about common control signals in a slice in Storage Elements, page 178. Chapter 6: Updated the DCI cascading guidelines on page 223. Removed references to HSLVDCI Controlled Impedance Driver with Unidirectional Termination since it is not supported in software. Added note 3 to Table 6-17, page 256. Clarified the introduction to SSTL (Stub-Series Terminated Logic), page 274. Revised DIFF_SSTL2_II_DCI, DIFF_SSTL18_II_DCI, page 275. Fixed DIFF_SSTL2_II references in Figure 6-74, page 282. Revised rules 2 and 3 in Rules for Combining I/O Standards in the Same Bank, page 298. Deleted of absolute maximum table from Overshoot/Undershoot, page 302. Chapter 7: Removed DDLY port from IDDR primitive page 321. Added the SIGNAL _PATTERN, DELAY_SRC, and REFCLK_FREQUENCY attributes to Table 7-10, page 329. Revised Figure 7-9, page 330. Removed Table 7-12: Generating Reference Clock From DCM and updated REFCLK section in IDELAYCTRL Ports, page 338. Clarified introduction in IDELAYCTRL Locations, page 339. Changed ODDR Clock Forwarding, page 347. Chapter 8: Updated SR and O in Figure 8-2 and Table 8-1, page 355. Updated the entire section for BITSLIP Submodule, page 366. Fixed typographical errors in Figure 8-14, page 370.
www.xilinx.com
Date 12/11/07
Version 3.2
Revision Chapter 1: Revised description in Clock Gating for Power Savings, page 26. Added the XC5VLX20T, XC5VLX155, and XC5VLX155T devices to Table 1-5. Chapter 2: Added the XC5VLX20T, XC5VLX155, and XC5VLX155T devices to Table 2-1. Chapter 3: Revised Clock Network Deskew, page 93. Removed note 2 and revised descriptions of CLKFBOUT and DEN in Table 3-3, page 96. Revised allowed value of CLKOUT[0:5]_PHASE and CLKFBOUT_MULT description in Table 3-4, page 98. Revised Figure 3-13 and Figure 3-14 including waveforms. Chapter 5: Added the XC5VLX20T, XC5VLX155, and XC5VLX155T devices to Table 5-2. Chapter 6: Clarified discussion of cascading across CMT tiles in DCI Cascading. Changed the split termination to VTT = 0.9V in Figure 6-84, page 292. Chapter 7: Added to the descriptions of the HIGH_PERFORMANCE_MODE Attribute, and the SIGNAL_PATTERN Attribute, page 330,including Table 7-10. Revised description in Instantiating IDELAYCTRL Without LOC Constraints, page 340. Chapter 8: Complete rewrite of the chapter. Many changes to descriptions, tables, and figures.
02/05/08
3.3
Chapter 1: Updated discussion under I/O Clock Buffer - BUFIO, page 41. Chapter 3: Revised LOCKED description in Table 3-3, page 96. Revised discussion under Detailed VCO and Output Counter Waveforms, page 103. Chapter 5: Updated description of Figure 5-17. Chapter 7: Updated description under Clock Input - C, page 327. Updated default value to TRUE for HIGH_PERFORMANCE_MODE in Table 7-10, page 329. Chapter 8: Revised TRISTATE_WIDTH in Table 8-7, page 374. Updated discussion under TRISTATE_WIDTH Attribute and added section on OSERDES Clocking Methods, page 375.
03/31/08
4.0
Added the FXT platform to Table 1-5, Table 2-1, and Table 5-2. Revised timing event description under Figure 1-21, page 44. Revised Dynamic Reconfiguration, page 73 to remove adjustment of PHASE_SHIFT. Added CLKOUT[0:5]_DESKEW_ADJUST to Table 3-4, page 98. Corrected READ_WIDTH_B = 9 to WRITE_WIDTH_B = 9 in the block RAM usage rules on page 114. Revised High-Speed Clock for Strobe-Based Memory Interfaces - OCLK, page 357. Corrected BITSLIP_ENABLE value from string to boolean in ISERDES_NODELAY Attributes, page 358.
04/25/08
4.1
Added the XC5VSX240T to Table 1-5, Table 2-1, and Table 5-2. Revised Figure 1-21, page 44. Removed a pad notation from the ODDR output of Figure 2-9. Removed the BUFG on the output of Figure 2-10. Updated CLKOUT[0:5]_DESKEW_ADJUST description in Table 3-4, page 98. Revised equations Equation 3-5 and Equation 3-6. Updated the notes in Table 4-16, page 145. Revised description of Instantiating IDELAYCTRL with Location (LOC) Constraints, page 342.
www.xilinx.com
Date 05/09/08
Version 4.2
Revision Revised clock routing resources in BUFGCTRL to DCM, page 73. Removed example Figure 2-10 on page 76. Corrected note 1 in Table 4-5, page 124. Added Legal Block RAM and FIFO Combinations, page 171. Clarified Note 7 in DCI in Virtex-5 Device I/O Standards. Master DCI is not supported in Banks 1 and 2.
09/23/08
4.3
Added the TXT platform to Table 1-5, Table 2-1, and Table 5-2. Chapter 2: Revised Reset Input - RST, page 53 and System-Synchronous Setting (Default), page 66. Chapter 3: Updated Jitter Filter, page 94. Chapter 4: Updated Write Modes, page 117, and Asynchronous Clocking, page 119. Chapter 6: Labeled all the DCI_18 standards consistently in Table 6-39 and Table 6-40. Replaced the link to the Full Device SSO Calculator. Chapter 8: Updated CLKB in Table 8-1, page 355 and High-Speed Clock Input - CLKB, page 357.
12/02/08
4.4
Chapter 2: Changed edge to half in IBUFG Global Clock Input Buffer description on page 51, page 52, and page 53. Chapter 4: Added new text and equation to Almost Empty Flag, page 146. Added note 1 to Table 4-19, page 148. Chapter 5: Changed RAM#XM to RAM#M in Figure 5-32, page 212. Chapter 6: Corrected PCI acronym definition in PCI-X, PCI-33, PCI-66 (Peripheral Component Interconnect), page 247. Added to the description of the SSTL18_II_T_DCI standard in SSTL18_II_T_DCI (1.8V) Split-Thevenin Termination, page 293. Chapter 7: Added mode to caption of Figure 7-7, page 323 for clarification. Chapter 8: Added statement about shared resources between OCLK and CLK in HighSpeed Clock for Strobe-Based Memory Interfaces - OCLK, page 357.
01/09/09
4.5
Chapter 4: Revised the paragraph below Equation 4-1 on page 146. Chapter 6: Added IBUFDS_DIFF_OUT to the list of primitive names for differential I/O standards in Virtex-5 FPGA SelectIO Primitives, page 233. Added new section IBUFDS_DIFF_OUT, page 235. Chapter 7: In the Verilog code segment for bidirectional IODELAY on page 333, corrected the setting of RST.
03/19/09
4.6
Chapter 3: Added reference to the Virtex-5 FPGA Configuration Guide in PLL_ADV Primitive, page 93. Chapter 4: In the second paragraph of Write Modes, page 117, added in ECC configuration after READ_FIRST. Chapter 5: In the third sentence of the second paragraph of Look-Up Table (LUT), page 178, changed slices to LUTs. Removed MC31 and SHIFTOUT from the bottom SRL32 in Figure 5-19, page 193. Chapter 6: Inserted sentence about at least one I/O being configured as DCI to the paragraph after Figure 6-4, page 220.
www.xilinx.com
Date 05/01/09
Version 4.7
Revision Chapter 3: Added 7 as one of the values of D in the last sentence of the first paragraph of Determine the Input Frequency, page 95. Updated waveform 1 in Figure 3-10, page 105. Chapter 4: In the second paragraph of Write Modes, page 117, rephrased the second paragraph. Changed Clock Cycle Latency to Write/Read Cycle Latency in Table 4-16, page 145. In ECC Modes Overview, page 159, changed READ_FIRST to NO_CHANGE in the last bullet of the section.
06/19/09
5.0
Chapter 1: Updated instances of BUFGMUX_VIRTEX4 to BUFGMUX_CTRL throughout chapter. Clarified global and local clocking in first paragraph of Global and Regional Clocks, page 25. Chapter 2: Updated Dynamic Reconfiguration description in DCM Summary, page 48 to remove different phase shift as an attribute changeable via dynamic reconfiguration. Chapter 3: Updated definition of LOCKED pin in Table 3-3, page 96.
09/18/09
5.1
Chapter 5: Changed combine all slices to combine all LUTs in second paragraph of Look-Up Table (LUT), page 178. Changed 16 to 32 in the first paragraph of Static Read Operation, page 195. Chapter 6: In DCI Cascading, page 220, deleted the following: Sentence that stated that DCI control for a particular bank can come from the bank immediately above or below. Fourth bulleted item in guidelines when using DCI cascading that stated that DCI cascading must extend across consecutive banks in the same column.
11/05/09
5.2
05/17/10
5.3
Chapter 2: In first paragraph of Source Clock Input - CLKIN, added sentence about DCM powering down when CLKIN is stopped for 100 ms or longer.
www.xilinx.com
www.xilinx.com
Table of Contents
Revision History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
DCM Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
DCM Clock Input Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Source Clock Input - CLKIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Feedback Clock Input - CLKFB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Phase-Shift Clock Input - PSCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 51 52 52
www.xilinx.com
Dynamic Reconfiguration Clock Input - DCLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCM Control and Data Input Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Input - RST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Phase-Shift Increment/Decrement Input - PSINCDEC . . . . . . . . . . . . . . . . . . . . . . . . . Phase-Shift Enable Input - PSEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamic Reconfiguration Data Input - DI[15:0] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamic Reconfiguration Address Input - DADDR[6:0] . . . . . . . . . . . . . . . . . . . . . . . . Dynamic Reconfiguration Write Enable Input - DWE . . . . . . . . . . . . . . . . . . . . . . . . . . Dynamic Reconfiguration Enable Input - DEN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCM Clock Output Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1x Output Clock - CLK0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1x Output Clock, 90 Phase Shift - CLK90 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1x Output Clock, 180 Phase Shift - CLK180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1x Output Clock, 270 Phase Shift - CLK270 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2x Output Clock - CLK2X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2x Output Clock, 180 Phase Shift - CLK2X180 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency Divide Output Clock - CLKDV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency-Synthesis Output Clock - CLKFX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency-Synthesis Output Clock, 180 - CLKFX180 . . . . . . . . . . . . . . . . . . . . . . . . . . DCM Status and Data Output Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Locked Output - LOCKED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Phase-Shift Done Output - PSDONE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Status or Dynamic Reconfiguration Data Output - DO[15:0] . . . . . . . . . . . . . . . . . . . . . Dynamic Reconfiguration Ready Output - DRDY . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53 53 53 53 54 54 54 54 54 54 54 55 55 55 55 55 55 55 55 56 56 56 56 57 58 58 58 59 59 59 60 60 60 60 60 61 61 61 63 63 64 64 65 65 65 67 67 67 68 68 68
DCM Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
CLKDV_DIVIDE Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CLKFX_MULTIPLY and CLKFX_DIVIDE Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . CLKIN_PERIOD Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CLKIN_DIVIDE_BY_2 Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CLKOUT_PHASE_SHIFT Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CLK_FEEDBACK Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DESKEW_ADJUST Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DFS_FREQUENCY_MODE Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DLL_FREQUENCY_MODE Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DUTY_CYCLE_CORRECTION Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCM_PERFORMANCE_MODE Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FACTORY_JF Attribute. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PHASE_SHIFT Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . STARTUP_WAIT Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clock Deskew . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clock Deskew Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input Clock Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Input Clock Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output Clocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DCM During Configuration and Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Deskew Adjust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Characteristics of the Deskew Circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency Synthesis Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Frequency Synthesizer Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Phase Shifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Phase-Shifting Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
www.xilinx.com
Interaction of PSEN, PSINCDEC, PSCLK, and PSDONE . . . . . . . . . . . . . . . . . . . . . . . . 71 Phase-Shift Overflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Phase-Shift Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Dynamic Reconfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Application Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
VHDL and Verilog Templates, and the Clocking Wizard . . . . . . . . . . . . . . . . . . . . . 83 DCM Timing Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Reset/Lock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fixed-Phase Shifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variable-Phase Shifting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Status Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 85 86 87
Legacy Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Detailed VCO and Output Counter Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Reference Clock Switching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Missing Input Clock or Feedback Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
www.xilinx.com
11
Block RAM Library Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Block RAM Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Clock - CLK[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Enable - EN[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Byte-wide Write Enable - WE[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Register Enable - REGCE[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Set/Reset - SSR[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Address Bus - ADDR[A|B]<13:#><14:#><15:#> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data-In Buses - DI[A|B]<#:0> & DIP[A|B]<#:0> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data-Out Buses - DO[A|B]<#:0> and DOP[A|B]<#:0> . . . . . . . . . . . . . . . . . . . . . . . . Cascade In - CASCADEINLAT[A|B] and CASCADEINREG[A|B] . . . . . . . . . . . . . Cascade Out - CASCADEOUTLAT[A|B] and CASCADEOUTREG[A|B] . . . . . . . Inverting Control Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . GSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unused Inputs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 125 125 125 125 125 126 126 127 127 127 127 127
12
www.xilinx.com
Output Latches Initialization - INIT (INIT_A or INIT_B) . . . . . . . . . . . . . . . . . . . . . . Output Latches/Registers Synchronous Set/Reset (SRVAL_[A|B]) . . . . . . . . . . . . . Optional Output Register On/Off Switch - DO[A|B]_REG . . . . . . . . . . . . . . . . . . . . Extended Mode Address Determinant - RAM_EXTENSION_[A|B] . . . . . . . . . . . . Read Width - READ_WIDTH_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Write Width - WRITE_WIDTH_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Write Mode - WRITE_MODE_[A|B] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Block RAM Location Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Block RAM Initialization in VHDL or Verilog Code . . . . . . . . . . . . . . . . . . . . . . . . 131 Additional RAMB18 and RAMB36 Primitive Design Considerations . . . . . . . . 131
Optional Output Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Independent Read and Write Port Width . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . RAMB18 and RAMB36 Port Mapping Design Rules . . . . . . . . . . . . . . . . . . . . . . . . . . Cascadable Block RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Byte-wide Write Enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 131 132 132 132
FIFO Architecture: a Top-Level View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FIFO Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FIFO Port Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FIFO Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operating Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Standard Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . First Word Fall Through (FWFT) Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Status Flags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Empty Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Almost Empty Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Read Error Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Full Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Write Error Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Almost Full Flag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
142 142 143 144 144 144 144 144 145 145 146 146 146 146 146
www.xilinx.com
13
14
www.xilinx.com
Distributed RAM Timing Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 Distributed RAM Timing Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Slice SRL Timing Model and Parameters (Available in SLICEM only) . . . . . . . . . . . Slice SRL Timing Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slice SRL Timing Characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slice Carry-Chain Timing Model and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . Slice Carry-Chain Timing Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Distributed RAM Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Shift Registers (SRLs) Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Other Shift Register Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synchronous Shift Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Static-Length Shift Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplexer Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Carry Chain Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Port Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207 208 208 210 210 211 212 213 213 214 214 214 215 215 215 216
www.xilinx.com
15
237 237 237 237 Virtex-5 FPGA I/O Resource VHDL/Verilog Examples . . . . . . . . . . . . . . . . . . . . . . . 238
Output Slew Rate Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output Drive Strength Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PULLUP/PULLDOWN/KEEPER for IBUF, OBUFT, and IOBUF . . . . . . . . . . . . . . . . Differential Termination Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
www.xilinx.com
SSTL2 Class II (2.5V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Differential SSTL2 Class II (2.5V). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SSTL2_II_T_DCI (2.5V) Split-Thevenin Termination . . . . . . . . . . . . . . . . . . . . . . . . . . SSTL18 Class I (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Differential SSTL Class I (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SSTL18 Class II (1.8V) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Differential SSTL Class II (1.8V). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SSTL18_II_T_DCI (1.8V) Split-Thevenin Termination . . . . . . . . . . . . . . . . . . . . . . . . . Differential Termination: DIFF_TERM Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . LVDS and Extended LVDS (Low Voltage Differential Signaling) . . . . . . . . . . . . . . . Transmitter Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Receiver Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . HyperTransport Protocol (HT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reduced Swing Differential Signaling (RSDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BLVDS (Bus LVDS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Differential LVPECL (Low-Voltage Positive Emitter-Coupled Logic) . . . . . . . . . . . LVPECL Transceiver Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
279 281 284 285 286 288 291 293 294 294 295 295 296 296 296 297 297
www.xilinx.com
17
IODELAY Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IODELAY Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IODELAY Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IODELAY Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Stability after an Increment/Decrement Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . IODELAY VHDL and Verilog Instantiation Template . . . . . . . . . . . . . . . . . . . . . . . . . IODELAY Turnaround Time Usage Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDELAYCTRL Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDELAYCTRL Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDELAYCTRL Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDELAYCTRL Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDELAYCTRL Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IDELAYCTRL Usage and Design Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Combinatorial Output Data and 3-State Control Path . . . . . . . . . . . . . . . . . . . . . . . . . Output DDR Overview (ODDR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OPPOSITE_EDGE Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SAME_EDGE Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Clock Forwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output DDR Primitive (ODDR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ODDR VHDL and Verilog Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OLOGIC Timing Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timing Characteristics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
326 327 329 330 331 331 332 337 338 338 339 339 340 345 345 346 346 347 347 348 348 348
18
www.xilinx.com
ISERDES VHDL and Verilog Instantiation Template. . . . . . . . . . . . . . . . . . . . . . . . . . BITSLIP Submodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bitslip Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bitslip Timing Model and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OSERDES Primitive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OSERDES Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Data Path Output - OQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-state Control Output - TQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . High-Speed Clock Input - CLK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Divided Clock Input - CLKDIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parallel Data Inputs - D1 to D6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Output Data Clock Enable - OCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Parallel 3-state Inputs - T1 to T4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-state Signal Clock Enable - TCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reset Input - SR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OSERDES Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DATA_RATE_OQ Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DATA_RATE_TQ Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DATA_WIDTH Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SERDES_MODE Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TRISTATE_WIDTH Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OSERDES Clocking Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OSERDES Width Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Guidelines for Expanding the Parallel-to-Serial Converter Bit Width . . . . . . . . . . . . . OSERDES Latencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OSERDES Timing Model and Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timing Characteristics of 2:1 SDR Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timing Characteristics of 8:1 DDR Serialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Timing Characteristics of 4:1 DDR 3-State Controller Serialization . . . . . . . . . . . . . . . Reset Output Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . OSERDES VHDL and Verilog Instantiation Templates . . . . . . . . . . . . . . . . . . . . . . . .
371 372 372 372 372 372 373 373 373 373 373 374 374 374 375 375 375 375 375 376 377 377 378 379 380 381 382 383
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
www.xilinx.com
19
20
www.xilinx.com
Preface
Additional Documentation
The following documents are also available for download at http://www.xilinx.com/virtex5. Virtex-5 Family Overview The features and product selection of the Virtex-5 family are outlined in this overview. Virtex-5 FPGA Data Sheet: DC and Switching Characteristics This data sheet contains the DC and Switching Characteristic specifications for the Virtex-5 family. Virtex-5 FPGA RocketIO GTP Transceiver User Guide This guide describes the RocketIO GTP transceivers available in the Virtex-5 LXT and SXT platforms. Virtex-5 FPGA RocketIO GTX Transceiver User Guide This guide describes the RocketIO GTX transceivers available in the Virtex-5 TXT and FXT platforms. Virtex-5 FPGA Embedded Processor Block for PowerPC 440 Designs This reference guide is a description of the embedded processor block available in the Virtex-5 FXT platform. Virtex-5 FPGA Tri-Mode Ethernet Media Access Controller This guide describes the dedicated Tri-Mode Ethernet Media Access Controller available in the Virtex-5 LXT, SXT, TXT and FXT platforms. Virtex-5 FPGA Integrated Endpoint Block User Guide for PCI Express Designs This guide describes the integrated Endpoint blocks in the Virtex-5 LXT, SXT, TXT and FXT platforms used for PCI Express designs. XtremeDSP Design Considerations This guide describes the XtremeDSP slice and includes reference designs for using the DSP48E slice.
www.xilinx.com
21
Virtex-5 FPGA Configuration Guide This all-encompassing configuration guide includes chapters on configuration interfaces (serial and SelectMAP), bitstream encryption, Boundary-Scan and JTAG configuration, reconfiguration techniques, and readback through the SelectMAP and JTAG interfaces.
Virtex-5 FPGA System Monitor User Guide The System Monitor functionality available in all the Virtex-5 devices is outlined in this guide.
Virtex-5 FPGA Packaging and Pinout Specification This specification includes the tables for device/package combinations and maximum I/Os, pin definitions, pinout tables, pinout diagrams, mechanical drawings, and thermal specifications.
Virtex-5 FPGA PCB Designers Guide This guide provides information on PCB design for Virtex-5 devices, with a focus on strategies for making design decisions at the PCB and interface level.
Typographical Conventions
This document uses the following typographical conventions. An example illustrates each convention.
Convention Meaning or Use References to other documents Italic font Emphasis in text Example See the Virtex-5 FPGA Configuration Guide for more information. The address (F) is asserted after clock event 2.
22
www.xilinx.com
Typographical Conventions
Online Document
The following conventions are used in this document:
Convention Meaning or Use Example See the section Additional Documentation for details. Refer to Clock Management Summary in Chapter 2 for details. Go to http://www.xilinx.com for the latest documentation.
Blue text
www.xilinx.com
23
24
www.xilinx.com
Chapter 1
Clock Resources
Global and Regional Clocks
For clocking purposes, each Virtex-5 device is divided into regions. The number of regions varies with device size, eight regions in the smallest device to 24 regions in the largest one. Global I/O and regional clocking resources manage complex and simple clocking requirements. Non-clock resources, such as local routing, are not recommended when performing clock functions.
Global Clocks
Each Virtex-5 device has 32 global clock lines that can clock all sequential resources on the whole device (CLB, block RAM, CMTs, and I/O), and also drive logic signals. Any ten of these 32 global clock lines can be used in any region. Global clock lines are only driven by a global clock buffer, which can also be used as a clock enable circuit, or a glitch-free multiplexer. It can select between two clock sources, and can also switch away from a failed clock source. A global clock buffer is often driven by a Clock Management Tile (CMT) to eliminate the clock distribution delay, or to adjust its delay relative to another clock. There are more global clocks than CMTs, but a CMT often drives more than one global clock.
www.xilinx.com
25
These two primitives work in conjunction with the Virtex-5 FPGA I/O resource by setting the IOSTANDARD attribute to the desired standard. Refer to Chapter 6, I/O Compatibility Table 6-39 for a complete list of possible I/O standards.
26
www.xilinx.com
The global clock buffers can only be driven by sources in the same half of the die (top/bottom). All global clock buffers can drive all clock regions in Virtex-5 devices. The primary/secondary rules from Virtex-II and Virtex-II Pro FPGAs do not apply. However, only ten different clocks can be driven in a single clock region. A clock region (20 CLBs) is a branch of the clock tree consisting of ten CLB rows up and ten CLB rows down. A clock region only spans halfway across the device. The clock buffers are designed to be configured as a synchronous or asynchronous glitchfree 2:1 multiplexer with two clock inputs. Virtex-5 FPGA control pins provide a wide range of functionality and robust input switching. The following subsections detail the various configurations, primitives, and use models of the Virtex-5 FPGA clock buffers.
www.xilinx.com
27
1. All primitives are derived from a software preset of BUFGCTRL. 2. This primitive replaces the BUFGMUX_VIRTEX4 primitive.
BUFGCTRL
The BUFGCTRL primitive shown in Figure 1-1, can switch between two asynchronous clocks. All other global clock buffer primitives are derived from certain configurations of BUFGCTRL. The ISE software tools manage the configuration of all these primitives. BUFGCTRL has four select lines, S0, S1, CE0, and CE1. It also has two additional control lines, IGNORE0 and IGNORE1. These six control lines are used to control the input I0 and I1.
X-Ref Target - Figure 1-1
I1 O I0
S0 CE0 IGNORE0
ug190_1_01_032206
Figure 1-1:
BUFGCTRL Primitive
28
www.xilinx.com
BUFGCTRL is designed to switch between two clock inputs without the possibility of a glitch. When the presently selected clock transitions from High to Low after S0 and S1 change, the output is kept Low until the other (to-be-selected) clock has transitioned from High to Low. Then the new clock starts driving the output.The default configuration for BUFGCTRL is falling edge sensitive and held at Low prior to the input switching. BUFGCTRL can also be rising edge sensitive and held at High prior to the input switching. In some applications the conditions previously described are not desirable. Asserting the IGNORE pins will bypass the BUFGCTRL from detecting the conditions for switching between two clock inputs. In other words, asserting IGNORE causes the mux to switch the inputs at the instant the select pin changes. IGNORE0 causes the output to switch away from the I0 input immediately when the select pin changes, while IGNORE1 causes the output to switch away from the I1 input immediately when the select pin changes. Selection of an input clock requires a select pair (S0 and CE0, or S1 and CE1) to be asserted High. If either S or CE is not asserted High, the desired input will not be selected. In normal operation, both S and CE pairs (all four select lines) are not expected to be asserted High simultaneously. Typically only one pin of a select pair is used as a select line, while the other pin is tied High. The truth table is shown in Table 1-3. Table 1-3:
CE0 1 1 0 X 1
Notes:
1. Old input refers to the valid input clock before this state is achieved. 2. For all other states, the output becomes the value of INIT_OUT and does not toggle.
Although both S and CE are used to select a desired output, each one of these pins behaves slightly different. When using CE to switch clocks, the change in clock selection can be faster than when using S. Violation in Setup/Hold time of the CE pins causes a glitch at the clock output. On the other hand, using the S pins allows the user to switch between the two clock inputs without regard to Setup/Hold times. It will not result in a glitch. See BUFGMUX_CTRL. The CE pin is designed to allow backward compatibility from Virtex-II and Virtex-II Pro FPGAs.
www.xilinx.com
29
The timing diagram in Figure 1-2 illustrates various clock switching conditions using the BUFGCTRL primitives. Exact timing numbers are best found using the speed specification.
X-Ref Target - Figure 1-2
I0 I1
TBCCCK_CE
O
at I0 Begin I1 Begin I0
ug190_1_02_071707
Figure 1-2:
Before time event 1, output O uses input I0. At time TBCCCK_CE, before the rising edge at time event 1, both CE0 and S0 are deasserted Low. At about the same time, both CE1 and S1 are asserted High. At time TBCCKO_O, after time event 3, output O uses input I1. This occurs after a High to Low transition of I0 (event 2) followed by a High to Low transition of I1. At time event 4, IGNORE1 is asserted. At time event 5, CE0 and S0 are asserted High while CE1 and S1 are deasserted Low. At TBCCKO_O, after time event 6, output O has switched from I1 to I0 without requiring a High to Low transition of I1.
Other capabilities of BUFGCTRL are: Pre-selection of the I0 and I1 inputs are made after configuration but before device operation. The initial output after configuration can be selected as either High or Low. Clock selection using CE0 and CE1 only (S0 and S1 tied High) can change the clock selection without waiting for a High to Low transition on the previously selected clock.
30
www.xilinx.com
Table 1-4 summarizes the attributes for the BUFGCTRL primitive. Table 1-4: BUFGCTRL Attributes
Description Initializes the BUFGCTRL output to the specified value after configuration. Sets the positive or negative edge behavior. Sets the output level when changing clock selection. If TRUE, BUFGCTRL output uses the I0 input after configuration(1) If TRUE, BUFGCTRL output uses the I1 input after configuration(1) Possible Values 0 (default), 1
PRESELECT_I0 PRESELECT_I1
Notes:
1. Both PRESELECT attributes cannot be TRUE at the same time. 2. The LOC constraint is available.
BUFG
BUFG is simply a clock buffer with one clock input and one clock output. This primitive is based on BUFGCTRL with some pins connected to logic High or Low. Figure 1-3 illustrates the relationship of BUFG and BUFGCTRL. A LOC constraint is available for BUFG.
X-Ref Target - Figure 1-3
Figure 1-3:
BUFG as BUFGCTRL
The output follows the input as shown in the timing diagram in Figure 1-4.
X-Ref Target - Figure 1-4
Figure 1-4:
www.xilinx.com
31
BUFGCE CE
VDD I
I1 O I0
Figure 1-5:
BUFGCE as BUFGCTRL
The switching condition for BUFGCE is similar to BUFGCTRL. If the CE input is Low prior to the incoming rising clock edge, the following clock pulse does not pass through the clock buffer, and the output stays Low. Any level change of CE during the incoming clock High pulse has no effect until the clock transitions Low. The output stays Low when the clock is disabled. However, when the clock is being disabled it completes the clock High pulse. Since the clock enable line uses the CE pin of the BUFGCTRL, the select signal must meet the setup time requirement. Violating this setup time may result in a glitch. Figure 1-6 illustrates the timing diagram for BUFGCE.
X-Ref Target - Figure 1-6
TBCCCK_CE
ug190_1_06_032206
Figure 1-6: BUFGCE Timing Diagram BUFGCE_1 is similar to BUFGCE, with the exception of its switching condition. If the CE input is Low prior to the incoming falling clock edge, the following clock pulse does not pass through the clock buffer, and the output stays High. Any level change of CE during the incoming clock Low pulse has no effect until the clock transitions High. The output stays High when the clock is disabled. However, when the clock is being disabled it completes the clock Low pulse.
32
www.xilinx.com
TBCCCK_CE
Figure 1-7:
GND VDD
IGNORE1 CE1 S1
BUFGMUX I1 O I0 I0 I1 O
Figure 1-8:
BUFGMUX as BUFGCTRL
Since the BUFGMUX uses the CE pins as select pins, when using the select, the setup time requirement must be met. Violating this setup time might result in a glitch. Switching conditions for BUFGMUX are the same as the CE pins on BUFGCTRL. Figure 1-9 illustrates the timing diagram for BUFGMUX.
www.xilinx.com
33
ug190_1_09_032306
Figure 1-9: In Figure 1-9: The current clock is I0. S is activated High.
If I0 is currently High, the multiplexer waits for I0 to deassert Low. Once I0 is Low, the multiplexer output stays Low until I1 transitions High to Low. When I1 transitions from High to Low, the output switches to I1. If Setup/Hold are met, no glitches or short pulses can appear on the output.
BUFGMUX_1 is rising edge sensitive and held at High prior to input switch. Figure 1-10 illustrates the timing diagram for BUFGMUX_1. A LOC constraint is available for BUFGMUX and BUFGMUX_1.
X-Ref Target - Figure 1-10
TBCCCK_CE S I0 I1 O TBCCKO_O
ug190_1_10_032306
Figure 1-10: In Figure 1-10: The current clock is I0. S is activated High.
If I0 is currently Low, the multiplexer waits for I0 to be asserted High. Once I0 is High, the multiplexer output stays High until I1 transitions Low to High. When I1 transitions from Low to High, the output switches to I1. If Setup/Hold are met, no glitches or short pulses can appear on the output.
34
www.xilinx.com
BUFGMUX_CTRL
BUFGMUX_CTRL is a clock buffer with two clock inputs, one clock output, and a select line. This primitive is based on BUFGCTRL with some pins connected to logic High or Low. Figure 1-11 illustrates the relationship of BUFGMUX_CTRL and BUFGCTRL.
X-Ref Target - Figure 1-11
S BUFGMUX_CTRL I1 O I0
I1 O I0
Figure 1-11:
BUFGMUX_CTRL as BUFGCTRL
BUFGMUX_CTRL uses the S pins as select pins. S can switch anytime without causing a glitch. The Setup/Hold time on S is for determining whether the output will pass an extra pulse of the previously selected clock before switching to the new clock. If S changes as shown in Figure 1-12, prior to the setup time TBCCCK_S and before I0 transitions from High to Low, then the output will not pass an extra pulse of I0. If S changes following the hold time for S, then the output will pass an extra pulse. If S violates the Setup/Hold requirements, the output might pass the extra pulse, but it will not glitch. In any case, the output will change to the new clock within three clock cycles of the slower clock. The Setup/Hold requirements for S0 and S1 are with respect to the falling clock edge (assuming INIT_OUT = 0), not the rising edge as for CE0 and CE1. Switching conditions for BUFGMUX_CTRL are the same as the S pin of BUFGCTRL. Figure 1-12 illustrates the timing diagram for BUFGMUX_CTRL.
X-Ref Target - Figure 1-12
S I0 I1 O
TBCCKO_O TBCCKO_O
UG190_1_12_061909
Figure 1-12:
Other capabilities of the BUFGMUX_CTRL primitive are: Pre-selection of I0 and I1 input after configuration. Initial output can be selected as High or Low after configuration.
www.xilinx.com
35
I1 O I0
Figure 1-13:
X-Ref Target - Figure 1-14
I1 I0 S
TBCCKO_O TBCCKO_O
O
at I0 Begin I1
UG190_1_14_032306
Figure 1-14: In Figure 1-14: The current clock is from I0. S is activated High.
The Clock output immediately switches to I1. When Ignore signals are asserted High, glitch protection is disabled.
36
www.xilinx.com
GND
IGNORE1 CE1 S1
I1 O I0
S CE GND
S0 CE0 IGNORE0
UG190_1_15_052009
1 I0 I1 S
TBCCCK_CE
CE
TBCCKO_O TBCCKO_O
O
at I0 Begin I1 Clock Off
ug190_1_16_040907
At time event 1, output O uses input I0. Before time event 2, S is asserted High. At time TBCCKO_O, after time event 2, output O uses input I1. This occurs after a High to Low transition of I0 followed by a High to Low transition of I1 is completed. At time TBCCCK_CE, before time event 3, CE is asserted Low. The clock output is switched Low and kept at Low after a High to Low transition of I1 is completed.
www.xilinx.com
37
Clock Regions
Virtex-5 devices improve the clocking distribution by the use of clock regions. Each clock region can have up to 10 global clock domains. These 10 global clocks can be driven by any combination of the 32 global clock buffers. The dimensions of a clock region are fixed to 20 CLBs tall (40 IOBs) and spanning half of the die (Figure 1-17). By fixing the dimensions of the clock region, larger Virtex-5 devices can have more clock regions. As a result, Virtex-5 devices can support many more multiple clock domains than previous FPGA architectures. Table 1-5 shows the number of clock regions in each Virtex-5 device. The logic resources in the center column (CMTs, IOBs, etc.) are located in the left clock regions. The CMTs, if used, utilize the global clocks in the left regions as feedback lines. Up to four CMTs can be in a specific region. If used in the same region, IDELAYCTRL uses another global clock in that region. See Chapter 2, Clock Management Technology.
X-Ref Target - Figure 1-17
All clock regions are 20 CLBs tall (10 CLBs above and 10 CLBs below a horizontal clock line)
ug190_1_17_042406
Figure 1-17:
Clock Regions
38
www.xilinx.com
Table 1-5:
Device XC5VLX30 XC5VLX50 XC5VLX85
XC5VLX30T XC5VLX50T XC5VLX85T XC5VLX110T XC5VLX155T XC5VLX220T XC5VLX330T XC5VTX150T XC5VTX240T XC5VSX35T XC5VSX50T XC5VSX95T XC5VSX240T XC5VFX30T XC5VFX70T XC5VFX100T XC5VFX130T XC5VFX200T
8 12 12 16 16 16 24 20 24 8 12 16 24 8 16 16 20 24
www.xilinx.com
39
40
www.xilinx.com
BUFIO Primitive
BUFIO is simply a clock in, clock out buffer. There is a phase delay between input and output. Figure 1-18 shows the BUFIO. Table 1-6 lists the BUFIO ports. A location constraint is available for BUFIO.
X-Ref Target - Figure 1-18
BUFIO
ug190_1_18_032306
BUFIO Primitive
Port Name O I
www.xilinx.com
41
I/O I/O I/O I/O I/O I/O P Clock Capable I/O N P Clock Capable I/O N I/O BUFIO BUFR Not all available BUFIOs are shown. BUFR I/O I/O I/O
To Adjacent Region
To Fabric
BUFIO P Clock Capable I/O N P Clock Capable I/O N I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O
To Adjacent Region
ug190_1_19_060706
Figure 1-19:
42
www.xilinx.com
the global clock tree. Each BUFR can drive the four regional clock nets in the region it is located, and the four clock nets in the adjacent clock regions (up to three clock regions). Unlike BUFIOs, BUFRs can drive the I/O logic and logic resources (CLB, block RAM, etc.) in the existing and adjacent clock regions. BUFRs can be driven by clock capable pins or local interconnect. In addition, BUFR is capable of generating divided clock outputs with respect to the clock input. The divide values are an integer between one and eight. BUFRs are ideal for source-synchronous applications requiring clock domain crossing or serial-toparallel conversion. There are two BUFRs in a typical clock region (four regional clock networks). The center column does not have BUFRs.
BUFR Primitive
BUFR is a clock-in/clock-out buffer with the capability to divide the input clock frequency.
X-Ref Target - Figure 1-20
CE CLR
ug190_1_20_032306
BUFR Primitive
Input
www.xilinx.com
43
The propagation delay through BUFR is different for BUFR_DIVIDE = 1 and BUFR_DIVIDE = BYPASS. When set to 1, the delay is slightly more than BYPASS. All other divisors have the same delay BUFR_DIVIDE = 1. The phase relationship between the input clock and the output clock is the same for all possible divisions except BYPASS. The timing relationship between the inputs and output of BUFR when using the BUFR_DIVIDE attribute is illustrated in Figure 1-21. In this example, the BUFR_DIVIDE attribute is set to three. Sometime before this diagram CLR was asserted.
X-Ref Target - Figure 1-21
1 I CE CLR
TBRCKO_O TBRDO_CLRO
TBRCKO_O
O
ug190_1_21_041808
Before clock event 1, CE is asserted High. After CE is asserted and time TBRCKO_O, the output O begins toggling at the divide by three rate of the input I. TBRCKO_O and other timing numbers are best found in the speed specification. Note: The duty cycle is not 50/50 for odd division. The Low pulse is one cycle of I longer.
At time event 2, CLR is asserted. After TBRDO_CLRO from time event 2, O stops toggling. At time event 3, CLR is deasserted. At time TBRCKO_O after clock event 4, O begins toggling again at the divided by three rate of I.
44
www.xilinx.com
To Region Above
I/O Tile I/O Tile I/O Tile I/O Tile I/O Tile I/O Tile I/O Tile Clock Capable I/O I/O Tile BUFIO BUFR CLBs CLBs CLBs CLBs CLBs CLBs CLBs CLBs Block RAM DSP Tile Block RAM DSP Tile
www.xilinx.com
45
BUFRs
ug190_1_23_012306
Figure 1-23:
46
www.xilinx.com
Chapter 2
I/O Banks (Larger Devices Only) CMT Blocks (Top Half DCMs/PLLs) Clock I/O (Top Half) Config I/O (Top Half) Config Blocks and BUFGs Config I/O (Bottom Half) Clock I/O (Bottom Half) CMT Blocks (Bottom Half DCMs/PLLs) I/O Banks (Larger Devices Only)
UG190_c2_01_022609
Figure 2-1:
CMT Location
www.xilinx.com
47
Table 2-1 summarizes the availability of CMTs, DCMs, and PLLs in each Virtex-5 device. Table 2-1: Available CMT, DCM, and PLL Resources
Number of CMTs 1 2 Available DCMs 2 4 Bottom half: DCM_ADV_X0Y0, DCM_ADV_X0Y1, PLL_ADV_X0Y0 XC5VLX30 XC5VFX30T XC5VLX30T XC5VSX35T XC5VLX50 XC5VLX50T XC5VSX50T XC5VFX70T XC5VLX85 XC5VLX85T XC5VSX95T XC5VFX100T XC5VLX110 XC5VLX110T XC5VFX130T XC5VTX150T XC5VLX155 XC5VLX155T XC5VFX200T XC5VLX220 XC5VLX220T XC5VSX240T XC5VTX240T XC5VLX330 XC5VLX330T Bottom half: DCM_ADV_X0Y0, DCM_ADV_X0Y1, PLL_ADV_X0Y0 Top half: DCM_ADV_X0Y2, DCM_ADV_X0Y3, PLL_ADV_X0Y1 6 12 Bottom half: DCM_ADV_X0Y0, DCM_ADV_X0Y1, PLL_ADV_X0Y0 DCM_ADV_X0Y2, DCM_ADV_X0Y3, PLL_ADV_X0Y1 DCM_ADV_X0Y4, DCM_ADV_X0Y5, PLL_ADV_X0Y2 Top half: DCM_ADV_X0Y6, DCM_ADV_X0Y7, PLL_ADV_X0Y3 DCM_ADV_X0Y8, DCM_ADV_X0Y9, PLL_ADV_X0Y4 DCM_ADV_X0Y10, DCM_ADV_X0Y11, PLL_ADV_X0Y5 Site Names
Device XC5VLX20T
DCM Summary
The Digital Clock Managers (DCMs) in Virtex-5 FPGAs provide a wide range of powerful clock management features: Clock Deskew The DCM contains a delay-locked loop (DLL) to completely eliminate clock distribution delays, by deskewing the DCM's output clocks with respect to the input clock. The DLL contains delay elements (individual small buffers) and control logic. The incoming clock drives a chain of delay elements, thus the output of every delay element represents a version of the incoming clock delayed at a different point. The control logic contains a phase detector and a delay-line selector. The phase detector compares the incoming clock signal (CLKIN) against a feedback input (CLKFB) and steers the delay line selector, essentially adding delay to the output of DCM until the CLKIN and CLKFB coincide.
48
www.xilinx.com
DCM Summary
Frequency Synthesis Separate outputs provide a doubled frequency (CLK2X and CLK2X180). Another output, CLKDV, provides a frequency that is a specified fraction of the input frequency. Two other outputs, CLKFX and CLKFX180, provide an output frequency derived from the input clock by simultaneous frequency division and multiplication. The user can specify any integer multiplier (M) and divisor (D) within the range specified in the DCM Timing Parameters section of the Virtex-5 FPGA Data Sheet. An internal calculator determines the appropriate tap selection, to make the output edge coincide with the input clock whenever mathematically possible. For example, M = 9 and D = 5, multiply the frequency by 1.8, and the output rising edge is coincident with the input rising edge after every fifth input period, or after every ninth output period.
Phase Shifting The DCM allows coarse and fine-grained phase shifting. The coarse phase shifting uses the 90, 180, and 270 phases of CLK0 to make CLK90, CLK180, and CLK270 clock outputs. The 180 phase of CLK2X and CLKFX provide the respective CLK2X180 and CLKFX180 clock outputs. There are also four modes of fine-grained phase-shifting; fixed, variable-positive, variable-center, and direct modes. Fine-grained phase shifting allows all DCM output clocks to be phase-shifted with respect to CLKIN while maintaining the relationship between the coarse phase outputs. With fixed mode, a fixed fraction of phase shift can be defined during configuration and in multiples of the clock period divided by 256. Using the variable-positive and variable-center modes the phase can be dynamically and repetitively moved forward and backwards by 1/256 of the clock period. With the direct mode the phase can be dynamically and repetitively moved forward and backwards by the value of one DCM_TAP. See the DCM Timing Parameters section in the Virtex-5 FPGA Data Sheet.
Dynamic Reconfiguration There is a bus connection to the DCM to change DCM attributes without reconfiguring the rest of the device. For more information, see the Dynamic Reconfiguration chapter of the Virtex-5 FPGA Configuration Guide. The DADDR[6:0], DI[15:0], DWE, DEN, DCLK inputs and DO[15:0], and DRDY outputs are available to dynamically reconfigure select DCM functions. With dynamic reconfiguration, DCM attributes can be changed to select a multiply (M) or divide (D) from the currently configured settings.
www.xilinx.com
49
DCM Primitives
The DCM primitives DCM_BASE and DCM_ADV are shown in Figure 2-2.
X-Ref Target - Figure 2-2
DCM_BASE
CLKIN CLKFB RST CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180 LOCKED
DCM_ADV
CLKIN CLKFB RST CLK0 CLK90 CLK180 CLK270
PSINCDEC CLK2X PSEN CLK2X180 PSCLK CLKDV DADDR[6:0] CLKFX DI[15:0] CLKFX180 DWE LOCKED DEN DCLK PSDONE DO[15:0] DRDY
ug190_2_02_042706
Figure 2-2:
DCM Primitives
DCM_BASE Primitive
The DCM_BASE primitive accesses the basic frequently used DCM features and simplifies the user-interface ports. The clock deskew, frequency synthesis, and fixed-phase shifting features are available to use with DCM_BASE. Table 2-2 lists the available ports in the DCM_BASE primitive. Table 2-2: DCM_BASE Primitive
Port Names CLKIN, CLKFB RST CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, CLKDV, CLKFX, CLKFX180 LOCKED Available Ports Clock Input Control and Data Input Clock Output Status and Data Output
50
www.xilinx.com
DCM Ports
DCM_ADV Primitive
The DCM_ADV primitive has access to all DCM features and ports available in DCM_BASE plus additional ports for the dynamic reconfiguration feature. It is a superset of the DCM_BASE primitive. DCM_ADV uses all the DCM features including clock deskew, frequency synthesis, fixed or variable phase shifting, and dynamic reconfiguration. Table 2-3 lists the available ports in the DCM_ADV primitive. Table 2-3: DCM_ADV Primitive
Port Names 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 Available Ports Clock Input Control and Data Input Clock Output Status and Data Output
DCM Ports
There are four types of DCM ports available in the Virtex-5 architecture: DCM Clock Input Ports DCM Control and Data Input Ports DCM Clock Output Ports DCM Status and Data Output Ports
www.xilinx.com
51
Figure 2-9 illustrates clock forwarding with external feedback configuration. The feedback clock input signal can be driven by one of the following buffers: 1. IBUFG Global Clock Input Buffer This is the preferred source for an external feedback configuration. When an IBUFG drives a CLKFB pin of a DCM in the same top or bottom half of the device, the pad to DCM skew is compensated for deskew. 2. 3. BUFGCTRL Internal Global Clock Buffer This is an internal feedback configuration driven by CLK0. IBUF Input Buffer This is an external feedback configuration. When IBUF is used, the PAD to DCM input skew is not compensated and performance can not be guaranteed.
The frequency range of PSCLK is defined by PSCLK_FREQ_LF/HF. See the Virtex-5 FPGA Data Sheet. This input must be tied to ground when the CLKOUT_PHASE_SHIFT attribute is set to NONE or FIXED.
52
www.xilinx.com
DCM Ports
The frequency range of DCLK is described in the Virtex-5 FPGA Data Sheet. When dynamic reconfiguration is not used, this input must be tied to ground. See the dynamic reconfiguration chapter in the Virtex-5 FPGA Configuration Guide for more information.
www.xilinx.com
53
54
www.xilinx.com
DCM Ports
www.xilinx.com
55
DO[1]
CLKIN stopped
DO[2]
CLKFX stopped
56
www.xilinx.com
DCM Ports
Table 2-4:
DO Bit DO[3]
DO[15:4]
Not assigned
When LOCKED is Low (during reset or the locking process), all the status signals are deasserted Low.
www.xilinx.com
57
DCM Attributes
A handful of DCM attributes govern the DCM functionality. Table 2-6 summarizes all the applicable DCM attributes. This section provides a detailed description of each attribute. For more information on applying these attributes in UCF, VHDL, or Verilog code, refer to the Constraints Guide at: http://www.support.xilinx.com/support/software_manuals.htm.
CLKDV_DIVIDE Attribute
The CLKDV_DIVIDE attribute controls the CLKDV frequency. The source clock frequency is divided by the value of this attribute. The possible values for CLKDV_DIVIDE are: 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, or 16. The default value is 2. In the low frequency mode, any CLKDV_DIVIDE value produces a CLKDV output with a 50/50 duty-cycle. In the high frequency mode, the CLKDV_DIVIDE value must be set to an integer value to produce a CLKDV output with a 50/50 duty-cycle. For non-integer CLKDV_DIVIDE values, the CLKDV output duty cycle is shown in Table 2-5. Table 2-5: Non-Integer CLKDV_DIVIDE
CLKDV Duty Cycle in High Frequency Mode (High Pulse/Low Pulse Value) 1/3 2/5 3/7 4/9 5/11 6/13 7/15
CLKIN_PERIOD Attribute
The CLKIN_PERIOD attribute specifies the source clock period (in nanoseconds). The default value is 0.0 ns. Setting this attribute to the input period values produces the best results.
58
www.xilinx.com
DCM Attributes
CLKIN_DIVIDE_BY_2 Attribute
The CLKIN_DIVIDE_BY_2 attribute is used to enable a toggle flip-flop in the input clock path to the DCM. When set to FALSE, the effective CLKIN frequency of the DCM equals the source clock frequency driving the CLKIN input. When set to TRUE, the CLKIN frequency is divided by two before it reaches the rest of the DCM. Thus, the DCM sees half the frequency applied to the CLKIN input and operates based on this frequency. For example, if a 100 MHz clock drives CLKIN, and CLKIN_DIVIDE_BY_2 is set to TRUE; then the effective CLKIN frequency is 50 MHz. Thus, CLK0 output is 50 MHz and CLK2X output is 100 MHz. The effective CLKIN frequency must be used to evaluate any operation or specification derived from CLKIN frequency. The possible values for CLKIN_DIVIDE_BY_2 are TRUE and FALSE. The default value is FALSE.
CLKOUT_PHASE_SHIFT Attribute
The CLKOUT_PHASE_SHIFT attribute indicates the mode of the phase shift applied to the DCM outputs. The possible values are NONE, FIXED, VARIABLE_POSITIVE, VARIABLE_CENTER, or DIRECT. The default value is NONE. When set to NONE, a phase shift cannot be performed and a phase-shift value has no effect on the DCM outputs. When set to FIXED, the DCM outputs are phase-shifted by a fixed phase from the CLKIN. The phase-shift value is determined by the PHASE_SHIFT attribute. If the CLKOUT_PHASE_SHIFT attribute is set to FIXED or NONE, then the PSEN, PSINCDEC, and the PSCLK inputs must be tied to ground. When set to VARIABLE_POSITIVE, the DCM outputs can be phase-shifted in variable mode in the positive range with respect to CLKIN. When set to VARIABLE_CENTER, the DCM outputs can be phase-shifted in variable mode, in the positive and negative range with respect to CLKIN. If set to VARIABLE_POSITIVE or VARIABLE_CENTER, each phase-shift increment (or decrement) increases (or decreases) the phase shift by a period of 1/256 x CLKIN period. When set to DIRECT, the DCM output can be phase-shifted in variable mode in the positive range with respect to CLKIN. Each phase-shift increment/decrement will increase/decrease the phase shift by one DCM_TAP. See the Virtex-5 FPGA Data Sheet. The starting phase in the VARIABLE_POSITIVE and VARIABLE_CENTER modes is determined by the phase-shift value. The starting phase in the DIRECT mode is always zero, regardless of the value specified by the PHASE_SHIFT attribute. Thus, the PHASE_SHIFT attribute should be set to zero when DIRECT mode is used. A non-zero phase-shift value for DIRECT mode can be loaded to the DCM using Dynamic Reconfiguration Ports in the Virtex-5 FPGA Configuration Guide.
CLK_FEEDBACK Attribute
The CLK_FEEDBACK attribute determines the type of feedback applied to the CLKFB. The possible values are 1X or NONE. The default value is 1X. When set to 1X, CLKFB pin must be driven by CLK0. When set to NONE leave the CLKFB pin unconnected.
www.xilinx.com
59
DESKEW_ADJUST Attribute
The DESKEW_ADJUST attribute affects the amount of delay in the feedback path. The possible values are SYSTEM_SYNCHRONOUS, SOURCE_SYNCHRONOUS, 0, 1, 2, 3, ..., or 31. The default value is SYSTEM_SYNCHRONOUS. For most designs, the default value is appropriate. In a source-synchronous design, set this attribute to SOURCE_SYNCHRONOUS. The remaining values should only be used after consulting with Xilinx. For more information, consult the Source-Synchronous Settingsection.
DFS_FREQUENCY_MODE Attribute
The DFS_FREQUENCY_MODE attribute specifies the frequency mode of the digital frequency synthesizer (DFS). The possible values are Low and High. The default value is Low. The frequency ranges for both frequency modes are specified in the Virtex-5 FPGA Data Sheet. DFS_FREQUENCY_MODE determines the frequency range of CLKIN, CLKFX, and CLKFX180.
DLL_FREQUENCY_MODE Attribute
The DLL_FREQUENCY_MODE attribute specifies either the High or Low frequency mode of the delay-locked loop (DLL). The default value is Low. The frequency ranges for both frequency modes are specified in the Virtex-5 FPGA Data Sheet.
DUTY_CYCLE_CORRECTION Attribute
The DUTY_CYCLE_CORRECTION attribute controls the duty cycle correction of the 1x clock outputs: CLK0, CLK90, CLK180, and CLK270. The possible values are TRUE and FALSE. The default value is TRUE. When set to TRUE, the 1x clock outputs are duty cycle corrected to be within specified limits. See the Virtex-5 FPGA Data Sheet for details. It is strongly recommended to always set the DUTY_CYCLE_CORRECTION attribute to TRUE. Setting this attribute to FALSE does not necessarily produce output clocks with the same duty cycle as the source clock.
DCM_PERFORMANCE_MODE Attribute
The DCM_PERFORMANCE_MODE attribute allows the choice of optimizing the DCM either for high frequency and low jitter or for low frequency and a wide phase-shift range. The attribute values are MAX_SPEED and MAX_RANGE. The default value is MAX_SPEED. When set to MAX_SPEED, the DCM is optimized to produce high frequency clocks with low jitter. However, the phase-shift range is smaller than when MAX_RANGE is selected. When set to MAX_RANGE, the DCM is optimized to produce low-frequency clocks with a wider phase-shift range. The DCM_PERFORMANCE_MODE affects the following specifications: DCM input and output frequency range, phase-shift range, output jitter, DCM_TAP, CLKIN_CLKFB_PHASE, CLKOUT_PHASE, and dutycycle precision. The Virtex-5 FPGA Data Sheet specifies these values. For most cases, the DCM_PERFORMANCE_MODE attribute should be set to MAX_SPEED (default). Consider changing to MAX_RANGE only in the following situations: The frequency needs to be below the low-frequency limit of the MAX_SPEED setting. A greater absolute phase-shift range is required.
60
www.xilinx.com
DCM Attributes
FACTORY_JF Attribute
The Factory_JF attribute affects the DCMs jitter filter characteristics. This attribute controls the DCM tap update rate. The default value is 0xF0F0 corresponding to DLL_FREQUENCY_MODE = LOW and DLL_FREQUENCY_MODE = HIGH.
PHASE_SHIFT Attribute
The PHASE_SHIFT attribute determines the amount of phase shift applied to the DCM outputs. This attribute can be used in both fixed or variable phase-shift mode. If used with variable mode, the attribute sets the starting phase shift. When CLKOUT_PHASE_SHIFT = VARIABLE_POSITIVE, the PHASE_SHIFT value range is 0 to 255. When CLKOUT_PHASE_SHIFT = VARIABLE_CENTER or FIXED, the PHASE_SHIFT value range is 255 to 255. When CLKOUT_PHASE_SHIFT = DIRECT, the PHASE_SHIFT value range is 0 to 1023. The default value is 0. Refer to the Phase Shifting section for information on the phase-shifting operation and its relationship with the CLKOUT_PHASE_SHIFT and PHASE_SHIFT attributes.
STARTUP_WAIT Attribute
The STARTUP_WAIT attribute determines whether the DCM waits in one of the startup cycles for the DCM to lock. The possible values for this attribute are TRUE and FALSE. The default value is FALSE. When STARTUP_WAIT is set to TRUE, and the LCK_cycle BitGen option is used, then the configuration startup sequence waits in the startup cycle specified by LCK_cycle until the DCM is locked. Table 2-6: DCM Attributes
Description
This attribute controls CLKDV such that the source clock is divided by N. This feature provides automatic duty cycle correction such that the CLKDV output pin has a 50/50 duty cycle always in low-frequency mode, as well as for all integer values of the division factor N in high-frequency mode. CLKFX_DIVIDE CLKFX_MULTIPLY CLKIN_PERIOD This specifies the source clock period to help DCM adjust for optimum CLKFX/CLKFX180 outputs. This attribute allows for the input clock frequency to be divided in half when such a reduction is necessary to meet the DCM input clock frequency requirements. Real: 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0, 5.5, 6.0, 6.5, 7.0, 7.5, 8, 9, 10, 11, 12, 13, 14, 15, 16
Values
Default Value
2.0
1 4 0.0
CLKIN_DIVIDE_BY_2
FALSE
www.xilinx.com
61
Table 2-6:
Values
String: NONE or FIXED or VARIABLE_POSITIVE or VARIABLE_CENTER or DIRECT String: SYSTEM_SYNCHRONOUS or SOURCE_SYNCHRONOUS String: LOW or HIGH String: LOW or HIGH Boolean: TRUE or FALSE
Default Value
NONE
DESKEW_ADJUST
This affects the amount of delay in the feedback path, and should be used for source-synchronous interfaces. This specifies the frequency mode of the frequency synthesizer. This specifies the frequency mode of the DLL. This controls the DCM 1X outputs (CLK0, CLK90, CLK180, and CLK270), to exhibit a 50/50 duty cycle. Leave this attribute set at the default value. Allows selection between maximum frequency/ minimum jitter, and low frequency/maximum phase-shift range DLL_FREQUENCY_MODE=LOW default (0xF0F0). DLL_FREQUENCY_MODE=HIGH default (0xF0F0).
SYSTEM_ SYNCHRONOUS
DCM_PERFORMANCE_MODE
MAX_SPEED
FACTORY_JF
BIT_VECTOR
0xF0F0
PHASE_SHIFT
This specifies the phase-shift numerator. The value range depends on CLKOUT_PHASE_SHIFT and clock frequency. When this attribute is set to TRUE, the configuration startup sequence waits in the specified cycle until the DCM locks.
STARTUP_WAIT
FALSE
62
www.xilinx.com
Clock Deskew
The Virtex-5 FPGA DCM offers a fully digital, dedicated, on-chip clock deskew. The deskew feature provides zero propagation delay between the source clock and output clock, low clock skew among output clock signals distributed throughout the device, and advanced clock domain control. The deskew feature also functions as a clock mirror of a board-level clock serving multiple devices. This is achieved by driving the CLK0 output off-chip to the board (and to other devices on the board) and then bringing the clock back in as a feedback clock. See the Application Examples section. Taking advantage of the deskew feature greatly simplifies and improves system-level design involving high-fanout, high-performance clocks.
CLKIN
CLKOUT
Control
CLKFB
ug190_2_03_032506
Figure 2-3:
To provide the correct clock deskew, the DCM depends on the dedicated routing and resources used at the clock source and feedback input. An additional delay element (see Deskew Adjust) is available to compensate for the clock source or feedback path. The Xilinx ISE tools analyze the routing around the DCM to determine if a delay must be inserted to compensate for the clock source or feedback path. Thus, using dedicated routing is required to achieve predictable deskew.
www.xilinx.com
63
64
www.xilinx.com
Output Clocks
Any or all of the DCMs nine clock outputs can be used to drive a global clock network. The fully-buffered global clock distribution network minimizes clock skew caused by loading differences. By monitoring a sample of the output clock (CLK0), the deskew circuit compensates for the delay on the routing network, effectively eliminating the delay from the external input port to the individual clock loads within the device. Output pin connectivity carries some restrictions. The DCM clock outputs must drive a global clock buffer BUFGCTRL. The DCM clock outputs can not drive general routing. To use dedicated routing, the DCM clock outputs must drive BUFGCTRLs on the same top or bottom half of the device. If the DCM and BUFGCTRL are not on the same top or bottom half, local routing is used and the DCM might not deskew properly. Do not use the DCM output clock signals until after activation of the LOCKED signal. Prior to the activation of the LOCKED signal, the DCM output clocks are not valid.
2. 3.
Deskew Adjust
The DESKEW_ADJUST attribute sets the value for a configurable, variable-tap delay element to control the amount of delay added to the DCM feedback path (see Figure 2-4).
www.xilinx.com
65
Data Input
VCCO
FF
D Q Into the FPGA
DCM
CLKIN CLKFB DCM Power Regulator VCCAUX CLK0
Feedback Tap Delays System-Synchronous Default Setting Source-Synchronous Setting (Delay set to zero) VCCINT
ug190_2_04_042506
Figure 2-4:
This delay element allows adjustment of the effective clock delay between the clock source and CLK0 to guarantee non-positive hold times of IOB input flip-flop in the device. Adding more delay to the DCM feedback path decreases the effective delay of the actual clock path from the FPGA clock input pin to the clock input of any flip-flop. Decreasing the clock delay increases the setup time represented in the input flip-flop, and reduces any positive hold times required. The clock path delay includes the delay through the IBUFG, route, DCM, BUFG, and clock-tree to the destination flip-flop. If the feedback delay equals the clock-path delay, the effective clock-path delay is zero.
66
www.xilinx.com
Downstream DCMs when two or more DCMs are cascaded DCMs with external feedback DCMs with an external CLKIN that does not come from a dedicated clock input pin.
Source-Synchronous Setting
When DESKEW_ADJUST is set to source-synchronous mode, the DCM feedback delay element is set to zero. As shown in Figure 2-4, in source-synchronous mode, the DCM clock feedback delay element is set to minimize the sampling window. This results in a more positive hold time and a longer clock-to-out compared to system-synchronous mode. The source-synchronous switching characteristics section in the Virtex-5 FPGA Data Sheet reflects the various timing parameters for the source-synchronous design when the DCM is in source-synchronous mode.
Frequency Synthesis
The DCM provides several flexible methods for generating new clock frequencies. Each method has a different operating frequency range and different AC characteristics. The CLK2X and CLK2X180 outputs double the clock frequency. The CLKDV output provides a divided output clock (lower frequency) with division options of 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, and 16. The DCM also offers fully digital, dedicated frequency-synthesizer outputs CLKFX and its opposite phase CLKFX180. The output frequency can be any function of the input clock frequency described by M D, where M is the multiplier (numerator) and D is the divisor (denominator). The frequency synthesized outputs can drive the global-clock routing networks within the device. The well-buffered global-clock distribution network minimizes clock skew due to differences in distance or loading.
www.xilinx.com
67
Only when feedback is provided to the CLKFB input of the DCM is the frequency synthesizer output phase aligned to the clock output, CLK0. The internal operation of the frequency synthesizer is complex and beyond the scope of this document. As long as the frequency synthesizer is within the range specified in the Virtex-5 FPGA Data Sheet, it multiplies the incoming frequencies by the pre-calculated quotient M D and generates the correct output frequencies. For example, assume an input frequency of 50 MHz, M = 25, and D = 8 (M and D values do not have common factors and cannot be reduced). The output frequency is 156.25 MHz although separate calculations, 25 x 50 MHz = 1.25 GHz and 50 MHz 8 = 6.25 MHz, seem to produce separate values outside the range of the input frequency.
Phase Shifting
The DCM provides coarse and fine-grained phase shifting. For coarse-phase control, the CLK0, CLK90, CLK180, and CLK270 outputs are each phase-shifted by of the input clock period relative to each other. Similarly, CLK2X180 and CLKFX180 provide a 180 coarse phase shift of CLK2X and CLKFX, respectively. The coarse phase-shifted clocks are produced from the delay lines of the DLL circuit. The phase relationship of these clocks is retained when CLKFB is not connected. Fine-grained phase shifting uses the CLKOUT_PHASE_SHIFT and PHASE_SHIFT attributes to phase-shift DCM output clocks relative to CLKIN. Since the CLKIN is used as the reference clock, the feedback (CLKFB) connection is required for the phase-shifting circuit to compare the incoming clock with the phase-shifted clock. The rest of this section describes fine-grained phase shifting in the Virtex-5 FPGA DCM.
Phase-Shifting Operation
All nine DCM output clocks are adjusted when fine-grained phase shifting is activated. The phase shift between the rising edges of CLKIN and CLKFB is a specified fraction of the input clock period or a specific amount of DCM_TAP. All other DCM output clocks retain their phase relation to CLK0.
Phase-Shift Range
The allowed phase shift between CLKIN and CLKFB is limited by the phase-shift range. There are two separate phase-shift ranges: PHASE_SHIFT attribute range FINE_SHIFT_RANGE DCM timing parameter range
68
www.xilinx.com
In the FIXED, VARIABLE_POSITIVE, and VARIABLE_CENTER phase-shift mode, the PHASE_SHIFT attribute is in the numerator of the following equation. Phase Shift (ns) = (PHASE_SHIFT/256) PERIODCLKIN Where PERIODCLKIN denotes the effective CLKIN frequency. In VARIABLE_CENTER and FIXED modes, the full range of the PHASE_SHIFT attribute is always 255 to +255. In the VARIABLE_POSITIVE mode, the range of the PHASE_SHIFT attribute is 0 to +255. In the DIRECT phase-shift mode, the PHASE_SHIFT attribute is the multiplication factor in the following equation: Phase Shift (ns) = PHASE_SHIFT DCM_TAP In DIRECT modes, the full range of the PHASE_SHIFT attribute is 0 to 1023. FINE_SHIFT_RANGE represents the total delay achievable by the phase-shift delay line. Total delay is a function of the number of delay taps used in the circuit. The absolute range is specified in the DCM Timing Parameters section of the Virtex-5 FPGA Data Sheet across process, voltage, and temperature. The different absolute ranges are outlined in this section. The fixed mode allows the DCM to insert a delay line in the CLKFB or the CLKIN path. This gives access to the +FINE_SHIFT_RANGE when the PHASE_SHIFT attribute is set to a positive value, and FINE_SHIFT_RANGE when the PHASE_SHIFT attribute is set to a negative value.
Phase-Shift Examples
The following usage examples take both the PHASE_SHIFT attribute and FINE_SHIFT_RANGE into consideration: If PERIODCLKIN = 2 FINE_SHIFT_RANGE, then the PHASE_SHIFT in fixed mode is limited to 128. In variable-positive mode, PHASE_SHIFT is limited to +128. In variable-center mode the PHASE_SHIFT is limited to 64.
www.xilinx.com
69
If PERIODCLKIN = FINE_SHIFT_RANGE, then the PHASE_SHIFT in variablepositive mode is limited to +255. In fixed and variable-center mode the PHASE_SHIFT is limited to 255. If PERIODCLKIN FINE_SHIFT_RANGE, then the PHASE_SHIFT in variablepositive mode is limited to +255. In fixed and variable-center mode the PHASE_SHIFT is limited to 255. For all previously described cases, the direct mode is always limited to +1023.
If the phase shift is limited by the FINE_SHIFT_RANGE, use the coarse-grained phase shift to extend the phase-shift range or set DCM_PERFORMANCE_MODE attribute to MAX_RANGE to increase the FINE_SHIFT_RANGE. Figure 2-5 illustrates using CLK90, CLK180, and CLK270 outputs assuming FINE_SHIFT_RANGE = 10 ns.
X-Ref Target - Figure 2-5
10 ns For frequency 100 MHz (period 10 ns) CLK0 PHASE_SHIFT = 0 - 255 covers the whole range of period. 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. For frequency between 25 - 50 MHz (period 20 - 40 ns). At 25 MHz, use CLK0 PHASE_SHIFT= 0 - 63 for the first 10 ns. Use CLK90 with PHASE_SHIFT= 0 - 63 for the next 10 ns. Use CLK180 with PHASE_SHIFT= 0 - 63 for the next 10 ns. Use CLK270 with PHASE_SHIFT= 0 - 63 for the last 10 ns. CLK180(50 MHz)
10 ns
10 ns
10 ns
CLK0(100 MHz)
Figure 2-5:
In variable mode, the phase-shift factor is changed by activating PSEN for one period of PSCLK. At the PSCLK clock cycle where PSEN is activated, the level of PSINCDEC input determines whether the phase-shift increases or decreases. A High on PSINCDEC increases the phase shift, and a Low decreases the phase shift. After the deskew circuit increments or decrements, the signal PSDONE is asserted High for a single PSCLK cycle. This allows the next change to be performed. The user interface and the physical implementation are different. The user interface describes the phase shift as a fraction of the clock period (N/256). The physical implementation adds the appropriate number of buffer stages (each DCM_TAP) to the clock delay. The DCM_TAP granularity limits the phase resolution at higher clock frequencies. All phase-shift modes, with the exception of DIRECT mode, are temperature and voltage adjusted. Hence, a VCC or temperature adjustment does not change the phase shift. The DIRECT phase shift is not temperature or voltage adjusted since it directly controls
70
www.xilinx.com
DCM_TAP. Changing the ratio of VCC/temperature results in a phase-shift change proportional to the size of the DCM_TAP at the specific voltage and temperature.
PSCLK
PSEN
PSDONE
PSINCDEC
ug190_2_06_032506
Figure 2-6:
When PSEN is activated after the phase-shift counter has reached the maximum value of PHASE_SHIFT, the PSDONE is still pulsed High for one PSCLK period some time after the PSEN is activated (as illustrated in Figure 2-6). However, the phase-shift overflow pin, STATUS(0), or DO(0) is High to flag this condition, and no phase adjustment is performed.
www.xilinx.com
71
Phase-Shift Overflow
The phase-shift overflow (DO[0]) status signal is asserted when either of the following conditions is true: The DCM is phase-shifted beyond the allowed phase-shift value. In this case, the phase-shift overflow signal is asserted High when the phase shift is decremented beyond 255 and incremented beyond +255 for VARIABLE_CENTER mode, incremented beyond +255 for VARIABLE_POSITIVE mode, or decremented beyond 0 and incremented beyond 1023 for DIRECT mode. The DCM is phase-shifted beyond the absolute range of the phase-shift delay line. In this case, the phase-shift overflow signal is asserted High when the phase-shift in time (ns) exceeds the FINE_SHIFT_RANGE/2 in the VARIABLE_CENTER mode, the +FINE_SHIFT_RANGE in the VARIABLE_POSITIVE mode, or exceeds 0 to +FINE_SHIFT_RANGE in the DIRECT mode. The phase-shift overflow signal can toggle once it is asserted. The condition determining if the delay line is exceeded is calibrated dynamically. Therefore, at the boundary of exceeding the delay line, it is possible for the phase-shift overflow signal to assert and deassert without a change in phase shift. Once asserted, it remains asserted for at least 40 CLKIN cycles. If the DCM is operating near the FINE_SHIFT_RANGE limit, do not use the phase-shift overflow signal as a flag to reverse the phase shift direction. When the phase-shift overflow is asserted, deasserted, then asserted again in a short phase shift range, it can falsely reverse the phase shift direction. Instead, use a simple counter to track the phase shift value and reverse the phase shift direction (PSINCDEC) only when the counter reaches a previously determined maximum/minimum phase shift value. For example, if the phase shift must be within 0 to 128, set the counter to toggle PSINCDEC when it reaches 0 or 128.
Phase-Shift Characteristics
Offers fine-phase adjustment with a resolution of 1/256 of the clock period (or one DCM_TAP, whichever is greater). It can be dynamically changed under user control. The phase-shift settings affect all nine DCM outputs. VCC and temperature do not affect the phase shift except in direct phase-shift mode. In either fixed or variable mode, the phase-shift range can be extended by choosing CLK90, CLK180, or CLK270, rather than CLK0, choosing CLK2X180 rather than CLK2X, or choosing CLKFX180 rather than CLKFX. Even at 25 MHz (40 ns period), the fixed mode coupled with the various CLK phases allows shifting throughout the entire input clock period range. MAX_RANGE mode extends the phase-shift range. The phase-shifting (DPS) function in the DCM requires the CLKFB for delay adjustment. Because CLKFB must be from CLK0, the DLL output is used. The minimum CLKIN frequency for the DPS function is determined by DLL frequency mode.
72
www.xilinx.com
Dynamic Reconfiguration
The Dynamic Reconfiguration Ports (DRPs) can update the initial DCM settings without reloading a new bit stream to the FPGA. The DRP address mapping changed in Virtex-5 FPGAs. The Virtex-5 FPGA Configuration Guide provides more information on using DRPs. Specific to the DCM, DRPs allow dynamic adjustment of the CLKFX_MULTIPLY(M) and CLKFX_DIVIDE(D) values to produce a new CLKFX frequency. The following steps are required when using DRPs to load new M and D values: Subtract the desired M and D values by one. For example, if the desired M/D = 9/4, then load M/D = 8/3. Hold DCM in reset (assert RST signal) and release it after the new M and D values are written. The CLKFX outputs can be used after LOCKED is asserted High again. Read DADDR0 to restore the default status on D0. Release RST.
IBUFG to DCM
Virtex-5 devices contain 20 clock inputs. These clock inputs are accessible by instantiating the IBUFG. Each top and bottom half of a Virtex-5 device contains 10 IBUFGs. Any of the IBUFG in top or bottom half of the Virtex-5 device can drive the clock input pins (CLKIN, CLKFB, PSCLK, or DCLK) of a DCM located in the same top/bottom half of the device.
DCM to BUFGCTRL
Any DCM clock output can drive any BUFGCTRL input in the same top/bottom half of the device. There are no restrictions on how many DCM outputs can be used simultaneously.
BUFGCTRL to DCM
Any BUFGCTRL can drive any DCM in the Virtex-5 devices. However, only up to ten dedicated clock routing resources exist in a particular clock region. Since the clock routing is accessed via the BUFGCTRL outputs, this indirectly limits the BUFGCTRL to DCM connection. If ten BUFGCTRL outputs are already accessing a clock region, and a DCM is in that region, then no additional BUFGCTRL can be used in that region, including a connection to the CLKFB pin of the DCM.
www.xilinx.com
73
CLKIN DCM1 CLKFB PLL to DCM Input DCM to PLL Input CLKIN PLL CLKFBIN DCM to PLL Input PLL to DCM Input CLKIN DCM2 CLKFB
ug190_2_07_072307
Figure 2-7:
74
www.xilinx.com
Application Examples
Application Examples
The Virtex-5 FPGA DCM can be used in a variety of creative and useful applications. The following examples show some of the more common applications.
Standard Usage
The circuit in Figure 2-8 shows DCM_BASE implemented with internal feedback and access to RST and LOCKED pins. This example shows the simplest use case for a DCM.
X-Ref Target - Figure 2-8
IBUFG CLKIN
DCM_BASE
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180 LOCKED
BUFG
OBUF
ug190_2_08_032506
Figure 2-8:
Standard Usage
www.xilinx.com
75
ODDR
IBUFG CLKIN IBUFG CLKFB
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG D1 D2 GND C Q
LOCKED DO(15:0)
UG190_2_09_042308
Figure 2-9: Board-Level Clock Using DDR Register with External Feedback
X-Ref Target - Figure 2-10
VCC
ODDR
IBUFG CLKIN CLKFB
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG D1 D2 GND C Q
LOCKED DO(15:0)
ug190_2_11_032506
Figure 2-10:
76
www.xilinx.com
Application Examples
www.xilinx.com
77
Virtex-5 FPGA
VCC
BUFG GND
ODDR D1 D2 C Q
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
OBUF
to RST
DCM_ADV
CLKIN CLKFB RST PSINCDEC PSEN PSCLK DADDR[6:0] DI[15:0] DWE DEN DCLK CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
LOCKED DO[15:0]
Virtex-5 FPGA
BUFG
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
LOCKED DO(15:0)
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
Figure 2-11: Board Deskew with Internal Deskew Interfacing to Other Virtex Devices
78
www.xilinx.com
Application Examples
The example in Figure 2-12 shows an interface from Virtex-5 FPGAs to components other than Virtex FPGAs.
X-Ref Target - Figure 2-12
Virtex-5 FPGA
VCC
BUFG GND
ODDR D1 D2 C Q
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
LOCKED DO[15:0]
BUFG
DCM_ADV
CLKIN CLKFB RST PSINCDEC PSEN PSCLK DADDR[6:0] DI[15:0] DWE DEN DCLK CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
LOCKED DO[15:0]
...non-Virtex chips
ug190_2_13_032506
Figure 2-12:
www.xilinx.com
79
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG
CLKA
BUFGMUX
I0 LOCKED DO(15:0)
I0 S
IBUFG CLKIN
DCM_ADV
CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG
CLKB
CLKFB RST PSINCDEC PSEN PSCLK DADDR[6:0] DI[15:0] DWE DEN DCLK
LOCKED DO(15:0)
ug190_2_14_032506
Figure 2-13:
80
www.xilinx.com
Application Examples
PLL
CLKOUT0 CLKOUT1 CLKOUT2 CLKOUT3 CLKOUT4 CLKOUT5 CLKFBOUT
BUFG
DCM
CLKIN CLKFBIN RST CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG
ug190_2_15_040906
Figure 2-14:
www.xilinx.com
81
It is also possible to use the DCM to drive a PLL. This setup reduces the overall jitter of both the source clock and the DCM clock output. In this case, only up to two of the DCM output clocks can drive the PLL. Therefore, only up to two DCM clocks can access the PLL and benefit from the reduced jitter. Figure 2-15 and Figure 2-16 illustrate two scenarios of the DCM driving a PLL. Figure 2-15 illustrates the direct connection between DCM and PLL within a CMT. Only one DCM output can drive PLL using the direct connection within a CMT without routing through a global buffer (BUFG). The DCM and PLL can be within the same or different CMTs. Figure 2-16 illustrates two DCMs driving a PLL. In this case, BUFG must also be inserted between the DCM clocks driving the PLL input clocks. The DCM and PLL can be within the same or different CMTs. Refer to Chapter 3, Phase-Locked Loops (PLLs) for more information on PLLs.
X-Ref Target - Figure 2-15
IBUFG
BUFG
DCM
CLKIN CLKFBIN RST CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
PLL
CLKIN1 CLKFBIN RST CLKOUT0 CLKOUT1 CLKOUT2 CLKOUT3 CLKOUT4 CLKOUT5 CLKFBOUT
BUFG
ug190_2_16_040906
Figure 2-15:
82
www.xilinx.com
IBUFG
BUFG
DCM1
CLKIN CLKFBIN RST CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG
PLL
CLKIN1 CLKIN2 CLKFBIN RST CLKOUT0 CLKOUT1 CLKOUT2 CLKOUT3 CLKOUT4 CLKOUT5 CLKFBOUT
BUFG
IBUFG
BUFG
DCM
CLKIN CLKFBIN CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG
ug190_2_18_040906
Figure 2-16:
www.xilinx.com
83
Reset/Lock
In Figure 2-17, the DCM is already locked. After the reset signal is applied, all output clocks are stabilized to the desired values, and the LOCKED signal is asserted.
X-Ref Target - Figure 2-17
ug190_2_18_042406
RESET/LOCK Example
84
www.xilinx.com
Fixed-Phase Shifting
In Figure 2-18, the DCM outputs the correct frequency. However, the clock outputs are not in phase with the desired clock phase. The clock outputs are phase-shifted to appear sometime later than the input clock, and the LOCKED signal is asserted.
X-Ref Target - Figure 2-18
Clock event 1 appears after the desired phase shifts are applied to the DCM. In this example, the shifts are positive shifts. CLK0 and CLK2X are no longer aligned to CLKIN. However, CLK0, and CLK2X are aligned to each other, while CLK90 and CLK180 remain as 90 and 180 versions of CLK0. The LOCK signal is also asserted once the clock outputs are ready.
www.xilinx.com
85
Variable-Phase Shifting
In Figure 2-19, the CLK0 output is phase-shifted using the dynamic phase-shift adjustments in the synchronous user interface. The PSDONE signal is asserted for one cycle when the DCM completes one phase adjustment. After PSDONE is deasserted, PSEN can be asserted again, allowing an additional phase shift to occur. As shown in Figure 2-19, all the variable-phase shift control and status signals are synchronous to the rising edge of PSCLK.
X-Ref Target - Figure 2-19
CLKIN CLK0
1 2
PSCLK PSEN
TDMCCK_PSEN
PSDONE
TDMCCK_PSINCDEC
TDMCKO_PSDONE
PSINCDEC
D.C.
D.C.
ug190_2_20_0042406
At TDMCCK_PSEN, before clock event 1, PSEN is asserted. PSEN must be active for exactly one clock period; otherwise, a single increment/decrement of phase shift is not guaranteed. Also, the PSINCDEC value at TDMCCK_PSINCDEC, before clock event 1, determines whether it is an increment (logic High) or a decrement (logic Low). Clock Event 2 At TDMCKO_PSDONE, after clock event 2, PSDONE is asserted to indicate one increment or decrement of the DCM outputs. PSDONE is High for exactly one clock period when the phase shift is complete. The time required for a complete phase shift varies. As a result, PSDONE must be monitored for phase-shift status.
86
www.xilinx.com
Status Flags
The example in Figure 2-20 shows the behavior of the status flags in the event of a phaseshift overflow and CLKIN/CLKFB/CLKFX failure.
X-Ref Target - Figure 2-20
CLKIN
3
CLKFB
2
DO(2)
1
Figure 2-20: Status Flags Example Clock Event 1 Prior to the beginning of this timing diagram, CLK0 (not shown) is already phaseshifted at its maximum value. At clock event 1, PSDONE is asserted. However, since the DCM has reached its maximum phase-shift capability no phase adjustment is performed. Instead, the phase-shift overflow status pin DO(0) is asserted to indicate this condition. Clock Event 2 The CLKFX output stops toggling. Within 257 to 260 clock cycles after this event, the CLKFX stopped status DO(2) is asserted to indicate that the CLKFX output stops toggling. Clock Event 3 The CLKFB input stops toggling. Within 257 to 260 clock cycles after this event, the CLKFB stopped status DO(3) is asserted to indicate that the CLKFB output stops toggling. Clock Event 4 The CLKIN input stops toggling. Within 9 clock cycles after this event, DO(1) is asserted to indicate that the CLKIN output stops toggling.
www.xilinx.com
87
Legacy Support
The Virtex-5 FPGA DCMs (DCM_BASE and DCM_ADV) have exactly the same port names as the Virtex-4 FPGA DCMs. However, the DRP address mapping has changed. Refer to the Virtex-5 FPGA Configuration Guide for more information. The Virtex-5 device supports the Virtex-II family and Virtex-II Pro FPGA DCM primitives. The mapping of Virtex-II or Virtex-II Pro FPGA DCMs to Virtex-5 FPGA DCM_ADVs are as follows: CLKIN, CLKFB, PSCLK, PSINDEC, PSEN, RST, CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, CLKFX, CLKFX180, CLKDV, PSDONE, LOCKED of Virtex-5 FPGA primitives (DCM_BASE/DCM_ADV) map to the same corresponding pins of a Virtex-II or Virtex-II Pro FPGA DCM. Dynamic reconfiguration pins of Virtex-5 FPGA DCM_ADV are not accessible when a Virtex-II or Virtex-II Pro FPGA DCM is used, except for DO[15:0]. DO[7:0] pins of Virtex-5 FPGA DCM_ADV map to Status[7:0] of the Virtex-II or Virtex-II Pro FPGA DCMs. DO[15:8] of DCM_ADV are not available when using Virtex-II or Virtex-II Pro FPGA DCMs.
88
www.xilinx.com
Chapter 3
www.xilinx.com
89
From any IBUFG implementation From any BUFG implementation DCM1 To any BUFG implementation
PLL
clkout_pll<5:0>
DCM2
UG190_c3_01_022709
Figure 3-1:
D Clock Pin
PFD
CP
LF
VCO
O0 O1 O2
M O3 O4 O5
ug190_3_02_030506
Figure 3-2:
90
www.xilinx.com
Introduction
Input muxes select the reference and feedback clocks from either the IBUFG, BUFG, IBUF, PLL outputs, or one of the DCMs. Each clock input has a programmable counter D. The Phase-Frequency Detector (PFD) compares both phase and frequency of the input (reference) clock and the feedback clock. Only the rising edges are considered because as long as a minimum High/Low pulse is maintained, the duty cycle is not important. The PFD is used to generate a signal proportional to the phase and frequency between the two clocks. This signal drives the Charge Pump (CP) and Loop Filter (LF) to generate a reference voltage to the VCO. The PFD produces an up or down signal to the charge pump and loop filter to determine whether the VCO should operate at a higher or lower frequency. When VCO operates at too high of a frequency, the PFD activates a down signal, causing the control voltage to be reduced decreasing the VCO operating frequency. When the VCO operates at too low of a frequency, an up signal will increase voltage. The VCO produces eight output phases. Each output phase can be selected as the reference clock to the output counters (Figure 3-3.) Each counter can be independently programmed for a given customer design. A special counter, M, is also provided. This counter controls the feedback clock of the PLL allowing a wide range of frequency synthesis.
X-Ref Target - Figure 3-3
General Routing Clock Switch Circuit CLKIN1 CLKIN2 Lock Detect Lock Monitor Lock
8-phase taps
PFD
CP
LF
VCO
O0 O1 O2 O3
CLKFBOUT
CLKFB VCO feedback phase selection for negative phase-shift affecting all outputs
O4 O5
UG190_c3_03_022709
Figure 3-3:
www.xilinx.com
91
CLKIN1
CLKOUT0 CLKOUT1
CLKIN1 CLKIN2 CLKFBIN RST CLKINSEL DADDR[4:0] DI[15:0] DWE DEN DCLK REL
CLKOUT0 CLKOUT1 CLKOUT2 CLKOUT3 CLKOUT4 CLKOUT5 CLKFBOUT CLKOUTDCM0 CLKOUTDCM1 CLKOUTDCM2 CLKOUTDCM3 CLKOUTDCM4 CLKOUTDCM5 CLKFBDCM
CLKFBIN RST
LOCKED
PLL_BASE
PLL_ADV
UG190_c3_04_022709
Figure 3-4:
PLL Primitives
PLL_BASE Primitive
The PLL_BASE primitive provides access to the most frequently used features of a stand alone PLL. Clock deskew, frequency synthesis, coarse phase shifting, and duty cycle programming are available to use with the PLL_BASE. The ports are listed in Table 3-1. Table 3-1: PLL_BASE Ports
Port CLKIN, CLKFBIN RST CLKOUT0 to CLKOUT5, CLKFBOUT LOCKED
Description Clock Input Control Inputs Clock Output Status and Data Outputs
92
www.xilinx.com
PLL_ADV Primitive
The PLL_ADV primitive provides access to all PLL_BASE features plus additional ports for clock switching, connectivity to DCMs in the same CMT, and access to the Dynamic Reconfiguration Port (DRP). The ports are listed in Table 3-2. Detailed DRP information can be found in the Virtex-5 FPGA Configuration Guide. Table 3-2: PLL_ADV Ports
Port CLKIN1, CLKIN2, CLKFBIN, DCLK RST, CLKINSEL, DWE, DEN, DADDR, DI, REL(1) CLKOUT0 to CLKOUT5, CLKFBOUT, CLKOUTDCM0 to CLKOUTDCM5, CLKFBDCM LOCKED, DO, DRDY
Description Clock Input Control and Data Input Clock Output Status and Data Output
Notes:
1. REL is used in PMCD mode only. In PLL mode, leave REL unconnected or tied Low.
The Virtex-5 FPGA PLL is a mixed signal block designed to support clock network deskew, frequency synthesis, and jitter reduction. These three modes of operation are discussed in more detail within this section. The Voltage Controlled Oscillator (VCO) operating frequency can be determined by using the following relationship: M Equation 3-1 F VCO = F CLKIN ---D M Equation 3-2 F OUT = F CLKIN -------DO where the M, D, and O counters are shown in Figure 3-3. The six O counters can be independently programmed. For example, O0 can be programmed to do a divide-by-two while O1 is programmed for a divide by three. The only constraint is that the VCO operating frequency must be the same for all the output counters since a single VCO drives all the counters.
www.xilinx.com
93
PLL outputs are programmed to provide a 533 MHz PowerPC processor clock, a 266 MHz PowerPC processor gasket clock, a 178 MHz clock, a 133 MHz memory interface clock, a 66 MHz PCI clock, and a 33 MHz PCI clock. In this example, there are no required phase relationships between the reference clock and the output clocks, but there are required relationships between the output clocks.
X-Ref Target - Figure 3-5
D=1
D0 = 1 D0 = 2 D0 = 3 D0 = 4 D0 = 8 D = 16
PowerPC Processor Core PowerPC Processor Gasket CLB/Fabric Memory Interface PCI-66 PCI-33
UG190_3_05_111808
Jitter Filter
PLLs always reduce the jitter inherent on a reference clock. The PLL can be instantiated as a standalone function to simply support filtering jitter from an external clock before it is driven into the another block (including the DCM). As a jitter filter, it is usually assumed that the PLL acts as a buffer and regenerates the input frequency on the output (e.g., FIN = 100 MHz, FOUT = 100 MHz). In general, greater jitter filtering is possible by using the PLL attribute BANDWIDTH set to Low. Setting the BANDWIDTH to Low can incur an increase in the static offset of the PLL.
Limitations
The PLL has some restrictions that must be adhered to. These are summarized in the PLL electrical specification in the Virtex-5 FPGA Data Sheet. In general, the major limitations are VCO operation range, input frequency, duty cycle programmability, and phase shift.
94
www.xilinx.com
Phase Shift
In many cases, there needs to be a phase shift between clocks. The phase shift resolution in time units is defined as: PS = 1/8 FVCO or D/8MFIN since the VCO can provide eight phase shifted clocks at 45 each. The higher the VCO frequency, the smaller the phase shift resolution. Since the VCO has a distinct operating range, it is possible to bound the phase shift resolution using from 1/8 FVCO_MIN to 1/8 FVCO_MAX. Each output counter is individually programmable allowing each counter to have a different phase shift based on the output frequency of the VCO. Note: Phase shifts other than 45 are possible. A finer phase shift resolution depends on the output duty cycle and 0 value. Consult the architecture wizard for other phase-shift settings.
PLL Programming
Programming of the PLL must follow a set flow to ensure configuration that guarantees stability and performance. This section describes how to program the PLL based on certain design requirements. A design can be implement in two ways, directly through the GUI interface (the PLL Wizard) or directly implementing the PLL through instantiation. Regardless of the method selected, the following information is necessary to program the PLL: Reference clock period Output clock frequencies (up to six maximum) Output clock duty cycle (default is 50%) Output clock phase shift relative in number of clock cycles relative to the fastest output clock. Desired bandwidth of the PLL (default is OPTIMIZED and the bandwidth is chosen in software) Compensation mode (automatically determined by the software) Reference clock jitter in UI (i.e., a percentage of the reference clock period)
www.xilinx.com
95
possible output frequencies for the second output frequency. Continue this process until all the output frequencies are selected. The constraints used to determine the allowed M and D values are shown in the following equations: f IN Equation 3-3 D MIN = roundup -----------------------f PFD MAX f IN D MAX = rounddown ----------------------f PFD MIN f VCOMIN M MIN = roundup ----------------------- D MIN f IN D MAX f VCOMAX M MAX = rounddown ------------------------------------------------f IN Equation 3-4
Equation 3-5
Equation 3-6
Equation 3-7
The goal is to find the M value closest to the ideal operating point of the VCO. The minimum D value is used to start the process. The goal is to make D and M values as small as possible while keeping VCO as high as possible.
PLL Ports
Table 3-3 summarizes the PLL ports. Table 3-4 lists the PLL attributes. Table 3-3: PLL Ports
I/O Input Input Input Input General clock input. Secondary clock input to dynamically switch the PLL reference clock. Feedback clock input. Signal controls the state of the input mux, High = CLKIN1, Low = CLKIN2 Asynchronous reset signal. The RST signal is an asynchronous reset for the PLL. The PLL will synchronously re-enable itself when this signal is released (i.e., PLL reenabled). A reset is required when the input clock conditions change (e.g., frequency). The dynamic reconfiguration address (DADDR) input bus provides a reconfiguration address for the dynamic reconfiguration. When not used, all bits must be assigned zeros. Pin Description
RST
Input
DADDR[4:0]
Input
96
www.xilinx.com
Table 3-3:
DWE
Input
LOCKED
Output
DO[15:0] DRDY
Notes:
Output Output
1. CLKOUTN and CLKOUTDCMN are utilizing the same output counters and can not be operated independently.
www.xilinx.com
97
PLL Attributes
Table 3-4: PLL Attributes
Type String Allowed Values Default Description Attribute COMPENSATION
Specifies the PLL phase SYSTEM_SYNCHRONOUS SYSTEM_ SOURCE_SYNCHRONOUS SYNCHRONOUS compensation for the incoming clock. SYSTEM_SYNCHRONOUS attempts to compensate all clock delay for 0 hold time. SOURCE_SYNCHRONOUS is used when a clock is provided with data and thus phased with the clock. Additional attributes automatically selected by the ISE software: INTERNAL EXTERNAL DCM2PLL PLL2DCM
BANDWIDTH
String
OPTIMIZED
Specifies the PLL programming algorithm affecting the jitter, phase margin and other characteristics of the PLL. Specifies the amount to divide the associated CLKOUT clock output if a different frequency is desired. This number in combination with the CLKFBOUT_MULT and DIVCLK_DIVIDE values will determine the output frequency. Allows specification of the output phase relationship of the associated CLKOUT clock output in number of degrees offset (i.e., 90 indicates a 90 or cycle offset phase offset while 180 indicates a 180 offset or cycle phase offset). Specifies the Duty Cycle of the associated CLKOUT clock output in percentage (i.e., 0.50 will generate a 50% duty cycle). Specifies the amount to multiply all CLKOUT clock outputs if a different frequency is desired. This number, in combination with the associated CLKOUT#_DIVIDE value and DIVCLK_DIVIDE value, will determine the output frequency.
CLKOUT[0:5]_DIVIDE
Integer
CLKOUT[0:5]_PHASE
Real
360.0 to 360.0
0.0
CLKOUT[0:5]_ DUTY_CYCLE
Real
0.01 to 0.99
0.50
CLKFBOUT_MULT
Integer
1 to 64
98
www.xilinx.com
Table 3-4:
Attribute DIVCLK_DIVIDE
CLKFBOUT_PHASE
Real
0.0 to 360.0
0.0
REF_JITTER
Real
0.000 to 0.999
0.100
CLKIN1_PERIOD
Real
1.408 to 52.630
0.000
CLKIN2_PERIOD
Real
1.408 to 52.630
0.000
CLKOUT[0:5]_ DESKEW_ADJUST
String
PPC or None
None
RESET_ON_LOSS _OF_LOCK
String
FALSE
FALSE
www.xilinx.com
99
When the PLL input clocks are driven by the global clock trees (BUFGs), both clock inputs must be connected to the same clock input type. Driving one PLL clock input with a IBUFG and the other with a BUFG is not possible. The following tables map the Virtex-5 FPGA global clock IBUFG pins with respect to CLKIN1 and CLKIN2. PLLs in the top half of the Virtex-5 device are driven by the global clock pins in bank3 and can be paired as listed in Table 3-6. Table 3-6: PLLs in the Top Half Pairing
CLKIN2 IO_L4P_GC_3 IO_L3P_GC_3 IO_L2P_GC_3 IO_L1P_GC_3 IO_L0P_GC_3 CLKIN1 IO_L9P_GC_3 IO_L8P_GC_3 IO_L7P_GC_3 IO_L6P_GC_3 IO_L5P_GC_3
100
www.xilinx.com
PLLs in the bottom half of the Virtex-5 device are driven by the global clock pins in bank4 and can be paired as listed in Table 3-6. Table 3-7: PLLs in the Bottom Half Pairing
CLKIN2 IO_L4P_GC_4 IO_L3P_GC_4 IO_L2P_GC_4 IO_L1P_GC_4 IO_L0P_GC_4 CLKIN1 IO_L9P_GC_4 IO_L8P_GC_4 IO_L7P_GC_4 IO_L6P_GC_4 IO_L5P_GC_4
Other important notes on these pairings: The pin description names do not contain other possible multipurpose functions such as _CC, _VRN, _VRP or _VREF. Only the P-side pins are shown. For differential clock connections use the equivalent N-side pin. Inside the FPGA, only the P-side of the differential pin pair can connect to the CMT. For a mapping to the actual pin numbers consult the Virtex-5 Family Packaging Specifications.
www.xilinx.com
101
Counter Control
The PLL output counters provide a wide variety of synthesized clock using a combination of DIVIDE, DUTY_CYCLE, and PHASE. Figure 3-6 illustrates how the counter settings impact the counter output. The top waveform represents either the output from the VCO in PLL mode.
X-Ref Target - Figure 3-6
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
Figure 3-6:
102
www.xilinx.com
Clock Shifting
The PLL output clocks can be shifted by inserting delay by selecting one of the eight phases in either the reference or the feedback path. Figure 3-7 shows the effect on a clock signal edge at the output of the PLL without any shifting versus the two cases (delay inserted in the feedback path and delay inserted in the reference path).
X-Ref Target - Figure 3-7
original clock dT feedback added delay in feedback path dT reference added delay in reference path
Figure 3-7: Basic Output Clock Shifting
ug190_03_07_032506
www.xilinx.com
103
0 45 90 VCO 8 Phases 135 180 225 270 315 O0 Counter Outputs O1 O2 O3 One Cycle Delay
ug190_03_08_032506
Figure 3-8:
All O counters are equivalent, anything O0 can do, O1 can do. The PLL outputs are flexible when connecting to the global clock network since they are identical. In most cases, this level of detail is imperceptible to the designer as the software and PLL Wizard determines the proper settings through the PLL attributes and Wizard inputs.
ug190_3_09_050906
104
www.xilinx.com
IBUFG 1 2 3 CLKIN1 RST CLKOUT0 CLKOUT2 CLKOUT3 CLKOUT4 CLKOUT5 CLKFBOUT 6 CLKFBIN CLKOUT1 4
PLL
Figure 3-10:
There are certain restrictions on implementing the feedback. The CLKFBOUT output can be used to provide the feedback clock signal. The fundamental restriction is that both input frequencies to the PFD must be identical. Therefore, the following relationship must be met: f IN f VCO ------ = f FB = -----------D M
Equation 3-8
As an example, if IN is 166 MHz, D = 1, M = 3, and O = 1, then VCO and the clock output frequency are both 498 MHz. Since the M value in the feedback path is 3, both input frequencies at the PFD are 166 MHz. In another more complex scenario has an input frequency of 66.66 MHz and D = 2, M = 15, and O = 2. The VCO frequency in this case is 500 MHz and the O output frequency is 250 MHz. Therefore, the feedback frequency at the PFD is 500/15 or 33.33 MHz, matching the 66.66MHz/2 input clock frequency at the PFD.
www.xilinx.com
105
BUFG To Logic
CLKFBIN CLKOUT1
PLL
UG190_3_11_040906
Figure 3-11:
IBUFG
Inside FPGA CLKIN1 CLKOUT0 CLKOUT1 CLKFBIN CLKOUT2 RST CLKOUT3 CLKOUT4
BUFG
OBUF
To External Components
PLL
CLKOUT5 CLKFBOUT
BUFG
UG190_3_12_120108
Figure 3-12:
106
www.xilinx.com
In some cases precise alignment will not occur because of the difference in loading between the input capacitance of the external component and the feedback path capacitance of the FPGA. For example, the external components can have an input capacitance on 1 pF to 4 pF while the FPGA has an input capacitance of around 8 pF. There is a difference in the signal slope, which is basically skew. Designers need to be aware of this effect to ensure timing.
IBUFG 1 2 3 CLKIN CLKFBIN RST DCM CLK0 CLK90 CLK180 CLK270 CLK2X CLK2X180 CLKDV CLKFX CLKFX180
BUFG
4 Matches 5
ug190_3_13_092107
Figure 3-13:
www.xilinx.com
107
IBUFG 1 2 3 CLKIN1 CLKFBIN RST PLL CLKOUT0 CLKOUT1 CLKOUT2 CLKOUT3 CLKOUT4 CLKOUT5 CLKFBOUT Matches
4 5 6
ug190_3_14_092107
Figure 3-14:
108
www.xilinx.com
Application Guidelines
BUFG To Logic
CLKFBIN CLKOUT1
CLKFBIN CLKOUT1
PLL
PLL
ug190_3_16_032506
Figure 3-15:
Application Guidelines
This section summarizes when to select a DCM over a PLL, or a PLL over a DCM. Virtex-5 FPGA PLLs support up to six independent outputs. Designs using several different outputs should use PLLs. An example of designs using several different outputs follows. The PLL is an ideal solution for this type of application because it can generate a configurable set of outputs over a wide range while the DCM has a fixed number of predetermined outputs based off the reference clock. When the application requires a fine phase shift or a dynamic variable phase shift, a DCM could be a better solution.
www.xilinx.com
109
Figure 3-16:
Example Waveform
110
www.xilinx.com
CLKFBIN
CLKFBOUT
CLKIN
O0
O1
To BUFG
O2
O3
ug190_3_16_022207
Figure 3-17:
Table 3-8 shows the port mapping between Virtex-5 FPGA PLL in PMCD legacy mode and the Virtex-4 FPGA PMCD port names. Table 3-8: Mapping of Port Names
Virtex-5 FPGA Port Name CLKIN CLKFBIN n/a n/a CLKOUT3 CLKOUT2 CLKOUT1 CLKOUT0
Virtex-4 FPGA Port Name CLKA CLKB CLKC CLKD CLKA1 CLKA1D2 CLKA1D4 CLKA1D8
www.xilinx.com
111
Table 3-8:
Table 3-9 shows the PLL attributes in Virtex-4 FPGA PMCD legacy mode. Table 3-9: PLL Attributes When in Virtex-4 FPGA PMCD Legacy Mode
Type Boolean Boolean Allowed Values TRUE or FALSE TRUE or FALSE Default FALSE FALSE Description Enables PLL to act as PMCDs When in PMCD mode (PLL_PMCD_MODE = TRUE), specifies release of divided clock CLKA outputs when the REL input pin is asserted. When in PMCD mode (PLL_PMCD_MODE = TRUE), specifies a clock to synchronize with the release of RST.
RST_DEASSERT_CLK
String
CLKA CLKB
CLKA
Table 3-10 shows the PLL ports in Virtex-4 FPGA PMCD legacy mode. Table 3-10:
Port Name CLKFB CLKIN RST
112
www.xilinx.com
Chapter 4
Block RAM
Block RAM Summary
The block RAM in Virtex-5 FPGAs stores up to 36K bits of data and can be configured as either two independent 18 Kb RAMs, or one 36 Kb RAM. Each 36 Kb block RAM can be configured as a 64K x 1 (when cascaded with an adjacent 36 Kb block RAM), 32K x 1, 16K x 2, 8K x 4, 4K x 9, 2K x 18, or 1K x 36 memory. Each 18 Kb block RAM can be configured as a 16K x 1, 8K x2 , 4K x 4, 2K x 9, or 1K x 18 memory. Similar to the Virtex-4 FPGA block RAMs, Write and Read are synchronous operations; the two ports are symmetrical and totally independent, sharing only the stored data. Each port can be configured in one of the available widths, independent of the other port. In addition, the read port width can be different from the write port width for each port. The memory content can be initialized or cleared by the configuration bitstream. During a write operation the memory can be set to have the data output either remain unchanged, reflect the new data being written or the previous data now being overwritten. Virtex-5 FPGA block RAM enhancements include: Increased memory storage capability per block. Each block RAM can store up to 36K bits of data. Support of two independent 18K blocks, or a single 36K block RAM. Each 36K block RAM can be set to simple dual-port mode, doubling data width of the block RAM to 72 bits. The 18K block RAM can also be set to simple dual-port mode, doubling data width to 36 bits. Simple dual-port mode is defined as having one readonly port and one write-only port with independent clocks. Two adjacent block RAMs can be combined to one deeper 64K x 1 memory without any external logic. One 64-bit Error Correction Coding block is provided per 36 Kb block RAM or 36 Kb FIFO. Separate encode/decode functionality is available. Synchronous Set/Reset of the outputs to an initial value is available for both the latch and register modes of the block RAM output. An attribute to configure the block RAM as a synchronous FIFO to eliminate flag latency uncertainty. The Virtex-5 FIFO does not have FULL flag assertion latency.
Virtex-5 FPGA block RAM features: 18, 36, or 72-bit wide ports can have an individual write enable per byte. This feature is popular for interfacing to an on-chip microprocessor. Each block RAM contains optional address sequencing and control circuitry to operate as a built-in multirate FIFO memory. In Virtex-5 architecture, the block RAM can be configured as an 18Kb or 36Kb FIFO.
www.xilinx.com
113
All inputs are registered with the port clock and have a setup-to-clock timing specification. All outputs have a read function or a read-during-write function, depending on the state of the write enable (WE) pin. The outputs are available after the clock-to-out timing interval. The read-during-write outputs have one of three operating modes: WRITE_FIRST, READ_FIRST, and NO_CHANGE. A write operation requires one clock edge. A read operation requires one clock edge. All output ports are latched. The state of the output port does not change until the port executes another read or write operation. The default block RAM output is latch mode. The output data path has an optional internal pipeline register. Using the register mode is strongly recommended. This allows a higher clock rate, however, it adds a clock cycle latency of one.
Virtex-5 FPGA block RAM usage rules: The Synchronous Set/Reset (SSR) port cannot be used when the ECC decoder is enabled (EN_ECC_READ = TRUE). The setup time of the block RAM address and write enable pins must not be violated. Violating the address setup time (even if write enable is Low) will corrupt the data contents of the block RAM. The block RAM register mode SSR requires REGCE = 1 to reset the output DO register value. The block RAM array data output latch does not get reset in this mode. The block RAM latch mode SSR requires the block RAM enable, EN = 1, to reset the output DO latch value. Although RAMB18SDP (x36 18k block RAM) and RAMB36SDP (x72 36k block RAM) are simple dual-port primitives, the true dual-port primitives (RAMB18 and RAMB36) can be used with one read-only port and one write-only port. For example: a RAMB18s READ_WIDTH_A = 18, WRITE_WIDTH_B = 9, with WEA = 0 and WEB = 1 is effectively a simple dual-port block RAM with a smaller port width having been derived from the true dual-port primitive. Similarly, a ROM function can be built out of either the true dual-port (RAMB18 or RAMB36) or the simple dual-port block RAM primitives (RAMB18SDP or RAMB36SDP). Different read and write port width choices are available when using specific block RAM primitives. The parity bits are only available for the x9, x18, and x36 port widths. The parity bits should not be used when the read width is x1, x2, or x4. If the read width is x1, x2 or x4, the effective write width is x1, x2, x4, x8, x16, or x32. Similarly, when a write width is x1, x2, or x4, the actual available read width is x1, x2, x4, x8, x16, or x32 even though the primitive attribute is set to 1, 2, 4, 9, 18, or 36 respectively. Table 4-1 shows some possible scenarios. Parity Use Sceneries
Settings Primitive Read Width RAMB18 RAMB18 RAMB18 RAMB18 1, 2, or 4 9 or 18 1, 2, or 4 9 or 18 Write Width 9 or 18 1, 2, or 4 1, 2, or 4 9 or 18 Same as setting 8 or 16 Same as setting Same as setting 8 or 16 Same as setting Same as setting Same as setting Effective Read Width Effective Write Width
Table 4-1:
114
www.xilinx.com
Table 4-1:
Primitive
1. Do not use parity bits DIP/DOP when one port widths is less than nine and another port width is nine or greater.
www.xilinx.com
115
CASCADEOUTLATA CASCADEOUTREGA
CASCADEOUTLATB CASCADEOUTREGB
36-Kbit Block RAM DIA DIPA ADDRA WEA ENA SSRA CLKA REGCEA 36 Kb Memory Array DOB DOPB
Port A
DOA DOPA
Port B
CASCADEINLATA CASCADEINREGA
CASCADEINLATB CASCADEINREGB
ug0190_4_01_032106
Port Name DI[A|B] DIP[A|B](1) ADDR[A|B] WE[A|B] EN[A|B] SSR[A|B] CLK[A|B] DO[A|B] DOP[A|B](1) REGCE[A|B] CASCADEINLAT[A|B]
116
www.xilinx.com
Table 4-2:
1. The Data-In Buses - DI[A|B]<#:0> & DIP[A|B]<#:0> section has more information on data parity pins.
Read Operation
In latch mode, the read operation uses one clock edge. The read address is registered on the read port, and the stored data is loaded into the output latches after the RAM access time. When using the output register, the read operation will take one extra latency cycle.
Write Operation
A write operation is a single clock-edge operation. The write address is registered on the write port, and the data input is stored in memory.
Write Modes
Three settings of the write mode determines the behavior of the data available on the output latches after a write clock edge: WRITE_FIRST, READ_FIRST, and NO_CHANGE. Write mode selection is set by configuration. The Write mode attribute can be individually selected for each port. The default mode is WRITE_FIRST. WRITE_FIRST outputs the newly written data onto the output bus. READ_FIRST outputs the previously stored data while new data is being written. NO_CHANGE maintains the output previously generated by a read operation. For the simple dual port block RAM and ECC configurations, the Write mode is always READ_FIRST, and therefore no collision can occur when used in synchronous mode.
www.xilinx.com
117
CLK WE DI ADDR DO EN
Disabled Read Write MEM(bb)=1111 Write MEM(cc)=2222 Read 0000 XXXX 1111 2222 XXXX
aa
bb
cc
dd
MEM(aa)
1111
2222
MEM(dd)
ug190_4_03_032206
Figure 4-2:
CLK WE DI ADDR DO EN
Disabled Read Write MEM(bb)=1111 Write MEM(cc)=2222 Read 0000 XXXX 1111 2222 XXXX
aa
bb
cc
dd
MEM(aa)
old MEM(bb)
old MEM(cc)
MEM(dd)
ug190_4_04_032206
Figure 4-3:
NO_CHANGE Mode
In NO_CHANGE mode, the output latches remain unchanged during a write operation. As shown in Figure 4-4, data output remains the last read data and is unaffected by a write operation on the same port. These waveforms correspond to latch mode when the optional output pipeline register is not used.
118
www.xilinx.com
CLK WE DI ADDR DO EN
Disable Read Write MEM(bb)=1111 Write MEM(cc)=2222 Read
ug190_4_05_032206
XXXX
1111
2222
XXXX
aa
bb
cc
dd
0000
MEM(aa)
MEM(dd)
Figure 4-4:
Conflict Avoidance
Virtex-5 FPGA block RAM memory is a true dual-port RAM where both ports can access any memory location at any time. When accessing the same memory location from both ports, the user must, however, observe certain restrictions. There are two fundamentally different situations: The two ports either have a common clock (synchronous clocking), or the clock frequency and phase is different for the two ports (asynchronous clocking).
Asynchronous Clocking
Asynchronous clocking is the more general case, where the active edges of both clocks do not occur simultaneously: There are no timing constraints when both ports perform a read operation. When one port performs a write operation, the other port must not read- or writeaccess the same memory location. The simulation model will produce an error if this condition is violated. If this restriction is ignored, a read or write operation will produce unpredictable results. There is, however, no risk of physical damage to the device. If a read and write operation is performed, then the write will store valid data at the write location.
Synchronous Clocking
Synchronous clocking is the special case, where the active edges of both port clocks occur simultaneously: There are no timing constraints when both ports perform a read operation. When one port performs a write operation, the other port must not write into the same location, unless both ports write identical data. When one port performs a write operation, the write operation succeeds; the other port can reliably read data from the same location if the write port is in READ_FIRST mode. DATA_OUT on both ports will then reflect the previously stored data. If the write port is in either WRITE_FIRST or in NO_CHANGE mode, then the DATAOUT on the read port would become invalid (unreliable). The mode setting of the read-port does not affect this operation.
www.xilinx.com
119
DO Address DI Register Memory Array (common to both ports) Write Strobe WE EN Read Strobe Control Engine D Q Latches D Q Register
Latch Enable
CLK
Figure 4-5:
120
www.xilinx.com
36 Kb Memory Array
64 8 8 9
DI DO DIP DOP WE WEADDR WRCLK WREN RDEN
64 8
Port Names DO DOP DI DIP RDADDR RDCLK RDEN REGCE SSR WE WRADDR WRCLK WREN
www.xilinx.com
121
DI A[14:0] A15 RAM_EXTENSION = UPPER(0) 0 1 WE[3:0] DI A[14:0] A15 RAM_EXTENSION = LOWER(1) 0 1 WE[3:0] Interconnect Block RAM
D Q D Q D Q
DI A[14:0] A15
D0
Optional Output FF
1 D0 0
D Q D Q D Q
D0
Optional Output FF
CASCADEOUT of Bottom
D0 Not Used
Figure 4-7:
122
www.xilinx.com
Table 4-4:
When the RAMB36 is configured for a 36-bit or 18-bit wide data path, any port can restrict writing to specified byte locations within the data word. If configured in READ_FIRST mode, the DO bus shows the previous content of the whole addressed word. In WRITE_FIRST mode, DO shows a combination of the newly written enabled byte(s), and the initial memory contents of the unwritten bytes.
X-Ref Target - Figure 4-8
CLK WE DI ADDR DO EN
Disabled Read Write MEM(bb)=1111 Byte Write MEM(bb)=1122 Read 0000 XXXX 1111 1111 0011 2222 XXXX
aa
bb
bb
cc
MEM(aa)
1111
1122
MEM(cc)
ug190_4_10_032106
Figure 4-8:
www.xilinx.com
123
Figure 4-9 illustrates all the I/O ports of the 36 Kb true dual-port block RAM primitive (RAMB36). Table 4-5 lists these primitives.
X-Ref Target - Figure 4-9
CASCADEOUTLATA CASCADEOUTREGA
CASCADEOUTLATB CASCADEOUTREGB
32 4 16 4
DOA DOPA
32 4
32 4 16 4
DIB DIPB ADDRB WEB ENB REGCEB SSRB CLKB DOB DOPB
32 4
CASCADEINLATA CASCADEINREGA
CASCADEINLATB CASCADEINREGB
ug0190_4_10_100906
Virtex-5 FPGA Block RAM, FIFO, Simple Dual Port, and ECC Primitives
Description Supports port widths of x1, x2, x4, x9, x18, x36 Simple dual port (port width x72) and 64-bit ECC primitive (see Figure 4-29) Supports port widths of x4, x9, x18, x36 FIFO (port width x72), optional ECC support Supports port widths of x1, x2, x4, x9, x18 Simple dual port (port width x36) Supports port widths of x4, x9, x18 FIFO (port width x36)
1. All eight primitives are described in the software Libraries guide as well as the language templates.
124
www.xilinx.com
Clock - CLK[A|B]
Each port is fully synchronous with independent clock pins. All port input pins have setup time referenced to the port CLK pin. The output data bus has a clock-to-out time referenced to the CLK pin. Clock polarity is configurable (rising edge by default).
Enable - EN[A|B]
The enable pin affects the read, write, and set/reset functionality of the port. Ports with an inactive enable pin keep the output pins in the previous state and do not write data to the memory cells. Enable polarity is configurable (active High by default).
Set/Reset - SSR[A|B]
In latch mode, the SSR pin forces the data output latches, to contain the value SRVAL. See Block RAM Attributes, page 128. When the optional output registers are enabled, the data output registers can also be forced by the SSR pin to contain the value SRVAL. SSR does not affect the latched value. The data output latches or output registers are synchronously asserted to 0 or 1, including the parity bit. Each port has an independent SRVAL[A|B] attribute of 36 bits. This operation does not affect RAM memory cells and does not disturb write operations on the other port. Similar to the read and write operation, the set/reset function is active only when the enable pin of the port is active. Set/reset polarity is configurable (active High by default).
www.xilinx.com
125
Table 4-6:
Table 4-7:
For cascadable block RAM using the RAMB36, the data width is one bit, and the address bus is 16 bits <15:0>. The address bit 15 is only used in cascadable block RAM. For noncascading block RAM, connect High. Data and address pin mapping is further described in the Additional RAMB18 and RAMB36 Primitive Design Considerationssection.
126
www.xilinx.com
Upper RAMB36
CASCADEINLATA/B 2 CASCADEOUTLATA/B CASCADEINREGA/B 2 CASCADEOUTREGA/B
Lower RAMB36
ug190_4_12_040606
Figure 4-10:
GSR
The global set/reset (GSR) signal of a Virtex-5 device is an asynchronous global signal that is active at the end of device configuration. The GSR can also restore the initial Virtex-5 device state at any time. The GSR signal initializes the output latches to the INIT (simple dual port), or to the INIT_A and INIT_B value (true dual port.) See Block RAM Attributes. A GSR signal has no impact on internal memory contents. Because it is a global signal, the GSR has no input pin at the functional level (block RAM primitive).
Unused Inputs
Unused data and/or address inputs should be connected High.
www.xilinx.com
127
2 4 8+1 16 + 2 32 + 4
3 1
1 0 0
For example, for the attribute INIT_1F, the conversion is as follows: yy = conversion hex-encoded to decimal (xx) 1F = 31 from [(31+1) 256] 1 = 8191 to 31 256 = 7936
128
www.xilinx.com
Table 4-9:
Attribute From INIT_00 INIT_01 INIT_02 INIT_0E INIT_0F INIT_10 INIT_1F INIT_20 INIT_2F INIT_30 INIT_3F INIT_7F 255 511 767 3839 4095 4351 8191 8447 12287 12543 16383 32767 To 0 256 512 3584 3840 4096 7936 8192 12032 12288 16128 32512
www.xilinx.com
129
130
www.xilinx.com
In addition, one FIFO18 and one RAMB16 can be placed in the same RAMB36 location, no BEL constraint is required:
inst my_fifo18 LOC = RAMB36_X0Y0 inst my_ramb18 LOC = RAMB36_X0Y0
www.xilinx.com
131
When using these attributes, if both write ports or both read ports are set to 0, the Xilinx ISE tools will not implement the design. In simple dual-port mode, the port width is fixed and the read port width is equal to the write port width. The RAMB18 has a data port width of 36, while the RAMB36 has a data port width of 72.
4. 5.
6.
132
www.xilinx.com
In x72 simple dual-port mode, WE[7:0] is connected to the eight user WE inputs.
Block RAM
DI 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
DBRAM
Output Register
DO
Figure 4-11:
www.xilinx.com
133
CLK RAMEN
REGCE
SSR
DBRAM
D0
D2
D3
DO
D0
SRVAL
D1
SRVAL
D2
Figure 4-12:
X-Ref Target - Figure 4-13
CLK RAMEN
REGCE
SSR
DBRAM
D0
D1
D2
D3
Figure 4-13:
134
www.xilinx.com
Parameter
CLK to DO CLK to DO
Time after the clock that the output data is stable at the DO outputs of the block RAM (without output register). Time after the clock that the output data is stable at the DO outputs of the block RAM (with output register).
www.xilinx.com
135
0F CCCC CCCC*
8F AAAA 0101**
20 0000
Figure 4-14:
Clock Event 1
Read Operation
During a read operation, the contents of the memory at the address on the ADDR inputs remain unchanged. TRCCK_ADDR before clock event 1, address 00 becomes valid at the ADDR inputs of the block RAM. At time TRCCK_EN before clock event 1, enable is asserted High at the EN input of the block RAM, enabling the memory for the READ operation that follows. At time TRCKO_DO after clock event 1, the contents of the memory at address 00 become stable at the DO pins of the block RAM. Whenever EN is asserted, all address changes must meet the specified setup and hold window. Asynchronous address changes can affect the memory content and block RAM functionality in an unpredictable way.
136
www.xilinx.com
Clock Event 2
Write Operation
During a write operation, the content of the memory at the location specified by the address on the ADDR inputs is replaced by the value on the DI pins and is immediately reflected on the output latches (in WRITE_FIRST mode); when Write Enable (WE) is High. At time TRCCK_ADDR before clock event 2, address 0F becomes valid at the ADDR inputs of the block RAM. At time TRDCK_DI before clock event 2, data CCCC becomes valid at the DI inputs of the block RAM. At time TRCCK_WE before clock event 2, write enable becomes valid at the WE following the block RAM. At time TRCKO_DO after clock event 2, data CCCC becomes valid at the DO outputs of the block RAM.
Clock Event 4
SSR (Synchronous Set/Reset) Operation
During an SSR operation, initialization parameter value SRVAL is loaded into the output latches of the block RAM. The SSR operation does NOT change the contents of the memory and is independent of the ADDR and DI inputs. At time TRCCK_SSR before clock event 4, the synchronous set/reset signal becomes valid (High) at the SSR input of the block RAM. At time TRCKO_DO after clock event 4, the SRVAL 0101 becomes valid at the DO outputs of the block RAM.
Clock Event 5
Disable Operation
Deasserting the enable signal EN disables any write, read, or SSR operation. The disable operation does NOT change the contents of the memory or the values of the output latches. At time TRCCK_EN before clock event 5, the enable signal becomes invalid (Low) at the EN input of the block RAM. After clock event 5, the data on the DO outputs of the block RAM is unchanged.
www.xilinx.com
137
FPGA
Block RAM
Data Address Write Enable Enable Synchronous Set/Reset
[TIOPI + NET] + TRDCK_DI [TIOPI + NET] + TRCCK_ADDR [TIOPI + NET] + TRCCK_WEN [TIOPI + NET] + TRCCK_EN [TIOPI + NET] + TRCCK_SSR
Data
Clock
[TIOPI + NET]
ug190_4_14_022207
138
www.xilinx.com
Virtex-4 Block RAM Primitive RAMB16 True dual port RAMB16 True dual port RAMB16 Simple dual port RAMB16 Simple dual port CASC of two RAMB16s 32k Depth 1k to 16k 512 512 Port Width R/W
1, 2, 4, 9, 18 RAMB36 N/A 36/36 N/A RAMB36 RAMB36 Simple dual port Use closest RAMB36 True dual port RAMB36
N/A
N/A
32k
Multirate FIFO
The multirate FIFO offers a very simple user interface. The design relies on free-running write and read clocks, of identical or different frequencies up to the specified maximum frequency limit. The design avoids any ambiguity, glitch, or metastable problems, even when the two frequencies are completely unrelated. The write operation is synchronous, writing the data word available at DI into the FIFO whenever WREN is active a set-up time before the rising WRCLK edge. The read operation is also synchronous, presenting the next data word at DO whenever the RDEN is active one set-up time before the rising RDCLK edge.
www.xilinx.com
139
Data flow control is automatic; the user need not be concerned about the block RAM addressing sequence, although WRCOUNT and RDCOUNT are also brought out, if needed for special applications. The user must, however, observe the FULL and EMPTY flags, and stop writing when FULL is High, and stop reading when EMPTY is High. If these rules are violated, an active WREN while FULL is High will activate the WRERR flag, and an active RDEN while EMPTY is High will activate the RDERR flag. In either violation, the FIFO content will, however, be preserved, and the address counters will stay valid. Programmable ALMOSTFULL and ALMOSTEMPTY flags are brought out to give the user an early warning when the FIFO is approaching its limits. Both these flag values can be set by configuration to (almost) anywhere in the FIFO address range. Two operating modes affect the reading of the first word after the FIFO is emptied: In standard mode, the first word written into an empty FIFO will appear at DO after the user has activated RDEN. The user must pull the data out of the FIFO. In FWFT mode, the first word written into an empty FIFO will automatically appear at DO without the user activating RDEN. The next RDEN will then pull the subsequent data word onto DO. Standard and FWFT mode differ only in the reading of the first word entry after the FIFO is empty.
Use the EN_SYN = FALSE setting in the following cases: when the clocks are asynchronous when the frequencies of the two clocks are the same but the phase is different when one frequency is a multiple of the other.
Synchronous FIFO
Virtex-4 FPGA designs used the same FIFO logic for multirate and synchronous FIFOs, thus flag latency in synchronous FIFOs can vary. By setting the EN_SYN attribute to TRUE when using Virtex-5 FPGA synchronous FIFOs, any clock cycle latency when asserting or deasserting flags is eliminated. First-word fall-through (FWFT) mode is only supported in the multirate FIFO (EN_SYN = FALSE). Table 4-13 shows the FIFO capacity in the two modes.
140
www.xilinx.com
Table 4-13:
FIFO Capacity
Standard Mode FWFT Mode 18 Kb FIFO 4k + 2 entries by 4 bits 2k + 2 entries by 9 bits 1k + 2 entries by 18 bits 512 + 2 entries by 36 bits 36 Kb FIFO 8k + 2 entries by 4 bits 4k + 2 entries by 9 bits 2k + 2 entries by 18 bits 1k + 2 entries by 36 bits 512 + 2 entries by 72 bits
18 Kb FIFO 4k + 1 entries by 4 bits 2k + 1 entries by 9 bits 1k + 1 entries by 18 bits 512 + 1 entries by 36 bits
36 Kb FIFO 8k + 1 entries by 4 bits 4k + 1 entries by 9 bits 2k + 1 entries by 18 bits 1k + 1 entries by 36 bits 512 + 1 entries by 72 bits
rdclk
rden DO EN_SYN = TRUE DO_REG = 0 DO EN_SYN = TRUE DO_REG = 1 DO EN_SYN = FALSE DO_REG = 1
ug190_c4_x1_071007
TCKO = 1.9ns
Figure 4-16:
www.xilinx.com
141
WRCOUNT
waddr
raddr
RDCOUNT
Write Pointer
Block RAM
mem_wen
Read Pointer
mem_ren
oe
ug190_4_27_061906
Figure 4-17:
FIFO Primitives
Figure 4-18 shows the FIFO36 primitive.
X-Ref Target - Figure 4-18
FIFO36 DI[31:0] DIP[3:0] RDEN RDCLK WREN WRCLK RST DO[31:0] DOP[3:0] WRCOUNT[12:0] RDCOUNT[12:0] FULL EMPTY ALMOSTFULL ALMOSTEMPTY RDERR WRERR
ug190_4_15_021107
Figure 4-18:
FIFO36 Primitive
142
www.xilinx.com
FIFO18 DI[15:0] DIP[1:0] RDEN RDCLK WREN WRCLK RST DO[15:0] DOP[1:0] WRCOUNT[11:0] RDCOUNT[11:0] FULL EMPTY ALMOSTFULL ALMOSTEMPTY RDERR WRERR
ug190_4_15_040606
Figure 4-19:
FIFO18 Primitive
EMPTY
Output
www.xilinx.com
143
Table 4-15:
RDCOUNT
Output
WRCOUNT
Output
WRERR RDERR
Output Output
FIFO Operations
Reset
Reset is an asynchronous signal for both multirate and synchronous FIFO. Reset must be asserted for three cycles to reset all read and write address counters and initialize flags after power up. Reset does not clear the memory, nor does it clear the output register. When reset is asserted High, EMPTY and ALMOST_EMPTY will be set to 1, FULL and ALMOST_FULL will be reset to 0. The reset signal must be High for at least three read clock and write clock cycles to ensure all internal states are reset to the correct values. During RESET, RDEN and WREN must be held Low.
Operating Mode
There are two operating modes in FIFO functions. They differ only in output behavior immediately after the first word is written to a previously empty FIFO.
Standard Mode
After the first word is written into an empty FIFO, the Empty flag deasserts synchronously with RDCLK. After Empty is deasserted Low and RDEN is asserted, the first word will appear at DO on the rising edge of RDCLK.
144
www.xilinx.com
FIFO Operations
W3
Figure 4-20:
Status Flags
Table 4-16 shows the number of clock cycles to assert or deassert each flag of a multirate FIFO. Synchronous FIFOs do not have a clock cycle latency when asserting or deasserting flags. Due to the asynchronous nature of the clocks, the simulation model only reflects the deassertion latency cycles listed. Table 4-16: Multirate FIFO Flag Assertion and Deassertion Latency
Write/Read Cycle Latency(1) Status Flag Assertion Standard EMPTY(2) FULL(2) ALMOST EMPTY(3) 0 0 1 1 0 0 FWFT 0 0 1 1 0 0 Deassertion Standard 3 3 3 3 0 0 FWFT 4 3 3 3 0 0
1. Latency is with respect to RDCLK and WRCLK. 2. Depending on the offset between read and write clock edges, the Empty and Full flags can deassert one cycle later. 3. Depending on the offset between read and write clock edges, the Almost Empty and Almost Full flags can deassert one cycle later.
Empty Flag
The Empty flag is synchronous with RDCLK, and is asserted when the last entry in the FIFO is read. When there are no more valid entries in the FIFO queue, the read pointer will be frozen. The Empty flag is deasserted after three (in standard mode) or four (in FWFT mode) read clocks after new data is written into the FIFO. The empty flag is used in the read clock domain. The rising edge of EMPTY is inherently synchronous with RDCLK. The empty condition can only be terminated by WRCLK, usually asynchronous to RDCLK. The falling edge of EMPTY must, therefore, artificially be moved onto the RDCLK time domain. Since the two clocks have an unknown phase
www.xilinx.com
145
relationship, it takes several cascaded flip-flops to guarantee that such a move does not cause glitches or metastable problems. The falling edge of EMPTY is thus delayed by several RDCLK periods after the first write into the previously empty FIFO. This delay guarantees proper operation under all circumstances, and causes an insignificant loss of performance after the FIFO had gone empty.
For example, if the read frequency is 1/2 the write frequency, ALMOST_EMPTY_OFFSET needs to be greater than or equal to 8. This equation also means that any time the read frequency is greater than or equal to the write frequency, any legal value of ALMOST_EMPTY_OFFSET works.
Full Flag
The Full flag is synchronous with WRCLK, and is asserted when there are no more available entries in the FIFO queue. When the FIFO is full, the write pointer will be frozen. The Virtex-5 FPGA Full flag is deasserted three write clock cycles after two subsequent read operations. In Virtex-4 FPGA designs a Full flag is asserted one write clock cycle after the last write, and is deasserted three write clock cycle after the first read.
146
www.xilinx.com
FIFO Attributes
FIFO Attributes
Table 4-17 lists the FIFO18 and FIFO36 attributes. The size of the multirate FIFO can be configured by setting the DATA_WIDTH attribute. The FIFO VHDL and Verilog Templates section has examples for setting the attributes. Table 4-17: FIFO18 and FIFO36 Attributes
Type 13-bit HEX Values See Table 4-19 Default Notes Setting determines the difference between FULL and ALMOSTFULL conditions. Must be set using hexadecimal notation. Setting determines the difference between EMPTY and ALMOSTEMPTY conditions. Must be set using hexadecimal notation. FALSE If TRUE, the first word written into the empty FIFO appears at the FIFO output without RDEN asserted. For multirate (asynchronous) FIFO, must be set to 1. For synchronous FIFO, DO_REG must be set to 0 for flags and data to follow a standard synchronous FIFO operation. When DO_REG is set to 1, effectively a pipeline register is added to the output of the synchronous FIFO. Data then has a one clock cycle latency. However, the clock-to-out timing is improved. DATA_WIDTH LOC(1, 2) EN_SYN Integer String Boolean 4, 9, 18, 36, 72 Valid FIFO18 or FIFO36 location FALSE, TRUE FALSE 4 Sets the location of the FIFO18 or FIFO36. When set to TRUE, ties WRCLK and RDCLK together. When set to TRUE, FWFT must be FALSE. When set to FALSE, DO_REG must be 1.
Notes:
1. If FIFO18 is constrained to FIFO18_X#Y#, then RAMB18 can not be constrained to RAMB18_X#Y# since the same location would be used. 2. If a FIFO18 is constrained to FIFO18_X#Y#, corresponding to the lower RAMB18_X#Y# of the RAMB18 pair, a RAMB18 can be constrained to the upper RAMB18_X#Y# of the pair.
ALMOST_EMPTY_OFFSET
13-bit HEX
FIRST_WORD_FALL_THROUGH
Boolean
FALSE, TRUE 0, 1
DO_REG
1-bit Binary
www.xilinx.com
147
1. ALMOST_EMPTY_OFFSET and ALMOST_FULL_OFFSET for any design must be less than the total FIFO depth.
Table 4-19:
Multirate (Asynchronous) EN_SYN=FALSE x4 x4 x9 x18 x36 x9 x18 x36 x72 5 5 5 5 5 8187 4091 2043 1019 507 6 6 6 6 6 8188 4092 2044 1020 508 4 4 4 4 4 8187 4091 2043 1019 507
1 1 1 1 1
1 1 1 1 1
The Almost Full and Almost Empty offsets are usually set to a small value of less than 10 to provide a warning that the FIFO is about to reach its limits. Since the full capacity of any FIFO is normally not critical, most applications use the ALMOST_FULL flag not only as a warning but also as a signal to stop writing.
148
www.xilinx.com
Similarly, the ALMOST_EMPTY flag can be used to stop reading. However, this would make it impossible to read the very last entries remaining in the FIFO. The user can ignore the Almost Empty signal and continue to read until EMPTY is asserted. The Almost Full and Almost Empty offsets can also be used in unstoppable block transfer applications to signal that a complete block of data can be written or read. When setting the offset ranges in the design tools, use hexadecimal notation.
Parameter
Setup and Hold Relative to Clock (CLK) TRXCK = Setup time (before clock edge) TRCKX = Hold time (after clock edge) TRDCK_DI/ TRCKD_DI(4) TRCCK_RDEN/ TRCKC_RDEN(5) TRCCK_WREN/ TRCKC_WREN(5) Clock to Out Delays TRCKO_DO(1) Clock to data output DO Time after RDCLK that the output data is stable at the DO outputs of the FIFO. The synchronous FIFO with DO_REG = 0 is different than in multirate mode. Time after RDCLK that the Almost Empty signal is stable at the ALMOSTEMPTY outputs of the FIFO. Time after WRCLK that the Almost Full signal is stable at the ALMOSTFULL outputs of the FIFO. Time after RDCLK that the Empty signal is stable at the EMPTY outputs of the FIFO. Time after WRCLK that the Full signal is stable at the FULL outputs of the FIFO. Time after RDCLK that the Read Error signal is stable at the RDERR outputs of the FIFO. Time after WRCLK that the Write Error signal is stable at the WRERR outputs of the FIFO. Data inputs Read enable Write enable DI RDEN WREN Time before/after WRCLK that D1 must be stable. Time before/after RDCLK that RDEN must be stable. Time before/after WRCLK that WREN must be stable.
Clock to almost empty output Clock to almost full output Clock to empty output Clock to full output Clock to read error output Clock to write error output
www.xilinx.com
149
Table 4-20:
Parameter TRCKO_RDCOUNT(3) TRCKO_WRCOUNT(3) Reset to Out TRCO_AEMPTY TRCO_AFULL TRCO_EMPTY TRCO_FULL TRCO_RDERR TRCO_WRERR TRCO_RDCOUNT TRCO_WRCOUNT
Notes:
Reset to almost empty output Reset to almost full output Reset to empty output Reset to full output Reset to read error output Reset to write error output Reset to read pointer output Reset to write pointer output
Time after reset that the Almost Empty signal is stable at the ALMOSTEMPTY outputs of the FIFO. Time after reset that the Almost Full signal is stable at the ALMOSTFULL outputs of the FIFO. Time after reset that the Empty signal is stable at the EMPTY outputs of the FIFO. Time after reset that the Full signal is stable at the FULL outputs of the FIFO. Time after reset that the Read error signal is stable at the RDERR outputs of the FIFO. Time after reset that the Write error signal is stable at the WRERR outputs of the FIFO. Time after reset that the Read pointer signal is stable at the RDCOUNT outputs of the FIFO. Time after reset that the Write pointer signal is stable at the WRCOUNT outputs of the FIFO.
1. TRCKO_DO includes parity output (TRCKO_DOP). 2. In the Virtex-5 FPGA Data Sheet, TRCKO_AEMPTY, TRCKO_AFULL, TRCKO_EMPTY, TRCKO_FULL, TRCKO_RDERR, TRCKO_WRERR are combined into TRCKO_FLAGS. 3. In the Virtex-5 FPGA Data Sheet, TRCKO_RDCOUNT and TRCKO_WRCOUNT are combined into TRCKO_POINTERS. 4. TRCDCK_DI includes parity inputs (TRCDCK_DIP). 5. In the Virtex-5 FPGA Data Sheet, WRITE and READ enables are combined into TRCCK_EN.
150
www.xilinx.com
2 3
TFDCK_DI 03 04 05 06
00 TFCKO_EMPTY
Clock Event 1 and Clock Event 3: Write Operation and Deassertion of EMPTY Signal
During a write operation to an empty FIFO, the content of the FIFO at the first address is replaced by the data value on the DI pins. Three read-clock cycles later (four read-clock cycles for FWFT mode), the EMPTY pin is deasserted when the FIFO is no longer empty. The RDCOUNT also increments by one due to an internal read preloading the data to the output registers. For the example in Figure 4-21, the timing diagram is drawn to reflect FWFT mode. Clock event 1 is with respect to the write-clock, while clock event 3 is with respect to the readclock. Clock event 3 appears four read-clock cycles after clock event 1. At time TFDCK_DI, before clock event 1 (WRCLK), data 00 becomes valid at the DI inputs of the FIFO. At time TFCCK_WREN, before clock event 1 (WRCLK), write enable becomes valid at the WREN input of the FIFO. At time TFCKO_DO, after clock event 3 (RDCLK), data 00 becomes valid at the DO output pins of the FIFO. In standard mode, data 00 does not appear at the DO output pins of the FIFO. At time TFCKO_EMPTY, after clock event 3 (RDCLK), EMPTY is deasserted. In standard mode, EMPTY is deasserted one read-clock earlier than clock event 3.
If the rising WRCLK edge is close to the rising RDCLK edge, EMPTY could be deasserted one RDCLK period later.
www.xilinx.com
151
Clock Event 2 and Clock Event 4: Write Operation and Deassertion of Almost EMPTY Signal
Three read-clock cycles after the fourth data is written into the FIFO, the Almost EMPTY pin is deasserted to signify that the FIFO is not in the almost EMPTY state. For the example in Figure 4-21, the timing diagram is drawn to reflect FWFT mode. Clock event 2 is with respect to write-clock, while clock event 4 is with respect to read-clock. Clock event 4 appears three read-clock cycles after clock event 2. At time TFDCK_DI, before clock event 2 (WRCLK), data 03 becomes valid at the DI inputs of the FIFO. Write enable remains asserted at the WREN input of the FIFO. At clock event 4, DO output pins of the FIFO remains at 00 since no read has been performed. In the case of standard mode, data 00 will never appear at the DO output pins of the FIFO. At time TFCKO_AEMPTY, after clock event 4 (RDCLK), almost empty is deasserted at the AEMPTY pin. In the case of standard mode, AEMPTY deasserts in the same way as in FWFT mode.
If the rising WRCLK edge is close to the rising RDCLK edge, AEMPTY could be deasserted one RDCLK period later.
1
WRCLK
TFCCK_WREN
WREN
TFDCK_DI
DI RDCLK RDEN
00
01
TFCKO_FULL
FULL AFULL WRERR
ug190_4_18_012605
152
www.xilinx.com
If the FIFO is full, and a read followed by a write is performed, the FULL signal remains asserted.
The write error signal is asserted/deasserted at every write-clock positive edge. As long as both the write enable and Full signals are true, write error will remain asserted.
www.xilinx.com
153
TFCCK_RDEN TFCKO_DO
00
01
02
03
04
TFCKO_FULL
05
06
TFCKO_AFULL
ug190_4_19_040606
Clock Event 1 and Clock Event 2: Read Operation and Deassertion of Full Signal
During a read operation on a full FIFO, the content of the FIFO at the first address is asserted at the DO output pins of the FIFO. Two RDEN operations ensure that the FIFO is no longer full, and after three WRCLK cycles the FULL pin is deasserted. The example in Figure 4-23 reflects both standard and FWFT modes. Clock event 1 and 2 are with respect to read-clock. Clock event 4 appears three write-clock cycles after clock event 2. At time TFCCK_RDEN, before clock event 1 (RDCLK), read enable becomes valid at the RDEN input of the FIFO. At time TFCKO_DO, after clock event 1 (RDCLK), data 00 becomes valid at the DO outputs of the FIFO. At time TFCKO_FULL, after clock event 4 (WRCLK), FULL is deasserted.
If the rising RDCLK edge is close to the rising WRCLK edge, FULL could be deasserted one WRCLK period later.
Clock Event 3 and Clock Event 5: Read Operation and Deassertion of Almost FULL Signal
Three write-clock cycles after the fourth data is read from the FIFO, the Almost FULL pin is deasserted to signify that the FIFO is not in the almost FULL state. The example in Figure 4-23 reflects both standard and FWFT modes. Clock event 3 is with respect to read-clock, while clock event 5 is with respect to write-clock. Clock event 5 appears three write-clock cycles after clock event 3. Read enable remains asserted at the RDEN input of the FIFO. At time TFCKO_AFULL, after clock event 5 (RDCLK), Almost FULL is deasserted at the AFULL pin.
154
www.xilinx.com
There is minimum time between a rising read-clock and write-clock edge to guarantee that AFULL will be deasserted. If this minimum is not met, the deassertion of AFULL can take an additional write clock cycle.
TFCCK_RDEN
00
01
02
TFCKO_EMPTY
03
04
AEMPTY RDERR
TFCKO_RDERR TFCKO_RDERR
ug190_4_21_032506
Figure 4-24:
In the event that the FIFO is empty and a write followed by a read is performed, the EMPTY signal remains asserted.
www.xilinx.com
155
The read error signal is asserted/deasserted at every read-clock positive edge. As long as both the read enable and empty signals are true, read error will remain asserted.
EMPTY AEMPTY
TFCO_AEMPTY TFCO_FULL
FULL
TFCO_AFULL
AFULL
ug190_4_22_032506
Figure 4-25:
When the reset signal is asserted, all flags are reset. At time TFCO_EMPTY, after reset (RST), empty is asserted at the EMPTY output pin of the FIFO. At time TFCO_AEMPTY, after reset (RST), almost empty is asserted at the AEMPTY output pin of the FIFO. At time TFCO_FULL, after reset (RST), full is deasserted at the FULL output pin of the FIFO. At time TFCO_AFULL, after reset (RST), almost full is deasserted at the AFULL output pin of the FIFO.
Reset is an asynchronous signal used to reset all flags. Hold the reset signal High for three read and write clock cycles to ensure that all internal states and flags are reset to the correct value.
156
www.xilinx.com
FIFO Applications
FIFO Applications
A FIFO larger than a single Virtex-5 FPGA FIFO block can be created by: Cascading two or more FIFOs to form a deeper FIFO. Building a wider FIFO by connecting two or more FIFOs in parallel.
N can be 2 or more; if N is 2, the middle FIFOs are not needed. If WRCLK is faster than RDCLK, then INTCLK = WRCLK If WRCLK is equal to or slower than RDCLK, then INTCLK = RDCLK ALMOST_EMPTY threshold is set in the Nth FIFO; ALMOST_FULL threshold is set in 1st FIFO.
DO<3:0> EMPTY
DO<3:0> EMPTY
DI<3:0> WREN
DO<3:0>
Figure 4-26:
www.xilinx.com
157
DOUT<71:0>
DOUT<71:0>
EMPTY
EMPTY
FIFO #1
AFULL
DIN<143:72> WREN
DOUT<71:0>
DOUT<143:72>
EMPTY
AFULL
FIFO #2
AFULL
ug190_4_24_012706
Figure 4-27:
158
www.xilinx.com
The functionality of the block RAM when using the ECC mode is described as follows: The block RAM ports still have independent address, clocks, and enable inputs, but one port is a dedicated write port, and the other is a dedicated read port (simple dualport). DO represents the read data after correction. DO stays valid until the next active read operation. Simultaneous decoding and encoding, even with asynchronous clocks, is allowed, but requires careful clock timing if read and write addresses are identical. The NO_CHANGE or WRITE_FIRST modes of the normal block RAM operation are not applicable to the ECC configuration.
www.xilinx.com
159
wraddr rdaddr
8 0 1 8
9 9 8
DI[63:0]
64
EN_ECC_WRITE
Data In
64
DO_REG EN_ECC_READ
DO[63:0]
0 1
Q D
64
0 1
64 64
Data Out
64
DO_REG
DBITERR
0 1
Q D
0 1 1
DO_REG
SBITERR
0 1
Q D
DO_REG
DOP[7:0]
0 1
Q D
1 0
8 8
Parity Out
8
UG190_c4_25_022609
EN_ECC_READ
Figure 4-28:
160
www.xilinx.com
RAMB36SDP
DI[63:0] DIP[7:0] (Decode Only) WRADDR[8:0] RDADDR[8:0] WREN RDEN SSR WRCLK RDCLK
ug190_4_26_022207
DO[63:0] DOP[7:0]
Figure 4-29:
X-Ref Target - Figure 4-30
FIFO36_72
DI[63:0] DIP[7:0] DO[63:0] DOP[7:0] ECCPARITY[7:0] SBITERR DBITERR WREN RDEN RST WRCLK RDCLK FULL EMPTY ALMOSTFULL ALMOSTEMPTY WRERR RDERR WRCOUNT[8:0] RDCOUNT[8:0]
ug190_4_34_022207
www.xilinx.com
161
Port Name DI[63:0] DIP[7:0] WRADDR[8:0] RDADDR[8:0] WREN RDEN SSR WRCLK RDCLK DO[63:0] DOP[7:0] SBITERR(1) DBITERR(1) ECCPARITY[7:0]
Notes:
1. Hamming code implemented in the block RAM ECC logic detects one of three conditions: no detectable error, single-bit error detected and corrected on DO (but not corrected in the memory), and double-bit error detected without correction. SBITERR and DBITERR indicate these three conditions.
162
www.xilinx.com
Table 4-22 lists and describes the FIFO ECC I/O port names. Table 4-22: FIFO ECC Port Names and Descriptions
Direction Input Input Input Input Input Input Input Output Output Output Output Output Output Output Output Output Output Output Output Output Data input bus. Data input parity bus. Not used when standard mode is used. Write enable. When WREN = 1, data will be written into memory. When WREN = 0, write is disabled Read enable. When RDEN = 1, data will be read from memory. When RDEN = 0, read is disabled. Asynchronous reset of FIFO counter and flags. Reset must be asserted for three clock cycles. Reset does not affect DO or ECC signals. Clock for write operations. Clock for read operations. Data output bus. Data output parity bus. Single-bit error status. Double-bit error status. ECC encoder output bus. FIFO FULL flag. FIFO ALMOSTFULL flag. FIFO EMPTY flag. FIFO ALMOSTEMPTY flag. The FIFO data read pointer. The FIFO data write pointer. When the FIFO is full, any additional write operation generates an error flag. When the FIFO is empty, any additional read operation generates an error flag. Signal Description
Port Name DI[63:0] DIP[7:0] WREN RDEN RST WRCLK RDCLK DO[63:0] DOP[7:0] SBITERR(1) DBITERR(1) ECCPARITY[7:0] FULL ALMOSTFULL EMPTY ALMOSTEMPTY RDCOUNT WRCOUNT WRERR RDERR
Notes:
1. Hamming code implemented in the FIFO ECC logic detects one of three conditions: no detectable error, single-bit error detected and corrected on DO (but not corrected in the memory), and double-bit error detected without correction. SBITERR and DBITERR indicate these three conditions.
www.xilinx.com
163
Table 4-24:
EN_SYN
Setting determines the difference between EMPTY and ALMOST_EMPTY See Table 4-19 See Table 4-19 conditions. Must be set using hexadecimal notation. Setting determines the difference between FULL and ALMOST_FULL See Table 4-19 See Table 4-19 conditions. Must be set using hexadecimal notation. When set to TRUE, the first word written into the empty FIFO36_72 appears at the FIFO36_72 output without RDEN asserted.
FALSE
164
www.xilinx.com
T1W
WRCLK WREN
TRCCK_EN
T2W
T3W
T4W
T5W
a
TRCCK_ADDR
b B PB PA PB
c C PC PC
d D PD PD
A
TRCCK_DI_ECC
PA
TRCKO_ECC_PARITY
ug190_4_32_022307
Figure 4-31:
X-Ref Target - Figure 4-32
T1R
RDCLK RDEN
TRCCK_EN
RDADDR[8:0] DO[63:0] (Latch Mode) DOP[7:0] (Latch Mode) SBITERR (Latch Mode) DBITERR (Latch Mode) DO[63:0] (Register Mode) DOP[7:0] (Register Mode) SBITERR (Register Mode) DBITERR (Register Mode)
a
TRCCK_ADDR
b A
TRCKO_DO (Latch Mode)
c B C
PA
Single Bit Error
PB
PC
A
TRCKO_DO (Register Mode)
PA
Single Bit Error
PB
PC
www.xilinx.com
165
Standard ECC
Set by Attributes
EN_ECC_READ = TRUE EN_ECC_WRITE = TRUE
ECC Encode-Only
Set by Attributes
EN_ECC_READ = FALSE EN_ECC_WRITE = TRUE
166
www.xilinx.com
Similarly, at time T2W and T3W, DI[63:0] = B and C, together with their corresponding parity bits PB (hex) and PC (hex) are written into memory locations b and c. PB and PC appear at output ECCPARITY[7:0] shortly after T2W and T3W.
ECC Decode-Only
Set by Attributes
EN_ECC_READ = TRUE EN_ECC_WRITE = FALSE In ECC decode-only, only the ECC decoder is enabled. The ECC encoder is disabled. Decode-only mode is used to inject single-bit or double-bit errors to test the functionality of the ECC decoder. The ECC parity bits must be externally supplied using the DIP[7:0] pins.
The ECC decoder also detects when double-bit error in parity bits occurs, and when a single-bit error in the data bits and a single-bit error in the corresponding parity bits occurs.
www.xilinx.com
167
DO_REG = 0
At time TRCKO_DO (latch mode), after time T1R, data A (hex) becomes valid at the DO[63:0] output pins of the block RAM. At time TRCKO_DOP (latch mode), after time T1R, data PA (hex) becomes valid at the DOP[7:0] output pins of the block RAM. At time TRCKO_ECC_SBITERR (latch mode), after time T1R, SBITERR is asserted if single-bit error is detected and corrected on data set A. At time TRCKO_ECC_DBITERR (latch mode), after time T2R, DBITERR is asserted if double-bit error is detected on data set B.
DO_REG = 1
At time TRCKO_DO (register mode), after time T2R, data A (hex) becomes valid at the DO[63:0] output pins of the block RAM. At time TRCKO_DOP (register mode), after time T2R, data PA (hex) becomes valid at the DOP[7:0] output pins of the block RAM. At time TRCKO_ECCR_SBITERR (register mode), after time T2R, SBITERR is asserted if single-bit error is detected and corrected on data set A. At time TRCKO_ECCR_DBITERR (register mode), after time T3R, DBITERR is asserted if double-bit error is detected on data set B.
168
www.xilinx.com
Parameter
Data inputs(1)
Data inputs(1)
www.xilinx.com
169
Table 4-25:
Clock to ECC Parity Output Clock to ECC Single-Bit-Error Output Clock to ECC Single-Bit-Error Output Clock to ECC Double-Bit-Error Output Clock to ECC Double-Bit-Error Output
ECCPARITY
Time after WRCLK that the ECC parity signals are stable at the ECCPARITY outputs of the block RAM (in encode-only mode). Time after RDCLK that the single-bit-error signal is stable at the SBITERR output of the block RAM (without output register). Time after RDCLK that the single-bit-error signal is stable at the SBITERR output of the block RAM (with output register). Time after RDCLK that the double-bit-error signal is stable at the DBITERR output of the block RAM (without output register). Time after RDCLK that the double-bit-error signal is stable at the DBITERR output of the block RAM (with output register).
SBITERR
TRCKO_ECCR_SBITERR(4)
SBITERR
TRCKO_ECC_DBITERR(3)
DBITERR
TRCKO_ECCR_DBITERR(4)
DBITERR
Notes:
1. TRDCK_DI_ECC/TRCKD_DI_ECC include the parity input TRDCK_DIP_ECC/TRCKD_DIP_ECC. 2. TRCKO_DO includes parity output (TRCKO_DOP). 3. TRCKO_ECC_PARITY, TRCKO_ECC_SBITERR, and TRCKO_ECC_DBITERR are combined into the TRCKO_ECC parameter in the Virtex-5 FPGA Data Sheet. 4. TRCKO_ECC_SBITERR and TRCKO_ECC_DBITERR are combined into the TRCKO_ECCR parameter in the Virtex-5 FPGA Data Sheet.
170
www.xilinx.com
RAMB18
RAMB18SDP
RAMB18
RAMB18SDP
RAMB18
RAMB18SDP
FIFO18
FIFO18_36
ug0190_4_35_050208
Figure 4-33:
www.xilinx.com
171
172
www.xilinx.com
Chapter 5
COUT CLB
COUT
CIN
CIN
UG190_5_01_122605
Figure 5-1:
The Xilinx tools designate slices with the following definitions. An X followed by a number identifies the position of each slice in a pair as well as the column position of the slice. The X number counts slices starting from the bottom in sequence 0, 1 (the first CLB column); 2, 3 (the second CLB column); etc. A Y followed by a number identifies a row of slices. The number remains the same within a CLB, but counts up in sequence from one CLB row to the next CLB row, starting from the bottom. Figure 5-2 shows four CLBs located in the bottom-left corner of the die.
www.xilinx.com
173
COUT CLB
COUT
COUT CLB
COUT
Slice X1Y1
Slice X3Y1
Slice X0Y0
Slice X2Y0
UG190_5_02_122605
Figure 5-2:
Slice Description
Every slice contains four logic-function generators (or look-up tables), four storage elements, wide-function multiplexers, and carry logic. These elements are used by all slices to provide logic, arithmetic, and ROM functions. In addition to this, some slices support two additional functions: storing data using distributed RAM and shifting data with 32-bit registers. Slices that support these additional functions are called SLICEM; others are called SLICEL. SLICEM (shown in Figure 5-3) represents a superset of elements and connections found in all slices. SLICEL is shown in Figure 5-4.
174
www.xilinx.com
CLB Overview
COUT
Reset Type
Sync
DI D6 D5 D4 D3 D2 D1 A6 A5 A4 A3 A2 A1 DI2 DPRAM64/32 SPRAM64/32 SRL32 O6 SRL16 O5 LUT DI1 RAM ROM MC31
Async DMUX
D DX D CE CK
WA1-WA6 WA7 WA8 DX CI C6 C5 C4 C3 C2 C1 DI2 A6 DPRAM64/32 A5 SPRAM64/32 O6 A4 SRL32 SRL16 O5 A3 LUT DI1 A2 RAM A1 ROM MC31 WA1-WA6 WA7 WA8
CMUX
C CX D CE CK
CX BI B6 B5 B4 B3 B2 B1 DI2 A6 DPRAM64/32 A5 SPRAM64/32 O6 A4 SRL32 SRL16 O5 A3 LUT DI1 A2 RAM A1 ROM MC31 WA1-WA6 WA7 WA8 BMUX
B BX D CE CK
BX AI A6 A5 A4 A3 A2 A1 DI2 A6 DPRAM64/32 A5 SPRAM64/32 O6 A4 SRL32 SRL16 O5 A3 LUT DI1 A2 RAM A1 ROM MC31 WA1-WA6 WA7 WA8 0/1
AMUX
A AX D CE CK
CIN
UG190_c5_03_022709
Figure 5-3:
Diagram of SLICEM
www.xilinx.com
175
COUT
Reset Type
Sync Async DMUX
D6 D5 D4 D3 D2 D1 DX
A6 A5 A4 A3 A2 A1
LUT ROM
O6 O5
D DX D CE CK
O6 O5
C CX D CE CK
O6 O5
B BX D CE CK
O6 O5
A AX D CE CK 0/1
CIN
UG190_5_04_032606
Figure 5-4:
Diagram of SLICEL
Each CLB can contain zero or one SLICEM. Every other CLB column contains a SLICEMs. In addition, the two CLB columns to the left of the DSP48E columns both contain a SLICEL and a SLICEM.
176
www.xilinx.com
CLB Overview
CLB/Slice Configurations
Table 5-1 summarizes the logic resources in one CLB. Each CLB or slice can be implemented in one of the configurations listed. Table 5-2 shows the available resources in all CLBs. Table 5-1:
Slices 2
Notes:
1. SLICEM only, SLICEL does not have distributed RAM or shift registers.
LUTs 8
Table 5-2:
Device XC5VLX20T XC5VLX30 XC5VFX30T XC5VLX30T XC5VSX35T XC5VLX50 XC5VLX50T XC5VSX50T XC5VFX70T XC5VLX85 XC5VLX85T XC5VSX95T XC5VFX100T XC5VLX110 XC5VLX110T XC5VFX130T XC5VTX150T XC5VLX155 XC5VLX155T XC5VFX200T XC5VLX220 XC5VLX220T XC5VSX240T XC5VTX240T XC5VLX330 XC5VLX330T
www.xilinx.com
177
Storage Elements
The storage elements in a slice can be configured as either edge-triggered D-type flip-flops or level-sensitive latches. The D input can be driven directly by a LUT output via AFFMUX, BFFMUX, CFFMUX or DFFMUX, or by the BYPASS slice inputs bypassing the function generators via AX, BX, CX, or DX input. When configured as a latch, the latch is transparent when the CLK is Low. The control signals clock (CK), clock enable (CE), set/reset (SR), and reverse (REV) are common to all storage elements in one slice. When one flip-flop in a slice has SR or CE enabled, the other flip-flops used in the slice will also have SR or CE enabled by the common signal. Only the CLK signal has independent polarity. Any inverter placed on the clock signal is automatically absorbed. The CE, SR, and REV signals are active High. All flip-flop and latch primitives have CE and non-CE versions. The SR signal forces the storage element into the state specified by the attribute SRHIGH or SRLOW. SRHIGH forces a logic High at the storage element output when SR is asserted, while SRLOW forces a logic Low at the storage element output. When SR is used, an optional second input (DX) forces the storage element output into the opposite state via the REV pin. The reset condition is predominant over the set condition (see Figure 5-5). Table 5-3 and Table 5-4 provide truth tables for SR and REV depending on whether SRLOW or SRHIGH is used. Table 5-3: Truth Table when SRLOW is Used (Default Condition)
SR 0 0 REV 0 1 Function No Logic Change 1
178
www.xilinx.com
CLB Overview
Table 5-3:
Table 5-4:
LUT D Output
LUT C Output
CFF
FF LATCH Q INIT1 D INIT0 SRHIGH CE SRLOW CK SR REV CQ
CX
SR
Reset Type
Sync
Async
BQ
LUT A Output
AFF
FF LATCH Q INIT1 D INIT0 SRHIGH CE SRLOW CK SR REV AQ
AX
UG190_5_05_071207
Figure 5-5:
SRHIGH and SRLOW can be set individually for each storage element in a slice. The choice of synchronous (SYNC) or asynchronous (ASYNC) set/reset (SRTYPE) cannot be set individually for each storage element in a slice.
www.xilinx.com
179
The initial state after configuration or global initial state is defined by separate INIT0 and INIT1 attributes. By default, setting the SRLOW attribute sets INIT0, and setting the SRHIGH attribute sets INIT1. Virtex-5 devices can set INIT0 and INIT1 independent of SRHIGH and SRLOW. The configuration options for the set and reset functionality of a register or a latch are as follows: No set or reset Synchronous set Synchronous reset Synchronous set and reset Asynchronous set (preset) Asynchronous reset (clear) Asynchronous set and reset (preset and clear)
Distributed RAM modules are synchronous (write) resources. A synchronous read can be implemented with a storage element or a flip-flop in the same slice. By placing this flipflop, the distributed RAM performance is improved by decreasing the delay into the clockto-out value of the flip-flop. However, an additional clock latency is added. The distributed elements share the same clock input. For a write operation, the Write Enable (WE) input, driven by either the CE or WE pin of a SLICEM, must be set High.
180
www.xilinx.com
CLB Overview
Table 5-5 shows the number of LUTs (four per slice) occupied by each distributed RAM configuration. Table 5-5: Distributed RAM Configuration
RAM 32 x 1S 32 x 1D 32 x 2Q(2) 32 x 6SDP(2) 64 x 1S 64 x 1D 64 x 1Q(3) 64 x 3SDP(3) 128 x 1S 128 x 1D 256 x 1S
Notes:
1. S = single-port configuration; D = dual-port configuration; Q = quad-port configuration; SDP = simple dual-port configuration. 2. RAM32M is the associated primitive for this configuration. 3. RAM64M is the associated primitive for this configuration.
Number of LUTs 1 2 4 4 1 2 4 4 2 4 4
For single-port configurations, distributed RAM has a common address port for synchronous writes and asynchronous reads. For dual-port configurations, distributed RAM has one port for synchronous writes and asynchronous reads, and another port for asynchronous reads. In simple dual-port configuration, there is no data out (read port) from the write port. For quad-port configurations, distributed RAM has one port for synchronous writes and asynchronous reads, and three additional ports for asynchronous reads. In single-port mode, read and write addresses share the same address bus. In dual-port mode, one function generator is connected with the shared read and write port address. The second function generator has the A inputs connected to a second read-only port address and the WA inputs shared with the first read/write port address. Figure 5-6 through Figure 5-14 illustrate various example distributed RAM configurations occupying one SLICEM. When using x2 configuration (RAM32X2Q), A6 and WA6 are driven High by the software to keep O5 and O6 independent.
www.xilinx.com
181
RAM 32X2Q
(DX) (AI/BI/CI/DI) D[5:1] 5
5
(CLK) (WE)
O5
DOD[1]
ADDRC[4:0]
C[5:1] 5
5
O5
DOC[1]
ADDRB[4:0]
B[5:1] 5
5
O5
DOB[1]
ADDRA[4:0]
A[5:1] 5
5
O5
DOA[1]
UG190_5_06_032706
Figure 5-6:
182
www.xilinx.com
CLB Overview
RAM 32X6SDP
DPRAM32 unused unused WADDR[5:1] WADDR[6] = 1 WCLK WED DI1 DI2 A[6:1] WA[6:1] CLK WE
D[5:1] 5
5
(CLK) (WE)
DPRAM32 DATA[1] DATA[2] RADDR[5:1] RADDR[6] = 1 DI1 DI2 A[6:1] WA[6:1] CLK WE O6 O[1]
C[5:1] 5
5
O5
O[2]
O6
O[3]
O5
O[4]
A[5:1] 5
5
O5
O[6]
UG190_5_06_032706
Figure 5-7:
www.xilinx.com
183
RAM64X1S
SPRAM64 DI1 A[6:1] WA[6:1] CLK WE O6
D A[5:0] WCLK WE
(DX)
6 (D[6:1]) 6
O D Q
(CLK) (WE/CE)
ug190_5_07_032706
Figure 5-8:
If four single-port 64 x 1-bit modules are built, the four RAM64X1S primitives can occupy a SLICEM, as long as they share the same clock, write enable, and shared read and write port address inputs. This configuration equates to 64 x 4-bit single-port distributed RAM.
X-Ref Target - Figure 5-9
RAM64X1D
DPRAM64 DI1 A[6:1] WA[6:1] CLK WE O6
D A[5:0] WCLK WE
(DX) (D[6:1]) 6
6
(CLK) (WE/CE)
O6
UG190_5_09_050506
Figure 5-9:
If two dual-port 64 x 1-bit modules are built, the two RAM64X1D primitives can occupy a SLICEM, as long as they share the same clock, write enable, and shared read and write port address inputs. This configuration equates to 64 x 2-bit dual-port distributed RAM.
184
www.xilinx.com
CLB Overview
RAM64X1Q
DPRAM64 DI1 ADDRC (C[6:1]) A[6:1] WA[6:1] CLK WE O6 DOC Registered Output (Optional)
ug190_5_10_032706
Figure 5-10:
www.xilinx.com
185
RAM 64X3SDP
DPRAM32 unused unused WADDR[6:1] WCLK WED DI1 DI2 A[6:1] WA[6:1] CLK WE
D[6:1] 6
6
(CLK) (WE)
O6
O[1]
O5
O6
O[2]
O5
O6
O[3]
O5
UG190_5_06_050506
Figure 5-11:
Implementation of distributed RAM configurations with depth greater than 64 requires the usage of wide-function multiplexers (F7AMUX, F7BMUX, and F8MUX).
186
www.xilinx.com
CLB Overview
RAM128X1S
A6 (CX) (DX)
[5:0]
SPRAM64 DI1 A[6:1] WA[7:1] CLK WE 0 SPRAM64 DI1 O6 F7BMUX D Q Output Registered Output (Optional) A[6:1] WA[7:1] CLK WE
ug190_5_12_050506
D A[6:0] WCLK WE
O6
(CLK) (WE/CE)
[5:0] 7
Figure 5-12:
If two single-port 128 x 1-bit modules are built, the two RAM128X1S primitives can occupy a SLICEM, as long as they share the same clock, write enable, and shared read and write port address inputs. This configuration equates to 128 x 2-bit single-port distributed RAM.
www.xilinx.com
187
RAM128X1D
A6 (CX) DX
6 7
D A[6:0] WCLK WE
O6
(CLK) (WE)
F7BMUX
D Q
O6
O6
A[6:1] WA[7:1] CLK WE DPO DPRAM64 DI1 O6 D Q Registered Output (Optional) A[6:1] WA[7:1] CLK WE
F7AMUX
6 7
AX
UG190_5_13_050506
Figure 5-13:
188
www.xilinx.com
CLB Overview
RAM256X1S
O6
A6 (CX)
SPRAM64 DI1
6 8
F7BMUX
O6
SPRAM64 DI1
6 8
F8MUX
O6
A6 (AX)
SPRAM64 DI1
6 8
F7AMUX
O6
Figure 5-14:
Distributed RAM configurations greater than the provided examples require more than one SLICEM. There are no direct connections between slices to form larger distributed RAM configurations within a CLB or between slices.
www.xilinx.com
189
The synchronous write operation is a single clock-edge operation with an active-High write-enable (WE) feature. When WE is High, the input (D) is loaded into the memory location at address A.
Asynchronous Read Operation
The output is determined by the address A (for single-port mode output/SPO output of dual-port mode), or address DPRA (DPO output of dual-port mode). Each time a new address is applied to the address pins, the data value in the memory location of that address is available on the output after the time delay to access the LUT. This operation is asynchronous and independent of the clock signal.
190
www.xilinx.com
CLB Overview
or flip-flop is available to implement a synchronous read. In this case, the clock-to-out of the flip-flop determines the overall delay and improves performance. However, one additional cycle of clock latency is added. Any of the 32 bits can be read out asynchronously (at the O6 LUT outputs) by varying the 5-bit address. This capability is useful in creating smaller shift registers (less than 32 bits). For example, when building a 13-bit shift register, simply set the address to the 13th bit. Figure 5-15 is a logic block diagram of a 32-bit shift register.
X-Ref Target - Figure 5-15
SRLC32E
SHIFTIN (MC31 of Previous LUT) SRL32 SHIFTIN (D) (AX) DI1 MC31 A[4:0] CLK CE
5 (A[6:2])
SHIFTOUT (Q31)
(CLK) (WE/CE)
Figure 5-15: 32-bit Shift Register Configuration Figure 5-16 illustrates an example shift register configuration occupying one function generator.
X-Ref Target - Figure 5-16
Address (A[4:0])
MUX
UG190_5_16_050506
Figure 5-16:
www.xilinx.com
191
Figure 5-17 shows two 16-bit shift registers. The example shown can be implemented in a single LUT.
X-Ref Target - Figure 5-17
O5
A[5:2] CLK WE
MC31
UG190_5_17_050506
Figure 5-17:
As mentioned earlier, an additional output (MC31) and a dedicated connection between shift registers allows connecting the last bit of one shift register to the first bit of the next, without using the LUT O6 output. Longer shift registers can be built with dynamic access to any bit in the chain. The shift register chaining and the F7AMUX, F7BMUX, and F8MUX multiplexers allow up to a 128-bit shift register with addressable access to be implemented in one SLICEM. Figure 5-18 through Figure 5-20 illustrate various example shift register configurations that can occupy one SLICEM.
X-Ref Target - Figure 5-18
DI1 A[6:2]
O6
MC31 CLK WE
A5 (AX)
(Optional)
5
A[6:2] CLK WE
MC31
(MC31)
SHIFTOUT (Q63)
UG190_5_18_050506
192
www.xilinx.com
CLB Overview
DI1 A[6:2]
O6
MC31 CLK WE
F7BMUX
D Q
(Optional) O6
AX (A5)
SRL32 DI1
5
A[6:2] CLK WE
UG190_c5_19_020909
Figure 5-19:
www.xilinx.com
193
DI1 A[6:2]
O6
(CLK) (WE/CE)
MC31 CLK WE
CX (A5)
F7BMUX
BX (A6)
(BMUX) (BQ)
D Q
(Optional)
F7AMUX
Figure 5-20: 128-bit Shift Register Configuration It is possible to create shift registers longer than 128 bits across more than one SLICEM. However, there are no direct connections between slices to form these shift registers.
The shift operation is a single clock-edge operation, with an active-High clock enable feature. When enable is High, the input (D) is loaded into the first bit of the shift register. Each bit is also shifted to the next highest bit position. In a cascadable shift register configuration, the last bit is shifted out on the M31 output. The bit selected by the 5-bit address port (A[4:0]) appears on the Q output.
Dynamic Read Operation
The Q output is determined by the 5-bit address. Each time a new address is applied to the 5-input address pins, the new bit position value is available on the Q output after the time
194
www.xilinx.com
CLB Overview
delay to access the LUT. This operation is asynchronous and independent of the clock and clock-enable signals.
Static Read Operation
If the 5-bit address is fixed, the Q output always uses the same bit position. This mode implements any shift-register length from 1 to 32 bits in one LUT. The shift register length is (N+1), where N is the input address (0 31). The Q output changes synchronously with each shift operation. The previous bit is shifted to the next position and appears on the Q output.
Multiplexers
Function generators and associated multiplexers in Virtex-5 FPGAs can implement the following: 4:1 multiplexers using one LUT 8:1 multiplexers using two LUTs 16:1 multiplexers using four LUTs
These wide input multiplexers are implemented in one level or logic (or LUT) using the dedicated F7AMUX, F7BMUX, and F8MUX multiplexers. These multiplexers allow LUT combinations of up to four LUTs in a slice.
www.xilinx.com
195
SLICE LUT
O6 SEL D [1:0], DATA D [3:0] Input (D[6:1]) 6 A[6:1] D Q (D) (DQ) 4:1 MUX Output Registered Output
LUT
O6 SEL C [1:0], DATA C [3:0] Input (C[6:1]) 6 A[6:1]
LUT
O6 SEL B [1:0], DATA B [3:0] Input (B[6:1]) 6 A[6:1]
LUT
O6 SEL A [1:0], DATA A [3:0] Input (A[6:1])
6
A[6:1]
(CLK) CLK
(Optional)
UG190_5_21_050506
Figure 5-21:
196
www.xilinx.com
CLB Overview
8:1 Multiplexer
Each slice has an F7AMUX and an F7BMUX. These two muxes combine the output of two LUTs to form a combinatorial function up to 13 inputs (or an 8:1 MUX). Up to two 8:1 MUXes can be implemented in a slice, as shown in Figure 5-22.
X-Ref Target - Figure 5-22
SLICE LUT
O6 SEL D [1:0], DATA D [3:0] Input (1) (D[6:1]) 6 A[6:1] F7BMUX (CMUX) 8:1 MUX Output (1) Registered Output
LUT
O6 SEL C [1:0], DATA C [3:0] Input (1) (C[6:1]) 6 A[6:1] (Optional) (CX) (CLK) D Q (CQ)
SELF7(1) CLK
LUT
O6 SEL B [1:0], DATA B [3:0] Input (2) (B[6:1]) 6 A[6:1] F7AMUX (AMUX) 8:1 MUX Output (2) Registered Output
LUT
O6 SEL A [1:0], DATA A [3:0] Input (2) (A[6:1])
6
D Q
(AQ)
A[6:1] (Optional)
SELF7(2)
(AX)
UG190_5_22_090806
Figure 5-22:
www.xilinx.com
197
16:1 Multiplexer
Each slice has an F8MUX. F8MUX combines the outputs of F7AMUX and F7BMUX to form a combinatorial function up to 27 inputs (or a 16:1 MUX). Only one 16:1 MUX can be implemented in a slice, as shown in Figure 5-23.
X-Ref Target - Figure 5-23
SLICE LUT
O6 SEL D [1:0], DATA D [3:0] Input (D[6:1]) 6 A[6:1] F7BMUX
LUT
O6 SEL C [1:0], DATA C [3:0] Input (C[6:1]) 6 A[6:1] F8MUX (CX) (BMUX) 16:1 MUX Output Registered Output
SELF7
LUT
O6 SEL B [1:0], DATA B [3:0] Input (B[6:1]) 6 A[6:1] F7AMUX D Q
(B)
(Optional)
LUT
O6 SEL A [1:0], DATA A [3:0] Input (A[6:1])
6
A[6:1]
Figure 5-23:
It is possible to create multiplexers wider than 16:1 across more than one SLICEM. However, there are no direct connections between slices to form these wide multiplexers.
198
www.xilinx.com
CLB Overview
carry multiplexer (MUXCY) can also be used to cascade function generators for implementing wide logic functions. Figure 5-24 illustrates the carry chain with associated logic elements in a slice.
X-Ref Target - Figure 5-24
COUT (To Next Slice) Carry Chain Block (CARRY4) CO3 O6 From LUTD O5 From LUTD DX S3 MUXCY O3 DI3 D Q DQ (Optional) CO2 O6 From LUTC O5 From LUTC CX S2 MUXCY O2 DI2 D Q CQ (Optional) CO1 O6 From LUTB O5 From LUTB BX S1 MUXCY O1 DI1 D Q BQ (Optional) CO0 O6 From LUTA O5 From LUTA AX CYINIT CIN S0 MUXCY O0 DI0 D Q AQ (Optional)
* Can be used if unregistered/registered outputs are free.
UG190_5_24_050506
DMUX/DQ*
DMUX
CMUX/CQ*
CMUX
BMUX/BQ*
BMUX
AMUX/AQ*
AMUX
Figure 5-24:
The carry chains carry lookahead logic along with the function generators. There are ten independent inputs (S inputs S0 to S3, DI inputs DI1 to DI4, CYINIT and CIN) and eight independent outputs (O outputs O0 to O3, and CO outputs CO0 to CO3). The S inputs are used for the propagate signals of the carry lookahead logic. The propagate signals are sourced from the O6 output of a function generator. The DI inputs are used for the generate signals of the carry lookahead logic. The generate signals are sourced from either the O5 output of a function generator or the BYPASS input (AX, BX, CX, or DX) of a slice. The former input is used to create a multiplier, while the latter is used
www.xilinx.com
199
to create an adder/accumulator. CYINIT is the CIN of the first bit in a carry chain. The CYINIT value can be 0 (for add), 1 (for subtract), or AX input (for the dynamic first carry bit). The CIN input is used to cascade slices to form a longer carry chain. The O outputs contain the sum of the addition/subtraction. The CO outputs compute the carry out for each bit. CO3 is connected to COUT output of a slice to form a longer carry chain by cascading multiple slices. The propagation delay for an adder increases linearly with the number of bits in the operand, as more carry chains are cascaded. The carry chain can be implemented with a storage element or a flip-flop in the same slice.
Use the models in this chapter in conjunction with both the Xilinx Timing Analyzer software (TRCE) and the section on switching characteristics in the Virtex-5 FPGA Data Sheet. All pin names, parameter names, and paths are consistent with the post-route timing and pre-route static timing reports. Most of the timing parameters found in the section on switching characteristics are described in this chapter. All timing parameters reported in the Virtex-5 FPGA Data Sheet are associated with slices and CLBs. The following sections correspond to specific switching characteristics sections in the Virtex-5 FPGA Data Sheet: General Slice Timing Model and Parameters (CLB Switching Characteristics) Slice Distributed RAM Timing Model and Parameters (Available in SLICEM only) (CLB Distributed RAM Switching Characteristics) Slice SRL Timing Model and Parameters (Available in SLICEM only) (CLB SRL Switching Characteristics) Slice Carry-Chain Timing Model and Parameters (CLB Application Switching Characteristics)
200
www.xilinx.com
LUT
D Inputs
6
O6 O5 FE/LAT D CE CLK Q
D DMUX DQ
DX
SR REV
LUT
C Inputs
6
O6 O5 D CE CLK Q
CX
CQ
F8MUX
SR REV
LUT
B Inputs
6
O6 O5 FE/LAT D CE CLK Q
B BMUX
BX
BQ
SR REV
LUT
A Inputs
6
O6 O5 D CE CLK Q
AQ
SR REV
UG190_5_25_050506
Figure 5-25:
www.xilinx.com
201
Timing Parameters
Table 5-7 shows the general slice timing parameters for a majority of the paths in Figure 5-25. Table 5-7: General Slice Timing Parameters
Parameter Combinatorial Delays TILO(1) A/B/C/D inputs to A/B/C/D outputs Propagation delay from the A/B/C/D inputs of the slice, through the look-up tables (LUTs), to the A/B/C/D outputs of the slice (six-input function). Propagation delay from the A/B/C/D inputs of the slice, through the LUTs and F7AMUX/F7BMUX to the AMUX/CMUX outputs (seven-input function). Propagation delay from the A/B/C/D inputs of the slice, through the LUTs, F7AMUX/F7BMUX, and F8MUX to the BMUX output (eight-input function). Time after the clock that data is stable at the AQ/BQ/CQ/DQ outputs of the slice sequential elements (configured as a flip-flop). Time after the clock that data is stable at the XQ/YQ outputs of the slice sequential elements (configured as a latch). Time before/after the CLK that data from the AX/BX/CX/DX inputs of the slice must be stable at the D input of the slice sequential elements (configured as a flip-flop). Time before/after the CLK that the CE input of the slice must be stable at the CE input of the slice sequential elements (configured as a flip-flop). Time before/after the CLK that the SR (Set/Reset) and the BY (Rev) inputs of the slice must be stable at the SR/Rev inputs of the slice sequential elements (configured as a flip-flop). Minimum Pulse Width for the SR (Set/Reset) and BY (Rev) pins. Propagation delay for an asynchronous Set/Reset of the slice sequential elements. From the SR/BY inputs to the AQ/BQ/CQ/DQ outputs. Toggle Frequency Maximum frequency that a CLB flip-flop can be clocked: 1 / (TCH + TCL). Function Description
TILO_2
TILO_3
Sequential Delays TCKO FF Clock (CLK) to AQ/BQ/CQ/DQ outputs Latch Clock (CLK) to AQ/BQ/CQ/DQ outputs
TCKLO
Setup and Hold Times for Slice Sequential Elements(2) TDICK/TCKDI AX/BX/CX/DX inputs
TCECK/TCKCE
CE input
TSRCK/TCKSR
SR/BY input
FTOG
Notes:
1. This parameter includes a LUT configured as two five-input functions. 2. TXXCK = Setup Time (before clock edge), and TCKXX = Hold Time (after clock edge).
202
www.xilinx.com
Timing Characteristics
Figure 5-26 illustrates the general timing characteristics of a Virtex-5 FPGA slice.
X-Ref Target - Figure 5-26
AQ/BQ/CQ/DQ (OUT)
ug190_5_26_050506
Figure 5-26:
At time TCEO before clock event (1), the clock-enable signal becomes valid-High at the CE input of the slice register. At time TDICK before clock event (1), data from either AX, BX, CX, or DX inputs become valid-High at the D input of the slice register and is reflected on either the AQ, BQ, CQ, or DQ pin at time TCKO after clock event (1). At time TSRCK before clock event (3), the SR signal (configured as synchronous reset) becomes valid-High, resetting the slice register. This is reflected on the AQ, BQ, CQ, or DQ pin at time TCKO after clock event (3).
www.xilinx.com
203
Slice Distributed RAM Timing Model and Parameters (Available in SLICEM only)
Figure 5-27 illustrates the details of distributed RAM implemented in a Virtex-5 FPGA slice. Some elements of the slice are omitted for clarity. Only the elements relevant to the timing paths described in this section are shown.
X-Ref Target - Figure 5-27
RAM
DX DI D input CLK WE 6 DI1 DI2 A[6:0] WA[6:0] CLK WE O6 D
O5
DMUX
RAM
CX CI C input 6 DI1 DI2 A[6:0] WA[6:0] CLK WE O6 C
O5
CMUX
RAM
BX BI B input 6 DI1 DI2 A[6:0] WA[6:0] CLK WE O6 B
O5
BMUX
RAM
AX AI A input 6 DI1 DI2 A[6:0] WA[6:0] CLK WE O6 A
O5
AMUX
UG190_5_27_050506
Figure 5-27:
204
www.xilinx.com
Sequential Delays for a Slice LUT Configured as RAM (Distributed RAM) TSHCKO(1) CLK to A/B/C/D outputs Time after the CLK of a write operation that the data written to the distributed RAM is stable on the A/B/C/D output of the slice.
Setup and Hold Times for a Slice LUT Configured as RAM (Distributed RAM)(2) TDS/TDH(3) TACK/TCKA AX/BX/CX/DX configured as data input (DI1) A/B/C/D address inputs Time before/after the clock that data must be stable at the AX/BX/CX/DX input of the slice. Time before/after the clock that address signals must be stable at the A/B/C/D inputs of the slice LUT (configured as RAM). Time before/after the clock that the write enable signal must be stable at the WE input of the slice LUT (configured as RAM).
TWS/TWH
WE input
Minimum Pulse Width, High Minimum Pulse Width, Low Minimum clock period to meet address write cycle time.
www.xilinx.com
205
1 TWC TWPH TWPL CLK A/B/C/D (ADDR) AX/BX/CX/DX (DI) WE DATA_OUT A/B/C/D Output 1 TWS TAS 2 TDS
X TILO
X TILO
Figure 5-28:
This is also applicable to the AMUX, BMUX, CMUX, DMUX, and COUT outputs at time TSHCKO and TWOSCO after clock event 1.
206
www.xilinx.com
SRL
DX D address DI1 O6 6 A CLK CLK W MC31 WE D
SRL
DI1 CX C address 6 A CLK O6 MC31 WE C
SRL
DI1 BX B address 6 A CLK O6 MC31 WE B
SRL
DI1 AX A address 6 A CLK O6 MC31 WE A DMUX
UG190_5_29_050506
Figure 5-29:
www.xilinx.com
207
Sequential Delays for a Slice LUT Configured as an SRL TREG(1) CLK to A/B/C/D outputs Time after the CLK of a write operation that the data written to the SRL is stable on the A/B/C/D outputs of the slice.
TREG_MUX(1)
CLK to AMUX - DMUX output Time after the CLK of a write operation that the data written to the SRL is stable on the DMUX output of the slice. CLK to DMUX output via MC31 output Time after the CLK of a write operation that the data written to the SRL is stable on the DMUX output via MC31 output.
TREG_M31
Setup and Hold Times for a Slice LUT Configured SRL(2) TWS/TWH CE input (WE) Time before/after the clock that the write enable signal must be stable at the WE input of the slice LUT (configured as an SRL). Time before the clock that the data must be stable at the AX/BX/CX/DX input of the slice (configured as an SRL).
TDS/TDH(3)
Notes:
1. This parameter includes a LUT configured as a two-bit shift register. 2. TXXCK = Setup Time (before clock edge), and TCKXX = Hold Time (after clock edge). 3. Parameter includes AI/BI/CI/DI configured as a data input (DI2) or two bits with a common shift.
1 CLK Write Enable (WE) Shift_In (DI) Address (A/B/C/D) Data Out (A/B/C/D) MSB (MC31/DMUX) X X 0 TWS TDS
32
1 0 TREG 0 TREG X 1 X
0 2 TILO 1 X 0 1 X
0 1
TILO 1 X 0 1 X 0
ug190_5_30_050506
Figure 5-30:
208
www.xilinx.com
www.xilinx.com
209
Sequential Delays for Slice LUT Configured as Carry Chain TAXCY/TBXCY/TCXCY/TDXCY AX/BX/CX/DX input to COUT output CIN input to COUT output Propagation delay from the AX/BX/CX/DX inputs of the slice to the COUT output of the slice. Propagation delay from the CIN input of the slice to the COUT output of the slice. Propagation delay from the A/B/C/D inputs of the slice to the COUT output of the slice. Propagation delay from the A/B/C/D inputs of the slice to AMUX/BMUX/CMUX/DMUX output of the slice using XOR (sum).
TBYP
TOPCYA/TOPCYB/TOPCYC/TOPCYD A/B/C/D input to COUT output TCINA/TCINB/TCINC/TCIND A/B/C/D input to AMUX/BMUX/CMUX/DMU X output
Setup and Hold Times for a Slice LUT Configured as a Carry Chain(1) TCINCK/TCKCIN CIN Data inputs Time before the CLK that data from the CIN input of the slice must be stable at the D input of the slice sequential elements (configured as a flip-flop).
Notes:
1. TXXCK = Setup Time (before clock edge), and TCKXX = Hold Time (after clock edge).
ug190_5_31_050506
Figure 5-31:
210
www.xilinx.com
CLB Primitives
At time TCINCK before clock event 1, data from CIN input becomes valid-High at the D input of the slice register. This is reflected on any of the AQ/BQ/CQ/DQ pins at time TCKO after clock event 1. At time TSRCK before clock event 3, the SR signal (configured as synchronous reset) becomes valid-High, resetting the slice register. This is reflected on any of the AQ/BQ/CQ/DQ pins at time TCKO after clock event 3.
CLB Primitives
More information on the CLB primitives are available in the software libraries guide.
The input and output data are 1-bit wide (with the exception of the 32-bit RAM). Figure 5-32 shows generic single-port, dual-port, and quad-port distributed RAM primitives. The A, ADDR, and DPRA signals are address buses.
www.xilinx.com
211
RAM#X1S
D WE WCLK O D WE WCLK
RAM#X1D
SPO DI[A:D][#:0] WE WCLK
RAM#M
DOD[#:0]
A[#:0]
A[#:0]
ADDRD[#:0]
DPRA[#:0]
Read Port
ADDRC[#:0]
Read Port
ADDRB[#:0]
Read Port
DOB[#:0]
ADDRA[#:0]
Read Port
DOA[#:0]
UG190_5_32_112108
Figure 5-32:
Instantiating several distributed RAM primitives can be used to implement wide memory blocks.
Port Signals
Each distributed RAM port operates independently of the other while reading the same set of memory cells.
Clock WCLK
The clock is used for the synchronous write. The data and the address input pins have setup times referenced to the WCLK pin.
Enable WE/WED
The enable pin affects the write functionality of the port. An active write enable prevents any writing to memory cells. An active write enable causes the clock edge to write the data input signal to the memory location pointed to by the address inputs.
Data In D, DID[#:0]
The data input D (for single-port and dual-port) and DID[#:0] (for quad-port) provide the new data value to be written into the RAM.
212
www.xilinx.com
CLB Primitives
SRLC32E
6
D A[4:0] CE
Q31 CLK
UG190_5_33_050506
Figure 5-33:
Instantiating several 32-bit shift register with dedicated multiplexers (F7AMUX, F7BMUX, and F8MUX) allows a cascadable shift register chain of up to 128-bit in a slice. Figure 5-18 through Figure 5-20 in the Shift Registers (Available in SLICEM only) section of this document illustrate the various implementation of cascadable shift registers greater than 32 bits.
Port Signals
Clock CLK
Either the rising edge or the falling edge of the clock is used for the synchronous shift operation. The data and clock enable input pins have setup times referenced to the chosen edge of CLK.
Data In D
The data input provides new data (one bit) to be shifted into the shift register.
Clock Enable - CE
The clock enable pin affects shift functionality. An inactive clock enable pin does not shift data into the shift register and does not write new data. Activating the clock enable allows the data in (D) to be written to the first location and all data to be shifted by one location. When available, new data appears on output pins (Q) and the cascadable output pin (Q31).
Address A[4:0]
The address input selects the bit (range 0 to 31) to be read. The nth bit is available on the output pin (Q). Address inputs have no effect on the cascadable output pin (Q31). It is always the last bit of the shift register (bit 31).
www.xilinx.com
213
Data Out Q
The data output Q provides the data value (1 bit) selected by the address inputs.
SRLC32G
D Address CE CLK (Write Enable) Q31 Q D
FF
Q Synchronous Output
UG190_5_34_050506
Figure 5-34:
This configuration provides a better timing solution and simplifies the design. Because the flip-flop must be considered to be the last register in the shift-register chain, the static or dynamic address should point to the desired length minus one. If needed, the cascadable output can also be registered in a flip-flop.
214
www.xilinx.com
CLB Primitives
LUT
D D D D
LUT
Q31
Q31
SRLC32G
SRLC32G
LUT
D D
LUT
Q31
Q31
SRLC32G
SRLC32G FF
LUT
D 00111 5 A[4:0] Q31 Q OUT (72-bit SRL) D 00110 5
LUT
Q D Q A[4:0] Q31 OUT (72-bit SRL)
SRLC32G
SRLC32G
UG190_5_35_050506
Figure 5-35:
Multiplexer Primitives
Two primitives (MUXF7 and MUXF8) are available for access to the dedicated F7AMUX, F7BMUX and F8MUX in each slice. Combined with LUTs, these multiplexer primitives are also used to build larger width multiplexers (from 8:1 to 16:1). The Designing Large Multiplexers section provides more information on building larger multiplexers.
Port Signals
Data In I0, I1
The data input provides the data to be selected by the select signal (S).
Control In S
The select input signal determines the data input signal to be connected to the output O. Logic 0 selects the I0 input, while logic 1 selects the I1 input.
Data Out O
The data output O provides the data value (one bit) selected by the control inputs.
www.xilinx.com
215
logic in terms of performance and area. It also automatically uses and connects this function properly. Figure 5-24, page 199 illustrates the CARRY4 block diagram.
Port Signals
Sum Outputs O[3:0]
The sum outputs provide the final result of the addition/subtraction.
Carry In CI
The carry in input is used to cascade slices to form longer carry chain. To create a longer carry chain, the CO[3] output of another CARRY4 is simply connected to this pin.
216
www.xilinx.com
Chapter 6
SelectIO Resources
I/O Tile Overview
Input/output characteristics and logic resources are covered in three consecutive chapters. Chapter 6, SelectIO Resources describes the electrical behavior of the output drivers and input receivers, and gives detailed examples of many standard interfaces. Chapter 7, SelectIO Logic Resources, describes the input and output data registers and their DoubleData-Rate (DDR) operation, and the programmable input delay (IDELAY). Chapter 8, Advanced SelectIO Logic Resources, describes the data serializer/deserializer (SERDES). An I/O tile contains two IOBs, two ILOGICs, two OLOGICs, and two IODELAYs. Figure 6-1 shows a Virtex-5 FPGA I/O tile.
X-Ref Target - Figure 6-1
IODELAY (Chapter 7)
ILOGIC (Chapter 7) or ISERDES (Chapter 8) IOB (Chapter 6) OLOGIC (Chapter 7) or OSERDES (Chapter 8) Pad
ILOGIC (Chapter 7) or ISERDES (Chapter 8) IOB (Chapter 6) OLOGIC (Chapter 7) or OSERDES (Chapter 8) Pad
IODELAY (Chapter 7)
ug190_6_01_041106
Figure 6-1:
www.xilinx.com
217
Each Virtex-5 FPGA I/O tile contains two IOBs, and also two ILOGIC blocks and two OLOGIC blocks, as described in Chapter 7, SelectIO Logic Resources. Figure 6-2 shows the basic IOB and its connections to the internal logic and the device Pad.
X-Ref Target - Figure 6-2
DIFFO_IN DIFFO_OUT
PAD
PADOUT
O OUTBUF INBUF
DIFFI_IN
ug190_6_02_021306
Figure 6-2:
Each IOB has a direct connection to an ILOGIC/OLOGIC pair containing the input and output logic resources for data and 3-state control for the IOB. Both ILOGIC and OLOGIC can be configured as ISERDES and OSERDES, respectively, as described in Chapter 8, Advanced SelectIO Logic Resources.
218
www.xilinx.com
depends upon the device size, and in larger devices, there are additional full-sized banks in the center column. In the Virtex-5 Family Overview the total number of I/O banks is listed by device type. The XC5VLX30 has 12 usable I/O banks and one configuration bank. Figure 6-3 is an example of a columnar floorplan showing the XC5VLX30 I/O banks.
X-Ref Target - Figure 6-3
BANK 40 I/O BANK 20 I/O BANK 20 I/O CONFIG BANK 20 I/O BANK 40 I/O BANK 20 I/O
BANK 40 I/O
BANK 40 I/O
BANK 40 I/O
BANK 40 I/O
BANK 40 I/O
BANK 40 I/O
ug190_6_03_021306
Figure 6-3:
www.xilinx.com
219
DCI Cascading
Previously, using DCI I/O standards in a bank required connecting external reference resistors to the VRN and VRP pins in that same bank. The VRN/VRP pins provide a reference voltage used by internal DCI circuitry to adjust the I/O output impedance to match the external reference resistors. As shown in Figure 6-4, a digital control bus is internally distributed throughout the bank to control the impedance of each I/O.
X-Ref Target - Figure 6-4
To Local Bank
DCI
VRN/VRP
UG190_6_95_019507
Figure 6-4:
The Virtex-5 FPGA banks using DCI I/O standards now have the option of deriving the DCI impedance values from another DCI bank. With DCI cascading, one bank (the master bank) must have its VRN/VRP pins connected to external reference resistors. Also, at least one I/O in that bank (the master bank) must be configured as DCI. Other banks in the same column (slave banks) can use DCI standards with the same impedance as the master bank,
220
www.xilinx.com
without connecting the VRN/VRP pins on these banks to external resistors. DCI impedance control in cascaded banks is received from the master bank. When using DCI cascading, the DCI control circuitry in the master bank creates and routes DCI control to the cascaded banks in daisy-chain style. Only the master banks VRN/VRP pins are required when using DCI cascading. Also, when using DCI cascading, only one set of VRN/VRP pins provides the DCI reference voltage for multiple banks. DCI cascading: Reduces overall power, since fewer voltage references are required Frees up VRN/VRP pins on slave banks for general customer use DCI in banks 1 and 2 is supported only through cascading. These two banks do not have VRN/VRP pins and therefore cannot be used as master or stand-alone DCI banks. Cascading is not possible through bank 0.
Similarly, due to the center column architecture, the half-size banks 1, 2, 3, and 4 are separated from all the other banks in the center column by the CMT tiles. It is not possible to cascade across the CMT tiles. This affects the larger devices that have more than four user I/O center column banks (plus bank 0). For instance, bank 4 cannot be cascaded with bank 6, and bank 3 cannot be cascaded with bank 5. Bank 3 can only be cascaded with bank 1, and bank 4 can only be cascaded with bank 2. Figure 6-5 shows DCI cascading support over multiple banks. Bank B is the master bank.
www.xilinx.com
221
To Local Bank
Bank A
To Local Bank
DCI
VRN/VRP
Bank B
To Local Bank
Bank C
UG190_6_96_012907
Figure 6-5:
The guidelines when using DCI cascading are as follows: The master and slave banks must all reside on the same column (left, center, or right) on the device. Master and slave banks must have the same VCCO and VREF (if applicable) voltage. DCI I/O banking compatibility rules must be satisfied across all master and slave banks (for example, only one DCI I/O standard using single termination type is allowed across all master and slave banks). DCI I/O standard compatibility is not constrained to one bank when DCI cascading is implemented; it extends across all master and slave banks. DCI cascading can span the entire column as long as the above guidelines are met. Locate adjacent banks. Bank location information is best determined from partgen generated package files (partgen -v XC5VLX50TFF1136). The resulting package file with a .pkg extension contains XY I/O location information. The X designator indicates I/Os in the same column. The Y designator indicates the position of an I/O within a specific bank. The bank number is also shown. Consecutive Y locations across bank boundaries show adjacent banks. For example, the XC5VLXT in an FF1136 package shows bank 11 starting with I/O X0Y159 end ending with I/O location X0Y120. Bank 13 starts with I/O X0Y119 and ends with X0Y80. Bank 15 starts
222
www.xilinx.com
with X0Y199 and ends with X0Y160. This indicates that bank 13 is to the south of bank 11, and bank 15 is to the north. As the Y coordinates of these two banks are consecutive, these two banks are considered consecutive banks and can be DCI cascaded. It is possible to cascade through an unbonded bank. DCI cascade is enabled by using the DCI_CASCADE constraint described in the constraints guide.
Xilinx DCI
DCI uses two multi-purpose reference pins in each bank to control the impedance of the driver or the parallel termination value for all of the I/Os of that bank. The N reference pin (VRN) must be pulled up to VCCO by a reference resistor, and the P reference pin (VRP) must be pulled down to ground by another reference resistor. The value of each reference resistor should be equal to the characteristic impedance of the PC board traces, or should be twice that value. See Driver with Termination to VCCO /2 (Split Termination), page 228. When a DCI I/O standard is used on a particular bank, the two multi-purpose reference pins cannot be used as regular I/Os. However, if DCI I/O standards are not used in the bank, these pins are available as regular I/O pins. The Virtex-5 Family Packaging Specifications gives detailed pin descriptions. DCI adjusts the impedance of the I/O by selectively turning transistors in the I/Os on or off. The impedance is adjusted to match the external reference resistors. The impedance adjustment process has two phases. The first phase compensates for process variations by controlling the larger transistors in the I/Os. It occurs during the device startup sequence. The second phase maintains the impedance in response to temperature and supply voltage changes by controlling the smaller transistors in the I/Os. It begins immediately after the first phase and continues indefinitely, even while the device is operating. By default, the DONE pin does not go High until the first phase of the impedance adjustment process is complete. The coarse impedance calibration during the first phase of impedance adjustment can be invoked after configuration by instantiating the DCIRESET primitive. By toggling the RST input to the DCIRESET primitive while the device is operating, the DCI state machine is reset and both phases of impedance adjustment proceed in succession. All I/Os using DCI will be unavailable until the LOCKED output from the DCIRESET block is asserted. This functionality is useful in applications where the temperature and/or supply voltage changes significantly from device power-up to the nominal operating condition. Once at the nominal operating temperature and voltage, performing the first phase of impedance adjustment allows optimal headroom for the second phase of impedance adjustment. For controlled impedance output drivers, the impedance can be adjusted either to match the reference resistors or half the resistance of the reference resistors. For on-chip termination, the termination is always adjusted to match the reference resistors. DCI can configure output drivers to be the following types: 1. 2. Controlled Impedance Driver (Source Termination) Controlled Impedance Driver with Half Impedance (Source Termination)
It can also configure inputs to have the following types of on-chip terminations: 1. 2. Input termination to VCCO (Single Termination) Input termination to VCCO/2 (Split Termination, Thevenin equivalent)
For bidirectional operation, both ends of the line can be DCI-terminated regardless of direction:
www.xilinx.com
223
1. 2.
Driver with termination to VCCO (Single Termination) Driver with termination to VCCO/2 (Split Termination, Thevenin equivalent)
Alternatively, bidirectional point-to-point lines can use controlled-impedance drivers (with 3-state buffers) on both ends.
IOB
R Z0
Virtex-5 DCI
UG190_6_04_012706
Figure 6-6:
IOB
R/2 Z0
Virtex-5 DCI
UG190_6_05_021206
Figure 6-7:
224
www.xilinx.com
VCCO
IOB
Z0
VREF
Virtex-5 FPGA
UG190_c6_06_022609
Figure 6-8:
DCI can also provide input termination to VCCO using single termination. The termination resistance is set by the reference resistors. Both GTL and HSTL standards are controlled by 50 reference resistors. The DCI I/O standards supporting single termination are: GTL_DCI, GTLP_DCI, HSTL_III_DCI, HSTL_III_DCI_18, HSTL_IV_DCI, and HSTL_IV_DCI_18. Figure 6-9 illustrates DCI single termination inside a Virtex-5 device.
X-Ref Target - Figure 6-9
IOB
VCCO R
Z0
VREF
Virtex-5 DCI
UG190_6_07_021206
Figure 6-9:
www.xilinx.com
225
VCCO/2
IOB
Z0
VREF
Virtex-5 FPGA
UG190_c6_08_022609
Figure 6-10:
This is equivalent to having a split termination composed of two resistors. One terminates to VCCO, the other to ground. The resistor values are 2R. DCI provides termination to VCCO/2 using split termination. The termination resistance is set by the external reference resistors, i.e., the resistors to VCCO and ground are each twice the reference resistor value. Both HSTL and SSTL standards need 50 external reference resistors. The DCI input standards supporting split termination are shown in Table 6-1. Table 6-1: DCI Input Standards Supporting Split Termination
DIFF_HSTL_I_DCI DIFF_HSTL_I_DCI_18 DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI_18 SSTL2_I_DCI SSTL2_II_DCI SSTL18_I_DCI SSTL18_II_DCI SSTL2_II_T_DCI SSTL18_II_T_DCI DIFF_SSTL2_I_DCI DIFF_SSTL2_II_DCI DIFF_SSTL18_I_DCI DIFF_SSTL18_II_DCI HSTL_I_DCI HSTL_I_DCI_18 HSTL_II_DCI HSTL_II_DCI_18 HSTL_II_T_DCI HSTL_II_T_DCI_18
226
www.xilinx.com
IOB
VCCO 2R
Z0 2R
VREF
Virtex-5 DCI
UG190_6_09_021206
Figure 6-11:
VCCO
IOB
Z0
Virtex-5 FPGA
UG190_c6_10_022609
Figure 6-12:
DCI can provide an output termination to VCCO using single termination. In this case, DCI only controls the impedance of the termination, but not the driver. Both GTL and HSTL standards need 50 external reference resistors. The DCI I/O standards supporting drivers with single termination are: GTL_DCI, GTLP_DCI, HSTL_IV_DCI, and HSTL_IV_DCI_18.
www.xilinx.com
227
Figure 6-13 illustrates a driver with single termination inside a Virtex-5 device.
X-Ref Target - Figure 6-13
VCCO R
IOB
Z0
Virtex-5 DCI
UG190_6_11_021206
Figure 6-13: Driver with Termination to VCCO Using DCI Single Termination
VCCO/2
IOB
Z0
Virtex-5 FPGA
UG190_c6_12_022609
Figure 6-14:
DCI can provide output termination to VCCO/2 using split termination. DCI only controls the impedance of the termination, but not the driver. Both HSTL and SSTL standards need 50 external reference resistors. The DCI output standards supporting drivers with split termination are shown in Table 6-2. Table 6-2: DCI Output Standards Supporting Split Termination
DIFF_HSTL_II_DCI DIFF_HSTL_II_DCI_18 SSTL2_II_DCI SSTL18_II_DCI DIFF_SSTL2_II_DCI DIFF_SSTL18_II_DCI HSTL_II_DCI HSTL_II_DCI_18
228
www.xilinx.com
Figure 6-15 illustrates a driver with split termination inside a Virtex-5 device.
X-Ref Target - Figure 6-15
VCCO
IOB
2R
Z0 2R
Virtex-5 DCI
UG190_6_13_021206
Figure 6-15:
To correctly use DCI in a Virtex-5 device, users must follow the following rules: 1. 2. 3. VCCO pins must be connected to the appropriate VCCO voltage based on the IOSTANDARDs in that bank. Correct DCI I/O buffers must be used in the software either by using IOSTANDARD attributes or instantiations in the HDL code. Some DCI standards require connecting the external reference resistors to the multipurpose pins (VRN and VRP) in the bank. Where this is required, these two multipurpose pins cannot be used as general-purpose I/O. Refer to the Virtex-5 FPGA pinout tables for the specific pin locations. Pin VRN must be pulled up to VCCO by its reference resistor. Pin VRP must be pulled down to ground by its reference resistor. Some DCI standards do not require connecting the external reference resistors to the VRP/VRN pins. When these DCI-based I/O standards are the only ones in a bank, the the VRP and VRN pins in that bank can be used as general-purpose I/O.
www.xilinx.com
229
DCI outputs that do not require reference resistors on VRP/VRN: HSTL_I_DCI HSTL_III_DCI HSTL_I_DCI_18 HSTL_III_DCI_18 SSTL2_I_DCI SSTL18_I_DCI
DCI inputs that do not require reference resistors on VRP/VRN: LVDCI_15 LVDCI_18 LVDCI_25 LVDCI_33 LVDCI_DV2_15 LVDCI_DV2_18 LVDCI_DV2_25
4.
The value of the external reference resistors should be selected to give the desired output impedance. If using GTL_DCI, HSTL_DCI, or SSTL_DCI I/O standards, then the external reference resistors should be 50 . The values of the reference resistors must be within the supported range (20 100 ). Follow the DCI I/O banking rules: a. b. c. VREF must be compatible for all of the inputs in the same bank. VCCO must be compatible for all of the inputs and outputs in the same bank. No more than one DCI I/O standard using single termination type is allowed per bank.
5. 6.
d. No more than one DCI I/O standard using split termination type is allowed per bank. e. 7. Single termination and split termination, controlled impedance driver, and controlled impedance driver with half impedance can co-exist in the same bank.
The behavior of a DCI 3-state outputs is as follows: If a LVDCI or LVDCI_DV2 driver is in 3-state, the driver is 3-stated. If a driver with single or split termination is in 3-state, the driver is 3-stated but the termination resistor remains. The following section lists actions that must be taken for each DCI I/O standard.
230
www.xilinx.com
HSTL_I
HSTL_II
HSTL_III
HSTL_IV
VCCO/2
VCCO/2 R Z0
VCCO/2 R Z0
VCCO R
VCCO R Z0
VCCO R
Conventional
R Z0
VCCO/2
VCCO R
VCCO R
R Z0
VCCO
VCCO/2 R Z0
VCCO 2R Z0 Virtex-5 DCI VCCO R 2R Virtex-5 DCI VCCO R Z0 Virtex-5 DCI VCCO R
2R Z0 2R Virtex-5 DCI
VCCO 2R
VCCO 2R Z0 Virtex-5 DCI Virtex-5 DCI VCCO R 2R Virtex-5 DCI VCCO R Z0 Virtex-5 DCI VCCO R
Z0 2R Virtex-5 DCI
VCCO 2R Z0
VCCO R
VCCO R Z0
Bidirectional
N/A
2R Virtex-5 DCI
N/A
Virtex-5 DCI
Virtex-5 DCI
Reference Resistor
VRN = VRP = R = Z0 50
VRN = VRP = R = Z0 50
VRN = VRP = R = Z0 50
VRN = VRP = R = Z0 50
Recommended Z0
ug190_6_14_021206
Figure 6-16:
www.xilinx.com
231
SSTL2_I or SSTL18_I
VCCO/2 R
SSTL2_II or SSTL18_II
VCCO/2 R
VCCO/2 R Z0
Conventional
R/2
Z0 R/2
VCCO/2
VCCO 25(1) 2R Z0 2R
VCCO/2 R
Virtex-5 DCI
VCCO
VCCO/2 R Z0 R/2
VCCO 2R
2R Virtex-5 DCI
25(1)
VCCO 2R Z0 25(1)
VCCO 2R
2R Virtex-5 DCI
2R Virtex-5 DCI
VCCO 25(1) 2R Z0
Bidirectional
N/A
Virtex-5 DCI
2R
Reference Resistor
VRN = VRP = R = Z0 50
VRN = VRP = R = Z0 50
Recommended 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
Figure 6-17:
232
www.xilinx.com
These six generic primitive names represent most of the available differential I/O standards: IBUFDS (input buffer) IBUFGDS (clock input buffer) OBUFDS (output buffer) OBUFTDS (3-state output buffer) IOBUFDS (input/output buffer) IBUFDS_DIFF_OUT (input buffer)
IBUF/IBUFG
I (Input) From device pad O (Output) into FPGA
ug190_6_16_022806
Figure 6-18:
The IBUF and IBUFG primitives are the same. IBUFGs are used when an input buffer is used as a clock input. In the Xilinx software tools, an IBUFG is automatically placed at clock input sites.
OBUF
An output buffer (OBUF) must be used to drive signals from Virtex-5 devices to external output pads. A generic Virtex-5 FPGA OBUF primitive is shown in Figure 6-19.
X-Ref Target - Figure 6-19
OBUF
I (Input) From FPGA O (Output) to device pad
ug190_6_17_022806
www.xilinx.com
233
OBUFT
The generic 3-state output buffer OBUFT, shown in Figure 6-20, typically implements 3-state outputs or bidirectional I/O.
X-Ref Target - Figure 6-20
OBUFT
Figure 6-20:
IOBUF
The IOBUF primitive is needed when bidirectional signals require both an input buffer and a 3-state output buffer with an active High 3-state pin. Figure 6-21 shows a generic Virtex-5 FPGA IOBUF.
X-Ref Target - Figure 6-21
IOBUF
T 3-state input I (Input) from FPGA I/O to/from device pad
O (Output) to FPGA
ug190_6_19_022806
Figure 6-21:
IBUFDS/IBUFGDS I IB
Inputs from device pads ug190_6_20_022806
Output to FPGA
Figure 6-22:
234
www.xilinx.com
IBUFDS_DIFF_OUT
Figure 6-23 shows the differential input buffer primitive with a complementary output (OB). This primitive is for expert users only.
X-Ref Target - Figure 6-23
IBUFDS_DIFF_OUT
I Input from Device Pad IB O OB Output into FPGA
UG190_6_97_122208
Figure 6-23:
OBUFDS
Figure 6-24 shows the differential output buffer primitive.
X-Ref Target - Figure 6-24
OBUFDS
I
Input from FPGA
O
Output to Device Pads
OB
ug190_6_21_022806
Figure 6-24:
OBUFTDS
Figure 6-25 shows the differential 3-state output buffer primitive.
X-Ref Target - Figure 6-25
OBUFTDS
3-state Input
I
Input from FPGA
O
Output to Device Pads
OB
ug190_6_22_022806
Figure 6-25:
www.xilinx.com
235
IOBUFDS
Figure 6-26 shows the differential input/output buffer primitive.
X-Ref Target - Figure 6-26
IOBUFDS
T 3-state Input I (Input) from FPGA
O (Output) to FPGA
+
ug190_6_23_022806
Figure 6-26:
Location Constraints
The location constraint (LOC) must be used to specify the I/O location of an instantiated I/O primitive. The possible values for the location constraint are all the external port identifiers (e.g., A8, M5, AM6, etc.). These values are device and package size dependent. The LOC attribute uses the following syntax in the UCF file:
INST <I/O_BUFFER_INSTANTIATION_NAME> LOC = "<EXTERNAL_PORT_IDENTIFIER>";
Example:
INST MY_IO LOC=R7;
IOSTANDARD Attribute
The IOSTANDARD attribute is available to choose the values for an I/O standard for all I/O buffers. The supported I/O standards are listed in Table 6-39. The IOSTANDARD attribute uses the following syntax in the UCF file:
INST <I/O_BUFFER_INSTANTIATION_NAME> IOSTANDARD=<IOSTANDARD VALUE>;
The IOSTANDARD default for single-ended I/O is LVCMOS25, for differential I/Os the default is LVDS_25.
236
www.xilinx.com
The SLEW attribute uses the following syntax in the UCF file:
INST <I/O_BUFFER_INSTANTIATION_NAME> SLEW = "<SLEW_VALUE>";
By the default, the slew rate for each output buffer is set to SLOW. This is the default used to minimize the power bus transients when switching non-critical signals.
LVCMOS12 only supports the 2, 4, 6, 8 mA DRIVE settings. LVCMOS15 and LVCMOS18 only support the 2, 4, 6, 8, 12, and 16 mA DRIVE settings. The DRIVE attribute uses the following syntax in the UCF file:
INST <I/O_BUFFER_INSTANTIATION_NAME> DRIVE = "<DRIVE_VALUE>";
www.xilinx.com
237
The allowed values for the DIFF_TERM attribute are: TRUE FALSE (Default)
To specify the DIFF_TERM attribute, set the appropriate value in the generic map (VHDL) or inline parameter (Verilog) of the instantiated IBUFDS or IBUGDS component. Please refer to the ISE Language Templates or the Virtex-5 FPGA HDL Libraries Guide for the proper syntax for instantiating this component and setting the DIFF_TERM attribute.
238
www.xilinx.com
IOB LVTTL Z0
IOB LVTTL
IOB LVTTL RS = Z0 RD Z0
IOB LVTTL
IOB LVTTL RP = Z0 Z0
VTT
IOB LVTTL
ug190_6_24_022806
Figure 6-27:
www.xilinx.com
239
IOB LVTTL Z0
IOB LVTTL
IOB LVTTL
VTT RP = Z0 Z0 RP = Z0
VTT
IOB LVTTL
Figure 6-28:
Table 6-4 lists the LVTTL DC voltage specifications. Table 6-4: LVTTL DC Voltage Specifications
Min 3.0 2.0 0.2 2.4 Note 2 Note 2 Typ 3.3 Max 3.45 3.45 0.8 0.4 Parameter VCCO VREF VTT VIH VIL VOH VOL IOH at VOH (mA) IOLat VOL (mA)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Supported DRIVE strengths are 2, 4, 6, 8, 12, 16, and 24 mA
240
www.xilinx.com
Table 6-5 details the allowed attributes that can be applied to the LVTTL I/O standard. Table 6-5: Allowed Attributes for the LVTTL I/O Standard
Primitives Attributes IBUF/IBUFG IOSTANDARD DRIVE SLEW LVTTL UNUSED UNUSED OBUF/OBUFT LVTTL 2, 4, 6, 8, 12, 16, 24 {FAST, SLOW} IOBUF LVTTL 2, 4, 6, 8, 12, 16, 24 {FAST, SLOW}
IOB LVCMOS Z0
IOB LVCMOS
IOB LVCMOS RS = Z0 RD Z0
IOB LVCMOS
IOB LVCMOS RP = Z0 Z0
VTT
IOB LVCMOS
ug190_6_26_022806
Figure 6-29:
www.xilinx.com
241
IOB LVCMOS Z0
IOB LVCMOS
IOB LVCMOS
VTT RP = Z0 Z0 RP = Z0
VTT
IOB LVCMOS
Figure 6-30:
Table 6-6 details the allowed attributes that can be applied to the LVCMOS33 and LVCMOS25 I/O standards. Table 6-6: Allowed Attributes for the LVCMOS33 and LVCMOS25 I/O Standards
Primitives Attributes IBUF/IBUFG IOSTANDARD DRIVE SLEW LVCMOS33 LVCMOS25 UNUSED UNUSED OBUF/OBUFT LVCMOS33 LVCMOS25 2, 4, 6, 8, 12, 16, 24 {FAST, SLOW} IOBUF LVCMOS33 LVCMOS25 2, 4, 6, 8, 12, 16, 24 {FAST, SLOW}
Table 6-7 details the allowed attributes that can be applied to the LVCMOS18 and LVCMOS15 I/O standards. Table 6-7: Allowed Attributes for the LVCMOS18 and LVCMOS15 I/O Standard
Primitives Attributes IBUF/IBUFG IOSTANDARD DRIVE SLEW LVCMOS18 LVCMOS15 UNUSED UNUSED OBUF/OBUFT LVCMOS18 LVCMOS15 2, 4, 6, 8, 12, 16 {FAST, SLOW} IOBUF LVCMOS18 LVCMOS15 2, 4, 6, 8, 12, 16 {FAST, SLOW}
242
www.xilinx.com
Table 6-8 details the allowed attributes that can be applied to the LVCMOS12 I/O standard. Table 6-8: Allowed Attributes for the LVCMOS12 I/O Standard
Primitives Attributes IBUF/IBUFG IOSTANDARD DRIVE SLEW LVCMOS12 UNUSED UNUSED OBUF/OBUFT LVCMOS12 2, 4, 6, 8 {FAST, SLOW} IOBUF LVCMOS12 2, 4, 6, 8 {FAST, SLOW}
IOB LVDCI Z0
R0 = RVRN = RVRP = Z0
IOB LVDCI
ug190_6_28_022806
Figure 6-31:
X-Ref Target - Figure 6-32
IOB LVDCI Z0
LVDCI
R0 = RVRN = RVRP = Z0
R0 = RVRN = RVRP = Z0
ug190_6_29_022806
Figure 6-32:
www.xilinx.com
243
LVDCI_DV2
A controlled impedance driver with half impedance (source termination) can also provide drivers with one half of the impedance of the reference resistors. This allows reference resistors to be twice as large, thus reducing static power consumption through VRN/VRP. The I/O standards supporting a controlled impedance driver with half impedance are: LVDCI_DV2_15, LVDCI_DV2_18, and LVDCI_DV2_25. Figure 6-33 and Figure 6-34 illustrate a controlled driver with half impedance unidirectional and bidirectional termination. To match the drive impedance to Z0 when using a driver with half impedance, the reference resistor R must be twice Z0.
X-Ref Target - Figure 6-33
IOB LVDCI_DV2 Z0
R0 = RVRN = RVRP = Z0
IOB LVDCI_DV2
ug190_6_30_022806
Figure 6-33:
IOB LVDCI_DV2 Z0
LVDCI_DV2
R0 = RVRN = RVRP = Z0
R0 = RVRN = RVRP = Z0
ug190_6_31_022806
Figure 6-34:
There are no drive strength settings for LVDCI drivers. When the driver impedance is onehalf of the VRN/VRP reference resistors, it is indicated by the addition of DV2 to the attribute name. Table 6-9 lists the LVCMOS, LVDCI, and LVDCI_DV2 voltage specifications.
244
www.xilinx.com
Table 6-9: LVCMOS, LVDCI, and LVDCI_DV2 DC Voltage Specifications at Various Voltage References
+3.3V Standard Min Typ VCCO [V] VIH [V] 3.0 2.0 0.2 2.6 3.3 Max 3.45 3.45 0.8 0.4 5 Min Typ 2.3 1.7 0.3 1.9 2.5 Max 2.7 VCCO+ 0.3 0.7 0.4 5 Min 1.7 1.105 0.3 1.25 Typ 1.8 Max 1.9 VCCO+ 0.3 0.665 0.45 5 Min Typ 1.4 0.91 0.3 1.05 1.5 Max 1.6 Min 1.1 Typ 1.2 Max 1.3 VCCO +0.3 0.455 0.325 10 +2.5V +1.8V +1.5V +1.2V(2)
VIL [V]
VOH [V] VOL [V] IIN [A]
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Only LVCMOS is supported at + 1.2V with valid DRIVE attributes of 2, 4, 6, 8.
www.xilinx.com
245
IOB HSLVDCI
R0 = RVRN = RVRP = Z0
R0 = RVRN = RVRP = Z0
ug190_6_33_022806
Figure 6-35:
For output DC voltage specifications, refer to the LVDCI VOH and VOL entries in Table 6-9 LVCMOS, LVDCI, and LVDCI_DV2 DC Voltage Specifications at Various Voltage References. Table 6-10 lists the input DC voltage specifications when using HSLVDCI. Valid values of VCCO are 1.5V, 1.8V, 2.5V, and 3.3V. Select VREF to provide the optimum noise margin in specific use conditions. Table 6-10: HSLVDCI Input DC Voltage Specifications
Min VREF + 0.1 Typ VCCO/2 Max VREF 0.1 Standard VREF VIH VIL
246
www.xilinx.com
Table 6-12:
VCCO VREF VTT VIH = 0.5 VCCO VIL = 0.35 VCCO VOH = 0.9 VCCO VOL = 0.1 VCCO IOH at VOH (mA) IOL at VOL (mA)
Notes:
1. Tested according to the relevant specification. 2. For complete specifications, refer to the PCI-X specification.
www.xilinx.com
247
IOB
VTT = 1.2V
RP = Z0 = 50
VTT = 1.2V
RP = Z0 = 50
IOB
VCCO = Unconnected
Z0 = 50
VREF = 0.8V
ug190_6_34_022806
Figure 6-36:
GTL_DCI Usage
GTL does not require a VCCO voltage. However, for GTL_DCI, VCCO must be connected to 1.2V. GTL_DCI provides single termination to VCCO for inputs or outputs. A sample circuit illustrating a valid termination technique for GTL_DCI with internal parallel driver and receiver termination is shown in Figure 6-37.
X-Ref Target - Figure 6-37
VCCO = 1.2V
IOB
RVRP = Z0 = 50
VREF = 0.8V
ug190_6_35_030206
Figure 6-37:
Table 6-13 lists the GTL DC voltage specifications. Table 6-13: GTL DC Voltage Specifications
Parameter VCCO VREF = N VTT (1) VTT VIH = VREF + 0.05 VIL = VREF 0.05 VOH Min 0.74 1.14 0.79 Typ N/A 0.8 1.2 0.83 0.77 Max 0.86 1.26 0.81
248
www.xilinx.com
Table 6-13:
VOL IOH at VOH (mA) IOL at VOL (mA) at 0.4V IOL at VOL (mA) at 0.2V
Notes:
1. N must be greater than or equal to 0.653 and less than or equal to 0.68.
VTT = 1.5V
RP = Z0 = 50
VTT = 1.5V
RP = Z0 = 50 Z0 = 50
IOB
VREF = 1.0V
ug190_6_36_030206
Figure 6-38:
GTLP_DCI Usage
GTL+ does not require a VCCO voltage. However, for GTLP_DCI, VCCO must be connected to 1.5V. GTLP_DCI provides single termination to VCCO for inputs or outputs. A sample circuit illustrating a valid termination technique for GTLP_DCI with internal parallel driver and receiver termination is shown in Figure 6-39.
X-Ref Target - Figure 6-39
VCCO = 1.5V 50
IOB
VREF = 1.0V
ug190_6_37_030206
www.xilinx.com
249
Table 6-14 lists the GTLP DC voltage specifications. Table 6-14: GTLP DC Voltage Specifications
Min VCCO VREF = N VTT (1) VTT VIH = VREF + 0.1 VIL = VREF 0.1 VOH VOL IOH at VOH (mA) IOL at VOL (mA) at 0.6V IOL at VOL (mA) at 0.3V
Notes:
1. N must be greater than or equal to 0.653 and less than or equal to 0.68.
250
www.xilinx.com
DIFF_HSTL_II_DCI, DIFF_HSTL_II_DCI_18
Differential HSTL class II pairs complimentary single-ended HSTL_II type drivers with a differential receiver, including on-chip differential split-thevenin termination. Differential HSTL class II is intended to be used in bidirectional links. Differential HSTL can also be used for differential clock and DQS signals in memory interface designs.
DIFF_HSTL_I, DIFF_HSTL_I_18
Differential HSTL class I pairs complimentary single-ended HSTL_I type drivers with a differential receiver. Differential HSTL class I is intended to be used in unidirectional links.
DIFF_HSTL_I_DCI, DIFF_HSTL_I_DCI_18
Differential HSTL class I pairs complimentary single-ended HSTL_I type drivers with a differential receiver, including on-chip differential split-thevenin termination. Differential HSTL class I is intended to be used in unidirectional links.
www.xilinx.com
251
HSTL Class I
Figure 6-40 shows a sample circuit illustrating a valid termination technique for HSTL Class I.
X-Ref Target - Figure 6-40
External Termination
IOB HSTL_I VTT = 0.75V RP = Z0 = 50 Z0 VREF = 0.75V IOB HSTL_I +
DCI
IOB IOB VCCO = 1.5V 2RVRP = 2Z0= 100 HSTL_I_DCI Z0 VREF = 0.75V 2RVRN = 2Z0= 100 HSTL_I_DCI +
ug190_6_38_030206
Figure 6-40:
Table 6-15 lists the HSTL Class I DC voltage specifications. Table 6-15: HSTL Class I DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
252
www.xilinx.com
External Termination
IOB DIFF_HSTL_I Z0 DIFF_HSTL_I + VTT = 0.75V DIFF_HSTL_I Z0 50 VTT = 0.75V 50 IOB
ug190_6_39_030206
Figure 6-41:
Figure 6-42 shows a sample circuit illustrating a valid termination technique for differential HSTL Class I (1.5V) with unidirectional DCI termination.
X-Ref Target - Figure 6-42
DCI
IOB IOB VCCO = 1.5V DIFF_HSTL_I_DCI Z0 2RVRN = 2Z0= 100 DIFF_HSTL_I_DCI + VCCO = 1.5V DIFF_HSTL_I_DCI Z0 2RVRN = 2Z0= 100 2RVRP = 2Z0= 100 2RVRP = 2Z0= 100
ug190_6_40_030206
Figure 6-42:
www.xilinx.com
253
Table 6-16 lists the differential HSTL Class I DC voltage specifications. Table 6-16: Differential HSTL Class I DC Voltage Specifications
Min VCCO VTT VIN (DC) VDIFF (DC) VCM (DC)(1) VDIFF (AC) VX (Crossover)(2)
Notes:
1. Common mode voltage: VCM = VP ((VP VN)/2) 2. Crossover point: VX where VP VN = 0 (AC coupled)
Max 1.60 VCCO + 0.30 VCCO + 0.60 0.90 VCCO + 0.60 0.90
HSTL Class II
Figure 6-43 shows a sample circuit illustrating a valid termination technique for HSTL Class II (1.5V) with unidirectional termination.
X-Ref Target - Figure 6-43
External Termination
IOB HSTL_II VTT = 0.75V RP = Z0 = 50 VTT = 0.75V RP = Z0 = 50 Z0 VREF = 0.75V IOB HSTL_II +
DCI
IOB VCCO = 1.5V 2RVRP = 2Z0= 100 HSTL_II_DCI Z0 VREF = 0.75V 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 IOB VCCO = 1.5V 2RVRP = 2Z0= 100 HSTL_II_DCI +
ug190_6_41_030206
Figure 6-43:
254
www.xilinx.com
Figure 6-44 shows a sample circuit illustrating a valid termination technique for HSTL Class II (1.5V) with bidirectional termination.
X-Ref Target - Figure 6-44
External Termination
IOB HSTL_II VTT = 0.75V RP = Z0 = 50 VTT = 0.75V RP = Z0 = 50 Z0 VREF = 0.75V IOB HSTL_II +
VREF = 0.75V
DCI
IOB VCCO = 1.5V 2RVRP = 2Z0= 100 HSTL_II_DCI Z0 VREF = 0.75V 2RVRN = 2Z0= 100 VREF = 0.75V 2RVRN = 2Z0= 100
ug190_6_42_030306
Figure 6-44:
www.xilinx.com
255
Table 6-17 lists the HSTL (1.5V) Class II DC voltage specifications. Table 6-17: HSTL (1.5V) Class II DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1) (3)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user. 3. HSTL_II_T_DCI has a weaker driver than HSTL_II_DCI.
External Termination
IOB DIFF_HSTL_II VTT = 0.75V 50 Z0 DIFF_HSTL_II + VTT = 0.75V DIFF_HSTL_II 50 Z0 VTT = 0.75V 50 VTT = 0.75V 50 IOB
ug190_6_40_030206
Figure 6-45:
256
www.xilinx.com
Figure 6-46 shows a sample circuit illustrating a valid termination technique for differential HSTL Class II (1.5V) with unidirectional DCI termination.
X-Ref Target - Figure 6-46
DCI
IOB VCCO = 1.5V DIFF_HSTL_II_DCI 2RVRP = 2Z0= 100 Z0 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 DIFF_HSTL_II_DCI + VCCO = 1.5V DIFF_HSTL_II_DCI 2RVRP = 2Z0= 100 Z0 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 VCCO = 1.5V 2RVRP = 2Z0= 100 IOB VCCO = 1.5V 2RVRP = 2Z0= 100
ug190_6_44_020306
Figure 6-46:
Figure 6-47 shows a sample circuit illustrating a valid termination technique for differential HSTL Class II (1.5V) with bidirectional termination.
X-Ref Target - Figure 6-47
External Termination
IOB DIFF_HSTL_II VTT = 0.75V 50 Z0 VTT = 0.75V 50 IOB DIFF_HSTL_II
DIFF_HSTL_II +
ug190_6_45_020306
Figure 6-47:
www.xilinx.com
257
Figure 6-48 shows a sample circuit illustrating a valid termination technique for differential HSTL Class II (1.5V) with bidirectional DCI termination.
X-Ref Target - Figure 6-48
DCI
IOB VCCO = 1.5V DIFF_HSTL_II_DCI 2RVRP = 2Z0= 100 Z0 2RVRN = 2Z0= 100 DIFF_HSTL_II_DCI Z0 DIFF_HSTL_II_DCI + 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 VCCO = 1.5V 2RVRP = 2Z0= 100 VCCO = 1.5V 2RVRP = 2Z0= 100 DIFF_HSTL_II_DCI + 2RVRN = 2Z0= 100 DIFF_HSTL_II_DCI IOB VCCO = 1.5V 2RVRP = 2Z0= 100 DIFF_HSTL_II_DCI
ug190_6_46_020306
Figure 6-48:
Table 6-18 lists the differential HSTL Class II DC voltage specifications. Table 6-18: Differential HSTL Class II DC Voltage Specifications
Min VCCO VTT VIN (DC) VDIFF (DC) VCM (DC)(1) VDIFF (AC) VX (Crossover)(2)
Notes:
1. Common mode voltage: VCM = VP ((VP VN)/2) 2. Crossover point: VX where VP VN = 0 (AC coupled)
Max 1.60 VCCO + 0.30 VCCO + 0.60 0.90 VCCO + 0.60 0.90
258
www.xilinx.com
External Termination
IOB HSTL_III VTT = 1.5V RP = Z0 = 50 Z0 VREF = 0.9V IOB HSTL_III +
DCI
IOB IOB VCCO = 1.5V RVRP = Z0= 50 HSTL_III_DCI Z0 VREF = 0.9V HSTL_III_DCI +
ug190_6_47_030306
Figure 6-49:
Table 6-19 lists the HSTL Class III DC voltage specifications. Table 6-19: HSTL Class III DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
www.xilinx.com
259
HSTL Class IV
Figure 6-50 shows a sample circuit illustrating a valid unidirectional termination technique for HSTL Class IV.
X-Ref Target - Figure 6-50
External Termination
IOB HSTL_IV VTT = 1.5V RP = Z0 = 50 VTT = 1.5V RP = Z0 = 50 Z0 VREF = 0.9V IOB HSTL_IV +
DCI
IOB VCCO = 1.5V RVRP = Z0= 50 HSTL_IV_DCI Z0 VREF = 0.9V IOB VCCO = 1.5V RVRP = Z0= 50 HSTL_IV_DCI +
ug190_6_48_030306
Figure 6-50:
260
www.xilinx.com
Figure 6-51 shows a sample circuit illustrating a valid bidirectional termination technique for HSTL Class IV.
X-Ref Target - Figure 6-51
External Termination
IOB HSTL_IV VTT = 1.5V RP = Z0 = 50 VTT = 1.5V RP = Z0 = 50 Z0 VREF = 0.9V IOB HSTL_IV +
VREF = 0.9V
DCI
IOB VCCO = 1.5V RVRP = Z0= 50 HSTL_IV_DCI Z0 VREF = 0.9V IOB VCCO = 1.5V RVRP = Z0= 50 HSTL_IV_DCI +
VREF = 0.9V
ug190_6_49_030306
Figure 6-51:
www.xilinx.com
261
Table 6-20 lists the HSTL Class IV DC voltage specifications. Table 6-20: HSTL Class IV DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
DCI
Not 3-stated
IOB
3-stated
IOB VCCO = 1.5V 2RVRP = 2Z0= 100
HSTL_II_T_DCI +
VREF = 0.75V
262
www.xilinx.com
External Termination
IOB HSTL_I_18 VTT = 0.9V RP = Z0 = 50 Z0 VREF = 0.9V IOB HSTL_I_18 +
DCI
IOB IOB VCCO = 1.8V 2RVRP = 2Z0= 100 HSTL_I_DCI_18 Z0 VREF = 0.9V 2RVRN = 2Z0= 100 HSTL_I_DCI_18 +
ug190_6_50_030306
Figure 6-53:
Table 6-21 lists the HSTL Class I (1.8V) DC voltage specifications. Table 6-21: HSTL Class I (1.8V) DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
www.xilinx.com
263
External Termination
IOB DIFF_HSTL_I_18 Z0 DIFF_HSTL_I_18 VTT = 0.9V DIFF_HSTL_I_18 Z0 50 + VTT = 0.9V 50 IOB
ug190_6_51_030306
Figure 6-54:
Figure 6-55 shows a sample circuit illustrating a valid termination technique for differential HSTL Class I (1.8V) with unidirectional DCI termination.
X-Ref Target - Figure 6-55
DCI
IOB IOB VCCO = 1.8V DIFF_HSTL_I_DCI_18 Z0 2RVRN = 2Z0= 100 DIFF_HSTL_I_DCI_18 + VCCO = 1.8V DIFF_HSTL_I_DCI_18 Z0 2RVRN = 2Z0= 100 2RVRP = 2Z0= 100 2RVRP = 2Z0= 100
ug190_6_52_030306
Figure 6-55:
264
www.xilinx.com
Table 6-22 lists the differential HSTL Class I (1.8V) DC voltage specifications. Table 6-22: Differential HSTL Class I (1.8V) DC Voltage Specifications
Min VCCO VTT VIN (DC) VDIFF (DC) VCM (DC)(1) VDIFF (AC) VX (Crossover)(2)
Notes:
1. Common mode voltage: VCM = VP ((VP VN)/2) 2. Crossover point: VX where VP VN = 0 (AC coupled)
Max 1.9 VCCO + 0.30 VCCO + 0.60 1.08 VCCO + 0.60 1.08
External Termination
IOB HSTL_II_18 VTT = 0.9V RP = Z0 = 50 VTT = 0.9V RP = Z0 = 50 Z0 VREF = 0.9V IOB HSTL_II_18 +
DCI
IOB VCCO = 1.8V 2RVRP = 2Z0= 100 HSTL_II_DCI_18 Z0 VREF = 0.9V 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 IOB VCCO = 1.8V 2RVRP = 2Z0= 100 HSTL_II_DCI_18 +
ug190_6_53_030306
Figure 6-56:
www.xilinx.com
265
Figure 6-57 shows a sample circuit illustrating a valid termination technique for HSTL Class II (1.8V) with bidirectional termination.
X-Ref Target - Figure 6-57
External Termination
IOB HSTL_II_18 VTT = 0.9V RP = Z0 = 50 VTT = 0.9V RP = Z0 = 50 Z0 VREF = 0.9V IOB HSTL_II_18 +
VREF = 0.9V
DCI
IOB VCCO = 1.8V 2RVRP = 2Z0= 100 HSTL_II_DCI_18 Z0 VREF = 0.9V 2RVRN = 2Z0= 100 VREF = 0.9V 2RVRN = 2Z0= 100
ug190_6_54_030306
Figure 6-57:
266
www.xilinx.com
Table 6-23 lists the HSTL Class II (1.8V) DC voltage specifications. Table 6-23: HSTL Class II (1.8V) DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
External Termination
IOB DIFF_HSTL_II_18 VTT = 0.9V 50 Z0 DIFF_HSTL_II_18 VTT = 0.9V DIFF_HSTL_II_18 50 Z0 VTT = 0.9V 50 + VTT = 0.9V 50 IOB
ug190_6_55_030306
Figure 6-58:
www.xilinx.com
267
Figure 6-59 shows a sample circuit illustrating a valid termination technique for differential HSTL Class II (1.8V) with unidirectional DCI termination.
X-Ref Target - Figure 6-59
DCI
IOB VCCO = 1.8V DIFF_HSTL_II_DCI_18 2RVRP = 2Z0= 100 Z0 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 DIFF_HSTL_II_DCI_18 + VCCO = 1.8V DIFF_HSTL_II_DCI_18 2RVRP = 2Z0= 100 Z0 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 VCCO = 1.8V 2RVRP = 2Z0= 100 IOB VCCO = 1.8V 2RVRP = 2Z0= 100
ug190_6_56_121506
Figure 6-59:
Figure 6-60 shows a sample circuit illustrating a valid termination technique for differential HSTL Class II (1.8V) with bidirectional termination.
X-Ref Target - Figure 6-60
External Termination
IOB VTT = 0.9V DIFF_HSTL_II_18 50 Z0 VTT = 0.9V DIFF_HSTL_II_18 50 IOB
DIFF_HSTL_II_18 +
ug190_6_57_030306
Figure 6-60:
268
www.xilinx.com
Figure 6-61 shows a sample circuit illustrating a valid termination technique for differential HSTL Class II (1.8V) with bidirectional DCI termination.
X-Ref Target - Figure 6-61
DCI
IOB VCCO = 1.8V DIFF_HSTL_II_DCI_18 2RVRP = 2Z0= 100 Z0 2RVRN = 2Z0= 100 DIFF_HSTL_II_DCI_18 Z0 DIFF_HSTL_II_DCI_18 + 2RVRN = 2Z0= 100 2RVRN = 2Z0= 100 VCCO = 1.8V 2RVRP = 2Z0= 100 VCCO = 1.8V 2RVRP = 2Z0= 100 DIFF_HSTL_II_DCI_18 + 2RVRN = 2Z0= 100 DIFF_HSTL_II_DCI_18 IOB VCCO = 1.8V 2RVRP = 2Z0= 100 DIFF_HSTL_II_DCI_18
ug190_6_58_030306
Figure 6-61:
Table 6-24 lists the differential HSTL Class II (1.8V) DC voltage specifications. Table 6-24: Differential HSTL Class II (1.8V) DC Voltage Specifications
Min VCCO VTT VIN (DC) VDIFF (DC) VCM (DC)(1) 1.7 0.30 0.20 0.83 0.40 0.83 Typ 1.8 VCCO 0.5 Max 1.9 VCCO + 0.30 VCCO + 0.60 1.08 VCCO + 0.60 1.08
1. Common mode voltage: VCM = VP ((VP VN)/2) 2. Crossover point: VX where VP VN = 0 (AC coupled)
www.xilinx.com
269
External Termination
IOB HSTL_III_18 VTT = 1.8V RP = Z0 = 50 Z0 VREF = 1.1V IOB HSTL_III_18 +
DCI
IOB IOB VCCO = 1.8V RVRP = Z0= 50 HSTL_III_DCI_18 Z0 VREF = 1.1V HSTL_III_DCI_18 +
ug190_6_59_030306
Figure 6-62:
Table 6-25 lists the HSTL Class III (1.8V) DC voltage specifications. Table 6-25: HSTL Class III (1.8V) DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
270
www.xilinx.com
External Termination
IOB HSTL_IV_18 VTT = 1.8V RP = Z0 = 50 VTT = 1.8V RP = Z0 = 50 Z0 VREF = 1.1V IOB HSTL_IV_18 +
DCI
IOB VCCO = 1.8V RVRP = Z0= 50 HSTL_IV_DCI_18 Z0 VREF = 1.1V IOB VCCO = 1.8V RVRP = Z0= 50 HSTL_IV_DCI_18 +
ug190_6_60_030306
Figure 6-63:
Figure 6-64 shows a sample circuit illustrating a valid bidirectional termination technique for HSTL Class IV (1.8V).
www.xilinx.com
271
External Termination
IOB HSTL_IV_18 VTT = 1.8V RP = Z0 = 50 VTT = 1.8V RP = Z0 = 50 Z0 VREF = 1.1V IOB HSTL_IV_18 +
VREF = 1.1V
DCI
IOB VCCO = 1.8V RVRP = Z0= 50 HSTL_IV_DCI_18 Z0 VREF = 1.1V IOB VCCO = 1.8V RVRP = Z0= 50 HSTL_IV_DCI_18 +
VREF = 1.1V
ug190_6_61_030306
Figure 6-64:
272
www.xilinx.com
Table 6-26 lists the HSTL Class IV (1.8V) DC voltage specifications. Table 6-26: HSTL Class IV (1.8V) DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL (mA)(1)
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
DCI
Not 3-stated
IOB
3-stated
IOB VCCO = 1.8V 2RVRP = 2Z0= 100
HSTL_II_T_DCI_18 +
VREF = 0.9V
www.xilinx.com
273
External Termination
IOB HSTL_I_12 VTT = 0.6V RP = Z0 = 50 Z0 VREF = 0.6V IOB HSTL_I_12 +
ug190_6_62_030306
Figure 6-66:
Table 6-21 lists the HSTL Class I (1.2V) DC voltage specifications. Table 6-27: HSTL Class I (1.2V) DC Voltage Specifications
Min VCCO VREF (2) VTT VIH VIL VOH VOL IOH at VOH (mA)(1) IOL at VOL
Notes:
1. VOL and VOH for lower drive currents are sample tested. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user.
(mA)(1)
274
www.xilinx.com
SSTL2_I, SSTL18_I
Class I signaling uses VTT (VCCO/2) as a parallel termination voltage to a 50 resistor at the receiver. A series resistor (25 at 2.5V, 20 at 1.8V) must be connected to the transmitter output.
SSTL2_I_DCI, SSTL18_I_DCI
The DCI transmitter provides the internal series resistance (25 at 2.5V, 20 at 1.8V). The DCI receiver has an internal split thevenin termination powered from VCCO creating an equivalent VTT voltage and termination impedance.
SSTL2_II, SSTL18_II
Class II signaling uses VTT (VCCO/2) as a parallel termination voltage to a 50 resistor at the receiver and transmitter respectively. A series resistor (25 at 2.5V, 20 at 1.8V) must be connected to the transmitter output for a unidirectional link. For a bidirectional link, 25 series resistors must connected the transmitters of the transceivers.
SSTL2_II_DCI, SSTL18_II_DCI
The DCI circuits have a split thevenin termination powered from VCCO and an internal series resistor (25 at 2.5V, 20 at 1.8V). For a unidirectional link the internal series resistance is supplied only for the transmitter. A bidirectional link has the internal series resistor for both transmitters.
DIFF_SSTL2_I, DIFF_SSTL18_I
Differential SSTL 2.5V and 1.8V Class I pairs complementary single-ended SSTL_I type drivers with a differential receiver.
DIFF_SSTL2_I_DCI, DIFF_SSTL18_I_DCI
Differential SSTL 2.5V and 1.8V Class I pairs complementary single-ended SSTL_II type drivers with a differential receiver, including on-chip differential split thevenin termination.
DIFF_SSTL2_II, DIFF_SSTL18_II
Differential SSTL 2.5V and 1.8V Class II pairs complementary single-ended SSTL_II type drivers with a differential receiver. For a bidirectional link, a series resistor must be connected to both transmitters.
DIFF_SSTL2_II_DCI, DIFF_SSTL18_II_DCI
Differential SSTL 2.5V and 1.8V Class II pairs complementary single-ended SSTL_II type drivers with a differential receiver, including on-chip differential termination. DCI can be used for unidirectional and bidirectional links.
SSTL2_II_T_DCI, SSTL18_II_T_DCI
SSTL2_II_T_DCI and SSTL18_II_T_DCI provide on-chip split thevenin termination powered from VCCO that creates an equivalent termination voltage of VCCO/2 when these standards are 3-stated. When not 3-stated, these two standards do not have parallel termination but when invoked they have an internal series resistor (25 at 2.5V and 20 at 1.8V.)
www.xilinx.com
275
External Termination
IOB SSTL2_I RS = 25 VTT = 1.25V RP = Z0 = 50 Z0 VREF = 1.25V IOB SSTL2_I +
DCI
IOB IOB VCCO = 2.5V 2RVRP = 2Z0= 100 SSTL2_I_DCI Z0
R0 = 25
ug190_6_63_030506
Figure 6-67:
276
www.xilinx.com
Table 6-28 lists the SSTL2 DC voltage specifications for Class I. Table 6-28: SSTL2 DC Voltage Specifications Class I
Min VCCO VREF = 0.5 VCCO VTT = VREF + N(1) VIH VREF + 0.15 VIL VREF 0.15 VOH VREF + 0.61 VOL VREF 0.61(4) IOH at VOH (mA) IOL at VOL (mA)
Notes:
1. 2. 3. 4. N must be greater than or equal to 0.04 and less than or equal to 0.04. VIH maximum is VCCO +0.3. VIL minimum does not conform to the formula. Because SSTL2_I_DCI uses a controlled-impedance driver, VOH and VOL are different.
External Termination
IOB DIFF_SSTL2_I RS = 25 Z0 DIFF_SSTL2_I VTT = 1.25V DIFF_SSTL2_I RS = 25 RP = Z0 = 50 Z0 + VTT = 1.25V 50 IOB
ug190_6_64_030506
Figure 6-68:
www.xilinx.com
277
Figure 6-69 shows a sample circuit illustrating a valid termination technique for differential SSTL2 Class I (2.5V) with unidirectional DCI termination.
X-Ref Target - Figure 6-69
DCI
IOB VCCO = 2.5V DIFF_SSTL2_I_DCI Z0
R0 = 25
DIFF_SSTL2_I_DCI +
ug190_6_65_030506
Figure 6-69:
Table 6-29 lists the differential SSTL2 Class I DC voltage specifications. Table 6-29: Differential SSTL2 Class I DC Voltage Specifications
Min VCCO Input Parameters VTT VIN (DC)(1) VID (DC)(2) 0.30 0.3 0.62 0.95 VCCO 0.5 VCCO + 0.30 VCCO + 0.60 VCCO + 0.60 1.55 2.3 Typ 2.5 Max 2.7
1.0
1.5
VIN (DC) specifies the allowable DC excursion of each differential input. VID (DC) specifies the input differential voltage required for switching. VIX (AC) indicates the voltage where the differential input signals must cross. VOX (AC) indicates the voltage where the differential output signals must cross.
278
www.xilinx.com
External Termination
IOB SSTL2_II VTT = 1.25V RP = Z0 = 50 25 VTT = 1.25V RP = Z0 = 50 Z0 VREF = 1.25V IOB SSTL2_II +
DCI
IOB VCCO = 2.5V 2RVRP = 2Z0= 100 SSTL2_II_DCI Z0
R0 = 25
ug190_6_66_030506
Figure 6-70:
www.xilinx.com
279
Figure 6-71 shows a sample circuit illustrating a valid bidirectional termination technique for SSTL2 Class II.
X-Ref Target - Figure 6-71
External Termination
IOB SSTL2_II RS = 25 VTT = 1.25V VTT = 1.25V RS = 25 + VREF = 1.25V IOB SSTL2_II RP = Z0 = 50 RP = Z0 = 50 Z0
VREF = 1.25V
DCI
IOB VCCO = 2.5V 2RVRP = 2Z0= 100 SSTL2_II_DCI Z0
R0 = 25
R0 = 25
ug190_6_67_030506
Figure 6-71:
280
www.xilinx.com
Table 6-30 lists the SSTL2 DC voltage specifications for Class II. Table 6-30: SSTL2 DC Voltage Specifications Class II
Min VCCO VREF = 0.5 VCCO VTT = VREF + N(1) VIH VREF + 0.15 VIL VREF 0.15 VOH VREF + 0.81 VOL VREF 0.81(4) IOH at VOH (mA) IOL at VOL (mA)
Notes:
1. 2. 3. 4. N must be greater than or equal to 0.04 and less than or equal to 0.04. VIH maximum is VCCO +0.3. VIL minimum does not conform to the formula. Because SSTL2_I_DCI uses a controlled-impedance driver, VOH and VOL are different.
External Termination
IOB DIFF_SSTL2_II RS = 25 VTT = 1.25V 50 Z0 DIFF_SSTL2_II VTT = 1.25V DIFF_SSTL2_II RS = 25 50 Z0 VTT = 1.25V 50 + VTT = 1.25V 50 IOB
ug190_6_68_030506
Figure 6-72:
www.xilinx.com
281
Figure 6-73 shows a sample circuit illustrating a valid termination technique for differential SSTL2 Class II (2.5V) with unidirectional DCI termination.
X-Ref Target - Figure 6-73
DCI
IOB VCCO = 2.5V DIFF_SSTL2_II_DCI 2RVRP = 2Z0= 100 Z0
R0 = 25
DIFF_SSTL2_II_DCI +
ug190_6_69_030506
Figure 6-73:
Figure 6-74 shows a sample circuit illustrating a valid termination technique for differential SSTL2 Class II (2.5V) with bidirectional termination.
X-Ref Target - Figure 6-74
External Termination
IOB DIFF_SSTL2_II 25 Z0 VTT = 1.25V DIFF_SSTL2_II 25 50 Z0 DIFF_SSTL2_II + DIFF_SSTL2_II +
ug190_6_70_071707
VTT = 1.25V 50
VTT = 1.25V 50 25
IOB DIFF_SSTL2_II
Figure 6-74:
282
www.xilinx.com
Figure 6-75 shows a sample circuit illustrating a valid termination technique for differential SSTL2 Class II (2.5V) with bidirectional DCI termination.
X-Ref Target - Figure 6-75
DCI
IOB VCCO = 2.5V DIFF_SSTL2_II_DCI 2RVRP = 2Z0= 100 Z0
R0 = 25
R0 = 25
DIFF_SSTL2_II_DCI Z0
R0 = 25
DIFF_SSTL2_II_DCI
R0 = 25
DIFF_SSTL2_II_DCI +
DIFF_SSTL2_II_DCI +
ug190_6_71_041106
Figure 6-75: Differential SSTL2 (2.5V) Class II with DCI Bidirectional Termination Table 6-31 lists the differential SSTL2 Class II DC voltage specifications. Table 6-31: Differential SSTL2 Class II DC Voltage Specifications
Min VCCO Input Parameters VTT VIN (DC)(1) VID (DC)(2) VID (AC) VIX (AC)(3) Output Parameters VOX (AC)(4)
Notes:
1. 2. 3. 4. VIN (DC) specifies the allowable DC excursion of each differential input. VID (DC) specifies the input differential voltage required for switching. VIX (AC) indicates the voltage where the differential input signals must cross. VOX (AC) indicates the voltage where the differential output signals must cross.
Typ 2.5
Max 2.7
2.3
VCCO 0.5
1.0
1.5
www.xilinx.com
283
DCI
Not 3-stated
IOB
3-stated
IOB VCCO = 2.5V 2RVRP = 2Z0= 100
SSTL2_II_T_DCI Z0
R0 = 25
Figure 6-76:
284
www.xilinx.com
External Termination
IOB SSTL18_I RS = 20 Z0 VREF = 0.9V VTT = 0.9V 50 IOB SSTL18_I +
DCI
IOB IOB VCCO = 1.8V 2RVRP = 2Z0= 100 SSTL18_I_DCI Z0
R0 = 20
ug190_6_72_030506
Figure 6-77:
www.xilinx.com
285
External Termination
IOB DIFF_SSTL18_I RS = 20 Z0 DIFF_SSTL18_I + VTT = 0.9V DIFF_SSTL18_I RS = 20 RP = Z0 = 50 Z0 VTT = 0.9V 50 IOB
ug190_6_73_030506
Figure 6-78:
Figure 6-79 shows a sample circuit illustrating a valid termination technique for differential SSTL Class I (1.8V) with unidirectional DCI termination.
X-Ref Target - Figure 6-79
DCI
IOB IOB VCCO = 1.8V DIFF_SSTL18_I_DCI Z0
R0 = 20
DIFF_SSTL18_I_DCI +
ug190_6_74_032206
Figure 6-79:
286
www.xilinx.com
Table 6-32 lists the differential SSTL (1.8V) Class I DC voltage specifications. Table 6-32: Differential SSTL (1.8V) Class I and Class II DC Voltage Specifications
Min VCCO Input Parameters VTT VIN (DC)(1) VID (DC)(3) VID (AC) VIX (AC)(4) Output Parameters VOX (AC)(5)
Notes:
1. VIN (DC) specifies the allowable DC excursion of each differential input. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user. 3. VID (DC) specifies the input differential voltage required for switching. 4. VIX (AC) indicates the voltage where the differential input signals must cross. 5. VOX (AC) indicates the voltage where the differential output signals must cross.
Typ 1.8
Max 1.9
1.7
VCCO 0.5
0.725
1.075
www.xilinx.com
287
External Termination
IOB SSTL18_II RS = 20 VTT = 0.9V RP = Z0 = 50 VTT = 0.9V RP = Z0 = 50 Z0 VREF = 0.9V IOB SSTL18_II +
DCI
IOB VCCO = 1.8V 2RVRP = 2Z0= 100 SSTL18_II_DCI Z0
R0 = 20
ug190_6_75_030506
Figure 6-80:
Figure 6-81 shows a sample circuit illustrating a valid bidirectional termination technique for SSTL (1.8V) Class II.
288
www.xilinx.com
External Termination
IOB SSTL18_II RS = 20 VTT = 0.9V RP = Z0 = 50 VTT = 0.9V RP = Z0 = 50 Z0 VREF = 0.9V RS = 20 + IOB SSTL18_II
VREF = 0.9V
DCI
IOB VCCO = 1.8V 2RVRP = 2Z0= 100 SSTL18_II_DCI Z0
R0 = 20
R0 = 20
ug190_6_76_071707
Figure 6-81:
www.xilinx.com
289
Table 6-33 and Table 6-34 lists the SSTL (1.8V) DC voltage specifications for Class I and Class II, respectively. Table 6-33: SSTL (1.8V) DC Voltage Specifications Class I
Class I Min VCCO VREF = 0.5 VCCO VTT = VREF + N(1) VIH VREF + 0.125 VIL VREF 0.125 VOH VTT + 0.47(4) VOL VTT 0.47(4) IOH at VOH (mA) IOL at VOL (mA)
Notes:
1. 2. 3. 4. N must be greater than or equal to 0.04 and less than or equal to 0.04. VIH maximum is VCCO +0.3. VIL minimum does not conform to the formula. Because SSTL_I_DCI uses a controlled-impedance driver, VOH and VOL are different.
Table 6-34:
VCCO VREF = 0.5 VCCO VTT = VREF + N(1) VIH VREF + 0.125 VIL VREF 0.125 VOH VTT + 0.603(4) VOL VTT 0.603(4) IOH at VOH (mA) IOL at VOL (mA)
Notes:
1. 2. 3. 4.
N must be greater than or equal to 0.04 and less than or equal to 0.04. VIH maximum is VCCO +0.3. VIL minimum does not conform to the formula. Because SSTL_I_DCI uses a controlled-impedance driver, VOH and VOL are different.
290
www.xilinx.com
External Termination
IOB DIFF_SSTL18_II RS = 20 VTT = 0.9V 50 Z0 DIFF_SSTL18_II + VTT = 0.9V DIFF_SSTL18_II RS = 20 50 Z0 VTT = 0.9V 50 VTT = 0.9V 50 IOB
ug190_6_77_030506
Figure 6-82:
Figure 6-83 shows a sample circuit illustrating a valid termination technique for differential SSTL Class II (1.8V) with unidirectional DCI termination.
X-Ref Target - Figure 6-83
DCI
IOB VCCO = 1.8V DIFF_SSTL18_II_DCI 2RVRP = 2Z0= 100 Z0
R0 = 20
DIFF_SSTL18_II_DCI +
ug190_6_78_030506
Figure 6-83:
www.xilinx.com
291
Figure 6-84 shows a sample circuit illustrating a valid termination technique for differential SSTL Class II (1.8V) with bidirectional termination.
X-Ref Target - Figure 6-84
External Termination
IOB VTT = 0.9V DIFF_SSTL18_II 20 Z0 50 VTT = 0.9V 50 20 DIFF_SSTL18_II IOB
DIFF_SSTL18_II +
ug190_6_79_091807
Figure 6-84:
Figure 6-85 shows a sample circuit illustrating a valid termination technique for differential SSTL Class II (1.8V) with bidirectional DCI termination.
X-Ref Target - Figure 6-85
DCI
IOB VCCO = 1.8V DIFF_SSTL18_II_DCI 2RVRP = 2Z0= 100 Z0
R0 = 20
R0 = 20
DIFF_SSTL18_II_DCI Z0
R0 = 20
DIFF_SSTL18_II_DCI
DIFF_SSTL18_II_DCI +
R0 = 20 DIFF_SSTL18_II_DCI
ug190_6_80_030506
Figure 6-85: Differential SSTL (1.8V) Class II with DCI Bidirectional Termination
292
www.xilinx.com
Table 6-35 lists the differential SSTL (1.8V) Class II DC voltage specifications. Table 6-35: Differential SSTL (1.8V) Class II DC Voltage Specifications
Min VCCO Input Parameters VTT VIN (DC)(1) VID (DC)(3) VID (AC) VIX (AC)(4) Output Parameters VOX (AC)(5)
Notes:
1. VIN (DC) specifies the allowable DC excursion of each differential input. 2. Per EIA/JESD8-6, The value of VREF is to be selected by the user to provide optimum noise margin in the use conditions specified by the user. 3. VID (DC) specifies the input differential voltage required for switching. 4. VIX (AC) indicates the voltage where the differential input signals must cross. 5. VOX (AC) indicates the voltage where the differential output signals must cross.
Typ 1.8
Max 1.9
1.7
VCCO 0.5
0.725
1.075
www.xilinx.com
293
DCI
Not 3-stated
IOB
3-stated
IOB VCCO = 1.8V 2RVRP = 2Z0= 100
SSTL18_II_T_DCI Z0
R0 = 20
Figure 6-86:
The VCCO of the I/O bank must be connected to 2.5V 5% to provide 100 of effective differential termination. DIFF_TERM is only available for inputs and can only be used with a bank voltage of VCCO = 2.5V. The Differential Termination Attribute (DIFF_TERM) section outlines using this feature.
294
www.xilinx.com
Transmitter Termination
The Virtex-5 FPGA LVDS transmitter does not require any external termination. Table 6-36 lists the allowed attributes corresponding to the Virtex-5 FPGA LVDS current-mode drivers. Virtex-5 FPGA LVDS current-mode drivers are a true current source and produce the proper (EIA/TIA compliant) LVDS signal.
Receiver Termination
Figure 6-87 is an example of differential termination for an LVDS receiver on a board with 50 transmission lines.
X-Ref Target - Figure 6-87
External Termination
IOB IOB
LVDS_25
LVDS_25 +
ug190_6_81_030506
Figure 6-87:
Figure 6-88 is an example of a differential termination for an LVDS receiver on a board with 50 transmission lines.
X-Ref Target - Figure 6-88
IOB LVDS_25
0 Z0 = 50
IOB LVDS_25 +
RDIFF= 100
Z0 = 50 0
Data in
ug190_6_82_030506
Figure 6-88: LVDS_25 With DIFF_TERM Receiver Termination Table 6-36 lists the available Virtex-5 FPGA LVDS I/O standards and attributes supported. Table 6-36: Allowed Attributes of the LVDS I/O Standard
Primitives Attributes IBUFDS/IBUFGDS IOSTANDARD DIFF_TERM OBUFDS/OBUFTDS LVDS_25, LVDSEXT_25 TRUE, FALSE N/A
www.xilinx.com
295
BLVDS_25
IOB RS 165 Z0 = 50 IN
BLVDS_25 RS 165
RDIV 140
RDIFF = 100 Z0 = 50
ug190_6_83_030506
Figure 6-89:
296
www.xilinx.com
LVPECL_25
IOB RS 70 Z0 = 50 IN
LVPECL_25 RS 70
RDIV 187
RDIFF = 100 Z0 = 50
ug190_6_84_030506
Figure 6-90:
www.xilinx.com
297
5.
298
www.xilinx.com
Table 6-39 summarizes the Virtex-5 FPGA supported I/O standards. Table 6-39: I/O Compatibility
VCCO Output LVTTL (1) LVCMOS33 (1) LVDCI_33 (1) HSLVDCI_33 (1) PCIX (1) PCI33_3 (1) PCI66_3 (1) LVDS_25 LVDSEXT_25 HT_25 RSDS_25(4) BLVDS_25 LVPECL_25 SSTL2_I SSTL2_II DIFF_SSTL2_I DIFF_SSTL2_II LVCMOS25 LVDCI_25 HSLVDCI_25 LVDCI_DV2_25 SSTL2_I_DCI SSTL2_II_DCI SSTL2_II_T_DCI DIFF_SSTL2_I_DCI DIFF_SSTL2_II_DCI 2.5 2.5 Note (2) 3.3 Input 3.3 VREF Input N/R N/R N/R VCCO/2 N/R N/R N/R N/R N/R N/R N/R N/R N/R 1.25 1.25 N/R N/R N/R N/R VCCO/2 N/R 1.25 1.25 1.25 N/R N/R Termination Type Output N/R N/R Series Series N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R Series Series Series N/R Split N/R N/R Split Input N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R Split Split Split Split Split
I/O Standard
www.xilinx.com
299
Table 6-39:
I/O Standard HSTL_III_18 HSTL_IV_18 HSTL_I_18 HSTL_II_18 DIFF_HSTL_I_18 DIFF_HSTL_II_18 SSTL18_I SSTL18_II DIFF_SSTL18_I DIFF_SSTL18_II LVCMOS18 LVDCI_18 HSLVDCI_18 LVDCI_DV2_18 HSTL_III_DCI_18 HSTL_IV_DCI_18 HSTL_I_DCI_18 HSTL_II_DCI_18 HSTL_II_T_DCI_18 DIFF_HSTL_I_DCI_18 DIFF_HSTL_II_DCI_18 SSTL18_I_DCI SSTL18_II_DCI SSTL18_II_T_DCI DIFF_SSTL18_I_DCI DIFF_SSTL18_II_DCI 1.8
300
www.xilinx.com
Table 6-39:
Termination Type Output N/R N/R N/R N/R N/R N/R N/R Series Series Series Single N/R Single N/R Split N/R N/R Split Single N/R N/R N/R N/R Input N/R N/R N/R N/R N/R N/R N/R N/R N/R N/R Single Single Single Split Split Split Split Split Single N/R N/R N/R N/R
I/O Standard HSTL_III HSTL_IV HSTL_I HSTL_II DIFF_HSTL_I DIFF_HSTL_II LVCMOS15 LVDCI_15 HSLVDCI_15 LVDCI_DV2_15 GTLP_DCI HSTL_III_DCI HSTL_IV_DCI HSTL_I_DCI HSTL_II_DCI HSTL_II_T_DCI DIFF_HSTL_I_DCI DIFF_HSTL_II_DCI GTL_DCI GTLP GTL LVCMOS12 HSTL_I_12
Notes:
1.5
N/R 0.6
1. See 3.3V I/O Design Guidelines for more detailed information 2. Differential inputs and inputs using VREF are powered from VCCAUX. However, pin voltage must not exceed VCCO, due to the presence of clamp diodes to VCCO. 3. N/R = no requirement. 4. RSDS_25 has the same DC specifications as LVDS_25. All information pertaining to LVDS_25 is applicable to RSDS_25. 5. I/O standard is selected using the IOSTANDARD attribute.
www.xilinx.com
301
Output Driver
VCCO Po Power Clamp Diode DP
Input Buffer
VCCO
External Pin
Pi
Ni
GND
GND
ug190_6_85_030506
Figure 6-91:
The clamp diodes offer protection against transient voltage beyond approximately VCCO + 0.5V and Ground 0.5V. The voltage across the diode increases proportionally to the current going through it. Therefore the clamped level is not fixed and can vary
302
www.xilinx.com
depending on the board design. The absolute maximum I/O limits might be exceeded even if the clamp diode is active. The IBIS models contain the voltage-current characteristics of the I/O drivers and clamp diodes. To verify overshoot and undershoot are within the I/O absolute maximum specifications, Xilinx recommends proper I/O termination and performing IBIS simulation.
VCCO RREF
RREF
Virtex-5 FPGA Z0
OBUF_LVDCI_33
External Device
ug190_6_86_030506
www.xilinx.com
303
The connection scheme shown in Figure 6-93 is for a bidirectional bus scenario. The signal performance may be degraded by R0. Therefore, it is also recommended to verify the R0 value and performance with an IBIS simulation.
X-Ref Target - Figure 6-93
OBUFT_LVDCI_33
R0 Z0
IBUF_LVDCI
Virtex-5 FPGA
Figure 6-93:
External Device
ug190_6_87_030506
When designing with the LVDCI_33 standard: The output drive strength and slew rates are not programmable. The output impedance references the VRP and VRN resistors, and the output current is determined by the output impedance. If only LVDCI_33 inputs are used, it is not necessary to connect VRP and VRN to external reference resistors. The implementation pad report does not record VRP and VRN being used. External reference resistors are required only if LVDCI_33 outputs are present in a bank. LVDCI_33 is compatible with LVTTL and LVCMOS standards only.
In addition, changing the slew rate from fast to slow and/or reducing the current drive could significantly reduce overshoot and undershoot. The Virtex-5 FPGA PCB Designers Guide contains additional design information to assist PCB designers and signal integrity engineers.
Mixing Techniques
Either using LVDCI_33 standard or lowering the VCCO to 3.0V is a good approach to address overshoot and undershoot. It is also acceptable to combine both methods. When VCCO is lowered to 3.0V, it is not necessary to adjust the reference resistors VRP and VRN. The VRP and VRN values should always be the same as the board trace impedance.
304
www.xilinx.com
Sparse-Chevron Packages
Virtex-5 FPGA packaging utilizes a sparse-chevron pinout arrangement. The sparsechevron pinout style is an improvement over previous designs, offering low crosstalk and SSO noise. The pinout is designed to minimize PDS inductance and keep I/O signal return current paths very closely coupled to their associated I/O signal. The maximum ratio of I/O to reference pins (VCCO and GND) in sparse-chevron packages is 4:1. For every four I/O pins, there is always at least one reference pin. For boards that do not meet the nominal PCB requirements listed in Nominal PCB Specifications, the Virtex-5 FPGA SSO calculator is available, containing all SSO limit data for all I/O standards. For designs in nominal PCBs mixing limited and no limit I/O standards, the Virtex-5 FPGA SSO calculator must be used to ensure that I/O utilization does not exceed the limit. Information on the calculator is available under the Full Device SSO Calculator section. Unlike devices in previous families, Virtex-5 devices have only two bank sizes: 20 I/O and 40 I/O. With the ratio of signal to reference pins always constant, the SSO capacity of all banks of 20 I/O are the same, and the capacity of all banks of 40 I/O are the same. The SSO limits for Virtex-5 devices are listed on a per-bank basis rather than a limit per VCCO/GND pair.
www.xilinx.com
305
PCB Construction
VCCO and GND vias should have a drill diameter no less than 11 mils (279 ). Total board thickness must be no greater than 62 mils (1575 ).
Load Traces
All IOB output buffers must drive controlled impedance traces with characteristic impedance of 50 10%. Total capacitive loading at the far end of the trace (input capacitance of receiving device) must be no more than 10 pF.
VCCO and GND planes cannot be separated by more than 5.0 mils (152 )
306
www.xilinx.com
www.xilinx.com
307
Table 6-40:
Voltage 1.5V
308
www.xilinx.com
Table 6-40:
Voltage 1.8V
www.xilinx.com
309
Table 6-40:
Voltage 2.5V
310
www.xilinx.com
Table 6-40:
Voltage 3.3V
www.xilinx.com
311
Table 6-40:
Voltage 3.3V
312
www.xilinx.com
Maximum allowable power system disturbance voltage (nominal 600 mV) Capacitive loading (nominal 10 pF per load)
When the electrical characteristics of a design differ from the nominal values, the system SSO limit changes. The degree of difference determines the new effective limit for the design. A figure called SSO Allowance is used as a single derating factor, taking into account the combined effect of all three groups of system electrical characteristics. The SSO allowance is a number ranging from 0 to 100% and is a product of three scaling factors: The First Scaling Factor accounts for the PCB PDS parasitic inductance. It is determined by dividing the nominal PCB PDS inductance by the user's PCB PDS inductance, LPDS_USR. The PCB PDS inductance is determined based on a set of board geometries: board thickness, via diameter, breakout trace width and length, and any other additional structures including sockets. The Second Scaling Factor accounts for the maximum allowable power system disturbance. It is determined by dividing the user's maximum allowable power system disturbance, (VDISTURBANCE_USER) by the nominal maximum power system disturbance. VDISTURBANCE_USER is usually determined by taking the lesser of input undershoot voltage and input logic low threshold. The Third Scaling Factor accounts for the capacitive loading of outputs driven by the FPGA. It is based on the transient current impact of every additional picofarad of load capacitance above the assumed nominal. For every additional 1 pF of load capacitance over the nominal, approximately 9 mV of additional power system disturbance will occur. The additional power system disturbance is compared to the nominal power system disturbance, and a scale factor is derived from the relationship. CLOAD_USER is the user's average load capacitance. Example calculations show how each scale factor is computed, as well as the SSO allowance. The system parameters used in this example are: LPDS_USER VDISTURBANCE_USER CLOAD_USER First Scaling Factor (SF1) = 1.1 nH = 550 mV = 22 pF = LPDS_NOM/LPDS_USER = 1.0 nH/1.1 nH = 0.909 = VDISTURBANCE_USER/VDISTURBANCE_NOM = 550 mV/600 mV = 0.917 Third Scaling Factor (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
www.xilinx.com
313
SSO Allowance
SSO Contribution ( n )
A sample SSO calculation follows. The system parameters used are: Device: Bank: XC5VLX50 FF1153 11 12 6 19
First, SSO limits for each I/O standard are obtained from Table 6-40:
I/O Group 1 2 3 I/O Standard SSTL2_II LVCMOS25_24 Fast LVCMOS25_6 Fast SSO Limit (Drivers per Bank) 40 30 40
Finally, the bank SSO is calculated: Bank 1 SSO = SSO contribution (1) + SSO contribution (2) + SSO Contribution (3) = 30% + 20% + 48% = 98%
314
www.xilinx.com
Example
The designer uses LVDCI_18 driver with 65 reference resistors. The LVDCI_18 SSO limit for 50 impedance is first taken from Table 6-40. The SSO limit for LVDCI_18 at 50 is 11 SSO per VCCO/GND pin pair. Therefore, the SSO limit for LVDCI_18 at 65 is: SSO Limit LVDCI_18 at 65 = ((65 )/50 ) 11 = 14.3
Bank 0
Bank 0 in all devices contains only configuration and dedicated signals. Since there is no user I/O in Bank 0, no SSO analysis is necessary for this bank.
www.xilinx.com
315
316
www.xilinx.com
Chapter 7
In addition, Virtex-5 FPGAs implement the following architectural features that are also supported in Virtex-4 FPGAs: IODELAY provides users control of an adjustable, fine-resolution delay element SAME_EDGE output DDR mode SAME_EDGE and SAME_EDGE_PIPELINED input DDR mode
www.xilinx.com
317
ILOGIC Resources
The ILOGIC block shown in Figure 7-1.
X-Ref Target - Figure 7-1
D O DDLY
Q1 Q2
Q1 Q2
CE1 CLK
CE CK SR
REV
SR REV
ug190_7_01_050906
Figure 7-1: ILOGIC Block Diagram ILOGIC can support the following operations: Edge-triggered D-type flip-flop IDDR mode (OPPOSITE_EDGE or SAME_EDGE or SAME_EDGE_PIPELINED). See Input DDR Overview (IDDR), page 319 for further discussion on input DDR. Level sensitive latch Asynchronous/combinatorial
All ILOGIC block registers have a common clock enable signal (CE1) that is active High by default. If left unconnected, the clock enable pin for any storage element defaults to the active state. All ILOGIC block registers have a common synchronous or asynchronous set and reset (SR and REV signals). The set/reset input pin, SR forces the storage element into the state specified by the SRVAL attributes. When using SR, a second input, REV forces the storage element into the opposite state. The reset condition predominates over the set condition. Table 7-1 and Table 7-2 describe the operation of SR in conjunction with REV. Table 7-1:
SR 0 0 1 1
318
www.xilinx.com
ILOGIC Resources
Table 7-2:
SR 0 0 1 1
The SRVAL attributes can be set individually for each storage element in the ILOGIC block, but the choice of synchronous or asynchronous set/reset (SRTYPE) can not be set individually for each storage element in the ILOGIC block. The following sections discuss the various resources within the ILOGIC blocks. All connections between the ILOGIC resources are managed in Xilinx software.
The SAME_EDGE and SAME_EDGE_PIPELINED modes are the same as for the Virtex-4 architecture. These modes allow designers to transfer falling edge data to the rising edge domain within the ILOGIC block, saving CLB and clock resources, and increasing performance. These modes are implemented using the DDR_CLK_EDGE attribute. The following sections describe each of the modes in detail.
OPPOSITE_EDGE Mode
A traditional input DDR solution, or OPPOSITE_EDGE mode, is accomplished via a single input in the ILOGIC. The data is presented to the fabric via the output Q1 on the rising edge of the clock and via the output Q2 on the falling edge of the clock. This structure is similar to the Virtex-II, Virtex-II Pro, and Virtex-4 FPGA implementation. Figure 7-2 shows the timing diagram of the input DDR using the OPPOSITE_EDGE mode.
www.xilinx.com
319
C CE D Q1 Q2 D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D12A D13A D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A
ug190_7_02_041206
D12A
Figure 7-2:
SAME_EDGE Mode
In the SAME_EDGE mode, the data is presented into the FPGA fabric on the same clock edge. However, the data pair to be separated by one clock cycle. This structure is similar to the Virtex-II, Virtex-II Pro, and Virtex-4 FPGA implementation. Figure 7-3 shows the timing diagram of the input DDR using SAME_EDGE mode. In the timing diagram, the output pairs Q1 and Q2 are no longer (0) and (1). Instead, the first pair presented is pair Q1 and Q2 (0) and (don't care) respectively, followed by pair (1) and (2) on the next clock cycle.
X-Ref Target - Figure 7-3
C CE D Q1 Q2 D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D0A Don't care D2A D1A D4A D3A D6A D5A D8A D7A D10A D9A D11A
ug190_7_03_041206
Figure 7-3:
SAME_EDGE_PIPELINED Mode
In the SAME_EDGE_PIPELINED mode, the data is presented into the FPGA fabric on the same clock edge. Unlike the SAME_EDGE mode, the data pair is not separated by one clock cycle. However, an additional clock latency is required to remove the separated effect of the SAME_EDGE mode. Figure 7-4 shows the timing diagram of the input DDR using the SAME_EDGE_PIPELINED mode. The output pairs Q1 and Q2 are presented to the FPGA fabric at the same time.
320
www.xilinx.com
ILOGIC Resources
C CE D Q1 Q2 D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A D12A D13A D0A D1A D2A D3A D4A D5A D6A D7A D8A D9A D10A D11A
ug190_7_04_041206
Figure 7-4:
S D IDDR CE C Q1 Q2
R
ug190_7_05_062207
D R S
Data input (DDR) IDDR register input from IOB. Reset Set Synchronous/Asynchronous reset pin. Reset is asserted High. Synchronous/Asynchronous set pin. Set is asserted High.
www.xilinx.com
321
Table 7-4:
IDDR Attributes
Description Sets the IDDR mode of operation with respect to clock edge Sets the initial value for Q1 port Sets the initial value for Q2 port Possible Values OPPOSITE_EDGE (default), SAME_EDGE, SAME_EDGE_PIPELINED 0 (default), 1 0 (default), 1
TICKQ
Figure 7-6:
Clock Event 1
At time TICE1CK before Clock Event 1, the input clock enable signal becomes validHigh at the CE1 input of the input register, enabling the input register for incoming data. At time TIDOCK before Clock Event 1, the input signal becomes valid-High at the D input of the input register and is reflected on the Q1 output of the input register at time TICKQ after Clock Event 1.
322
www.xilinx.com
ILOGIC Resources
Clock Event 4
At time TISRCK before Clock Event 4, the SR signal (configured as synchronous reset in this case) becomes valid-High resetting the input register and reflected at the Q1 output of the IOB at time TICKQ after Clock Event 4.
1 CLK TIDOCK D
10
11
TIDOCK TICE1CK
TICKQ TICKQ
Figure 7-7:
Clock Event 1
At time TICE1CK before Clock Event 1, the input clock enable signal becomes validHigh at the CE1 input of both of the DDR input registers, enabling them for incoming data. Since the CE1 and D signals are common to both DDR registers, care must be taken to toggle these signals between the rising edges and falling edges of CLK as well as meeting the register setup-time relative to both clocks. At time TIDOCK before Clock Event 1 (rising edge of CLK), the input signal becomes valid-High at the D input of both registers and is reflected on the Q1 output of input register 1 at time TICKQ after Clock Event 1.
Clock Event 2
At time TIDOCK before Clock Event 2 (falling edge of CLK), the input signal becomes valid-Low at the D input of both registers and is reflected on the Q2 output of input register 2 at time TICKQ after Clock Event 2 (no change in this case).
Clock Event 9
At time TISRCK before Clock Event 9, the SR signal (configured as synchronous reset in this case) becomes valid-High resetting Q1 at time TICKQ after Clock Event 9, and Q2 at time TICKQ after Clock Event 10.
Table 7-5 describes the function and control signals of the ILOGIC switching characteristics in the Virtex-5 FPGA Data Sheet.
www.xilinx.com
323
Table 7-5:
Symbol Setup/Hold TICE1CK/TICKCE1 TISRCK/TICKSR TIDOCK/TIOCKD Combinatorial TIDI Sequential Delays TIDLO TICKQ TICE1Q TRQ
parameters.
CE1 pin Setup/Hold with respect to CLK SR/REV pin Setup/Hold with respect to CLK D pin Setup/Hold with respect to CLK
D pin to Q1 pin using flip-flop as a latch without Delay CLK to Q outputs CE1 pin to Q1 using flip-flop as a latch, propagation delay SR/REV pin to OQ/TQ out
Note: The DDLY timing diagrams and parameters are identical to the D timing diagrams and
324
www.xilinx.com
www.xilinx.com
325
Variable IDELAY (IDELAY_TYPE = VARIABLE) and fixed ODELAY mode In this mode, only the IDELAY value can be dynamically changed after configuration by manipulating the control signals CE and INC. The logic level of the T pin in the IODELAY primitive dynamically determines if the block is in IDELAY or ODELAY mode. When used in this mode, the IDELAYCTRL primitive must be instantiated. See IDELAYCTRL Usage and Design Guidelines for more details.
Source
Destination
IDELAY ODELAY
IODELAY Primitive
Figure 7-8 shows the IODELAY primitive.
X-Ref Target - Figure 7-8
IODELAY
ODATAIN IDATAIN T INC RST CE DATAIN C
ug190_7_08_041106
DATAOUT
Figure 7-8:
IODELAY Primitive
Table 7-7 lists the available ports in the IODELAY primitive. All ports are 1-bit wide. Table 7-7:
Port Name DATAOUT IDATAIN ODATAIN
326
www.xilinx.com
Table 7-7:
Port Name DATAIN T CE INC RST C
IODELAY Ports
Data Input from the IOB - IDATAIN
The IDATAIN input is driven by its associated IOB. In IDELAY mode the data can be driven to either an ILOGIC/ISERDES block, directly into the FPGA fabric, or to both through the DATAOUT port with a delay set by the IDELAY_VALUE.
3-state Input - T
This is the 3-state input control port. For bidirectional operation, the T pin signal also controls the T pin of the OBUFT.
Clock Input - C
All control inputs to IODELAY primitive (RST, CE, and INC) are synchronous to the clock input (C). A clock must be connected to this port when IODELAY is configured in variable mode. C can be locally inverted, and must be supplied by a global or regional clock buffer. This clock should be connected to the same clock in the SelectIO logic resources (when using ISERDES and OSERDES, C is connected to CLKDIV).
www.xilinx.com
327
RST 1 0 0 0
CE x 1 1 0
INC x 1 0 x
328
www.xilinx.com
IODELAY Attributes
Table 7-10 summarizes the IODELAY attributes. Table 7-10: IODELAY Attribute Summary
Attribute IDELAY_TYPE Value String: DEFAULT, FIXED, or VARIABLE Integer: 0 to 63 Default Value DEFAULT Description Sets the type of tap delay line. Default delay is used to guarantee zero hold times, fixed delay is used to set a static delay value, and variable delay is used to dynamically adjust the delay value. Specifies the fixed number of delay taps in fixed mode or the initial starting number of taps in variable mode (input path). Specifies the fixed number of delay taps (output path). When TRUE, this attribute reduces the output jitter. The difference in power consumption is quantified in the Xilinx Power Estimator tool. The SIGNAL_PATTERN attribute causes the timing analyzer to account for the appropriate amount of delay-chain jitter in the data or clock path. IDELAYCTRL reference clock frequency (MHz). I: IODELAY chain input is IDATAIN O: IODELAY chain input is ODATAIN IO: IODELAY chain input is IDATAIN and ODATAIN (controlled by T) DATAIN: IODELAY chain input is DATAIN
IDELAY_VALUE
ODELAY_VALUE
Integer: 0 to 63
0 TRUE
DATA
REFCLK_FREQUENCY DELAY_SRC
200
IDELAY_TYPE Attribute
The IDELAY_TYPE attribute sets the type of delay used. The attribute values are DEFAULT, FIXED, and VARIABLE. When set to DEFAULT, the zero-hold time delay element is selected. This delay element is used to guarantee non-positive hold times when global clocks are used without DCMs to capture data (pin-to-pin parameters). When set to FIXED, the tap-delay value is fixed at the number of taps determined by the IDELAY_VALUE attribute setting. This value is preset and cannot be changed after configuration. When set to VARIABLE, the variable tap delay element is selected. The tap delay can be incremented by setting CE = 1 and INC = 1, or decremented by CE = 1 and INC = 0. The increment/decrement operation is synchronous to C, the input clock signal.
IDELAY_VALUE Attribute
The IDELAY_VALUE attribute specifies the initial number of tap delays. The possible values are any integer from 0 to 63. The default value is zero. The value of the tap delay reverts to IDELAY_VALUE when the tap delay is reset. In variable mode this attribute determines the initial setting of the delay line.
www.xilinx.com
329
ODELAY_VALUE Attribute
The ODELAY_VALUE attribute specifies tap delays. The possible values are any integer from 0 to 63. The default value is zero. The value of the tap delay reverts to ODELAY_VALUE when the tap delay is reset.
HIGH_PERFORMANCE_MODE Attribute
When TRUE, this attribute reduces the output jitter. This reduction results in a slight increase in power dissipation from the IODELAY element. When set to FALSE the IODELAY element consumes less power.
SIGNAL_PATTERN Attribute
Clock and data signals have different electrical profiles and therefore accumulate different amounts of jitter in the IODELAY chain. By setting the SIGNAL_PATTERN attribute, the user enables timing analyzer to account for jitter appropriately when calculating timing. A clock signal is periodic in nature and does not have long sequences of consecutive ones or zeroes, while data is random in nature and can have long and short sequences of ones and zeroes.
IODELAY Timing
Table 7-11 shows the IODELAY switching characteristics. Table 7-11: IODELAY Switching Characteristics
Symbol TIDELAYRESOLUTION TICECK/TICKCE TIINCCK/TICKINC TIRSTCK/TICKRST Description IDELAY tap resolution CE pin Setup/Hold with respect to C INC pin Setup/Hold with respect to C RST pin Setup/Hold with respect to C
Tap 1
UG190_7_09_100107
Figure 7-9:
330
www.xilinx.com
Clock Event 1
On the rising edge of C, a reset is detected, causing the output DATAOUT to select tap 0 as the output from the 64-tap chain (assuming IDELAY_VALUE = 0).
Clock Event 2
A pulse on CE and INC is captured on the rising edge of C. This indicates an increment operation. The output changes without glitches from tap 0 to tap 1. See Stability after an Increment/Decrement Operation.
Clock Event 3
CE and INC are no longer asserted, thus completing the increment operation. The output remains at tap 1 indefinitely until there is further activity on the RST, CE, or INC pins.
www.xilinx.com
331
TSCONTROL
IOB
OBUF PAD
IODELAY
IDDR Q1 Q2 Delay Chain
IODELAY_01_081407
Figure 7-10:
Basic Sections of Blocks Related to IODELAY Turnaround with Pertinent Paths Shown When DELAY_SRC = IO, MUXE and MUXF dynamically selects ODATAIN or IDATAIN and ODELAY_VALUE or IDELAY_VALUE inside the IODELAY block. The following Verilog code segment is used for demonstrating bidirectional 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) );
332
www.xilinx.com
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(RST), .RDY() );
www.xilinx.com
333
Two cases that use the bidirectional IODELAY functionality are important for a given I/O pin. The first case uses bidirectional IODELAY when the I/O is an output being switched to an input. Figure 7-11 shows the IOB and IODELAY moving toward the input mode as set by the TSCONTROL net coming from the ODDR flip-flop. This controls the selection of MUXes E and F for the IOB input path and IDELAY_VALUE, respectively. Additionally, the OBUF is 3-stated.
X-Ref Target - Figure 7-11
TSCONTROL
IOB
OBUF PAD
IODELAY
IDDR Q1 Q2 Delay Chain
IODELAY_02_082107
Figure 7-11:
334
www.xilinx.com
The timing diagram in Figure 7-12 shows the relevant signal timing for the case when the I/O is an output switching to an input using 3-state control. The switching characteristics shown in the diagram are specified in the Virtex-5 FPGA Data Sheet.
X-Ref Target - Figure 7-12
ODDR CLK
TOCKQ
TSCONTROL
TIOTP TIODDO_T ODDR CLK to 3-state deassertion time. Previous PAD Output Value ODDR CLK to IDELAY ready New PAD Input Value
PAD
IDDR CLK
Pad to IDDR Setup Time is: TIOPI + TIODDO_IDATAIN + TIDOCKD (where TIODDO_IDATAIN is a function of IDELAY_VALUE)
IODELAY_03_082107
Figure 7-12:
Relevant Timing Signals to Examine IODELAY Timing when the IOB Switches From an Output to an Input
The activities of the OBUFT pin are controlled by the propagation and state of the TSCONTROL signal from the ODDR flip-flop. The 3-state control data receipt on the OBUF and IDDR flip-flop from a PAD are in parallel with each other, depending on the IDELAY_VALUE setting the final value at the IDDR flip-flop input in response to a clock edge is valid before or after the pad is driven from the 3-state control. After the 3-state control propagates through to the PAD and the IODELAY has been switched to an input, the IDDR setup time is the sole determiner of timing based on the IDELAY_VALUE and other timing parameters defined in the Xilinx speed specification and represented in the ISE tools.
www.xilinx.com
335
The second case uses bidirectional IODELAY when the I/O is an input switching to an output. Figure 7-13 shows the IOB and IODELAY moving toward the output mode as set by the 3-state TSCONTROL signal coming from the ODDR T flip-flop. This controls the selection of MUXes E and F for the output path and ODELAY_VALUE respectively. Additionally, the OBUF changes to not being 3-stated and starts to drive the PAD.
X-Ref Target - Figure 7-13
TSCONTROL
IOB
OBUF PAD
IODELAY
IDDR Q1 Q2 Delay Chain
IODELAY_04_082107
Figure 7-13:
336
www.xilinx.com
The timing diagram in Figure 7-14 shows the relevant signal timing for the case where the I/O switches from input to an output using 3-state control. The switching characteristics shown in the diagram are specified in the Virtex-5 FPGA Data Sheet.
X-Ref Target - Figure 7-14
ODDR CLK
DATAOUT
TSCONTROL
TIOTP TOCKQ
PAD
IODELAY_05_082107
Figure 7-14:
Relevant Timing Signals used to Examine IODELAY Timing when an IOB Changes from an Input to an Output
3-state control activities on the OBUF of the IOB and ODDR flip-flop to PAD timing are in parallel with each other, depending on the ODELAY_VALUE setting the final output value in response to a clock edge at the ODDR CLK pin is valid before or after the pad is driven from the 3-state control. After the 3-state control propagates through to the PAD and the IODELAY is turned around, the clock-to-output time of the ODDR flip-flop through the IODELAY element (with the ODELAY_VALUE setting) solely determines the clock-tooutput time to the pad.
IDELAYCTRL Overview
If the IODELAY or ISERDES primitive is instantiated with the IOBDELAY_TYPE attribute set to FIXED or VARIABLE, the IDELAYCTRL module must be instantiated. The IDELAYCTRL module continuously calibrates the individual delay elements (IODELAY) in its region (see Figure 7-17, page 340), to reduce the effects of process, voltage, and temperature variations. The IDELAYCTRL module calibrates IODELAY using the user supplied REFCLK.
www.xilinx.com
337
IDELAYCTRL Primitive
Figure 7-15 shows the IDELAYCTRL primitive.
X-Ref Target - Figure 7-15
IDELAYCTRL
REFCLK RST RDY
ug190_7_10_041206
Figure 7-15:
IDELAYCTRL Primitive
IDELAYCTRL Ports
RST - Reset
The reset input pin (RST) is an active-High asynchronous reset. IDELAYCTRL must be reset after configuration (and the REFCLK signal has stabilized) to ensure proper IODELAY operation. A reset pulse width TIDELAYCTRL_RPW is required. IDELAYCTRL must be reset after configuration.
RDY - Ready
The ready (RDY) signal indicates when the IODELAY modules in the specific region are calibrated. The RDY signal is deasserted if REFCLK is held High or Low for one clock period or more. If RDY is deasserted Low, the IDELAYCTRL module must be reset. The implementation tools allow RDY to be unconnected/ignored. Figure 7-16 illustrates the timing relationship between RDY and RST.
338
www.xilinx.com
IDELAYCTRL Timing
Table 7-12 shows the IDELAYCTRL switching characteristics. Table 7-12: IDELAYCTRL Switching Characteristics
Symbol Description REFCLK frequency REFCLK precision Reset/Startup to Ready for IDELAYCTRL
FIDELAYCTRL_REF
IDELAYCTRL_REF_PRECISION
TIDELAYCTRLCO_RDY
REFCLK
RST
TIDELAYCTRLCO_RDY
RDY
ug190_7_11_041206
Figure 7-16:
IDELAYCTRL Locations
IDELAYCTRL modules exist in every I/O column in every clock region. An IDELAYCTRL module calibrates all the IDELAY modules within its clock region. See Global and Regional Clocks in Chapter 1 for the definition of a clock region. Figure 7-17 illustrates the relative locations of the IDELAYCTRL modules.
www.xilinx.com
339
1 Clock Region
IDELAYCTRL
Configuration
CMT
ug190_7_12_041206
Figure 7-17:
340
www.xilinx.com
Instantiated by user
REFCLK RST
REFCLK RST
RDY
IDELAYCTRL
REFCLK
RDY
IDELAYCTRL
RST
. . .
. . .
.
RDY
REFCLK
IDELAYCTRL
RST
Figure 7-18: 2.
When RDY port is connected, an AND gate of width equal to the number of clock regions is instantiated and the RDY output ports from the instantiated and replicated IDELAYCTRL instances are connected to the inputs of the AND gate. The tools assign the signal name connected to the RDY port of the instantiated IDELAYCTRL instance to the output of the AND gate. The VHDL and Verilog use models for instantiating an IDELAYCTRL primitive without LOC constraints with the RDY port connected are provided in the Libraries Guide. The resulting circuitry after instantiating the IDELAYCTRL components is illustrated in Figure 7-19.
Instantiated by user
REFCLK RST
RDY
. . .
. . .
Figure 7-19:
www.xilinx.com
341
Location Constraints
Each IDELAYCTRL module has XY location coordinates (X:row, Y:column). To constrain placement, IDELAYCTRL instances can have LOC properties attached to them. The naming convention for IDELAYCTRL placement coordinates is different from the convention used in naming CLB locations. This allows LOC properties to transfer easily from array to array. There are two methods of attaching LOC properties to IDELAYCTRL instances. 1. 2. Insert LOC constraints in a UCF file Embed LOC constraints directly into HDL design files
In VHDL code, the LOC constraint is described with VHDL attributes. Before it can be used, the constraint must be declared with the following syntax:
attribute loc : string;
The Libraries Guide includes VHDL and Verilog use model templates for instantiating IDELAYCTRL primitives with LOC constraints. The circuitry that results from instantiating the IDELAYCTRL components is shown in Figure 7-20.
342
www.xilinx.com
REFCLK
rst_1
REFCLK
RDY
rdy_1
IDELAYCTRL_1 RST
REFCLK
RDY
rdy_2
rst_2
IDELAYCTRL_2 RST
. . .
. . .
REFCLK RDY IDELAYCTRL_n RST
. . .
rdy_n
rst_n
ug190_7_15_041306
Figure 7-20:
The VHDL and Verilog use models for instantiating a mixed usage model are provided in the Libraries Guide. In the example, a user is instantiating a non-location constrained IDELAYCTRL instance with the RDY signal connected. This discussion is also valid when the RDY signal is ignored. The circuitry that results from instantiating the IDELAYCTRL components is illustrated in Figure 7-21.
www.xilinx.com
343
REFCLK rst_1
REFCLK RST
RDY
rdy_1
IDELAYCTRL_1
REFCLK
RDY
rdy_2
IDELAYCTRL_2
rst_2
. . .
RST
. . .
REFCLK RDY
. . .
rdy_n
IDELAYCTRL_n
rst_n
RST
RST_NOLOC
IDELAYCTRL_noloc
RST
REFCLK RST
RDY
RDY_NOLOC
IDELAYCTRL_noloc
. . .
. . .
IDELAYCTRL_noloc
Figure 7-21:
OLOGIC Resources
OLOGIC consists of two major blocks, one to configure the output data path and the other to configure the 3-state control path. These two blocks have a common clock (CLK) but different enable signals, OCE and TCE. Both have asynchronous and synchronous set and reset (SR and REV signals) controlled by an independent SRVAL attribute as described in the Table 7-1 and Table 7-2.
344
www.xilinx.com
OLOGIC Resources
The Output and the 3-State paths can be configured in one of the following modes independently. Edge triggered D type flip-flop DDR mode (SAME_EDGE or OPPOSITE_EDGE) Level Sensitive Latch Asynchronous/combinatorial
Figure 7-22 illustrates the various logic resources in the OLOGIC block.
X-Ref Target - Figure 7-22
TQ
REV
OQ
REV
Figure 7-22:
This section of the documentation discusses the various features available using the OLOGIC resources. All connections between the OLOGIC resources are managed in Xilinx software.
www.xilinx.com
345
The SAME_EDGE mode is the same as for the Virtex-4 architecture. This mode allows designers to present both data inputs to the ODDR primitive on the rising-edge of the ODDR clock, saving CLB and clock resources, and increasing performance. This mode is implemented using the DDR_CLK_EDGE attribute. It is supported for 3-state control as well. The following sections describe each of the modes in detail.
OPPOSITE_EDGE Mode
In OPPOSITE_EDGE mode, both the edges of the clock (CLK) are used to capture the data from the FPGA fabric at twice the throughput. This structure is similar to the Virtex-II Virtex-II Pro, and Virtex-4 FPGA implementation. Both outputs are presented to the data input or 3-state control input of the IOB. The timing diagram of the output DDR using the OPPOSITE_EDGE mode is shown in Figure 7-23.
X-Ref Target - Figure 7-23
CLK OCE D1 D2 OQ D1A D2A D1B D2B D1C D2C D1D D2D
SAME_EDGE Mode
In SAME_EDGE mode, data can be presented to the IOB on the same clock edge. Presenting the data to the IOB on the same clock edge avoids setup time violations and allows the user to perform higher DDR frequency with minimal register to register delay, as opposed to using the CLB registers. Figure 7-24 shows the timing diagram of the output DDR using the SAME_EDGE mode.
X-Ref Target - Figure 7-24
CLK OCE D1 D2 OQ
Figure 7-24:
D1A D2A
D1B D2B
D1C D2C
D1D D2D
346
www.xilinx.com
OLOGIC Resources
Clock Forwarding
Output DDR can forward a copy of the clock to the output. This is useful for propagating a clock and DDR data with identical delays, and for multiple clock generation, where every clock load has a unique clock driver. This is accomplished by tying the D1 input of the ODDR primitive High, and the D2 input Low. Xilinx recommends using this scheme to forward clocks from the FPGA fabric to the output pins.
S D1 D2 CE C ODDR Q
R
ug190_7_20_012207
Table 7-14:
ODDR Attributes
Description Sets the ODDR mode of operation with respect to clock edge Sets the initial value for Q port Set/Reset type with respect to clock (C) Possible Values OPPOSITE_EDGE (default), SAME_EDGE 0 (default), 1 ASYNC, SYNC (default)
www.xilinx.com
347
Symbol Setup/Hold TODCK/TOCKD TOOCECK/TOCKOCE TOSRCK/TOCKSR TOTCK/TOCKT TOTCECK/TOCKTCE Clock to Out TOCKQ TRQ CLK to OQ/TQ out
D1/D2 pins Setup/Hold with respect to CLK OCE pin Setup/Hold with respect to CLK SR/REV pin Setup/Hold with respect to CLK T1/T2 pins Setup/Hold with respect to CLK TCE pin Setup/Hold with respect to CLK
Timing Characteristics
Figure 7-26 illustrates the OLOGIC output register timing.
X-Ref Target - Figure 7-26
ug190_7_21_041206
348
www.xilinx.com
OLOGIC Resources
Clock Event 1
At time TOOCECK before Clock Event 1, the output clock enable signal becomes validHigh at the OCE input of the output register, enabling the output register for incoming data. At time TODCK before Clock Event 1, the output signal becomes valid-High at the D1 input of the output register and is reflected at the OQ output at time TOCKQ after Clock Event 1.
Clock Event 4
At time TOSRCK before Clock Event 4, the SR signal (configured as synchronous reset in this case) becomes valid-High, resetting the output register and reflected at the OQ output at time TRQ after Clock Event 4. Figure 7-27 illustrates the OLOGIC ODDR register timing.
X-Ref Target - Figure 7-27
1 CLK
10
11
ug190_7_22_012407
Figure 7-27:
Clock Event 1
At time TOOCECK before Clock Event 1, the ODDR clock enable signal becomes validHigh at the OCE input of the ODDR, enabling ODDR for incoming data. Care must be taken to toggle the OCE signal of the ODDR register between the rising edges and falling edges of CLK as well as meeting the register setup-time relative to both clock edges. At time TODCK before Clock Event 1 (rising edge of CLK), the data signal D1 becomes valid-High at the D1 input of ODDR register and is reflected on the OQ output at time TOCKQ after Clock Event 1.
Clock Event 2
At time TODCK before Clock Event 2 (falling edge of CLK), the data signal D2 becomes valid-High at the D2 input of ODDR register and is reflected on the OQ output at time TOCKQ after Clock Event 2 (no change at the OQ output in this case).
www.xilinx.com
349
Clock Event 9
At time TOSRCK before Clock Event 9 (rising edge of CLK), the SR signal (configured as synchronous reset in this case) becomes valid-High resetting ODDR register, reflected at the OQ output at time TRQ after Clock Event 9 (no change at the OQ output in this case) and resetting ODDR register, reflected at the OQ output at time TRQ after Clock Event 10 (no change at the OQ output in this case). Figure 7-28 illustrates the OLOGIC 3-state register timing.
X-Ref Target - Figure 7-28
TOSRCK SR TOCKQ TQ
UG190_7_23_041106
TRQ
Figure 7-28:
Clock Event 1
At time TOTCECK before Clock Event 1, the 3-state clock enable signal becomes validHigh at the TCE input of the 3-state register, enabling the 3-state register for incoming data. At time TOTCK before Clock Event 1 the 3-state signal becomes valid-High at the T input of the 3-state register, returning the pad to high-impedance at time TOCKQ after Clock Event 1.
Clock Event 2
At time TOSRCK before Clock Event 2, the SR signal (configured as synchronous reset in this case) becomes valid-High, resetting the 3-state register at time TRQ after Clock Event 2.
Figure 7-29 illustrates IOB DDR 3-state register timing. This example is shown using DDR in opposite edge mode. For other modes add the appropriate latencies as shown in Figure 7-4, page 321.
350
www.xilinx.com
OLOGIC Resources
1 CLK
10
11
TQ
ug190_7_24_041106
Figure 7-29:
Clock Event 1
At time TOTCECK before Clock Event 1, the 3-state clock enable signal becomes validHigh at the TCE input of the 3-state ODDR register, enabling them for incoming data. Care must be taken to toggle the TCE signal of the 3-state ODDR between the rising edges and falling edges of CLK as well as meeting the register setup-time relative to both clock edges. At time TOTCK before Clock Event 1 (rising edge of CLK), the 3-state signal T1 becomes valid-High at the T1 input of 3-state register and is reflected on the TQ output at time TOCKQ after Clock Event 1.
Clock Event 2
At time TOTCK before Clock Event 2 (falling edge of CLK), the 3-state signal T2 becomes valid-High at the T2 input of 3-state register and is reflected on the TQ output at time TOCKQ after Clock Event 2 (no change at the TQ output in this case).
Clock Event 9
At time TOSRCK before Clock Event 9 (rising edge of CLK), the SR signal (configured as synchronous reset in this case) becomes valid-High resetting 3-state Register, reflected at the TQ output at time TRQ after Clock Event 9 (no change at the TQ output in this case) and resetting 3-state Register, reflected at the TQ output at time TRQ after Clock Event 10 (no change at the TQ output in this case).
www.xilinx.com
351
352
www.xilinx.com
Chapter 8
www.xilinx.com
353
Figure 8-1 shows the block diagram of the ISERDES, highlighting all the major components and features of the block.
X-Ref Target - Figure 8-1
D CLKDIV
SHIFTIN1/2
SHIFTOUT1/2
Q1 - Q6
RST Bitslip
ug190_8_01_050906
Figure 8-1:
BITSLIP Q1 CE1 Q2 CE2 Q3 CLK Q4 CLKB CLKDIV D OCLK SHIFTIN1 SHIFTIN2 RST
ug190_8_02_112607
Q5
ISERDES_NODELAY Primitive
Q6 SHIFTOUT1 SHIFTOUT2
Figure 8-2:
ISERDES_NODELAY Primitive
354
www.xilinx.com
Table 8-1 lists the available ports in the ISERDES_NODELAY primitive. Table 8-1: ISERDES_NODELAY Port List and Definitions
Type Output Output Output Input Input Input Input Input Input Input Input Input Input Width 1 (each) 1 1 1 1 (each) 1 1 1 1 1 1 1 1 Description Registered outputs. See Registered Outputs - Q1 to Q6. Carry out for data width expansion. Connect to SHIFTIN1 of slave IOB. See ISERDES Width Expansion. Carry out for data width expansion. Connect to SHIFTIN2 of slave IOB. See ISERDES Width Expansion. Invokes the Bitslip operation. See Bitslip Operation - BITSLIP. Clock enable inputs. See Clock Enable Inputs - CE1 and CE2. High-speed clock input. Clocks serial input data stream. See High-Speed Clock Input - CLK. High-speed secondary clock input. Clocks serial input data stream. Always connect this CLK. Divided clock input. Clocks delay element, deserialized data, Bitslip submodule, and CE unit. See Divided Clock Input - CLKDIV. Serial input data from IOB. See Serial Input Data from IOB - D. High-speed clock input for memory applications. See High-Speed Clock for Strobe-Based Memory Interfaces - OCLK. Carry input for data width expansion. Connect to SHIFTOUT1 of master IOB. See ISERDES Width Expansion. Carry input for data width expansion. Connect to SHIFTOUT2 of master IOB. See ISERDES Width Expansion. Active High reset. See Reset Input - RST.
Port Name Q1 Q6 SHIFTOUT1 SHIFTOUT2 BITSLIP CE1 CE2 CLK CLKB CLKDIV D OCLK SHIFTIN1 SHIFTIN2 RST
ISERDES_NODELAY Ports
Registered Outputs - Q1 to Q6
The output ports Q1 to Q6 are the registered outputs of the ISERDES_NODELAY module. One ISERDES_NODELAY block can support up to six bits (i.e., a 1:6 deserialization). Bit widths greater than six (up to 10) can be supported. See ISERDES Width Expansion. The first data bit received appears on the highest order Q output. The bit ordering at the input of an OSERDES is the opposite of the bit ordering at the output of an ISERDES_NODELAY block, as shown in Figure 8-3. For example, the least significant bit A of the word FEDCBA is placed at the D1 input of an OSERDES, but the same bit A emerges from the ISERDES_NODELAY block at the Q6 output. In other words, D1 is the least significant input to the OSERDES, while Q6 is the least significant output of the ISERDES_NODELAY block. When width expansion is used, D1 of the master OSERDES is the least significant input, while Q4 of the slave ISERDES_NODELAY block is the least significant output.
www.xilinx.com
355
ISERDES D Q1 Q2 Q3 Q4 Q5 Q6 F E D C B A
CLKDIV_TX
CLK_TX
CLK_RX
CLKDIV_RX
UG190_8_03_100307
Figure 8-3:
ICE CE1 RST CLKDIV NUM_CE 1 CE2 RST CLKDIV D AR Q CE2R 2 2 CLKDIV X 0 1 ICE CE1 CE2R CE1R
UG190_8_04_110707
D AR
Figure 8-4:
When NUM_CE = 1, the CE2 input is not used, and the CE1 input is an active High clock enable connected directly to the input registers in the ISERDES_NODELAY. When NUM_CE = 2, the CE1 and CE2 inputs are both used, with CE1 enabling the ISERDES_NODELAY for of a CLKDIV cycle, and CE2 enabling the ISERDES_NODELAY for the other . The internal clock enable signal ICE shown in Figure 8-4 is derived from the CE1 and CE2 inputs. ICE drives the clock enable inputs of
356
www.xilinx.com
registers FF0, FF1, FF2, and FF3 shown in Figure 8-12, page 368. The remaining registers in Figure 8-13, page 369 do not have clock enable inputs. The clock enable module functions as a 2:1 serial-to-parallel converter, clocked by CLKDIV. The clock enable module is needed specifically for bidirectional memory interfaces when ISERDES_NODELAY is configured for 1:4 deserialization in DDR mode. When the attribute NUM_CE = 2, the clock enable module is enabled and both CE1 and CE2 ports are available. When NUM_CE = 1, only CE1 is available and functions as a regular clock enable.
www.xilinx.com
357
frequency domain. Therefore, RST should be driven High for a minimum of one CLKDIV cycle. When building an interface consisting of multiple ISERDES_NODELAY ports, all ISERDES_NODELAY ports in the interface must be synchronized. The internal retiming of the RST input is designed so that all ISERDES_NODELAY blocks that receive the same reset pulse come out of reset synchronized with one another. The reset timing of multiple ISERDES_NODELAY ports is shown in Figure 8-9, page 365.
ISERDES_NODELAY Attributes
Table 8-2 summarizes all the applicable ISERDES_NODELAY attributes. A detailed description of each attribute follows the table. For more information on applying these attributes in UCF, VHDL, or Verilog code, refer to the Xilinx ISE Software Manual. Table 8-2: ISERDES_NODELAY Attributes
Description Value Default Value FALSE DDR
Allows the user to use the Bitslip submodule Boolean: TRUE or FALSE or bypass it. See BITSLIP_ENABLE Attribute. Enables incoming data stream to be processed as SDR or DDR data. See DATA_RATE Attribute. Defines the width of the serial-to-parallel converter. The legal value depends on the DATA_RATE attribute (SDR or DDR). See DATA_WIDTH Attribute. Chooses the ISERDES_NODELAY use model. See INTERFACE_TYPE Attribute. Defines the number of clock enables. See NUM_CE Attribute. Defines whether the ISERDES_NODELAY module is a master or slave when using width expansion. See SERDES_MODE Attribute. String: SDR or DDR
DATA_WIDTH
Integer: 2, 3, 4, 5, 6, 7, 8, or 10. If DATA_RATE = DDR, value is limited to 4, 6, 8, or 10. If DATA_RATE = SDR, value is limited to 2, 3, 4, 5, 6, 7, or 8. String: MEMORY or NETWORKING Integer: 1 or 2 String: MASTER or SLAVE
MEMORY 2 MASTER
BITSLIP_ENABLE Attribute
The BITSLIP_ENABLE attribute enables the Bitslip submodule. The possible values are TRUE and FALSE (default). BITSLIP_ENABLE must be set to TRUE when INTERFACE_TYPE is NETWORKING and FALSE when INTERFACE_TYPE is MEMORY. When set to TRUE, the Bitslip submodule responds to the BITSLIP signal. When set to FALSE, the Bitslip submodule is bypassed. See BITSLIP Submodule.
DATA_RATE Attribute
The DATA_RATE attribute defines whether the incoming data stream is processed as single data rate (SDR) or double data rate (DDR). The allowed values for this attribute are SDR and DDR. The default value is DDR.
358
www.xilinx.com
DATA_WIDTH Attribute
The DATA_WIDTH attribute defines the parallel data output width of the serial-to-parallel converter. The possible values for this attribute depend on the INTERFACE_TYPE and DATA_RATE attributes. See Table 8-3 for recommended data widths. Table 8-3: Recommended Data Widths
DATA_RATE SDR DDR SDR DDR Recommended Data Widths 2, 3, 4, 5, 6, 7, 8 4, 6, 8, 10 None 4
INTERFACE_TYPE NETWORKING
MEMORY
When the DATA_WIDTH is set to widths larger than six, a pair of ISERDES_NODELAY must be configured into a master-slave configuration. See ISERDES Width Expansion. Width expansion is not allowed in memory mode.
INTERFACE_TYPE Attribute
The INTERFACE_TYPE attribute determines whether the ISERDES_NODELAY is configured in memory or networking mode. The allowed values for this attribute are MEMORY or NETWORKING. The default mode is MEMORY. When INTERFACE_TYPE is set to NETWORKING, the Bitslip submodule is available and the OCLK port is unused. BITSLIP_ENABLE must be set to TRUE, and the Bitslip port tied Low to disable Bitslip operation when the Bitslip module is not used in networking mode. When set to MEMORY, the Bitslip submodule is not available (BITSLIP_ENABLE must be set to FALSE), and the OCLK port can be used. Figure 8-5 illustrates the ISERDES_NODELAY internal connections when in Memory mode.
www.xilinx.com
359
Q1
FF0
ICE
FF2
ICE
FF6
Q2
FF1
ICE
FF3
ICE
FF7
CLK
Q3
FF4
FF8
Q4
FF5
OCLK CLKDIV
FF9
ug190_8_05_100307
Figure 8-5:
NUM_CE Attribute
The NUM_CE attribute defines the number of clock enables (CE1 and CE2) used. The possible values are 1 and 2 (default = 2).
SERDES_MODE Attribute
The SERDES_MODE attribute defines whether the ISERDES_NODELAY module is a master or slave when using width expansion. The possible values are MASTER and SLAVE. The default value is MASTER. See ISERDES Width Expansion.
360
www.xilinx.com
The clocking arrangement using BUFIO and BUFR is shown in Figure 8-6. The CLK and CLKDIV inputs must be nominally phase-aligned. For example, if CLK and CLKDIV in Figure 8-6 were inverted by the designer at the ISERDES inputs, then although the clocking arrangement is a legal BUFIO/BUFR configuration, the clocks would still be out of phase. No phase relationship between CLK and OCLK is expected. Calibration must be performed for reliable data transfer from CLK to OCLK domain. High-Speed Clock for Strobe-Based Memory Interfaces - OCLK gives further information about transferring data between CLK and OCLK.
X-Ref Target - Figure 8-6
ISERDES_NODELAY
CLK
CLKDIV
UG190_8_06_110807
Figure 8-6:
www.xilinx.com
361
SERDES_MODE=MASTER
Data Input
Data_internal [0:5]
ISERDES (Slave)
Q1 Q2 Q3 Q4 Q5 Q6
Data_internal [6:9]
SERDES_MODE=SLAVE
ug190_8_07_100307
Figure 8-7:
2. 3. 4. 5.
362
www.xilinx.com
ISERDES Latencies
When the ISERDES interface type is MEMORY, the latency through the OCLK stage is one CLKDIV cycle. However, the total latency through the ISERDES depends on the phase relationship between the CLK and the OCLK clock inputs. When the ISERDES interface type is NETWORKING, the latency is two CLKDIV cycles. See Figure 8-12, page 368 and Figure 8-13, page 369 for a visualization of latency in networking mode. The extra CLKDIV cycle of latency in networking mode (compared to memory mode) is due to the Bitslip submodule.
www.xilinx.com
363
Timing Characteristics
Figure 8-8 illustrates an ISERDES timing diagram for the input data to the ISERDES. The timing parameter names change for different modes (SDR/DDR). However, the names do not change when a different bus input width, including when two ISERDES are cascaded together to form 10 bits. In DDR mode, the data input (D) switches at every CLK edge (rising and falling).
X-Ref Target - Figure 8-8
1 CLK
TISCCK_CE CE TISDCK_D D
ug190_8_08_100307
Figure 8-8:
Clock Event 1
At time TISCCK_CE, before Clock Event 1, the clock enable signal becomes valid-High and the ISERDES can sample data.
Clock Event 2
At time TISDCK_D, before Clock Event 2, the input data pin (D) becomes valid and is sampled at the next positive clock edge.
364
www.xilinx.com
Clock Event 1 CLKDIV CLK ISERDES0 ISERDES1 ISERDES0 ISERDES1 ISERDES0 ISERDES1
Clock Event 2
UG190_8_09_110707
Figure 8-9:
Clock Event 2
The reset pulse is deasserted on the rising edge of CLKDIV. The difference in propagation delay between the two ISERDES causes the RST input to come out of reset on two different CLK cycles. Without internal retiming, ISERDES1 finishes reset one CLK cycle before ISERDES0 and both ISERDES are asynchronous.
Clock Event 3
The release of the reset signal at the RST input is retimed internally to CLKDIV. This synchronizes ISERDES0 and ISERDES1.
Clock Event 4
The release of the reset signal at the RST input is retimed internally to CLK.
www.xilinx.com
365
BITSLIP Submodule
All ISERDES blocks in Virtex-5 devices contain a Bitslip submodule. This submodule is used for word-alignment purposes in source-synchronous networking-type applications. Bitslip reorders the parallel data in the ISERDES block, allowing every combination of a repeating serial pattern received by the deserializer to be presented to the FPGA fabric. This repeating serial pattern is typically called a training pattern (training patterns are supported by many networking and telecom standards).
Bitslip Operation
By asserting the Bitslip pin of the ISERDES block, the incoming serial data stream is reordered at the parallel side. This operation is repeated until the training pattern is seen. The tables in Figure 8-10 illustrate the effects of a Bitslip operation in SDR and DDR mode. For illustrative purposes the data width is eight. The Bitslip operation is synchronous to CLKDIV. In SDR mode, every Bitslip operation causes the output pattern to shift left by one. In DDR mode, every Bitslip operation causes the output pattern to alternate between a shift right by one and shift left by three. In this example, on the eighth Bitslip operation, the output pattern reverts to the initial pattern. This assumes that serial data is an eight bit repeating pattern.
X-Ref Target - Figure 8-10
Bitslip Operation in SDR Mode Bitslip Operations Executed Initial 1 2 3 4 5 6 7 Output Pattern (8:1) 10010011 00100111 01001110 10011100 00111001 01110010 11100100 11001001
Bitslip Operation in DDR Mode Bitslip Operations Executed Initial 1 2 3 4 5 6 7 Output Pattern (8:1) 00100111 10010011 10011100 01001110 01110010 00111001 11001001 11100100
ug190_8_10_100307
Figure 8-10:
366
www.xilinx.com
Figure 8-11 illustrates the ISERDES configured in 1:8 SDR mode with Bitslip_ENABLE set to TRUE. Two ISERDES modules are in a master-slave configuration for a data width of eight.
X-Ref Target - Figure 8-11
IOB
SERDES_MODE=MASTER BITSLIP_ENABLE = TRUE 1001 0011
(Repeating Pattern)
1st 2nd 3th 4th 5th 6th 7th 8th Bitslip Initial Bitslip Bitslip Bitslip Bitslip Bitslip Bitslip Bitslip (Back to initial)
1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0
ISERDES (Master)
Q1 Q2 Q3 Q4 Q5 Q6 BITSLIP
SHIFTOUT1 SHIFTOUT2
SHIFTIN1
SHIFTIN2
ISERDES (Slave)
1 1
0 1
0 0
1 0
0 1
0 0
1 0
1 1
1 1
ug190_8_11_100307
Figure 8-11:
www.xilinx.com
367
1 D
C D A B C D A B C D A B C D
CLK
BITSLIP
Bitslip1
Bitslip2
CLKDIV
Q4Q1
CDAB
BCDA
ABCD
ug190_8_12_100307
Figure 8-12:
Clock Event 1
The entire first word CDAB has been sampled into the input side registers of the ISERDES. The Bitslip pin is not asserted; the word propagates through the ISERDES without any realignment.
Clock Event 2
The second word CDAB has been sampled into the input side registers of the ISERDES. The Bitslip pin is asserted, which causes the Bitslip controller to shift all bits internally by one bit to the right.
Clock Event 3
The third word CDAB has been sampled into the input side registers of the ISERDES. The Bitslip pin is asserted for a second time, which causes the Bitslip controller to shift all bits internally by three bits to the left. On this same edge of CLKDIV, the first word sampled is presented to Q1Q4 without any realignment. The actual bits from the input stream that appear at the Q1Q4 outputs during this cycle are shown in A of Figure 8-13.
368
www.xilinx.com
C D A B C D A B C D A B C D
Q1Q4 During Clock Event 4 (1st Bitslip, Rotate 1 Bit to Right) Q1Q4 During Clock Event 5 (2nd Bitslip, Rotate 3 Bits to Left)
C D A B C D A B C D A B C D
C D A B C D A B C D A B C D
ug190_c8_13_100307
Figure 8-13:
Clock Event 4
The first two bits of the fourth word CD have been sampled into the input side registers of the ISERDES. On this same edge of CLKDIV, the second word sampled is presented to Q1Q4 with one bit shifted to the right. The actual bits from the input stream that appear at the Q1Q4 outputs during this cycle are shown in B of Figure 8-13. The realigned bits on Q1Q4 are sampled into the FPGA logic on the CLKDIV domain. The total latency from when the ISERDES captures the asserted Bitslip input to when the realigned ISERDES outputs Q1Q4 are sampled by CLKDIV is two CLKDIV cycles.
Clock Event 5
The third word sampled is presented to Q1Q4 with three bits shifted to the left. The actual bits from the input stream that appear at the Q1Q4 outputs during this cycle are shown in C of Figure 8-13.
www.xilinx.com
369
T1 - T4 TCE
IOB
TQ
OQ
Output Driver
ug190_8_14_100307
370
www.xilinx.com
Table 8-5:
Input Data Width Output in SDR Input Data Width Output in DDR Mode Mode 2 3 4 5 6 7 8 4 6 8 10
OSERDES Primitive
The OSERDES primitive is shown in Figure 8-15.
X-Ref Target - Figure 8-15
OSERDES Primitive
OQ SHIFTOUT1 SHIFTOUT2
SHIFTIN1 SHIFTIN2 SR T1 T2
TQ T3 T4 TCE
ug190_8_15_100307
Figure 8-15:
OSERDES Primitive
www.xilinx.com
371
OSERDES Ports
Table 8-6 lists the available ports in the OSERDES primitive. Table 8-6: OSERDES Port List and Definitions
Type Output Output Output Output Input Input Input Input Input Input Input Input Input Input Width 1 1 1 1 1 1 1 (each) 1 1 1 1 1 1 (each) 1 Description Data path output. See Data Path Output - OQ. Carry out for data width expansion. Connect to SHIFTIN1 of master OSERDES. See OSERDES Width Expansion. Carry out for data width expansion. Connect to SHIFTIN2 of master OSERDES. See OSERDES Width Expansion. 3-state control output. See 3-state Control Output - TQ. High-speed clock input. See High-Speed Clock Input - CLK. Divided clock input. Clocks delay element, deserialized data, Bitslip submodule, and CE unit. See Divided Clock Input - CLKDIV. Parallel data inputs. See Parallel Data Inputs - D1 to D6. Output data clock enable. See Output Data Clock Enable - OCE. Reverse SR pin. Not available in the OSERDES block. Carry input for data width expansion. Connect to SHIFTOUT1 of slave OSERDES. See OSERDES Width Expansion. Carry input for data width expansion. Connect to SHIFTOUT2 of slave OSERDES. See OSERDES Width Expansion. Active High reset. Parallel 3-state inputs. See Parallel 3-state Inputs - T1 to T4. 3-state clock enable. See 3-state Signal Clock Enable - TCE.
Port Name OQ SHIFTOUT1 SHIFTOUT2 TQ CLK CLKDIV D1 D6 OCE REV SHIFTIN1 SHIFTIN2 SR T1 to T4 TCE
372
www.xilinx.com
Reset Input - SR
The reset input causes the outputs of all data flip-flops in the CLK and CLKDIV domains to be driven Low asynchronously. OSERDES circuits running in the CLK domain where timing is critical use an internal, dedicated circuit to retime the SR input to produce a reset signal synchronous to the CLK domain. Similarly, there is a dedicated circuit to retime the SR input to produce a reset signal synchronous to the CLKDIV domain. Because there are OSERDES circuits that retime the SR input, the user is only required to provide a reset pulse to the SR input that meets timing on the CLKDIV frequency domain (synchronous to CLKDIV). Therefore, SR should be driven High for a minimum of one CLKDIV cycle. When building an interface consisting of multiple OSERDES ports, all OSERDES ports must be synchronized. The internal retiming of the SR input is designed so that all OSERDES blocks that receive the same reset pulse come out of reset synchronized with one another. The reset timing of multiple OSERDES ports is shown in Figure 8-20, page 381.
www.xilinx.com
373
OSERDES Attributes
Table 8-7 lists and describes the various attributes that are available for the OSERDES primitive. The table includes the default values. Table 8-7: OSERDES Attribute Summary
Description Defines whether data (OQ) changes at every clock edge or every positive clock edge with respect to CLK. Defines whether the 3-state (TQ) changes at every clock edge, every positive clock edge with respect to clock, or is set to buffer configuration. Defines the parallel-to-serial data converter width. This value also depends on the DATA_RATE_OQ value. Value String: SDR or DDR Default Value DDR
DATA_RATE_TQ
DDR
DATA_WIDTH
Integer: 2, 3, 4, 5, 6, 7, 8, or 10. If DATA_RATE_OQ = DDR, value is limited to 4, 6, 8, or 10. If DATA_RATE_OQ = SDR, value is limited to 2, 3, 4, 5, 6, 7, or 8.
SERDES_MODE TRISTATE_WIDTH
Defines whether the OSERDES module is a String: MASTER or SLAVE master or slave when using width expansion. Defines the parallel to serial 3-state converter width. Integer: 1 or 4 If DATA_RATE_TQ = DDR, DATA_WIDTH = 4, and DATA_RATE_OQ = DDR, value is limited to 4. For all other settings of DATA_RATE_TQ, DATA_WIDTH, and DATA_RATE_OQ, value is limited to 1.
MASTER 4
DATA_RATE_OQ Attribute
The DATA_RATE_OQ attribute defines whether data is processed as single data rate (SDR) or double data rate (DDR). The allowed values for this attribute are SDR and DDR. The default value is DDR.
DATA_RATE_TQ Attribute
The DATA_RATE_TQ attribute defines whether 3-state control is to be processed as single data rate (SDR) or double data rate (DDR). The allowed values for this attribute are SDR and DDR. The default value is DDR.
374
www.xilinx.com
DATA_WIDTH Attribute
The DATA_WIDTH attribute defines the parallel data input width of the parallel-to-serial converter. The possible values for this attribute depend on the DATA_RATE_OQ attribute. When DATA_RATE_OQ is set to SDR, the possible values for the DATA_WIDTH attribute are 2, 3, 4, 5, 6, 7, and 8. When DATA_RATE_OQ is set to DDR, the possible values for the DATA_WIDTH attribute are 4, 6, 8, and 10. When the DATA_WIDTH is set to widths larger than six, a pair of OSERDES must be configured into a master-slave configuration. See OSERDES Width Expansion.
SERDES_MODE Attribute
The SERDES_MODE attribute defines whether the OSERDES module is a master or slave when using width expansion. The possible values are MASTER and SLAVE. The default value is MASTER. See OSERDES Width Expansion.
TRISTATE_WIDTH Attribute
The TRISTATE_WIDTH attribute defines the parallel 3-state input width of the 3-state control parallel-to-serial converter. The possible values for this attribute depend on the DATA_RATE_TQ attribute. When DATA_RATE_TQ is set to SDR or BUF, the TRISTATE_WIDTH attribute can only be set to 1. When DATA_RATE_TQ is set to DDR, the possible values for the TRISTATE_WIDTH attribute is 4. TRISTATE_WIDTH cannot be set to widths larger than 4. When a DATA_WIDTH is larger than four, set the TRISTATE_WIDTH to 1.
www.xilinx.com
375
Figure 8-16 illustrates a block diagram of a 10:1 DDR parallel-to-serial converter using the master and slave OSERDES modules. Ports Q3-Q6 are used for the last four bits of the parallel interface on the slave OSERDES (LSB to MSB).
X-Ref Target - Figure 8-16
SERDES_MODE = MASTER
D1 D2 D3 D4 D5 D6 OQ
Data Out
Data Inputs[0:5]
OSERDES (Master)
SHIFTIN1 SHIFTIN2
Data Inputs[6:9]
SERDES_MODE=SLAVE
ug190_8_16_100307
Figure 8-16:
Table 8-8 lists the data width availability for SDR and DDR mode. Table 8-8: OSERDES SDR/DDR Data Width Availability
2, 3, 4, 5, 6, 7, 8 4, 6, 8, 10
The slave inputs used for data widths requiring width expansion are listed in Table 8-9. Table 8-9: Slave Inputs Used for Data Width Expansion
Slave Inputs Used D3 D3D4 D3D6
Data Width 7 8 10
376
www.xilinx.com
OSERDES Latencies
The input to output latencies of OSERDES blocks depend on the DATA_RATE and DATA_WIDTH attributes. Latency is defined as a period of time between the following two events: (a) when the rising edge of CLKDIV clocks the data at inputs D1D6 into the OSERDES, and (b) when the first bit of the serial stream appears at OQ. Table 8-10 summarizes the various OSERDES latency values. Table 8-10: OSERDES Latencies
DATA_WIDTH 2:1 3:1 4:1 SDR 5:1 6:1 7:1 8:1 4:1 DDR 6:1 8:1 10:1 1 CLK cycle 3 CLK cycles 4 CLK cycles 4 CLK cycles 5 CLK cycles 5 CLK cycles 6 CLK cycles 1 CLK cycle 3 CLK cycles 4 CLK cycles 4 CLK cycles Latency
DATA_RATE
Symbol Setup/Hold TOSDCK_D/TOSCKD_D TOSDCK_T/TOSCKD_T TOSDCK_T/TOSCKD_T TOSCCK_OCE/TOSCKC_OCE TOSCCK_TCE/TOSCKC_TCE Sequential Delays TOSCKO_OQ TOSCKO_TQ
D input Setup/Hold with respect to CLKDIV T input Setup/Hold with respect to CLK T input Setup/Hold with respect to CLKDIV OCE input Setup/Hold with respect to CLK TCE input Setup/Hold with respect to CLK
www.xilinx.com
377
Table 8-11:
Clock Event 2
Clock Event 3
A B A
C D B C
E F D E F
UG190_8_17_100307
Figure 8-17:
Clock Event 1
On the rising edge of CLKDIV, the word AB is driven from the FPGA logic to the D1 and D2 inputs of the OSERDES (after some propagation delay).
Clock Event 2
On the rising edge of CLKDIV, the word AB is sampled into the OSERDES from the D1 and D2 inputs.
Clock Event 3
The data bit A appears at OQ one CLK cycle after AB is sampled into the OSERDES. This latency is consistent with the Table 8-10 listing of a 2:1 SDR mode OSERDES latency of one CLK cycle.
378
www.xilinx.com
Clock Event 1 Master.D1 Master.D2 Master.D3 Master.D4 Master.D5 Master.D6 Slave.D3 Slave.D4 CLKDIV CLK OQ A B
Clock Event 2 I J
Clock Event 3
Clock Event 4
C D E F G H
K L M N O P
A B C D E F G H I
UG190_8_18_100307
Figure 8-18:
Clock Event 1
On the rising edge of CLKDIV, the word ABCDEFGH is driven from the FPGA logic to the D1D6 inputs of the master OSERDES and D3D4 of the slave OSERDES (after some propagation delay).
Clock Event 2
On the rising edge of CLKDIV, the word ABCDEFGH is sampled into the master and slave OSERDES from the D1D6 and D3D4 inputs, respectively.
Clock Event 3
The data bit A appears at OQ four CLK cycles after ABCDEFGH is sampled into the OSERDES. This latency is consistent with the Table 8-10 listing of a 8:1 DDR mode OSERDES latency of four CLK cycles.
www.xilinx.com
379
The second word IJKLMNOP is sampled into the master and slave OSERDES from the D1 D6 and D3D4 inputs, respectively.
Clock Event 4
Between Clock Events 3 and 4, the entire word ABCDEFGH is transmitted serially on OQ, a total of eight bits transmitted in one CLKDIV cycle. The data bit I appears at OQ four CLK cycles after IJKLMNOP is sampled into the OSERDES. This latency is consistent with the Table 8-10 listing of a 8:1 DDR mode OSERDES latency of four CLK cycles.
Clock Event 2 I J K L
1 1 1 1
A B C D E F G H I J K L
E F
H
UG190_8_19_100307
Figure 8-19:
380
www.xilinx.com
Clock Event 1
T1, T2, and T4 are driven Low to release the 3-state condition. The serialization paths of T1T4 and D1D4 in the OSERDES are identical (including latency), such that the bits EFGH are always aligned with the 0010 presented at the T1T4 pins during Clock Event 1.
Clock Event 2
The data bit E appears at OQ one CLK cycle after EFGH is sampled into the OSERDES. This latency is consistent with the Table 8-10 listing of a 4:1 DDR mode OSERDES latency of one CLK cycle. The 3-state bit 0 at T1 during Clock Event 1 appears at TQ one CLK cycle after 0010 is sampled into the OSERDES 3-state block. This latency is consistent with the Table 8-10 listing of a 4:1 DDR mode OSERDES latency of one CLK cycle.
Clock Event 1 CLKDIV CLK OSERDES0 Signal at SR Input OSERDES1 OSERDES0 OSERDES1 OSERDES0 OSERDES1
Clock Event 2
UG070_c8_20_100307
Figure 8-20:
www.xilinx.com
381
Clock Event 2
The reset pulse is deasserted on the rising edge of CLKDIV. The difference in propagation delay between the two OSERDES causes the SR input to come out of reset on two different CLK cycles. Without internal retiming, OSERDES1 finishes reset one CLK cycle before OSERDES0 and both OSERDES are asynchronous.
Clock Event 3
The release of the reset signal at the SR input is retimed internally to CLKDIV. This synchronizes OSERDES0 and OSERDES1.
Clock Event 4
The release of the reset signal at the SR input is retimed internally to CLK.
382
www.xilinx.com
Index
A
asynchronous clocking 119 distributed RAM 181 global set/reset 127 mux 36 set/reset in register or latch 180 slice description 174 SLICEL 174 SLICEM 174 CLK2X 55 CLKDV 55 CLKFB 52 CLKFX 55 clock capable I/O 40 clock forwarding 347 clock regions 39 clock tree 38 clocking wizard 83 clocks global clock buffers 26, 27 I/O clock buffer 41 regional clock buffers 40, 42 regions 38 resources 29 CMT 47 allocation in device 48 combinatorial input path 319 configuration DCM 65 See IDELAY 325 Differential 250 HSTL Class II 256 HSTL Class II (1.8V) 264, 267 LVPECL 297 SSTL Class II (1.8V) 286, 291 SSTL2 Class II (2.5V) 277, 281 differential termination 294 DIFF_TERM 237, 294
B
Bitslip 366 See ISERDES 353 guidelines for use 367 operation 366 timing 368 block RAM defined 115 asynchronous clocking 119 ECC 158 Primitive 161 ECC Port 162 operating modes NO_CHANGE 118 READ_FIRST 118 WRITE_FIRST 118 ports 125 synchronous clocking 119 BLVDS 296 BUFG 31 BUFGCE 32 BUFGCTRL 28 BUFGMUX 33 BUFGMUX_CTRL 35 with CE 37 BUFIO 41 BUFR 42
E
Error Correction Code (ECC) 158
F
FIFO 139 attributes 147 cascading 157 FWFT mode 144 operating modes 144 ports 143 primitive 142 standard mode 144 status flags 145 timing parameters 149
D
DCI 220 defined 220 DCLK 53 DCM 48 allocation in device 48 attributes 58, 61 clock deskew 48, 63 clocking wizard 83 configuration 65 DCM_ADV 51 DCM_BASE 50 design guidelines 63 deskew 67 dynamic reconfiguration 49, 73 frequency synthesis 49, 67 output ports 54 phase shifting 49, 68, 85 ports 51 timing models 84 DDR IDDR 319 delay element
G
GCLK 38 global clocks clock buffers 25, 26 clock I/O inputs 26 GSR defined 127 GTL 248 defined 248 GTL_DCI 248 GTLP 249 GTLP_DCI 249
C
CLB 173 array size by device 177 distributed RAM 180 maximum distributed RAM 177 number of flip-flops 177 number of LUTs by device 177 number of shift registers 177 register/latch configuration 179
H
HSTL 250 defined 250 class I 252 class I (1.8V) 263, 274 class II 254
www.xilinx.com
383
class II (1.8V) 265 class III 259 class III (1.8V) 270 class IV 260 class IV (1.8V) 271 CSE differential HSTL class II 265 Differential HSTL class II 264, 267 differential HSTL class II 256 HyperTransport HT 296
primitive 338 REFCLK 337, 343 ILOGIC 217, 318 IDDR 319 SR 318 switching characteristics 324 timing 322 IOB 217 defined 218 IOBUF 234 PULLUP/PULLDOWN/KEEPER
M
multirate FIFO 115, 139
N
NO_CHANGE mode 118
O
OBUF 233 OBUFDS 235 OBUFT 234 PULLUP/PULLDOWN/KEEPER
I
I/O standards 218 bank rules 298 compatibility 299 differential I/O 218 single-ended I/O 218 I/O tile 217 ILOGIC 217 IOB 217 OLOGIC 217 IBUF 233 PULLUP/PULLDOWN/KEEPER
237
IOBUFDS 236 IODELAY 325 DATAIN 327 DATAOUT 327 IDATAIN 327 ODATAIN 327 ports 327 ISERDES 353 defined 353 attributes 358 bitslip 353, 356, 367 BITSLIP_ENABLE attribute
237
OBUFTDS 235 ODDR 345 clock forwarding 347 OPPOSITE_EDGE mode 346 ports 347 primitive 347 SAME_EDGE mode 346 OLOGIC 217, 344 timing 348 OSERDES 370 parallel-to-serial converter 370 switching characteristics 377 timing 377, 378
358
IDELAY IDELAYCTRL 337 ports 355, 372 primitive 354 serial-to-parallel converter 353, 362 switching characteristics 363 timing models 363 width expansion 361
P
parallel-to-serial converter 370 DDR 370 SDR 370 PCI 247 PFDM 312 PLL allocation in device 48 PSCLK 52
L
LDT See HyperTransport 296 LVCMOS 241 defined 241 LVDCI 243 defined 243 LVDCI_DV2 244 source termination 303 LVDS 294 defined 294 LVDS_25_DCI 295 LVPECL 297 defined 297 LVTTL 239 defined 239
R
READ_FIRST mode 118 REFCLK 338, 343 regional clock buffers 25, 40 regional clocks clock buffers 42 clock nets 46 REV 318 RSDS 296
384
www.xilinx.com
S
SelectIO IBUF 233 IBUFDS 234 IBUFDS_DIFF_OUT 235 IBUFG 233 IBUFGDS 234 IOBUF 234 IOBUFDS 236 OBUF 233 OBUFDS 235 OBUFT 234 OBUFTDS 235 Simultaneous Switching Output (SSO)
305
Slew Rate SLEW 237 SRHIGH 178 SRLOW 178 SSTL 274 Differential SSTL Class II (1.8V) 286,
291
Differential SSTL2 Class II (2.5V)
277, 281
SSTL18 Class I (1.8V) 285 SSTL18 Class II (1.8V) 288 SSTL2 Class I (2.5V) 276 SSTL2 Class II (2.5V) 279
W
WRITE_FIRST mode 118
www.xilinx.com
385