Stap 5: OUTPUT - HDMI Controller deel 2
Genoeg theorie, laat ons project krijgen. Terwijl in de VGA-Controller zijn we weg met een 148.5 MHz klok, hier zullen we moeten voorzien van de 10 keer dat frequentie omdat we wilt verzenden van 8 bits voor elke kleur en met behulp van de 8b/10b-codering die naar 10 bits per pixel en 10 vertaalt * 148,5 MHz = 1485 MHz. Dat is een enorme frequentie die niet kan worden verkregen op het bord Zybo. Gelukkig kregen we een paar trucs omhoog onze koker. We kunnen beheren 5 * 148,5 MHz = 742.5 MHz en we zullen gebruik maken van een OSERDES (serializer) IP voor het verzenden van gegevens, zowel over de stijgende en dalende rand van de 742.5 Mhz klok, zodat we daadwerkelijk zal krijgen toegezonden gegevens op 1485 MHz. Vivado zal waarschuwen ons sommige timing en kon je altijd voor een lagere resolutie gaan met een kleinere klok, maar omdat het werkt , we het echt niet erg voor nu (de waarschuwingen zijn gerelateerd aan het feit dat de klok buffers officieel ondersteunen geen frequenties hoger dan 464MHz).
Dus is wat we moeten doen voor het coderen van de gegevens uit onze productie van de VGA-Controller in 8b/10b-indeling en het vervolgens serialize zoals hierboven vermeld. Ook zullen we een ander MMCM toevoegen aan het project voor het genereren van de 742.5MHz klok voor de serialisatie.
Ik gehecht balg de vhdl-bestanden voor de encoder en serializer. U moet eerst de RGB kanalen coderen en vervolgens serialise hen.
Voorbeeld voor het rode kanaal:
TMDS_encoder_RED: TMDS_encoder
kaart van de haven (clk148, red_channel_8bits, c_red, video_on, encoded_red_10bits);
Serialiser_RED: Serialiser10_1
kaart van de haven (clk148, clk742, encoded_red_10bits, reset, red_serial_1bit);
De "c" bijdrage aan de TMDS_encoder is "00" voor rood en groen en "vsync & hsync" voor blauw (dit is onderdeel van de DVI-specificatie http://goo.gl/hhh8Ge ).