6161 - iCE40 UltraPlus: How utilize Differential Input pairs on an iCE40 device?
For iCEcube2 compatible devices (LP/HX/LM/Ultra/UltraLite/UltraPlus), the user needs to use the SB_IO primitive and override the IO_STANDARD parameter to SB_LVDS_INPUT as shown in the rudimentary example below:
SB_IO SB_IO_inst (
.PACKAGE_PIN(DATA_IN),
.LATCH_INPUT_VALUE(),
.CLOCK_ENABLE(),
.INPUT_CLK(),
.OUTPUT_CLK(),
.OUTPUT_ENABLE(1'b1),
.D_OUT_0(),
.D_OUT_1(),
.D_IN_0(DATA_OUT),
.D_IN_1()
);
defparam SB_IO_inst.PIN_TYPE = 6'b000001; // Simple input. No Output
defparam SB_IO_inst.PULLUP = 1'b0;
defparam SB_IO_inst.NEG_TRIGGER = 1'b0;
defparam SB_IO_inst.IO_STANDARD = "SB_LVDS_INPUT";
The user only needs to take care of the positive signal, and the complimentary pin will be automatically assigned by the tool.
For iCE40 Ultraplus devices, the user can use Radiant Software in place of iCEcube2. The user does not need to use the SB_IO primitive. Instead, the user can simply select "LVDSE" in the IO_TYPE field found in the Device Constraints Editor after synthesis.
Do take note that even if the inputs are set as "LVDS" in the software to enable the comparators, some of the iCE40 devices are not qualified to run at LVDS speeds. In these cases, the general guideline is to follow the maximum LVCMOS speeds when utilizing the differential pairs. Please refer to the device family datasheet to see which devices are qualified to run at LVDS speeds, and which devices are limited to only LVCMOS speeds.
There is some evidence that UltraPlus devices can run at LVDS25E and subLVDS at 1.8V, and in such cases, you can use the electrical characteristic limit (VINP, VINM, VTHD, VCM, Iin) from the iCE40 LP/HX datasheet. However, this should be interpreted as a guide only and not as a hard datasheet specification for UltraPlus devices.
Related Articles
5518 - How to instantiate differential inputs in VHDL?
For differential inputs, users can refer to the example below: COMPONENT SB_IO IS GENERIC( PIN_TYPE : std_logic_vector(5 downto 0) := "000000"; IO_STANDARD: string := "SB_LVDS_INPUT" ); PORT( PACKAGE_PIN : in std_logic; LATCH_INPUT_VALUE : in ...
1741 - MachXO2: I don't see Differential 3.3v CMOS inputs (LVCMOS33D) input characteristics in the MachXO2 Data Sheet. What are its specifications?<br>
The LVCMOS33D buffer characteristics are similar to those of the LVDS33 differential input buffer, with these key differences: Vinp/Vinm = 0v min, 3.4v max, 3.3v typ Vcm = 2.6v max, 1.65v typ Fmax = 136MHzNote: The 100ohm internal termination ...
5951 - iCE40UP: If an external clock/oscillator is going to be used, what pins should be used if the intention is to utilize the primary clock routing?
Description: GBIN (Global Buffer Input) pins represent the best pin to drive a global buffer from an external source. Solution: For example, in an iCE40 Ultraplus SG48 package, the pins that can be used are Pin20, Pin35, Pin37, and Pin44. After ...
3862 - iCE40: How to identify true (positive) and complementary (negative) ball functions for Low Voltage Differential Signaling (LVDS) inputs in iCE40 device?
The differential signals ending with 'B' in the Pinout file represent the positive end, and the differential signals ending with 'A' represent the negative end. For example, in the Pinout file, IOL_3A and IOL_3B are differential pins (DPIO). So, ...
7176 - The input signals CLKP and CLKN are not differential!
The simulation will continue to run, but this may not reflect the actual circuit operation.
Please check the CLKP and CLKN inputs, and rerun the simulation if necessary.
Description: User will encounter the error messages during simulation using VCS tool. This is a typical response message from VCS simulator when a pair of differential clocks is fed to a DUT in a testbench. For example, the message will be seen when ...