My HDMI transmitter is taking way too long to finish with no one to blame but myself.
In this post I’ll describe the general structure of my HDMI transmitter.
First, at the core lies the encoder. The encoder is the module that encodes the video, audio and control commands into 10 bits to be transmitted by TMDS. Further more, the encoder manages the guard bands. There will be three encoders, one for each channel of the TMDS.
The encoders will be instantiated inside the module which communicates with the SOC. This top encoder module will be wishbone compliant. It will receive in each wishbone transaction the raw data for one pixel and direct it to the appropriate channel encoder.
When it comes to clock management, if I need any clock multiplier I will utilize the spartan 6 PLL. Moreover, for serialising, I will use the the ISERDES2 device in spartan 6.
For testing purposes, I will begin by displaying a red screen. With the success of the red screen I will try to display coloured bars on the screen. After the success I will improve my device to be able to handle different screen resolutions and colour depth. Ideally my device should be tested for sending Audio and should be able to handle the input lines in the HDMI layer.
To sum up, my final product should be a HDMI transmitter that is wishbone compliant and satisfies at least HDMI 1.0 specs. It should be able to handle any color depth or resolution less that it’s rated ones.