Digitální obvody
Doc. Ing. Lukáš Fujcik, Ph.D.
Realizace kombinačních logických funkcí
Realizace kombinační logické funkce = sestavení zapojeníobvodu, který ze vstupních proměnných vytvoří výstupníproměnné v souhlasu se zadanou logickou funkcí.
použití moderních mikroelektronických součástekčasto stačí jediný IO (katalog nebo PROM nebo PLD)
základní způsob realizace kombinační logické funkce = pomocí kombinačních logických obvodů představujících realizaci základních logických členů v integrované podobě, kdy se vychází ze zápisu logické funkce v některém z výše uvedených tvarů součtu součinů nebo součinu součtů.
Realizace kombinačních logických funkcí
Při realizaci - zápis funkce v součtovém nebo součinovém tvaru výhodné použít logické členy téhož typu, tj. buďsoučinové nebo součtové
cbacay ⋅⋅+⋅=
Realizace kombinačních logických funkcíZápis v součtovém tvaru
cbacay ⋅⋅+⋅=
Realizace funkce y na základě součtového tvaru zápisu
( ) ( )( )cbacay ⋅⋅⋅⋅= ( ) ( )cbacay ++++=
3 hradla, 14 tranz. 4 hradla, 16 tranz., větší zpoždění
Realizace kombinačních logických funkcíZápis v součinovém tvaru
Realizace funkce y na základě součinového tvaru zápisu
( ) ( ) ( )cacabay +⋅+⋅+=
( ) ( ) ( )( )cacabay +++++= ( ) ( ) ( )cacabay ⋅⋅⋅⋅⋅=4 hradla, 18 tranz. 5 hradel, 20 tranz., větší zpoždění
Realizace kombinačních logických funkcíRealizace FPGA nebo CPLD
( ) ( ) ( )cacabay +⋅+⋅+=cbacay ⋅⋅+⋅= nebosoučtový tvar součinový tvar
NA ZPŮSOBU ZÁPISU NEZÁLEŽÍ !!!!
NÁVRHOVÝ SYSTÉM DANOU FUNKCI UPRAVÍA ZMINIMALIZUJE !!!!
Realizace kombinačních logických funkcí2-to-1 MUX
BSSAy +=
S A B Y 0 0 0 00 0 1 00 1 0 10 1 1 11 0 0 01 0 1 11 1 0 01 1 1 1
Realizace kombinačních logických funkcí4-to-1 MUX
01010101 SDSSCSSSBSSAy +++=
S1 S0 Y
0 0 A
0 1 B
1 0 C
1 1 D
Realizace logických funkcí pomocí MUX
A B C Y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
A B Y0 0 00 1 C
1 0 C
1 1 1
A Y0 BC1 B+C
Vyjádřete výslednou logickou funkci !!!
Realizace logických funkcí pomocí MUX
Závěr:Realizace logické funkce s využitím multiplexoru je jen dalším způsobem, jak vyjádřit logickou funkci. S obecné rovnice multiplexoru se dá následněelegantně vyjádřit výsledná logická funkce.
VHDL popis MUX 2-to-1 – komb. log. funkce2-to-1 MUX – VHDL popis
entity mux_2 isPort (A,B,C,D : in STD_LOGIC;
S : in STD_LOGIC);Y : out STD_LOGIC);
end mux_2;
architecture Behavioral of mux_2 isbegin
Y <= (A and not S) or (B and S);
end Behavioral;
VHDL popis MUX 4-to-1 – komb. log. funkce4-to-1 MUX – VHDL popis
entity mux_4 isPort (A,B,C,D : in STD_LOGIC;
S : in STD_LOGIC_VECTOR (1 downto 0); Y : out STD_LOGIC);
end mux_4;
architecture Behavioral of mux_4 isbegin
y <= (A and not S(1) and not S(0)) or (B and S(1) and not S(0)) or(C and not and S(1) S(0)) or(D and S(1) and S(0));
end Behavioral;
Standard IEEE 1076 definuje dále typy (pole) std_ulogic_vector a std_logic_vector, některé další subtypy a také funkce pro přetížení operátorů, konverzní funkce a dalšíužitečné pomůckyS typem std_logic a s odpovídajícím složeným typemstd_logic_vector pracujeme při syntéze nejčastěji.Celočíselné typy - SIGNAL a: integer RANGE 0 TO 255;Typy pole - Nejběžnější typy tohoto druhu jsou definovány ve standardech 1076 a 1164TYPE bit_vector IS ARRAY (natural RANGE <>) OF bit; TYPE std_logic_vector IS ARRAY (natural RANGE <>) OF std_logic;
Typy dat
Signály typu std_logic, std_logic_vector
Standard IEEE 1164 definuje typ std_logictype std_logic is ( 'U', -- Uninitialized
'X', -- Forcing Unknown '0', -- Forcing 0'1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't Care );
Vnitřní signál – signál vyskytující se pouze uvnitř obvodu, není definován v entitě!!!!
Př.: Vytvoření vnitřního 1-bitového signálu x - vniSIGNAL x: std_logic;
Př.: Vytvoření vnitřního 8-bitového signálu xSIGNAL x: std_logic_vector (7 downto 0);
Použití typů std_logic, std_logic_vector – před deklaraci entity je nutné zapsatlibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;
VHDL popis MUX 2-to-1 – komb. log. funkcePoužití vnitřních signálů
entity mux_2 isPort (A,B : in STD_LOGIC;
S : in STD_LOGIC);Y : out STD_LOGIC);
end mux_2;
architecture Behavioral of mux_2 issignal x1, x2 : std_logic;
begin
Y <= x1 or x2;x1 <= A and not S; -- vnitrni signal x1x2 <= B and S; -- vnitrni signal x2
end Behavioral;
Příklad - Nádrž v chemické továrně
Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem. V nádrží je nutné sledovat teplotu, tlak a úroveň hladiny kyseliny. Ochranný systém je zobrazen na obrázku. Obsahuje tři senzory a tři indikační diody.
ochranný systém
D1
D2
D3
teplotní senzor
tlakový senzor
senzor úrovněhladiny
A
B
C
Příklad - Nádrž v chemické továrně
Vlastnosti: 1) Dioda D1 indikuje stav, kdy je v nádrži vše v pořádku a může dojít
k překroční hodnot pouze jedné sledované veličiny.2) Dioda D2 indikuje stav, kdy dojde k překročení pouze dvou hodnot
sledovaných veličin.3) Dioda D3 indikuje stav, pokud všechny tři senzory detekují, že došlo k
překročení hodnot sledovaných veličin.
Možnosti realizace: 1) Pravdivostní tabulka + diskrétní dig. součástky – minimalizace, realizace
pomocí diskrétních digitálních součástek řady 74.. nebo 40..2) Pravdivostní tabulka + obvod CPLD nebo FPGA – není potřeba minimalizace,
realizace v návrhovém systému ISE Webpack v jazyce VHDL do obvodu CPLD nebo FPGA (návrhový systém má v sobě zabudované minimalizační a optimalizační algoritmy)
3) Behaviorální popis + obvod CPLD nebo FPGA – behaviorální popis systému v jazyce VHDL, není potřeba pravdivostní tabulka
Příklad - Nádrž v chemické továrně
Řešení 1 – pravdivostní tabulka + diskrétní dig. součástky:
A B C D1 D2 D30 0 0 1 0 00 0 1 1 0 00 1 0 1 0 00 1 1 0 1 01 0 0 1 0 01 0 1 0 1 01 1 0 0 1 01 1 1 0 0 1
0 0 1 0
0 1 0 1A
B
C
BACBCAD ⋅+⋅+⋅=1
CBACBACBAD ⋅⋅+⋅⋅+⋅⋅=2
CBAD ⋅⋅=3Minimalizace - DeMorganovy zákony
Příklad - Nádrž v chemické továrně
Řešení 2 – pravdivostní tabulka + obvody CPLD nebo FPGA:1) Možnost realizovat minimalizovanou funkci 2) Možnost realizovat přímo z pravdivostní tabulky (minimalizační a
optimalizační algoritmy zabudované v ISE WebPack)
entity digi_top isPort ( a,b,c : in STD_LOGIC;
d1,d2,d3 : out STD_LOGIC);end digi_top;
architecture Behavioral of digi_top issignal x1,x2,x3 : std_logic; -- vnitrni signaly
begin-- detekce prekroceni maximalne jedne sledovane veliciny-- (neminimalizovana funkce)d1 <= (not a and not b and not c) or
(not a and not b and c) or(not a and b and not c) or(a and not b and not c);
Příklad - Nádrž v chemické továrně
-- detekce prekroceni dvou sledovanych velicinx1 <= not(a) and b and c;x2 <= a and b and not(c);x3 <= a and not(b) and c;d2 <= x1 or x2 or x3;
-- detekce prekroceni vsech tri sledovanych velicind3 <= a and b and c;
end Behavioral;
&
&
not abc
ab
not c
&anot b
c
1d1
x1
x2
x3
Příklad - detektor sudé parity
Příklad - detektor sudé parity
Detektor sudé parity – využití hradla XOR
Souběžné příkazy v jazyce VHDL – when-else
Výraz boolean_expr_i (i=1,2,3,…,n) je Boolean výraz a vrací hodnotu true nebo falseTyto Boolean výrazy se provádějí postupně dokud není jeden z těchto výrazu nenabývá logickou hodnotu trueSignálu signal_name se následně přiřadí příslušná hodnota value_expr_i (i=1,2,3,…,n) podle Boolean výrazuPoslední hodnota value_expr_n se přiřadí, pokud ani jeden z Booleanvýrazů nenabývá logickou hodnotu trueZáleží na pořadí řádku, je zde definována priorita !!!!!!!!!!!
Souběžné příkazy v jazyce VHDL – when-else
Koncepční schéma s využitím MUX pro souběžný příkaz when-else
Souběžné příkazy v jazyce VHDL – when-else
Koncepční schéma s využitímjednoho when-else
Koncepční schéma s využitímdvou when-else
Souběžné příkazy v jazyce VHDL – when-else
Koncepční schéma s využitím třech when-else
Souběžné příkazy v jazyce VHDL – when-else
Schéma na hradlové úrovni1-bit MUX 2-1
Schéma na hradlové úrovni3-bit MUX 2-1
Souběžné příkazy v jazyce VHDL – when-else
Příklad: mějme následující popis v jazyce VHDL
Koncepční schéma Schéma na hradlové úrovni
Souběžné příkazy v jazyce VHDL – when-else
Příklad: 1-bit MUX 4-1
entity mux_4 isPort (A,B,C,D : in STD_LOGIC;
S : in STD_LOGIC_VECTOR (1 downto 0); Y : out STD_LOGIC);
end mux_4;
architecture Behavioral of mux_4 isbegin
y <= A when (S="00") elseB when (S="01") elseC when (S="10") elseD;
end Behavioral;
Souběžné příkazy v jazyce VHDL – when-else
Příklad: dekodér 1z4, funkce je dána pravdivostní tabulkou
Praktické využití dekodéru 1z4
Řízení komunikace čtyř zařízení s nadřazeným systémem
nadřazený systém(např. mikrokontrolér)
dekodér1z4
dev0
dev1
dev2
dev3
y0 y1 y2 y3en
a
b
Souběžné příkazy v jazyce VHDL – when-else
Příklad: prioritní enkodér , funkce je dána pravdivostní tabulkou
Souběžné příkazy v jazyce VHDL – when-else
Příklad: prioritní enkodér 4-to-2, funkce je dána pravdivostní tabulkou
Příklad - Nádrž v chemické továrně
Vlastnosti: 1) Dioda D1 indikuje stav, kdy je v nádrži vše v pořádku a může dojít
k překroční hodnot pouze jedné sledované veličiny.2) Dioda D2 indikuje stav, kdy dojde k překročení pouze dvou hodnot
sledovaných veličin.3) Dioda D3 indikuje stav, pokud všechny tři senzory detekují, že došlo k
překročení hodnot sledovaných veličin.
Souběžné příkazy v jazyce VHDL – when-else
Příklad: chemická nádrž ze snímku 14entity nadrz is
Port ( a,b,c : in STD_LOGIC;d1,d2,d3 : out STD_LOGIC);
end nadrz;
architecture Behavioral of nadrz issignal abc : std_logic_vector(2 downto 0);
Beginabc <= a&b&c; --parametr slouceni, vytvoreni vektoru-- detekce prekroceni maximalne jedne sledovane velicinyd1 <= ’1’ when (abc=”100” or abc=”010” or abc=”001”
or abc=”000”) else ’0’;-- detekce prekroceni dvou sledovanych velicind2 <= ’1’ when (abc=”110” or abc=”101” or abc=”011”)
else ’0’;-- detekce prekroceni vsech tri sledovanych velicind3 <= ’1’ when (abc=”111”) else ’0’;
end Behavioral;