F-Tile HDMI Intel® FPGA IP Design Example User Guide

ID 709314
Date 6/06/2024
Public
Document Table of Contents

2.3.1. Creating RX-Only or TX-Only Designs

For advanced users, you can use the Agilex™ 7 HDMI RX-TX Retransmit design to create a TX or RX-only design.

To create an RX-only design, remove the HDMI TX Top and RX-TX Link modules. However, you need the CPU Subsystem to set the EDID value for the RX Core.

Figure 10. HDMI 2.1 RX-only Block Diagram
To create a TX-only design, remove the HDMI RX Top and RX-TX Link modules. However, you need the CPU Subsystem to read EDID from the Sink and for the Link Training Process.
Figure 11. HDMI 2.1 TX-only Block Diagram

To use RX or TX-only components, remove the irrelevant blocks from the design.

Table 8.  RX-Only and TX-Only Design Requirements
User Requirements Preserve Remove Add
HDMI RX only RX Top
  • TX Top
  • RX-TX Link
  • CPU Subsystem
  • Transceiver Arbiter
HDMI TX only
  • TX Top
  • CPU Sub-System
  • RX Top
  • RX-TX Link
  • Transceiver Arbiter
Video Pattern Generator

(custom module or generated from the Video and Image Processing (VIP) Suite)

Aside from the RTL changes, you need to also edit the main.c script.

  • For HDMI TX-only designs, decouple the wait for the HDMI RX lock status by doing the following:
    1. Remove the following lines:

      rx_hdmi_lock = READ_PIO(PIO_IN0_BASE, PIO_RX_LOCKED_OFFSET, PIO_RX_LOCKED_WIDTH);

      while (rx_hdmi_lock == 0) {

      if (check_hpd_isr()) { break; }

      // rx_vid_lock = READ_PIO(PIO_IN0_BASE, PIO_VID_LOCKED_OFFSET, PIO_VID_LOCKED_WIDTH);

      rx_hdmi_lock = READ_PIO(PIO_IN0_BASE, PIO_RX_LOCKED_OFFSET, PIO_RX_LOCKED_WIDTH);

      // Reconfig Tx after rx is locked

      if (rx_hdmi_lock == 1) {

      if (READ_PIO(PIO_IN0_BASE, PIO_LOOPBACK_MODE_OFFSET, PIO_LOOPBACK_MODE_WIDTH) == 1) {

      rx_frl_rate = READ_PIO(PIO_IN0_BASE, PIO_RX_FRL_RATE_OFFSET, PIO_RX_FRL_RATE_WIDTH);

      tx_xcvr_reconfig(rx_frl_rate);

      } else {

      tx_xcvr_reconfig(tx_frl_rate);

      } } }

    2. Replace with:

      tx_xcvr_reconfig(tx_frl_rate);

  • For HDMI RX-only designs, keep only the following lines in the main.c script:

    REDRIVER_INIT();

    hdmi_rx_init();