Wykład 8. Języki Opisu Sprzętu. Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D , tel. w ,

Podobne dokumenty
napięcie-częstotliwość

Elementy cyfrowe i układy logiczne

Liczniki z zastosowaniem

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

Temat: Pamięci. Programowalne struktury logiczne.

Liczniki z zastosowaniem

Układy reprogramowalne i SoC Implementacja w układach FPGA

Tranzystor JFET i MOSFET zas. działania

UKŁADY MIKROPROGRAMOWALNE

Programowalne scalone układy cyfrowe PLD, CPLD oraz FPGA

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Sławomir Kulesza. Projektowanie automatów asynchronicznych

Elektronika i techniki mikroprocesorowe

Programowanie Układów Logicznych kod kursu: ETD6203 W dr inż. Daniel Kopiec. Pamięć w układach programowalnych

Przerzutnik ma pewną liczbę wejść i z reguły dwa wyjścia.

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Różnicowe układy cyfrowe CMOS

Sławomir Kulesza. Projektowanie automatów synchronicznych

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

BADANIE PRZERZUTNIKÓW ASTABILNEGO, MONOSTABILNEGO I BISTABILNEGO

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

PROGRAMMABLE DEVICES UKŁADY PROGRAMOWALNE

Ćw. 7: Układy sekwencyjne

Sterowniki Programowalne (SP)

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Koszt literału (literal cost) jest określony liczbą wystąpień literału w wyrażeniu boolowskim realizowanym przez układ.

Automatyzacja i robotyzacja procesów produkcyjnych

Wstęp do Techniki Cyfrowej... Układy kombinacyjne

Wielopoziomowa synteza układów logicznych

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

2. PORTY WEJŚCIA/WYJŚCIA (I/O)

Programowalne układy logiczne

Podstawy Elektroniki dla Elektrotechniki. Liczniki synchroniczne na przerzutnikach typu D

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Systemy Czasu Rzeczywistego FPGA

Minimalizacja form boolowskich

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

Tab. 1 Tab. 2 t t+1 Q 2 Q 1 Q 0 Q 2 Q 1 Q 0

Logiczne układy bistabilne przerzutniki.

Synteza logiczna APSC

Organizacja typowego mikroprocesora

Część 3. Przegląd przyrządów półprzewodnikowych mocy. Łukasz Starzak, Przyrządy i układy mocy, studia niestacjonarne, lato 2018/19 51

Kody splotowe. Zastosowanie

PROJEKTOWANIE UKŁADÓW MIKROPROGRAMOWANYCH Z WYKORZYSTANIEM WBUDOWANYCH BLOKÓW PAMIĘCI W MATRYCACH PROGRAMOWALNYCH

Synteza układów kombinacyjnych

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Programowany układ czasowy

(12) OPIS PATENTOWY (19) PL (11) (13) B1

Układy cyfrowe w technologii CMOS

Układy logiczne układy cyfrowe

Układy akwizycji danych. Komparatory napięcia Przykłady układów

Struktury specjalizowane wykorzystywane w mikrokontrolerach

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Projektowanie układów FPGA. Żródło*6+.

Systemy wbudowane. Układy programowalne

Projekt prostego układu sekwencyjnego Ćwiczenia Audytoryjne Podstawy Automatyki i Automatyzacji

Ogólny schemat inwertera MOS

Ćw. 8 Bramki logiczne

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Optymalizacja ciągła

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

x x

Struktura i działanie jednostki centralnej

Podstawowe elementy układów cyfrowych układy sekwencyjne Rafał Walkowiak Wersja

xx + x = 1, to y = Jeśli x = 0, to y = 0 Przykładowy układ Funkcja przykładowego układu Metody poszukiwania testów Porównanie tabel prawdy

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Krótkie przypomnienie

Architektura komputerów Wykład 2

SYNTEZA AUTOMATÓW SKOŃCZONYCH Z WYKORZYSTANIEM METOD KODOWANIA WIELOKROTNEGO

Projektowanie układów na schemacie

Laboratorium przedmiotu Technika Cyfrowa

Układy kombinacyjne. cz.2

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

mgr inż. Maciej Rudek opracował: dr inż. Daniel Kopiec

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

LICZNIKI PODZIAŁ I PARAMETRY

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

Złożoność obliczeniowa zadania, zestaw 2

1.Wprowadzenie do projektowania układów sekwencyjnych synchronicznych

Pojedyncze wartości zadeklarowanego typu Ustawiane przed rozpoczęciem symulacji bez moŝliwości

SML3 październik

Język HDL - VERILOG. (Syntetyzowalna warstwa języka) Hardware Description Language Krzysztof Jasiński PRUS PRUS

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

