Do czego służą programowalne logiczne układy scalone o różnej złożoności?


10

Programowalną logikę można wdrożyć w widżecie w wielu różnych zakresach, od wypalenia kilku bramek lub użycia MUX do najnowszej FPGA z wbudowanym mikrokontrolerem i urządzeniami peryferyjnymi IO, nie wspominając już o PrimeCell GPIO ARM lub innych, bardziej szczegółowych przykładach . Do jakich aplikacji wykorzystywane są różne poziomy złożoności programowalnych urządzeń logicznych? Chociaż wydaje się, że grupowanie łączy się w pobliżu skrajności ich definicji , myślę, że jest to dopuszczalna lista:

  1. PAL / PLA / GAL : Programowalny układ logiczny; wydają się być wymienione jako„Osadzone - PLD”w Digikey, obejmujące asynchroniczne we / wy10/8(ATF16V8C) do 50 MHz, 192 makrokomórki, (CY7C341B), i są w większości przeprogramowalne.
  2. CPLD : Złożone programowalne urządzenie logiczne; Digikey podaje je jako takie, dostępne w 7,5ns 10 I / O (ATF750C) do 233 MHz, 428 I / O „CPLD ogęstościFPGA” (CY39100V484B).
  3. FPGA : matryca bramkowa programowalna w terenie; dostępny w 58 I / O (XC2064) do 1023 I / O bestii BGA (EP1S80F1508C7N).
  4. FPGA z twardym MCU : wtedy MCU jest fizycznie ułożone w układzie scalonym FPGA, a nie emulowane.

Cytat z Wikipedii:

Różnica między układami FPGA i CPLD polega na tym, że układy FPGA są wewnętrznie oparte na tablicach przeglądowych (LUT), podczas gdy układy CPLD tworzą funkcje logiczne z wykorzystaniem morze bram (np. Suma produktów). CPLD są przeznaczone do prostszych projektów, podczas gdy FPGA są przeznaczone do bardziej złożonych projektów. Ogólnie rzecz biorąc, CPLD są dobrym wyborem dla szerokiej logiki kombinacyjnej, podczas gdy układy FPGA są bardziej odpowiednie dla dużych maszyn stanów (tj. Mikroprocesorów).

To nie tłumaczy różnicy między użyciem CPLD 233 MHz, 400 I / O i porównywalnym FPGA ; lub pomiędzy PLD makrokomórki 192 a porównywalnym CPLD . Nie mogę opracować wiarygodnych wytycznych, dzięki którym zawęzię opcje projektowania. Zauważ, że obecnie nie mam na myśli konkretnej aplikacji, ale często zastanawiałem się, „czego miałbym to zrobić?”

Otrzymałem doskonałą poradę poza witryną dotyczącą konkretnych wymagań, ale nadal uważam, że to pytanie może skorzystać z niektórych przykładów pokazujących preferencję w stosunku do jednej rodziny PLD, gdy inna może wydawać się równie lub bardziej odpowiednia.


XC2064 to starożytna część. Nie wiem, czy CY7C341B i CY39100V484B są nadal produkowane. Powinieneś wziąć to pod uwagę podczas dokonywania jakiegokolwiek porównania / decyzji.
Brian Carlton,

2
Dla każdej z tych części istnieje ogromna różnica między różnorodnością ofert, które producenci umieścili w swojej literaturze, a znacznie mniejszym asortymentem kombinacji liczby bramek / pakietu / prędkości i temperatury, których można się spodziewać małe ilości w mniej niż pół roku czasu realizacji. Podczas projektowania z nimi najpierw sprawdź rzeczywistą dostępność. Nawet jeśli wiem, że kupujący chcą uzyskać je z dystrybucji, wolę wybierać urządzenia, o których wiem, że bardziej prototypowy dostawca faktycznie ma je pod ręką, jeśli zajdzie taka potrzeba.
Chris Stratton,

Dobra rada, @ChrisStratton. Zazwyczaj jest to pierwsza rzecz, którą sprawdzam w przypadku większości części, ale nadal dobrze jest wiedzieć, że jest to szczególnie problematyczne w przypadku PLD.
tyblu

Odpowiedzi:


7

