OBSAH WEBU
ČTĚTE!
Toto je starší verze dokumentu!
Myšlenka
Jazyk pro popis hardwaru (Hardware Description Language)
Algoritmus
Algoritmus je konečná uspořádaná množina úplně definovaných kroků pro vyřešení nějakého problému. Intuitivně algoritmem rozumíme postup, který nás dovede k řešení úlohy. Formálněji vyjádřeno se jedná o přesně definovanou konečnou posloupnost příkazů (kroků), jejichž prováděním pro každé přípustné vstupní hodnoty získáme po konečném počtu kroků odpovídající hodnoty výstupní.
algoritmus lze naimplementovat softwarově, hardwarově, jejich kombinace
Jsme-li schopni naimplementovat sekvenci, selekci, iteraci, je možné řešit každý algoritmicky řešitelný problém.
výhody obvodové implementace
nevýhody obvodové implementace
Způsoby popisu
elementární komponenty jsou popsány behaviorálně (např. AND ⇒ nemá smysl popisovat jeho strukturu)
Proces syntézy
-- knihovny library IEEE; use IEEE.std_logic_1164.all; -- popis rozhraní entity FA is port ( A, B, CI : in std_logic; S, COUT : out std_logic); end FA; -- realizace rozhraní architecture RTL of FA is begin S <= A xor B xor CI; COUT <= (A and B) or (A and CI) or (B and CI); end RTL;
Popis kódu
definice komponent
library IEEE; use IEEE.std_logic_1164.all; entity OR3 is port ( A, B, C : in std_logic; Z : out std_logic); end OR3; architecture DF of OR3 is begin Z <= A or B or C; end DF;
+ další komponenty
popis obvodu z komponent
library IEEE; use IEEE.std_logic_1164.all; entity FA is port( A, B, CI : in std_logic; S, COUT : out std_logic); end FA; architecture LIB of FA is component EO port( A, B : in std_logic; Z : out std_logic); end component; component AN2 port( A, B : in std_logic; Z : out std_logic); end component; component OR3 port( A, B, C : in std_logic; Z : out std_logic); end component; signal S1, A1, A3, A2 : std_logic; begin u0 : EO port map( A => A, B => B, Z => S1); u1 : EO port map( A => CI, B => S1, Z => S); u2 : AN2 port map( A => A, B => B, Z => A1); u3 : AN2 port map( A => A, B => CI, Z => A2); u4 : AN2 port map( A => B, B => CI, Z => A3); u5 : OR3 port map( A => A1, B => A2, C => A3, Z => COUT); end LIB;
Popis kódu
architecture BEH of FA is begin p1 : PROCESS(A, B, CIN) BEGIN IF (A='1' AND B='1') OR (A='1' AND CIN='1') OR (B ='1' AND CIN='1') THEN COUT <= '1'; ELSE COUT <= '0'; END IF; S <= A XOR B XOR CIN; END PROCESS; end BEH;
Popis kódu
sada testů pro danou komponentu
-- testbench pro FA library ieee; use ieee.std_logic_1164.all; entity tb_fa is end tb_fa; architecture arch_tb_fa of tb_fa is -- pomoci techto signalu se pripojime k testovane jednotce signal A, B, CI: std_logic; signal S, COUT : std_logic; -- tuto jednotku budeme testovat ("deklarace") component FA port ( A, B, CI : in std_logic; S, COUT : out std_logic); end component; begin -- "instance" testovane jednotky je pripojena pomoci zavedenych signalu UUT : FA port map ( S => S, COUT => COUT); -- vlastni testovani zkousi vsechny kombinace na vstupech process begin A <= '0'; B <= '0'; CI <= '0'; wait for 10 ns; A <= '0'; B <= '0'; CI <= '1'; wait for 10 ns; A <= '0'; B <= '1'; CI <= '0'; wait for 10 ns; A <= '0'; B <= '1'; CI <= '1'; wait for 10 ns; A <= '1'; B <= '0'; CI <= '0'; wait for 10 ns; A <= '1'; B <= '0'; CI <= '1'; wait for 10 ns; A <= '1'; B <= '1'; CI <= '0'; wait for 10 ns; A <= '1'; B <= '1'; CI <= '1'; wait for 10 ns; end process; end arch_tb_fa;
Průběh testů
umožňuje vícehodnotové stavy
std_logic - jeden vodič
std_logic_vector - skupina vodičů (např. sběrnice)
definuje aritmetické operátory nad binárními vektory pro operace sčítání (+), odčítání (-) a násobení (*).
umožňuje pracovat s čísly se znaménkem i bez znaménka tak, že zavádí dva nové typy signed a unsigned. Binární hodnotu h datového typu std_logic_vector můžeme zkonvertovat na typ unsigned zápisem unsigned (h) a na typ signed zápisem signed(h).
Pomocí funkce conv_integer je možné provádět konverze mezi hodnotami typu integer a std_logic_vector, např.
signal c : std_logic_vector (3 downto 0); signal ci : integer; c <= “1000”; ci <= conv_integer(signed(c)); -- v ci bude -8
CONSTANT constant_name : type_name [:= value]; CONSTANT PI : REAL := 3.14; CONSTANT SPEED : INTEGER;
Diskuze
VHDL (VHSIC hardware description language)
VHSIC (very-high-speed integrated circuits)
Zde je příklad strukturálního popisu sčítačky: http://www.urel.feec.vutbr.cz/~kolouch/pld/2_cviceni/kapitola03_05.html