QPro Virtex-E 1.8V QML High-Reliability FPGAs R
Module 2 of 4 www.xilinx.com DS098-2 (v1.1) July 29, 2004
48 1-800-255-7778 Advance Product Specification
Creating LVDS Output 3-State Buffers
LVDS output 3-state buffers can be placed in a wide number
of IOB locations. The exact locations are dependent on the
package used. The Virtex-E package information lists the
possible locations as IO_L#P for the P-side and IO_L#N for
the N-side, where # is the pair number.
HDL Instantiation
Both output 3-state buffers are required to be instantiated in
the design and placed on the correct IO_L#P and IO_L#N
locations. The IOB must have the same net source the fol-
lowing pins, clock (C), set/reset (SR), 3-state (T), 3-state
clock enable (TCE), output (O), output clock enable (OCE).
In addition, the output (O) pins must be inverted with
respect to each other, and if output registers are used, the
INIT states must be opposite values (one High and one
Low). If 3-state registers are used, they must be initialized to
the same state. Failure to follow these rules leads to DRC
errors in the software.
VHDL Instantiation
data0_p: OBUFT_LVDS port map
(I=>data_int(0), T=>data_tri,
O=>data_p(0));
data0_inv: INV port map
(I=>data_int(0), O=>data_n_int(0));
data0_n: OBUFT_LVDS port map
(I=>data_n_int(0), T=>data_tri,
O=>data_n(0));
Verilog Instantiation
OBUFT_LVDS data0_p (.I(data_int[0]),
.T(data_tri), .O(data_p[0]));
INV data0_inv (.I(data_int[0],
.O(data_n_int[0]);
OBUFT_LVDS data0_n (.I(data_n_int[0]),
.T(data_tri), .O(data_n[0]));
Location Constraints
All LVDS buffers must be explicitly placed on a device. For
the output buffers this can be done with the following con-
straint in the .ucf or .ncf file.
NET data_p<0> LOC = D28; # IO_L0P
NET data_n<0> LOC = B29; # IO_L0N
Synchronous vs. Asynchronous 3-State Outputs
If the outputs are synchronous (registered in the IOB), then
any IO_L#P|N pair can be used. If the outputs are asynchro-
nous (no output register), then they must use one of the
pairs that are part of the same IOB group at the end of a
ROW or COLUMN in the device. This applies for either the
3-state pin or the data out pin.
LVDS pairs that can be used as asynchronous outputs are
listed in the Virtex-E pinout tables. Some pairs are marked
as "asynchronous capable" for all devices in that package,
and others are marked as available only for that device in
the package. If the device size might be changed at some
point in the product lifetime, then only the common pairs for
all packages should be used.
Adding Output and 3-State Registers
All LVDS buffers can have an output register in the IOB. The
output registers must be in both the P-side and N-side IOBs.
All the normal IOB register options are available (FD, FDE,
FDC, FDCE, FDP, FDPE, FDR, FDRE, FDS, FDSE, LD,
LDE, LDC, LDCE, LDP, LDPE). The register elements can
be inferred or explicitly instantiated in the HDL code.
Special care must be taken to insure that the D pins of the
registers are inverted and that the INIT states of the regis-
ters are opposite. The 3-state (T), 3-state clock enable
(CE), clock pin (C), output clock enable (CE) and set/reset
(CLR/PRE or S/R) pins must connect to the same source.
Failure to do this leads to a DRC error in the software.
Tabl e 4 3 : Output Library Macros
Name Inputs Outputs
OBUFDS_FD_LVDS D, C O, OB
OBUFDS_FDE_LVDS DD, CE, C O, OB
OBUFDS_FDC_LVDS D, C, CLR O, OB
OBUFDS_FDCE_LVDS D, CE, C, CLR O, OB
OBUFDS_FDP_LVDS D, C, PRE O, OB
OBUFDS_FDPE_LVDS D, CE, C, PRE O, OB
OBUFDS_FDR_LVDS D, C, R O, OB
OBUFDS_FDRE_LVDS D, CE, C, R O, OB
OBUFDS_FDS_LVDS D, C, S O, OB
OBUFDS_FDSE_LVDS D, CE, C, S O, OB
OBUFDS_LD_LVDS D, G O, OB
OBUFDS_LDE_LVDS D, GE, G O, OB
OBUFDS_LDC_LVDS D, G, CLR O, OB
OBUFDS_LDCE_LVDS D, GE, G, CLR O, OB
OBUFDS_LDP_LVDS D, G, PRE O, OB
OBUFDS_LDPE_LVDS D, GE, G, PRE O, OB