Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D.
Obvody s třístavovým výstupem dva tranzistory: vodivostní kanál typ N vodivostní kanál typ P X CS 3 stavový sa výstup Y P logika X 3 stavový výstup W N CS
Obvody s třístavovým výstupem Vlastnosti třístavových výstupů : řízení výběrovým signálem CS - Chip Select při CS = 1 => W = 0 Y=1 tranzistory jsou uzavřené - vysoká impedance Z při CS = 0 => W = Y = not Xna výstupu je signál X Využití třístavových výstupů: propojování obvodů pomocí společných sběrnic efektivní implementacemultiplexorů s mnoha vstupy multiplexování LED diod - 3 piny řídí 6 LED (charlieplexing)
Obvody s třístavovým výstupem Charlieplexing: Prahové napětí LED diody je např. U T =2 V FPGA/MCU N pinů uřídí N(N-1) LED diod LED3 LED4 LED5 LED6 LED1 LED2
Dvojsměrný budič sběrnice S jedním 3-stavovým budičem výstupním
Dvojsměrný budič sběrnice S dvěma 3-stavovými budiči vstupním a výstupním dir FPGA/ASIC logika sig_out sig_inout logika sig_in
Dvojsměrný port v jazyce VHDL Popis dvojsměrného portu v jazyce VHDL entity bidir is port( pin_io: inout std_logic;... begin sig_out <= vyraz_pro_vystupni_signal;... vnitrni_signal <= vyraz_se_sig_in;... pin_io <= sig_out when dir = '1' else 'Z'; sig_in <= pin_io;...
Dvojsměrný port v jazyce VHDL Pro použití zapojení se dvěma budiči je potřeba poslední řádek upravit: entity bidir is port( pin_io: inout std_logic;... begin sig_out <= vyraz_pro_vystupni_signal;... vnitrni_signal <= vyraz_se_sig_in;... pin_io <= sig_out when dir = '1' else 'Z'; sig_in <= pin_io when dir = '0' else 'Z';...
Sběrnice s třístavovými členy zak končení X 1 X 2 X n CS 1 CS 2 CS n
Sběrnice s třístavovými členy Vlastnosti sběrnice s třístavovými členy Budiče jsou obvykle výkonové Výstupy členů jsou pospojovány paralelně Současně může být aktivní maximálně jeden budič sběrnice Přijímací členy mají hysterezní charakteristiku potlačující rušení Zakončení sběrnice s třístavovými členy Zakončení sběrnice definuje napětí na sběrnici v případě všech členů v Z by byla sběrnice bez napětí Obvody zakončující sběrnici se označují terminátory Zakončení potlačuje efekty dlouhého vedení
Přechodné děje v kombinačních obvodech Zpoždění Časovýý rozdíl mezi změnouě výstupního ýt signálu vůči vstupnímu Změna vstupního stavu do ustálení výstupního stavu, tj. všech výstupních signálů Zpoždění v kombinačních obvodech můžou být kritická pro správnou činnost dalších obvodů Měla by být známá maximální a minimální doba hodnota zpoždění V katalogovém listu se udávají zpravidla jen maximalní doby zpoždění Skutečná hodnota zpoždění je tedy neznámá je závislá na typu součástky, nap. napětí, teplotě, délce spojů apod.
Přechodné děje v kombinačních obvodech Časová zpoždění t PHL a t PLH určují zpoždění signálu ze vstupu na výstup během změny z log.0 do log.1 a z log.1 do log.0 V in [V] V DD ideální vstupní signál V 50% 0 t t PHL t PLH V out [V] t PHL t PLH V DD V 50% 0 t 0 t 1 t 2 t 3 t
Přechodné děje v kombinačních obvodech Obvod s různými dobami zpoždění b=0, c=0 a d=1 t p (a,y)=2t PLH +t PHL =2*5+3=13 ns když a t p (a,y) y)=2t PHL +t PLH =2*3+5=11 23+5 ns když a
Hazardní stavy Velmi často zamlžovaná problematika Sledovaný výstupní signál má být konstantní při změně signálu na vstupu Při některých změnách se objeví falešné impulzy Vznikají při změně úrovně na vstupních signálech Jsou tvořeny zpožděním Hazardní stav je přechodný a neplatí při něm pravidla booleovy algebry Falešné impulsy se mohou, ale také nemusí vyskutnout Nesprávné chování následujících obvodů
Hazardní stavy Vznik falešných impulzů u obvodu AND a OR předcházející obvody a a b y b y a a b b y y t t
Hazardní stavy Hazardní stavy Funkci některých obvodů neovlyvní: Relé - dlouhá časová odezva Indikační LED - impulz namenat lidským okem Ve většině případů jsou nežádoucí Blokující obvody odstraňují hazardní stavy Přídavná logika, která po dobu trvání hazardu blokuje výstup Musí být součástí návrhu logické funkce
Hazardní stavy Blokování hazardu signálem s hodnotou 1 y = bc + ac + ab y = bc + ac + ab + bc
Hazardní stavy Hledání hazardních stavů pomocí karnaug. map smyčky odpovídají členům výrazu popisujícího funkci přeskokř kmezi členy může b a způsobit hazardní stav 1 1 přeskoky uvnitř smyček c 0 1 nezpůsobují hazardní stav odstranění hazardu se provede 0 1 1 1 překrytím přeskoků mezi členy y = bc + ac + ab + bc redundantními smyčkami
Hazardní stavy Překrytí přeskoků nadbytečnými smyčkami výsledná funkce je ekvivalentní funkci původníů obsahuje redundantní členyy toto řešení není univerzální c a b 1 1 0 1 0 1 1 1 překrytí funguje pouze v případě, že se mění jedna vstupní proměnná y = bc + ac + ab + ac + ab + bc
Hazardní stavy Potlačení hazardních stavů pomocí registrů vložením registrů (paměťových obvodů) před vstup a za výstup kombinační logiky lze odstranit hazardní stavy registr je řízen náběžnou hranou hodinového signálu falešné impulzy musí odeznít před příchodem náběžné hrany hodinového signálu maximální frekvence hodinového signálu závisí na maximálním zpoždění kombinačního obvodu BUDE PODROBNĚJI PROBRÁNO V POZDĚJŠÍCH PŘEDNÁŠKÁCH JEDNÁ SE UŽ O SEKVENČNÍ SYSTÉMY!!!
Hazardní stavy Potlačení hazardních stavů pomocí registrů vstupy D D výstupy a b c d a_clk b_clk c_clk d_clk kombinační logika x_clk y_clk z_clk x y z clk a t clk th - maximální doba trvání hazardu tclk - perioda hodinového signálu clk a_clk musí platit tclk > th x_clk x t h t h
Strukturální popis v jazyce VHDL Jedná se o skládání jednotlivých komponent Jednotlivé komponenty mohou být popsány např. behaviorálním nebo dataflow způsobem Jedná se o přehledný popis Podobné netlistu Vhodné pro složitější systémy => může dojít k lepšímu výsledku po syntéze Složitý systém popsán behaviorálním způosbem může být nepřehledný a složitý pro syntetizér
Detektor sudé parity strukturální popis
Detektor sudé parity strukturální popis -- samostatny vhd soubor entity parita is Port (a : in std_logic_vector(2 downto 0); even : out std_logic); end parita; architecture Behavioral of parita is -- deklarace hradla xor2 component xor2_gate Port ( a,b : in std_logic; y : out std_logic); end component; -- deklarace hradla invertor component inv_gate Port ( a : in std_logic; y : out std_logic); end component; -- interni signaly signal sig1, sig2 : std_logic; begin unit1: xor2_gate instance prvni xor2 port map(a=>a(0), b=>a(1), y=>sig1); unit2: xor2_gate -- instance druhy xor2 port map(a=>sig1, b=>a(2), y=>sig2); unit3: inv_gate -- instance invertoru port map(a=>sig2, y=>even); end Behavioral; -- samostatny vhd soubor entity xor2_gate is Port ( a,b : in std_ logic; y : out std_logic); end xor2_gate; architecture rtl of xor2_gate is begin y <= a xor b; end rtl; -- samostatny vhd soubor entity inv_gate is Port( a : in std_ logic; y : out std_logic); end inv_gate; architecture rtl of inv_gate is begin y <= not a; end rtl;
MUX 16-to-1 strukturální popis
MUX 16-to-1 strukturální popis entity mux16_1 is Port ( a : in std_logic_vector(15 downto 0); s : in std_logic_vector(3 downto 0); y : out std_logic); end mux16_1; architecture Behavioral of mux16_1 1 is component mux4_1 is Port (a : in std_logic_vector(3 downto 0); s : in std_logic_vector(1 downto 0); y : out std_logic); end component mux4_1; SIGNAL m0,m1,m2,m3: m1 m2 m3: std_logic; SIGNAL m : std_logic_vector(3 downto 0); begin m <= m0&m1&m2&m3; mux1: mux4_1 port map(a=>a(3 downto 0),s=>s(1 downto 0),y=>m0); mux2: mux4_1 port map(a=>a(7 downto 4),s=>s(1 downto 0),y=>m1); mux3: mux4_1 port map(a=>a(11 downto 8),s=>s(1 downto 0),y=>m2); mux4: mux4_1 port map(a=>a(15 downto 12),s=>s(1 downto 0),y=>m3); mux5: mux4_1 port map(a=>m,s=>s(3 downto 2),y=>y); end Behavioral;