Istnieją dwa kryteria, których można użyć do oceny projektu cyfrowego, które pomogą ci zdecydować, która część najlepiej pasuje do twoich kryteriów. Pierwszym z nich jest rozmiar / złożoność projektu - ile w to logiki. Drugi to wymagania wejściowe i wyjściowe pod względem liczby pinów. Szybkość można uwzględnić, jeśli można oszacować najwolniejszą funkcję. Narzędzia sprzedawcy (Altera Quartus II, Xilinx ISE itp.) Pomogą Ci, gdy znajdziesz się w odpowiednim polu do gry.

  • PAL / PLA / GAL: Są one przeznaczone do zastąpienia małych i średnich obwodów, które normalnie można zaimplementować jako układy logiczne LSI (seria 7400, 4000). Mogą oferować lepsze układy kart ze względu na mapowanie I / O i wiele prostych funkcji logicznych. Układy te zawierają nieulotną pamięć (lub jednorazowe programowalne bezpieczniki) i nie wymagają czasu konfiguracji zasilania. Nie mogą zawierać elementów do przechowywania danych.

  • CPLD: Są to więksi kuzyni PLA. Mogą to być małe maszyny stanowe lub nawet bardzo prosty rdzeń mikroprocesora. Większość układów CPLD, które widziałem, nie ma wbudowanej pamięci SRAM, chociaż ma duże Cypress CPLD, które połączyłeś. Bardziej prawdopodobne jest, że CPLD będą ponownie programowalne z pamięcią flash, a także nie wymagają czasu konfiguracji przy włączaniu.

  • FPGA: W przeciwieństwie do CPLD, bloki logiczne oparte są na SRAM zamiast pamięci flash, co powoduje szybsze operacje logiczne. Główną wadą FPGA jest to, że ponieważ konfiguracja jest przechowywana w SRAM, za każdym razem, gdy urządzenie jest włączane, FPGA musi załadować swoje programowanie do tej pamięci SRAM. W zależności od wielkości projektu i prędkości nieulotnego przechowywania może to spowodować zauważalne opóźnienie od włączenia zasilania do pełnego funkcjonowania. Niektóre układy FPGA mają wbudowaną pamięć flash do przechowywania danych, ale większość korzysta z osobnych układów pamięci. Układy FPGA często mają wbudowane multiplikatory, PLL i inne funkcje logiczne w celu poprawy prędkości obliczeniowej. Dostępne są również duże bloki wbudowanej pamięci RAM. Będziesz także mógł korzystać ze specyfikacji o wysokiej wydajności we / wy, takich jak LVDS, PCI i PCI-Express.

  • FPGA z twardym rdzeniem mikroprocesora: Nie znam ich, ale wyobrażam sobie, że twój projekt koncentrowałby się wokół programowania mikrokontrolera, a FPGA zwiększyłoby mikrokontroler. Zidentyfikowane części sprawiają, że wygląda to tak, jakbyś zaczął projektowanie od mikrokontrolera i FPGA, a następnie połączył je w jeden układ / pakiet.

Jak zdecydować, który jest odpowiedni dla Ciebie:

Najlepszym sposobem jest ukończenie kodu (Verilog / VHDL), a następnie skorzystanie z narzędzi dostawcy, aby dopasować go do najmniejszej możliwej części. Wiem, że narzędzie Altera pozwala dość łatwo zmieniać cele programowania, dzięki czemu możesz ciągle wybierać mniejsze układy FPGA, a następnie mniejsze CPLD, dopóki wykorzystanie projektu nie zbliży się do około 75%. Jeśli potrzebujesz wydajności, spróbuj wybrać urządzenia, które mają funkcje (szybkie mnożniki), które zmniejszają wymagania szybkości logiki. Ponownie, narzędzia dostawcy pomogą ci określić, czy musisz uaktualnić, czy możesz obniżyć wersję.

Innym czynnikiem, z którego części należy korzystać, jest łatwość użytkowania. Korzystanie z logiki PAL / PLA / GAL jest prawdopodobnie większym wysiłkiem niż konstruowanie funkcji przy użyciu dyskretnych bramek logicznych (74HC *, 4000 itd.). CPLD zazwyczaj wymagają tylko jednego napięcia zasilania i nie wymagają dodatkowych obwodów. Są skutecznie samodzielne. Układy FPGA zaczynają używać wielu zasilaczy do we / wy i rdzenia logicznego, złożonych standardów we / wy, oddzielnej pamięci programów, wielowarstwowych (> 2) płytek drukowanych i pakietów BGA.

