Het Micro-elektronica Trainings- Centrum Het MTC is een initiatief binnen de INVOMEC divisie. Industrialisatie & Vorming in Micro-elektronica Inleiding In de vorige modules werd een systeem opgebouwd en geverifieerd met een VHDL simulator. In deze module zullen we dit systeem nog wat uitbreiden en na het laden in een fpga het resultaat kunnen bewonderen op het scherm. Labo-oefening Lab6: Implementatie video timing generator Cluster: Cluster2 Module: Module2a Figuur 1 Doelstellingen Na dit labo moet de student de complete toolflow begrijpen en beheersen om een hardware systeem zoals de video timing generator in vhdl te beschrijven, te verifiëren door simulatie, te synthetiseren en in te laden in een fpga. Voorkennis De modules 1a, 1b en 1c moeten eerst doorlopen worden. Classificatie Doelgroep: Student Versie: 1.0 Datum: 1/4/05 Dit materiaal werd ontwikkeld of aangepast met steun van het Europese Sociaal fonds. ESF: Bijdragen tot de ontwikkeling van de werkgelegenheid door het bevorderen van inzetbaarheid, ondernemerschap, aanpasbaarheid en gelijke kansen, en door het investeren in menselijke hulpbronnen. http://www.esf-agentschap.be Moeilijkheidsgraad van 1 tot 5 : 1 Aantal uren (zonder begeleiding) : 1.5 a 2 Gegeven De volgende folders/files vind je onder module2a: Hardware : alle files nodig om System1 (zie opdracht) op te bouwen Simulation : alle files nodig om System1 te simuleren Implementation : constraints file om System1 te implementeren Deze drie folders brengen automatisch wat structuur in je ontwerp zodat je later gemakkelijk bepaalde stukken kan terugvinden en hergebruiken in andere ontwerpen. IMEC2005 www.mtc-online.be Lab6Mod2aV1.0.doc www.mtc-online.be 2/15
Opdracht 1. Generatie van de pixel klok en de reset voor de Video timing generator. Op het bord wordt met een xtal een 100MHz klok aangemaakt en verbonden met de fpga. Deze klok wordt niet rechtstreeks gebruikt als pixel klok aangezien deze igv. vga aansturing 25MHz moet zijn. Daarom wordt op de fpga deze 100MHz klok gedeeld door 4. De gemakkelijkste en beste manier om dit te bereiken op een Xilinx VirtexII-pro is een Digital Clock Manager (DCM) te gebruiken. De FPGA op het XUP bord bevat acht van deze units. Met een DCM kan je klokken delen, vermenigvuldigen en in fase verschuiven. Intern beschikken deze units over een DLL (Delay Locked Loop) wat het mogelijk maakt om de skew op de output klok volledig te elimineren tov de input klok. Deze units hebben echter een opstarttijd nodig tijdens dewelke de output klok(ken) nog niet de correcte frequentie en/of fase hebben. Gedurende deze opstarttijd blijft de locked output laag. Meer info vind je in de Virtex-II pro Platform FPGA User Guide. Om het voor de student simpel te houden werd een ClkAndResetGen entity aangemaakt die gebruik maakt van een DCM om de pixel klok en de asynchrone reset te sturen. ENTITY ClkAndResetGen IS generic( Div_factor : real := 4.0 ); port( SYSTEM_CLOCK : in std_logic; -- 100 MHz clock Clk : out std_logic; -- 50/25 MHz clock Reset_n : out std_logic -- active low reset ); end ClkAndResetGen; De vereenvoudigde architectuur ziet er als volgt uit : Figuur 3 2. Samenstellen van het complete te implementeren systeem System1 In System1.vhd wordt het volledig systeem samengesteld. De complete architectuur staat in de inleiding van deze module. Zoals je kan zien in het VHDL model van de digitaal analoog converter introduceert deze DAC een extra klok vertraging op de RGB signalen. Vraag 2 : Wat is de functie van flipflop op de horizontale en verticale synchronisatie pulsen in figuur1? Vraag 3 : In Systeem1 houden we de RGB waarden vast, maar indien we de RGB waarden lieten veranderen dan zouden we die ook eerst door een flipflop op de dalende flank van de pixel klok moeten sturen, net zoals het VGA_OUT_BLANK_Z signaal (=video_on in de VideoTimingGen). Waarom zijn deze flipflops nodig? 3. Simulatie van System1 Simuleer System1 met Modelsim in de directory module2a/simulation. Alle nodige files vind je in de directory Hardware en Simulation. Deze opsplitsing zorgr ervoor dat de testbenches en de te implementeren hardware netjes gescheiden blijven. In dit lab zullen we het Constants_pack compileren in de library Const_lib en het General_TB_pack in de library General_TB_lib. Al de rest compileren we in library work. Figuur 2 Vraag 1 : waarom is die extra flipflop nodig? Figuur 4 cd module2a/simulation vlib work vlib Const_lib vlib General_TB_lib vcom -work Const_lib../Hardware/Constants_pack.vhd vcom../hardware/clkandresetgen.vhd vcom../hardware/videotiminggen.vhd vcom../hardware/system1.vhd vcom -work General_TB_lib General_TB_pack.vhd Lab6Mod2aV1.0.doc www.mtc-online.be 3/15 Lab6Mod2aV1.0.doc www.mtc-online.be 4/15
vcom tripledac.vhd vcom TB_System1.vhd De student die van een uitdaging houdt kan de VHDL files en de library structuur aanpassen zodanig dat library work niet meer gebruikt wordt. Figuur 5 Simuleer nu TB_System1. Zorg ervoor dat de IO van System1 in de waveform viewer zichtbaar worden zodat je timing van de sync signalen kan checken. Alleen op tijstip 0 ns mag je volgende warnings krijgen. # ** Warning: NUMERIC_STD.">=": metavalue detected, returning FALSE # ** Warning: NUMERIC_STD.">=": metavalue detected, returning FALSE # ** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE # ** Warning: NUMERIC_STD."<": metavalue detected, returning FALSE # ** Warning: NUMERIC_STD."<": metavalue detected, returning FALSE 2. Kies de juiste FPGA 4. Implementatie van System1 Deze stap mag je alleen beginnen als de simulatie perfect verlopen is, teneinde een beschadiging van het scherm door een verkeerde aansturing te vermijden. De System1.ucf file bevat alle constraints waarmee de synthese en de place en route tools moeten rekening mee houden. Deze zijn : De periode van de SYSTEM_CLOCK. Op het bord staat een Xtal van 100 MHz, dus : TIMESPEC "TS_SYSTEM_CLOCK" = PERIOD "SYSTEM_CLOCK" 10.00 ns HIGH 50 %; De pin posities van de FPGA : NET "SYSTEM_CLOCK" LOC = "AJ15"; NET "VGA_VSYNCH" LOC = "D11"; De configuratie van de IOs NET "VGA_VSYNCH" IOSTANDARD = LVTTL; NET "VGA_VSYNCH" DRIVE = 12; NET "VGA_VSYNCH" SLEW = SLOW;. Let speciaal op het volgende : 1. VHDL bussen worden compleet geexpandeerd en aangeduid met <> ipv. ()! 2. De naam van de constraints file moet als extensie.ucf hebben en niet.ucf! Start de project navigator van ISE 1. Open een nieuw project in de directory module2a/implementation met als project naam:system1. Lab6Mod2aV1.0.doc www.mtc-online.be 5/15 Lab6Mod2aV1.0.doc www.mtc-online.be 6/15
3. Voeg de bestaande VHDL Hardware files toe, dus selecteer Next en niet New Source Voeg de VHDL files als VHDL Design Files toe, zonder ze te kopiëren naar je project. Lab6Mod2aV1.0.doc www.mtc-online.be 7/15 Lab6Mod2aV1.0.doc www.mtc-online.be 8/15
4. Creëer de Const_lib VHDL library : Project new source Voeg het constants_pack toe aan de Const_lib library.(via rechtermuisknop) 5. Voeg de constraints file toe aan System1 Project add source In de library view krijg je nu: Lab6Mod2aV1.0.doc www.mtc-online.be 9/15 Lab6Mod2aV1.0.doc www.mtc-online.be 10/15
8. Genereer de bit (download) file 9. Connecteer het XUP bord.(power switch = OFF!) Sluit stroom, vga en usb connector aan Config source dip switch : selecteer JTAG Zet spanning op 10. Configureer de boundery chain 6. Start de synthese van system1 Configure Device (impact) Cancel automatic selection Output > Cable setup > Platform cable USB File>Initialize chain Vragen : 1. Verklaar alle warnings. 2. Identifieer alle inferred counters, comparators en flip-flops 3. Hoeveel slices en global clocks worden er geinstantieerd? Bekijk het schema : view RTL schematic 7. Implementeer system1 (Place en route) View placed design View routed design Lab6Mod2aV1.0.doc www.mtc-online.be 11/15 Lab6Mod2aV1.0.doc www.mtc-online.be 12/15
De FPGA staat pas als derde element in de boundary scan. Voor de eerste twee selecteer je bypass. Voor de FPGA kies je system1.bit De volgende warning is van geen belang 11. Programmeer de FPGA Selecteer de FPGA met de rechtermuis en selecteer program : Na een succesvol laden krijg je : Lab6Mod2aV1.0.doc www.mtc-online.be 13/15 Lab6Mod2aV1.0.doc www.mtc-online.be 14/15
Je aangestuurde scherm zou nu volledig rood moeten zijn! Lab6Mod2aV1.0.doc www.mtc-online.be 15/15