Lesson 19 of 25 · 12 MIN · 76% complete

IO Banks

FPGA IO banks group pins that share a common supply voltage (VCCO) and signaling standard. Mastering HP vs HR banks, LVDS differential pairs, and XDC IO constraints is essential for any board-level FPGA design.

Why IO Banks Exist

Real FPGA systems connect to many different external interfaces — each with its own required voltage level and signaling standard. IO banks solve this by grouping pins into regions, where every pin in a group shares the same supply voltage rail (VCCO). This lets different sides of the FPGA talk to different voltage domains simultaneously.

Bank rule Every IO pin on the FPGA belongs to exactly one bank. All pins in a bank share the same VCCO supply voltage. You cannot mix 1.8V and 3.3V signals in the same bank.

Bank Types: HP vs HR

Xilinx 7-series devices offer two distinct IO bank types, optimized for different use cases:

Feature HP (High Performance) HR (High Range)
Maximum VCCO 1.8V 3.3V
Maximum data rate ~1200 Mbps (DDR) ~800 Mbps
VREF support Yes Yes
DCI (on-chip termination) Yes No
Differential pairs LVDS, LVPECL full support LVDS (limited modes)
Best used for DDR3/4, LVDS cameras, high-speed interfaces Legacy 3.3V, GPIO, buttons, LEDs
7-series availability Kintex-7, Virtex-7, Zynq-7000 All 7-series (Artix-7 is all HR)

Common IO Standards

Standard VCCO Voltage Swing Use Case
LVCMOS33 3.3V 0–3.3V single-ended GPIO, buttons, LEDs, debug
LVCMOS18 1.8V 0–1.8V single-ended Camera interfaces, sensors
LVCMOS15 1.5V 0–1.5V single-ended Legacy low-voltage interfaces
LVTTL 3.3V 0–3.3V (TTL thresholds) PC parallel bus, legacy
LVDS 1.8V or 2.5V ±350mV differential High-speed clocks, MIPI, cameras
SSTL135 1.35V Differential referenced DDR3L memory
SSTL12 1.2V Differential referenced DDR4 memory
HSTL 1.2–1.8V Differential referenced QDR SRAM, high-speed buses

IOB — IO Block Internal Structure

Each physical IO pin is managed by an IO Block (IOB) that contains all the signal conditioning circuitry between the pad and the FPGA fabric:

Differential Pairs and LVDS

LVDS (Low Voltage Differential Signaling) transmits data as the voltage difference between two adjacent pins (P and N). The differential nature cancels common-mode noise, enabling high speeds at low voltage swings:

flowchart LR PP(["LVDS_P (pad)"]) --> IBUFDS["IBUFDS\ndifferential buffer"] PN(["LVDS_N (pad)"]) --> IBUFDS IBUFDS --> SE(["Single-ended\nto fabric"]) style IBUFDS fill:#1e3a5f,stroke:#3b82f6,color:#93c5fd

XDC IO Constraints

IO pin assignments and electrical standards are specified in the Xilinx Design Constraints (XDC) file using set_property commands. Every user-facing IO port must have a PACKAGE_PIN and IOSTANDARD constraint:

# --- Pin location assignments ---
set_property PACKAGE_PIN T22  [get_ports led[0]]
set_property PACKAGE_PIN U22  [get_ports led[1]]
set_property PACKAGE_PIN V22  [get_ports led[2]]
set_property PACKAGE_PIN W22  [get_ports led[3]]

# --- IO voltage standard ---
set_property IOSTANDARD LVCMOS33 [get_ports {led[*]}]
set_property IOSTANDARD LVCMOS33 [get_ports {btn[*]}]

# --- Drive strength and slew rate (outputs only) ---
set_property DRIVE 8         [get_ports {led[*]}]
set_property SLEW  SLOW      [get_ports {led[*]}]

# --- LVDS clock pair ---
set_property PACKAGE_PIN H4  [get_ports sys_clk_p]
set_property PACKAGE_PIN G4  [get_ports sys_clk_n]
set_property IOSTANDARD LVDS [get_ports sys_clk_p]
set_property IOSTANDARD LVDS [get_ports sys_clk_n]

# --- DDR3 data with DCI termination ---
set_property IOSTANDARD SSTL135_T_DCI [get_ports {ddr3_dq[*]}]

DCI — Digitally Controlled Impedance (HP Banks Only)

