5. PROGRAMOWALNE UKŁADY LOGICZNE 5.1. Wstęp: Cyfrowe układy scalone Dwa podstawowe kryteria klasyfikacji ilość bramek w układzie (złożoność układu, tzw. stopień integracji), technologia wykonania. 5.1.1. Stopień integracji -liczba bramek logicznych w układzie SSI (Small Scale Integration) < 10 4 x NAND 4 x OR... - proste układy rodziny TTL MSI (Medium Scale Inetgration) 10 100 przerzutniki (np. SN7474: 2 x D = 2 x 6 NAND) rejestry, liczniki proste układy arytmetyczne... - bardziej złożone układy rodziny TTL LSI (Large Scale Inetgration) 100-10.000 proste mikroprocesory (liczba tranzystorów): -4004 (1971) 2550-8008 (1972) 2500-8080 (1974) 5000 układy WE /WY, zegary, kalkulatory... VLSI (Very Large Scale Inetgration) > 10.000 mikroprocesory (liczba tranzystorów): -8086 (1978) 29000 -i386dx (1985) 275000 -i486dx (1989) 1200000 -Pentium (1993) 3100000 -Pentium II (1997) 7500000 -Pentium III (1999) 24000000 -Pentium IV (2000) 42000000 1
UWAGI: Klasyfikacja utworzona na początku lat 80. Obecnie miarą złożoności mikroprocesorów jest raczej liczba tranzystorów niż bramek (pamięci podręczne cache...). Gordon Moore (współzałożyciel firmy Intel w 1968 r), 1965: liczba tranzystorów w układzie scalonym rośnie wraz z czasem w tempie wykładniczym. 5.1.2. Technologie Tranzystory bipolarne - rodzina TTL (Transistor-Transistor Logic): 1965, Texas Instruments, układy SN74 - rodzina ECL (Emiter Coupled Logic): 1962, Motorola; większy pobór mocy, najszybsze Tranzystory unipolarne MOS: mniejszy pobór mocy, mniejsze rozmiary (nawet 10x) lepsze scalanie - pmos: chronologicznie pierwsze - nmos: szybsze (większa ruchliwość nośników n); technologia HMOS: down, sizing, zmniejszanie długości kanału tranzystora zwiększa także szybkość; największy stopień scalenia - Complementary MOS, CMOS: oba typy tranzystorów MOS, najmniejszy pobór mocy 2
5.2. Wstęp: Układy ASIC Application Specific Integrated Circuits Podstawowy rozdział cyfrowych układów scalonych: Wielkie standardy: standardowe, uniwersalne elementy o strukturze niemodyfikowalnej po wyprodukowaniu; np. bramki i układy funkcjonalne rodzin TTL, ECL, MOS, mikroprocesory, pamięci... Układy ASIC: użytkownik ma w pewien sposób wpływ na strukturę logiczna układu Full-Custom Semi-Custom Standard Cells Gate Arrays Field Programmable Gate Arrays (układy FPGA) Programmable Logic Devices (układy PLD) 5.2.1. Rodzaje układów ASIC Dwie pierwsze klasy układów ASIC (Full Custom, Semi Custom) - programowalne w procesie produkcji (programowalne maską). Użytkownik przekazuje projekt producentowi u.s., układy po wyprodukowaniu mają już ostateczną architekturę, która nie ulega zmianom. Dwie pozostałe klasy układów (PLD, FPGA): wszystkie układy określonego typu opuszczają producenta identyczne (produkcja wielkoseryjna, niskie koszty), programowanie układu po jego wykonaniu poprzez utworzenie połączeń w istniejącej sieci ścieżek sygnałowych. Zalety ASIC: niższe koszty zaprojektowania, wykonania i uruchomienia systemu cyfrowego, szczególnie przy produkcji wielkoseryjnej. Możliwości reprogramowania układu - ułatwione testowanie, wprowadzanie zmian w projekcie... 3
5.2.1.1. Full-Custom ASIC Użytkownik sam projektuje wszystkie lub wybrane komórki logiczne układu, rozmieszczenie oraz połączenia. Stosowane przeważnie w układach nowych lub wysoce specjalizowanych, gdy brak gotowych projektów wymaganych komórek. Produkcja we wsadach po 5 30 wafli (wafer), każdy wafel zawiera 10 100 układów. 5.2.1.2. Standard-Cell ASIC Układ projektowany z predefiniowanych standardowych komórek (standard cells), zaprojektowanych w trybie full-custom; dostępne komercyjne biblioteki standardowych komórek. Duże komórki, realizujące złożone bloki funkcjonalne (np. mikroprocesory) - tzw. mega cells, cores. Regularny rozkład komórek w układzie, zwykle rzędy (wiersze) komórek o stałej wysokości i zmiennej długości uporządkowana struktura połączeń. 5.2.1.3. Gate-Array ASIC Regularna, niezmienna struktura elementów układu (matryca elementarnych bloków logicznych), użytkownik projektuje sieć połączeń (warstwy metalizacji). Standardowe układy produkowane seryjnie i magazynowane, po otrzymaniu projektu dodawane tylko warstwy metalizacji. Taniej i szybciej niż standard-cell. Cykl produkcji dni-tygodnie. 5.2.1.4. Układy PLD (Programmable Logic Devices) Standardowe, produkowane masowo układy scalone opuszczają producenta w identycznej postaci. Nie ma modyfikowanych masek (komórki logiczne czy metalizacje), jeden duży blok programowanych połączeń, programowanie wyłącznie po stronie użytkownika. 4
Przykłady: - programowalne pamięci tylko do odczytu (PROM) - układy PAL, PLA: dwupoziomowa struktura sumy iloczynów, realizująca zaprogramowaną funkcję boolowską. 5.2.1.5. Układy FPGA Nazywane także FPLD (Field Programmable Logic Devices). Zasada programowania podobna do PLD, ale bardziej złożona struktura. Programowanie nie tylko sieci połączeń (jak w PLD), ale także pewien sposób konfigurowania funkcji komórek logicznych: - struktura układu: regularny układ komórek logicznych, które zawierają pewną (programowalną) logikę kombinacyjną oraz przerzutnik(i); - komórki logiczne otoczone siecią (programowalnych) linii sygnałowych. Liderzy architektur FPGA: firmy Xilinx oraz Altem. 5.2.2. Rachunek ekonomiczny układów ASIC Koszt całkowity projektu i produkcji = = koszt stały (przygotowanie projektu) +koszt jednostkowy (koszt u.s., montażu itp.) x liczba egzemplarzy Przykład: Porównanie trzech technologii CBIC (cell-based IC = standard cell ASIC) MCA (mask programmable gate array) FPGA Koszty: (stały) (jednostkowy) CBIC 146000 $ 8 $ MGA 86000 $ 10 $ FPGA 21800 $ 39 $ (Application Specific Integrated Circuits, Smith, Addison-Wesley, 1997) 5
Wyrównanie kosztów: FPGA vs. Gate Array 2000szt FPGA vs. Standard Cells 4000 Gate Array vs. StandardCells 20000 (Applicatioin Specific Infegrafed Circuifs, Smith, Addison-Wesley, 1997) 5.2.3. Programowanie układów PLD & FPGA Programowanie układu : utworzenie (lub nie) połączeń w określonych punktach linii sygnałowych, tzw. punktach programowalnych określenie dróg przesyłania sygnałów pomiędzy elementami układu (bramkami, przerzutnikami, blokami funkcjonalnymi) i uzyskanie w ten sposób układu kombinacyjnego lub sekwencyjnego o żądanej funkcji. Ogólna struktura nie zaprogramowanego układu wyznacza nieprzekraczalne ramy projektu (programowaniu podlega sieć połączeń między elementami zawartymi w układzie, nie rodzaj i liczba owych elementów). 6
Trzy główne technologie programowania - analogiczne do realizacji programowalnych pamięci tylko do odczytu (ROM): - programowanie jednokrotne (Programmable ROM, PROM) - programowanie kasowalne przez naświetlenie promieniami UV (Erasable Programmable ROM, EPROM) - programowanie kasowalne elektrycznie (Electrically Erasable PROM, EEPROM, E2PROM) 5.2.3.1. Programowanie nieodwracalne (One -Time Programming, OTP) A. Bezpieczniki (Fuses) Technologia chronologicznie pierwsza, związana z układami bipolarnymi. Metoda: przepalenie bezpiecznika - fragmentu odpowiednio przygotowanej ścieżki metalizacji. B. Antybezpieczniki (Antifuses) Antybezpiecznik jest normalnie rozwarty (off); przepuszczenie odpowiednio dużego prądu (5 15 ma) stapia izolujący dielektryk i powoduje stałe zwarcie (on). Antybezpieczniki zajmują mniej miejsca, dzięki niskiej rezystancji i pojemności są także szybkie. 5.2.3.2. Programowanie kasowalne (Erasable Programming) Technologia MOS, jako programowane połączenie tranzystor EPROM i EEPROM: tranzystor nmos z bramka swobodną (floating gate) 7
Programowanie EPROM - hot electron tunneling: Napięcie programowania V PP >>+5V (+15 20V), lawinowe wstrzykniecie elektronów na bramkę swobodną przesunięcie napięcia progowego tranzystora powyżej +5 V (tranzystor stale odcięty) Kasowanie: Naświetlenie promieniowaniem jonizującym (UV 2537 A o ), jonizacja dielektryka umożliwia wzbudzonym elektronom spłynięcie z bramki swobodnej. Obudowy z oknem ze szkła kwarcowego. Powolne; trwa od kilku sekund do kilkunastu minut. Jeśli trwa za długo niebezpieczeństwo nieodwracalnego pozbawienia bramki swobodnej możliwości uwięzienia elektronów (over-erasure). Samoczynne kasowanie pod wpływem promieniowania słonecznego, promieniowania tła (trwałość zapisu ograniczona). Ograniczona ilość cykli programowanie - kasowanie; rzędu 1000. 8
W sumie: Czas programowania dość długi (5 10 µs), ale najkrótszy wśród metod programowania odwracalnego. Bardzo dobre możliwości scalania (pojedynczy tranzystor jako jednocześnie urządzenie programujące i odczytujące). 5.2.3.3. Programowanie kasowalne elektrycznie (Electrically Erasable Programming) Inna metoda wprowadzania elektronów na bramkę swobodną: efekt tunelowy Fowlera - Nordheima, wstrzyknięcie elektronów wprost z drenu. Cieńsza warstwa dielektryka, niższe napięcie programowania (V GD -+12V): Niższe natężenie prądu dłuższy czas programowania, zwykle rzędu-5 ms. Kasowanie: ten sam efekt przy odwróconej polaryzacji napięć = odprowadzenie elektronów z bramki swobodnej. Podczas kasowania niebezpieczeństwo silnego dodatniego naładowania bramki swobodnej (tranzystor stale otwarty) specjalne układy kontrolujące rozładowanie. 9
Różne technologie programowania wielokrotnego - podsumowanie: EPROM EEPROM Flash NOR NAD V cc [V] 5; 12 5 5; 3,3; 2,5 5; 3,3 Program/erase cycles ~10 3 ~10 5 ~10 5 ~10 6 Program method Hot electron FN tunneling Hot electron FN tunneling Erase method UV light FN tunneling FN tunneling FN tunneling Program time 10 µs / Byte 5 ms / Byte 10 µs / Byte 300 µs / 512 Byte Erase time ~30 min 10 ms / chip 1 s / 64 kbyte 5 ms / 16 kbyte Pamięci Flash = technologia E 2 PROM + możliwość jednoczesnego kasowania wszystkich lub grupy komórek. 5.3. Układy PLD 5.3.1. Matryca programowalna Elementy: N linii poziomych z sygnałami WE I 1...I N, K linii pionowych reprezentujących tzw. termy T 1... T K, M linii poziomych z sygnałami WY F 1...F M, połączenia programowalne (oznaczone kółkami). 10
Analiza pracy: Tranzystory MOS otwierane poziomem 0 logicznego (napięciem niskim). Wówczas: T k = 0 wszystkie tranzystory termu k w matrycy górnej są zamknięte punkty są nie zaprogramowane lub na dołączonych wejściach I i = 1. Czyli: T k = 0 wszystkie uczestniczące w nim sygnały WE są równe 1 funkcja NAND: T k = NAND(α k1 +I 1, α k2 + I 2,..., α kn + I N ) gdzie: α ij = 0 punkt programowalny jest zwarty (WE I j dołączone) α ij = 1 punkt programowalny jest rozwarty (WE I j nie dołączone) Analogicznie pracuje matryca dolna: F m = NAND(β m1 +T 1, β m2 +T 2,..., β mn + T N ) gdzie β ij = 0 lub 1 w zależności od zaprogramowania j.w. a) Schemat symboliczny matrycy programowalnej b) Schemat równoważny z praw de Morgana c) Postać symboliczna używana w schematach układów PLD a b c 11
Klasyfikacja architektur PLD Typ układu: PAL (Pragrammable Array Logic) PLE (Programmable Logic Element) PLA (Programmable Logic Array) Matryca AND: Programowalna NIEprogramowalna Programowalna Matryca OR: NIEprogramowalna Programowalna Programowalna Nieprogramowalność oznacza, że w danej matrycy linie sygnałowe są na stałe dołączone do określonych bramek. Np. w układach PAL linie termów są na stałe dołączone do bramek OR: matryca OR jest nieprogramowalna, każda bramka OR ma swój zestaw termów, każdy term na dołączony do dokładnie jednej bramki OR. Programowanie decyduje o tym, jakie sygnały WE uczestniczą w wyznaczaniu poszczególnych termów. 5.3.2. Układy PLE Nieprogramowalna matryca AND. Idea na przykładzie struktury o 3 WE i 4 WY: Termy T 0... T 7 odpowiadają wszystkim 8 kombinacjom sygnałów WE; w każdej chwili dokładnie jeden z nich jest aktywny (równy 1) i zaprogramowane dla niego słowo w matrycy OR zostanie podane na WY. Czyli: pamięć ROM (Read Only Memory) o organizacji 8 słów 4-bitowych (8 x 4), której zawartość ustala się programując matrycę OR. W zależności od technologii pamięć PROM, EPROM lub E 2 PROM. W porównaniu do klasycznych realizacji pamięci ROM: - zaleta: szybsza odpowiedź - wada: mniejszy stopień scalenia, mniejsze pojemności 12
Bufory trójstanowe - zwykle występują na wyjściach w układach PLE Bufor 3-stanowy: OE=1 OUT=IN (0 lub 1) OE=0 OUT=Z (stan wysokiej impedancji) Niezbędne jeśli do jednej linii sygnałowej dołączane wiele wyjść (jak np. przy łączeniu wyjść wielu układów pamięci do magistrali danych). 5.3.3. Układy PAL Nieprogramowalna matryca OR każdy term dołączony na stałe do jednej z bramek OR Struktura: dwupoziomowy układ AND - OR (SOP, Sum Of Products) Najbardziej rozpowszechniona rodzina układów PLD Produkowana początkowo głównie w dwóch technologiach - PROM: przepalane bezpieczniki, szybkie układy bipolarne - EPROM: układy MOS obecnie coraz częściej także w technologii E 2 PROM (np. rodzina PALCE, EE CMOS) Podstawowa klasyfikacja układów PAL: - kombinacyjne - rejestrowe - z makrokomórkami programowalnymi 13
5.3.3.1. Układy PAL kombinacyjne Termy (linie teraz poziome) są ponumerowane 0..63 (obudowa 20- wyprowadzeniowa; w układach większych 0..74, obudowa 24-wypr.). Wejścia do matrycy programowalnej (linie pionowe): piny WE + sprzężenia zwrotne z WY. Ich liczba = liczba WE + liczba sprzężeń zwrotnych. Wszystkie sygnały w matrycy są dostępne komplementarnie; funkcje WY są zanegowane. Układ PAL16L8-10 WE / 8 WY, matryca 64x32-6 WY ze sprzężeniami zwrotnymi (dwa skrajne bez!) 14
PAL16L8: Komórka WY Na każde wypr. WY przypada 8 termów (AND): 1 sterujący buforem + 7 dołączonych na stałe do bramki OR Matryca AND: 64 x 32 punktów programowania (8x8 = 64 linii termów, (10 + 6) x 2 = 32 pionowych linii sygnałowych) Obudowa 20 wyprowadzeniowa (10 WE + 8 WY + Vcc + GND) Term T 8k sterujący k-tym buforem WY może być różnie zaprogramowany: - T 8k = const 1 pin pracuje jako WY (realizuje zaprogramowaną funkcję) - T 8k = const 0 pin pracuje jako dodatkowe WE - T 8k = 0/1- funkcja zmienna pin pracuje jako WE/WY (np. transmisja dwukierunkowa na jednej linii sygnałowej) 15
5.3.3.2. Układy PAL rejestrowe Układ PAL16R8 Sygnał z każdej bramki OR podawany na przerzutnik typu D Dwa sygnały WE wspólne dla wszystkich komórek WY: - Clk - /OE Po 8 termów na każdą bramkę OR Matryca programowalna 64 x 32 Sygnały dostępne w matrycy: 8 WE + 8 sprzężeń zwrotnych z przerzutników Obudowa 20-wypr. (8WE+Clk+/OE + 8WY + Vcc + GND) OE nieprogramowalny, wyprowadzenia WY nie mogą być dwukierunkowe 16
Układy pokrewne 16R8 16R6: dwa skrajne WY rejestrowe zastąpiono WE/WY kombinacyjnymi identycznymi jak w 16L8 (7 termów dołączonych do bramki OR + 1 term sterujący buforem trójstanowym; sprzężenie zwrotne pobrane za buforem możliwa praca dwukierunkowa). 16R4: cztery skrajne WY jako kombinacyjne WE/WY j.w. Oznaczenia układów PAL PAL 16 L 8 PAL 16 R 6 ilość sygnałów doprowadzonych do matrycy programowalnej (liczba WE + liczba sprzężeń zwrotnych) ilość WY lub ilość WY rejestrowych. L / H = układ kombinacyjny z WY aktywnymi 0 (Low) / 1 (High) R = układ z WY rejestrowymi C = układ kombinacyjny z wyjściami komplementarnymi P = układ kombinacyjny z polaryzacją wyjść programowalną V =układ z makrokomórkami WY programowanymi 17
5.3.3.3.Układy PAL z makrokomórkami programowalnymi PAL22V10 Bramki OR dołączone do 10 jednakowych makrokomórek programowalnych Matryca AND 132 x 44 Sygnały w matrycy: 12 wyprowadzeń zewnętrznych + 10 sprzężeń zwrotnych Różna liczba termów dołączonych do bramek OR: 8/10/12/14/16/16/14/12/10/8 Dodatkowe dwa termy realizujące wspólne dla wszystkich makrokomórek sygnały AR i SP Obudowa 24-wypr. (12 WE + 10 WY + V cc + GND) 18
Makrokomórka OLMC - Output Logic Macro Cell Zaprogramowanie dwóch punktów (S0 oraz S1) steruje pracą multiplekserów i określa konkretną funkcję makrokomórki. Przerzutnik typu D z sygnałami AR (Asynchronous Reset) oraz SP (Synchronous Preset) - dwa dodatkowe termy globalne w matrycy. Sygnał Clk wspólny dla wszystkich makrokomórek, pobierany z WE I 0. Dodatkowy term steruje bufor 3-stanowy. Możliwe tryby pracy makrokomórki a. Registered/active low b. Combinatorial/active low c. Registerea/active high d. Combinatorial/active high 19
Układ PAL16V8 Poza konfiguracjami niestandardowymi może emulować dowolny układ z rodziny 16R8 lub z rodziny 10H8. Obudowa 20 wyprowadzeń, matryca AND 64 x 32. 8 programowalnych makrokomórek WY (MC 0 MC 7 ). Dwa globalne punkty programowania (SG0, SG1) i po dwa lokalne w każdej makrokomórce (SL0 i, SL1 i ) razem 18 punktów programowania 20
SG0 - wykorzystanie wyprowadzeń 1 i 11 1 wyprowadzenia 1 i 11 jako I 0 i I 9 (urządzenie bez rejestrów, np. 16L8) 0 wyprowadzenia 1 i 11 jako Clk i OE (urządzenie z rejestrami, np. 16R8) SG1 - rodzaj architektury 1 układ rodziny 16R8 (16R8, 16R6, 16R4 lub 16L8) 0 układ rodziny 10H8 SL0 x - razem z SG1 określa funkcję komórki (rejestrowa 0 / kombinacyjna 1) SL1 x - polaryzacja WY (bramka XOR) Układy PAL / GAL - uwagi: Moduły PLD z makrokomórkami programowalnymi jako pierwsza wprowadziła firma Lattice Semiconductors i nazwała je układami GAL (Generic Array Logic). Były to układy reprogramowalne, co odróżniło je od ówczesnych układów PAL produkowanych przez AMD. Obecnie ta różnica zatarła się: rodzina GAL została wchłonięta przez układy PAL, które także stały się reprogramowalne (PALCE = EE CMOS). GAL is registered trademark of Lattice Seimiconductors Corp. PAL is registered trademark of Advanced Micro Devices, Inc. W 1999 r firma AMD wycofała się z rynku układów PLD, sprzedając swój oddział (firma Vantis) do Lattice. 21
5.3.4. Układy PLA Najbardziej uniwersalna struktura PLD: obie matryce programowalne. Układy chronologicznie pierwsze, ale rozpowszechniały się z oporami; obecnie wyparte przez prostsze układy PAL, znacznie rzadziej od nich stosowane. Przykład układ PLS153: Idea PLA przetrwała sekwenserach programowalnych PLS (Programmable Logic Sequencer): matryce programowalne + przerzutniki + sprzężenia zwrotne. Np. układ PLS105:- - 16 wyprowadzeń WE - 48 termów AND - łącznie 14 przerzutników typu RS; na każdy przerzutnik 2 linie sumy OR (do wejść R i S) - wspólny sygnał zegarowy (pobierany z dedykowanego WE) oraz PRESET - stan 8 przerzutników podawany na wyprowadzenia WY poprzez bufory 3-stanowe - stan 6 ukrytych" przerzutników dostępny jako sprzężenie zwrotne w matrycy AND 22
5.4. Układy PGA / FPGA Przypomnienie: Gate Arrays - najprostsza z technologii układów programowalnych maską (gotowa matryca bramek + projektowanie warstw metalizacji). Programmable Gate Arrays - połączenie idei matrycy gotowych bloków oraz koncepcji programowania punktów połączeń linii sygnałowych jak w technologiach PLD. Popularne obecnie układy FPGA (Field Programmable GA) - układy reprogramowalne elektrycznie. Firma Xilinx, koncepcja LCA (Logic Cell Array): - CLB (Configurable Logic Block) = konfigurowalny blok logiczny (dowolna funkcja boolowska zmiennych wejściowych + przerzutnik(i)) - SW (Switch Matrix) = programowalne połączenia pomiędzy różnego rodzaju liniami sygnałowymi, biegnącymi pomiędzy CLB. - I/O Block = bufonowanie wyprowadzenia zewnętrznego. 23
5.5. Programowanie układów PLD 5.5.1. Zaprojektowanie układu cyfrowego Edytor i kompilator PLD. Np. systemy PALASM (AMD), CUPL, ABEL... Wynik: mapa przepalonych" połączeń w strukturze układu, np. plik w standardowym formacie JEDEC (Joint Electron Device Engineering Council). 5.5.2. Programatory zewnętrzne Urządzenie zewnętrzne + komputer PC (podłączenie przez port szeregowy lub równoległy) + oprogramowanie 24
5.5.3. Programowanie w systemie (In System Programming, ISP) Programowanie układu wlutowanego", ostatnio coraz bardziej popularne. Joint Test Action Group (JTAG) => IEEE 1149.1 Boundary Scan Test Interface Standard (1990) - standard testowania połączeń obwodów drukowanych. IEEE 1149.1 - interfejs TAP (Test Access Port): 4 sygnały, urządzenia połączone szeregowo - język BSDL (Boundary Scan Description Language): zestaw instrukcji testujących przesyłanych interfejsem TAP Lata 90.: wykorzystanie interfejsu TAP przez producentów PLD / FPGA do programowania i testowania in system; rozszerzanie zestawu instrukcji BSDL. IEEE 1532 Standard for In-System Configuration of Programmable Devices standaryzacja zastosowania 1149.1 do programowania ISP. 4 sygnały interfejsu TAP: - TDI (Test Data Input) - TDO (Test Data Output) - TMS (Test Mode Select) - TCK (Tes tclock) Idea połączenia urządzeń - Łańcuch JTAG (JTAG scan chain): Lattice Semiconductor: układ GAL22V10 w wersji ISP; obudowa 28 wyprowadzeń, sygnały interfejsu TAP jako dodatkowe 4 wyprowadzenia. 25