Digitalteknik, fortsättningskurs Föreläsning 3 Kombinatoriska nät 202 VHDL repetition + Strukturell VHDL Lite repetition + Karnaughdiagram(4-6var), flera utgångar + Quine-McCluskey + intro tid
2 Entity ENTITY fulladder IS PORT(A:IN STD_LOGIC; Y B:IN STD LOGIC; Cin:IN STD LOGIC; Y:OUT STD_LOGIC; Cout:OUT STD_LOGIC); END fulladder; Entiteten beskriver portarna mot omvärlden för kretsen.
3 Architecture ARCHITECTURE behave OF fulladder IS BEGIN Cout<= (A and B) or (A and Cin) or (B and Cin); S<=A xor B xor Cin END behave; Architecture beskriver funktionen inuti kretsen.
Components Exempel Vi vill bygga en två-bitars adderare. Vi börjar med att bygga en full adderare. Sedan kopplar vi samman två av dessa för att få vår två bitars adderare. Strukturell VHDL. One-bit adder Two-bit adder
Exempel forts -- Vi har entiteten Vi går vidare till två bits adderaren. LIBRARY ieee; USE ieee.std_logic_64.all; ENTITY adder_2_bit IS PORT ( a:in STD_LOGIC_VECTOR( DOWNTO 0); b:in STD_LOGIC_VECTOR( DOWNTO 0); y:out STD_LOGIC_VECTOR( DOWNTO 0); cout:out STD_LOGIC); END adder_2_bit;
Exempel forts ARCHITECTURE arch_adder_2 OF adder_2 IS COMPONENT full_adder IS PORT( a:in STD_LOGIC; b:in STD_LOGIC; cin:in STD_LOGIC; y:out STD_LOGIC cout:out STD_LOGIC); END COMPONENT full_adder; SIGNAL cint:std_logic; BEGIN U0:COMPONENT full_adder PORT MAP(a=>a(0),b=>b(0), Komponent deklaration cin=>'0',y=>y(0),cout=>cint); U:COMPONENT full_adder PORT MAP(a=>a(),b=>b(), cin=>cint,y=>y(),cout=>cout); END arch_adder_2; Komponent instanser
7 Logiknät, fig 2.0 x x 2 0 0 0 0 0 0 0 0 0 A B 0 f x 0 0 x 2 0 0 f ( x, ) x 2 0 A B 0 0 0 0 0 (a) Network that implements f = x x x + 2 (b) Truth table x x 2 A B f 0 0 0 0 0 Time
Mintermer 9 En minterm MÅSTE innehålla alla variabler, annars är den inte en minterm. En minterm anger den kombination av :or och 0:or på en funktions ingångar som tillsammans gör att funktionen antar värdet E(x)= Σ m(0,2,3)=x 3 x 2 x x 0 + x 3 x 2 x x 0 + x 3 x 2 x x 0 Canonical form: (Summa Min Disjunktiv form) canonical form minimal form
Maxtermer 0 En maxterm MÅSTE innehålla alla variabler, annars är den inte en maxterm. En maxterm anger den kombination av :or och 0:or på en funktions ingångar som tillsammans gör att funktionen antar värdet 0 E(x)=ΠM(0,2,3)=(x 3 +x 2 +x +x 0 ) (x 3 +x 2 +x +x 0 ) (x 3 +x 2 +x +x 0 ) Canonical form: (Produkt av Max Konjunktiv ) canonical form minimal form
Normalformer Disjunktiv normal form F = 00 0 0 0 F = A B C + A BC + AB C + ABC + ABC A B C F F 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 F = Konjunktiv normal form (A + B + C) (A + B + C) (A + B + C) F = 000 00 00 F = A B C + A BC + AB C
2 S-o-P, P-o-S, och de Morgan s teorem Sum-of-products F = A B C + A BC + AB C Apply de Morgan s (F ) = (A B C + A BC + AB C ) F = (A + B + C) (A + B + C) (A + B + C) Product-of-sums F = (A + B + C ) (A + B + C ) (A + B + C ) (A + B + C) (A + B + C ) Apply de Morgan s (F ) = ( (A + B + C )(A + B + C )(A + B + C )(A + B + C)(A + B + C ) ) F = A B C + A BC + AB C + ABC + ABC
3 de Morgan nand or or x x 2 x x 2 x x 2 (a) x x 2 = x + x 2 x nor and and x x x 2 x 2 x 2 (b) x + x 2 = x x 2
4 Summa av Min Disjunktiv x x 2 x x 2 x 3 x 4 x 5 AND - OR x 3 x 4 x 5 NAND - NAND Produkt av Max Konjuktiv form x x x 2 x 2 x 3 x 3 x 4 x 4 x 5 OR - AND x 5 NOR - NOR
3-dimensional Boolean space 5
Karnaugh-diagrammet 6
Karnaugh-diagramme 7 Kan användas för fyra variabler (med visst besvär upp till sex) yz wx 00 0 0 00 0 0 W XY Z + W XYZ = ( W XZ ) ( Y +Y ) = W XZ (Y +Y)=!
8 Aktivitet Minimera funktionen F = m(0, 2, 7, 8, 4, 5) + d(3, 6, 9, 2, 3) A A CD\AB 00 0 0 0 X 00 0 X C 0 0 0 0 X X B X X 0 0 D F = AC + A C + BC + AB + A B D + B C D F = BC + A B D + B C D F = A C + AB + B C D C C 0 0 X X 0 0 0 X X B B X X 0 0 X X A X 0 0 D D
9 00 x 3 x 2 0 X 3 0 x x 0 X 00 0 0 0 0 3 2 0 4 0 5 7 0 6 2 3 5 0 4 8 9 0 0 X 2 X 0 F = x 3 x + x x 0 + x 3 x 2 x 0 Fyra variabler x 4 x 4 0 3 2 4 5 7 6 2 3 5 4 8 9 0 6 7 9 8 20 2 23 22 28 29 3 30 24 25 27 26 Fem variabler
x 5 x 4 00 0 3 2 4 5 7 6 2 3 5 4 8 9 0 x 5 x 4 00 4 5 7 6 0 3 2 2 3 5 4 8 9 0 X 3 X 2 X 0 0 6 7 9 8 20 2 23 22 28 29 3 30 24 25 27 26 0 6 7 9 8 20 2 23 22 28 29 3 30 24 25 27 26 X 5 X 2 X X 0 48 49 5 50 52 53 55 54 60 6 63 62 56 57 59 58 48 49 5 50 52 53 55 54 60 6 63 62 56 57 59 58 0 32 33 35 34 36 37 39 38 44 45 47 46 40 4 43 42 0 32 33 35 34 36 37 39 38 44 45 47 46 40 4 43 42 X 4 X 3 X 2 X 0
Karnaugh-diagrammet, 6 variabler 2
22 Arbeta med kombinatoriska nät Förenkling Två nivå förenkling Utnyttja don t care Algoritmer för förenkling Realisering av logik Två-nivå logik och kanonisk POS/SOP form realiserad med NAND och NOR (CPLD) flernivå logik, konvertering mellan OCH och ELLER. Tids beteende
23 Produkt av summor (maxtermer) x 3 x 4 x x 2 00 0 0 f = x 3 x 4 + x 2 x 3 + x x 2 x 3 x 4 00 0 0 0 0 ( x 3 + x 4 ) = x 3 x 4 x 2 x 3 x x 2 x 3 x 4 0 0 0 0 0 ( x 2 + x 3 ) = (x 3 +x 4 )(x 2 +x 3 )(x +x 2 +x 3 +x 4 ) ( x + x 2 + x 3 + x 4 ) Figure 4.4. POS f ( x,, x 4 ) = M(0,, 4, 8, 9, 2, 5).
24 Flera utgångar Ex 4. x x 2 x 3 x 4 00 0 0 x x 2 x 3 x 4 00 0 0 00 00 0 0 0 0 (a) Function f (b) Function f 2
25 x x 2 x 3 x 4 00 0 0 00 x 2 0 x 3 x 4 f 0 x (a) Function f x 3 x x 2 x 3 x 4 00 0 0 x x 3 00 f 2 0 x 2 x 3 x 4 0 (c) Combined circuit for f and f 2 (b) Function f 2
26 Flera utgångar Ex 4.3 x x 2 x 3 x 4 00 0 0 00 x x 2 x 3 x 4 00 0 0 00 0 0 0 0 (c) Optimal realization of f 3 and f 4 together x x 2 x 3 x 4 00 0 0 x x 2 x 3 x 4 00 0 0 00 00 0 0 0 0 (a) Optimal realization of f 3 (b) Optimal realization of f 4
27 x x 2 x 3 x 4 00 0 0 00 x 0 x 4 0 x x 2 f 3 x 4 x x x 2 x 3 x 4 00 0 0 00 x 2 x 3 0 x 4 f 4 x 2 0 x 4 (d) Combined circuit for f 3 and f 4
28 Fel i lab-pm 3.3 Temp <= ( 0 & a) + ( 0 & b) + ( 0 & c) Process (x,y) VARIABLE xy : std_logic_vector( downto 0); begin xy := x & y; case xy is De som saknar labb partner kan komma fram
29 I0 I I2 I3 Design example: BCD increment by I 3 I 2 I I 0 O 3 O 2 O O 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 block diagram and truth table O0 O O2 O3 4-variable K-map for each of the 4 output functions 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X X X X 0 X X X X 0 0 X X X X 0 X X X X 0 X X X X X X X X
Design example: BCD increment by (cont d) 30 00 0 0 X O3 I I 0 /I 3 I 2 O2 0 X 0 00 0 0 0 X 0 0 X 0 0 0 00 0 X X 0 0 X X 00 0 0 0 0 X 0 O O3 = I3 I I0 + I3 I0' O2 = I3 I' + I3 I0' + I3 I I0 O = I3 I I0 + I I0' O0 = I0' O0 0 X X 0 X X 00 0 0 X 0 00 0 0 0 0 X 0 X X X X O(0) = I(0) O()= I(3) I()I(0)+I()I(0) O(2)=I(2)I() +I(2)I(0) +I(2) I()I(0) O(3)=I(2)I()I(0)+I(3)I(0) 0 0 0 0 X 0 X X X X 0 0
I VHDL library ieee; use ieee.std_logic_64.all; entity BCDa is port (I : in std_logic_vector (3 downto 0); O : out std_logic_vector (3 downto 0)); end entity BCDa; 3 architecture arch_bcda of BCDa is begin O(0) <= not I(0); O() <= ( ( not I(3)) and (not I() ) and I(0)) or ( I() and ( not I(0))); O(2) <= ( I(2) and ( not I())) or ( I(2) and (not I(0))) or ( (not I(2)) and I() and I(0)); O(3) <= ( I(2) and I() and I(0)) or ( I(3) and (not I(0))); end architecture arch_bcda;
I VHDL library ieee; use ieee.std_logic_64.all; use ieee.std_logic_unsigned.all; entity BCDa is port (I : in std_logic_vector (3 downto 0); O : out std_logic_vector (3 downto 0)); end entity BCDa; architecture arch_bcda of BCDa is begin O <= "0000" when I="00" else I+; end architecture arch_bcda; 32 Är dessa lösningar identiska? O(0) = I(0) O()= I(3) I()I(0)+I()I(0) O(2)=I(2)I() +I(2)I(0) +I(2) I()I(0) O(3)=I(2)I()I(0)+I(3)I(0)
33 I+; I(3)I(2) I() I(0) O(3)O(2) O()O(0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 O(0) = NOT I(0);. O(3)O(2)O()O(0) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
34 Definition av termer vid två-nivå förenkling Implikator: delkub som innesluts av funktionen. Primimplikator: Kan inte kombineras med någon annan implikator för att skapa en större delkub. Väsentlig primimplikator om den ensam innesluter en eller flera mintermer Mål: Kombinera implikatorer till primimplikatorer. (minska antalet litteraler per term) Täck samtliga mintermer med så få primimplikatorer som möjligt. (minimera antalet produkttermer)
35 CD00 0 AB 00 0 0 0 X 0 0 0 Examples to illustrate terms 6 prime implicants: A'B'D, BC', AC, A'C'D, AB, B'CD essential 0 0 0 minimum cover: AC + BC' + A'B'D AB 00 0 0 5 prime implicants: BD, ABC', ACD, A'BC, A'C'D CD 00 0 0 0 0 0 D essential 0 minimum cover: 4 essential implicants 0 0 B 0 0
36 Algoritm för två-nivå förenkling Algoritm: minimum summa av produkter ur ett Karnaugh diagram. Välj ett element (minterm) 2. Finn den maximala grupperingen av :or och X i anslutning till elementet. Detta skapar primimplekanterna. ( 2 n st element) Upprepa steg & 2 för alla element för att finna alla primimplekanter. 3. Kontrollera alla ettor i Karnaugh diagrammet Om ettan är täckt av endast en primimplekant så är den primimplekanten essentiell. Ettor tillhörande en essentiell primimplekant behöver ej besökas igen. 4. Om det finns ettor som inte täcks av essentiella primimplekanter så välj det minsta antalet primimplekanter som täcker ettorna.
37 Algorithm for two-level simplification (example) A X 0 X 0 X 0 A A 0 D 0 D 0 D C 0 X 0 X 0 0 C 0 X 0 X 0 0 C 0 X 0 X 0 0 B A B 2 primes around A'BC'D' A B 2 primes around ABC'D A X 0 X 0 X 0 0 D 0 D 0 D C 0 X X 0 0 0 B 3 primes around AB'C'D' C 0 X X 0 0 0 B 2 essential primes C 0 X X 0 0 0 B minimum cover (3 primes)
38 Quine-McCluskey Exempel: f (x 3,x 2,x,x 0 ) = m(4,5,6,8,9,0,3)+d(0,7,5) 00 x 3 x 2 0 X 3 0 x x 0 X 00 0 0 - - - X 0 X 2
39 Gruppera termerna efter antal ettor f (x 3,x 2,x,x 0 ) = m(4,5 2,6 2,8,9 2,0 2,3 3 )+d(0 0,7 3,5 4 ) 0 0000 4 000 8 000 5 00 6 00 9 00 0 00 7 0 3 0 5 v (0,4) 0-00 v (0,8) -000 v (4,5) 00- v v (4,6) 0-0 v (8,9) 00- v (8,0) 0-0 v (5,7) 0- v v (5,3) -0 v v (6,7) 0- v v (9,3) -0 v (7,5) - v v (3,5) - (4,5,6,7) 0-- (5,7,3,5) --
40 f (x 3,x 2,x,x 0 ) = m(4,5 2,6 2,8,9 2,0 2,3 3 )+d(0 0,7 3,5 4 ) (0,4) 0-00 00 x 3 x 2 0 (0,8) -000 (8,9) 00- X 3 0 00 0 0 - x x 0 - - X X 0 X 2 (9,3) -0 (8,0) 0-0 (4,5,6,7) 0-- (5,7,3,5) --
4 Hitta en minimal täckand funktion 0,4 (0-00) X 4 5 6 8 9 0 3 0,8 (-000) X 8,9 (00-) X X 8,0 (0-0) X X 9,3 (-0) X X 4,5,6,7 (0--) X X X 5,7,3,5 (--) X X EJ 0,7 och 5 f (x 3,x 2,x,x 0 ) = m(4,5 2,6 2,8,9 2,0 2,3 3 )+d(0 0,7 3,5 4 ) Ej med!!
42 Essentiella primimplikanter 0,4 (0-00) X 4 5 6 8 9 0 3 0,8 (-000) X 8,9 (00-) X X 8,0 (0-0) X X 9,3 (-0) X X 4,5,6,7 (0--) X X X 5,7,3,5 (--) X X
43 Sammanfattning Quine-McCluskey. Ordna samtliga mintermer och don t care i en tabell efter antalet ettor. 2. Jämför varje minterm med de mintermer som har en etta mer. 3. De som stämmer (skiljer sig i endast en position) bockas av och den förenklade termen skrivs upp. 4. Upprepa 2 & 3 för de nya kolumner som bildas tills det inte går mer. 5. De termer som nu inte är markerade är funktionens primimplekanter.
44 Exempel Minimera: f α (x,y,z) = m(3,5)+d(,2) f β (x,y,z) = m(,4,6)+d(2,5) Antal ettor: f α (x,y,z) = m(3 2,5 2 )+d(,2 ) f β (x,y,z) = m(,4,6 2 )+d(2,5 2 ) f(x,y,z) = m( α β,2 αβ,3 2α,4 β,5 2αβ,6 2β )
45 f(x,y,z) = m( αβ,2 αβ,3 2α,4 β,5 2αβ,6 2β ) αβ 00 v 2 αβ 00 v 4 β 00 v 3 α 0 5 αβ 0 6 β 0 v v v,3 α 0-,5 αβ -0 2,3 α 0-2,6 β -0 4,5 β 0-4,6 β -0
46 f α (x,y,z) = m(3,5)+d(,2) f β (x,y,z) = m(,4,6)+d(2,5) 3α 5α β 4β 6β,3 α 0- x,5 αβ -0 x x 2,3 α 0- x 2,6 β -0 x 4,5 β 0- x 4,6 β -0 x x
47 Exempel 4.52 f (x,x2,x3,x4) = m(0,, 3, 4, 7,, 3, 5) + D(9, 2, 4)
48 Rad dominans 0, (000-) v v 0,4 (0-00) v v 4,2 (-00) v 0 3 4 7 3 5,3,9, (-0-) v v v 3,7,,5 (--) v v v v 9,,3,5 (--) v v v 2,3,4,5 (--) v v
49 0, (000-) v v 0 4 3 0,4 (0-00) v v,3,9, (-0-) v 9,,3,5 (--) v
50 Fler nivå logik x = A D F + A E F + B D F + B E F + C D F + C E F + G reducerad summa av-produkter redan förenklad 6 x 3-ingångars AND grind + x 7-ingångars OR grind (finns nog inte!) 25 ledningar (9 litteraler plus 6 interna ledningar) x = (A + B + C) (D + E) F + G faktoriserad form inte skriven som tvånivå S-o-P x 3-ingångars OR, 2 x 2-ingångars OR, x 3-ingångars AND grindar 0 ledningar (7 litteraler plus 3 interna ledningar) A B C D E X F G
Konvertera flernivå nät till NOR grindar 5 F = A (B + C D) + B C Vi tillför lämpliga Inverterare bubblor original AND-OR nät C D B A B \C C D B A B \C Level Level 2 Level 3 Level 4 F F Skriver om som NOR grindar \C \D B \A \B C F
52 Tid A B C D 0 0 F 0 0 0 0 0 0 A B C D F
53 Omslag i insignaler - tid Kan vara användbart, skapa pulser Kan orsaka problem felfunktion p g a glitches / harsader
54 Sammanfattning kombinatorisk logik Design problem fylla i sanningstabeller ej fullständigt specificerade funktioner förenkla två-nivå nät Realisering av två nivå logik NAND och NOR nät Nätverk av Booleska funktioner och deras tidsegenskaper
55 ARCHITECTURE arch_and_4 OF and_4 IS COMPONENT and_2 IS PORT( a,b:in STD_LOGIC; y:out STD_LOGIC); END COMPONENT and_2; SIGNAL i0, i :STD_LOGIC; BEGIN U0:COMPONENT and_2 PORT MAP(a=>a(0),b=>b(0),y=>i0); U:COMPONENT and_2 PORT MAP(a=>a(),b=>b(),y=>i); U2:COMPONENT and_2 PORT MAP(a=>i0,b=>i,y=>y); END arch_and_4;
56 Nästa föreläsning Programmable logic array (PLA) Programmable array logic (PAL) Read-only memories (ROM) Field Programmable Gate Array (FPGA) (Mux och demux)