EGZAMIM 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łównym komponentem jest matryca bramek odpowiedzialna za przetwarzanie sygnałów. W tej kategori układów zawierają się takie podkategorie jak: PROM, PLA, PAL, GAL.
CPLD - Complex Programmable Logic Devices:
Są bardziej złożoną wersją 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ówki I/O układu mają 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 udoskonalano także połą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ć.
Konfigurowalne parametry statyczne końcówek Spartan3E:
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.
Tryby: Master Serial, SPI, BPI, Slave Parallel, Slave serial, JTAG,
Opisz właściwości i zastosowanie bloku „weak-keeper” w układzie Spartan3E.
Właściwości i zastosowanie:
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ład
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 (źródło).
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:
a. WRITE_FIRST - oprócz zapisu, w tym samym cyklu zegarowym,
obecna wartość zostaje przekierowana na wyjście,
b. READ_FIRST - oprócz zapisu, poprzednia zawartość pamięci zostaje
wystawiona na wyjście,
c. NO_CHANGE - oprócz zapisu, nic więcej
Wymień możliwe zastosowania jednoportowych pamięci Block-RAM w
układach Spartan3E.
Zastosowania: - 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, - 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:
a. System - behawioralnie opisywany w języku naturalnym - strukturalnie
np. jednostka centralna,
b. Układ scalony - behawioralnie zestaw algorytmów - strukturalnie np.
mikroprocesor,
c. Rejestry - behawioralnie przepływ danych - strukturalnie np. rejestry
d. Bramki - behawioralnie równania logiczne - strukturalnie funktory
logiczne: and, or, xor,
e. Układ elektr. - behawioralnie równania różniczkowe - strukturalnie np.
tranzystory,
f. Layout, krzem - behawioralnie fizyka półprzewodników - strukturalnie
geometria struktur
Wymień metody opisu układów cyfrowych.
Metody opisu układów blokowych:
- 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.
Podaj sposoby unikania stanów zabronionych w maszynach stanów
systemach „mission-critical” można włączyć odpowiednią opcję syntezera
(jeżeli jest dostępna) generującą maszyny stanów zabezpieczone przed
zatrzaśnięciem się w stanie niedozwolonym.
W przypadku braku opcji w syntezerze:
- Użyć maszyny stanów z bezpośrednim kodowaniem stanów i
określić właściwe zachowanie się maszyny dla wszystkich, także
nieużywanych stanów.
- Dodać układ logiczny wykrywający stan niedozwolony.
Ponadto aby uniknąć problemów związanych z asynchronicznym wejściem
należy przesłać sygnał asynchroniczny przez co najmniej jeden
przerzutnik typu D.
Co to jest metastabilność przerzutników
Zjawisko to polega na pozostawaniu przerzutnika przez pewien czas w
równowadze chwiejnej pomiędzy dwoma stanami stabilnymi.
Wymień i krótko scharakteryzuj trzy sposoby syntezy z wykorzystaniem
bloków funkcjonalnych w układach FPGA.
Trzy sposoby syntezy:
a. Primitives - w syntezie automatycznie rozpoznawane są typowe bloki
funkcjonalne i stosowane są znane przepisy na ich realizację,
b. Inferred macros - w syntezie rozpoznawane są w kodzie VHDL
odpowiednio opisane komponenty (makra) jako bloki funkcjonalne i
wykorzystywane są gotowe schematy takich bloków dla układu.
Rozpoznawanie wymaga jednak od twórcy kodu świadomości istnienia
takich bloków i stworzenie kodu w VHDL zgodnie z ich konstrukcją.
c. Instantiated macros - Jawnie wykorzystujemy blok funkcjonalny
określając rodzaj modułu, jego konfigurację, oraz połączenia z
sygnałami.
Podaj właściwości zmiennych w procesach
Zmienne w procesach:
- są widoczne tylko w obrębie procesu dla którego są zdefiniowane,
- zachowują swoją wartość w czasie kiedy proces nie jest używany
(kiedy sygnały z listy czułości nie zmieniają swojego stanu),
- ich zmiana następuje natychmiast po napotkaniu przypisania
zmiennej := w trakcie sekwencyjnego działania procesu,
- do zmiennej można przypisać wartość początkową, która zostanie
przypisana tylko raz (na początku syntezy).
Podaj właściwości zmiennych w funkcjach.
Zmienne w funkcjach:
- są widoczne tylko w obrębie funkcji dla którego są zdefiniowane,
- ich zmiana następuje natychmiast po napotkaniu przypisania
zmiennej := w trakcie sekwencyjnego działania procesu,
- do zmiennej można przypisać wartość początkową, która zostanie
przypisana przy każdym wywołaniu funkcji,
- nie zachowują swojej wartości w czasie kiedy funkcja nie jest
używana - przy wywołaniu funkcji ustawiane są wartości początkowe.
Wymień zasadnicze różnice pomiędzy zmiennymi a sygnałami.
Różnice:
- przypisanie wartości do zmiennych jest natychmiastowe i w rezultacie
sekwencyjne, natomiast do sygnałów odbywa się synchronicznie
(np. pod koniec procesu) i w rezultacie współbieżnie.
- w procesach zmienne zachowują swoją wartość kiedy proces nie jest
używany,
- sygnały służą do obsługi wejścia i wyjścia układu,
- sygnały skojarzone są bardziej z fizycznym sprzętem, natomiast
zmienne z abstrakcyjnym przetwarzaniem danych.
Omów sposoby parametryzacji modułów projektowych.
Istnieją 2 sposoby parametryzacji modułów projektowych:
a. niejawny - parametr podany jest do modułu nie wprost - np. używamy
typu tablicowego unconstrained w którym parametrem będzie długość
podanej na wejście tablicy
b. jawny - parametry, przekazywane do modułu podobnie jak sygnały, są
tylko wejściem do modułu i definiujemy je w osobnym bloku generic.
Parametry mogą mieć typy takie jak sygnały, ale muszą mieć stałą
wartość (np. domyślną).
Co to jest „unconstrained vector”, podaj zastosowania.
Unconstrained vector jest typem tablicowym, parametr funkcji takiego typu
może być dowolnej długości. Taki mechanizm umożliwia budowanie
uniwersalnych funkcji operujących na tablicach różnych długości. W
momencie syntezy długość będzie znana i możliwe będzie wykonanie funkcji
dla tablicy o konkretnej długości.
Co to są cykle delta, podaj przykład.
Cykle delta, są to dodatkowe logiczne cykle (w czasie jednego cyklu
fizycznego), które służą do obliczeń pośrednich wartości sygnałów, w
przypadku w którym zmieniamy wewnątrz procedury sygnał będący na liście
czułości. Przykład:
process(a, b
Jaka musi być liczba iteracji syntezowalnej pętli ?
Syntezowalna pętla musi mieć ograniczoną liczbę iteracji (znaną/stałą w
momencie syntezy).
Do czego służy instrukcja „generate” ?
Instrukcja służy do automatycznego podłączenia komponentów. W opisie
bardziej formalnym oznacza to, że służy do automatycznej generacji struktur
regularnych, tworzonych na bazie struktury wzorcowej (fizyczny efekt to
powielenie podukładów wzorcowych).