Kroki w celu zawężenia wymagań projektowych obejmują:

  1. Zidentyfikuj wszystkie wejścia i wyjścia dla twojego FPGA / CPLD. Zazwyczaj jest to łatwa część etapu projektowania. W ten sposób wiesz, na jaki pakiet patrzysz i jak blisko możesz go przyciąć do tego marginesu.

  2. Narysuj schemat blokowy wewnętrznej logiki. Jeśli twoje bloki wyglądają na proste (każdy blok miałby całą rękę bramek logicznych i rejestrów), prawdopodobnie możesz użyć CPLD. Jeśli jednak bloki mają etykiety takie jak „Ethernet transciever”, „interfejs PCI-Express x16”, „kontroler DDR2” lub „kodowanie / dekodowanie h264”, to prawie na pewno patrzysz na FPGA i używasz HDL.

  3. Sprawdź i sprawdź, czy Twoje interfejsy mają specjalne wymagania we / wy, takie jak specjalne napięcia, LVDS, DDR lub SERDES wysokiej prędkości. Łatwiej jest uzyskać chip, który go obsługuje, niż uzyskać dodatkowy chip tłumacza.

Przykładowe aplikacje CPLD:

  • Wielokanałowy PWM z interfejsem SPI
  • Ekspander we / wy
  • Dekodowanie przestrzeni adresowej procesora
  • Zegary (utrzymanie czasu)
  • Wyświetl multipleksery
  • Prosty DSP
  • Niektóre proste programy można przekształcić w projekt CPLD

Przykład aplikacji FPGA dla hobbystów:

  • Małe konstrukcje System-on-Chip (SoC)
  • Wideo
  • Złożone mostki protokołów
  • Przetwarzanie sygnałów
  • Szyfrowanie / deszyfrowanie
  • Emulacja starszego systemu
  • Analizator logiczny / generator wzorców

W przypadku większości prac hobbystycznych będziesz ograniczony do stosunkowo małych układów FPGA, chyba że chcesz lutować pakiety BGA. Wybrałbym duży CPLD lub tani FPGA, a wymagania dotyczące wielkości / prędkości decydowałyby o tym, którego potrzebuję.


nieznacznie rozszerzając twoją odpowiedź, byłbym skłonny zgrupować PAL / PLA / GAL w ten sam koszyk co PLD / CPLD z powodu natychmiastowego uruchomienia bez czasu konfiguracji, a dostawcy zaczynają wypychać CPLD przed PAL / PLA / Urządzenia GAL. Na przykład pracuję z niektórymi urządzeniami sieciowymi, a ich układy scalone z rodziny CPLD są znacznie tańsze i oferują więcej bramek niż kuzyni PAL / GAL / PLA. Koszt tego drugiego jest wygórowany w porównaniu z tym, co oferują.
smashtastic

Linia zdecydowanie się zaciera. Nie sądziłem, że PAL / PLA / GAL mają elementy pamięci lub CLPD mają SRAM, dopóki nie spojrzałem na wymienione części tyblu. Wygląda na to, że PAL / PLA / GAL bardziej przypominają taśmę z kaczki w projekcie niż są jej główną częścią.
W5VO,

3

Dobra lista „reguł praktycznych” wyglądałaby mniej więcej tak:

  • PAL / PLA / GAL: Używany zamiast dyskretnych bramek logicznych IC na płytce drukowanej
  • CPLD: Używany tam, gdzie wymagane są złożone, niezwiązane z DSP zadania i być może krytyczne czasowo (ładowanie kodu rozruchowego do pamięci FPGA z pamięci, generator fal sinusoidalnych LUT dla DAC itp.)
  • FPGA: Używany, gdy wymagana jest zdolność krytyczna czasowo, mnożenie lub DSP (filtry FIR, FFT itp.)
  • FPGA z twardym MCU: Używany, gdy wymagana jest funkcjonalność FPGA i należy uzyskać dostęp do urządzeń peryferyjnych w FPGA (czujniki temperatury) lub w celu uproszczenia wykonania zadania mniej wrażliwego na czas w C zamiast VHDL (funkcjonalność UART / portu szeregowego, Sprzątanie PCB itp.)

