Automat - WFiIS
Transkrypt
Automat - WFiIS
Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Wykład 6 Automat skończony FSM: 2016 Diagram i graf automatu Przykład: detektor zbocza Kodowanie stanów automatu Atrybuty syntezy związane z automatem (xst) Automat ze ścieżką danych Wady architektury automatu skończonego Architektura mikroprogramowana 29 listopad 2016 Wprowadzenie do FPGA: Rodzaje logicznych układów programowalnych Technologie pamięci konfiguracyjnej Architektura uogólnionego FPGA i elementów składowych http://www.fis.agh.edu.pl/~skoczen/hdl AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu 1 X1 X2 Xm Z1 Z2 Zn Q1 Q1 + Uogólniony model automatu Mealy’ego (X, S, Z, δ, λ) Uklad kombinacyjny Q2+ Q2 Q1 X=[X1, X2,... Xm] Z=[Z1, Z2,... Zn] S=[Q1, Q2,... Qk] S+=[Q1+, Q2+,... Qk+] wektor wejść wektor wyjść wektor stanu wektor stanu następnego Z = λ(S,X) funkcja wyjść S+ = δ(S,X) funkcja stanu Q2 Qk Qk Qk+ clk AGH, WFiIS, HDL 2 Diagram automatu (1) Równoważnym do grafu stanów sposobem zapisu automatu jest rysowanie jego diagramu. Przypomina to schematy blokowe stosowane przy projektowaniu oprogramowania ale kilka specyficznych reguł musi być spełnionych. Podstawowymi składnikami takiego diagramu są: Symbol decyzji Symbol stanu układu Symbol wyjść nazwa_stanu lista_wyjść_moore’a T Boolean_expresion AGH, WFiIS, HDL F lista_wyjść_mealy’ego 3 Diagram automatu (2) Składa się z bloków automatu. Jeden blok opisuje działanie automatu gdy znajduje się w jednym stanie. Zbudowany jest z dokładnie jednego symbolu stanu wraz symbolami decyzji i wyjść związanymi z tym stanem. Ścieżka przejścia a : jedno wejście Kiedy układ wchodzi w stan S1 wyjścia out1 i out2 stają się aktywne 1. Jeśli warunek X1=0 to także wyjścia out3 i out4 stają się równe 1. Jeśli oba warunki X1=X2=0 to układ przechodzi do kolejnego stanu drogą wyjścia 1. Blok automatu S1 out1 out2 jeden stan Ścieżka przejścia a X1 0 1 Ścieżka przejścia b out3 out4 Ścieżka przejścia b : Kiedy układ wchodzi w stan S1 wyjścia out1 i out2 stają się aktywne 1. Jeśli jednak warunek X1=1 a warunek X3=0 to wyjście out5=1 i układ przechodzi do kolejnego stanu drogą wyjścia 3. 0 X2 1 0 1 out5 1 2 AGH, WFiIS, HDL X3 n wyjść 3 n 4 Diagram automatu (3) 1/0 0/0 1/0 S0 Za S1 Zb S2 Zc 0/0 Diagram i graf automatu o: Jednym , wejściu X Trzech wyjściach Moore’a Za, Zb, Zc Dwóch wyjściach Mealy’ego Z1, Z2 1/Z2 0/Z1 S0 Za 0 X S1 1 Zb 0 X S2 1 Zc 0 Z1 AGH, WFiIS, HDL X 1 Z2 5 Model automatu w Verilog-u Układ kombinacyjny funkcji stanu następnego wejście X localparam S0= , ..., Sn= ; reg [m:0] stan, next_stan; Rejestr stanu always @* case(stan) S0: nast_stan = ...; S1: ...; ... Sn: ...; endcase always @(posedge clk, negedge rst) if(~rst) stan <= S0; else stan <= nast_stan; stan Układ kombinacyjny funkcji wyjść stan X AGH, WFiIS, HDL always @* case(stan) S0: Z = ...; S1: ... ... Sn: ...; endcase wyjście Z 6 Gorąca jedynka w Verilog-u ... parameter [1:0] S0 = 2'd0, S1 = 2'd1, S2 = 2'd2, S3 = 2'd3; Odwrócony styl kodowania rozgałęzienia wielokrotnego case: stała jest użyta w argumencie case, a zmienne w gałęziach. ... reg [3:0] state, nxstate; ... always @(state or X) begin nxstate = 4'b0000; case(1'b1) state[S0]: if(X) nxstate[S1] state[S1]: if(X) nxstate[S1] state[S2]: if(X) nxstate[S3] state[S3]: if(X) nxstate[S1] endcase end ... = = = = 1'b1; 1'b1; 1'b1; 1'b1; AGH, WFiIS, HDL else else else else nxstate[S0] nxstate[S2] nxstate[S0] nxstate[S2] = = = = 1'b1; 1'b1; 1'b1; 1'b1; 7 Detektor zbocza narastającego ISim, Xilinx® o AGH, WFiIS, HDL 8 Detektor zbocza narastającego Koncepcja z wykorzystaniem automatu Moore’a. a=0 I o = 0 a=1 a=0 H o = 1 a=1 F o = 0 ISim, Xilinx® o AGH, WFiIS, HDL 9 Detektor zbocza narastającego ISim, Xilinx® a o AGH, WFiIS, HDL 10 Detektor zbocza narastającego Koncepcja z wykorzystaniem automatu Mealy’ego. I H ISim, Xilinx® o AGH, WFiIS, HDL 11 Detektor zbocza narastającego Porównannie automatu Moore’a i Mealy’edgo na przykładzie detektora zbocza narastajacego. ISim, Xilinx® ISim, Xilinx® Automat Moore’a Automat Moore’a nie widzi impulsów krótszych od okresu zegara clk. Automat Mealy’ego o AGH, WFiIS, HDL 12 Liczność zbioru stanów Jeżeli zbiór stanów wewnętrznych układu jest jednoelementowy to jest to układ kombinacyjny. Jeżeli zbiór stanów wewnętrznych układu jest wieloelementowy to jest to układ sekwencyjny. Układ kombinacyjny jest automatem bez pamięci tzn. pozbawionym zbioru stanów wewnętrznych i funkcji przejść δ. AGH, WFiIS, HDL 13 Charakterystyka funkcji δ i λ Automat nazywamy zupełnym w sensie funkcji δ (λ) gdy dziedziną tej funkcji jest cały iloczyn kartezjański zbioru sygnałów wejściowych X i zbioru stanów wewnętrznych S. Rozróżniamy automaty: δ - zupełny i λ - zupełny δ - niezupełny i λ - zupełny δ - zupełny i λ - niezupełny δ - niezupełny i λ - niezupełny AGH, WFiIS, HDL 14 Kodowanie Kodowanie jest procesem przejścia od automatu do układu sekwencyjnego. Automat jest modelem matematycznym układu sekwencyjnego, a przejście pomiędzy nimi ma charakter zmiany oznaczeń od oznaczeń abstrakcyjnych do wektorów zero-jedynkowych. Na przykład: w-elementowemu zbiorowi S stanów wewnętrznych automatu odpowiada zbiór Q wektorów o długości p kodujących te stany gdzie 2p ≥ w. Może się więc zdarzyć, że automatowi zupełnemu odpowiada układ niezupełny. Istnieje bardzo wiele wariantów kodowania ale jego wybór ma zasadnicze znaczenie dla stopnia złożoności wyniku syntezy. AGH, WFiIS, HDL 15 Kodowanie Liczba możliwych różnych kodowań dla automatu 2 ! n o s stanach za pomocą kodu o 2n słowach wynosi: 2 n s ! Podstawowe schematy kodowaniu stanów (n – liczba bitów): Binarny naturalny 2n słów 000, 001, 010, 011, 100, ... Przypadkowy 2n słów Przypadkowa kolejność słów kodu naturalnego Graya 2n słów 000, 001, 011, 010, 110, 111, 101, 100 Kolejne słowa różnią się jednym bitem Johnsona 2∙n słów 000, 001, 011, 111, 110, 100 Kolejne słowa różnią się jednym bitem Gorąca jedynka Zmodyfikowana gorąca jedynka W Spartanie-3 jest to kodowanie domyślne. n słów 001, 010, 100 n+1 słów Daje możliwość zaoszczędzenia przerzutnika; stanem resetu są same zera 000, 001, 010, 100 Zimne zero n słów 110, 101, 011 Sekwencyjny 2n słów jednego Kolejność słów kodu binarnego, jest określona na postawie długości połączeń między stanami w grafie Compact Minimalizuje liczbę bitów; właściwy dla optymalizacji powierzchni układu Speed1 Optymalizuje szybkość działania układu; liczba bitów jest zwykle większa od liczby stanów User Określony za pomocą localparam w Verilog-u lub enum_encoding w VHDL-u AGH, WFiIS, HDL 16 Kodowanie Kodowanie stanów kodem Graya: zapewnia, że tylko jeden bit będzie przełączany przy przejściu między stanami sąsiednimi, dobry dla układów o długich ścieżkach w grafie bez rozgałęzień, minimalizuje hazardy i glitche (fałszywe impulsy). szczególnie dobre rezultaty gdy rejestr stanu jest zbudowny na przerzutnikach T. Kodowanie stanów za pomocą gorącej jedynki: kodowanie domyślne dla Spartana-3, z każdym stanem związany jest jeden przerzutnik (bit), w każdym okresie zegara tylko jeden bit rejestru stanu jest aktywny (1), podczas przejścia między dowolnymi stanami dwa bity są przełączane, właściwy w układach FPGA gdzie dostępna jest wielka liczba przerzutników, gdyż redukuje złożoność logiki stanu następnego, tylko jeden bit musi być zdekodowany w celu rozpoznania stanu, wszystkie kodowania są równoważne, bardzo nie efektywnye w układach CPLD, optymalizuje szybkość lub moc rozpraszaną. Automatyczny dobór kodowania stanów: Syntezator XST próbuje dobrać najlepsze kodowanie dla każdego automatu w projekcie. AGH, WFiIS, HDL 17 Gorąca jedynka w Verilog-u ... parameter [1:0] S0 = 2'd0, S1 = 2'd1, S2 = 2'd2, S3 = 2'd3; Odwrócony styl kodowania rozgałęzienia wielokrotnego case: stała jest użyta w argumencie case, a zmienne w gałęziach. ... reg [3:0] state, nxstate; ... always @(state or X) begin nxstate = 4'b0000; case(1'b1) state[S0]: if(X) nxstate[S1] state[S1]: if(X) nxstate[S1] state[S2]: if(X) nxstate[S3] state[S3]: if(X) nxstate[S1] endcase end ... = = = = 1'b1; 1'b1; 1'b1; 1'b1; AGH, WFiIS, HDL else else else else nxstate[S0] nxstate[S2] nxstate[S0] nxstate[S2] = = = = 1'b1; 1'b1; 1'b1; 1'b1; 18 Kodowanie Syntezatory zawierają kompilator automatu skończonego (FSM Compiler), który: Wyszukuje rejestry ze sprzężeniem zwrotnym sterowane bieżącą wartością rejestru (case lub if testujące bieżącą wartość rejestru), Konwertuje do grafu symbolicznego w celu optymalizacji, Usuwa stany nieosiągalne wraz z ich logiką, Przekodowuje stany. Niektóre syntezatory zawierają narzędzie do automatycznego doboru kodowania (FSM Explorer), które pracując po kompilatorze optymalizując kodowanie. Jest to bardzo czasochłonne. AGH, WFiIS, HDL 19 Kodowanie stanów Po uzyskaniu minimalnej tabeli stanów obieramy kodowanie stanów za pomocą stanów przerzutników rejestru stanu automatu. Dla przykładu, układ o trzech stanach ma 24 różne sposoby kodowania na dwóch przerzunikach gdyż stan S0 może być zakodowany na 4 sposby, stan S1 na 3 sposoby, stan S2 już tylko na 2 sposby: 4×3×2 = 24 1 2 3 4 5 6 7 19 23 24 S0 00 00 00 00 00 00 01 ... 11 ... 11 11 S1 01 01 10 10 11 11 00 ... 00 ... 10 10 S2 10 11 01 11 01 10 10 ... 01 ... 00 01 Zamiana kolumn nie zmienia wykorzystanych do realizacji automatu zasobów gdyż wiąże się tylko ze zmianą oznaczeń przerzutników. W tym sensie kodowania 1 i 3, 2 i 4 oraz 5 i 6 są równoważne. Zamiana rzędów wpływa na ilość wykorzystanych do realizacji automatu zasobów. AGH, WFiIS, HDL 20 Kodowanie stanów Zanegowanie jednej lub więcej kolumn kodowania nie zmienia wykorzystanych zasobów w przypadku użycia przerzutników symetrycznych J-K, T i S-R. Kodowania 2 i 7 oraz 6 i 19 są równoważne. Dla przerzutnika niesymetrycznego D zanegowanie kolumny wymaga dodania inwertera. AGH, WFiIS, HDL 21 Kodowanie stanów Przez negowanie i przestawianie kolumn dowolne kodowanie może być sprowadzone do takiego, w którym pierwszy stan zawiera wyłącznie zera. W ten sposów dla układu o trzech stanach z przerzutnikami symetrycznymi pozostają tylko trzy różne kodowania. Podobnie jest dla czterech stanów. 3 stany 4 stany 1 2 3 1 2 3 S0 00 00 00 00 00 00 S1 01 01 11 01 01 11 S2 10 11 01 10 11 01 S3 - - - 11 10 10 Dwa kodowania są równoważne jeśli jedno może być wyprowadzone z drugiego przez przestawianie lub negowanie kolumn. AGH, WFiIS, HDL 22 Kodowanie stanów Dwa kodowania są równoważne jeśli jedno może być wyprowadzone z drugiego przez przestawianie lub negowanie kolumn. Liczba stanów Liczba przerzutników Liczba nierównoważnych kodowań 2 1 1 3 2 3 4 2 3 5 3 140 6 3 420 7 3 840 8 3 840 9 4 10 810 800 ... 14 ≈5.5∙1010 4 AGH, WFiIS, HDL Możliwe testowanie wszystkich kodowań Ręczne Komputerowe niemożliwe 23 Kodowanie stanów Ponieważ nie spróbujemy wszystkich kodowań to należy skoncentrować się na tych, które dają jedynki w tabelach funkcji wejść przerzutników w sąsiednich kwadratach tak by można je łatwo pogrupować w wyrażenia. Kody dwóch stanów są sąsiednie wtedy gdy różnią się tylko jednym bitem. 010 i 011 są sąsiednie, 010 i 001 nie są sąsiednie. Użyteczne są następujące wskazówki: Stany, które mają ten sam stan następny dla danego wejścia powinny mieć sąsiednie kody Stany, które są następnymi stanami tego samego stanu powinny mieć sąsiednie kody Stany o tym samym wyjściu dla danego wejścia powinny mieć sąsiednie kody Daje uproszczenie funkcji stanu nstępnego δ Daje uproszczenie funkcji wyjść λ Slajd do samodzielnego studiowania AGH, WFiIS, HDL 24 Postępowanie: Wypisz zbiory stanów, które na podstawie wskazówek powinny być sąsiednie. Stosując tabele Karnougha staraj się (metodą prób i błędów) zrealizować możliwie dużo z wymaganych sąsiedztw. Pamiętaj przy tym: Stan początkowy powinien być w zerowym polu tabeli Karnougha. Zwykle upraszcza to układ inicjajcji (reset). Jako pierwsze staraj się zrealizować te sąsiedztwa, które są wymagane więcej niż raz. Stany z grupy liczącej trzy lub cztery wymagane sąsiedztwa powinny znaleźć się w grupie czterech sąsiednich pól tabeli Karnougha. Wyższy priorytet mają wymagania sformułowne na podstawie funkcji stanu następnego. Tylko jeśli mamy więcej niż jedną funkcję wyjścia to można rozważyć podwyższenie priorytetu wymgań pochodzących z funkcji wyjść. Slajd do samodzielnego studiowania AGH, WFiIS, HDL 25 Kodowanie Wybór kodowania dla całego projektu w systemie ISE firmy Xilinx: XST, Xilinx® AGH, WFiIS, HDL 26 Atrybuty Atrybut jest mechanizmem dołączania informacji o objektach, instrukcjach lub grupach instrukcji w kodzie źródłowym dla użycia przez inne narzędzia operujące na kodzie języka HDL. Nie ma atrybutów standardowych lub predefiniowanych. Składnia: (* nazwa_atrybutu[=wyrazenie] [, lista_kolejnych_attrybutow] *) Gdy atrybut nie otrzymuje wartości wyraźnie to domyślnie przypisywane jest mu 1. Mogą być dołączane: przed (jako prefix): deklaracją, modułem, rozkazem, podłączeniem do portu po (jako sufix) do operatora lub nazwy funkcji. (* full_case=1, parallel_case=0 *) case (sel) endcase (* dont_touch *) module array_multiplier(x, y, product); endmodule AGH, WFiIS, HDL 27 Atrybuty (* fsm_state *) reg [1:0] state1; (* fsm_state=1 *) reg [1:0] state2, state3; x = add(* mode=”cla” *)(x, y); x = y +(* mode=”cla” *) z; AGH, WFiIS, HDL 28 Atrybuty Verilog: : Składnia atrybutu fsm_encoding (specyficzne dla Xilinxa) : (*fsm_encoding = "{auto|one-hot|compact|sequential|gray|johnson|speed1|user}"*) Taką linię umieszczamy bezpośrednio przed modułem lub deklaracją sygnału, którego ma dotyczyć to kodowanie. AGH, WFiIS, HDL 29 AGH, WFiIS, HDL 30 Atrybuty kodowania stanów XST, Xilinx® AGH, WFiIS, HDL 31 Bezpieczny automat Gdy automat nie jest zupełny to należy rozróżnić: Stany logiczne, Stany fizyczne. Dla automatu o trzech stanach logicznych: Przy kodowaniu binarnym istnieje 22-3 = 1 – jeden stan fizyczny nieosiągalny, Przy kodowaniu gorącą jedynką 23-3 = 5 – pięć stanów fizycznych nieosiągalnych, Zakłócenia lub promieniowanie może spowodować przejście układu w jeden z tych stanów, z których powrót może być trudny lub niemożliwy. To nierozwiązuje problemu gdyż case działa tylko w obrębie typu wyliczeniowego stanów, a te przecież nie obejmują stanów niebezpiecznych. Pełne rozwiązanie problemu wymaga detekcji i korekcji błędów (kod Hamminga). Często wystarcza takie zaprojektowanie automatu, że wejście w jeden z niebezpiecznych stanów wymusza następne przejście do stanu bezpiecznego. default: next_state = initial_state; AGH, WFiIS, HDL 32 Atrybuty bezpiecznego automatu W trybie bezpiecznej implementacji (Safe Implementation), syntezator XST generuje dodatkową logikę, która wymusza przejście automatu do stanu bezpiecznego (powrotnego) jeśli zdarzy się, że automat znajdzie się w stanie zabronionym. Domyślnie jako stan powrotny wybierany jest stan resetu. Jeżli automat takiego stanu nie posiada to jest to stan włączenia zasilania (power-up). Stan ten może być określony przez projektanta za pomocą atrybutu SAFE_RECOVERY_STATE. Verilog: : Składnia atrybutu safe_implementation (specyficzne dla Xilinxa): (* safe_implementation = "{yes|no}" *) Taką linię umieszczamy bezpośrednio przed modułem lub deklaracją sygnału, którego ma dotyczyć. AGH, WFiIS, HDL 33 Atrybuty bezpiecznego automatu Jeśli zdarzy się, że automat znajdzie się w stanie zabronionym to będzie posiadał logikę, która wymusi przejście do stanu zadeklarownego jako safe_recovery_state. Verilog: Składnia atrybutu safe_recovery_state (specyficzne dla Xilinxa): (* safe_recovery_state = "<value>" *) Taką linię umieszczamy bezpośrednio przed deklaracją sygnału, którego ma dotyczyć. AGH, WFiIS, HDL 34 Atrybuty stylu automatu Domyślnie logika automatu jest syntezowana na elementach LUT. W przypadku dużych automatów korzystniej jest wykorzytać w tym celu elemety BRAM. Do wymuszenia takiego stylu syntezy automatu służy atrybut fsm_style. Verilog: : Składnia atrybutu fsm_style (specyficzne dla Xilinxa): (*fsm_style = "{lut|bram}" *) Taką linię umieszczamy bezpośrednio przed deklaracją sygnału, którego ma dotyczyć. Jeśłi automat ma asynchroniczne kasowanie to nie może być syntezowany na elementach BRAM. Wtedy generowane jest ostrzeżenie i synteza przebiega domyślnie na elementach LUT. AGH, WFiIS, HDL 35 Automat wysokiego poziomu Y=0 off Następny stan X on1 Y=1 stan Wejścia X zmienna Układ kombinacyjny Rejestr stanu X’ on2 Y=1 on3 Y=1 Wyjścia Y Licznik X Y=0 Cnt=2 off X’ Y=1 on Cnt=Cnt-1 Cnt=0 (Cnt=0)’ Następna wartość Cnt AGH, WFiIS, HDL 36 Ograniczenia automatu skończonego Wady automatu skończonego: Eksplozja stanów Obsługa wyjątków Brak elastyczności w czasie wykonania Alternatywą jest architektura mikroprogramowana. AGH, WFiIS, HDL 37 Eksplozja stanów FSM1 X FSM2 FSM1 FSM2 A1 A 1 h & !g h g B 2 !h !g C g B2 !h h C2 !h & !g C3 h&g 3 !g !h & g A2 !h A3 g B3 AGH, WFiIS, HDL B1 !g C1 38 Obsługa wyjątków exc exc A1 exc exc exc exc exc exc g & !exc B2 h & !g & !exc h & !exc !h & !exc !h & !g & !exc C2 C3 h & g & !exc !g & !exc !h & g A2 B1 !g & !exc A3 !exc !h & !exc g & !exc B3 C1 !exc AGH, WFiIS, HDL 39 Architektura mikroprogramowana FSMD FSMD Micro-programmed Machine Maszyna mikro-programowana Jump field state reg status NextState Logic status NextAddress Logic Control Store CSAR Microinstruction Datapath Datapath Command field Zastąpienie logiki stanu następnego automatu programowalną pamięcią zwaną pamięcią sterowania. Przechowuje ona mikro-instrukcje i jest adresowana zawartością rejestru adresowego pamięci sterowania CSAR (Control Store Address Register). Następna wartość w tym rejestrze jest określana przez blok logiki adresu następnego w oparciu o: Bierzącą wartość w CSAR, Zawartość bieżącej mikroinstrukcji, Wartości flag określonych przez ścieżkę danych. AGH, WFiIS, HDL 40 Architektura FSMD Rejestr stanu stan Scieżka danych zmienna Logika stanu mastępnego Następny stan Status Automat skończony ze ścieżką danych AGH, WFiIS, HDL 41 Architektura mikroprogramowana Pole skoku Logika Adresu Następnego Status Rejestr Adresu Pamięci Sterowania CSAR Ścieżka Danych Pamięć Sterowania Mikroinstrukcja Pole komendy W czasie jednego okresu zegara: rejestr CSAR dostarcza adres do pamięci sterowania, z której pobierana jest mikroinstrukcja. Domyśłna wartość CSAR jest wartością inkrementowaną o jeden. ścieżka danych wykonuje operację zakodowaną w komendzie i zwraca status, który jest informacją wejściową dla logiki adresu następnego. logika następnego adresu uaktualnia zawartośc rejestru CSAR. AGH, WFiIS, HDL 42 Architektura mikroprogramowana Mikroinstrukcja składa się z dwóch części: komendy, która obsługuje aktywność ścieżki danych i adresu względnego (skoku), który jest informacją wejściową dla logiki adresu. Istotnym parametrem czasowym tej architektury jest łączne opóźnienie: pamięci sterowania, logiki adresu następnego i ścieżki danych. AGH, WFiIS, HDL 43 Układ programowalny PLD FPGA CPLD ROM PLA PAL AGH, WFiIS, HDL 44 PLD – struktura ROM Matryca bramek AND jest stała (kropki) i generuje wszystkie mozliwe iloczyny pełne sygnałów wejściowych. Matryca bramek OR jest programowalna (krzyżyki) i umożliwia realizację dowolnej funkcji. AGH, WFiIS, HDL 45 PLD – struktura PLA Zarówno matryca bramek AND jak i matryca bramek OR jest programowalna (krzyżyki). Obecnie układy PLA w postaci dyskretnej przestały być stosowane. Struktura ta ma jednak szerokie zastosowanie w projektach typu full-custom i cell-based. AGH, WFiIS, HDL 46 PLD – struktura PAL Matryca bramek OR jest stała (kropki). Matryca bramek AND jest programowalna (krzyżyki). AGH, WFiIS, HDL 47 Programowalne połączenia SRAM Flash Antifuse CMOS Dwie warstwy polikrzemu Nowy polikrzem Programowanie Rejestr przesuwny FAMOS Lawinowe Powierzchnia komórki Bardzo duża Duża Mała Rezystancja ≈2 kΩ ≈2 kΩ ≈500 kΩ Pojemność ≈50 fF ≈50 fF ≈10 fF Technologia AGH, WFiIS, HDL 48 Technologia SRAM Konfiguracyjna komórka typu SRAM jest zbudowana z dwóch inwerterów połączonych w zamkniętą pętlę wykonanych w standardowej technologii CMOS. Komórka taka steruje bramkami innych tranzystorów w układzie: włączenie tranzystora wytwarza połączenie, wyłączenie tranzystora przerywa połączenie. Sterowanie tranzystorami tworzącymi połączenia Wpisywanie danych konfiguracyjnych Zaleta: Układ może być programowany już na płycie drukowanej i wielokrotnie reprogramowany w miarę zmieniających się wymagań projektowych i rozwoju oprogramowania. Sprzęt jest dzięki temu rekonfigurowalny „w locie”. Wada: Konieczne jest podtrzymywanie zasilania aby informacja w SRAM-ie była zachowana. Rozwiązaniem alternatywnym jest ładowanie danych konfiguracyjnych do SRAM-u w momencie włączania zasilania z zewnętrznej pamięci typu PROM. Całkowita powierzchnia komórki konfiguracyjnej SRAM wraz z tranzystorem sterującym ją jest większa niż potrzebna na element programujący anty-bezpieczniki. AGH, WFiIS, HDL 49 Technologia antifuse Antybezpiecznik w przeciwieństwie do normalnego bezpiecznika utrzymuje obwód otwarty dopóki nie zostanie wymuszony programujący prąd ~5mA. Programmable Low-Impedance Circuit Element (PLICE) firmy Actel jest antybezpiecznikiem wytworzonym pomiędzy warstwami Poly i Diff. Przepływ dużego prądu roztapia cienką warstwę dielektryka umieszczonego między elektrodami z polikrzemu i dyfuzji formując stałe połączenie o średnicy około 20 nm. Domieszki migrując z obu elektrod ustalają wartość rezystancji połączenia. Struktura ViaLink firmy QuickLogic AGH, WFiIS, HDL 50 Technologia flash Szeroka klasa pamięci nie-ulotnych NVM (nonvolatile memory), których komórka podstawowa bazuje na strukturze tranzystora MOS z dodatkową pływającą bramką pełniącą funkcję magazynu ładunku. Istnieje wiele takich struktur: FAMOS – Floating gate Avalanche-injection MOS, SAMOS – Staecked gate Avalanche-injection MOS, FLOTOX – FLOating gate Thin Oxide, ETOX – EPROM Tunnel Oxide (IBM), i wiele ich modyfikacji. Zasada działania polega na zmianie napięcia progowego Vth tranzystora MOS poprzez wprowadzenie dodatkowych ładunków do przewodzącej warstwy zwanej pływającą bramką, uwięzionej pomiędzy dwiema warstwami izolatora. Bramka sterująca, polikrzem Polikrzemowa, przewodząca warstwa gromadząca ładunke – pływająca bramka Izolator pomiędzy polikrzemami P substrate N + N źródło CHE + zapis FH Cienki, tunelowy tlenek bramkowy dren CHE – channel hot electrons FH – Fowler-Nordheim tunneling wymazywanie AGH, WFiIS, HDL 51 Technologia flash Proces zapisu odbywa się: prądem tunelowym FN (Fowler-Nordheim) z kanału lub z drenu tranzystora do pływającej bramki lub prądem gorących elektronów generowanych w kanale tranzystora w nasyceniu CHE (chennel hot electrons) w obszarze zubożenia przy drenie tranzystora. AGH, WFiIS, HDL 52 Technologia flash Proces wymazywania odbywa się: prądem tunelowym FN (Fowler-Nordheim) do kanału lub do drenu tranzystora do pływającej bramki. Proces tunelowego wymazywania jest bardzo wolny (rzędu ms) więc operacja ta jest wykonywana dużymi blokami – stąd pochodzi nazwa tej technologii „flash”. Wymazywanie prądem źródła: e- w dół oznacza prąd tunelowy FN elektronów wstrzykiwanych z pływającej bramki do żródła lub do kanału, h+ w górę oznacza prąd gorących dziur wstrzykiwanych ze złącza źródło-podłoże do pływającej bramki. AGH, WFiIS, HDL 53 Complex PLD Integracja wielu struktur PAL zwanych makrokomórkami wraz ze strukturami programowalnych połączeń w jednym układzie scalonym. Makro PAL Obszar połączeń programowalnych Makro PAL Makro PAL Obszar połączeń programowalnych Makro PAL Obwód wejścia/wyjścia AGH, WFiIS, HDL 54 Struktura pLSI Routing wyjściowy Obwód wejścia/wyjścia PAL PAL PAL PAL PAL PAL Routing globalny PAL PAL PAL PAL PAL PAL PAL Routing wyjściowy PAL Routing wyjściowy PAL PAL Routing wyjściowy AGH, WFiIS, HDL 55 Struktura FPGA typu matrycowego Obwód wejścia/wyjścia CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB AGH, WFiIS, HDL 56 Struktura FPGA typu rzędowego Obwód wejścia/wyjścia CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB CLB AGH, WFiIS, HDL 57 Architektura FPGA FPGA jest układem scalonym zaprojektowanym do konfiguracji po wykonaniu. Dwa rodzaje architektury: drzewiasta (tree-based FPGA architecture) – bloki logiczne połączone są w klastry, które następnie rekursywnie formują strukturę hierarchiczną. Zajmuje mniejszą powierzchnię. Siatkowa (mesh-based FPGA architecture) - bloki logiczne połączone są poprzez dwuwymiarową siatkę sieci połączeniowej. Zaletą tego rozwiązania jest skalowalność topografii układu. AGH, WFiIS, HDL 58 1987 - Steve Casselman zbudował komputer z 600 000 reprogramowalnych bramek. Casselman od roku 1992 jest właścicielem patentu. Ross Freeman jest uważany za wynalazcę FPGA. Bernard Vonderschmitt wprowadził model biznesowy pozbawiony linii technologicznej. Xilinx co-founders Ross Freeman and Bernard Vonderschmitt invented the first commercially viable field-programmable gate array in 1985 – the XC2064. The XC2064 had programmable gates and programmable interconnects between gates, the beginnings of a new technology and market. The XC2064 had 64 configurable logic blocks (CLBs), with two three-input lookup tables (LUTs). Rynek FPGA w roku 2010: Altera – 31%, Microsemi(Actel) -10%, Xilinx – 36%. Pozostali to: Atmel, Cypress, Lattice Semiconductor, QuickLogic. Fabless manufacturing is the design and sale of hardware devices and semiconductor chips while outsourcing the fabrication or "fab" of the devices to a specialized manufacturer called a semiconductor foundry. Foundries are typically but not exclusively located in China and Taiwan AGH, WFiIS, HDL 59 Blok wejściowowyjściowy Pionowy kanał łączeniowy (I/O Block – IOB) (Vertical Routing Channel) Konfigurowalny blok logiczny Element kluczujący (Configurable Logic Block – CLB) (Switch Box - SB) Element łączący (Connection Box - CB) Poziomy kanał łączeniowy (Horizontal Routing Channel) Siatkowe FPGA składa się z matrycy konfigurowalnych bloków logiki (Configurable Logic Blocks - CLBs), z których każdy składa się z klastra podstawowychAGH, elementów logicznych (Basic Logic Elements -BLEs)., które WFiIS, HDL 60 składają się z pamięci podręcznej (Look-Up Table) i przerzutnika (Flip-Flop). Architektura FPGA Siatkowe FPGA składa się z matrycy konfigurowalnych bloków logiki (Configurable Logic Blocks - CLBs), z których każdy składa się z klastra podstawowych elementów logicznych (Basic Logic Elements -BLEs), które składają się z pamięci podręcznej (Look-Up Table) i przerzutnika (Flip-Flop). Elementy kluczujące (Switch boxes - SB) łączą poziome i pionowe ścieżki sieci połączeniowej. Elementy łączące (Connection Boxes – CB) łączą bloki logiczne CLB i bloki wejścia-wyjścia IOB z sąsiadującymi ścieżkami sieci połączeniowej. Sieć połączeniowa FPGA zajmuje 80-90% powierzchni układu. Powierzchnia logiki zajmuje 10-20%. Elastyczność FPGA zależy głównie od jego programowalnej sieci połączeniowej. Dlatego mówi się też o architekturze wyspowej – „wyspy” logiki w „morzu” zasobów połączeniowych. AGH, WFiIS, HDL 61 Podstawowy element logiczny Składa się z: Pamięci podręcznej (Look-Up-Table – LUT), Przerzutnika D. Pamięć podręczna LUT o k wejściach (LUT-k) zawiera 2k bitów konfiguracyjnych. Basic Logic Element - BLE Wejścia BLE 4 wejściowy LUT Może implementować dowolną k-wejściową funkcję logiczną. Wyjście CLB Multiplekser Przerzutnik D Komórka SRAM (bit konfiguracyjny) AGH, WFiIS, HDL 62 Podstawowy element logiczny Gdy rośnie liczba wejść LUT-ów to spada ich liczba wymagana do zmapowania sprzętu gdyż więcej funkcjonalności logicznej może być utworzona w jednym LUT. Wobec tego spadnie liczba potrzebnych połączeń między LUT-ami czyli układ będzie szybszy. Ale powierzchnia LUT-a rośnie exponencjalnie z liczbą wejść. 4-wejściowe LUT-y są dobrym kompromisem między szybkością pracy aplikacji i gęstością sieci połączeniowej w układzie FPGA. AGH, WFiIS, HDL 63 Konfigurowalny blok logiczny Jeden CLB może zawierać klaster BLE-sów połączonych lokalną siecią połączeniową (local routing network): Wyjścia każdego z wewnętrznych BLE są dostępne dla wejść pozostałych BLE, Liczba wyjść CLB to liczba BLE, Liczba wejść może być równa sumie liczby wejść wszystkich BLE lub mniejsza. AGH, WFiIS, HDL 64