Programowanie Układów Logicznych – PUL Wykład 7w12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W7_v1.pdf ·...
Transcript of Programowanie Układów Logicznych – PUL Wykład 7w12.pwr.wroc.pl/mikro/PUL_V/Wyklad/W7_v1.pdf ·...
kod kursu: ETD6203
__ Wrocław
Programowanie
Układów Logicznych – PUL
Wykład 7
DR INŻ. MACIEJ RUDEK
DR INŻ. DANIEL KOPIEC
VGA, Pobór mocy w układach programowalnych
Plan wykładu
2
• Obsługa interfejsu graficznego VGA
• Klawiatura matrycowa – zasada działania
• Pobór mocy w układach programowalnych
• Kodowanie a pobór mocy
• Clock Gating
• Przykładowe pytania - podsumowanie
VGA (Video Graphics Array)
3
Typowe rozdzielczości wyświetlaczy
4 źródło:https://commons.wikimedia.org/wiki/Main_Page
Tym się zajmiemy
VGA – sposób połączenia
5
• Red, Green, Blue – poziom akceptowalnego napięcia: do 0,7 V
• Synchronization vertical, horizontal – synchronizacja pionowa, pozioma, impulsy
cyfrowe,
• VGA standard zdefiniowany przez VESA®
75 Ω
FPGA, CPLD
LVTTL 3,3 V 0,717 V
Jednostka projektowa bloku VGA
6
entity VGA is
port(
reset : in STD_LOGIC; --reset asynchroniczny
clk50_in : in std_logic; --zegar główny pin C9 – 50 MHz
red : out std_logic; --sygnał wysycenia koloru czerwonego
green : out std_logic; --sygnał wysycenia koloru zielonego
blue : out std_logic; --sygnał wysycenia koloru niebieskiego
hs_out : out std_logic; --sygnał synchronizacji poziomej
vs_out : out std_logic); --sygnał synchronizacji pionowej
end VGA;
NET "reset" LOC = N17; NET "reset" IOSTANDARD = LVTTL;
NET "clk50_in" LOC = C9; NET "clk50_in" IOSTANDARD = LVTTL;
NET "blue" LOC = G15; NET "blue" IOSTANDARD = LVTTL;
NET "green" LOC = H15; NET "green" IOSTANDARD = LVTTL;
NET "red" LOC = H14; NET "red" IOSTANDARD = LVTTL;
NET "hs_out" LOC = F15; NET "hs_out" IOSTANDARD = LVTTL; NET "hs_out" SLEW = FAST;
NET "vs_out" LOC = F14; NET "vs_out" IOSTANDARD = LVTTL; NET "vs_out" SLEW = FAST;
VGA – „cyfrowe” mieszanie barw
7
W układzie prototypowym
Spartan 3E Starter Board
możliwe jest uzyskanie
tylko 8 kolorów pixela.
„Analogowe – cyfrowe”
mieszanie barw
8
VGA – zasad działania
Powierzchnia ekranu
640 pikseli wyświetlanych w czasie ruchu wiązki
podczas powrotu wiązki
dane nie są odświeżane
• Skanowanie rastrowe XY w standardzie VGA
Oś pozioma (horizontal)
Oś
pio
no
wa (v
ertic
al)
9
VGA (ang. Video Graphics Array)
- 640x480@60Hz
obramowanie
obszar wygaszania
Obszar aktywny
Oś pozioma (horizontal)
Oś
pio
no
wa (v
ertic
al)
640
480
Dane RGB
Dane R
GB
Standard 640x480@60Hz
640x480@60Hz
10
Dane RGB
11
Rozdzielczość a częstotliwość pracy
Synchronizacja pozioma
hs_out
vs_out
synchhor: process (hs)
begin
if (hs >= "0000000000" )and (hs <= "0001100000" ) then
hs_out <= '0'; -- jezeli 0 i 96
else hs_out <= '1';
end if;
end process synchhor;
synchvert: process (vs)
begin
if ((vs > "0000000000" ) and (vs < "0000000011" )) then
vs_out <= '0'; -- jezeli 0 i 3
else vs_out <= '1';
end if;
end process synchvert;
zliczanie: process (clk_25MHz, reset)
begin
if (reset='1') then hs <= (others => '0');
vs <= (others => '0');
elsif (clk_25MHz'event and clk_25MHz = '1') then
if (hs = "1100011111") then -- jeżeli 799 linii zeruj
hs <= "0000000000"; -- licznik impulsów synchronizacji poziomej
else hs <= hs + "0000000001" ;
end if;
if (vs >= "1000001100" and hs >= "1100011111") then vs <= "0000000000"; -- jeżeli 524 i 799
elsif hs="1100011111" then vs <= vs + "0000000001";
end if;
end if;
end process zliczanie;
Synchronizacja pionowa
Licznik linii i pikseli
Definiowanie zawartości ekranu - definicja cyfry „3”
13 640 144 784
515
35
linie
pixele
480
0, 639 0, 0
479, 0 479, 639
HOR
VE
R
vs 160
vs 192
hs 192 hs 320 hs 288
vs 256
vs 288
vs 128
vs 224
vs 160
vs 256
• if vs > "0010000000" and vs < "0010100000" and hs > "0011000000" and hs < "0101000000" then
• if vs > „128" and vs < „160" and hs > „192" and hs < „320" then red <= '1'; blue <= '0'; green <= '1';
• elsif vs > "0011000000" and vs < "0011100000" and hs > "0011000000" and hs < "0101000000" then
• elsif vs > „192" and vs < „224" and hs > „192" and hs < „320" then red <= '1'; blue <= '0'; green <= '1';
• elsif vs > "0100000000" and vs < "0100100000" and hs > "0011000000" and hs < "0101000000" then
• elsif vs > „256" and vs < „288" and hs > „192" and hs < „320" then red <= '1'; blue <= '0'; green <= '1';
• elsif vs >= "0010100000" and vs <= "0100000000" and hs > "0100100000" and hs < "0101000000" then
• elsif vs > „160" and vs < „256" and hs > „288" and hs < „320" then red <= '1'; blue <= '0'; green <= '0';
Zawartości ekranu - definicja cyfry „3”
14
Klawiatura matrycowa 4x4
0 1 0 0 Wektor testujący GND
0
0
0
1
iPod nano …
Bateria: Li-ion, 3,7 V, 333 mAh, => 1,2 Wh
• przez godzinę można zasilać urządzenie o
mocy 1,2 W,
• konstrukcja oraz obudowa iPod nano jest w
stanie odprowadzić 5 W mocy,
• jeżeli iPod pobiera 5W to:
1,2 Wh / 5W = 15 minut
Realny czas pracy urządzenia to:
14 godzin odtwarzania muzyki, => 85 mW
4 godziny w trybie „slide show” => 300 mW
A Twój telefon komórkowy jaką ma baterię ? Ile zużywa mocy ? Dlaczego ? … 16
Rynek układów programowalnych
17
• Minimalizacja poboru mocy to proces znajdowania kompromisu pomiędzy tym, ile energii pobiera układ cyfrowy a tym, jaką zapewnia wydajność przetwarzania.
• W wielu aplikacjach konieczne jest jednoczesne zapewnienie dużej wydajności i niskiego poboru mocy, co prowadzi do sprzeczności i konieczności szukania kompromisu.
• Zredukowanie wartości prądu pobieranego przez urządzenie ze źródła zasilania, jakim jest akumulator, pozwala na wydłużenie czasu pracy pomiędzy ładowniami.
• Przekroczenie rozsądnego budżetu mocy może skutkować krótkim czasem życia układu zasilanego bateryjnie, a także, poprzez wzrost temperatury, prowadzić do wydłużenia czasów propagacji przez bramki i w efekcie do zawodnej pracy układu.
Złote zasady
18
Liczba tranzystorów
19
Liczba tranzystorów
1000000
100000
10000
1000
10
100
1
1975 1980 1985 1990 1995 2000 2005 2010
8086
80286 i386
i486 Pentium®
Pentium® Pro
1 Miliard tranzystorów
Source: Intel
Projected
Pentium® II Pentium® III
19
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,
CMOS – cięgle dominuje…
20
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
21
Wpływ technologii
Zmniejszenie wymiarów geometrycznych kanału w tranzystorach,
niesie ze sobą niebezpieczeństwo zwiększenia mocy statycznej
22
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.
Pobór mocy w układach program.
23
Prognozowany czas pracy
i stan działania układu programowalnego – bilans mocy
24
Połączenia reprogramowalne i ich wpływ na pobór mocy
25
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ę
26
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) 27
Inwerter CMOS
28
Energia w układach CMOS
𝑬𝑺𝑾 = 𝑷 𝒕 𝒅𝒕 =𝒕𝟏
𝒕𝟎
𝑼𝑫𝑫 − 𝒖 ∙ 𝒊 𝒕 𝒅𝒕 = 𝑼𝑫𝑫 − 𝒖 ∙ 𝑪𝒅𝒖
𝒅𝒕𝒅𝒕 =
𝒕𝟏
𝒕𝟎
𝒕𝟏
𝒕𝟎
= 𝑪𝑼𝑫𝑫 𝒅𝒖 −𝒕𝟏
𝒕𝟎
𝑪 𝒖𝒅𝒖 = 𝑪𝒕𝟏
𝒕𝟎
𝑼𝑫𝑫𝟐 −
𝟏
𝟐𝑪𝑼𝑫𝑫
𝟐 =𝟏
𝟐𝑪𝑼𝑫𝑫
𝟐
energia pobrana z zasilania energia zmagazynowana energia rozpraszana 29
Składowe mocy w układach progr.
Składowa dynamiczna:
- przeładowanie pojemości
Składowa statyczna:
𝑃𝑆 = 𝑈𝐷𝐷 ∙ 𝐼
𝑃𝑃 = 𝐼 ∙ 𝑈𝐷𝐷 ∙𝑡𝑟 + 𝑡𝑓
2∙ 𝑓
- równoczesne przewodzenie obu tranzystorów
• z punktu widzenia poboru mocy korzystne jest więc, by sygnały wejściowe miały jak
najkrótsze czasy narastania i opadania,
• łączny pobór mocy jest sumą mocy określonych wymienionymi wzorami, dominująca jest
jednak moc związana z ładowaniem i rozładowaniem pojemności 30
𝑃𝐷 = 𝛼 ∙ 𝑈𝐷𝐷2 ∙ 𝐶𝐿 ∙ 𝑓
Przetwarzanie równoległe:
• mniejsza aktywność przełączeń bramek,
• mniejsza częstotliwość zegara systemowego
Tendencje w minimalizacji mocy
𝑃 ~ 𝑈2, 𝑓, 𝐶, 𝐴 𝑓 ~ 1/𝐶
Minimalizacja na poziomie logicznym:
• wybór właściwych IP-corów,
• sterowanie częstotliwością w poszczególnych blokach systemu,
• minimalizacja długości połączeń w układzie 31
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.
32
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
33
Moc dynamiczna a częstotliwość pracy
Mo
c 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 34
Pobór mocy - FPGA
Piedra, Antonio & Braeken, An & Touhafi, Abdellah. (2012). Sensor Systems Based on FPGAs and Their Applications: A
Survey. Sensors (Basel, Switzerland). 12. 12235-64. 10.3390/s120912235.
Pobór mocy - FPGA
https://www.eetimes.com/xilinx-7-series-fpgas-user-guide-lite/
Spartan 3 – 90 nm
Spartan 6 – 45 nm
Artix-7 – 28 nm
• 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
Zarządzanie mocą w układach Xilinx
37
Xilinx Power Estimator (XPE)
http://www.xilinx.com/products/design_tools/logic_design/xpe.htm
Specyfikacja projektowa czyli
bilans mocy, odprowadzania
ciepła powinien być realizowany
na początku cyklu projektowania
produktu (układu).
XPE pozwala na oszacowanie:
• zużycia mocy, energii,
• temperatury,
38
Xilinx Power Estimator (XPE)
https://www.xilinx.com/products/technology/power/xpe.html
https://www.xilinx.com/products/technology/power.html 39
Xilinx Power Estimator (XPE)
https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0008-
vivado-power-estimation-and-optimization-hub.html 40
XPower Analyzer
Dostęp z poziomu ISE …
41
Narzędzie do szacowania:
• Zużycia mocy
• Temperatury złącza
• Bierze pod uwagę: – częstotliwość pracy układu,
– liczbę aktywnych połączeń
– pojemność obciążenia,
– napięcia zasilania,
– temperaturę otoczenia.
XPower Analyzer oblicza łączną średnią wartość zużycia energii i generuje szczegółowy raport
XPower Analyzer
ISE Webpack
42
XPower Analyzer
ISE Webpack
43
XPower Analyzer
ISE Webpack
Raport – plik tekstowy: • rozszerzenie .pwr,
• moc całkowita,
• pobór prądu,
• zużyte zasoby,
• odprowadzanie ciepła,
• temperatura złącz
Korzyści: • panowanie nad budżetem
mocy,
• wskazanie najbardziej
energochłonnych części
układu,
• odpowiednie
dostosowanie środowiska
zewnętrznego 44
Raport poboru mocy
Vivado
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug907-vivado-power-analysis-optimization.pdf
Raport poboru mocy
Vivado
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug907-vivado-power-analysis-optimization.pdf
Raport poboru mocy
Vivado
https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_1/ug907-vivado-power-analysis-optimization.pdf
Poziomy optymalizacji
48
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!)
49 https://www.xilinx.com/support/documentation-navigation/design-hubs/dh0008-vivado-power-estimation-and-optimization-hub.html
• 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).
Optymalizacja poboru mocy
50
CMT - clock management tiles – Układ zarzadzania sygnałem zegarowym, zlokalizowany blisko wejść I/O, wykorzystywany do:
• synteza częstotliwości zegara,
• pełni funkcję prostowania i kształtowania CLK
• usuwanie jitter’ów
CMT zawiera: jeden moduł mieszający sygnał zegarowy (MMCM - mixed-mode clock manager), i jedną pętlę synchronizacji fazy (PLL - phase-locked loop).
UWAGA: Każdy region zegarowy obejmuje 25 CLB w górę i 25 CLB w dół od głównej linii (HROW) oraz poziomo po obu stronach urządzenia.
Sygnały zegarowe
Przypomnienie
• moc jest rozpraszana nawet wtedy, gdy nie zmienia się stan wyjścia przerzutnik
• pobór mocy w danym układzie scalonym jest tym większy, im większa jest aktywność przełączeń sygnałów interfejsu
Optymalizacja poboru mocy
52
Wybrane bufory połączeniowe:
• BUFG – standardowy bufor zegarowy
• BUFH – obsługują 12 globalnych linii taktowania
• BUFR – 4 linie regionalne
• BUFIO – 4 linii dla bloków I/O
• BUFGMUX – multiplekser sygnału CLK
• BUFGCE – włączanie i wyłączanie sygnału CLK
Zasoby – sygnał zegarowy
Przypomnienie
Zasoby – sygnał zegarowy
Clock Gating
Bramkowanie całej domeny zegarowej
możliwe jest po przez użycie
komponentu BUFGCE
55
Clock Gating a pamięć RAM
http://www.xilinx.com/support/documentation/white_papers/wp370_Intelligent_Clock_Gating.pdf 56
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 57
Integer vs bit
58
• Typ integer i tak zostanie zmapowany podczas syntezy do bit_vector, std_logic,
• Bit_vector, std_logic nie mają interpretacji liczbowej
Dziękuję za uwagę
59