Zaliczenie wykładu Flashcards
Wymień trzy kategorie układów programowalnych (podział pod względem złożoności architektury) i scharakteryzuj krótko każdą z nich.
SPLD - Simple Programmable Logic Devices: Najprostsze i najstarsze układy programowalne. Ich głownym komponentem jest matryca bramek odpowiedzialna za przetwarzanie sygnałów. W tej kategorii układów. W tej katergorii układów zawierają się takie podkategorie jak PROM, PLA, PAL, GAL.
CPLD - Complex Programmable Logic Devices: Są bardziej złożone od układów SPLD, oferują większą pojemnośćlogiczną. Składają się z wielu bloków podobnych do układów SPLD połączonych magistralami w jedną strukturę. Końcówka I/0 układu połączenie zarówno z blokami jak i z magistralą.
FPGA - Field-Programmable Gate Array: Układy oparte o koncepcję morza bramek (ang. sea of gates), są zbudowane z bloków z bramkami logicznymi przedzielonych połączeniami programowalnymi. Bloki z biegiem czasu stawały się coraz bardziej złożone, co umożliwiło zmniejszenie opóźnień układów wynikających z dużej liczby połączeń między blokami. Z tego samego powodu udoskonalono także polączenia między komórkami (np. poprzez routing).
Jakiej kategorii układów programowalnych dotyczy podział na: coarse grade, medium grade i fine grade. Scharakteryzuj krótko cechy wyżej wymienionych rodzajów układów.
Podział dotyczy architektur układów FPGA, a poszczególne kategorie przedstawiają się następująco: fine grade (drobne uziarnienie) :
Bloki połączone ze sobą mają bardzo prostą budowę, składają się z prostego układu programowalnego (2-3 wejścia) i przerzutnika. Mimo elastyczności rozwiązania nadal występowują w układach o takiej architekturze duże opóźnienia. medium grade (średnie uziarnienie):
Bloki o bardziej złożonej budowie niż fine grade opisują układy o większej ziarnistości. Wykorzystuje się w nich multipleksery, czyli połączenia aktywne, co zmniejszyło opóźnienia. coarse grade (grube uziarnienie):
Bloki o największej złożoności, charakteryzujące się bardzo dużą liczbę wejść (np. 32). Budowa wewnętrzna bloku jest skomplikowana, za to opóźnienia występujące w układach je wykorzystujących zmalały.
Jaki rodzaj pamięci konfiguracji dominuje w układach CPLD, a jaki w FPGA.
W układach CPLD dominują pamięci nieulotne z możliwością elektrycznego kasowania EEPROM (E2PROM) oraz FLASH.
W układach FPGA dominuje pamięć ulotna wymagająca każdorazowego programowania po ponownym włączeniu zasilania - static RAM - SRAM.
Wymień rodzaje pamięci konfiguracji – podaj ich wady i zalety.
Rodzaje pamięci konfiguracji:
PROM - pamięć programowalna z możliwością pojedynczego zaprogramowania przepaleniem połączeń lub maskowaniem.
Zalety:
działanie od razu po włączeniu,
Wady:
brak możliwości reprogramowalności.
W pamięci PROM ustawienie bitu (połączenia z tranzystorem) można zrealizować za pomocą technologii:
fuse (bezpiecznik/rozłączenie) - występują połączenia bramki ze wszystkimi sygnałami w układzie, te które nie są wykorzystane zostają przepalone i w efekcie pozostałe ścieżki decydują o pracy układu.
Zalety:
łatwość w realizacji konstrukcyjnej we wszystkich dostępnych technologiach.
anti-fuse (anty-bezpiecznik/zwarcie) - żaden sygnał nie jest połączony z bramką, połączenia z tymi sygnałami, które mają być wykorzystane zostają wygenerowane (zwarte) i one decydują o pracy układu.
Zalety:
niewielka powierzchnia, opór i pojemność elektryczna połączenia.
EPROM - pamięć programowalna z możliwością kasowania zapisanej konfiguracji poprzez wystawienie na działanie światła UV.
Zalety:
możliwość reprogramowalności.
Wady:
brak możliwości wygodnej (elektrycznej) reprogramowalności,
duża rezystancja i pojemność połączeń
EEPROM/FLASH - pamięć programowalna z możliwością elektrycznego (programowalnego) kasowania zawartości (wykorzystując zjawisko tunelowe).
Zalety:
elektryczne kasowanie zawartości,
działanie od razu po włączeniu.
Wady: średnia powierzchnia połączeń, duża rezystancja i pojemność połączeń, programowanie 3 razy wolniejsze niż SRAM, duże zużycie energii elektrycznej.
SRAM - w połączeniu z tranzystorem umożliwia utworzenie połączenia programowalnego.
Zalety:
szybkość programowania,
umożliwienie łatwego prototypowania,
Wady:
duża powierzchnia, rezystancja i pojemność połączeń,
wymaga programowania z pliku konfiguracyjnego podczas każdorazowego włączania zasilania (ulotność).
W układzie Spartan3E w jednej komórce LUT można zrealizować pewne funkcje logiki. Podaj ile maksymalnie zmiennych wejściowych może mieć dowolna funkcja logiczna zrealizowana w jednej komórce LUT, ile maksymalnie zmiennych wejściowych może mieć dowolna funkcja logiczna zrealizowana za pomocą jednego Slice oraz ile maksymalnie wejść mogą mieć pewne funkcje logiczne wykonane w oparciu o jeden Slice.
Dowolna funkcja logiczna oparta o jeden:
LUT - maksymalnie 4 zmienne wejściowe,
Slice - maksymalnie 5 zmiennych wejściowych.
Pewne funkcje logiczne oparte o jeden Slice - maksymalnie 9 zmiennych wejściowych.
Wymień parametry końcówki I/O układu Spartan3E które można konfigurować.
standard napięciowy TTL/CMOS (kilka różnych odmian) - określa poziomy napięć stanów wysokich i niskich dla komórek wejściowych jak i wyjściowych. Trzeba na to zwracać uwagę gdyż nie wszystkie standardy można łączyć ze sobą (np. wyjść TTL z wejściami niskonapięciowymi CMOS). Złe dobranie standardów może spowodować uszkodzenie układów albo problem z identyfikacji stanu logicznego (gdy np. poziom stanu jednego standardu trafia akurat w zakres napięć nieustalonych drugiego standardu).
programowalny max prąd wyjściowy
programowalny pull-up/pull-down określa do jakiego potencjału ma być dołączony pin wejściowy.
„clamping” - do pad’u mogą być dołączone diody stanowiące zabezpieczający ogranicznik napięcia (3.3V), stosowane do aplikacji PCI. Włączenie tych diod i połączenie układu do jakiegoś wyjścia TTL (+5V) może spowodować przepływ znacznego prądu przez diody i uszkodzić układ. Diody te są domyślnie wyłączone.
Wymień tryby konfiguracji układu Spartan3E.
Master Serial, SPI, BPI, Slave Parallel, Slave serial, JTAG,
Opisz właściwości i zastosowanie bloku „weak-keeper” w układzie Spartan3E.
Krócej* - weak-keeper utrzymuje stan magistrali na ostatnim stanie użytecznym. Stosuje się go w celu zapobiegania zjawisku fluktuacji napięcia. Zjawisko to jest bardzo niekorzystne z racji na ciągłą obserwację tego napięcia przez bufory wejściowe i kiedy występują pośrednie napięcia (na granicy fizycznej realizacji ‘0’ i ‘1’) zwiększa się przepływ prądu i rośnie pobór mocy.
*Dłużej weak-keeper (bus-keeper latch) - jest rodzajem słabego zatrzasku, który działa jak inteligentny pull-up i pull-down jednocześnie, jeżeli ostatnio wystawiono ‘0’ to weak-keeper będzie się zachowywał jak pulldown, a jeżeli ‘1’ to pull up. Ma zastosowanie, kiedy z równym prawdopodobieństwem na magistralę wystawiamy oba sygnały.
Wyjaśnij pojęcie „local routing”.
Pojęcie oznacza połączenia w architekturze FPGA, pomiędzy sąsiednimi komórkami, bez wykorzystania uniwersalnego układu łączącego. Sąsiednie (czasem także na skos) komórki widzą się jakby bezpośrednio. Jest to także technika połączeń wewnątrz komórki - z wykorzystaniem multiplekserów ( dzięki temu szybkie wewnętrzne połączenia).
Wyjaśnij pojęcie „general purpose routing”.
Pojęcie oznacza uniwersalne połączenia w architekturze FPGA, umożliwiające sygnałowi dotarcie do każdej komórki układu. Można taki routing podzielić na kilka warstw:
o krótkim dystansie - od 2 do kilku bloków
o średnim dystansie - kilka - kilkanaście
na cały układ scalony - np. linia pionowa/pozioma przez cały ukła
Wyjaśnij pojęcie „global routing”.
Pojęcie oznacza połączenia w architekturze FPGA, dla sygnałów, które muszą być rozprowadzone po całym systemie m. in. sygnały zegara, resetu, trzeciego stanu logicznego I/O. Takie połączenie musi zapewnić odpowiednie własności sygnałów, na przykład dla zegara mały skos - do wszystkich bloków sygnał dociera w tym samym czasie.
Wyjaśnij pojęcie „dedicated routing”.
Pojęcie oznacza połączenia w architekturze FPGA, dedykowane dla pewnej funkcjonalności np. budowy sumatorów - sygnał carry musi być bardzo szybko przekazany do następnego bloku - realizuje się takie połączenie w sposób bezpośredni między blokami sumatora - nie ma tam żadnych kluczy.
Wyjaśnij pojęcie „clock skew” oraz podaj sposoby jego zmniejszania lub kompensacji.
Clock skew występuje kiedy z jednego źródła sygnału zegarowego, sygnał dociera do różnych bloków/komponentów w różnym czasie. Kompensację tego zjawiska można uzyskać wykorzystując drzewo dystrybucji sygnału zegarowego wewnątrz chipu, które zajmuje się dystrybucją zegara o określonej fazie do przerzutników stosując odpowiednie opóźnienia. Wykorzystuje się także układ Clock Managera, który sprawia, że sygnał wejściowy jest zgodny z fazą sygnału dystrybuowanego przez drzewo opisane powyżej.
Wyjaśnij pojęcie Delay Locked Loop, narysuj schemat takiej pętli i podaj zastosowania.
Jest to pętla, która dąży do tego, aby opóźnienie sygnału w bloku kwadratowym na rysunku poniżej było takie, aby różnica w fazie wchodzących sygnałów była równa 0ns. DLL Jest stosowana np. w układach FPGA w Device Clock Managerze, w celu zapewnienia, że sygnał zegarowy w sieci dystrybucji będzie miał dokładnie taką fazę jak sygnał zegarowy na pinie wejściowym.
Jakie sygnały generuje układ DCM w układzie Spartan3E. Jakie są wymagania odnośnie parametrów sygnału zegarowego.
Sygnały przesunięte w fazie o odpowiednio 0, 90, 180, 270 stopni, ewentualnie pomnożone/podzielone przez 2 albo programowalną wartość: CLK0, CLK90, CLK180, CLK270 CLK2X, CLK2X180 CLKFX, CLKFX180 CLKDV
Informacja czy nastąpiła synchronizacja w pętli DLL:
LOCKED
Główne wymagania odnośnie parametrów wyjściowego sygnału zegarowego względem wejściowego to:
- równy współczynnik wypełnienia sygnału zegarowego (czas trwania ‘1’ i ‘0’ wynosi po 50% cyklu),
- redukcja skosu zegara/synchronizacja faz sygnałów/(minimalizacja różnicy w fazie sygnałów),
- dostęp (osobne sygnały) do przesunięcia zegara w fazie,
- dostęp (osobne sygnały) do zsyntezowanego sygnału zegarowego o częstotliwości zgodnej z zaprogramowanymi wartościami dzielnika i mnożnika.
Wymień i scharakteryzuj tryby zapisu jednoportowych pamięci Block-RAM w układach Spartan3E.
Trzy tryby zapisu - w każdym wartość zostaje zapisana do pamięci:
WRITE_FIRST - oprócz zapisu, w tym samym cyklu zegarowym, obecna wartość zostaje przekierowana na wyjście,
READ_FIRST - oprócz zapisu, poprzednia zawartość pamięci zostaje wystawiona na wyjście,
NO_CHANGE - oprócz zapisu, nic więcej.
Wymień możliwe zastosowania jednoportowych pamięci Block-RAM w układach Spartan3E
Duże pamięci synchroniczne SRAM jednoportowe z możliwością inicjacji zawartości podczas konfiguracji,
Duże pamięci ROM,
Synchroniczne i asynchroniczne FIFO,
Pamięć typu LIFO (stos) do procesorów,
Szybka implementacja złożonych funkcji logicznych,
Rejestry przesuwne,
Złożone maszyny stanów,
Szybkie liczniki,
Bufory cyrkulacyjne,
Linie opóźniające (np. do FIR).
Wymień właściwości i zastosowania 2-portowych pamięci Block-RAM w układach Spartan3E.
Właściwości:
- możliwe jednoczesny(e) zapis(y)/odczyt(y) w tym samym czasie (cyklu zegara) - współbieżny wielodostęp
- Z powodu jednoczesnego dostępu mogą wystąpić kolizje, każdy z portów posiada osobny zegar - może więc pełnić rolę interfejsu do pamięci RAM z różnych domen zegarowych (układów taktowanych zegarami o różnych częstotliwościach).
Zastosowania:
- Duże pamięci synchroniczne SRAM dwuportowe z możliwością inicjacji zawartości podczas konfiguracji,
- Duże pamięci ROM,
- Synchroniczne i asynchroniczne FIFO,
- Pamięć typu LIFO (stos) do procesorów,
- Szybka implementacja złożonych funkcji logicznych,
- Rejestry przesuwne,
- Złożone maszyny stanów,
- Szybkie liczniki,
- Bufory cyrkulacyjne,
- Linie opóźniające (np. do FIR).
Wymień funkcje które może w komórce CLB układu Spartan3E spełniać blok LUT.
Funkcje LUT w CLB:
- układ logiczny z nawet 9 wejściami,
- jednoportowy blok pamięci RAM adresowany 4 bitami
- dynamiczny 16-bitowy rejestr przesuwny z szeregowym I/O, bez resetu - tylko z zegarem,
można o tym wspomnieć, ale nie jest to odpowiedź na pytanie:
- częściowo-dual (tylko odczyt) blok pamięci RAM adresowany 4 bitami w przypadku połączenia dwóch bloków LUT,
- jednoportowy blok pamięci RAM adresowany 5 bitami w przypadku połączenia dwóch bloków LUT za pomocą F5MUX),
Wymień różnice w budowie układów PLA i PAL.
W układach PLA (Programmable Logic Array) występują 2 matryce programowalne - matryca AND do tworzenia mintermów i matryca OR do ich sumowania. Z racji na programowalność obu matryc i wynikające z tego opóźnienia powstały układy PAL (Programmable Array Logic). W tych układach programowalna jest jedynie matryca AND, to ta do tworzenia mintermów, natomiast w matrycy OR połączenia są przypisane na stałe - pozwoliło to zmniejszyć opóźnienia.
Wymień i krótko scharakteryzuj poziomy abstrakcji stosowane w opisie sprzętu.
Poziomy od największego poziomu abstrakcji:
System - behawioralnie opisywany w języku naturalnym - strukturalnie np. jednostka centralna,
Układ scalony - behawioralnie zestaw algorytmów - strukturalnie np. mikroprocesor,
Rejestry - behawioralnie przepływ danych - strukturalnie np. rejestry
Bramki - behawioralnie równania logiczne - strukturalnie funktory logiczne: and, or, xor,
Układ elektr. - behawioralnie równania różniczkowe - strukturalnie np. tranzystory,
Layout, krzem - behawioralnie fizyka półprzewodników - strukturalnie geometria struktur
Wymień metody opisu układów cyfrowych.
Schemat ideowy,
Schemat blokowy,
Diagram czasowy,
Graf maszyny stanów,
Tabela prawdy,
Równania logiczne.
Co to jest podzbiór syntezowalny języka VHDL, podaj przykład instrukcji niesyntezowalnej.
Język VHDL jest stosowany w 2 głównych celach: syntezy rozwiązań dla układów elektronicznych oraz symulacji tych układów. Część konstrukcji języka wykorzystywana jest wyłącznie w przypadku symulacji i nie istnieje możliwość skompilowania ich do programu wykonywalnego na płytce. Takie konstrukcje nazywamy niesyntezowalnymi, a przykładem jest instrukcja “wait for”. Podzbiór syntezowalny jest więc zbiorem (określonym standardem IEEE) takich instrukcji, które mogą zostać skompilowane do programu wykonywalnego na fizycznym układzie (np. FPGA).
Co to jest funkcja rezolucji.
Funkcja rezolucji określa jaka powinna być wartość sygnału, do którego współbieżnie przypisujemy więcej niż jedną wartość np.:
signal_1 <= signal_2;
signal_1 <= signal_3;
Funkcja rezolucji pozwala na rozwiązanie niesyntezowalności takiego przypisania oraz na syntezę logiki trójstanowej wewnątrz układu.