Z tanim CPLD pod złotem w niewielkiej ilości, PAL / PLA / GAL są prawie martwi, z wyjątkiem starszych aplikacji.
Chris Stratton,

Nie będę się o to kłócić. Mógłbym tylko wyobrazić sobie, że prawdopodobnie gdzie niska moc (akumulator) / mały rozmiar jest ograniczeniem, mogą być nadal używane, ponieważ mogą być bardziej korzystne niż CPDL, ale nadal użyłbym najmniejszego / energooszczędnego CPLD, gdyby to był mój projekt.
Joel B,

2

Prosta odpowiedź może brzmieć na dwa sposoby:

1. Najpierw projektujesz swój system na wysokim poziomie abstrakcji (powiedzmy HDL lub schematy). Następnie próbujesz dopasować go do PAL / CPLD / FPGA i wybierasz te, które spełniają twoje wymagania (liczba bramek / elementów logicznych, wydajność itp.), A następnie wybierasz najtańszy z nich w zależności od tego, co definiujesz najtańsze (koszt opracowania vs koszt produkcji itp.).

2. Ale zwykle przed rozpoczęciem kodowania HDL lub opracowywania schematów można już oszacować złożoność systemu (ile bramek potrzebujesz, jeśli wygląda na to, że potrzebujesz 8-bitowego MCU lub 32-bitowego MCU, lub żadnego mikrokontrolera na wszystko). Na tej podstawie możesz również wybrać swoje programowalne urządzenie. Byłoby to mniej precyzyjne, ale pozwoli zaprojektować nieprogramowalny sprzęt analogowy i cyfrowy równolegle z programowalnym sprzętem i oprogramowaniem (jeśli istnieje).


2

Używany jest układ FPGA z twardym rdzeniem, ponieważ ma mniejszą powierzchnię niż oddzielny mikrokontroler i jest szybszy niż mikroprocesor z miękkim rdzeniem. Jednak cena jest zwykle gorsza niż FPGA i osobny mikrokontroler. Ogólnie oprogramowanie i dlatego mikrokontroler jest lepszy w (względnie) powolnych i rzadkich przypadkach, takich jak konfiguracja parametrów i obsługa błędów; logika jest lepsza dla ciągłych procesów. Na przykład podczas przetwarzania pakietów zapisywanie w pamięci powinno być logiczne; obsługa limitu czasu do wygaśnięcia powinna pozostać w oprogramowaniu.

W przestrzeni FPGA są tanie / tanie części i drogie / szybkie części. Ogólnie mikrokontroler jest tylko w drogim; powoduje to, że koszt wymiany w porównaniu z dyskretnym MCU jest jeszcze gorszy dla rozwiązania opartego na FPGA.

Nikt nie używa PAL w nowych projektach, przynajmniej przez ponad 10 lat. CPLD przejęły tę niszę.

W ostatnich 5? lata CPLD są wewnątrz FPGA, ale z pamięcią do przechowywania konfiguracji na chipie. Ponieważ układy FPGA mają teraz 100 MHz, szybkość jest znacznie mniejszym powodem do wprowadzenia logiki w CPLD niż 10-15 lat temu. Jednak układy FPGA nadal mają inne funkcje, takie jak mnożniki, serializatory i wiele pamięci, które mogą zmusić projekt do jednego, nawet jeśli nie ma zbyt dużej logiki.


1
Jednym z powodów utrzymywania CPLD jest to, że obecnie tanie CPLD są nadal wytwarzane w technologiach pojedynczego zasilania, podczas gdy większość obecnych układów FPGA wymaga kilku napięć zasilania. Więc jeśli nie musisz robić dużo taniej, aby umieścić cpld na planszy - ale jeśli mówisz o dużym CPLD, niskiej jakości FPGA może być tańsza i dać ci więcej miejsca na przyszłe ulepszenia, szczególnie jeśli masz już dostępne źródła napięcia rdzenia z innego powodu.
Chris Stratton,

Dzięki za odpowiedź, @BrianCarlton i komentarze, @ChrisStratton. Podane przykłady i aktualna opinia są świetnymi informacjami.
tyblu
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.