bpc-los_08 - Metastabilita, VHDL-popis sekv. obvodů
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
že sekvenční příkazy se používají pouze pro sekvenční
obvody!
Procesy v jazyce VHDL - spouštění
Každý proces je spuštěn automaticky na začátku simulace. Další
spuštění je možné dvěma způsoby:
• spuštění na základě signálů uvedených v citlivostním seznamu
(sensitivity list) - pokud dojde ke změně hodnoty jakéhokoliv
signálu, který je uveden v citlivostním seznamu, dojde ke
spuštění procesu. (Proces který obsahuje definici citlivostního
seznamu, nesmí v těle obsahovat příkaz WAIT.),
• na základě prázdného citlivostního seznamu a příkazu WAIT -
pomocí tohoto příkazu je možné proces pozastavit na zvolený
čas (WAIT FOR), splnění podmínky (WAIT UNTIL), změny signálu
(WAIT ON), případně kombinace více zastavení. Jakmile proces
bez citlivostního seznamu skončí, okamžitě se znovu spustí.
Procesy v jazyce VHDL - příklad
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY SimpleProcess IS PORT(
a: IN std_logic;
y: OUT std_logic;
);
END SimpleProcess;
ARCHITECTURE Behavioral OF SimpleProcess IS
BEGIN PROCESS (a) -- Proces s citlivost. seznamem na signál a
BEGIN y <= a;
END PROCESS;
END Behavioral;
Procesy v jazyce VHDL - varianty
přiřazení
Významným rysem procesu je jeho algoritmický charakter. Je ovšem
významný rozdíl, pokud je pro výsledek přiřazení uvnitř těla procesu
použit signál nebo proměnná.
• Pro signály platí tzv. odložené přiřazení (scheduled assignment) -
pokud jsou v těle procesu postupně přiřazovány jednomu
signálu
různé hodnoty, má tento signál hodnotu odpovídající poslednímu
přiřazovacímu příkazu v procesu. Přičemž až do konce procesu
má
signál vždy svoji původní hodnotu. Lze si tedy představit, že k
přiřazení všech hodnot signálům dojde najednou až v okamžiku
skončení procesu, dle poslední signálu přiřazené hodnoty.
• Pro proměnné platí tzv. bezprostřední přiřazení (immediate
assignment) -
okamžité přiřazení (jako platilo pro signály mimo
proces), platí
uvnitř procesu pouze pro proměnné.
Procesy v jazyce VHDL - chybný příklad
&
y
a0
a1
a2
a3
Procesy v jazyce VHDL - chybný příklad
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY And4 IS PORT(
a: IN std_logic_vector(3 DOWNTO 0);
);
END And4;
ARCHITECTURE Behavioral OF And4 IS
BEGIN PROCESS (a) -- Proces s citlivost. seznamem na signál a
y: BUFFER std_logic;
&
y
a0
a1
a2
a3
BEGIN y <= '1';
FOR i IN a'range LOOP y <= a(i) AND y;
END LOOP;
END PROCESS;
END Behavioral;
Procesy v jazyce VHDL - chybný příklad