Cílem kurzu je teoretické a praktické seznámení účastníků se základními programovacími technikami v jazyku VHDL a následná implementace do struktur typu FPGA/CPLD (hradlové pole). Předpokládá se doplnění o funkční / časovou simulaci obvodu. Po absolvování kurzu by měl být každý účastník schopen číst, modifikovat a vytvářet základní konstrukce v jazyku VHDL. Součástí kurzu je zapůjčení vývojové platformy s hradlovým polem, programovací USB kabel, referenční příklady a text vlastních přednášek s místem pro poznámky. Vývojová platforma je zapůjčena po celou dobu trvání kurzu pro účely výuky a tvorbu samostatných prací.
Vstupní znalosti: Základní znalosti logických obvodů a sítí.
Obsah kurzu je možno upravit dle požadavků objednatele - pokročilé techniky návrhu FPGA a periferních zařízení (optimalizace, DDR, QDR, LVDS, JESD204B, Ethernet a další).
1) Úvod do problematiky jazyků HDL
- Historie vývoje programovacích technik popisujících logické systémy
- Proč používat HDL jazyky, jejich přínos, výhody a stinné stránky
- Stručná zmínka o logických obvodech (kombinační a sekvenční logika)
- Úvod do jazyka VHDL 2019, 2008, 93
- Základní typy popisů obvodů ve VHDL, hierarchie
- structural
- dataflow
- behavioral
- Entita
- Architektura
- Konfigurace
- Process
- Package
- Podprogramy
- Atributy
- Definice signálů, proměnných + základní operace
- Datové typy
- Hierarchie a struktura
- Klíčová slova
- Simulace
- Základní operace – příklady a praktické cvičení – strukturální popis
2) Hlubší seznámení s problematikou návrhu obvodů ve VHDL
- Port - in, out, inout
- Generic
- Konstanty
- Operátory a operandy
- Logické
- Relační
- Aritmetické
- Ostatní
- Kombinační logika
- Multiplexery
- Dekodéry
- Enkodéry
- Latch
- Sekvenční logika
- Procesy
- Klopné obvody
- Čítač – up/down, enable, preset, reset, synchronní, asynchronní
- Jiné typy čítačů (BCD, Johnson, Gray)
3) Konečné stavové automaty FSM
- Úvod - Moore a Mealy
- Implementace pomocí jednoho, dvou nebo tří procesu
- Výčtový typ, jeho přetěžování
- Typy kódování FSM (binární, one-hot, auto, user)
- Simulace, zhodnocení rozdílů a možnosti nasazení jednotlivých typů v praktických aplikacích
- Praktická část
4) Pokročilé techniky VHDL I
- Konverze typů
- Definování nových typů a subtypů
- Funkce, procedury, for cykly, generic
- Packages II
- Simulace, praktická část
5) Pokročilé techniky VHDL II
- Komponenty
- Paměti RAM
- DCM Bloky a frekvenční syntéza
- Vstup výstupní buňky – standardy, DDR, LVDS
- Násobičky
- Další matematické operace
- Využití vnitřních zdrojů FPGA a jejich optimalizace
- Simulace a rozdíly mezi syntézou a simulací
Navazující a rozšiřující moduly (po dohodě libovolné téma)
Procesorová jádra ARM (Řady Zynq, SoC)
- Konfigurace systému
- Sběrnice AXI, AXI stream
- Periferní zařízení
- Tvorba vlastních periferních zařízení, zápis do paměti
Soft core procesor PicoBlaze
- Architektura
- Připojení paměti programu
- Připojování periferních zařízení
- Simulace
- Periferie – sériová linka, řadič LCD displeje, čtení unikátních identifikátorů
Soft core procesor Microblaze
- Architektura
- Připojení paměti (BRAM, Flash, SRAM, SDRAM, DDR II, DDR 4 ...)
- Připojování periferních zařízení
- Simulace
- Periferie – sériová linka, řadič LCD displeje
- Tvorba nových periferních zařízení
Nástroje pro rychlé generování kódu a funkčních bloků
- Coregen a připojení do struktury VHDL (netlist)
- Struktury typu FIFO
- Generovaní goniometrických funkcí
- Generování DPS funkcí
- Simulace a praktické experimenty
Časová omezení designu
- Přechody mezi časovými doménami
- Metastabilní stavy
- Setup a hold time
- Maximální pracovní frekvence
- Analýza designu, FPGA editor a ChipScope
Používané nástroje a prostředí
- Xilinx Vivado
- Xilinx Vivado HLS
- Altera - Quartus II
- Lattice - Lattice Diamond
- Lattice - ispLEVER
- Mentor Graphics - ModelSim