kod kursu: ETD008270 W7 17.05w12.pwr.wroc.pl/mikro/PUL_Verilog/Wyklad/W7.pdf1) po narastającym...

Post on 22-Mar-2020

8 views 0 download

Transcript of kod kursu: ETD008270 W7 17.05w12.pwr.wroc.pl/mikro/PUL_Verilog/Wyklad/W7.pdf1) po narastającym...

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

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ę :)