BI-SAP.21 Struktura a architektura počítačů
Jdi na navigaci předmětu

Často užívané bloky (IP jádra)

1. Knihovna lib_SAP

Knihovnu lib_SAP můžete stáhnout zde.

Varování:

Při přenášení projektu mezi dvěma PC (např. doma a ve škole) je potřeba pohlídat umístění adresáře s lib_SAP, případně lib_SAP importovat znovu, pokud se v projektu ukáže jako prázdná. Vivado může havarovat při otevírání schématu, pokud cesta lib_SAP nesedí!

Knihovna obsahuje tyto prvky:

  • základní logická hradla (AND, OR, XOR, INV)
  • oddělovač (BUF)
  • zdroj logické 0 a 1 (GND a VCC)
  • multiplexer (MUX)
  • paměťový element (klopný obvod) typu D (DFF)
  • odstraňovač zákmitů na tlačítku (Debounce)
  • rozdělovač sběrnice na jednotlivé vodiče (Splitter)

Základní verze těchto prvků si můžete prohlédnout na následujícím obrázku. Pro lepší orientaci začínají názvy všech prvků z knihovny lib_SAP podtržítkem.

Prvky z knihovny lib_SAP

U většiny prvků však můžete nastavit jejich vlastnosti poklepáním na prvek (nebo kliknutím pravým tlačítkem a volbou Customize Block…​, nebo ikonou Customize Block).

1.1. Základní logická hradla (AND, OR, XOR, INV)

Hradla AND, OR a XOR vykonávají příslušnou logickou funkci.

Lze nastavit:

  • Počet vstupů (2-8).
  • Které vstupy mají být invertované.
  • Zda má být invertovaný výstup.

Hradlo INV je logická negace bez dalších možností nastavení.

1.2. Oddělovač (BUF)

Provádí čistou kopii vstupu na výstup. Ve starších návrhových systémech se toto hradlo hodilo pro oddělení vodičů. V systému Vivado nebude mít nejspíše využití.

1.3. Zdroj logické 0 a 1 (GND a VCC)

Vytvoří logickou 0 (GND) resp. logickou 1 (VCC).

1.4. Multiplexer (MUX)

Provádí výběr jednoho vstupu Ix na základě hodnoty přivedené na vstup(y) Sel.

Lze nastavit:

  • Šířku (počet bitů) vstupů a výstupu.
  • Počet vstupů (2 nebo 4).
  • Zda mají být vstupy/výstupy sběrnice, nebo jednotlivé vodiče (pro každý vstup/výstup samostatně).

1.5. Paměťový element (klopný obvod) typu D (DFF)

Jednobitová paměť – v okamžiku náběžné hrany na hodinovém signálu clk uloží (a přenese na výstup q) hodnotu ze vstupu d.

Lze nastavit:

  • Zda má být k dispozici vstup ce (Clock Enable), který může zablokovat (pomocí logické 0) ukládání hodnoty ze vstupu d.
  • Zda má být k dispozici vstup reset, který může paměť vyresetovat (uložit do něj logickou 0). reset je tzv. synchronní, takže aby se obvod vyresetoval, musí na něm být logická 1 a zároveň musí přijít náběžná hrana na hodinovém signálu clk.

1.6. Odstraňovač zákmitů na tlačítku (Debounce)

Tlačítka na vývojovém kitu nejsou ošetřena proti tzv. zákmitům. Jedním fyzickým zmáčknutím tlačítka můžete nechtěně vygenerovat několik logických stisků a obvod se může tvářit, že jste tlačítko stiskli opakovaně. Pro odstranění tohoto problému vložte tento blok mezi vstup tlačítka a vstup do vašeho obvodu.

Vstup clk připojte na hodinový vstup (FPGA pin W5).

Lze nastavit:

  • Zda se má délka filtrování nastavit optimálně pro syntézu (cca 20 ms), nebo pro simulaci (cca 100 ns). O aktuálním nastavení informuje obrázek a text na bloku. Simulační nastavení se však v této chvíli nepoužívá, takže změna nastavení není potřeba.

1.7. Rozdělovač sběrnice na jednotlivé vodiče (Splitter)