DCI is an automatic on-chip termination system available exclusively in HP banks. It calibrates the IO driver and termination impedance to match the PCB trace impedance, eliminating the need for external termination resistors on DDR data buses:

IO Timing and IOB Flip-Flop

The IOB flip-flop is a register that lives physically inside the IO block — before the signal enters the general routing fabric. Placing the capture FF in the IOB eliminates the routing delay from pad to fabric from the timing analysis path:

Common IO Mistakes

Bank voltage rule Every IO pin belongs to exactly one bank. All pins in a bank share the same VCCO. You cannot mix 1.8V and 3.3V signals in the same bank — not even if each pin uses a different IOSTANDARD.
IO Planning tool Use Vivado's IO Planning view (Flow Navigator → IO Planning) to visualize bank assignments, check VCCO consistency across all banks, and catch DRC violations before starting PCB layout. This view also shows differential pair locations.
HP bank voltage limit Never connect a 3.3V signal to an HP bank — HP banks are rated for 1.8V maximum VCCO. Use HR banks for all 3.3V interfaces. Violating this can permanently damage the IO cells.
Interview question Q: What is DCI and which FPGA bank type supports it?
A: DCI (Digitally Controlled Impedance) is on-chip automatic termination calibration for impedance-matched interfaces such as DDR memory. The FPGA continuously calibrates its IO driver and termination impedance to match the PCB trace. Only HP (High Performance) banks support DCI in Xilinx 7-series FPGAs.

Knowledge Check

Q1. What is the maximum VCCO for HP banks in Xilinx 7-series FPGAs?

  • A 3.3V
  • B 1.8V
  • C 2.5V
  • D 1.2V
Correct! HP (High Performance) banks in 7-series support a maximum VCCO of 1.8V. This makes them suitable for LVDS and DDR3/4 interfaces but not for 3.3V legacy interfaces. HR banks support up to 3.3V.

Q2. Which IO standard is used for DDR4 memory interfaces?

  • A LVCMOS18
  • B SSTL135
  • C SSTL12
  • D LVDS
Correct! SSTL12 (Stub Series Terminated Logic at 1.2V) is the IO standard for DDR4. DDR3 uses SSTL135 (1.35V). Both are differential-referenced standards requiring VREF.

Q3. What does the IBUFDS primitive do?

  • A Drives a differential output pair from a single-ended fabric signal
  • B Converts a differential input pair to single-ended for the FPGA fabric
  • C Provides on-chip termination for LVDS pairs
  • D Serializes 8-bit parallel data to a differential LVDS pair
Correct! IBUFDS is the Input Buffer Differential Signaling primitive. It accepts LVDS_P and LVDS_N inputs and produces a single-ended output to the fabric. OBUFDS performs the reverse for outputs.

Q4. Which XDC constraint command sets the IO voltage standard?

  • A set_property PACKAGE_PIN
  • B set_property IOSTANDARD
  • C set_property DRIVE
  • D create_clock
Correct! set_property IOSTANDARD <standard> [get_ports {...}] sets the electrical standard for a port. Every user IO port must have both a PACKAGE_PIN and an IOSTANDARD constraint or Vivado will issue a critical warning.

Q5. DCI (Digitally Controlled Impedance) is available on which bank type?

  • A HR (High Range) banks only
  • B Both HP and HR banks
  • C HP (High Performance) banks only
  • D Any bank with VCCO below 1.8V
Correct! DCI is only available in HP banks. HR banks do not have the on-chip calibration circuitry required for DCI. This is one of the key reasons HP banks are used for DDR memory interfaces.

Practical Exercise

In Vivado IO Planning mode, open a project targeting an Artix-7 (xc7a35tcsg324). Assign the following ports:

  1. CLK_P / CLK_N → Bank 35, LVDS, adjacent pair pins
  2. LED[0:3] → Bank 34, LVCMOS33, drive strength 8mA, SLEW SLOW
  3. BTN[0:3] → Bank 34, LVCMOS33, with internal pull-down

Verify each bank's VCCO is correctly set (Bank 35 → 2.5V for LVDS; Bank 34 → 3.3V for LVCMOS33). Run Reports → Report IO and check the "IO Bank Summary" section. Confirm there are no DRC violations by running Tools → Report DRC. Note any warnings about missing IOSTANDARD or VCCO conflicts.