Brak produktów
Czym są układy programowalne? Z moich obserwacji wynika, że większość hobbystów na uczelni bądź na elektrodzie coś na ten temat słyszała. I tylko tyle. A wielka szkoda, bo układy programowalne potrafią robić rzeczy, których przy pomocy procesora zrobić się po prostu nie da.
Na początek jednak przypomnijmy definicję procesora - układ (niekoniecznie scalony!), który wykonuje listę instrukcji wg określonej kolejności. Czy już dostrzegasz słaby punkt procesora? Nie? No tak, przecież lista instrukcji może być dowolna, można więc zrealizować bardzo różnorodne czynności. Ale czy procesor może wykonać dwie instrukcje jednocześnie? No właśnie... i tu jest haczyk. Nie może. A układ programowalny może wykonywać bardzo wiele czynności dokładnie w tym samym czasie i to bez jakiegokolwiek uszczebrku na funkcjonalności. Dochodzimy zatem do wniosku, że procesor jest fajny, jeśli ma wykonywać czynności szeregowo. Układ programowalny służy do czynności wykonywanych równolegle.
Na czym polega sekret układów programowalnych? Większość kursów, książek i wykładów rozpoczyna się od dłuuuuugiej rozprawy na temat ich wewnętrznej budowy. Napiszę bardzo skrótowo - układ programowalny to zbiór bramek i przerzutników, które można sobie połączyć według własnych potrzeb. Można to porównać do klocków lego. Procesor można by analogicznie porównać do kalkulatora, ale też zbudowanego z klocków lego, tyle że sklejonych ze sobą na stałe.
Inne zalety - są niesamowicie szybkie. Częstotliwości rzędu setek MHz nie są tu niczym nadzwyczajnym. Możliwe jest też precycyjne kontrolowanie czasu. Ciekawym zastosowaniem jest tworzenie prototypów układów scalonych, które potem mają być wdrożone do produkcji.
Zasadniczo rozróżnia się trzy rodzaje układów programowalnych:
Powyższy podział jest dość orientacyjny. Istnieją układy FPGA z wbudowaną pamięcią stałą. Czasami granica między FPGA i CPLD jest na tyle rozmyta, że nawet producenci układów mają problem z właściwym zaszufladkowaniem układu. Na przykład MachXO2 od Lattice figuruje na stronie producenta jednocześnie w kategorii CPLD i FPGA :)
Producentów jest wielu, ale trzech z nich wiedzie prym: Xilinx, Altera, Lattice.
Stop! Programuje się procesor! CPLD/FPGA się konfiguruje. Ktoś może zapytać w takim razie, dlaczego w nazwie tych układów jest słowo "programowalne"? Powinno być raczej konfigurowalne. Taki szczegół i czepialstwo językowe...
Logikę, czyli to co wgrywamy do środka scalaka, tworzymy nie w języku programowania, ale w języku opisu sprzętu (HDL, Hardware Description Landuage). Obecnie stosuje się dwa z nich.
To, co napiszemy w języku opisu sprzętu, musi zostać przetworzone przez syntezator (odpowiednik kompilatora), który przerobi słowny opis na równania logiczne. Następnie równania muszą być zaimplementowane w strukturę bramek i przerzutników. Na szczęście ten proces dokonuje się samoczynnie i de facto o fizycznej budowie CPLD/FPGA niewiele trzeba wiedzieć. Na końcu otrzymujemy plik, który można wgrać do układu programowalnego tak samo jak wsad do mikrokontrolera.
Układy FPGA potrafią być bardzo drogie, więc na początek proponuję wziąć się za CPLD. Xilinx produkuje fajne kostki XC9572XL albo XC2C64 w obudowach PLCC44. Można sobie zrobić prostą płytkę testową, jak na zdjęciu. Jeżeli masz port LPT w komputerze to super - możesz sobie zrobić programator na płytce prototypowej za kilka złotych. Jeżeli masz tylko USB to zła wiadomość - niestety czeka Cię wydatek 200zł albo tańsze i uciążliwe prowizoryczne rozwiązania. Na upartego da się zrobić programator na FT232RL, ale zaprogramowanie prostego XC9572XL zajmuje aż 8 minut. Można spróbować także szybszej wersji, FT2232HL - wtedy programowanie zajmuje kilkanaście sekund, ale trzeba wykonać sporo klikaniny. Ja polecam oryginalny programator Xilinx Platform Cable DLC9G - działa zawsze, szybko i z każdym układem.
Fają rzecz ostatnio wypuścił Lattice. MachXO2 to krzyżówka CPLD i FPGA, mająca dodatkowo kilka ciekawych peryferiów. Dostępna jest płytka, wyposażona w programator USB oraz darmowe oprogramowanie.
http://www.latticesemi.com/products/cpld/machxo2/index.cfm
http://www.latticesemi.com/products/developmenthardware/developmentkits/machxo2picokit.cfm
http://www.kamami.pl/index.php?ukey=product&productID=184738
Zobacz więcej