DIGITALNE STRUKTURE Zapiski predavanj Branko Šter, Ljubo Pipan 2 Razdeljevalniki Razdeljevalnik (demultipleksor) opravlja funkcijo, ki je obratna funkciji izbiralnika. Tisti od 2 n izhodov y 0,.., y 2 n 1, ki je izbran z binarno adreso a n 1,.., a 0, dobi vrednost vhoda d: Dekoder (bolj pravilno dekodirnik) n/2 n dekodira binarno kodo v kodo 1- od-n. Pri kodi 1-od-N je v danem trenutku aktiven samo en bit (samo en bit na 1, ostali 0 ; pri aktivno nizkih izhodih je samo en bit na 0, ostali 1 ). Običajno gre za en sam element, imenovan demultipleksor/dekoder, ker sta po delovanju ekvivalentna, v kolikor ima dekoder vhod Enable, ki lahko prevzame funkcijo vhoda d. 1
DIGITALNE STRUKTURE 2 Slika prikazuje, kako dekoder (npr. 1/2) realiziramo z logičnimi vrati: Standardne realizacije dekoderjev z integriranimi vezji: - 7442, dekoder 4/10, tj. BCD-desetiško, - 7447 in 7448, BCD-7segment dekoder/ driver, - 74138, dekoder 3/8, - 74139, 2 x dekoder 2/4, - 74154, dekoder 4/16. V čipu 74139 sta dva dekoderja 2/4: G B A y 0 y 1 y 2 y 3 1 x x 1 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 Zakaj so izhodi aktivno nizki? Razlog je v tehnologiji izvedbe. Oglejmo si dejansko realizacijo 1 dekoderja 74139. 1 pri vseh logičnih družinah ni čisto enaka
DIGITALNE STRUKTURE 3 Če bi želeli na izhodih namesto NAND vrat IN-vrata, bi potrebovali npr. v MOS tehnologiji po en dodaten invertor, kar pa bi upočasnilo delovanje. Razlog je torej v hitrosti. Z dodatnimi invertorji na vhodih pa dosežemo manjšo obremenitev (nižji fan-out ) vhodnih signalov. Realizacija logičnih funkcij z razdeljevalniki Z razdeljevalnikom je možno realizirati tudi poljubne logične funkcije, vendar potrebujemo še dodatne elemente. Primer. Realiziraj funkcijo f 3 = V (1, 2, 4, 7) = m 1 m 2 m 4 m 7 z dekoderjem in dodatno logiko. Realizacija je na Sliki a.
DIGITALNE STRUKTURE 4 Če ima dekoder aktivno nizke izhode, uporabimo namesto operatorja ALI operator NAND (Slika b). Spomnimo se de Morgan-ovega teorema: (a b) = a b, torej a b = (a b ), kar pa je NAND negiranih spremenljivk. Zato m 1 m 2 m 4 m 7 = (m 1m 2m 4m 7) (Slika b). Realizacija večjih dekodirnikov iz manjših Na sliki a je prikazana realizacija dekodirnika 3/8 iz modulov 2/4. Na višjem nivoju potrebujemo le dekoder 1/2, zato je 2/4 samo polovično izkoriščen. Če ne potrebujemo vhoda Enable, je na višjem nivoju dovolj vzeti negator. Za realizacijo dekodirnika 1/2 brez vhoda E potrebujemo namreč le en negator, glej tabelo: a y0 y1 0 1 0 1 0 1 Poleg večjih dekodirnikov pa je možno realizirati tudi večji izbiralnik z dekodirnikom in manjšimi izbiralniki. Npr., izbiralnik 8/1 s pomočjo dekodirnika 2/4,
DIGITALNE STRUKTURE 5 katerega izhodi so vezani na vhode Enable štirih izbiralnikov 2/1: Dekodirnik v VHDL-u Vzemimo primer dekodirnika 2/4: library ieee; use ieee.std_logic_1164.all; entity decoder is port (a: in std_logic_vector(1 downto 0); E: in std_logic; y: out std_logic_vector(0 to 3)); end entity decoder; architecture when_else of decoder is signal y_notranji: std_logic_vector(0 to 3); begin y_notranji <= "1000" when a = "00" else
DIGITALNE STRUKTURE 6 "0100" when a = "01" else "0010" when a = "10" else "0001" when a = "11" else "XXXX"; y <= y_notranji when E = 1 else "0000"; end architecture when_else; Tukaj smo uporabili dodatno vodilo (std logic vector) znotraj arhitekture; vsak notranji signal se navede v arhitekturi kot signal (še pred begin). Seveda lahko tudi tukaj (kakor v primeru izbiralnika) uporabimo stavek with..select ali pa logične operatorje: with a select y <= "1000" when "00",... "XXXX" when others; y(0) <= not a(1) and not a(0); y(1) <= not a(1) and a(0);...