6161 - iCE40 UltraPlus: How utilize Differential Input pairs on an iCE40 device?

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.