Skip to content

Fix HDMI sink compatibility for Samsung TVs and strict monitors#38

Open
BrentRector wants to merge 1 commit intoa2fpga:mainfrom
BrentRector:upstream-hdmi-samsung
Open

Fix HDMI sink compatibility for Samsung TVs and strict monitors#38
BrentRector wants to merge 1 commit intoa2fpga:mainfrom
BrentRector:upstream-hdmi-samsung

Conversation

@BrentRector
Copy link
Copy Markdown

Summary

Files: hdl/hdmi/hdmi.sv, hdl/hdmi/audio_clock_regeneration_packet.sv, hdl/hdmi/packet_picker.sv

Samsung TVs and some strict HDMI monitors (e.g. Ingnok portable displays) reject the A2FPGA
HDMI signal entirely, showing no video. The root cause is multiple HDMI spec violations in
the packet generation that lenient sinks tolerate but strict sinks reject.

Fixes

  • AVI InfoFrame fields: Set PICTURE_ASPECT_RATIO to match VIC, ACTIVE_FORMAT_INFO_PRESENT=1,
    SCAN_INFO=underscan, RGB_QUANTIZATION_RANGE=full (0-255) — instead of relying on defaults
    that some sinks interpret as "undefined"
  • Non-deterministic X values: Replace X values in null packet and ACR headers with zeros
    so BCH ECC checksums are consistent across synthesis runs
  • Packet type reset: Fix packet_type reset to 8'd0 (null) instead of 8'dx for
    deterministic mux behavior between field_end and packet_enable
  • Blocking assignment fix: Change control_data from blocking (=) to non-blocking (<=)
    assignment in HDMI mode reset path (sequential always_ff block)

How Discovered

Testing A2FPGA output on a Samsung TV produced no video at all. The TV's HDMI input simply
showed "No Signal." Investigation revealed the packet generation had missing InfoFrame fields
and non-deterministic packet content that strict sinks rejected.

Note: This is a companion to PR #35 which addresses HDMI control period timing from the
upstream hdl-util/hdmi library. This PR fixes additional compatibility issues in the A2FPGA-
specific packet generation code.

Test Plan

  • Samsung TV displays A2FPGA video correctly (was "No Signal" before fix)
  • Ingnok portable monitor displays correctly
  • No regression on previously-working HDMI sinks (Dell monitor, LG TV)

Problem:
Samsung TVs and some strict HDMI monitors (e.g. Ingnok portable
displays) reject the A2FPGA HDMI signal entirely, showing no video.
The root cause is multiple HDMI spec violations in the packet
generation that lenient sinks tolerate but strict sinks reject.

How discovered:
Testing A2FPGA output on a Samsung TV produced no video. Investigation
revealed the HDMI packet generation had several issues: missing AVI
InfoFrame fields causing sinks to reject the video format, non-
deterministic X values in packet headers causing inconsistent BCH ECC
checksums, and a blocking assignment in a sequential block.

Fix:
- Set AVI InfoFrame fields explicitly instead of relying on defaults:
  PICTURE_ASPECT_RATIO to match VIC, ACTIVE_FORMAT_INFO_PRESENT=1,
  SCAN_INFO=underscan, RGB_QUANTIZATION_RANGE=full (0-255)
- Replace non-deterministic X values in null packet and ACR headers
  with zeros so BCH ECC is consistent across synthesis runs
- Fix packet_type reset to 8'd0 (null) instead of 8'dx for
  deterministic mux behavior between field_end and packet_enable
- Fix blocking assignment (=) to non-blocking (<=) for control_data
  in HDMI mode reset path

Testing:
Verified on Samsung TV and Ingnok portable monitor — both now display
A2FPGA video correctly. No regression on previously-working HDMI sinks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant