Principy VHDL
Jazyk pro popis hardwaru. (Hardware Description Language)
-
Výhodou obvodové implementace je její výraznější rychlost, vyšší paralelismus, specifické komponenty (Fourierova transformace). Obvykle také menší plocha čipu a spotřeba energie.
-
Nevýhodou jsou náklady, vyšší než u obecného procesoru, obtížnější návrh a jednoúčelnost.
Návrh číslicového obvodu probíhá ve třech krocích:
1) Vstup
- odladěný zdrojový kód (např. ve VHDL)
- nebo schéma zapojení, požadavek na celkové zpoždění
2) Syntéza
- transformace popisu ze vstupu na schéma zapojení na úrovni hradel
Způsoby popisu číslicového obvodu
- Strukturní popis – popisuje strukturu obvodu
- Behaviorální popis – popis chování
VHDL popisuje číslicová zařízení a jednotlivé části pomocí komponent.
- Entita – definuje rozhraní komponenty
- Architektura – popisuje chování nebo strukturu komponenty
Entita
Popisuje rozhraní mezi komponentou a okolím. Rozhraní komponenty se skládá ze signálů rozhraní a generických parametrů. Signály rozhraní mohou být podle směru v módu IN, OUT nebo INOUT.
entity NAND is
-- parametry
generic (DATA_WIDTH len: integer := 0);
-- signály rozhraní
port (A : in std_logic_vector (DATA_WIDTH-1 downto 0);
I : in std_logic_vector (len - 1 downto 0);
O : out std_logic_vector (len - 1 downto 0)
);
end entity register;
Porty entity jsou speciální signály, se kterými lze provádět omezené operace čtení a zápisu. Kromě své funkce rozhraní entity mohou být použity jako lokální signály v rámcipříslušné architektury.
- In – vstupní port
- Out - výstupní port
- Inout – vstupně výstupní port, který umožňuje obousměrnou komunikaci a používá se např. pro realizaci sběrnice
- Buffer – je v podstatě výstupní port, ale jeho obsah je možné číst
- Linkage – směr toku dat neznámý
Architektura
Definuje chování nebo strukturu komponenty. Je vždy svázaná s entitou, která definuje rozhraní s okolím.
architecture name_of_architecture of name_of_entity is
-- deklarační část
begin
-- Příkazy (provádějí se paralelně, jsou to procesy)
end architecture name_of_architecture;
Konstrukce jazyka
- Konstanty
CONSTANT constant_name : type_name [:= value];
- Proměnné
- určeny pro lokální uložení dat. Pro přiřazení do proměnné se používá symbol
:=
. - Mohou být použité pouze v procesu
- Hodnota proměnné se mění ihned po přiřazení.
VARIABLE variable_name : type_name [:= value];
- určeny pro lokální uložení dat. Pro přiřazení do proměnné se používá symbol
- Signály
- slouží pro komunikaci mezi VHDL moduly a typicky přímo odpovídají existenci fyzického vodiče.
- oproti proměnným nedochází u signálů k bezprostřední změně hodnoty.
- všechny procesy nejprve provedou vlastní výpočty a teprve pak se modifikují všechny změněné hodnoty. Tento způsob výpočtu eliminuje vliv pořadí, ve kterém jsou procesy prováděny.
SIGNAL signal_name : type_name [:= value];
- Příklad detekce náběžné hrany hodin
clk'event AND clk='1'
Příklady popisu
Behaviorální popis
Architektura složena z jednoho a více procesů. Cílem je pouze popsat, jak se mění výstupy v závislosti na změnách vstupních signálů.
architecture behv of NAND is
begin
nand_proc : process (A, B)
begin
Y <= not (A AND B);
end process nand_proc;
end behv;
Proces
Senzitivity list procesu – proces je spuštěn, pokud dojde ke změně signálu v senzitivity listu.
name: process (sensitivity list)
-- declarations
begin
-- sequential statements
end process name
Strukturální popis
Popisuje, z čeho se daný systém skládá. Komponenty na nejnižší úrovni jsou vždy popsány behaviorálně.
architecture struct of NAND is
signal ab_and : stdl_logic_vector(7 downto 0);
begin
and_i: entity work.AND
port map (In0 => A, In1 => B, Output => ab_and);
not_i: entity work.NOT
port map (In0 => ab_and, Output => Y);
end behv;