Programowalne układy logiczne
kod kursu: ETD008270
Szybkość, moc, zasoby
W7 – 17.05.2019
mgr inż. Maciej Rudek
Dobre rady
Techniki kodowania RTL:
- Czy dane wejście nie jest sterowane przez więcej niż
jedno źródło:
- Omijanie konstrukcji powodujących powstawanie
zatrzasków:
- Wykorzystanie instrukcji nieblokujących powoduje
aktualizację po zakończeniu bloku always, a dla
blokujących od razu:
Dobre rady
• Funkcje – wykorzystywane dla układów kombinacyjnych i
są replikowane gdy są wykorzystywane w różnych
częściach kodu
• Zadania – chętniej wykorzystywane dla zdarzeń
czasowych w szczególności dla symulacji (narzędzia
syntezy powinny zdarzenia czasowe pominąć)
• Zatrzaski typu -Latch
– Zajmują mało miejsca, konsumują mało mocy, potrzebują więcej
czasu na ustabilizowanie się
• Przerzutniki typu Flip-Flop
– Potrzebują więcej miejsca, mają większe zapotrzebowanie na
pobór mocy,
Dobre rady
• Konstrukcja if-else – powoduje wykonanie konstrukcji,
która jest priorytetowa podczas dekodowania
• Konstrukcja Case – jest prosta w odczycie, może zostać
zaimplementowana jako równoległa lub z dekodowaniem
priorytetowym. Dobrym zwyczajem jest wykorzystanie
wszystkich możliwych kombinacji lub zastosowanie
dyrektywy default na końcu konstrukcji.
• Pomiędzy porównaniem „==„ oraz „===„ operatorów, ten
pierwszy jest syntezowalny a ten drugi już nie.
Dobre rady
• W automatach stanu Moore’a, stan na wyjściu zależy
tylko od obecnego stanu a w Mealy’ego także od wejścia.
Oba są tak samo często stosowane.
• Kodowanie Binarne, z gorącą jedynka i Grey’a:
– Binarne – wymagana jest mniejsza ilość przerzutników typu flip-
flop dla wielu przejść,
– Z gorącą jedynką (one-hot) – ilość przerzutników flip-flop będzie
taka sama jak ilość stanów
– Kodowanie Grey’a – popularnie wykorzystywany dla różnych
dwóch różnych domen zegara.
Ogólne praktyki kodowania
• Wypisać wszystkie wyjścia istotnych bloków
• Unikać wielokrotnych ścieżek komunikacyjnych pomiędzy
hierarchicznie ustawionymi modułami, którymi
informacja będzie wracać do tego samego bloku z
hierarchii
• Podzielić projekt ze względu na realizowane zadania,
funkcjonalność i reakcje na zbocze zegara
• Unikać modyfikowania modułów które są zaprojektowane
dla konkretnego urządzenia/technologii/
• Wykorzystuj parametry i zapisuj je u góry funkcji/bloku
• Unikaj wewnętrznie tworzonych zegarów oraz logiki
która będzie je łączyć w głównych modułach.
Ogólne praktyki kodowania
• Unikanie stanów meta-stabilnych: w takim przypadku
najlepiej, dla logiki asynchronicznej zastosować
obserwacje stanu wejściowego względem sygnału
zegarowego (np. wewnętrznego) i przekazywanie zmian
tego sygnału za pomocą dwóch przerzutników Flip-Flop.
Wówczas dana która jest „złapana” będzie stanem
stabilnym
• Pomiędzy dwoma układami logicznymi taktowanymi
różnym sygnałem zegarowym należy zastosować dwie
kolejki FIFO z kodowaniem Grey’a (licznika)
Popularne błędy
• Tworzenie modułów z wejściami ale bez wyjść,
• Wykonywanie zatrzasków nawet dla konstrukcji
if-else,
• Łączenie wyjść układów logiki kombinatoryjnej z
ich wejściami powodując powstawanie
zapętlonych sygnałów, które są kłopotliwe
podczas testowania,
• Brak wyszczególnionych wszystkich sygnałów w
liście wrażliwościowej np. dla multiplekserów.
Ewolucja układów CMOS
Prawo Moore’a
Prawo Moore’a
1965 –
przewiduje
wykładniczy
wzrost liczby
tranzystorów w
układach
scalonych co 12
– 18 miesięcy
CMOS – cięgle dominuje…
Obecnie najpowszechniejszą technologią produkcji układów
scalonych jest technologia CMOS (Complementary Metal-
Oxide-Semiconductor)
• zapewnia mały pobór prądu w stanie statycznym,
• moc rozpraszana jest proporcjonalna do częstotliwości
i kwadratu napięcia zasilania,
• szybkość działania wzrasta ze wzrostem napięcia
zasilania i spadkiem temperatury,
• tranzystory MOS mają izolowaną bramkę – stanowią
obciążenie pojemnościowe,
11
Pobór prądu w układach
Gęstość prądu i jego skutki
•Electromigration in Cu metalisation
Ehrenfried Zschech, Talk at the WRUT, Nanoscale Functional Materials, Jan. 2012
Interconnection density 500 mln/cm2
Current density ~ 107 A/cm2
In collaboration with
13
Pobór mocy w układach program.
Oceniając pobór mocy przez układ programowalne należy
uwzględnić pięć różnych czynników:
1. Moc rozruchu
• ilość mocy pobieranej przez urządzenia podczas włączania zasilania,
2. Konfiguracja
• moc zużywana podczas ładowania danych do FPGA (dotyczy urządzeń,
w których bitstream ładowany jest do SRAM z FLASH),
3. Moc statyczna
• moc zużywana gdy układ jest zasilany ale nie aktywny,
4. Moc dynamiczna
• ilość mocy zużywana podczas pracy układu,
5. Moc w trybie uśpienia
• moc w trybie uśpienia lub trybie niskiego poboru mocy. 14
Połączenia reprogramowalne i ich wpływ na
pobór mocy
15
Wzrost wydajności
• FPGA pierwszej generacji:
– niskie częstotliwości,
– małe zapotrzebowanie na moc,
– obudowa nie ma znaczenia.
• Dzisiejsze układy FPGA:
– wysokie częstotliwości,
– znaczne zapotrzebowanie na moc,
– ograniczenie możliwością odpr.
ciepła przez obudowę,
– wymagane aktywne monitory temperatury.
Wytrzymałość termiczna obudowy:
125° C - standardowy rodzaj (plastik),
150° C - przemysłowy, militarny (ceramika).
Częstotliwość (MHz)
PM
AX
Realne zapotrzebowanie
Wysoka skala
integracji
Niska
skala
integ.
Moc odprowadzana przez obudowę
16
Inwerter CMOS
𝐼𝐶𝐶 = 𝐼𝑈 + 𝐼𝐷 𝑓 + 𝐼𝐶 𝑓
IU – składowa prądu upływu, (rząd wartości: setki nA),
ID(f) – składowa pobierana przy przełączaniu, (rząd wartości: setki µA)
IC(f) – składowa ładowania obciążenie pojemnościowego (rząd wartości: setki µA) 17
Inwerter CMOS
18
Energia w układach CMOS
𝑬𝑺𝑾 = 𝑷 𝒕 𝒅𝒕 =𝒕𝟏
𝒕𝟎
𝑼𝑫𝑫 − 𝒖 ∙ 𝒊 𝒕 𝒅𝒕 = 𝑼𝑫𝑫 − 𝒖 ∙ 𝑪𝒅𝒖
𝒅𝒕𝒅𝒕 =
𝒕𝟏
𝒕𝟎
𝒕𝟏
𝒕𝟎
= 𝑪𝑼𝑫𝑫 𝒅𝒖 −𝒕𝟏
𝒕𝟎
𝑪 𝒖𝒅𝒖 = 𝑪𝒕𝟏
𝒕𝟎
𝑼𝑫𝑫𝟐 −
𝟏
𝟐𝑪𝑼𝑫𝑫
𝟐 =𝟏
𝟐𝑪𝑼𝑫𝑫
𝟐
energia pobrana z zasilania energia zmagazynowana energia rozpraszana 19
Pobór mocy - układy z pamięcią ulotną i nieulotną
Mo
c p
ob
iera
na
prz
ez u
kła
d [
mW
]
Czas [ms]
Moc rozruchowa,
SRAM
Konfiguracja
komórek SRAM
Moc zależna od
częstotliwości
stabilizacja
napięcia zas.
20
Pobór mocy - układy z pamięcią ulotną i nieulotną
Mo
c p
ob
iera
na
prz
ez u
kła
d [
mW
]
Czas [ms]
rozruch statyczna + dynamiczna statyczna wyłączenie
21
Moc dynamiczna a częstotliwość pracy M
oc p
ob
iera
na p
rzez u
kła
d [
mW
]
Częstotliwość taktowania [MHz]
Test mocy dynamicznej pobieranej przez układy różnych producentów.
Obciążenie: 290, 8-bitowych liczników w kodzie Graya 22
Zarządzanie mocą w układach Xilinx
• Xilinx Power Estimator – faza koncepcyjna arkusza kalkulacyjny opracowany przez inżynierów Xilinx na potrzeby szacowania zużycia
mocy w zależności od wykorzystanych zasobów
• XPower Analyzer – faza projektowa analiza poboru mocy po implementacji i trasowaniu połączeń w zasobach sprzętowych,
wykorzystywana jest wiedza nt. zasobów sprzętowych układu, narzędzie do szacowania
• Plan Ahead - optymalizacja dystrybucja zasilania na poziomie RTL, projektant określa warunki pracy urządzenia,
właściwości I/O
• Programowa optymalizacja użytych zasobów ograniczanie zasobów, ilości pinów I/O, zmniejszenie ilości użytych BlockRAM,
minimalizowanie aktywnych portów BlockRAM, grupowanie sygnałów zegarowych,
reorganizacja układów synchronicznych (flip-flops), ogranicznie pionowych oraz
poziomych traktów połączeniowych umożliwia odłączenie części układu, grupowanie
powiązanej ze sobą logiki kombinacyjnej, sekwencyjnej
23
Poziomy optymalizacji
24
Zarządzanie mocą - dokumentacja, materiały, dodatki
• Command Line Tools User Guide: XPower chapter Help Software Manuals Command Line Tools User Guide
• Online help from the XPower GUI
• Xilinx Power Solutions Web Page
- www.support.xilinx.com Technology Solutions Power Solutions - Get the XPower Estimator spreadsheets for all Xilinx devices - 7 Steps to Worst Case Power Estimation, WP353 - Spartan-6 Power Management User Guide, UG394 - Power Consumption at 40 and 45 nm, 298
• Application Notes: Help Xilinx on the Web Xilinx Application Notes
- Application Note XAPP158: Powering Xilinx FPGAs
• Xilinx Education Services courses www.xilinx.com/training - Xilinx tools and architecture courses - Hardware description language courses - Basic FPGA architecture and other topics (free Videos!)
25
Optymalizacja poboru mocy
• Bramkowanie zasilania (ang. power gating),
– Całkowite wyłączenie napięcia zasilania w czasowo niewykorzystywanym bloku
lub zmniejszenie jego wartości, to jedne z najskuteczniejszych metod
ograniczenia zarówno mocy dynamicznej, jaki i statycznej. Takie rozwiązanie
jest jednak najbardziej naturalne w układach ASIC, natomiast bardzo trudne do
realizacji w układzie programowalnym FPGA
• Skalowanie napięcia (ang. voltage scaling)
– polega na dostosowywaniu poziomu napięcia do aktualnego stanu układu
• Bramkowanie oraz skalowanie sygnału zegarowego (ang. clock
gating, dynamic frequency scaling)
– efektywną metodą redukcji mocy jest technika polegająca na wyłączaniu sygnału
zegarowego lub zmniejszaniu jego częstotliwości w modułach, które nie są w
danym momencie wykorzystywane. Techniki takie jak bramkowanie zegara oraz
skalowanie częstotliwości, są stosunkowo łatwe do realizacji w układach
reprogramowalnych. Można je realizować, stosując odpowiedni opis układu na
poziomie RTL (ang. Register Transfer Level).
26
Clock Gating
Bramkowanie całej domeny zegarowej
możliwe jest po przez użycie
komponentu BUFGCE
27
Bramkowanie CLK
• sygnał „GATED_CLK” aktywny tylko
wtedy, gdy „E” synchronizowany jest z
zegarem „CLK”
• bramkowanie zegara, niebezpieczeństwo
powstania „szpilek”
http://www.xilinx.com/support/documentation/white_papers/wp370_Intelligent_Clock_Gating.pdf 28
Szybkość w układach a zasoby
Propagacja sygnałów
3
0
Matrycowe rozmieszczenie
komórek logicznych CLB
wymusza zastosowanie
segmentowych połączeń
między nimi, niesie to za
sobą trudne do przewidzenia
i zależne od algorytmów
syntezy logicznej parametry
czasowe realizowanego
projektu.
Trasa propagacji sygnału: tPD = t1 + t2 + t3 + t4 + t5 + t6 + …
Kilka pojęć związanych z czasem …
• Czas propagacji (ang. propagation delay)
• Czas reakcji, zadziałania (ang. contamination delay)
• Czas ustalania (ang. setup time)
• Czas trzymania (ang. hold time)
• Jitter
3
1
Czas propagacji - propagation delay tPD
• czas potrzebny na zmianę i ustabilizowanie się wartości
sygnału wyjściowego pod wpływem zmian sygnału
wejściowego
3
2
Czas reakcji - contamination delay tCD
• wartość ta wskazuje ilość czasu potrzebnego do zmiany
stanu wyjścia cyfrowego zainicjowana zmianę sygnały na
wejściu układu
3
3
Czas ustalania oraz trzymania - setup time tST, hold time tHT
czas stabilizacji danych
wejściowych przed
pojawieniem się zbocza CLK
czas trzymania danych po
wystąpieniu zbocza sygnału CLK
tDQ
3
4
Opóźnienie sygnałów - clock skew
• długie połączenia,
• bufory na liniach zegarowych,
• logika komb. na liniach zegarowych
35
Jitter
• Jitter – jest to chwilowe odstępstwo zboczy sygnałów od ich idealnych
wartości. Powodem niestabilności sygnału są zazwyczaj: fluktuacje napięć
zasilania, zmiany temperatury, obciążenie, zakłócenia zewnętrzne
(emitowane przez inne urządzenia), szum drgań termicznych układów
elektronicznych itp. Jitter może dotyczyć częstotliwości,
amplitudy i fazy danego sygnału.
wzorcowy
jitter
z jitter –em
„okresowo”
JACC = TCLK(n) – nTCLK0
TCLK0
TCLK(n) TCLK(n) TCLK(n+1)
3
6
CRYSTAL OSCILLATOR
EPSON Q3851CA000055 XG-1000CA 50 MHZ OSCILLATOR, SPXO, XG-
1000CA, 50 MHZ, SMD
http://pl.farnell.com/epson/q3851ca000055-xg-1000ca-50-mhz/oscillator-spxo-xg-1000ca-50-mhz/dp/1907482 37
Widmo sygnału z jitter-em
Większa wartości jitter-a powoduje poszerzenie
prążka widmowego
38
Metody eliminacji jitter-a - jitter cleaning clock Si5317 Silicon Labs
https://www.silabs.com/Support%20Documents/TechnicalDocs/Si5317.pdf
http://www.xilinx.com/support/documentation/application_notes/xapp462.pdf 39
Metody eliminacji jitteru
http://www.xilinx.com/support/documentation/application_notes/xapp462.pdf 40
Metody eliminacji jitter-u
http://www.xilinx.com/support/documentation/application_notes/xapp462.pdf 41
Przykład – minimalny okres sygnału
TMIN = tDQ(A) + tPD(LK) + tST(B)
TMIN = 10 ns + 5 ns + 2 ns = 17 ns
f = 1/TMIN = 1/17 ns = 58,8 MHz 42
Po jakim czasie na
wyjściu zaobserwujemy
zmianę stanu ?
Przykład – minimalny okres sygnału
1) po narastającym zboczu CLK i
czasie 10 ns sygnał z wej. D trafi
na wejście x,
2) po czasie 5 ns sygnał pojawia się
na wyjściu log. kombinacyjnej
3) w nast. cyklu zeg. sygnał zostaje
przepisany na wyj. out
tHT(B) tCD(A) + tCT(LK)
43
Przykład
TAB = tDQ(A) + tST(B) = 9 ns + 2 ns = 11 ns
TAC = tDQ(A) + tPD(LK) + tST(C) = 9 ns + 5 ns + 2 ns = 16 ns
TBC = tDQ(B) + tPD(LK) + tST(C) = 10 ns + 5 ns + 2 ns = 17 ns
fMAX = 58,8 MHz
44
Bez globalnych
ograniczeń czasowych
Z globalnymi
ograniczeniami czasowymi
Grupowanie optymalizowane pod
kątem poprawy czasu wewnątrz
struktury logicznej
Ocenie czasowej podlegają
wszystkie połączenia, CLB zostają
rozmieszczone bliżej IOB
Ograniczenia czasowe – efekty - Timing Constraints
45
Plan Ahead - floorplaner
46
Ograniczenia czasowe
W procesie projektowania i syntezy CPLD/FPGA istnieją
cztery rodzaje ograniczeń:
• ograniczenie między połączeniowe, - obejmuje połączenia pomiędzy elementami synchronicznymi, taktowanych globalnym
sygnałem zegarowym,
• ograniczenie przesunięć czasowych od wej. i z wyj., - obejmuje połączenie pomiędzy elementami synchronicznymi z sygnałami z wejścia, oraz
synchronicznych elementów wyjściowych,
• ograniczenia czasowe od PAD-u do PAD-u, - obejmuje połączenia od pad-u do pad-u, ścieżki nie mogą zawierać elementów
synchronicznych,
• ograniczenie od … do - obejmuje ograniczania pomiędzy dwoma określonymi grupami sygnałów, grupa może
być zdefiniowana lub predefiniowana
47
Ograniczenia czasowe
Q
FLOP1
D Q FLOP3
D
BUFG
CLK
ADATA
OUT2
OUT1
Q
FLOP5
D Q
FLOP4
D BUS [7..0]
CDATA
Q
FLOP2
D
od wejścia do wyjścia (PAD to PAD)
48
czas do wejścia czas do wyjścia czas pomiędzy
http://www.xilinx.com/itp/xilinx10/books/docs/cgd/cgd.pdf
Punkty końcowe …
Elementami końcowymi są:
- wejścia/wyjścia – (I/O pads)
- elementy synchroniczne:
• FFs, Latches, Rams, DSP slices, SRLs, …
W ich skład nie zalicza się:
- LUT,
- połączeń, ścieżek oraz elementów asynchronicznych
Flip-Flops Zatrzaski RAM DSP48
49
• Analiza, czy spełnione zostały założone ograniczenia …?
52
Optymalizacja czas, rozmiar - Post-Place & Route Static Timing Report
Design Summary/Reports
Place & Route report
Założenia odnośnie
syg. zegarowego
Actual Period
2,025 ns
All constraints were met.
Optymalizacja czas, rozmiar - Failing Constraints
53
Optymalizacja czas, rozmiar - optymalizacja procesu syntezy XST
• odpowiednie wykorzystanie możliwości modułu XST pozwala
zwiększać wydajność
• Synthesis Options
• HDL Options
• Xilinx Specific Options
54
Optymalizacja czas, rozmiar - optymalizacja procesu syntezy XST
• Łączenie LUT - LUT Combining
– korzystanie z zasobów LUT (generatorów funkcji) – powiązanie,
– XST looks for functions that use the same five inputs and tries to pair them
– Recommended for Virtex-5, Spartan-6, and Virtex-6 architectures
• Ograniczenie zasobów sterujących - Reduce Control Sets
– XST będzie korzystał z LUT zamiast przerzutników z CE, synch. SET/RESET,
– wszystkie FF w obrębie Slice’a korzystają z tych samych CE, SET, RESET
55
Optymalizacja czas, rozmiar - optymalizacja procesu syntezy XST
• Symbol blokady
– Oznacza tylko tyle, że
ustawienia regulowane
są przez cel projektu i
ustawień strategii,
– Zmiana wymaga wybór
innej strategii
– Możliwość zmiany
właściwości bardziej
zaawansowanych
56
Optymalizacja czas, rozmiar - zalecana strategia
(1) Korzystaj ze standardowych opcji i planów syntezy,
(2) Zezwól na korzystanie z ograniczeń XCF,
(3) Zezwól na umieszczanie rejestrów w blokach IOB, – zwiększa to szybkość działania wyjść,
(4) Redukuj zasoby – zoptymalizuj kod,
– korzystaj z dedykowanych zasobów,
(5) Korzystaj z celów i strategii
57
• Zaawansowane opcje
syntezy i implementacji
– Opcje definiowalne • Zrównoważony poziom optymalizacji
• Optymalizacja czasowa
• Redukcja obszaru
• Ograniczenie czasu działania
• Optymalizacja zużycia mocy
– Możliwość edytowania
strategii
58
Optymalizacja czas, rozmiar - ISE WebPack Design Goals & Strategies
61
Optymalizacja czas, rozmiar - technika programowania
Proste kroki kodowania zwiększające wydajność kodu:
• przetwarzanie równoległe, procesy, procesy, procesy
• operacje współbieżne,
• optymalizacja maszyn stanów,
• grupować operacje arytmetyczne,
• wykorzystanie zasobów wewnętrznych:
• mnożarki,
• rejestry przesuwne, LUT RAM,
• BlkockRAM,
• DSP,
• unikać konstrukcji o wysokim poziomie zagnieżdżenia:
• ograniczać pętle w kodzie.
Tworzenie projektów synchronicznych pozwala tworzyć projekty stabilne
w pełnym zakresie częstotliwości sygnałów wejściowych.
W ramach podsumowania… kompresja
62 http://www.xilinx.com/training/fpga/xst-synthesis-options-video.htm
Procesor DSP – logika FPGA
• Stała nieelastyczna architektura
- typowo 1 - 8 jednostki MAC
- stała szerokość danych
• Przetwarzanie sekwencyjne ogranicza
przepustowość
- współdzielone w czasie jednostki MAC,
- duże częstotliwości taktowania stawiają
duże wyzwania projektantom systemów.
• Możliwość realizacji setek
przekształceń MAC w obrębie
jednego układu FPGA
• Przetwarzanie równoległe
umożliwia dużą przepustowość
Procesor DSP Zrównoleglone przetwarzanie w FPGA
63
Miary wydajności
MIPS - Million Instructions Per Second
(Liczba milionów operacji wykonywanych w ciągu sekundy),
MMAC - Million Multiply Accumulate Operations Per Second
(Liczba milionów operacji typu "pomnóż i dodaj"),
MSPS - Mega-Samples Per Second
(Liczba milionów próbek na sekundę),
Dla układów FPGA nie podaje się wydajności w MIPS. Jej zdefiniowanie dla FPGA
jako całości jest niemożliwe, gdyż zależy ściśle od danego projektu.
Wydajność MMAC może zostać zwiększona dzięki wykorzystaniu zasobów
logicznych oraz rejestrów układu FPGA.
64
Dziękuję za uwagę :)
Top Related