Het
Micro-elektronica TrainingsCentrum
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 Moeilijkheidsgraad van 1 tot 5 : 1 Aantal uren (zonder begeleiding) : 1.5 a 2
Doelgroep: Student Versie: 1.0 Datum: 1/4/05
Gegeven
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
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.
For Academic Use Only
IMEC2005
www.mtc-online.be
For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
2/15
Het Micro-elektronica Trainings-Centrum
Het Micro-elektronica Trainings-Centrum
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.
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.
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 generic( Div_factor ); port( SYSTEM_CLOCK Clk Reset_n ); end ClkAndResetGen;
Vraag 2 : Wat is de functie van flipflop op de horizontale en verticale synchronisatie pulsen in figuur1 ?
IS : real := 4.0
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?
: in std_logic; -- 100 MHz clock : out std_logic; -- 50/25 MHz clock : out std_logic -- active low reset
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.
De vereenvoudigde architectuur ziet er als volgt uit :
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 For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
For Academic Use Only 3/15
Lab6Mod2aV1.0.doc
www.mtc-online.be
4/15
Het Micro-elektronica Trainings-Centrum
Het Micro-elektronica Trainings-Centrum
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 # Time: 0 ps Iteration: 0 Instance: /tb_system1/xfpga/u2 # ** Warning: NUMERIC_STD.">=": metavalue detected, returning FALSE # Time: 0 ps Iteration: 0 Instance: /tb_system1/xfpga/u2 # ** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE # Time: 0 ps Iteration: 0 Instance: /tb_system1/xfpga/u2 # ** Warning: NUMERIC_STD."<": metavalue detected, returning FALSE # Time: 0 ps Iteration: 0 Instance: /tb_system1/xfpga/u2 # ** Warning: NUMERIC_STD."<": metavalue detected, returning FALSE # Time: 0 ps Iteration: 0 Instance: /tb_system1/xfpga/u2
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. For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
For Academic Use Only 5/15
Lab6Mod2aV1.0.doc
www.mtc-online.be
6/15
Het Micro-elektronica Trainings-Centrum
Het Micro-elektronica Trainings-Centrum
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.
For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
For Academic Use Only 7/15
Lab6Mod2aV1.0.doc
www.mtc-online.be
8/15
Het Micro-elektronica Trainings-Centrum
Het Micro-elektronica Trainings-Centrum
4. Creëer de Const_lib VHDL library : Project new source
5. Voeg de constraints file toe aan System1
Voeg het constants_pack toe aan de Const_lib library.(via rechtermuisknop)
Project add source
In de library view krijg je nu:
For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
For Academic Use Only 9/15
Lab6Mod2aV1.0.doc
www.mtc-online.be
10/15
Het Micro-elektronica Trainings-Centrum
Het Micro-elektronica Trainings-Centrum
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 For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
For Academic Use Only 11/15
Lab6Mod2aV1.0.doc
www.mtc-online.be
12/15
Het Micro-elektronica Trainings-Centrum
Het Micro-elektronica Trainings-Centrum
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 : For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
For Academic Use Only 13/15
Lab6Mod2aV1.0.doc
www.mtc-online.be
14/15
Het Micro-elektronica Trainings-Centrum
Je aangestuurde scherm zou nu volledig rood moeten zijn!
For Academic Use Only Lab6Mod2aV1.0.doc
www.mtc-online.be
15/15