Trochę komiksów o układach PLD

Podstawy FPGA, a może nie tylko podstawy?
Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Trochę komiksów o układach PLD

Postautor: gaweł » czwartek 11 maja 2017, 00:18

Gumowa logika


Pierwsze moje zetknięcie się z układami logiki programowalnej (tymi trochę bardziej złożonymi niż układy PAL lub GAL) wywołało skojarzenie z “gumową logiką”. W dużej mierze to określenie nie jest to pozbawione racji. Układy logiki programowalnej (PLD) pozwalają na znaczną elastyczność w zastosowaniach. To tak jak “wyprodukowanie” własnego układu scalonego. Można do niego dodawać nowe funkcje a układ PLD będzie “się rozciągać”. Ponieważ układy PLD mają ograniczone zasoby, toteż ich “rozciągliwość” ma swoje granice.
W oparciu o zasoby układu można w nim zrealizować wymyśloną przez siebie funkcję. Bardzo interesującą możliwością układów PLD jest możliwość określenia znaczenia dla poszczególnych wyprowadzeń. Pomijając kilka pinów, które mają swoje znaczenia (jak doprowadzenie zasilania do układu), istnieje możliwość w znacznym stopniu dowolnego przyporządkowania sygnałów do fizycznych wyprowadzeń układu. Z pewnością wielu przekona się o tym w trakcie opracowania płytki drukowanej, w której będzie użyty układ PLD.
Z czasem okazało się, że układy CPLD nie są “super elastyczne” i zawierają trochę ograniczeń, tj. są takie projekty, które nie mieszczą się w strukturze układu pomimo, że nie wyczerpują wszystkich jego zasobów. Układami, dla których “dozwolone są wszelkie chwyty”, są układy FPGA. W tych strukturach praktycznie giną ograniczenia projektowe (chyba, że projektowane jest urządzenie o parametrach super, ultra kosmicznych). Bardzo istotną cechą układów PLD jest ich szybkość działania. Przetwarzanie sygnałów cyfrowych o częstotliwości około 100 MHz nie jest niczym niezwykłym, co jest często poza zasięgiem możliwości mikrokontrolerów oraz mikroprocesorów.
Ogólnie układy PLD można podzielić na trzy grupy:
  • proste układy SPLD (ang. Simple Programmable Logic Devices), do których należą układy z rodziny PAL oraz GAL,
  • złożone układy CPLD (ang. Complex Programmable Logic Devices), do których należą przykładowo układy CoolRunner, układy XC9500, MAX3000,
  • matryce bramkowe FPGA (ang. Field Programmable Gate Array), do których należą przykładowo układy rodziny SPARTAN, VIRTEX, CYCLONE.
Realizacja projektu (czyli uzyskanie “własnego” układu scalonego) składa się z następujących procesów (gdy wiadomo już co należy zrobić):
  • wymyślić sposób rozwiązania, czyli jak to zrobić,
  • narysować (utworzyć za pomocą odpowiedniego oprogramowania narzędziowego schemat układu cyfrowego) lub opisać (za pomocą odpowiedniego języka HDL) rozwiązanie (możliwa jest do zastosowania metoda mieszana: część jest określona za pomocą rysunku, część za pomocą języka opisu),
  • przetestować rozwiązanie, czyli za pomocą oprogramowania zdefiniować sygnały wejściowe i zweryfikować sygnały wyjściowe,
  • określić własne wymagania dotyczące docelowego rozwiązania (między innymi przyporządkować poszczególnym sygnałom fizyczne wyprowadzenia),
  • wytworzoną zawartością zbioru konfiguracyjnego zaprogramować odpowiednią pamięć układu PLD.
Specyfiką układów PLD jest to, że wytworzony przez człowieka zbiór (jak opis w języku HDL: Hardware Description Language) nie jest programem w jakiejkolwiek postaci. W żadnym wypadku nie należy szukać analogii do języków programowania mikroprocesorów. W programowaniu mikrokontrolerów zapis instrukcji w określonym języku programowania stanowi ciąg instrukcji opisujący algorytm działania, które są wykonywane sekwencyjnie (jedna po drugiej). W układach PLD za pomocą języka opisuje się układ (podobnie jak rysunek schematu opisuje układ cyfrowy). W wyniku przetwarzania opisu układu przez odpowiednie oprogramowanie, powstaje zbiór, który konfiguruje wewnętrzne zasoby układu PLD do wymaganego stanu. Przez czynność programowania układu PLD należy rozumieć czynność związaną z umieszczeniem danych uzyskanych w całym procesie projektowym wewnątrz odpowiedniej pamięci. Pod tym względem, układy PLD można podzielić na dwie grupy:
  • układy z nieulotną pamięcią konfiguracyjną (EEPROM lub FLASH), do których typowo należą układy SPLD i CPLD,
  • układy z ulotną pamięcią konfiguracyjną (statyczną RAM), do których typowo należą układy FPGA.
