Zynq Image Enhancement System (5 / 8 steg)
Steg 5: Utgång - HDMI Controller del 2
Tillräckligt teori, kan komma till vårt projekt. Medan i VGA-styrenhet fick vi bort med en 148.5 MHz klocka, här vi måste ge 10 gånger det frekvensen eftersom vi vill överföra 8 bitar för varje färg och använder 8b/10b kodning som översätter till 10 bitar per pixel och 10 * 148.5 MHz = 1485 MHz. Det är en enorm frekvens som inte kan erhållas på Zybo ombord. Lyckligtvis fick vi några tricks rockärmen. Vi kan hantera 5 * 148.5 MHz = 742.5 MHz och vi kommer att använda en OSERDES (serializer) IP som överför data på stigande och fallande kanten av 742.5 Mhz klocka, så vi får faktiskt data som överförs på 1485 MHz. Vivado kommer att ge oss några timing varningar och du kan alltid gå för en lägre upplösning med en mindre klocka, men eftersom det fungerar , vi har verkligen inget emot det nu (varningar relateras till det faktum att klocka buffertar inte officiellt stöder frekvenser högre än 464MHz).
Så är vad vi behöver göra att koda data från våra VGA-styrenhet utdata i 8b/10b format och sedan serialisera det som nämnts ovan. Vi måste också lägga till en annan MMCM i projektet att generera 742.5MHz klocka för serialisering.
Jag bifogat nedan vhdl filerna för kodare och serialiserare. Du måste först koda RGB-kanaler och sedan serialiserar dem.
Exempel för den röda kanalen:
TMDS_encoder_RED: TMDS_encoder
Port karta (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
Port karta (clk148, clk742, encoded_red_10bits, återställning, red_serial_1bit);
"C" indata till TMDS_encoder är "00" för röd och grön och "vsync & hsync" för blått (detta ingår i DVI-specifikationen http://goo.gl/hhh8Ge ).