Podstawy układów mikroelektronicznych

Elementy struktur cyfrowych. Magistrale, układy iterowane w przestrzeni i w czasie, wprowadzanie i wyprowadzanie danych.

Projektowanie automatów z użyciem VHDL

b) bc a Rys. 1. Tablice Karnaugha dla funkcji o: a) n=2, b) n=3 i c) n=4 zmiennych.

IC200UDR002 ASTOR GE INTELLIGENT PLATFORMS - VERSAMAX NANO/MICRO

Architektura typu Single-Cycle

Technika cyfrowa Synteza układów kombinacyjnych (I)

dwójkę liczącą Licznikiem Podział liczników:

LICZNIKI Liczniki scalone serii 749x

Wstęp do Techniki Cyfrowej... Synchroniczne układy sekwencyjne

Kierunek Inżynieria Akustyczna, V rok Programowalne Układy Cyfrowe. Platforma sprzętowa. Rajda & Kasperek 2014 Katedra Elektroniki AGH 1

Krótkie wprowadzenie do ModelSim i Quartus2

1. Poznanie właściwości i zasady działania rejestrów przesuwnych. 2. Poznanie właściwości i zasady działania liczników pierścieniowych.

Transkrypt:

Języki Opisu Sprzętu Prowadzący: dr inż. Andrzej Skoczeń Współrzędne: D-10 222, tel. w. 28-72, e-mail: skoczen@fis.agh.edu.pl Kodowanie stanów automatu Automat wysokiego poziomu Architektura mikroprogramowana Wykład 8 2018 29 październik 2018 Ogólna architektura współczesnych układów FPGA Technologie pamięci konfiguracji w układach FPGA Procesy i algorytmy stosowane w przebiegu przygotowania konfiguracji programującej układ FPGA Analiza czasowa projektu http://www.fis.agh.edu.pl/~skoczen/hdl AGH WFiIS Informatyka Stosowana Języki Opisu Sprzętu 1

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 2

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 przerzutnikach gdyż stan S0 może być zakodowany na 4 sposoby, stan S1 na 3 sposoby, stan S2 już tylko na 2 sposoby: 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 3

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 4

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ób 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 5

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 4 5.5 10 10... Możliwe testowanie wszystkich kodowań Ręczne Komputerowe niemożliwe AGH, WFiIS, HDL 6

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ść λ AGH, WFiIS, HDL Slajd do samodzielnego studiowania 7

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 inicjacji (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łowane 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 wymagań pochodzących z funkcji wyjść. AGH, WFiIS, HDL Slajd do samodzielnego studiowania 8

Układ kombinacyjny Automat wysokiego poziomu Następny stan X Y=0 off X Rejestr stanu stan on1 on2 on3 Y=1 Y=1 Y=1 Wejścia X Wyjścia Y Licznik zmienna X Y=0 Cnt=2 off X Cnt=0 Następna wartość Cnt Y=1 on Cnt=Cnt-1 (Cnt=0) AGH, WFiIS, HDL 9

Architektura FSMD Logika stanu mastępnego Następny stan Rejestr stanu stan Scieżka danych zmienna Status Automat skończony ze ścieżką danych AGH, WFiIS, HDL 10

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 11

Eksplozja stanów FSM1 X FSM2 FSM1 FSM2 A1 A 1 h h &!g h B2!h g g B 2!h h & g C2!h &!g C3!g C 3 A2!g!h & g A3 B1!g!h g B3 C1 AGH, WFiIS, HDL 12

Obsługa wyjątków exc exc A1 exc exc exc exc exc exc g &!exc B2 h &!g &!exc h &!exc!h &!exc C2 h & g &!exc!h &!g &!exc C3 A2!h & g!g &!exc A3!exc B1!g &!exc!h &!exc g &!exc B3!exc C1 AGH, WFiIS, HDL 13

Logika stanu mastępnego Architektura mikroprogramowana FSMD Maszyna mikro-programowana Następny stan Pole skoku Rejestr stanu stan Scieżka danych zmien na Logika Adresu Następnego Rejestr Adresu Pamięci Sterowania CSAR Pamięć Sterowania Mikroinstru kcja Status Status Ścieżka Danych Pole komendy 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: Bieżącą wartość w CSAR, Zawartość bieżącej mikroinstrukcji, Wartości flag określonych przez ścieżkę danych. AGH, WFiIS, HDL 14

Architektura mikroprogramowana Pole skoku Logika Adresu Następnego Rejestr Adresu Pamięci Sterowania CSAR Pamięć Sterowania Mikroinstrukcja Status Ścieżka Danych Pole komendy W czasie jednego okresu zegara: rejestr CSAR dostarcza adres do pamięci sterowania, z której pobierana jest mikroinstrukcja. Domyślna 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ść rejestru CSAR. AGH, WFiIS, HDL 15

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 16

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 17

Blok wejściowowyjściowy (I/O Block IOB) Pionowy kanał łączeniowy (Vertical Routing Channel) Konfigurowalny blok logiczny (Configurable Logic Block CLB) Element kluczujący (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 podstawowych elementów logicznych (Basic Logic Elements -BLEs)., które AGH, WFiIS, HDL 18 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 (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 19

Podstawowy element logiczny Składa się z: Pamięci podręcznej (Look-Up-Table LUT), Przerzutnika D. Basic Logic Element - BLE Wejścia BLE Pamięć podręczna LUT o k wejściach (LUT-k) zawiera 2 k bitów konfiguracyjnych. 4 wejściowy LUT Może implementować dowolną k-wejściową funkcję logiczną. Multiplekser Wyjście CLB Komórka SRAM (bit konfiguracyjny) Przerzutnik D AGH, WFiIS, HDL 20

Podstawowy element logiczny Gdy rośnie liczba wejść LUT-ów to spada liczba LUT-ów 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 wykładniczo 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 21

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 22

Element łączący CB Elementy łączące (Connection Boxes CB) łączą wejścia i wyjścia bloków logicznych CLB (i bloków wejścia-wyjścia IOB) ze ścieżkami sąsiadujących kanałów łączeniowych. Mają dwie istotne właściwości: F c - elastyczność elementu CB jest liczbą ścieżek sąsiedniego kanału, które każdy pin bloku CLB (IOB) może przyłączyć; Topologia czyli wzór rozmieszczenia kluczy na ścieżkach kanału łączeniowego. Szerokość W kanał łączeniowy to liczba ścieżek, z których składa się ten kanał. Ta sama wartość elastyczności F c =2 (W=4) ale dwie różne topologie. Połączenie z A do B : Po lewej nie jest możliwe, Po prawej jest możliwe. F c (in) stopień połączalności wejściowych pinów bloków CLB (IOB) z sąsiednim kanałem połączeniowym F c (out) stopień połączalności wyjściowych pinów bloków CLB (IOB) z sąsiednim kanałem połączeniowym F c (in)/w = 1 oznacza, że wszystkie ścieżki sąsiedniego kanału mogą być połączone do pinów bloku CLB. Tego się nie robi. F c (in) /W = 0,5 oznacza, że tylko 50% ścieżek sąsiedniego kanału może być połączone do pinów bloku CLB. C B C B AGH, WFiIS, HDL 23 C B C B

3 2 1 0 3 2 1 0 Element kluczujący SB Elementy kluczujące (Switch boxes - SB) umożliwiają łączenie poziomych i pionowych ścieżek sieci połączeniowej. Elastyczność F s, definiuje dla segmentu wchodzącego do bloku SB liczbę innych segmentów, które mogą być połączone do niego. Przy tej samej wartości F s bloki SB mogą mieć bardzo odmienne możliwiści routingowe. 0 1 2 3 B 0 1 2 3 B Ta sama wartość elastyczności F s =2 ale dwie różne topologie. Połączenie z A do B : Po lewej nie jest możliwe, Po prawej jest możliwe. A Bloki SB, które umożliwiają tylko połączenia ścieżek o tych samych numerach np. 0-0, 1-1,... nazywamy planarnymi lub podzbiorowymi. Bloki SB, które umożliwiają również połączenia ścieżek o różnych numerach np. 0-3, 1-2,... nazywamy blokami Wilton. Takie bloki SB są szeroko stosowane gdyż dostarczają większej elastyczności dla routingu. A AGH, WFiIS, HDL 24

Element kluczujący SB Switch Box dwukierunkowy jednokierunkowy Elemnet kluczujący o elastyczności F s = 3. Wejściowa ścieżka łączy się do 3 innych ścieżek tego samego elementu kluczującego. Ograniczeniem rozwiązania jednokierunkowego jest, że szerokość kanału połączeniowego musi być wielokrotnością dwójki. AGH, WFiIS, HDL 25

Element kluczujący SB Podłączenie wyjść CLB Z buforami trójstanowymi Ze sterowaniem z jednego bufora Stosowanie sterowania segmentów za pomocą pojedynczego bufora: Zmniejsza powierzchnię o 25%, Skraca opóźnienia o 9%, Redukuje pojemność połączeń o 37%. Większe układy FPGA dają większe oszczędności. Z punktu widzenia narzędzi projektowych nic to nie zmienia.. AGH, WFiIS, HDL 26

Kanały łączeniowe Ścieżka długości 1 Ścieżka długości 2 Ścieżka długości 4 Ścieżka długości 8 Aby zredukować powierzchnię i opóźnienia połączeń ale nie ograniczyć elastyczności ścieżki połączeń są różnych długości. Dłuższe segmenty wymagają mniej kluczy i redukują powierzchnię i opóźnienia, ale spada elastyczność połączeń co redukuje prawdopodobieństwo wykonania poprawnego routingu. AGH, WFiIS, HDL 27

Kanały łączeniowe SB SB CB SB SB przełącznik segment ścieżki Zasoby połączeniowe wokół jednego bloku CLB z segmentami ścieżek długości 2 AGH, WFiIS, HDL 28

Pamięć konfiguracji FPGA Technologia Programowanie Powierzchnia komórki SRAM Flash Antifuse CMOS Rejestr przesuwny Dwie warstwy polikrzemu FAMOS Nowy polikrzem Lawinowe Bardzo duża Duża Mała Rezystancja 2 kω 2 kω 500 kω Pojemność 50 ff 50 ff 10 ff AGH, WFiIS, HDL 29

Technologia SRAM Konfiguracyjna komórka typu SRAM jest zbudowana z dwóch inwerterów połączonych w zamkniętą pętlę i 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. Wpisywanie danych konfiguracyjnych Sterowanie tranzystorami tworzącymi połączenia 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 30

Technologia antifuse Anty-bezpiecznik 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 31

Technologia flash Szeroka klasa pamięci nie-ulotnych NVM (Non-Volatile 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 V th tranzystora MOS poprzez wprowadzenie dodatkowych ładunków do przewodzącej warstwy zwanej pływającą bramką, uwięzionej pomiędzy dwiema warstwami izolatora. Polikrzemowa, przewodząca warstwa gromadząca ładunek pływająca bramka zapis wymazywanie źródło + N FH P substrate CHE + N Bramka sterująca, polikrzem Izolator pomiędzy polikrzemami Cienki, tunelowy tlenek bramkowy dren CHE channel hot electrons FH Fowler-Nordheim tunneling AGH, WFiIS, HDL 32

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 (Channel Hot Electrons) w obszarze zubożenia przy drenie tranzystora. AGH, WFiIS, HDL 33

Technologia flash Proces wymazywania odbywa się prądem tunelowym FN (Fowler-Nordheim) do kanału lub do drenu tranzystora od 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. Inny sposób wymazywania odbywa się 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 34

Model RTL w HDL Przebieg konfiguracji Synteza logiczna Mapowanie technologii Klastrowanie Rozmieszczanie Wyznaczania tras połączeń Generacja strumienia bitowego strumień bitowy 35 AGH, WFiIS, HDL

Synteza logiczna Logic synthesis Synteza logiczna : Transformacja opisu RTL w języku opisu sprzętu (VHDL, Verilog) do hierarchicznej sieci logicznej zbudowanej z bramek i przerzutników (netlist). Jest to optymalizacja niezależna od technologii. EDIF (Electronic Design Interchange Format) przemysłowy stanadrd stosowany dla wymiany netlisty między kolejnymi narzędziami. U Xilinxa: NGC = EDIF + NCF NCF - Netlist Constraints File Synteza logiczna dwupoziomowa gdy w wyniku otrzymujemy formę sumy iloczynów SOP Sum Of Product. Realizacja składa się z poziomu bramek AND i poziomu bramek OR. Jest to typowe dla struktur PLD. Synteza logiczna wielopoziomowa złożona procedura oparta na faktoryzacji i dekompozycji. Pod względem zajmowanej powierzchni układy wielopoziomowe są oszczędniejsze. Dlatego to podejście jest stosowane do ASIC i FPGA. AGH, WFiIS, HDL 36

Synteza logiczna Dekompozycja funkcji logicznej jest procesem ponownego wyrażenia tej funkcji jako kolekcji nowych funkcji. Przykład: F Przed dekompozycją: 12 literałów i 9 bramek abc abd acd bcd Po dekompozycji: F XY XY Y X c ab d 12 literałów i 9 bramek 8 literałów i 7 bramek Funkcja F jest teraz zależna od innych danych wejściowych. Po dekompozycji: 8 literałów i 7 bramek AGH, WFiIS, HDL 37

Synteza logiczna Faktoryzacja funkcji logicznej jest procesem wyprowadzenia postaci mnożnikowej z formy SOP. Przykład: F Po sfaktoryzowaniu: ac F ad ( a bc bd b )( c e d ) e 9 literałów 5 literałów Typowym zagadnieniem optymalizacji jest znalezienie postaci sfaktoryzowanej z minimalną liczbą literałów. Liczba literałów dobrze odpowiada powierzchni przyszłej topografii układu. Przykład: f ac ade adfg adfh adfi adfj bc bde bdfg bdfh bdfi bdfj Po sfaktoryzowaniu: f ( a b )( c d(e f ( g h i j ))) AGH, WFiIS, HDL 38

Odbywa się to w dwóch fazach: Mapowanie Mapowanie technologii: Transformacja niezależnej technologicznie sieci logicznej do sieci dostępnych bloków istniejących w technologicznej bibliotece komórek standardowych. W przypadku FPGA blokami tymi są LUT-y i przerzutniki. Algorytmy mapowania wykonują optymalizację ze względu na różne parametry sieci: głębokość, powierzchnię, opóźnienia, moc. Dekompozycja do bloków o liczbie wejść mniejszej lub równej od k (k -bounded gates). Właściwe mapowanie na sieci bloków k -bounded. Sieć logiczna k -bounded to sieć, w której występują elementy o k lub mniej wejściach. Głębokość jest definiowana jako liczba poziomów sieci LUT-ów. Powierzchnia jest definiowana jako liczba LUT-ów w sieci. Technology mapping AGH, WFiIS, HDL 39

Mapowanie Sieć boolowska po syntezie Graf skierowany niecykliczny DAG (Directed Acyclic Graph) Wierzchołki grafu reprezentują bramki, przerzutniki, porty wejściowe lub wyjściowe. Krawędzie grafu reprezentują połączenia między dwoma elementami układu. AGH, WFiIS, HDL 40

Mapowanie AGH, WFiIS, HDL 41

Mapowanie Mapowanie sieci logicznej do sieci zbudowanej z k-wejściowych LUT-ów dla k=3. AGH, WFiIS, HDL 42

Wejściowa sieć 5-bounded Wynik dekompozycji i mapowania. Głębokość 3, powierzchnia 5 Wynik równoczesnej dekompozycji i mapowania. Głębokość 2, powierzchnia 3 Można też powiedzieć, że to jest sieć 2-bounded o głębokości 4 Przykład mapowanie sieci typu 5-bounded za pomocą bloków 3-LUT przy użyciu dwóch różnych algorytmów. AGH, WFiIS, HDL 43

Mapowanie Szeroko stosowanym algorytmem mapowania technologii jest FlowMap podany w 1994roku [J.Cong, Y.Ding, 1994]. Pierwotnie potrafił podać sieć optymalną ze względu na głębokość. Obecnie potrafi także optymalizować powierzchnię i opóźnienia utrzymując głębokość sieci. Wynikiem mapowania technologii jest sieć IOB-ów, LUT-ów i przerzutników. AGH, WFiIS, HDL 44

Klastrowanie Packing Klastrowanie: Grupowanie pamięci podręcznych (LUT) i przerzutników w element logiczny, i Grupowanie różnych elementów logicznych (BLE) w klaster, Mapowanie klastrów na bloki logiczne (CLB). Głównym celem tej optymalizacji jest sklastrowanie pamięci podręcznych, przerzutników i elementów logicznych w taki sposób aby zminimalizować komunikację pomiędzy klastrami. Minimalizuje to zużycie zasobów połączeniowych w FPGA. Wynikiem tej operacji jest sieć bloków logicznych (CLB) i bloków wejścia-wyjścia (IOB). AGH, WFiIS, HDL 45

Klastrowanie Packing AGH, WFiIS, HDL 46

Klastrowanie Packing Trzy rodziny algorytmów: Top-down podział bloków logicznych przez kolejne podziały sieci lub przez iteracyjne przenoszenie bloków logicznych między częściami. Depth-optimal minimalizacja opóźnień kosztem duplikacji logiki. Bottom-up metody preferowane dla systemów CAD z przeznaczeniem dla FPGA ze względu na ich efektywność obliczeniową i rozsądne opóźnienia czasowe. Jednak metody te rozważają jedynie lokalną informację połączeniową. Dlatego łatwo spełniają wymagania (constraints) narzucone na piny klastrów. Podejście Top-down jest najlepszym rozwiązaniem jednak jest w praktyce nieosiągalne ze względu na złożoność obliczeniową. AGH, WFiIS, HDL 47

Rozmieszczanie Rozmieszczanie : Algorytm rozmieszczania określa pozycje instancji bloków logicznych (CLB) i bloków wejścia-wyjścia (IOB) ze sklastrowanej netlisty w matrycy FPGA. Kryterium rozmieszczania jest minimalizacja odległości między blokami aby połączenia wykonywane w fazie routingu były najkrótsze. Dodatkowo algorytm rozmieszczania spełnia także inne wymagania np. minimalizacja gęstości połączeń w FPGA lub maksymalizacja szybkości. W użyciu są trzy rodzaje algorytmów placementu: Placement Bazujące na podziałach (min-cut or partitioning based) właściwe dla architektur hierarchicznych, Analityczne jako funkcję celu stosujące kwadratową funkcję długości połączeń, Schłodzeniowe (annealing) stosujące ideę stopniowego schładzania roztopionego metalu w celu uzyskania wysokiej jakości przedmiotów metalowych. AGH, WFiIS, HDL 48

Rozmieszczanie Pseudo kod typowego placera schłodzeniowego: S = RandomPlacement(); T = InitialTemperature(); R limit = InitialR limit ; while ExitCriterion() == false do while InnerLoopCriterion() == false do S new = GenerateViaMove(S, R limit ); ΔC = Cost (S new ) Cost (S); if ΔC<0 then S = S new ; else r = random(0,1) ; if r < exp( -ΔC/T ) then S = S new ; endif endif endw T = UpdateTemperature(); R limit = UpdateR limit (); endw Rozmieszczenie S początkowe polega na przypadkowym przypisaniu bloków logiki Nowe przypisania S new są losowane także przypadkowo Obliczana jest zmiana funkcji celu ΔC dla proponowanego nowego przypisania S new położeń Jeśli ΔC<0 propozycja jest akceptowana Jeśli ΔC>0 propozycja także może być zaakceptowana R limit określa jak blisko siebie muszą znajdować się bloki aby zostały wzięte pod uwagę do zamiany w czasie generacji nowego rozmieszczenia. AGH, WFiIS, HDL 49

Rozmieszczanie bounding box węzła o 6 końcówkach bb x (i) Funkcją celu algorytmu (cost function) jest suma półobwodów prostokątnych obwiedni wszystkich węzłów w netliście: C N i 1 q( i) bb ( i) bb N całkowita liczba węzłów w netliście, bb x (i) horyzontalny rozmiar i-tego węzła, bb y (i) wertykalny rozmiar i-tego węzła, q(i) współczynnik korekcyjny. x y ( i) bb y (i) simulated annealing based placement A.Sangiovanni-Vincentelli, 1985 Początkowo instancje są rozmieszczone przypadkowo na powierzchni układu. W kolejnych krokach instancje są poruszane tak aby poprawić jakość rozmieszczenia tzn. obniżyć temperaturę algorytmu. W każdym kroku temperaturowym liczba operacji przemieszczeń jest określona przez parametr zwany liczba iteracji. Parametr ten jest proporcjonalny do liczby instancji w netliście. AGH, WFiIS, HDL 50

Rozmieszczanie Placement Prawdopodobieństwo akceptacji ruchu instancji, który zwiększa funkcję celu: C T p e ΔC dodatnia zmiana funkcji celu T parametr zwany temperaturą, który określa prawdopodobieństwo zaakceptowania ruchów, które pogorszą placement. Początkowo, T jest na tyle wysoka, że prawie wszystkie ruchy są akceptowane. Temperatura T jest stopniowo zmniejszana w miarę poprawy rozmieszczenia, w taki sposób, że ostatecznie prawdopodobieństwo zaakceptowania ruchu pogarszającego jest bardzo niskie. Ta zdolność do akceptowania ruchów pogorszających placement, pozwala na wyprowadzenie procedury z lokalnych minimów funkcji celu. AGH, WFiIS, HDL 51

Rozmieszczanie Schemat schładzania jest określony przez parametry: Placement Szybkość obniżania temperatury (rate at which temperature is decreased) - UpdateTemperature Kryterium zakończenia schładzania (exit criterion for terminating the anneal) - ExitCriterion Liczba prób nowego rozmieszczenia dla każdego kroku temperaturowego (number of moves attempted at each temperature) InnerLoopCriterion Metoda generacji proponowanych przesunięć (method by which potential moves are generated) - GenerateViaMove S = RandomPlacement(); T = InitialTemperature(); R limit = InitialR limit ; while ExitCriterion() == false do while InnerLoopCriterion() == false do S new = GenerateViaMove(S, R limit ); ΔC = Cost (S new ) Cost (S); if ΔC<0 then S = S new ; else r = random(0,1) ; if r < exp( -ΔC/T ) then S = S new ; endif endif endw T = UpdateTemperature(); R limit = UpdateR limit (); endw Schemat schładzania może być: Stały o stałych raz dobranych parametrach, Adaptacyjny parametry są określane w oparciu o statystykę tworzona w czasie samego schładzania. AGH, WFiIS, HDL 52

Rozmieszczanie Schemat Huanga: Efficient General Cooling Schedule for Simulated Annealing, Huang 1986 InitialTemperature Wykonuje serie przesunięć na początkowym przypisaniu i ustawia temperaturę początkową na: T init = 20 σ gdzie: σ odchylenie standardowe wartości funkcji celu dla wykonanej serii przesunięć. UpdateTemperature T old gdzie: Tnew Told e λ = 0,7 σ odchylenie standardowe wartości funkcji celu dla serii przesunięć wykonanej przy T old. InnerLoopCriterion Kryterium to oparte jest o procent generowanych rozmieszczeń, które mają wartości funkcji celu C w pewnym przedziale wokół wartości średniej C mean (dla danego kroku temperaturowego). Ponadto istnieje kilka szczególnych i awaryjnych przypadków. AGH, WFiIS, HDL 53

Rozmieszczanie ExitCriterion C max - C min = ΔC max przy T = const Gdzie: C max - maksymalna wartość funkcji celu dla zaakceptowanego rozmieszczenia dla danej temperatury, C min - minimalna wartość funkcji celu dla zaakceptowanego rozmieszczenia dla danej temperatury, ΔC max - maksymalna zmiana wartość funkcji celu jaka wystąpiła przy tej temperaturze. InitialR limit Schemat Lama wykorzystuje ogranicznik zasięgu (range limiter) do sterowania procesem generacji przesunięć. Parametr R limit określa jak blisko siebie muszą znajdować się bloki aby zostały wzięte pod uwagę do zamiany w czasie generacji nowego rozmieszczenia. Początkowo parametr ograniczenia zasięgu jest bardzo duży i zamiany bloków położonych daleko od siebie na układzie są prawdopodobne. W miarę procesu schładzania R limit jest dostosowywany tak aby procent α proponowanych przesunięć, które zostały zaakceptowane utrzymać blisko wartości 44. Jeśli α < 44 to R limit jest obniżane, a jeśli α > 44 to R limit jest zwiększane. UpdateR limit AGH, WFiIS, HDL 54

Wyznaczania tras Routing Wyznaczania tras połączeń: Po zakończeniu układania (placed) instancji netlisty należy stworzyć połączenia między nimi wykorzystując dostępne zasoby do wyznaczania tras połączeń. Powszechnie stosowany jest algorytm PathFinder [McMurchie-Ebeling, 1995]. Struktura połączeń jest modelowana za pomocą grafu skierowanego. Wierzchołki tego grafu to segmenty łączeniowe lub porty bloków. Krawędzie tego grafu to połączenia między segmentami i do portów. Na tym grafie stosowany jest algorytm zagęszczeniowy (congestion driven) Dijkstry do znajdowania najkrótszej drogi w grafie. AGH, WFiIS, HDL 55

Wyznaczania tras Routing Jedna iteracja routingu jest ukończona gdy wszystkie węzły w netliście są połączone. Jednak mogą istnieć konflikty polegające na tym, że różne węzły (nets) odpowiadają tym samym wierzchołkom grafu (nodes). Współczynnik zagęszczenia jest aktualizowany i wykonywana jest kolejna iteracja routingu. Procedura powtarza się aż: zostanie znalezione rozwiązanie, w którym znikną wszystkie konflikty lub osiągnięta zostanie maksymalna liczba iteracji czyli routing nie uda się. AGH, WFiIS, HDL 56

Analiza czasowa Timing analysis Analiza projektu pod względem zależności czasowych, której celem jest ustalenie czy projekt może działać poprawnie przy częstotliwości określonej w specyfikacji bez łamania ograniczeń czasowych (timing violations) obowiązujących na wszystkich elementach projektu. Znaczenie takiej analizy rośnie gdy proces technologiczny ma na tyle małe wymiary elementów, że ścieżki połączeń mają istotne znaczenie dla działania i wydajności całego projektu. D CLK Q Logika kombinacyjn a D CLK Q CLK Q Q t=0 t=t AGH, WFiIS, HDL 57

Rodzaje analizy czasowej symulacyjna (dynamiczna) statyczna Timing simulation Static Timing Analysis STA Obserwacja odpowiedzi na wymuszenia (sygnały wejściowe) i na ich podstawie prowadzenie weryfikacji założeń czasowych projektu. Wymaga tworzenia skomplikowanych modułów testowych. Tą metodę w Verilogu ułatwiają funkcje systemowe zwane kontrolami czasowymi (timing checks): $hold, $setup, $period, $skew i inne. Analiza projektu prowadzona jest statycznie i nie zależy od danych podawanych na wejścia. Analizie podlega cały projekt i wymagane sprawdzenia przebiegów czasowych (timing checks) są wykonywane dla wszystkich możliwych ścieżek sygnałowych w projekcie i scenariuszy wykorzystania projektu. Dla celów dynamicznej analizy czasowej w Verilogu są trzy rodzaje modeli opóźnień: Opóźnienie rozproszone (distributed), Opóźnienie zgrubne (lumped), Opóźnienie ścieżek (pin-to-pin). W czasie syntezy i pozostałych procesów implementacji prowadzona jest statyczna analiza czasowa związana z każdym z tych procesów. AGH, WFiIS, HDL 58

Statyczna analiza czasowa Timing Analysis Obliczanie opóźnień dla każdej ścieżki projektu w taki sposób aby łatwo ustalić, która ścieżka jest krytyczna tzn. limituje czasowe własności układu. Dwa założenia: Nie dozwolone są kombinacyjne sprzężenia zwrotne, Wszystkie ścieżki sprzężeń zwrotnych są przerwane przez granicę sygnału zegarowego. W STA projekt jest traktowany jak zbiór ścieżek. Każda posiada: punkt początkowy port wejściowy lub wejście zegarowe przerzutnika, i punkt końcowy - port wyjściowy lub wejście danych przerzutnika. W czasie syntezy i pozostałych procesów prowadzona jest statyczna analiza czasowa, której celem jest: Określenie szybkości działania układu po P&R, Oszacowanie luzu czasowego (slack) każdego połączenia źródło-cel stworzonego podczas wyznaczania tras i rozmieszczania i innych procesów projektu; celem jest podjęcie decyzji, które połączenia muszą być wykonane szybkimi ścieżkami, aby uniknąć spowolnienia obwodu. AGH, WFiIS, HDL 59

Statyczna analiza czasowa Opóźnienie ścieżki (path delay) suma opóźnień wnoszonych przez wszystkie komórki logiczne i węzły wzdłuż drogi sygnału. Zwykle istnieje wiele dróg przenoszenia sygnału do punktu przeznaczenia. Prawdziwy wybór drogi zależy od stanu wejść innych komórek wzdłuż drogi. Spośród możliwych mamy tę o największym opóźnieniu najdłuższą ścieżkę (max path, late path) i tę o najkrótszym opóźnieniu najkrótszą ścieżkę (min path, early path). Określenia najdłuższa i najkrótsza dotyczą oczywiście łącznego czasu a nie długości węzłów i/lub liczby komórek. Gdy ścieżka biegnie od przerzutnika do przerzutnika to początkowy nazywamy przerzutnikiem uruchamiającym (launch flip-flop), a końcowy przerzutnikiem wychwytującym (capture flip-flop). AGH, WFiIS, HDL 60

Statyczna analiza czasowa Rozróżnia się następujące rodzaje ścieżek: Wejściowa (entry input-to-d) zaczyna sią na końcówce wejściowej, a kończy na wejściu danych innego przerzutnika, Pomiędzy stopniami lub przerzutnik-do-przerzutnika (stage - clock-to-d) zaczyna sią na wejściu zegarowym przerzutnika, a kończy na wejściu danych innego przerzutnika, Wyjściowa (exit clock-to-output) zaczyna sią na wejściu zegarowym przerzutnika, a kończy na końcówce wyjściowej, Wejście-wyjście (pad-to-pad port-to-port) zaczyna sią na końcówce wejściowej, a kończy na wyjściowej. pad-to-pad Logika kombinacyjn a Logika kombinacyjn a entry CLK D Q CLK Q stage Logika kombinacyjn a D Q CLK Q Logika kombinacyjn a exit AGH, WFiIS, HDL 61

Statyczna analiza czasowa slack time Ścieżka krytyczna to ścieżka z najdłuższym czasem propagacji. Jest to ścieżka kombinacyjna, która ma ujemny lub najmniejszy czas luzu (slack): Czas Luzu = Czas Wymagany Czas przybycia Identyfikacja ścieżki krytycznej: Określa okres zegara systemowego Wskazuje, która część układu powinna być zmieniona aby ulepszyć układ. AGH, WFiIS, HDL 62

Generacja strumienia bitowego Bitstream generation Generacja strumienia bitowego : Strumień bitowy (bitstream) netlisty zawiera informację jak zaprogramować bity pamięci SRAM, w FPGA: w LUT-ach (mapowanie, klastrowanie i rozmieszczanie), w CLB (routing lokalny), w blokach SB i CB (routing globalny). Program ładujący przesyła strumień bitowy do FPGA. AGH, WFiIS, HDL 63