Sběrnice umožňuje vést více vodičů najednou a pod jedním jménem. Některé prvky (multiplexer, čítač, …​) mohou obsahovat vícebitové vstupy/výstupy zapojené jako sběrnice. Pokud potřebujete rozpojit sběrnici na více vodičů, pak použijte tento blok.

Lze nastavit:

  • Šířku (počet bitů) vstupu a tím i počet výstupů.

2. Bloky vestavěné v systému Vivado

Systém Vivado obsahuje připravené bloky, které však zpravidla implementují komplexní bloky (rychlá komunikační rozhraní, práce s pamětí, zpracování audia/videa apod.). Některé bloky jsou ale použitelné i pro základní operace. Tyto bloky se nacházejí v knihovně Vivado RepositoryBasic Elements.

  • spojovač vodičů do sběrnice (Concat)
  • vícebitová konstanta (Constant)
  • oddělovač jednoho vodiče ze sběrnice (Slice)
  • binární čítač (Binary Counter)

Základní verze těchto prvků si můžete prohlédnout na následujícím obrázku.

Prvky ze systému Vivado

2.1. Spojovač vodičů do sběrnice (Concat)

Funkce tohoto bloku je opačná oproti bloku Splitter z knihovny lib_SAP, tj. blok umožňuje spojit více vodičů (ale i menších sběrnic) do jedné velké sběrnice.

Lze nastavit:

  • Počet vstupů (1-32).
  • Pro každý vstup nezávisle jeho šířku (po přepnutí přepínače z Auto na Manual).

Nejnižší vstup bude i nejnižším bitem ve sběrnici.

2.2. Vícebitová konstanta (Constant)

Jednobitové konstanty 0 i 1 jsou k dispozici v knihovně lib_SAP, pokud však v návrhu potřebujete vícebitovou konstantu a nechcete ji skládat po jednotlivých bitech, pak můžete použít tento blok.

Lze nastavit:

  • Šířku konstanty.
  • Hodnotu konstanty.

2.3. Oddělovač jednoho vodiče (nebo části sběrnice) ze sběrnice (Slice)

Slice umožňuje oddělit část sběrnice (nebo jednotlivý vodič) od sběrnice, funkce je podobná jako u bloku Splitter, ale u tohoto bloku lze vybrat jen jeden vodič, případně řez sběrnice.

Lze nastavit:

  • Šířku vstupu.
  • Bity, které se mají přenést na výstup v rozsahu od vyššího bitu (Din From) do nižšího (Din Down To).
  • Šířku výstupu (nastaví se automaticky při nastavení rozsahu).

2.4. Binární čítač (Binary Counter)

O možnosti použití tohoto prvku (zejména pro závěrečnou úlohu) se domluvte se svým cvičícím!

Čítač v základním nastavení přičítá jedničku ke svému výstupu při každé náběžné hraně hodinového signálu. Pokud se dostane na maximální hodnotu, tak přeteče zpět na nulu.

Lze nastavit:

  • Záložka Basic:
    • Šířku výstupu (Output Width).
    • O kolik se má přičíst při každé náběžné hraně hodinového signálu (Increment Value) šestnáctkově.
    • Loadable – zda mají být k dispozici vstupy load a l. Pokud je na vstupu load logická 1, pak čítač při náběžné hraně hodinového signálu nepřičítá, ale uloží hodnotu ze vstupu l. Uložení hodnoty musí být potvrzeno signálem ce (Clock Enable), pokud je vstup ce zapnutý.
    • Restricted Count – omezení maximální hodnoty, do které čítač čítá, než se vrátí zpět na nulu.
    • Count Mode – nastavení, zda bude čítač počítat nahoru, dolů, nebo zda bude mít další vstup, kterým půjde směr určit.
    • Zda má být k dispozici výstup tresho, který nabývá logické 1 ve chvíli, kdy je na hlavním výstupu Q (šestnáctková) hodnota zadaná v poli Treshold Value.
  • Záložka Control:
    • Zda má být k dispozici vstup ce (Clock Enable), který může zablokovat (pomocí logické 0) přičítání hodnoty. Logická 0 blokuje i ukládání hodnot ze vstupu l.
    • Zda má být k dispozici vstup sclr (synchronní reset), který může čítač vyresetovat (uložit do něj výchozí hodnotu – nulu). Aby se obvod vyresetoval, musí být na sclr logická 1 a zároveň musí přijít náběžná hrana na hodinovém signálu clk.