Fix HDMI sink compatibility for Samsung TVs and strict monitors#38
Open
BrentRector wants to merge 1 commit intoa2fpga:mainfrom
Open
Fix HDMI sink compatibility for Samsung TVs and strict monitors#38BrentRector wants to merge 1 commit intoa2fpga:mainfrom
BrentRector wants to merge 1 commit intoa2fpga:mainfrom
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Files:
hdl/hdmi/hdmi.sv,hdl/hdmi/audio_clock_regeneration_packet.sv,hdl/hdmi/packet_picker.svSamsung 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
PICTURE_ASPECT_RATIOto match VIC,ACTIVE_FORMAT_INFO_PRESENT=1,SCAN_INFO=underscan,RGB_QUANTIZATION_RANGE=full (0-255)— instead of relying on defaultsthat some sinks interpret as "undefined"
Xvalues in null packet and ACR headers with zerosso BCH ECC checksums are consistent across synthesis runs
packet_typereset to8'd0(null) instead of8'dxfordeterministic mux behavior between
field_endandpacket_enablecontrol_datafrom blocking (=) to non-blocking (<=)assignment in HDMI mode reset path (sequential
always_ffblock)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