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ą:
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.
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.
- 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ę.