Using Differential IOLVDSSub LVDSini CE40 Devices
Using Differential IOLVDSSub LVDSini CE40 Devices
Using Differential IOLVDSSub LVDSini CE40 Devices
(LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
January 2015 Technical Note TN1253
Introduction
Differential I/O standards are popular in a variety of consumer applications, especially those that require high-
speed data transfers such as graphic display drivers and camera interfaces. In these systems, multiple signals are
typically combined onto a smaller number of time-division-multiplexed high-speed, differential serial channels.
Differential signals require two Programmable I/O (PIO) pins, working as a pair or a channel, as shown in Figure 1.
One side of the pair represents the true polarity of the signal while the other side of the pair represents the opposite
polarity. The resulting logic value is the difference between the two sides of the signal pair.
RT
100
RP
RS VOD
VICM DPxxA
VOCM
GND
The key electrical parameters are the common mode voltage and the differential voltage. For iCE40™ applications,
the common mode voltage is essentially half the I/O Bank supply voltage. The differential voltage depends on the
values of the external compensation resistors, discussed in LVDS and Sub-LVDS Termination.
Differential signaling provides many advantages. In the examples discussed here, all the differential I/O standards
have reduced voltage swing, which allows faster switching speeds and potentially higher bandwidth. Reduced volt-
age swings also mean less dynamic power consumption and reduced electromagnetic interference (EMI).
Differential switching provides improved noise immunity and reduces duty-cycle distortion caused the differ-
ences in rise- and fall-time by the output driver.
The higher potential switching speeds of differential I/O allows data to be multiplexed onto a reduced number of
wires at a much higher data rate per line. The reduced number of wires reduces system cost and in some cases
simplifies the system design. The internal phase-locked loop (PLL) available in iCE40 FPGAs provides convenient
on-chip clock multiplication or division to support such applications.
Differential Outputs
For some differential I/O standards, such as LVDS, the output driver is actually a current source. On iCE40 FPGAs,
however, differential outputs are constructed using a pair of single-ended PIO pins as shown in Figure 3, and an
external resistor network consisting of three resistors. Because differential outputs are built from two single-ended
LVCMOS outputs, differential outputs are available in any I/O bank.
The two FPGA outputs must be part of the same I/O tile as indicated in the iCE40 data sheet. The pair choice also
depends on the chosen device package as not all I/O tile pairs are bonded out in all packages. Consult the package
pinout sections of the iCE40 device data sheets for additional information.
© 2015 Lattice Semiconductor Corp. All Lattice trademarks, registered trademarks, patents, and disclaimers are as listed at www.latticesemi.com/legal. All other brand
or product names are trademarks or registered trademarks of their respective holders. The specifications and information herein are subject to change without notice.
www.latticesemi.com 1 TN1253_1.5
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
Each differential I/O output pair requires a three-resistor termination network to adjust output characteristics to
match those for the specific differential I/O standard. The output characteristics depend on the values of the parallel
resistor (RP) and series resistors (RS). These resistors should be surface mounted as close as possible to the
FPGA output pins.
1 0 1 0
2
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
Differential Inputs
Differential inputs are only supported in I/O Bank 3. The maximum number of differential input pairs per device is
shown in Table 1 but the actual number available depends on the specific package used.
Differential inputs require specific PIO pin pairs as listed in the iCE40 data sheet. Each differential input pair con-
sists of one pin labeled DPxxA and another labeled DPxxB, where “xx” represents the differential pair number. Both
pins must be in the same differential pair.
Connect the positive or true polarity side of the differential pair to the DPxxA input and the negative or complemen-
tary side of the pair to the DPxxB input. If it is easier to route the differential pair, the input pins can be swapped,
which produces an inverted input value. The inverted input value can subsequently be inverted by logic within the
FPGA.
An input termination resistor must be connected between the DPxxA and DPxxB pins to generate the differential
signal. The resistor’s value must be twice the trace impedance, as described in the following section.
Typically, the resulting signal pair is routed on the printed circuit board (PCB) using controlled impedance and delay
matching.
Similarly, iCE40 LVDS and Sub-VLDS outputs require an external resistor network, consisting of two series resis-
tors, RS, and a parallel resistor, RP. This resistor network adjusts the FPGA’s output driver to provide the necessary
current and voltage characteristic s required by the specification.
The signals are routed with matched trace impedance, Z0, on the printed circuit board, typically with 50 imped-
ance.
RP
RS
50
DPxxA
Single I/O tile
The resistor values for the compensation network are described below. These equations are also provided in the
Differential I/O spreadsheet. The variables are defined and described in Table 2.
3
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
This technical note includes a companion spreadsheet, available for download from the Lattice website and shown
in Figure 4, to calculate resistor values for non-standard conditions. The values in Figure 4 are the default condi-
tions for the LVDS I/O standard. For other standards, simply modify the VCCIO voltage, the differential output volt-
age, VOD, and the characteristic impedance of the printed circuit board traces, Z0.
4
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
D irections: Enter the values for VCCIO, VOD, and Z0. The resulting resistor values appear under RS, RP, and RT. The VOCM voltage is aslo calculated.
RT
RP VOD VDIFF
RS
Z0
VOCM
GND
1.) The RS and RP resistors should be surface mounted as close to the iCE40 mobileFPGA output balls/pins as possible.
2.) The termination resistor, RT, should be as close to the recieving device's differential inputs as possible.
3.) The actual differential voltage, VDIFF, may vary slightly from differential output voltage due to rounding of resistor values.
The spreadsheet automatically calculates the common mode output voltage, VOCM, which is half of the VCCIO sup-
ply voltage. The spreadsheet also automatically calculates the values for the resistor network.
Finally, the spreadsheet also calculates the current draw through the resistor network and for the termination resis-
tor. The spreadsheet rounds the resistor values to the nearest 10 . Consequently, the spreadsheet also calculates
the actual differential voltage based on the specified resistor values.
Clock
Driver GBUF7
DP##A
5
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
To maintain constant differential impedance along the length, maintain uniform trace width and spacing, including
good symmetry between the two lines.
For differential outputs, place the surface-mounted RP and RS resistors as close to the package balls as possible.
Similarly, place the 100 termination resistor, RT, as close as possible to the differential input pair.
W W
T
H
H T
H
87 5.98H 60 1.9 ( 2H + T)
Z 0 = --------------------------- ln ----------------------- Z 0 = --------- ln -------------------------------
εr + 1.41 0.8W + T ε ( 0.8W + T)
r
Edge-Coupled Edge-Coupled
S S
H H
S S
– 0.96 x ---- – 2.9 x ----
H H
Z diff = 2 x Z 0 x 1 – 0.48 x e Z diff = 2 x Z 0 x 1 – 0.347 x e
Typical PC board trace impedance is Z0 = 50 Ohms. For a single-ended microstrip, the trace impedance is calcu-
lated by using the following equation:
Because the coupling of two traces can lower the effective impedance, use 60 design rules to achieve a differen-
tial impedance of approximately 100 ohms.
6
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
Common-mode noise degrades the receiver’s eye diagram, reduces signal integrity, and creates crosstalk between
neighboring signals on the board. To minimize reflections due to unmatched trace lengths, consider the following
guidelines:
• Match the length of each signal within the differential signal pair to within 20 mils.
• Minimize turns and vias or feed-throughs. Route differential pairs as straight as possible from point-to-point. Do
not use 90-degree turns when routing differential pairs. Instead, use 45-degree bevels or rounded curves.
• Minimize vias on or near differential trace lines as these may create additional impedance discontinuities that will
increase reflections at the receiver. If vias are required, place them as close to the receiver as possible.
• Use controlled impedance PCB traces. That is, control trace spacing, width, and thickness using stripline or
microstrip layout techniques.
Common-mode noise rejection is another advantage of differential signaling. The receiver ignores any noise that
couples equally on both sides of the differential signal, as shown in Figure 8.
noise
noise
noise
• Match edge rates and signal skew between differential signals as closely as possible. Different signal rise and fall
times and skew between signal pairs create common-mode noise, which generates EMI noise.
• Maintain spacing between differential signal pairs that is less than twice the PCB trace width.
7
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
C:\SbtTools\doc\SBT_ICE_Technology_Library.pdf
The SB_IO and SB_GB_IO primitives also require specific parameter settings. Differential inputs always require
that IO_STANDARD be set to SB_LVDS_INPUT. Differential outputs typically require that the IO_STANDARD
parameter be set to SB_LVCMOS.
SB_IO Primitive
Table 4 lists the signal ports for the SB_IO primitive, which describes one of the Programmable I/O (PIO) pins on an
iCE40 FPGA. The table also shows the signal direction for each port, relative to the PIO pin (the SB_IO primitive).
These same signals also appear on the SB_GB_IO primitive, which describes a global buffer input.
Table 4. Port Names, Signal Direction, and Description for SB_IO (SB_GB_IO) Primitive
Port Name Direction Description
PACKAGE_PIN I/O Connection to top-level input, output, or bidirectional signal port.
iCEgate latch input. When High, hold the last pad value. Used for power reduction in
some PIN_TYPE modes. There is one control input per I/O Bank.
LATCH_INPUT_VALUE Input
0 = Input data flows freely
1 = Last data value on pad held constant to save power
Clock enable input, shared connection to all flip-flops within the SB_IO primitive. If this
port is left unconnected, automatically tied High.
CLOCK_ENABLE Input
0 = Flip-flops hold their current value
1 = Flip-flops accept new data on the active clock edge
INPUT_CLOCK Input Clock for all input flip-flops. If this port is left unconnected, it is automatically tied Low.
OUTPUT_CLOCK Input Clock for all output flip-flops. If this port is left unconnected, it is automatically tied Low.
Enables the output buffer.
OUTPUT_ENABLE Input 0 = Output disabled, pad is high-impedance (Hi-Z)
1 = Output enabled, actively driving
Data output. For DDR output modes, this is the value clocked out on the rising edge of
D_OUT_0 Input
the OUTPUT_CLOCK.
Data output used in DDR output modes. This is the value clocked out on the falling
D_OUT_1 Input
edge of the OUTPUT_CLOCK.
Data input. For DDR input modes, this is the value clocked into the device on the rising
D_IN_0 Output
edge of the INPUT_CLOCK.
For DDR input modes, this is the value clocked into the device on the falling edge of
D_IN_1 Output
the INPUT_CLOCK.
8
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
SB_GB_IO Primitive
Global buffer inputs provide a direct connection from a PIO pin to an associated global buffer. This connection can
be instantiated using an SB_GB_IO primitive. An SB_GB_IO primitive has all the ports for an SB_IO primitive,
shown in Table 4, plus the additional connection shown in Table 5. Global Buffer Input 7 (GBIN7) is the only one
that supports differential clock inputs. See Differential Clock Input for more information.
PIN_TYPE Parameter
The PIN_TYPE parameter defines the structure and the functionality of any instantiated SB_IO primitive.
PIN_TYPE is a six-bit binary value. The upper four bits, PIN_TYPE[5:2], define the output structure while the lower
two bits, PIN_TYPE[1:0] define the input structure. Both fields are required, but operate independently.
Global buffer inputs, defined using the SB_GB_IO primitive, are also full-featured PIO pins. However, if only the
GLOBAL_BUFFER_OUTPUT is connected on the SB_GB_IO primitive, then the PIN_TYPE parameter has no real
effect.
PIN_OUTPUT
PAD
0 1 1 0
D_OUT_0 PACKAGE_PIN
9
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
PIN_OUTPUT_REGISTERED_ENABLE
OUTPUT_ENABLE
1=Output
0=Hi-Z PAD
D_OUT_0 D Q PACKAGE_PIN 1 0 0 1
CLOCK_ENABLE ENA
1=Enabled
0=Hold value
OUTPUT_CLK
PIN_OUTPUT_ENABLE_REGISTERED
Registered Outputs OUTPUT_ENABLE
1=Output D Q
0=Hi-Z
CLOCK_ENABLE ENA
1=Enabled 1 1 1 0
0=Hold value
OUTPUT_CLK
PAD
D_OUT_0 PACKAGE_PIN
PIN_OUTPUT_REGISTERED_ENABLE_REGISTERED
OUTPUT_ENABLE D Q
1=Output
0=Hi-Z ENA
PAD 1 1 0 1
D_OUT_0 D Q PACKAGE_PIN
CLOCK_ENABLE ENA
1=Enabled
0=Hold value
OUTPUT_CLK
10
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
D_OUT_0 D Q DDR
MUX
ENA
PAD
PACKAGE_PIN
DDR
0 1 0 0
D_OUT_1 D Q
CLOCK_ENABLE ENA
1=Enabled
0=Hold value DDR
OUTPUT_CLK
PIN_OUTPUT_DDR_ENABLE
OUTPUT_ENABLE
1=Output
0=Hi-Z
D_OUT_0 D Q DDR
MUX
ENA
PAD
PACKAGE_PIN
DDR 1 0 0 0
Double Data Rage (DDR) D_OUT_1 D Q
Output
CLOCK_ENABLE ENA
1=Enabled
0=Hold value DDR
OUTPUT_CLK
PIN_OUTPUT_DDR_ENABLE_REGISTERED
OUTPUT_ENABLE D Q
1=Output
0=Hi-Z ENA
D_OUT_0 D Q DDR
MUX
PAD
ENA 1 1 0 0
PACKAGE_PIN
DDR
D_OUT_1 D Q
CLOCK_ENABLE ENA
1=Enabled
0=Hold value DDR
OUTPUT_CLK
11
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
PIN_OUTPUT_REGISTERED_ENABLE_INVERTED
OUTPUT_ENABLE
1=Output
0=Hi-Z PAD
D_OUT_0 D Q PACKAGE_PIN 1 0 1 1
INV
CLOCK_ENABLE ENA
Registered Output, Inverted 1=Enabled
0=Hold value
OUTPUT_CLK
PIN_OUTPUT_REGISTERED_ENABLE_REGISTERED_INVERTED
OUTPUT_ENABLE D Q
1=Output
0=Hi-Z ENA
PAD 1 1 1 1
D_OUT_0 D Q PACKAGE_PIN
INV
CLOCK_ENABLE ENA
1=Enabled
0=Hold value
OUTPUT_CLK
12
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
PIN_INPUT_REGISTERED
PAD
D_IN_0 Q D PACKAGE_PIN
Registered CLOCK_ENABLE ENA 0 0
1=Enabled
0=Hold value
INPUT_CLK
PIN_INPUT_DDR
PAD
D_IN_0 Q D PACKAGE_PIN
ENA
CLOCK_ENABLE ENA
1=Enabled
0=Hold value DDR
INPUT_CLK
PIN_INPUT_LATCH
LATCH_INPUT_VALUE
1=Latch current value
0=Flow through iCEgate PAD 1 1
D_IN_0 Q D PACKAGE_PIN
LE
PIN_INPUT_REGISTERED_LATCH
iCEgate Low-Power Latch
LATCH_INPUT_VALUE
1=Latch current value
0=Flow through iCEgate PAD
D_IN_0 Q D Q D PACKAGE_PIN 1 0
CLOCK_ENABLE ENA LE
1=Enabled
0=Hold value
INPUT_CLK
IO_STANDARD Parameter
Differential inputs or outputs require specific settings for the IO_STANDARD parameter, as summarized in Table 8.
Regardless of actual electrical requirements (LVDS, Sub-LVDS), the IO_STANDARD parameter on differential
inputs must be set to SB_LVDS_INPUT. Again, differential inputs are only available in I/O bank 3. For differential
outputs, set IO_STANDARD to SB_LVCMOS. Differential outputs are available in I/O banks 0, 1, 2, or 3.
13
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
NEG_TRIGGER Parameter
The optional NEG_TRIGGER parameter, when set to ‘1’, inverts the clock polarity within the PIO pin.
The design example shown in Figure 9 uses the DDR flip-flops embedded in every PIO pin.
Set the IO_STANDARD parameter to “SB_LVDS_INPUT”. Doing so also causes the iCEcube2 software to reserve
a second pin for the other side of the differential input pair.
An external 100 termination resistor must be connected between the two inputs. The resistor must be physically
placed as close as possible to the two package balls.
14
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
The PIN_TYPE for this primitive may be different, depending on whether only the global buffer input is used, or if
the data input paths are used, or both. The example shown here is for a dedicated differential clock input.
Verilog
// Differential clock input example: Verilog
// IMPORTANT: The PIN_TYPE is different for a regular LVDS input used as a clock.
// This example is specifically for the differential clock input.
defparam differential_clock_input.PIN_TYPE = 6'b000000 ; // {NO_OUTPUT, PIN_INPUT_REGISTERED}
defparam differential_clock_input.IO_STANDARD = "SB_LVDS_INPUT" ;
SB_GB_IO differential_clock_input (
.PACKAGE_PIN(diff_clock_input),
.LATCH_INPUT_VALUE ( ),
.CLOCK_ENABLE ( ),
.INPUT_CLK ( ),
.OUTPUT_CLK ( ),
.OUTPUT_ENABLE ( ),
.D_OUT_0 ( ),
.D_OUT_1 ( ),
.D_IN_0 ( ),
.D_IN_1 ( ),
.GLOBAL_BUFFER_OUTPUT(global_clock) // Global buffer output
);
VHDL
Under development.
Differential Input
The following Verilog and VHDL code snippets demonstrate how to instantiate a differential input using an SB_ IO
primitive. Differential inputs are always implemented in I/O Bank 3. In this example, shown in Figure 9, the differen-
tial input also connects to Double Data Rate (DDR) input flip-flops. There is no output connected. Consequently,
set the PIN_TYPE parameter to the binary value “000000”, which defines no output (see Table 6) and DDR input
(see Table 7).
Set the IO_STANDARD parameter to “SB_LVDS_INPUT”. Doing so also causes the iCEcube2 software to reserve
a second pin for the other side of the differential input pair.
An external 100 termination resistor must be connected between the two inputs. The resistor must be physically
placed as close as possible to the two package balls.
Verilog
// Differential input, DDR data
defparam differential_input.PIN_TYPE = 6'b000000 ; // {NO_OUTPUT, PIN_INPUT_DDR}
defparam differential_input.IO_STANDARD = "SB_LVDS_INPUT" ;
SB_IO differential_input (
.PACKAGE_PIN(diff_input),
.LATCH_INPUT_VALUE ( ),
.CLOCK_ENABLE ( ),
.INPUT_CLK (global_clock),
.OUTPUT_CLK ( ),
.OUTPUT_ENABLE ( ),
.D_OUT_0 ( ),
.D_OUT_1 ( ),
.D_IN_0 (input_0),
.D_IN_1 (input_180)
);
15
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
VHDL
Under development.
Differential outputs can be placed in any I/O bank, although the pair must be part of an I/O tile, as shown in the
iCE40 or iCE40 data sheet. Because of better slew rate control, place lower-speed differential outputs in I/O Banks
0, 1, or 2. Differential I/Os in I/O Bank 3 have the best performance, but also have faster, noisier switching edges.
Set the IO_STANDARD parameter to “SB_LVCMOS”.
An external compensation resistor network must be connected between the two inputs. The resistors must be
physically placed as close as possible to the two package balls.
Verilog
// Differential output pair, DDR data
// Non-inverting, P-side of pair
defparam differential_output_b.PIN_TYPE = 6'b010000 ; // {PIN_OUTPUT_DDR,
PIN_INPUT_REGISTER }
defparam differential_output_b.IO_STANDARD = "SB_LVCMOS" ;
SB_IO differential_output_b (
.PACKAGE_PIN(diff_output_b),
.LATCH_INPUT_VALUE ( ),
.CLOCK_ENABLE ( ),
.INPUT_CLK ( ),
.OUTPUT_CLK (global_clock),
.OUTPUT_ENABLE ( ),
.D_OUT_0 (input_0), // Non-inverted
.D_OUT_1 (input_180), // Non-inverted
.D_IN_0 ( ),
.D_IN_1 ( )
);
VHDL
Under development.
Applications
Applications that benefit most from differential I/O are those with high bandwidth communication requirements such
as graphic displays, cameras and imagers, or chip-to-chip interfaces.
While driving such displays using single-ended LVCMOS I/O is possible, portable or hand-held applications place
additional physical constraints on a design, as shown in Figure 10. Typically, the high bandwidth device—the
graphic display or camera—is separate from the main body that holds the majority of the system electronics. The
main body and the high-bandwidth device are often mechanically connected by some sort of hinge mechanism. In
other applications, the display and camera or cameras are folded into a compact phone, camera, or tablet body.
Sending a wide, LVCMOS signal cable bundle across the hinge to the display is simply impractical. Likewise, a cus-
tom, wide, flex-cable is prohibitively expensive.
The higher bandwidth possible with differential signaling allows the same data to be transported over fewer electri-
cal connections. Few connections results in a smaller, lower-cost flexible cable. Likewise, the smaller voltage swing
results in lower electromagnetic interference (EMI).
Display
(bandwidth
requirement)
Hinge
(physical
constraint)
Main Body
of Electronics
Laptop, Notebook, Mobile Internet Device (MID) Mobile Phone, Smart Phone
iCE40 FPGAs offer a broad range of possible solutions for handheld applications, primarily in bridging and format
conversion applications.
Graphic Displays
Graphic displays demand high data rates, especially high-resolution displays that support a broad color range. In
portable or handheld applications, the challenge is to provide a high-bandwidth communications path between the
graphics controller and the display that fits with the physical constraints of the hinge or the package body. There are
a variety of standard interfaces that leverage differential switching. Perhaps the most widely-used example is Flat
Panel Display Link (FDP-Link), shown in Figure 11. The example shows a 24-bit per pixel design, although there
are other implementations that use fewer colors and differential pairs. A standard 24-bit RGB interface requires up
17
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
to 28 single-ended signals. Instead of sending a cable bundle with 24 wires across the hinge, FPD-Link serializes
the 28 data/control lines onto four differential I/O pairs, plus a clock differential pair resulting in 64% fewer wires.
FPD-Link uses the Low-Voltage Differential Swing (LVDS) I/O standard.
Dividing 28 lines by four differential pairs also means that the data rate across the interface is seven times higher
than the output clock rate.
Figure 11. Example Differential I/O Solution: Flat Panel Display Interface
28 lines at 1X clock rate = 4 differential channels at 7X clock rate
GREEN[7:0] GREEN[7:0]
BLUE[7:0] BLUE[7:0]
CLOCK CLOCK
Low-voltage,
differential swing
(LVDS) channel
Clock
Previous cycle Current cycle Next cycle
PAIR3 RED1 RED0 CTRL BLU1 BLU0 GRN1 GRN0 RED1 RED0 CTRL BLU1
PAIR2 BLU5 BLU4 DEN VSYNC HSYNC BLU7 BLU6 BLU5 BLU4 DEN VSYNC
PAIR1 GRN4 GRN3 BLU3 BLU2 GRN7 GRN6 GRN5 GRN4 GRN3 BLU3 BLU2
PAIR0 RED3 RED2 GRN2 RED7 RED6 RED5 RED4 RED3 RED2 GRN2 RED7
At the receiving end, the differential data is de-serialized and converted back into a wider bundle of single-ended
signals.
The integrated PLL in iCE40-family FPGAs simplifies this style of interface. An iCE40 FPGA can be at either end of
the serial interface, either to allow a processor without an FPD-Link interface to communicate with an FPD-Link dis-
play, or to allow a processor with only an FPD-Link display interface to communicate to an RGB display or a display
that uses a different format.
Figure 12 shows an example application running on an iCEman40 evaluation board. A 5-Megapixel camera cap-
tures live video images and provides the data to the iCE40 FPGA in RGGB format on a parallel LVTLL interface.
18
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
Figure 12. 5-Megapixel CMOS Camera to LVDS Display on iCEman40 Evaluation Board
Summary
This technical note provides an overview of iCE LVDS technology, focusing on its advantages, implementation,
application, and its various electrical and timing characteristics. It also includes detailed recommendations for
instantiating LVDS transmitter and receivers in your design and calculating the required external terminations to
guarantee optimum performance.
References
• IEEE 1596.3 Standards
• Texas Instruments, “LVDS Owner’s Manual”, 2008
• Jimmy Ma, “A Closer Look at LVDS Technology”, Pericom, 2001
• Texas Instruments, “Application Note 1032: An Introduction to FPD-Link”
• Texas Instruments, “Application Note 1127: LVDS Display Interface (LDI) TFT Data Mapping for Interoperability
with FPD-Link”
19
Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices
Revision History
Date Version Change Summary
January 2015 1.5 Updated Differential Outputs section. Updated Figure 2, Differential
Output Pair. Added IOL_1A and IOL_1B.
July 2014 1.4 Updated Figure 1, Differential Signaling Electrical Parameters and
Figure 3, iCE40 LVDS or Sub-LVDS Differential I/O Channel. Changed
DPxxA and DPxxB differential input pair connections.
October 2013 01.3 Changed document title to “Using Differential I/O (LVDS, Sub-LVDS)
in iCE40 LP/HX Devices”.
June 2013 01.2 Updated the Differential Signaling Electrical Parameters and the iCE40
LVDS or Sub-LVDS Differential I/O Channel figures.
Updated the descriptions of the INPUT_CLOCK and the
OUTPUT_CLOCK ports in the Port Names, Signal Direction, and
Description for SB_IO (SB_GB_IO) Primitive table.
Updated Technical Support Assistance information.
March 2013 01.1 Removed the Representative Electrical Characteristics of Various Dif-
ferential I/O Standards table.
Updated information in Differential Outputs.
Updated description of figure showing 5-Megapixel CMOS Camera to
LVDS Display on iCEman40 Evaluation Board.
Removed the Example FPD-Link Transmitter on iCEman40 Evaluation
Board figure and description.
September 2012 01.0 Initial release.
20