Systemy wbudowane Układy programowalne
Układy ASIC Application Specific Integrated Circuits Podstawowy rozdział cyfrowych układów scalonych: Wielkie standardy: standardowe, uniwersalne elementy o strukturze niemodyfikowalnej po wyprodukowaniu; np. bramki i układy funkcjonalne rodzin TTL, ECL, MOS, mikroprocesory, pamięci... Układy ASIC: użytkownik ma w pewien sposób wpływ na strukturę logiczna układu Full-Custom Semi-Custom Standard Cells Gate Arrays Field Programmable Gate Arrays (układy FPGA) Programmable Logic Devices (układy PLD)
Rodzaje układów ASIC Dwie pierwsze klasy układów ASIC (Full Custom, Semi Custom) programowalne w procesie produkcji (programowalne maską). Użytkownik przekazuje projekt producentowi u.s., układy po wyprodukowaniu mają już ostateczną architekturę, która nie ulega zmianom. Dwie pozostałe klasy układów (PLD, FPGA): wszystkie układy określonego typu opuszczają producenta identyczne (produkcja wielkoseryjna, niskie koszty), programowanie układu po jego wykonaniu poprzez utworzenie połączeń w istniejącej sieci ścieżek sygnałowych. Zalety ASIC: niższe koszty zaprojektowania, wykonania i uruchomienia systemu cyfrowego, szczególnie przy produkcji wielkoseryjnej. Możliwości reprogramowania układu - ułatwione testowanie, wprowadzanie zmian w projekcie
Klasyfikacja układów programowalnych
Układy SPLD Układy SPLD można podzielić na: układy o strukturze PLA (Programmable Logic Array); układy PAL (Programmable Array Logic) Układy PROM (PLE Programmable Logic Element)
Układy PLA Posiadają one programowalne matryce AND i OR. Oznacza to, że dowolny term może zostać wykorzystany do realizacji dowolnej operacji sumy logicznej OR. Term linia iloczynu logicznego z matrycy AND
Układy PAL Charakterystyczną cechą architektury układów PAL jest istnienie programowalnej matrycy AND oraz stałej (nieprogramowalnej) matrycy OR Wyjściowe bufory PAL (na rys nie pokazane) stanowią programowalne makrokomórki, które określają architekturę PAL. Makrokomórki PAL mogą zawierać trójstanowy bufor wyjściowy, różnego typu przerzutniki, pętlę sprzężenia zwrotnego z wejściem na matrycę AND, bramkę EXOR i in. Odpowiednie do typu wyjściowych makrokomórek układy PAL można podzielić na następujące grupy funkcjonalne: kombinacyjne, rejestrowe, uniwersalne i in.
Klasyczne układy PAL Struktura zawiera n wejść (prostych i zanegowanych), programowalną matrycę iloczynu AND, stałą matrycę sumy OR realizowaną w postaci oddzielnych bramek sumy logicznej oraz trzy typy wyjść: b czystych wyjść kombinacyjnych, m dwukierunkowych wyjść kombinacyjnych i r wyjść rejestrowych. Można zauważyć, że wszystkie wyjścia, oprócz czystych wyjść kombinacyjnych, posiadają sprzężenia zwrotne z matrycą AND.
Klasyczne układy PAL c.d. Bufor wyjściowy jest realizowany jako trójstanowy inwertor. Przejście bufora w trzeci stan (wysokiej impedancji) pozwala wyjścia dwukierunkowe stosować w charakterze wejść a czyste wyjścia kombinacyjne i rejestrowe odłączyć od szyny wewnętrznej. Przy czym zasoby makrokomórek mogą być wykorzystywane do realizacji logiki wewnętrznej projektu, np. funkcji pośrednich czy funkcji wzbudzeń elementów pamięci automatu skończonego. Dla danych rodzin układów liczba termów związanych z jednym wyjściem może różnić się dla różnych typów wyjść qc dla kombinacyjnych, qr dla rejestrowych. Klasyczne układy PAL posiadają też d=2 wejść specjalizowanych: CLK do synchronizacji rejestrów i OE - do globalnego sterowania wyjść. Można zauważyć, że wejścia specjalizowane klasycznych PAL w przypadku braku ich wykorzystania nie mogą być stosowane jako zwykłe wejścia.
Uniwersalne układy PAL (GAL) Ogólna struktura zawiera programowalna matryce AND, n wejść, d wejść specjalizowanych i di wejść specjalizowanych, które mogą być wykorzystywane jako zwykłe wejścia. Struktura posiada także dwa typy makrokomórek: m makrokomórek MC z jednym sprzężeniem zwrotnym i m2 makrokomórek MCF z dwoma sprzężeniami zwrotnymi. Oprócz tego w niektórych uniwersalnych PAL z różnymi makrokomórkami związana jest różna liczba termów: q1,...,qm, qf1,...,qfm2.
Cechy uniwersalnych PAL Cechą charakterystyczną uniwersalnych układów PAL jest elastyczność architektury ich makrokomórek wyjściowych, co pozwala każde wyjście zaprogramować jako kombinacyjne, rejestrowe, dwukierunkowe oraz jako wejście. Oprócz tego istniej możliwość programowania poziomu logicznego sygnału wyjściowego, tzn., jedynka logiczna może być określona wysokim lub niskim poziomem sygnału. Ta ostatnia właściwość pozwala z dwóch sposobów przedstawienia funkcji logicznych (postaci prostej lub zanegowanej) wybrać takie, które jest prostsze w realizacji, a żądany poziom sygnału wyjściowego określić drogą programowania wyjściowej makrokomórki PAL
Makrokomórka uniwersalnego PAL Bramka EXOR służy do programowania logicznego poziomu sygnału wyjściowego funkcji wyjściowej, multiplekser MX1 do programowania typu wyjścia (rejestrowe czy kombinacyjne), MX2 do określenia sposobu podłączenia sprzężenia zwrotnego. W makrokomórkach z dwoma sprzężeniami zwrotnymi brak jest multipleksera MX2.
Układy CPLD Układy CPLD (Complex Programmable Logic Devices) stanowią zespół od kilku do kilkudziesięciu struktur SPLD połączonych ze sobą za pomocą programowalnej matrycy SM (switching matrix). Przetwarzane dane w CPLD są podawane na dwukierunkowe wyprowadzenia bloków funkcjonalnych FB1 - FBT, rezultaty obróbki danych formowane są także na dwukierunkowych wyprowadzeniach bloków funkcjonalnych. Oprócz tego CPLD posiada d wejść specjalizowanych, z których dc może być wykorzystywanych do synchronizacji przerzutników, doe do sterowania buforami trójstanowymi, a di do wykorzystania jako zwykłe wejścia.
Blok funkcjonalny CPLD Zawiera matrycę AND, r makrokomórek MC1,...,MCr i m wyprowadzeń zewnętrznych sterowanych komórkami wejścia-wyjścia IOC1,...,IOCm. Oprócz tego architektury bloków funkcjonalnych niektórych rodzin CPLD posiadają dodatkowo generator sygnałów synchronizacji (Clock Generator), matryce przełączania wyjść (OSMOutput Switch Matrix), matrycę przełączania wejść (ISM Input Switch Matrix), dzielone ekspandery termów (SE Shared Expander) i inne elementy. Matryca AND posiada n wejść z matrycy przełączającej SM.
Makrokomórka CPLD Bramka EXOR może zostać wykorzystana do sterowania poziomem logicznym funkcji wyjściowej, do realizacji funkcji logicznej EXOR do emulacji przerzutników D, T, JK, SR. Niektóre CPLD dopuszczają programowanie przerzutnika do pracy w trybie zatrzasku (latch) lub przezroczystego przerzutnika typu D.
Makrokomórka CPLD Sygnały sterujące makrokomórką dzielą się na globalne (wspólne dla wszystkich makrokomórek CPLD), lokalne (wspólne dal wszystkich makrokomórek jednego bloku funkcjonalnego) oraz indywidualne (wpływające na działanie tylko jednej makrokomórki). Spośród globalnych sygnałów sterowania najczęściej wykorzystuje się następujące: GCLK globalny sygnał zegarowy, GAP globalny sygnał asynchronicznego ustawienia wszystkich przerzutników w stan 1, GAR - globalny sygnał asynchronicznego zerowania przerzutników, GENA globalny sygnał uaktywniania wejścia zegarowego przerzutników, GOE globalne sterowanie buforami wyjściowymi. Do sterowania każdym przerzutnikiem oddzielnie, wykorzystuje się następujące sygnały indywidualnego sterowania: CLK sygnał synchronizacji, AP i AR sygnały asynchronicznego ustawiania i zerowania przerzutnika, ENA uaktywnienie wejścia zegarowego, OE sterowania buforem wyjściowym. Lokalne sygnały sterowania są zwykle formowane za pomocą generatora sygnałów synchronizacji i stosowane zamiast sygnałów sterowania indywidualnego.
Układy FPGA Prostokątna macierz zbudowana z elementów logicznych (LE Logic element). Komórki te łączą się między sobą, a także między blokami wejścia/wyjścia (IOB Input-Output Block) za pomocą kanałów połączeń. Komórka struktury FPGA jest generatorem dowolnej funkcji logicznej kilku zmiennych o jednym lub dwóch wyjściach.
Układy FPGA W skład elementu logicznego wchodzą zazwyczaj generator funkcji logicznych, przerzutnik i programowalne multipleksery. Generator funkcji logicznych określa się skrótem LUT (LookUp Table). We współczesnych strukturach FPGA elementy logiczne są połączone w bloki elementów logicznych LAB
CPLD i FPGA W ostatnim czasie granica pomiędzy układami CPLD i FPGA powoli zaciera się. Pojawiły się układy FPGA z blokową organizacją elementów logicznych (np. FLEX 10K i pochodne) oraz układy CPLD z połączeniami kanałowymi zamiast matrycy przełączników (np. MAX 9000).
CPLD Altera MAX 7000 struktura Układy MAX 7000 zawierają od 2 do 16 bloków funkcjonalnych połączonych matrycą przełączającą, gdzie każdy blok zawiera 16 makrokomórek (łącznie do 256 makrokomórek w całym układzie)
MAX 7000 - makrokomórka indywidualne i globalne sterowanie przerzutnikiem, możliwość obejścia przerzutnika, wprowadzenie do przerzutnika sygnału bezpośrednio z wyprowadzenia we/wy, z pominięciem matrycy połączeń. wspólne ekspandery (shared expander) pozwalają na dołączenie do jednej makrokomórki do 32 termów. Sposób działania ekspanderów oparty jest na uzyskiwaniu sfaktoryzowanego wyrażenia iloczynu zanegowanych zmiennych (lub wyrażeń boolowskich). Jeśli te wyrażenia boolowskie są iloczynami zmiennych to ich negacje są sumami logicznymi zanegowanych zmiennych, a iloczyn tych sum będzie wyrażeniem o zwiększonej liczbie składników. istnienie bloku wyboru termów przychodzących z matrycy AND oraz ekspanderów równoległych (parallel expabders) umożliwiających pożyczenie od sąsiednich makrokomórek pewnej liczby termów w celu realizacji szybkich funkcji o dość dużej złożoności.
Układy CPLD Xilinx XC9500 Struktura Układy CPLD rodziny XC9500 charakteryzują się dużą pojemnością (do 12800 bramek użytkowych i do 576 makrokomórek) oraz dużą szybkością (do 125 MHz). Posiadają one możliwość programowania w systemie (In-System Programmable) umożliwiającą 10000 cykli programowania i kasowania.
CPLD XC9500 blok funkcjonalny Układ XC9500 składa się bloków funkcjonalnych połączonych matrycą łączenia ze sobą oraz z blokami we/wy Każdy blok funkcjonalny zawiera: matrycę AND układ rozdzielający termy (product term allocator) makrokomórki (18)
XC9500 - makrokomórka Każda makrokomórka może być indywidualnie skonfigurowana jako kombinacyjna lub rejestrowa. Do każdej makrokomórki podłączonych jest na stałe 5 termów. Układ rozdzielający zapewnia wykorzystanie termów z innych makrokomórek danego bloku funkcjonalnego. Umożliwia to wykorzystanie wszystkich 90 termów do zbudowania złożonej funkcji logicznej. Drugą funkcją układu rozdzielającego jest zapewnienie indywidualnych sygnałów sterowania przerzutnikiem (ustawianie, zerowanie, zegar) oraz sterowania buforem wyjściowym (OE). Możliwe jest też wykorzystanie globalnych sygnałów sterowania podawanych z wejść dedykowanych.
FPGA Altera FLEX 10K Rodzina układów FLEX oznaczona symbolem 10K jako pierwsza posiada programowalną strukturę logiczną z wbudowaną programowalną logiką specjalnego przeznaczenia umożliwiającą implementacje pamięci ROM i RAM. Dzięki tzw. wbudowanej matrycy (embedded array) możliwa jest emulacja pamięci i specjalizowanych, wielowejściowych i wielowyjściowych funkcji logicznych. Matryca logiczna natomiast wykorzystana jest do tworzenia podstawowej logiki układu. Input/Output Cell Fast Track Interconnect : : Embedde d Array Block Logic Element : : Embedde d Array Block } LAB Logic Array Wyjścia poszczególnych matryc EAB i LAB połączone są poprzez szybkie magistrale wewnętrzne FastTrack Interconnect.
FLEX 10K - blok LAB LAB Logic Array Block Matryce logiczne składają się z szeregu bloków matryc logicznych LAB, przy czym każdy blok LAB zawiera osiem komórek LE i związane z nimi połączenia lokalne.
FLEX 10K komórka LUT LUT Look-Up Table generator logiczny umożliwiający generację dowolnej funkcji logicznej 4 zmiennych Tryby pracy: Normalny Arytmetyczny Licznik w górę/w dół Licznik zerowalny
FLEX 10K Blok pamięci EAB Wbudowana matryca składa się z bloków wbudowanych matryc EAB (Embedded Array Block). Każdy z tych bloków może oddzielnie lub w połączeniu z innymi blokami zostać użyty w celu implementacji pamięci lub specjalizowanej funkcji logicznej. Bloki EAB emulują pamięć o pojemności 2KB i mogą tworzyć struktury pamięci RAM, ROM lub FIFO. W przypadku zastosowania bloków EAB do realizacji funkcji logicznych, dostępnych jest od 100 do 259 bramek umożliwiających budowę układów mnożących, układów arytmetycznych (ALU) i procesorów sygnałowych (DSP).
CPLD vs. FPGA CPLD: Struktura niejednorodna Średnia ilość zasobów Narzucona struktura połączeń Duża szybkość FPGA: Struktura tablicowa Duża ilość zasobów Duża dowolność łączenia zasobów Średnia szybkość
Obszar zastosowań PLD (1) Logika scalająca (glue logic) Szczególnie w początkowym okresie wykorzystywane do zastępowania logiki scalającej składającej się z wielu modułów, takich jak: dekodery, rejestry, automaty FSM. Typowym przykładem są interfejsy dla mikroprocesorów i mikrokontrolerów umożliwiające współpracę z innymi podsystemami takimi, jak pamięci czy układy peryferyjne.
Obszar zastosowań PLD (2) Akceleratory sprzętowe Dla wielu zastosowań układy PLD pozwalają na osiągnięcie wydajności znacznie przewyższającej tą oferowaną przez mikroprocesory tradycyjne lub sygnałowe. Jest to możliwe szczególnie wtedy, gdy istnieje szansa zastosowania obliczeń równoległych. Akceleratory wykorzystuje się w przetwarzaniu: grafiki, dźwięku, sekwencji wideo. Zalety PLD: realizacja różnych funkcji w tym samym sprzęcie, łatwość modernizacji, łatwość rozbudowy o nowe funkcje PLD
Obszar zastosowań PLD (3) Niestandardowe systemy przetwarzania danych Często złożone systemy i algorytmy mogą być przedstawione z wykorzystaniem koncepcji przepływu danych (dataflow) i zrealizowane jako ścieżka przetwarzania danych kontrolowana własnym układem sterującym. Obszary zastosowań: przetwarzanie sygnałów cyfrowych i obrazu, sieci neuronowe, inne obliczeniowo skomplikowane algorytmy. Zalety PLD: opłacalne w przypadku małych serii, łatwość opisu w języku HDL.
Obszar zastosowań PLD (4) Wirtualny sprzęt Dzięki rekonfigurowalności zasoby sprzętowe na żądanie użytkownika mogą wykonywać różne zadania. Postrzega on wtedy zasoby jako większe niż są one w rzeczywistości. aplikacja główna + sprzęt rekonfigurowalny różne konfiguracje zasobów przechowywane w pamięci konfiguracji, ładownie konfiguracji potrzebnej w danej chwili,
Projektowanie z wykorzystaniem PLD Układy FPLD udostępniają zasoby składające się z identycznych komórek logicznych (logic cells) i mechanizmy łączenia ich ze sobą. Wielkość dostępnych zasobów i złożoność projektów realizowanych w układach wymagają narzędzi umożliwiających translację funkcji zadanych przez użytkownika w sieć zbudowaną z komórek logicznych i programowalnych połączeń formującą docelowy projekt. Oprogramowanie umożliwia automatyczną translację projekt dla różnych architektur FPLD. Systemy projektowe integrują różne etapy projektowania w jednolite środowisko projektowe. Systemy umożliwiają projektowanie na wysokim poziomie abstrakcji, ale jednocześnie umożliwiają projektantowi analizowanie fizycznego rozmieszczenia projektu w układzie FPLD a nawet zmianę szczegółów projektu na najniższym bramkowym poziomie abstrakcji.
Możliwości systemów CAD System projektowania umożliwia: opis projektu, translację opisu w celu realizacji projektu, weryfikację projektu, programowanie układu, powtórne wykorzystanie projektów