« poprzedni punkt  następny punkt »


3. Złożone układy programowalne (CPLD i FPGA)

Przedstawione wyżej układy typu GAL pozwalają realizować dość złożone projekty logiczne. Jednak dla wielu zastosowań praktycznych ta złożoność jest niewystarczająca i w związku z tym opracowano wiele innych układów o znacznie zwiększonej złożoności. (Złożoność układu programowalnego ocenia się często jako liczbę bramek NAND, które trzeba by użyć, żeby zrealizować funkcje jakie można zrealizować za pomocą rozpatrywanego układu programowalnego). Historycznie rozróżniano dwie koncepcje budowy złożonych układy programowalnych: układy CPLD oraz układy FPGA.

Koncepcja budowy układów CPLD polegała na tym żeby w jednym układzie programowalnym scalić pewną liczbę prostych układów programowalnych i zapewnić odpowiednią strukturę ścieżek, która umożliwi programowanie połączeń. W koncepcji układów FPGA zakładano, że w strukturze scalonej układu programowalnego umieści się pewną liczbę tak zwanych makrokomórek lub bloków logicznych (każda makrokomórka czy też blok logiczny to zestaw wybranych układów logicznych) oraz odpowiednią strukturę ścieżek dla prowadzenia połączeń. Obecnie różnice między układami realizowanym za pomocą tych koncepcji stają się trudne do uchwycenia i najczęściej w odniesieniu do złożonych układów programowalnych używa się nazwy FPGA.

Złożone układy programowalne z reguły zawierają trzy element składowe (rysunek XII.11): zestaw makrokomórek, sieć połączeń oraz układy wejścia/wyjścia. Makrokomórki tworzą matrycę bloków zajmującą środkową część struktury. Sieć programowalnych połączeń zajmuje wolne miejsca między makrokomórkami. Natomiast układy wejścia/wyjścia rozmieszczone są na obrzeżu struktury i zapewniają współpracę układu programowalnego z otoczeniem.

Rys. XII.11. Ogólna architektura układów FPGA

Każda komórka wejścia/wyjścia z reguły umożliwia współpracę z różnymi układami scalonymi (TTL, CMOS) o różnych wartościach napięcia zasilania, z układami trójstanowymi bądź z układami z otwartym kolektorem itp. Komórki wejścia/wyjścia są programowalne podobnie jak makrokomórki.

Makrokomórki zawierają różne zestawy układów logicznych umożliwiających realizację złożonych funkcji logicznych. Poszczególne makrokomórki mogą samodzielnie realizować pewne funkcje albo mogą współpracować z innymi komórkami znajdującymi się w strukturze układu programowalnego.

Sieć połączeń zapewnia możliwość programowania połączeń zarówno wewnątrz poszczególnych makrokomórek jak i między nimi oraz połączeń z komórkami wejścia/wyjścia. Struktury sieci połączeń mają różne rozwiązania - poszczególni producenci stosują swoje rozwiązania, starając się zapewnić elastyczność prowadzenia połączeń oraz szybkość przesyłania sygnałów. Z reguły wyodrębniane są specjalne ścieżki służące do rozprowadzania sygnałów zegarowych.


« poprzedni punkt  następny punkt »