Układ cyfrowy Sygnały sterujące Dane wejściowe Układ sterujący (kontroler) Układ operacyjny (Datapath) Mikrooperacje wywoływane przez sygnały sterujące Stan części operacyjnej Dane wyjściowe Z
Synteza strukturalna układów cyfrowych Licznik Mux Rejestr B l o k i F u n k c j o n a l n e Składamy układ z bloków funkcjonalnych Z 2
3 Z Edytor graficzny N CLK CK N LB[7..] SO] OU CLOK L[3..] OU OU LOAD SAR LOAD LOAD LOAD CLK DA[3..] LOAD SO DB[3..] RB[7..] LD[7..] CK SO CK CK DB[3..] DA[3..] r3_v Us_v r2_v r_v r4_v Lk_v LB[7..] CK CLK SAR CLOK SO LD[7..] NU NU NU NU OUU OUU OUU
Bloki funkcjonalne X X, (Y) wejścia (wyjścia) sygnałów reprezentujących dane wejściowe i wyjściowe S BF S wejścia sterujące, wyjścia predykatowe, clk wejście zegarowe clk Y Bloki funkcjonalne stanowią wyposażenie bibliotek komputerowych systemów projektowania Z 4
System MAX+LUS jest wyposażony w dwie biblioteki komponentów: a) bibliotekę tzw. makrofunkcji b) bibliotekę megafunkcji (moduły LM) Library of arameterized Modules (LM) Z 5
Macrofunctions: Makrofunkcje Adders Latches Arithmetic Logic Units Buffers Multiplexers Comparators Converters Counters Registers Shift Registers Multipliers Były kiedyś produkowane jako bloki funkcjonalne serii 74xx Z 6
Macrofunctions Multiplexers 2mux 6mux 2X8mux 2-Line-to--Line Multiplexer 6-Line-to--Line Multiplexer 2-Line-to--Line Multiplexer for 8-Bit Buses 745b 8-Line-to--Line Multiplexer 7453 Dual 4-Line-to--Line Multiplexer 7457 uad 2-Line-to--Line Multiplexer 74258 uad 2-Line-to--Line Multiplexers with nverting ri-state Outputs 74352 Dual 4-Line-to--Line Data Selector/Multiplexer with nverting Outputs 74354 8-Line-to--Line Data Selector/Multiplexer/Register with ri-state Outputs Z 7
Registers Macrofunctions 749 Serial-n Serial-Out Shift Register 7494 4-Bit Shift Register with Asynchronous reset and Clear 7495 4-Bit arallel-access Shift Register 7496 5-Bit Shift Register 7499 4-Bit Shift Register with /JK Serial nputs and arallel Outputs 7464 Serial-n arallel-out Shift Register 7494 4-Bit Bidirectional Shift Register with arallel Load 74295 4-Bit Right-Shift Left-Shift Register with ri-state Outputs 74299 8-Bit Universal Shift/Storage Register 74674 6-Bit Shift Register Z 8
Macrofunctions Counters 749 Decade or Binary Counter with Clear and Set-to-9 7492 Divide-by-2 Counter 7493 4-Bit Binary Counter 746 4-Bit Decade Counter with Synchronous Load and Asynchronous Clear 746 4-Bit Binary Up Counter with Synchronous Load and Asynchronous Clear 7462 4-Bit Decade Up Counter with Synchronous Load and Synchronous Clear 7463 4-Bit Binary Up Counter with Synchronous Load and Synchronous Clear 749 4-Bit Decade Up/Down Counter with Asynchronous Load 7492 4-Bit Decade Up/Down Counter with Asynchronous Clear 7493 4-Bit Binary Up/Down Counter with Asynchronous Clear 74294 rogrammable Frequency Divider/Digital imer Z 9
Konsekwencje wprowadzenia makrofunkcji Struktury makrofunkcji nie są odpowiednie do technologii układów programowalnych a ich odwzorowanie technologiczne na komórki aktualnie produkowanych układów FGA nie prowadzi do optymalnego wykorzystania zasobów sprzętowych Z
Megafunkcje System MAX + plus jest wyposażony w moduły LM (Library of arameterized Modules) Moduły LM są parametryzowane: użytkownik może ustalić np. wielkość MUX, liczbę bitów argumentów sumatora lub niektóre mikrooperacje. Z
Megafunctions/LM Z Gates lpm_and lpm_inv lpm_bustri lpm_clshift lpm_constant lpm_decode lpm_mux lpm_or lpm_xor MUX:745 7453 7457 Arithmetic Components lpm_compare lpm_counter lpm_add_sub lpm_mult Storage Components lpm_latch lpm_shiftreg lpm_ram_dp lpm_ram_io pm_ff lpm_rom lpm_fifo 2
Konfiguracja modułu LM Konfiguracja i wyposażenie jest definiowana parametrami Moduł sumator/układ odejmujący: lpm_add_sub a) LM_DH b) LM_CONFGURAON a) określa liczbę bitów sumatora b) określa operację: liczby ze znakiem (signed) lub liczby bez znaku (unsigned) Z 3
Sumator w strukturze LM Z 4
Najważniejsze bloki funkcjonalne B. kombinacyjne B. sekwencyjne Układy Komutacyjne MUX DMUX DEC Układy arytmetyczne Sumator Układ odejmujący Komparator Rejestry Równoległe rzesuwające Liczniki Zliczające górę dół Z 5
Multipleksery, demultipleksery e e d y d y d y d N- N = 2 n y N- MUX DMUX a n- a a n- a y = e N k= k (A)d k k = L(A), k pełny iloczyn y k = e (A)d k Z 6
Multipleksery Z y = e N k= k(a)d k gdzie k (A) oznacza pełny iloczyn zmiennych a n,...,a, prostych lub zanegowanych, zgodnie z reprezentacją binarną liczby k. y = a a a d + a 2 + a a a d + 2 Dla n = (MUX 2 : ): y = ad + ad y = a a d + 4 dla n = 2 (MUX 4 : ): 2 + a a d + a a d a a d 2 3 dla n = 3 (MUX 8 : ): a a d a a a 2 + d 5 a a a d 2 + a a a 2 2 + a d + 6 2 a a d a a a 2 3 + d 7 7
Multiplekser e= y = a + ad + aa d + aa d2 aa d3 2 3 Z 8
9 Z Demultiplekser e= 2 3 d a a y d a a y d a a y d a a y 3 2 = = = =
Dekoder DMUX e DEKODER d y y a a y y y N- a n- y N- a n- a N = 2 n Z 2
Multipleksery, demultipleksery Multiplekser y = a + ad + aa d + aa d2 aa d3 Demultiplekser y = a a d y = a a d a e a y 2 = a a d e y 3 = a a d d y a a d y d 2 y y 2 d 3 d y 3 Z 2
Multipleksery kaskadowe Z 22
Multipleksery grupowe A A B Y=A Y=B B Z 23
Bloki komutacyjne b b X Y X j Y X Y j X N- Y N- Z S Multiplekser służy do wybierania jednego z wielu słów wejściowych i przesyłania go na wyjście. Na wyjściu Y pojawia się słowo wejściowe wskazane adresem A (wg naturalnego kodu binarnego). n S n Demultiplekser służy do przesyłania słowa X wejściowego na jedno z wielu wyjść; numer tego wyjścia jest równy aktualnej wartości adresu. 24
25 Z Bloki komutacyjne a a 2 3 a a 2 3
Magistrala (realizacja z multiplekserami) Bus L L 2 L k Clock Dane wejściowe R R 2 R k a a m Multipleksery s s s n- S Z 26
Magistrale (szyny) Budowane z elementów trójstanowych e = e x f x f x e = f e x f Z Z Z 27
Magistrala (realizacja z buforami) Dane we E Bus Clock R R 2 Rk R in R out R 2 in R 2 out Rk in Rk out Z sterowanie 28
Sumatory A B Sumator podstawowy BF powszechnie stosowany w technice DS c n n Σ n c nne układy arytmetyczne: układy odejmowania układy mnożące układy dzielenia...są budowane z sumatorów Y n Z 29
Ripple carry adder Sumator kaskadowy x n- y n- x i y i x y c n- c c i+ n FA FA c i c FA c s n- s i s c i s i = = x x i y c y i ( x c i y + i i i i i ) Z 3
Sumator (Full adder) c i s i x i y i c i+ c i s i = = x x i y c y i ( x c i y + i i i i i ) Z 3
Jaka Ripple-carry jest ścieżka adder - wady krytyczna tego układu? n- n- n n- Bardzo długa - liniowo zależna od wielkości sumatora Dla większości zastosowań sumator kaskadowy jest zbyt wolny Z 32
Sumator z antycypacją przeniesień Znacznie lepszy jest sumator z antycypacją przeniesień, w którym 8 89 57 3 8 3,8 9,7,3 /34. 3 3, 54/89, - 9 8:24,3. 8,/3 Z 33
Sumator z antycypacją przeniesień tedy: c i+ = x i y i c i (x i y i ) g i = x i y i p i = x i y i c i+ = g i p i c i s i = c i (p i g i ) s i = x i y i c i Z 34
Sumator z antycypacją przeniesień c i+ = g i p i c i c c = g p c c = g p c c 2 = g p c = g p (g p c ) c 2 = g p g p p c (funkcja 5 arg.) c 3 = g 2 p 2 g p 2 p g p 2 p p c c 4 = g 3 p 3 g 2 p 3 p 2 g p 3 p 2 p g p 3 p 2 p p c Z 35
Sumator z antycypacją przeniesień c 2 = g p g p p c 8 89 57 3 8 3,8 9,7,3 /34. 3 3, 54/89, - 9 8:24,3. 8,/3! x y p g x y p g c C C c 2 F s c F s Z 36
Sumatory z antycypacją przeniesień można łączyć szeregowo x 3-24 y 3-24 x 5-8 y 5-8 x 7- y 7- c 24 c 6 c 32 Blok 3 Blok Blok c 8 c S 3-24 S 5-8 S 7- Z 37
Hierarchiczny sumator z antycypacją przeniesień x 3 24 y 3 24 x 5 8 y 5 8 x 7 y 7 Block 3 c 24 Block Block c G 3 H 3 G H G H s 3 24 s 5 8 s 7 c 32 c 6 c 8 Drugi poziom Z 38
Sumator/układ odejmujący A U2 = (a n,..., a j,..., a ) Kod U2 A B n ( ) n U2 = an 2 + j= AD = L A aj2 n 2 j n XOR n cn c Σ n Y + Z 39
Sumator/układ odejmujący a 3 b 3 a 2 b 2 a b a b A CO B + C A CO B + C A CO B + C A CO B + C Dodawanie/ odejmowanie S S S S S 3 S 2 S S Overflow Z 4
Komparator A B n n K z 3 A < B A = B A > B Z 4
Komparator a 3 b 3 i 3 A = a 3 a 2 a a B = b 3 b 2 b b i k = a k b k a 2 b 2 i 2 a b i A eq B = i 3 i 2 i i a b i A < B = A eq B+ A gt B A > B = a 3 + i b 3 3 i 2 + i a 3 b a 2 b 2 + i 3 i + 2 i a b Z a k b k A < B, gdy a k =, b k = A > B, gdy a k =, b k = 42
Komparator a 3 b 3 a 2 b 2 a b a b i 3 i 2 i i A = a 3 a 2 a a B = b 3 b 2 b b A = B A < B A > B Z 43
Sekwencyjne bloki funkcjonalne Y := X Y := Y LOAD HOLD Rejestry Liczniki Y := <...> RESE (CLEAR) x p X x l X s s 2 clock R () s s 2 clock L () Y Y := SHR(x p, Y) Y := SHL(Y, x l ) Y Y := Y + = NC(Y) Y := Y = DEC(Y) Z 44
rosty rejestr Rejestr zbudowany z przerzutników ładowanie (load) i pamiętanie CLK D D 2 2 D 3 3 D 4 4 2 3 4 LOAD Z 45
Rejestr przesuwający SHR wejście szeregowe clk 2 3 4 D D 2 D 3 D 4 E 2 3 4 Z 46
Rejestr przesuwający 2 3 4 wejście szeregowe D D 2 D 3 D 4 CLK D D Clock D Sel Z 47
Rejestr przesuwający z wpisem równoległym yjścia równoległe 3 2 D D D D ejście szeregowe Shift/Load ejścia równoległe Clock Z 48
Rejestr przesuwający z wpisem równoległym yjścia równoległe 3 2 D D D D ejście szeregowe Shift/Load ejścia równoległe Clock Z 49
Mikrooperacje licznika LOAD HOLD COUN LOAD HOLD COUN clock Licznik LOAD Zliczanie Z 5
rzykład licznika z wejściem Enable 2 3 E clock = E = E = E = = E Licznik 2 = 2 2 A E A A A A A A 2 A 2 A 2 A 3 A 3 A 3 A 4 A 4 A A 4 A 4 A 5 A 5 A 5 A 5 A Z 5
Licznik w górę Enable Clock Rst D clk Z 52
Licznik z przerzutnikami D Enable D D D 2 Z Clock D 3 Output carry 53
Licznik z wpisywaniem równoległym Enable D D D D D 2 D 2 Z D 3 Load Clock D 3 Output carry 54
amięci typu ROM p X A X i ROM m n X m- n ROM uniwersalny układ kombinacyjny Y Z 55
amięci typu ROM Adres 2 3 4 5 6 7 ROM 8 4 Z 56
amięci typu ROM D C B A MARYCA OR (ROGRAMOALNA) (struktura) Z MARYCA AND (SALA) y 3 y 2 y y 57