digitální obvody - umel.feec.vutbr.czrealizace logické funkce s využitím multiplexoru je ......

36
Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D.

Upload: others

Post on 27-Dec-2019

39 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Digitální obvody

Doc. Ing. Lukáš Fujcik, Ph.D.

Page 2: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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ů.

Page 3: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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 ⋅⋅+⋅=

Page 4: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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í

Page 5: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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í

Page 6: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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 !!!!

Page 7: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 8: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 9: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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 !!!

Page 10: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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.

Page 11: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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;

Page 12: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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;

Page 13: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 14: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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;

Page 15: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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;

Page 16: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 17: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 18: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 19: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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);

Page 20: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 21: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Příklad - detektor sudé parity

Page 22: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Příklad - detektor sudé parity

Page 23: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Detektor sudé parity – využití hradla XOR

Page 24: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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 !!!!!!!!!!!

Page 25: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 26: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 27: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Souběžné příkazy v jazyce VHDL – when-else

Koncepční schéma s využitím třech when-else

Page 28: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 29: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 30: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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;

Page 31: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Souběžné příkazy v jazyce VHDL – when-else

Příklad: dekodér 1z4, funkce je dána pravdivostní tabulkou

Page 32: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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

Page 33: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Souběžné příkazy v jazyce VHDL – when-else

Příklad: prioritní enkodér , funkce je dána pravdivostní tabulkou

Page 34: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

Souběžné příkazy v jazyce VHDL – when-else

Příklad: prioritní enkodér 4-to-2, funkce je dána pravdivostní tabulkou

Page 35: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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.

Page 36: Digitální obvody - umel.feec.vutbr.czRealizace logické funkce s využitím multiplexoru je ... Zadání: Nádrž v chemické továrně je potřeba vybavit ochranným systémem

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;