Table of Contents
Pokyny na cviceni
- kontaktni emailova adresa je simekm2@fel.cvut.cz s predmetem X36PNO a casu cvici
Subject: X36PNO Po 16:00 Novak, Novotny
- soubory *.vhd a *.ucf bude opatren v horni casti komentari se jmeny kdo soubor vytvoril
- VHDL (pomlcka pomlcka) Novak, Novotny Pondeli 3.3.2008 16:00
- UCF ## Novak, Novotny Pondeli 3.3.2008 16:00
Práce s vývojovými deskami
Vývojová deska není na hrani - tzn. šahání na desky je nepřípustné. Neničte vybavení HW labu a neničte vyučovací pomůcky
- Na šahaní je v HW labu připraveno topeni, či kovová část počítače - tímto se zbavíte statické elekřiny. tj. šáhněte si.
- Najděte příslusný vývojový kit a držte jej za části, které přímo nesouvisí s plošným spojem - tj. plexisklo, (pokud si nevíte rady za jakou část vývojový kit držet zeptejte se cvičícího)
- Najděte si přislušné propojovací a napájecí prvky.
- Znovu si šáhněte na místa k tomu určená
- Připojte JTAG kabel pouze k vývojové desce
- Připojte napájecí konektor k vývojové desce
- Pripojte seriovou linku
- Nyní pripojte JTAG kabel na paralelní port nebo USB (dle vývojové desky) a seriovou linku
- Zapněte vývojovou desku
Pokyny k pouzivani pripravku
- pripojeni JTAG se pouzivaji pouze predni USB porty
- pripravek se pujcuje a vraci cvicicimu - pro pravidla jak zachazet s pripravkem se podivejte sem
S3E500 UCF pinout
Co je UCF soubor?
UCF soubor popisu zapojeni vodicu v designu na vstupne vystupni bunky a tim i na piny obvodu FPGA. Jelikoz pouzivame vyvojove desky a nemuzeme ovlivnit zapojeni pinu FPGA k dalsim zdrojum jako jsou LED diody, prepinace, VGA aj. je nutne respektovat vyrobcem zvolene zapojeni.
- V celem prubehu semestru budeme pouzivat S3Edesky s XC3S500E
- Budeme pouzivat spinace, prepinace a led diody
UCF pro CLK
NET "CLK_50MHZ" LOC = "C9" | IOSTANDARD = LVCMOS33 ;
UCF pro diody - Discrete LEDS
NET "LED<7>" LOC = "F9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<6>" LOC = "E9" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<5>" LOC = "D11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<4>" LOC = "C11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<3>" LOC = "F11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<2>" LOC = "E11" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<1>" LOC = "E12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ; NET "LED<0>" LOC = "F12" | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8 ;
UCF pro prepinace - Slide switches
NET "SW<0>" LOC = "L13" | IOSTANDARD = LVTTL | PULLUP ; NET "SW<1>" LOC = "L14" | IOSTANDARD = LVTTL | PULLUP ; NET "SW<2>" LOC = "H18" | IOSTANDARD = LVTTL | PULLUP ; NET "SW<3>" LOC = "N17" | IOSTANDARD = LVTTL | PULLUP ;
UCF pro spinace - Push button switches
NET "BTN_EAST" LOC = "H13" | IOSTANDARD = LVTTL | PULLDOWN ; NET "BTN_NORTH" LOC = "V4" | IOSTANDARD = LVTTL | PULLDOWN ; NET "BTN_SOUTH" LOC = "K17" | IOSTANDARD = LVTTL | PULLDOWN ; NET "BTN_WEST" LOC = "D18" | IOSTANDARD = LVTTL | PULLDOWN ;
Priklady pro cviceni
Rozvrh cvičení
Týden | Datum | Náplň |
---|---|---|
1. | 25.2. - 29.2. | |
2. | 3.3. - 7.3. | |
3. | 10.3. - 14.3. | |
4. | 17.3. - 21.3. | |
5. | 24.3. - 28.3. | Velikonoční pondělí |
6. | 31.3. - 4.4. | Dodělání úloh z první půlky semestru |
7. | 7.4. - 11.4. | Psaní testbenchu k semestrální práci - 1. cvičení |
8. | 14.4. -18.4. | Psaní testbenchu k semestrální práci - 2. cvičení |
9. | 21.4. - 25.4. | Návrh a implementace - 1. cvičení |
10. | 28.4. - 2.5. | Návrh a implementace - 2. cvičení |
11. | 5.5. - 9.5. | Ladění - 1. cvičení |
12. | 12.5. - 16.5. | Ladění - 2. cvičení, začátek integrace |
13. | 19.5. - 23.5. | Integrace a psaní dokumentace(reporty) |
14. | 26.5. - 30.5. | Prezentace dosažených výsledků - zápočty |
- Časový plán se může dle obsahu laboratoří a zdatnosti studentů měnit
Cviceni 1
- Cílem tohoto cvičení je seznámit vás se základními konstrukty jazyka VHDL a s architekturou FPGA. Pro tento účel je předpřipraveno několik příkladů kombinačních a sekvenčních obvodů.
- Seznameni s ISE
- Vytvorte counter
Cviceni 2
- Realizujte priklady 1 a 2.
- Nepouzivejte zadne predpripravene soubory
- Podivejte se na vnitrni strukturu zapojeni v FPGA Implementation → Place & route →View and routed design (FPGA editor)
- Nezapomente si zkontrolovat piny v UCF souboru (zejmena pin V4)
Cviceni 3
- Realizujte priklady 3 a 4.
Cviceni 4
- Realizujte priklady 5 a 6.
Cviceni 5
Cast 1
- Zrealizujte obousmerný cítac
* Vstupy obvodu a ovládání
- btn_up – tlacítko, stiskem zapne/vypne cítání nahoru
- btn_down – tlacítko, stiskem zapne/vypne cítání dolu
* Výstupy obvodu
- value – hodnota cítace (binární)
- Navrhujte parametrizovatelné entity (GENERIC)
* Entitu btn_ed (detektor nábežné hrany na tlacítku) navrhnete tak, aby byla použitelná pro libovolný pocet tlacítek.
Cast 2
- Doplnte obvod z príkladu 1 o následující funkce:
- Výstup BUSY – aktivní tehdy, když cítac pracuje
- Saturacní cítac – pri dosažení hodnoty TOP pri cítání nahoru a hodnoty 0 pri cítání dolu se cítac zastaví (nepretece). Upravte i rídicí automat tak, aby v prípade, kdy má cítac hodnotu 0,
nereagoval na tlacítko btn_down a v prípade, kdy má cítac hodnotu TOP, nereagoval na tlacítko btn_up.
Cast 3
- Rozšírení cítace z casti 1
- BCD cítac místo binárního
- Prevodník z BCD kódu na 7-segmentový displej
* Vstupy obvodu a ovládání
- btn_up – tlacítko, stiskem zapne/vypne cítání nahoru
- btn_down – tlacítko, stiskem zapne/vypne cítání dolu
* Výstupy obvodu na diody
BCD kod -doplnit
Cast 4
- Zadání samostatné práce pro cvicení 5
- Samostatná práce zadaná na 5. cvičení – první zápočtová úloha.
- vyberte si ulohu z http://service.felk.cvut.cz/courses/X36JPO/digilent/zadani_lab_prace.htm a zrealizujte ji
- vstupy jsou na tlacitkach a spinacich
- vystupy jsou na led diodach (v pripade vice bitoveho vystupu vyclente spinac na prepinani vystupu)
Cviceni 6, 7
- Samostatná práce zadaná na 5. cvičení – první zápočtová úloha.
Cviceni 8
- Samostatná práce zadaná na 5. cvičení – první zápočtová úloha.
- Odevzdání druhé zápočtové úlohy.
- Zadani druhe zapoctove ulohy
Druhe zapoctove ulohy
- VGA test
- zrealizujte generator VGA signalu.
- na spinace umistete pridavani barevnych slozek RGB. Na kazdy spinac jednu barvu
- na ctvrty spinac umistete primitivni test - pruhy
- A/D, D/A prevodnik
- generujte trojuhelnikovy signal a pilu a posilejte jej na D/A prevodnik
- trojuhelnikovy signal - citani nahoru a dolu
- pila - citac s pretecenim do 0
- vystup zobrazte na osciloskopu
- D/A prevodnik komunikuje pres SPI rozhrani
- LCD
- prostudujte LCD radic
- vytvorte univerzalni interface pro vase kolegy aby mohli jednodusse zadavat znaky
- PS2 - 1
- posilejte znaky pres PS2 interface a prijimejte je na PC (testovaci program je hyperterminal)
- modul udelejte obecne aby vasi kolegove mohli vas modul vyuzit k odesilani znaku
- PS2 - 2
- prijimejte znaky pres PS2 a zobrazujte jej na LCD display
Cviceni 9, 10, 11
- Samostatná práce zadaná na 8. cvičení – druhá zápočtová úloha.
Cviceni 12
- Odevzdání druhé zápočtové úlohy.
Cviceni 13
- Odevzdání druhé zápočtové úlohy.
Zápočtový test. Odevzdání druhé zápočtové úlohy.
Cviceni 14
Klasifikace a zápočet.
Znamka | Pozadavky |
---|---|
1 | Odevzdana prvni semestralni uloha, odevzdana druha semestralni uloha vcetne dokumentace |
2 | Odevzdana prvni semestralni uloha, odevzdana druha semestralni uloha |
3 | Odevzdana prvni semestralni uloha |
Priklady
Kombinační obvody
Příklad 1 – vícevstupé hradlo OR
- Vytvorte jednoduche vstupni hradlo - vstupy jsou prepinace a spinace (celkem 8 vstupu) - vystup na led diodu
- spusťte syntézu pouze pro tento soubor pomocí příkazu Synthesize – XST z okna Processes.
- Vyzkoušejte příkaz View synthesis report z procesu Synthesize-XST a zjistěte počet a typ prostředků FPGA použitých pro toto hradlo
- Vyzkoušejte příkaz View RTL Schematic z procesu Synthesize-XST. (Vnitřní schéma komponenty se zobrazí po poklepání na komponentu, předchozí úroveň naopak poklepáním mimo komponentu.)
- Vyzkoušejte příkaz View Technology Schematic z procesu Synthesize-XST. Porovnejte s RTL schématem a s výsledky reportu.
Příklad 2 – multiplexor
- Vytvorte jednoduche vstupni hradlo - vstupy jsou 4 spinace a 2 prepinace na volbu adresy - vystup na led diodu
- Podivejte se na vnitrni strukturu v FPGA editoru
- Zjistěte počet a typ použitých prostředků FPGA a prohlédněte obě schémata
Příklad 3 – 4-bitová sčítačka
- Pomocí přepínačů (operand a) a spinacu (operand b) a led diod (výsledek) vyzkoušejte funkci obvodu
- Zjistěte počet a typ použitých prostředků FPGA a prohlédněte obě schémata
- vysledek pokud ma byt 5 bitovy tak museji byt i scitance 5 bitove - rozsireni provedete pomoci konstrukce q ⇐ (0 & a) + (0 & b); q je 5 bitove, a a b jsou 4 bitove
Sekvenční obvody
Příklad 4 – detektor hrany
- Pomocí spinace a LED vyzkoušejte funkci obvodu. Výstupní puls detektoru prodlužte na 50ms, aby byl okem pozorovatelný.
- Zjistěte počet a typ použitých prostředků FPGA a prohlédněte obě schémata
Příklad 5 – čítač
- Pomocí spinace a led diod (hodnota čítače) vyzkoušejte funkci obvodu. Periodu čítání nastavte na 0,5s.
- Zjistěte počet a typ použitých prostředků FPGA a prohlédněte obě schémata
Příklad 6 – předdělička
- Pomocí dvou přepínačů (perioda předděličky), spinace a LED vyzkoušejte funkci obvodu. Výstupní puls předděličky bude nastaven na 50ms, aby byl okem pozorovatelný. Perioda čítání bude nastavena na 0,5s.
- Zjistěte počet a typ použitých prostředků FPGA a prohlédněte obě schémata
Ostatní
Konzultace
- Ohledně konzultací se předem obracejte výhradně emailem na adresu simekm2@fel.cvut.cz
- Konzultační hodiny středa 11 - 12 hodin
Manuály
Electronic documents
- VHDL
- VHDL reference manual, installation program is here.
- VHDL CookBook in PostScript.
- Standard VHDL libraries, located in $MODELSIM/vhdl_src/std/, $MODELSIM/vhdl_src/ieee/ and $MODELSIM/vhdl_src/synopsys/
- ModelSim
- Manuals also located at $MODELSIM/docs/
- VHDL for synthesis
- Rules for writing synthesisable code (simple version in czech), (advanced version in english), courtesy of ASICentrum company.
- VHDL synthesis tutorial from VASCO
Internet resources
- VHDL tutorial - University of Nurnberg
- VHDL tutorial - learn by example
- Jim Frenzel pages, some links are not valid anymore.