W przypadku układów z pamięcią konfiguracyjną zrealizowaną jako pamięć RAM, po każdym wyłączeniu zasilania, układ PLD musi zostać ponownie zaprogramowany, można użyć sformułowania, że układ musi zabootować z pamięci nieulotnej.


Kilka publikacji, które kiedyś były na elportalu. Większość została napisana ponad 10 lat temu, ale sądzę, że niektóre rozważania są zawsze ponadczasowe :) .

  • Implementacja nadajnika asynchronicznej transmisji szeregowej w układzie PLD
    serial.pdf
    serial.zip
  • Obsługa matrycowej klawiatury 4x4 w układzie FPGA (SPARTAN 3 firmy XILINX)
    keyb4x4.pdf
    keyb4x4.zip
  • Kostka do gry Realizacja w układzie PLD
    cub.pdf
    cub.zip
  • 4-przyciskowa klawiatura realizacja w układzie PLD (realizacja poprzez narysowanie schematu)
    rb4.pdf
    rb4.zip
  • Wyświetlacz stanu 8-bitowej szyny Implementacja w oparciu o układ logiki programowalnej (realizacja w technologii mieszanej: rysunek/VHDL)
    bustracer.pdf
    bustracer.zip
  • Hexcalcul projekt dla układu SPARTAN 3 (art. do Elektroniki Praktycznej)
    hexc.pdf
    hexc.zip
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Ostatnio zmieniony sobota 09 cze 2018, 20:52 przez gaweł, łącznie zmieniany 3 razy.

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Trochę komiksów o układach PLD

Postautor: tasza » piątek 12 maja 2017, 09:14

no wow, aż przyjemnie popatrzeć i poczytać . . . na nowo ;)

a masz może coś o takich zwykłych, prościutkich typu GAL16v8, 20v10 etc?

ja pracując nad dino-85 posiłkowałam się dosowym programikiem eqn2jed i tego typu tutkami: http://sss-mag.com/pdf/PLDTUTOR.pdf
i niezazbyt to wspominam, a zapytuje, bo takie zupełnie proste układy idealnie nadają się do zastąpienia dosłownie garści innych TTL-ków, nie zawsze większy CPLD jest zasadny
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

SuperGość
Uber Geek
Uber Geek
Posty: 2346
Rejestracja: piątek 04 wrz 2015, 09:03

Re: Trochę komiksów o układach PLD

Postautor: SuperGość » piątek 12 maja 2017, 09:22

Tez lata temu stosowaliśmy proste gale, teraz to altera głownie mocno rozbudowana.

Awatar użytkownika
tasza
Geek
Geek
Posty: 1082
Rejestracja: czwartek 12 sty 2017, 10:24
Kontaktowanie:

Re: Trochę komiksów o układach PLD

Postautor: tasza » piątek 12 maja 2017, 09:38

no ale takie małe 16v8 czy 20v8 też ciągle mogą się przydać, szczególnie w takich klimatach retro , zgodzisz się, no i tanie są i warto mieć usystematyzowaną wiedzę a nie `wizje` wynikające z rozpoznania bojem, te oba gale co ja zrobiła do dino-85 to działają wprawdzie, ale tam we środku to tak napaćkane jest że strach komuś pokazać
______________________________________________ ____ ___ __ _ _ _ _
Kończysz tworzyć dopiero, gdy umierasz. (Marina Abramović)

Awatar użytkownika
gaweł
Geek
Geek
Posty: 1259
Rejestracja: wtorek 24 sty 2017, 22:05
Lokalizacja: Białystok

Re: Trochę komiksów o układach PLD

Postautor: gaweł » piątek 12 maja 2017, 12:23

tasza pisze:a masz może coś o takich zwykłych, prościutkich typu GAL16v8, 20v10 etc?

GALE, PALE i PALCE :) , a owszem, zdarzyło mi się używać. Aktualnie nie mam żadnego komiksu poświęconego układom GAL, ale... no jak tu odmówić kobiecie ;) .

Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse



Wróć do „FPGA - ogólnie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości