Spartan-3E FPGA Family: Functional Description
DS312 (v4.1) July 19, 2013
Product Specification
14
Double-Data-Rate Transmission
Double-Data-Rate (DDR) transmission describes the
technique of synchronizing signals to both the rising and
falling edges of the clock signal. Spartan-3E devices use
register pairs in all three IOB paths to perform DDR
operations.
The pair of storage elements on the IOB’s Output path
(OFF1 and OFF2), used as registers, combine with a
special multiplexer to form a DDR D-type flip-flop (ODDR2).
This primitive permits DDR transmission where output data
bits are synchronized to both the rising and falling edges of
a clock. DDR operation requires two clock signals (usually
50% duty cycle), one the inverted form of the other. These
signals trigger the two registers in alternating fashion, as
shown in
Figure 7. The Digital Clock Manager (DCM)
generates the two clock signals by mirroring an incoming
signal, and then shifting it 180 degrees. This approach
ensures minimal skew between the two signals.
Alternatively, the inverter inside the IOB can be used to
invert the clock signal, thus only using one clock line and
both rising and falling edges of that clock line as the two
clocks for the DDR flip-flops.
The storage-element pair on the Three-State path (TFF1
and TFF2) also can be combined with a local multiplexer to
form a DDR primitive. This permits synchronizing the output
enable to both the rising and falling edges of a clock. This
DDR operation is realized in the same way as for the output
path.
The storage-element pair on the input path (IFF1 and IFF2)
allows an I/O to receive a DDR signal. An incoming DDR
clock signal triggers one register, and the inverted clock
signal triggers the other register. The registers take turns
capturing bits of the incoming DDR data signal. The
primitive to allow this functionality is called IDDR2.
Aside from high bandwidth data transfers, DDR outputs also
can be used to reproduce, or mirror, a clock signal on the
output. This approach is used to transmit clock and data
signals together (source synchronously). A similar
approach is used to reproduce a clock signal at multiple
outputs. The advantage for both approaches is that skew
across the outputs is minimal.
Register Cascade Feature
In the Spartan-3E family, one of the IOBs in a differential
pair can cascade its input storage elements with those in
the other IOB as part of a differential pair. This is intended to
make DDR operation at high speed much simpler to
implement. The new DDR connections that are available
are shown in
Figure 5 (dashed lines), and are only available
for routing between IOBs and are not accessible to the
FPGA fabric. Note that this feature is only available when
using the differential I/O standards LVDS, RSDS, and
MINI_LVDS.
IDDR2
As a DDR input pair, the master IOB registers incoming
data on the rising edge of ICLK1 (= D1) and the rising edge
of ICLK2 (= D2), which is typically the same as the falling
edge of ICLK1. This data is then transferred into the FPGA
fabric. At some point, both signals must be brought into the
same clock domain, typically ICLK1. This can be difficult at
high frequencies because the available time is only one half
of a clock cycle assuming a 50% duty cycle. See
Figure 8for a graphical illustration of this function.
X-Ref Target - Figure 7
Figure 7: Two Methods for Clocking the DDR Register
DS312-2_20_021105
D1
CLK1
DDR MUX
DCM
Q1
FDDR
D2
CLK2
Q2
180 0
Q
D1
CLK1
DDR MUX
DCM
Q1
FDDR
D2
CLK2
Q2
0
Q