Kurs FPGA – #11 – edytor graficzny, magistrale

Kurs FPGA – #11 – edytor graficzny, magistrale

Edytor graficzny, który poznaliśmy w poprzedniej części kursu podstaw FPGA jest bardzo prosty i przyjazny - szczególnie dla początkujących.

Oczywiście spisuje się on równie dobrze przy trochę bardziej rozbudowanych projektach. W tej części kursu zajmiemy się rysowaniem układów, które korzystają z kilku bramek i magistral.

Bramka OR z 4 wejściami - tworzenie magistrali

Pora na kolejną aplikację. Tym razem wykorzystamy wielowejściową bramkę OR oraz 4 przyciski (SW1, SW2, SW3, SW4). Wyjściem układu będzie dioda D8.

Ilustracja realizowanego zadania.

Zaczynamy od stworzenia nowego projektu i dodania pliku typu Schematic (identycznie jak w poprzedniej części kursu). Klikamy na narzędzie Add Symbol, wybieramy kategorię Logic i z dostępnych symboli wybieramy or4. Układamy element na schemacie i przechodzimy do stworzenia magistrali. W tym celu wybieramy narzędzie Add wire.

Narzędzie Add Wire.

Na schemacie rysujemy pionową linię, aby uzyskać efekt zgodny z poniższym zrzutem ekranu. W celu narysowania magistrali klikamy lewym przyciskiem myszy na jej początku, a następnie końcu. Rysowanie kończymy wciskając klawisz Esc. Linia ta będzie stanowiła magistrale wejść dla bramki OR.

kurs_fpga_6_21

Schemat po umieszczeniu bramki OR i umieszczeniu przewodu-magistrali.

Wybieramy teraz narzędzie do podpisywania przewodów:

Narzędzie do podpisywania przewodów - Add Net Name.

Po lewej stronie Xilinx ISE pojawi się zakładka Options, którą należy wypełnić zgodnie z poniższym zrzutem ekranu. Szczególną uwagę należy zwrócić na pole "Name"!

Zawartość zakładki "Options" - podczas podpisywania - przewodu, magistrali wejść.

Po wpisaniu nazwy do naszego kursora "przyklei" się nazwa wpisana w pole Name. Klikamy wtedy na narysowany wcześniej przewód. W tym momencie schemat powinien wyglądać następująco:

kurs_fpga_6_23

Schemat po podpisaniu magistrali.

Teraz łączymy bramkę z magistralą za pomocą narzędzia Add Bus Tap.

Narzędzie do tworzenia podczepień do przewodów - Add Bus Tap.

Narzędzie to służy do tworzenia połączeń między magistralą, a konkretnym wyprowadzeniem układu (w tym przypadku bramki logicznej). Teraz warto zwrócić uwagę na zakładkę Options. Powinna być tam zaznaczona opcja Left. Następnie klikamy blisko przewodu Switch(0:3) na wysokości jednego z wejść bramki OR. Operację powtarzamy dla wszystkich 4 wejść, aż do uzyskania następującego schematu:

Doczepianie połączeń do magistrali.

Teraz musimy jeszcze dodać bramki NOT na każdym wejściu naszej bramki OR. Robimy to, ponieważ na zestawie ElbertV2 przyciski po ich naciśnięciu zwierają do masy. Oznacza to, że domyślnie wejścia z przyciskami wystawiają jedynkę logiczną. Umieszczenie bramek NOT odwróci to działanie.

Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Zestaw uruchomieniowy Elbert v2 - Spartan 3A z wszystkimi niezbędnymi peryferiami do wykonania ćwiczeń z kursu FPGA!

Kup w Botland.com.pl

Po dodaniu bramek NOT łączymy je z wyprowadzeniami magistrali oraz z bramki za pomocą narzędzia Add Wire. Połączenia wykonuje się przez klikanie na kwadraciki umieszczone na końcach przewodów.

W tym momencie schemat powinien wyglądać mniej więcej tak, jak na poniższym zrzucie ekranu:

kurs_fpga_6_26

Schemat po umieszczeniu bramek NOT i połączeniu odczepów.

Jeśli odczepy nie zostały wcześniej podpisane (tak jak na powyższym zrzucie) to należy podpisać je teraz ręcznie korzystając z narzędzia Add Net Name. Odczepy nazywamy kolejno Switch(0)...Switch(3).

Teraz została nam do przeprowadzenia ostatnia operacja na schemacie - zaetykietowanie magistrali, do której przed momentem tworzyliśmy odczepy. Wystarczy  wybrać narzędzie Add I/O Marker i kliknąć na górnym kwadraciku magistrali - etykieta z właściwym oznaczeniem zostanie utworzona automatycznie.

