Digitální obvody Doc. Ing. Lukáš Fujcik, Ph.D.
Základní invertor v technologii CMOS dva tranzistory: T1 vodivostní kanál typ N T2 vodivostní kanál typ P při u VST = H nebo L je klidový proud velmi malý (na) diody slouží jako ochrana proti vlivům statické elektřiny a proti přepólování
Základní invertor v technologii CMOS
Základní invertor v technologii CMOS Převodní charakteristika Topologie CMOS invertoru u O 14 V U DD = 15 V 12 10 U DD = 10 V 8 6 U DD = 5 V u O (u I ) 4 2 TTL 0 2 4 6 8 10 12 14 V u I
Základní invertor v technologii CMOS Převodní charakteristika
Základní invertor v technologii CMOS
Šumová imunita NM L = V IL V OL NM H = V OH V IH
Další CMOS hradla NAND a NOR y = x 1 x 2 y = x 1 + x 2
Souběžné příkazy v jazyce VHDL with-select Signálu signal_name je přiřazena hodnota podle hodnoty výběrového signálu select_expression Konečné množství kombinací Pokud je signál select_expression typu bit_vector, pak máme pouze 4 možné hodnoty: 00, 01, 10 a 11 Každá hodnota signálu select_expression může být použita pouze jednou Pro výběrové signály typy std_logic_vector je často použito klíčové others.
Souběžné příkazy v jazyce VHDL with-select Koncepční schéma s využitím MUX pro příkaz with-select
Souběžné příkazy v jazyce VHDL with-select Příklad: mějme následující popis v jazyce VHDL?? kombinací Koncepční schéma Schéma na hradlové úrovni
Souběžné příkazy v jazyce VHDL with-select Příklad: dekodér 1z4, funkce je dána pravdivostní tabulkou
Souběžné příkazy v jazyce VHDL with-select Příklad: prioritní enkodér 4-to-2, funkce je dána pravdivostní tabulkou Tento příkaz není vhodný pro prioritní enkodér!!!
Číslicový komparátor Číslicový komparátor porovnává velikosti dvou čísel v binárním kódu. Nejčastěji je využívána informace o shodě dvou čísel. Mějme dvě n-bitové čísla A a B Vyjádření, že čísla jsou shodná vyjadřuje následující vztah K = ( A = B )( A = B )...( A = B ) n 1 n 1 n 2 n 2 0 0 Schematická značka číslicového komparátoru n n A B KOMP K podmínka K A=B 1 A B 0
Aritmetické operace (komb. log. obvody) sčítání Neúplná sčítačka má dva vstupy A, B a dva výstupy S, cout. Výstup S udává výsledek součtu jednobitových čísel A a B, výstup cout generuje přenos vznikající při součtu. Pro výstupy platí logické funkce S = AB + AB = A B cout = AB Úplná sčítačka jednobitová je sestavena ze dvou neúplných sčítaček. Má tři vstupy, ke vstupům A a B přibývá vstup pro přenos ze sčítačky nižšího bitu. Sn = A B cin cout = AB + cin( A B) A B cin cout S cin B A =1 1 & 2 =1 3 & 4 5 & S cout 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1
Aritmetické operace sčítání Symbol 1-bitové úplné sčítačky n-bitová sčítačka s postupným přenosem je složena z n 1-bitových úplných sčítaček 4-bitová sčítačka s postupným přenosem (Carry-Ripple Adder)
Aritmetické operace sčítání Sčítačka s postupným přenosem Výhody: Jednoduchá realizace Sériové zapojení n 1-bitových úplných sčítaček Nevýhody: Velmi pomalé Velké zpoždění ze vstupu přes všechny 1-bitové úplné sčítačky na výstup Požití: Kde není kritická rychlost Pro pomalé aplikace, výsledné zpoždění závisí cílové technologii Když je požadována vysoká rychlost => velký pracovní kmitočet Není možné použít tento typ sčítačky Je nutné realizovat sčítačku založenou na odlišné struktuře!!! Např. sčítačka s paralelním přenosem (Carry-Lookahead Adder) mnohem rychlejší, ale větší obvodová struktura
Aritmetické operace sčítání 4-bitová sčítačka symbol
Dvojkový doplněk 4-bitové číslo rozsah +7 až -8 MSB představuje znaménkový bit Využívá se při operaci odčítání Samotná sčítačka může pracovat se zápornými čísly vyjádřené ve dvojkovém doplňku Pokud chceme převést číslo do dvojkového doplňku a na pozici MSB je 1, je nutné vektor rozšířit o jednu pozici Příklad: Unsigned 2 scomplement (kladný) 1001 (9) => 01001 (+9), +15 až -16 10010 (18) => 010010 (+18), +31 až -32 Binární číslo ------------- 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Dekadické číslo ------------- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Dvojkový doplněk ------------ 0 1 2 3 4 5 6 7-8 -7-6 -5-4 -3-2 -1
Aritmetické operace odčítání Využití dvojkového doplňku 4-bitové číslo rozsah +7 až -8 Mohou nastat 2 případy A B výsledek je kladný A<B výsledek je záporný, vyjádření ve dvojkovém doplňku Příklad: Odečteme dvě čísla A-B, A=5 a B=3 1) Určíme dvojkový doplněk čísla B 2) Sečteme číslo A a B: 0011 (+3) 1100 +1 -------- 1101 0101 (5) +1101 (-3) ---------- 10010 (+2) Obecné vyjádření odčítačky je tedy A B = A + (-B) = A + not(b) + 1
Aritmetické operace odčítání A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 C out C in 1 S 3 S 2 S 1 S 0 S 3 S 2 S 1 S 0 A B = A + (-B) = A + not(b) + 1
Aritmetické operace sčítání/odčítání Vstup SET je přiveden na XOR a rozhoduje o sčítání nebo odčítaní SET=1 odčítání SET=0 sčítání
BCD sčítačka Jedná se o klasické sčítání. Problém nastává v případě, kdy je výstupní 4-bitové binární číslo v rozsahu od 1010(1010) do 1111(1510) Rozsah BCD kódu je od 0000(0 10 ) do 1001(9 10 ). Pokud je součet čísel do hodnoty 1001, pak je BCD a binární číslo stejné. Pokud je součet větší než 1001, pak musí dojít k převodu na další BCD číslo. Nejvýznamnější BCD číslice součtu nebude vyšší než 1, protože součet dvou BCD čísel nebude vyšší než číslo 19 10. Mějme binární číslo 10011 2 (19 10 ). BCD číslo je pak vyjádřeno dvěma BCD čísly 0001 BCD a 1001 BCD.
BCD sčítačka Binární součet (A + B + Cin) Dekadický tvar Upravený BCD tvar (C4 + BCD) 00000 0 0 + 0000 00001 1 0 + 0001 00010 2 0 + 0010 00011 3 0 + 0011 00100 4 0 + 0100 00101 5 0 + 0101 00110 6 0 + 0110 00111 7 0 + 0111 01000 8 0 + 1000 01001 9 0 + 1001 01010 10 1 + 0000 01011 11 1 + 0001 01100 12 1 + 0010 01101 13 1 + 0011 01110 14 1 + 0100 01111 15 1 + 0101 10000 16 1 + 0110 10001 17 1 + 0111 10010 18 1 + 1000 10011 19 1 + 1001
BCD sčítačka BCD číslice BCD číslice A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 C 4 ' 4-bitová sčítačka C 0 S 3 S 2 S 1 S 0 C 0 B 3 B 2 B 1 B 0 převodník BIN/BCD C 4 D 3 D 2 D 1 D 0 C 4 D 3 D 2 D 1 D 0 přetečení BCD číslice
BCD sčítačka převodník BIN/BCD Příznak přetečení C4 je generován v případě, pokud je binární součet v rozsahu 01010(10 10 ) sum 10011(19 10 ). V upraveném BCD tvaru je součet v rozsahu 1 0000 sum 1 1001. Pokud je binární součet menší nebo roven 01001, pak je výstupní číslo převodníku BIN/BCD rovno vstupnímu číslu. Pokud je binární součet v rozsahu 01010(10 10 ) sum 10011(19 10 ), musí být nejnižší 4-bity vstupního binárního čísla převedeny na korektní BCD číslo. To může být provedeno přičtením čísla 0110 2 (6 10 ).
BCD sčítačka Příznak přetečení C4 bude roven 0 pro binární součet v rozsahu od 00000(0 10 ) do 01001(9 10 ). Příznak přetečení C4 musí být roven 1 pro binární součet v rozsahu od 01010(10 10 ) do 10011(19 10 ). Pokud je příznak přetečení C4 paralelní 4-bitové paralelní sčítačky roven 1, pak je příznak přetečení C4 převodníku BIN/BCD rovněž roven 1. Pokud je binární součet v rozsahu od 01010(10 10 ) do 01111(15 10 ), pak musí být bit MSB binárního součtu převeden na číslo 1 Vyjádříme si tento vztah příznakem přetečená C4 a navrhneme příslušnou Karnaughovu mapu.
BCD sčítačka C " = S S + S S 4 3 2 3 1 C = C ' + C " = C ' + S S + S S 4 4 4 4 3 2 3 1
BCD sčítačka BCD číslice BCD číslice A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 C 4 ' 4-bitová sčítačka S 3 S 2 S 1 S 0 C 0 ' Cin & 1 & S 3 ' S 2 ' S 1 ' S 0 ' A 3 A 2 A 1 A 0 B 3 B 2 B 1 B 0 převodník BIN/BCD C 4 4-bitová sčítačka C 0 S 3 S 2 S 1 S 0 C 4 S 3 S 2 S 1 S 0
BCD sčítačka - výstupní součet v rozsahu od 00000 do 19999 A 1000 B 1000 A 100 B 100 A 10 B 10 A 1 B 1 C 4 ' 4-bitová sčítačka C 0 ' C 4 ' 4-bitová sčítačka C 0 ' C 4 ' 4-bitová sčítačka C 0 ' C 4 ' 4-bitová sčítačka C 0 ' C 0 BIN/BCD C 0 BIN/BCD C 0 BIN/BCD C 0 BIN/BCD C 4 C 4 C 4 C 4 S 10000 S 1000 S 100 S 10 S 1
Realizace jednoduché aritmetické jednotky (ALU) Aritmetická jednotka bude zpracovávat 2 16-bitové sběrnice A a B Funkce aritmetické jednotky ALU je dána následující tabulkou sel Operace Funkce Jednotka 0000 y<=a Přenesení A 0001 y<=a+1 Inkrementace A 0010 y<=a-1 Dekrementace A 0011 y<=b Přenesení B 0100 y<=b+1 Inkrementace B aritmetická 0101 y<=b-1 Dekrementace B 0110 y<=a+b Součet A a B 0111 y<=a+b+cin Součet A a B a přenosu 1000 y<=not A Negace A 1001 y<=not B Negace B 1010 y<=a and B AND 1011 y<=a or B OR 1100 y<=a nand B NAND logická 1101 y<=a nor B NOR 1110 y<=a xor B XOR 1111 y<=a xnor B XNOR
Realizace jednoduché aritmetické jednotky (ALU)
Realizace jednoduché aritmetické jednotky (ALU) entity ALU_arith is Port (sel : in std_logic_vector(2 downto 0); A,B : in std_logic_vector(15 downto 0); cin : in std_logic; y : out std_logic_vector(15 downto 0)); end ALU_arith; architecture Behavioral of ALU_arith is architecture Behavioral of ALU_arith is begin with sel select y<=a when 000, A+1 when 001, A-1 when 010, B when 011, B+1 when 100, B-1 when 101, A+B when 110, A+B+cin when others; end Behavioral;