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