Na koniec dodajemy etykietę dla wyjścia bramki OR - tutaj nadajemy nazwę LED0 (identycznie jak w poprzedniej części kursu). Ostatecznie schemat powinien wyglądać następująco:

kurs_fpga_6_27

Gotowy schemat zawierający implementacje czterowejściowej bramki OR.

Dodawanie pliku UCF

Tak jak zawsze konieczne jest przygotowanie pliku UCF. Tym razem powinien wyglądać następująco:

Po wgraniu na płytkę program powinien działać zgodnie z oczekiwaniami. Czyli wciśnięcie dowolnego przycisku (lub kilku jednocześnie) spowoduje włączenie diody:

Efekt działania opisywanego programu.

Łączenie bramek - projekt automatycznych drzwi

W kursie #3 odcinku kursu techniki cyfrowej budowaliśmy prosty sterownik drzwi automatycznych. Spróbujmy odtworzyć go teraz na naszym FPGA. Dla przypomnienia:

Wyobraźmy sobie automatycznie otwierane drzwi. Aby je otworzyć, należy stanąć na platformie przed nimi i wcisnąć przycisk po lewej lub po prawej stronie. Taki sposób otwierania powstał po to, aby przypadkowo przechodzący przed nimi ludzie (czyli stąpający po platformie) nie otwierali ich. Jednocześnie nie może ich otworzyć małe dziecko, ponieważ jest zbyt lekkie, aby wcisnąć platformę.

Przycisk po lewej, prawej i platforma przed drzwiami.

Funkcja, którą będziemy implementować wygląda następująco:

LED0 = S0 AND (S1 OR S2)

Dla zapewnienia, że nasz układ działa intuicyjnie - musimy na wejściach naszego układu wstawić bramki NOT, by po naciśnięciu przycisku nasz układ widział to jako jedynkę logiczną.

W praktyce wyjdzie nam więc z tego bardziej rozbudowana funkcja:

LED0 = (NOT S0) AND ((NOT S1) OR (NOT S2))

Tworzymy nowy projekt z plikiem typu Schematic. Wykorzystując zdobytą już wiedzę rysujemy schemat układu realizującego powyższą funkcję. Gotowy schemat może wyglądać tak jak na poniższym zrzucie ekranu (przycisk SW1 z zestawu ElbertV2 odpowiada Switch(0) itd).

Gotowy schemat zawierający implementacje czterowejściowej bramki OR.

Gotowy schemat zawierający układ automatycznego otwierania drzwi.

Dodawanie pliku UCF

Poniżej plik UCF dla tego projektu:

Po wgraniu program powinien działać zgodnie z przyjętymi założeniami. Dioda zaświeci się tylko, gdy wciśniemy przycisk SW1 oraz SW2 i/lub SW3.

Efekt działania opisanego programu.

Tworzenia projektu w VHDL vs. rysowanie schematu

Na zakończenia, w ramach ciekawostki, umieszczamy kod VHDL, który robi dokładnie to samo, co powyższy schemat.

W małych i średnich projektach wybór metody zależy w dużej mierze od gustu konstruktora. Jednak w większych aplikacjach schematy stają się zbyt nieczytelne, a ewentualne modyfikacje bardzo niewygodne, stąd metoda ta raczej stosowana jest tylko przy małych i średnich projektach.

Podsumowanie

Za nami kolejne eksperymenty z edytorem graficznym. Koniecznie dajcie znać w komentarzu, które podejście (kod vs. grafika) jest dla Was wygodniejsze! Zachęcamy również do testów we własnym zakresie i dzielenia się swoimi projektami na naszym forum. W kolejnym odcinku przyjdzie pora na sprawdzenie zdobytych umiejętności.

Autor kursu: Adam Bemski
Redakcja: Damian Szymański
Ilustracje, testy: Piotr Adamczyk

Nawigacja kursu

O autorze: Adam Bemski

Adam Bemski
Autorem kursu jest Adam Bemski, specjalista od systemow wbudowanych. Pracuje w obszarze automatycznego testowania urządzeń z funkcjonalnością IoT. Adam dodatkowo prowadzi zajęcia z techniki mikroprocesorowej na wyższej uczelni DHBW Stuttgart. Więcej szczegółów o Adamie na blogu adambemski.com.

fpga, grafika, kurs, magistrala

Komentarze

Dodaj komentarz