Materiały pomocnicze do ćwiczeń laboratoryjnych. Projektowanie układów cyfrowych przy użyciu PLD i pakietu programowego PALASM 4

Podobne dokumenty
i pakietu programowego PALASM 4

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Krótkie wprowadzenie do ModelSim i Quartus2

MentorGraphics ModelSim

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TS1C

ĆWICZENIE 7. Wprowadzenie do funkcji specjalnych sterownika LOGO!

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

Asynchroniczne statyczne układy sekwencyjne

Projekt prostego układu sekwencyjnego Ćwiczenia Audytoryjne Podstawy Automatyki i Automatyzacji

AHDL - Język opisu projektu. Podstawowe struktury języka. Komentarz rozpoczyna znak i kończy znak %. SUBDESIGN

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Bezpieczeństwo informacji oparte o kryptografię kwantową

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Opis szybkiego uruchomienia programu APBSoft

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Tworzenie nowego projektu w asemblerze dla mikroprocesora z rodziny 8051

Automatyzacja i robotyzacja procesów produkcyjnych

PROGRAMOWALNE STEROWNIKI LOGICZNE

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

Projektowanie Scalonych Systemów Wbudowanych VERILOG

I. Interfejs użytkownika.

Architektura komputerów Wykład 2

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Programowanie w językach asemblera i C

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Ploter I-V instrukcja obsługi

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: PROGRAMOWALNE STRUKTURY LOGICZNE

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

Projektowanie automatów z użyciem VHDL

Algorytm. a programowanie -

Materiały pomocnicze do ćwiczeń z podstaw techniki cyfrowej (przygotował R.Walkowiak) Dla studiów niestacjonarnych rok AK 2017/18

Programowalne układy logiczne

LEKCJA. TEMAT: Funktory logiczne.

Cyfrowe układy scalone c.d. funkcje

Synteza strukturalna automatów Moore'a i Mealy

UKŁADY MIKROPROGRAMOWALNE

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

LICZNIKI LABORATORIUM. Elektronika AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. Wydział Informatyki, Elektroniki i Telekomunikacji

Sterowniki Programowalne (SP)

LABORATORIUM UKŁADÓW PROGRAMOWALNYCH Wydziałowy Zakład Metrologii Mikro- i Nanostruktur SEMESTR LETNI 2017

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Podręcznik Użytkownika LSI WRPO

Inwerter logiczny. Ilustracja 1: Układ do symulacji inwertera (Inverter.sch)

Programowanie w języku Python. Grażyna Koba

Konfiguracja i programowanie sterownika GE Fanuc VersaMax z modelem procesu przepływów i mieszania cieczy

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TZ1A

Projektowanie układów na schemacie

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

Instrukcja do oprogramowania ENAP DEC-1

LICZNIKI PODZIAŁ I PARAMETRY

UKŁADY CYFROWE. Układ kombinacyjny

Sterownik Visilogic V260

MultiBoot Instrukcja obsługi

LABORATORIUM SYSTEMÓW POMIAROWYCH KTP IR PW MATERIAŁY POMOCNICZE DO ĆWICZENIA 1 SYMULATOR SYSTEMU POMIAROWEGO W STANDARDZIE IEC-625.

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Projektowanie z użyciem procesora programowego Nios II

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Statyczne badanie przerzutników - ćwiczenie 3

Elektronika i techniki mikroprocesorowe

Electronic Infosystems

Opis preprocesora graficznego dla programu KINWIR -I

Sterowanie urządzeniami elektronicznymi przy użyciu portu LPT

Odczyt zegara ze sterownika do panelu serii TIU z możliwością korekty ustawień zegara w sterowniku

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Lista tematów na kolokwium z wykładu z Techniki Cyfrowej w roku ak. 2013/2014

SPIS TREŚCI: KARTY GRAFICZNE... 15

INSTRUKCJA OBSŁUGI. Przekaźnik czasowy ETM ELEKTROTECH Dzierżoniów. 1. Zastosowanie

Modułowy programowalny przekaźnik czasowy firmy Aniro.

Gromadzenie danych. Przybliżony czas ćwiczenia. Wstęp. Przegląd ćwiczenia. Poniższe ćwiczenie ukończysz w czasie 15 minut.

Tranzystor JFET i MOSFET zas. działania

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Układy sekwencyjne. Podstawowe informacje o układach cyfrowych i przerzutnikach (rodzaje, sposoby wyzwalania).

Podstawowe układy cyfrowe

Część 3. Układy sekwencyjne. Układy sekwencyjne i układy iteracyjne - grafy stanów TCiM Wydział EAIiIB Katedra EiASPE 1

1. SFC W PAKIECIE ISAGRAF 2. EDYCJA PROGRAMU W JĘZYKU SFC. ISaGRAF WERSJE 3.4 LUB 3.5 1

1.Wprowadzenie do projektowania układów sekwencyjnych synchronicznych

Ćw. 7: Układy sekwencyjne

Projektowanie Urządzeń Cyfrowych

Maszyna stanu State Machine

Program EDYTOR-AS-OUX

ETAP I SZKOLNY. Czas rozwiązywania testu 30 minut. Za każdą poprawną odpowiedź otrzymujesz 1pkt. POWODZENIA!!

Dokumentacja sterownika mikroprocesorowego "MIKSTER MCC 026"

CoDeSys 3 programowanie w języku drabinkowym LD

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

Modelowanie liczników w języku Verilog i ich implementacja w strukturze FPGA

Układy VLSI Bramki 1.0

Technika Mikroprocesorowa Laboratorium 5 Obsługa klawiatury

Technika Cyfrowa. Badanie pamięci

Symfonia Faktura. Instalacja programu. Wersja 2013

Opis ultradźwiękowego generatora mocy UG-500

Laboratorium Komputerowe Systemy Pomiarowe

S P I S T R E Ś C I. Instrukcja obsługi

Sage Symfonia Kadry i Płace

Symulacja systemu z procesorem MicroBlaze w środowisku ActiveHDL

Programowalne Układy Cyfrowe Laboratorium

Scalone układy programowalne FPGA.

Transkrypt:

Materiały pomocnicze do ćwiczeń laboratoryjnych Projektowanie układów cyfrowych przy użyciu PLD i pakietu programowego PALASM 4

- 2 - Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z:. metodami projektowania układów cyfrowych przy użyciu programowalnych struktur logicznych PAL i GAL; 2. oprogramowaniem wspomagającym proces projektowania na przykładzie pakietu programowego PALASM 4. Treść ćwiczenia W ramach ćwiczenia należy zaprojektować:. Wielowyjściowy układ kombinacyjny ( np. sumator, transkoder, itp.); 2. Sekwencyjny układ synchroniczny opisany wyrażeniami logicznymi (np. rejestr, licznik, fragment układu sterowania, itp.); 3. Sekwencyjny układ asynchroniczny opisany wyrażeniami logicznymi (j.w.); 4. Sekwencyjny układ synchroniczny zadany procedurą automatową (j.w.). Program ćwiczenia. Sformułowanie problemu projektowego; 2. Wybór odpowiedniego modułu PLD; 3. Sporządzenie pliku opisu logicznego nazwa.pds projektowanego układu wraz z segmentem symulacji zawierającym sprawdzenie wszystkich przejść w grafie automatu lub stanu wszystkich sygnałów wyjściowych po zadaniu każdego wektora testującego; 4. Kompilacja; 5. Symulacja działania układu; 6. Zaprogramowanie układu PLD na podstawie pliku nazwa.jed; 7. Weryfikacja działania zaprogramowanego układu na stanowisku laboratoryjnym. Sprawozdanie Sprawozdanie powinno zawierać:. Sformułowanie problemu projektowego; 2. Opis funkcjonalny (ew. graf przejść automatu); 3. Opis logiczny układu (kopia pliku nazwa.pds wraz z segmentem symulacji); 4. Wykresy czasowe powstałe w wyniku symulacji (kopia pliku nazwa.trf); 5. Wnioski.

- 3 - Opis użytkowania pakietu programowego PALASM Pakiet PALASM 4 jest przeznaczony do wspomagania programowania układów serii PAL, PLS oraz MACH. Podstawowe wymagania sprzętowe pakietu są następujące: - mikrokomputer IBM PC XT/AT lub kompatybilny; - co najmniej 52 KB RAM; - co najmniej MB wolnej przestrzeni na dysku twardym; - system operacyjny DOS 3. lub nowszy. W skład pakietu wchodzi ponad dwadzieścia programów umożliwiających przygotowanie źródłowego tekstu programu opisującego projektowane urządzenie, sprawdzenie poprawności zapisu programu, kompilację i symulację programu oraz przesłanie wyników kompilacji do programatora. Ze względu na to, że wśród tych programów znajduje się program PALASM, umożliwiający wywoływanie pozostalych programów bez ingerencji użytkownika, opis pakietu zostanie ograniczony tylko do tego programu. Na rys. jest przedstawiony przepływ informacji podczas pracy z pakietem. Znaczenie poszczególnych plików przedstawionych na rysunku jest opisane w dalszej części instrukcji. Przygotowanie pliku źródłowego.pds Kompilacja.jed Symulacja palasm.log.xpt.jdc PROGRAMATOR palasm.log.xpt.trf. Obsługa pakietu PALASM Po uruchomieniu programu PALASM na ekranie zostaje wyświetlone menu, którego opcje pozwalają na wykonanie wyżej wyszczególnionych operacji. Opis każdego z pól menu można uzyskać przez podświetlenie właściwego pola i naciśnięcie klawisza F. Pojawia się wówczas okienko zawierające żądany opis, ktore zamyka się naciśnięciem klawisza Esc. Informacje pomocnicze uzyskać można także przez wybranie jednego z pól opcji DOCUMENTATION. Szczególnie przydatna w codziennej pracy z programem jest opcja DOCUMENTATION/Language reference, powodująca wyświetlenie listy słów kluczowych języka opisu urządzenia.

- 4 - Przez podświetlenie wybranego słowa i naciśnięcie klawisza Enter uzyskuje się informacje dotyczące zastosowania, składni i sposobu użycia słowa oraz listę słów związanych z wyszczególnionym słowem. Przed przystąpieniem do pracy program PALASM należy odpowiednio skonfigurować. Służy do tego opcja FILE/Set up..., pozwalająca na ustalenie parametrów środowiska (Working environment), kompilacji (Compilation options), symulacji (Simulation options) i syntezy logicznej (Logic synthesis options). Bliższe informacje można uzyskać przez podświetlenie interesującej opcji i naciśnięcie F. Po skonfigurowaniu program jest gotowy do pracy. 2. Przygotowanie pliku źródłowego Jeśli w katalogu roboczym, określonym w opcji FILE/Change directory znajduje się zbiór, który należy poddać edycji, wybieramy opcję FILE/Retrieve existing design. Pojawia się wówczas okienko, w którym należy ustalić format pliku (naciśnięcie klawisza F2 spowoduje wyświetlenie możliwych formatów), oraz nazwę pliku. W celu akceptacji podanych parametrów naciskamy klawisz F. Następnie należy wybrać opcję EDIT/Text file, która powoduje wywołanie ustalonego w opcji FILE/Set up... edytora tekstów. (Menu edytora ED, dostarczanego z pakietem PALASM uzyskujemy przez naciśnięcie klawisza Esc.) Wyjście z edytora powoduje ponowne wywołanie menu pakietu PALASM. Jeżeli należy przygotować nowy zbiór, wybieramy opcję FILE/Begin new design. Pojawia się wówczas okienko, w którym określa się format i nazwę pliku. Po zaakceptowaniu podanych parametrów klawiszem F pojawia sie wzór części deklaracyjnej programu. Zawiera on następujące pola: Title - nazwa przygotowywanego projektu. Pattern - w polu tym najczęściej umieszcza się nazwę zbioru zawierającego program. Revision - w polu tym najczęściej umieszcza się numer wersji programu. Author, Company - dane dotyczące autora programu. Date - data założenia zbioru. Zawartość tego pola jest wypełniana automatycznie, lecz może zostać zmieniona. Chipname - nazwa układu. Program domyślnie wpisuje tu nazwę zbioru zawierającego tekst programu poprzedzoną podkreślnikiem. Device - typ układu, w którym będzie implementowany program. Ponizej mamy pola deklaracji pinów i węzłów układu. Wśród pinów muszą wystąpić deklaracje pinów zasilania (CC i GND). Wszystkie pola z wyjątkiem Number i Name mają rozwijalne menu (ukazujące się po naciśnięciu klawisza F2), zawierające listę możliwych zawartości pola. Po wypełnieniu wszystkich pól naciskamy klawisz F, co powoduje zapisanie przygotowanego zbioru w katalogu roboczym i przejście do edytora, gdzie dokonujemy uzupełnienia zbioru. Po wyjściu z edytora wywoływane jest menu. 3. Kompilacja i symulacja programu Po przygotowaniu zbioru źródłowego należy go skompilować oraz zasymulować działanie układu. Służy do tego opcja RUN, której wybór powoduje rozwinięcie dodatkowego menu, zawierającego opcje Compilation, Simulation, Both oraz Other operations.

- 5 - Wybór opcji RUN/Compilation spowoduje skompilowanie pliku określonego w opcji FILE/Retrieve existing design bez symulacji działania ukladu. Jeśli opcja FILE/Set up.../working environment/provide compile options on each run została ustawiona na Y (tak), wówczas przed kompilacją zostanie wyświetlone okienko z opcjami kompilacji. Po ustawieniu włłaściwych opcji zamyka się okienko klawiszem F. Jeśli kompilujemy zbiór nazwa.pds, to po bezbłędnej kompilacji w katalogu roboczym pojawią się zbiory nazwa.jed (zbiór służący do zaprogramowania układu) oraz nazwa.xpt (zbiór zawierający mapę bezpieczników układu). Pojawia się też zbiór zawierający protokół z przebiegu kompilacji, którego nazwa określana jest w opcji FILE/Set up.../compilation options/log file name (domyślnie jest to zbiór palasm.log). Jeśli w czasie kompilacji wystąpiły błędy lub ostrzeżenia, to bezpośrednio po zakończeniu kompilacji można uzyskać ich opis przez naciśnięcie klawisza F3. Po poprawieniu błędów w sposób opisany powyżej, kompilację należy ponowić. Wybór opcji RUN/Simulation spowoduje symulację układu, opisanego w pliku określonym w opcji FILE/Retrieve existing design. Jeśli opcja FILE/Set up.../working environment/provide simulation options on each run została ustawiona na Y (tak), wówczas przed symulacją zostanie wyświetlone okienko z opcją symulacji (jest to pytanie, czy używać osobnego pliku z poleceniami dla symulatora). Jeśli wcześniej nie została wykonana kompilacja, zostanie ona wykonana teraz, lecz nie zostaną utworzone zbiory nazwa.jed oraz nazwa.xpt. Po bezbłędnej symulacji w katalogu roboczym pojawią się zbiory nazwa.trf (zbiór zawierający wyniki symulacji dla sygnałów określonych instrukcją TRACE), nazwa.hst (zbiór zawierający wyniki symulacji dla wszystkich sygnałów zdefiniowanych w układzie), oraz, podobnie jak dla kompilacji, zbiór zawierający protokól symulacji (o tej samej nazwie, jak dla kompilacji). Ponadto jeśli istnieje zbiór nazwa.jed, to jest tworzony zbiór nazwa.jdc, zawierający kopię zbioru nazwa.jed oraz wygenerowane wektory testujące. Przesłanie tego zbioru do programatora umożliwia przetestowanie poprawności zaprogramowania układu. Jeśli w czasie symulacji wystąpiły błędy lub ostrzeżenia, to można je zlokalizować tak, jak w przypadku kompilacji. Wybór opcji RUN/Both spowoduje jednoczesne wykonanie kompilacji i symulacji wybranego zbioru. Wybór opcji RUN/Other operations spowoduje wyświetlenie kolejnego okienka z kilkoma opcjami, z których na uwagę zasługuje opcja Disassemble from.../jedec. Powoduje ona utworzenie zbioru nazwa.pl2, zawierającego równania, jakie dla każdego wyjścia zostały zaimplementowane w układzie (ze względu na strukturę większości układów PLD są to sumy iloczynów). 4. Przegląd wyników kompilacji i symulacji W celu zapoznania się z wynikami kompilacji i symulacji nie trzeba wychodzić z programu PALASM (oczywiście wyniki te można obejrzeć za pomocą dowolnego edytora tekstów, gdyż wszystkie są zapisywane w plikach tekstowych). Wyniki te można obejrzeć za pomocą opcji IEW. Po wybraniu tej opcji rozwija się menu, którego pola mają następujące znaczenie: Execution log file Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości protokołu kompilacji lub symulacji, którego nazwa określona jest w opcji FILE/Set up.../compilation options/log file name.

- 6 - Design file Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru źródłowego nazwa.pds. Reports/Fuse map Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.xpt. Jedec data/fuse data only Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.jed. Jedec data/ector + fuse data Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.jdc. Simulation data/history Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.hst. Simulation data/trace Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.trf. Waveform display/history Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.hst w postaci graficznej (przebiegi czasowe). Waveform display/trace Wybranie tej opcji powoduje wyprowadzenie na ekran zawartości zbioru nazwa.trc w postaci graficznej (przebiegi czasowe). Current disassembled file Wybranie tej opcji powoduje wyświetlenie listy plików o formacie *.pl2, a po wybraniu jednego z nich wyprowadzenie jego zawartości na ekran. Pinout Wybranie tej opcji powoduje wyświetlenie rysunku układu z zaznaczeniem nazw pinów zadeklarowanych w zbiorze źródłowym. Piny niewykorzystane oznaczane są jako NC. 5. Przesłanie danych do programatora Po bezbłędnym skompilowaniu programu otrzymany zbiór nazwa.jed lub nazwa.jdc można przesłać do programatora z poziomu programu PALASM. Służy do tego opcja DOWNLOAD/Go. Program obsługi złącza RS-232 określony jest w opcji FILE/Set up.../working environment/rs-232 communication program:. Domyślnie jest to program PC2.EXE, dostarczany wraz z pakietem PALASM. 6. Uzyskiwanie informacji pomocniczych W celu uzyskania informacji pomocniczych należy wybrać jedną z opcji pola DOCUMENTATION menu głównego. Opcja DOCUMENTATION/Indeks of topics powoduje wyświetlenie spisu rozdziałów dotyczących "technicznej" strony pracy z programem (wymagania sprzętowe, wykorzystanie pamięci rozszerzonej, instalacja programu itp.). Po wybraniu interesującego nas rozdziału jego zawartość zostanie wyświetlona na ekranie.

- 7 - Opcja DOCUMENTATION/Language reference została opisana w punkcie. Opcja DOCUMENTATION/Help on errors umożliwia lokalizację błędów i ostrzeżeń kompilacji lub symulacji. Wybranie tej opcji powoduje analizę protokołu kompilacji lub symulacji, znajdującego się w katalogu roboczym, zaznaczenie miejsca wystąpienia pierwszego błędu lub ostrzeżenia i wyświetlenie jego opisu. Dzięki opcjom Next message oraz Prev message można w łatwy sposób przejrzeć wszystkie błędy. Uwaga: Często zdarza się, że tylko pierwsza informacja o błędzie jest wiarygodna. Pozostałe mogą być wynikiem wystąpienia tego właśnie błędu. Dlatego po każdorazowym poprawieniu pierwszego błędu wskazane jest ponowne wykonanie kompilacji zbioru źródłowego. 7. Postać programu w języku PALASM Program w języku PALASM, opisujący projektowane urządzenie, składa się z trzech podstawowych części: - części deklaracyjnej, - części opisującej właściwości funkcjonalne urządzenia, - części z rozkazami dla symulatora. Część deklaracyjna omówiona została w punkcie Przygotowanie pliku źródlowego. Część opisująca właściwości funkcjonalne urządzenia może przyjmować postać równań logicznych lub procedur automatowych. Równania logiczne Segment zawierający równania logiczne rozpoczyna się od słowa kluczowego EUATIONS, po którym następuje lista równań. Oto ogólna postać segmentu: EUATIONS pin wyjściowy = wyrażenie... pin wyjściowy = wyrażenie W wyrażeniach możemy użyć zestawu zdefiniowanych sygnałów wejściowych układu, rozdzielonych znakami * (AND), + (OR), :+: (XOR) lub :*: (XNOR). Negację sygnału uzyskujemy przez poprzedzenie jego nazwy znakiem /. W celu określenia kolejności realizacji funkcji logicznych można stosować nawiasy okrągłe. EUATIONS WY = WE * WE3 WY2 = /(WE2 + /WE3) W części deklaracyjnej powinny być zdefiniowane sygnały wejściowe WE, WE2 i WE3, oraz sygnały wyjściowe WY i WY2. Wówczas sygnał WY jest iloczynem sygnałów WE i WE3, a sygnał WY2 jest negacją sumy sygnału WE2 i zanegowanego sygnału WE3.

- 8 - Za pomocą prostych równań logicznych można opisać urządzenia o małym stopniu komplikacji. Do opisu bardziej złożonych urządzeń możemy posłużyć się instrukcjami warunkowymi IF-THEN-ELSE oraz CASE. IF-THEN-ELSE: Instrukcja IF-THEN-ELSE umożliwia wykonanie pewnych czynności w zależności od spełnienia podanego warunku. Składnia instrukcji jest następująca: IF (warunek) THEN BEGIN równania ELSE BEGIN równania2 W zależności od spełnienia warunku wykonane zostaną równania (gdy warunek jest spełniony) lub równania2 (gdy nie jest spełniony). IF (A, B = #b) THEN BEGIN WY = C + D ELSE BEGIN WY = C * /D Jeśli sygnały A i B będą równe, wyjściu WY zostanie przyporządkowana suma sygnałów C oraz D. W przeciwnym przypadku wyjściu WY zostanie przyporządkowany iloczyn sygnału C i negacji sygnału D. CASE: Instrukcja CASE powoduje wykonanie jednej z grup równań w zależności od stanu sygnałów określonych jako warunkujące. Składnia instrukcji jest następująca: CASE (sygnały warunkujące) BEGIN wartość : BEGIN wyrażenie wartość2 : BEGIN wyrażenie2... OTHERWISE : BEGIN wyrażenien

- 9 - W zależności od tego, jaką wartość przyjmą sygnały warunkujące, zostanie wykonane wyrażenie wyszczególnione po tej wartości. Jeśli sygnały warunkujące przyjmą wartość nie występującą na liście wartości, wówczas wykonane zostanie wyrażenie występujące po słowie OTHERWISE. CASE (A, D) BEGIN : BEGIN C = B * E 3 : BEGIN C = B + /E OTHERWISE : BEGIN C = Jeśli A = i D =, wówczas linia C przyjmie wartość równą iloczynowi sygnałów B i E. Jeśli A = i D =, wówczas linia C przyjmie wartość równą sumie sygnału B i negacji sygnału E. Jeśli sygnały A i D będą miały taką samą wartość, wówczas linia C zostanie wyzerowana. Przy określaniu polaryzacji sygnałów wyjściowych obowiązuje następująca zasada: Jeśli nazwa wyjścia występująca w segmencie deklaracji i po lewej stronie równania ma tę samą polaryzację, to wyjście ma polaryzację dodatnią. Jeżeli natomiast nazwa użyta po lewej stronie równania jest zanegowana względem nazwy użytej w segmencie deklaracji, to wyjście ma polaryzację ujemną. WY = WE * WE2 /WY2 = WE :+: WE2 Jeśli w segmencie deklaracji zadeklarowano wyjścia WY i WY2, to wówczas wyjście WY będzie miało polaryzację dodatnią, a wyjście WY2 polaryzację ujemną. Stosując równania logiczne można też wpływać na stany linii sterujących układu (wejścia zegarowe rejestrów, sterowanie wyjściami trójstanowymi itp.). Dokonuje się tego poprzez dopisanie po nazwie pinu lub węzła odpowiedniego przyrostka, uzyskując w ten sposób tzw. równania funkcyjne. Oto najczęściej używane przyrostki:.clkf - linia zegarowa przerzutnika związanego z określonym pinem..prld - linia zezwolenia na przeładowanie przerzutnika..rstf - linia zerowania przerzutnika..setf - linia ustawiania przerzutnika..trst - linia sterowania wyjściem trójstanowym (output enable).

- - Przykłady: WY.CLKF = WE * WE2 Wejście zegarowe przerzutnika związanego z wyjściem WY jest iloczynem wejść WE i WE2. WY.RSTF = WE * /WE2 Wejście zerujące przerzutnika związanego z wyjściem WY jest iloczynem wejścia WE i negacji WE2. WY.TRST = WE Wejście output enable wyjścia WY jest sygnałem wejściowym WE. Procedury automatowe Segment zawierający procedury automatowe rozpoczyna się od słowa kluczowego STATE, po którym następuje określenie typu automatu (MOORE MACHINE lub MEALY MACHINE). Po określeniu typu automatu można umieścić rozkaz: START UP := POWER UP -> stan + warunek -> stan2 Rozkaz ten powoduje, że po włączeniu zasilania automat znajdzie się w stanie stan (stan jest nazwą stanu), a w wypadku zaistnienia podanego warunku - w stanie stan2. START UP := POWER UP -> WAIT + RESET -> WAIT W tym przypadku po włączeniu zasilania lub po aktywacji linii RESET automat znajdzie się w stanie WAIT. Kolejną część stanowią warunki przejść pomiędzy stanami. Mają one następującą postać: stan bieżący := warunek -> stan + warunek2 -> stan2... +-> stan n Jeśli automat znajdzie się w stanie stan bieżący i zajdzie warunek, to w następnym kroku automat przejdzie do stanu stan. Jeśli zajdzie warunek2, to w następnym kroku automat znajdzie się w stanie stan2, itd. Jeśli natomiast żaden z warunków nie zostanie spełniony, automat znajdzie się w stanie stan n. Warunki powinny być skonstuowane w taki sposób, aby zawsze tylko jeden z nich był spełniony. Warunkiem może być tylko jeden sygnał. Jeśli warunkiem ma być wyrażenie logiczne, to należy je zdefiniować w części CONDITIONS (omówionej dalej), a tutaj użyć jego nazwy. STAN := COND -> STAN2 + COND2 -> STAN3 +-> STAN

- - Jeśli automat znajduje się w stanie STAN, to po spełnieniu warunku COND przejdzie do stanu STAN2, po spełnieniu warunku COND2 przejdzie do stanu STAN3, a gdy żaden z warunków nie jest spełniony, pozostanie w stanie STAN. Po określeniu warunków przejść pomiędzy stanami określamy równania wyjściowe dla każdego stanu. W automacie MOORE'A stany wyjść zależą tylko od bieżącego stanu automatu. Składnia równań wyjściowych jest następująca: stan.outf = wyrażenie wyjściowe STAN.OUTF = WY * WY2 STAN2.OUTF = /WY * WY2 STAN3.OUTF = /WY * /WY2 W stanie STAN wyjścia WY i WY2 będą aktywne. W stanie STAN2 wyjście WY będzie nieaktywne, a wyjście WY2 - aktywne. W stanie STAN3 oba wyjścia będą nieaktywne. W automacie MEALY'EGO stany wyjść zależą jednocześnie od stanu automatu i stanu wejść. Składnia równań wyjściowych jest tutaj następująca: stan.outf = warunek -> wyrażenie wyjściowe + warunek2 -> wyrażenie wyjściowe2... +-> wyrażenie wyjściowen STAN.OUTF = COND -> WY * WY2 + COND2 -> /WY * WY2 +-> /WY * /WY2 STAN2.OUTF =-> WY * /WY2 W stanie STAN przy spełnieniu warunku COND oba wyjścia są aktywne, przy prawdziwości warunku COND2 wyjście WY jest nieaktywne, a wyjście WY2 aktywne, natomiast przy niespełnieniu żadnego warunku oba wyjścia są nieaktywne. W stanie STAN2 wyjście WY jest aktywne, a wyjście WY2 nieaktywne. Kolejną częścią (opcjonalną) jest przyporządkowanie każdemu stanowi numeru. Projektując urządzenie w formie automatu możemy w segmencie deklaracji umieścić deklaracje pinów stanu automatu. Na pinach tych w czasie pracy układu pojawia się numer bieżącego stanu automatu. Przyporządkowanie stanom numerów dokonywane jest za pomocą deklaracji: stan = bity stanu Przyklad: STAN = /ST2 * /ST * /ST STAN2 = /ST2 * ST * /ST

- 2 - Stan STAN będzie miał numer (b), a stan STAN2 numer 2 (b). Stanom nie wyszczególnionym w powyższej deklaracji zostaną automatycznie przyporządkowane unikalne numery. Ostatnią częścią segmentu jest wyszczególnienie użytych wcześniej warunków. Część ta zaczyna się od słowa CONDITIONS, po którym następuje lista warunków: CONDITIONS war = wyrażenie war2 = wyrażenie2... warn = wyrażenien CONDITIONS COND = WE * /WE2 * /WE3 COND2 = /WE * WE2 * /WE3 Użycie w poprzednich częściach nazwy warunku powoduje umieszczenie w miejscu jej wystąpienia odpowiadającego jej wyrażenia. Część programu zawierająca rozkazy dla symulatora może być umieszczona na końcu programu lub w oddzielnym pliku. Tutaj zostanie omówiony tylko pierwszy przypadek. Segment symulacji rozpoczyna się od słowa SIMULATION. Pierwszą instrukcją jest TRACE_ON. Instrukcja ta określa, które sygnały mają być śledzone podczas przeglądania wyników symulacji. TRACE ON CLK WE WE2 WE3 WY WY2 ST ST2 ST3 Instrukcja ta ustawia śledzenie wyszczególnionych sygnałów. W czasie symulacji można sterować sygnałami wejściowymi i sprawdzać stany sygnałów wyjściowych. Dokonuje się tego za pomocą zestawu kilkunastu instrukcji. Oto kilka najczęściej wykorzystywanych: SETF - ustawia podane stany sygnałów wejściowych. SETF WE /WE2 WE3 Polecenie ustawia linie wejściowe WE i WE3 w stan aktywny, a linię WE2 w stan nieaktywny. CLOCKF - powoduje wygenerowanie na podanej linii impulsu prostokątnego. CLOCKF CLK Polecenie powoduje wygenerowanie na linii CLK impulsu prostokątnego (sekwencji binarnej ).

- 3 - CHECK - sprawdza, czy wyszczególnione w poleceniu sygnały wyjściowe przyjęły przewidywane stany. CHECK WY WY2 /WY3 ^WY4 %WY5 Polecenie sprawdza, czy linie WY i WY2 są w stanie aktywnym, linia WY3 jest w stanie nieaktywnym (prefiks /) oraz czy linia WY4 jest w stanie wysokiej impedancji (prefiks ^). Stan linii WY5 może być dowolny (prefiks %). Jeśli stany linii nie zgadzają się z przewidywanymi, to na odpowiadających im przebiegach czasowych pojawia się znak zapytania (?). PRELOAD - ustawia wyjścia rejestrów niezależnie od stanów wejść. PRELOAD STAN WY /WY2 Polecenie wprowadza automat w stan STAN (ustawiając odpowiednio bity stanu) oraz ustawia wyjście WY w stan aktywny, a wyjście WY2 w stan nieaktywny. TRACE OFF - kończy segment symulacji. W segmencie symulacji można też używać konstrukcji wysokiego poziomu, na przykład instrukcji pętli FOR-TO-DO. Składnia tej instrukcji jest następująca: FOR zmienna := start TO koniec DO BEGIN instrukcje Instrukcja ta powoduje powtórzenie sekwencji instrukcji dla wartości zmiennej sterującej pętli od wartości start do wartości koniec z krokiem. Zmienna sterująca powinna mieć unikalną nazwę i nie może być użyta w innym miejscu programu. FOR x := TO DO BEGIN CLOCKF CLK Sekwencja powyższa powoduje dziesięciokrotne wygenerowanie impulsu prostokątnego na linii CLK.

- 4 - Przykłady plików projektowych ;PALASM Design Description ;---------------------------------- Declaration Segment ------------ TITLE TUTOR.PDS PATTERN A REISION. AUTHOR J.ENGINEER COMPANY ADANCED MICRO DEICES DATE //9 CHIP DECODER PAL6L8 ;---------------------------------- PIN Declarations --------------- PIN 2 X COMBINATORIAL ; INPUT PIN 3 Y COMBINATORIAL ; INPUT PIN 4 Z COMBINATORIAL ; INPUT PIN GND ; INPUT PIN 2 A COMBINATORIAL ; OUTPUT PIN 3 B COMBINATORIAL ; OUTPUT PIN 4 C COMBINATORIAL ; OUTPUT PIN 5 D COMBINATORIAL ; OUTPUT PIN 6 E COMBINATORIAL ; OUTPUT PIN 7 F COMBINATORIAL ; OUTPUT PIN 8 G COMBINATORIAL ; OUTPUT PIN 9 H COMBINATORIAL ; OUTPUT PIN 2 CC ; INPUT ;----------------------------------- Boolean Equation Segment ------ EUATIONS /A = /X * /Y * /Z /B = /X * /Y * Z /C = /X * Y * /Z /D = /X * Y * Z /E = X * /Y * /Z /F = X * /Y * Z /G = X * Y * /Z /H = X * Y * Z ;----------------------------------- Simulation Segment ------------ SIMULATION TRACE_ON X Y Z A B C D E F G H SETF /X /Y /Z CHECK /A B C D E F G H SETF /X /Y Z CHECK A /B /C D E F G H SETF /X Y /Z CHECK A B /C D E F G H SETF /X Y Z CHECK A B C /D E F G H SETF X /Y /Z CHECK A B C D /E F G H SETF X /Y Z CHECK A B C D E /F G H SETF X Y /Z CHECK A B C D E F /G H SETF X Y Z CHECK A B C D E F G /H TRACE_OFF

- 5 - ;PALASM Design Description ;---------------------------------- Declaration Segment ------------ TITLE TUTOR2.PDS PATTERN A REISION 2. AUTHOR J.ENGINEER COMPANY ADANCED MICRO DEICES DATE //9 CHIP DECODER PAL6R8 ;---------------------------------- PIN Declarations --------------- PIN CLK COMBINATORIAL ; INPUT PIN 2 X COMBINATORIAL ; INPUT PIN 3 Y COMBINATORIAL ; INPUT PIN 4 Z COMBINATORIAL ; INPUT PIN GND ; INPUT PIN OE COMBINATORIAL ; INPUT PIN 2 A COMBINATORIAL ; OUTPUT PIN 3 B COMBINATORIAL ; OUTPUT PIN 4 C COMBINATORIAL ; OUTPUT PIN 5 D COMBINATORIAL ; OUTPUT PIN 6 E COMBINATORIAL ; OUTPUT PIN 7 F COMBINATORIAL ; OUTPUT PIN 8 G COMBINATORIAL ; OUTPUT PIN 9 H COMBINATORIAL ; OUTPUT PIN 2 CC ; INPUT ;----------------------------------- Boolean Equation Segment ------ EUATIONS /A = /X * /Y * /Z /B = /X * /Y * Z /C = /X * Y * /Z /D = /X * Y * Z /E = X * /Y * /Z /F = X * /Y * Z /G = X * Y * /Z /H = X * Y * Z ;----------------------------------- Simulation Segment ------------ SIMULATION TRACE_ON X Y Z A B C D E F G H SETF /OE SETF /X /Y /Z CLOCKF CLK CHECK /A B C D E F G H SETF /X /Y Z CLOCKF CLK CHECK A /B /C D E F G H SETF /X Y /Z CLOCKF CLK CHECK A B /C D E F G H SETF /X Y Z CLOCKF CLK CHECK A B C /D E F G H ; ---- itd. --- TRACE_OFF

- 6 - ;PALASM Design Description ;---------------------------------- Declaration Segment ------------ TITLE RMOORE.PDS PATTERN A REISION. AUTHOR FRANK J. LACOMBE COMPANY KNOWLEDGE TREE SYSTEMS for AMD DATE 3//9 CHIP REG_MOORE PAL22 ;---------------------------------- PIN Declarations --------------- PIN CLOCK COMBINATORIAL ; INPUT PIN 2 INA COMBINATORIAL ; INPUT PIN 2 GND PIN 4 OUT REGISTERED ; OUTPUT PIN 5 OUT2 REGISTERED ; OUTPUT PIN 6 BITA REGISTERED ; OUTPUT PIN 7 BITB REGISTERED ; OUTPUT PIN 24 CC ;-----------------------------------State Segment ------------------ STATE MOORE_MACHINE START_UP := POWER_UP -> STATE STATE = /BITA * /BITB STATE = /BITA * BITB STATE2 = BITA * /BITB STATE3 = BITA * BITB ;TRANSITION EUATIONS------------------ STATE := GO -> STATE +-> STATE2 STATE := GO -> STATE2 +-> STATE3 STATE2 := GO -> STATE3 +-> STATE STATE3 := GO -> STATE +-> STATE ;OUTPUT EUATIONS---------------------- STATE.OUTF = /OUT * /OUT2 STATE.OUTF = /OUT * OUT2 STATE2.OUTF = OUT * /OUT2 STATE3.OUTF = OUT * OUT2 CONDITIONS GO = INA ;----------------------------------- Simulation Segment ------------ SIMULATION TRACE_ON CLK INA BITA BITB OUT OUT2 SETF INA SETF /INA TRACE_OFF ;NOTE NEW START-UP STATE

- 7 - ;PALASM Design Description ;---------------------------------- Declaration Segment ------------ TITLE RMEALY.PDS PATTERN A REISION. AUTHOR FRANK J. LACOMBE COMPANY KNOWLEDGE TREE SYSTEMS for AMD DATE 3//9 CHIP REG_MEALY PAL22 ;---------------------------------- PIN Declarations --------------- PIN CLOCK COMBINATORIAL ; INPUT PIN 2 INA COMBINATORIAL ; INPUT PIN 2 GND PIN 4 OUT REGISTERED ; OUTPUT PIN 5 OUT2 REGISTERED ; OUTPUT PIN 6 BITA REGISTERED ; OUTPUT PIN 7 BITB REGISTERED ; OUTPUT PIN 24 CC ;-----------------------------------State Segment ------------------ STATE MEALY_MACHINE START_UP := POWER_UP -> STATE ;NOTE NEW START-UP STATE START_UP.OUTF :=CC->OUT * OUT2 STATE = /BITA * /BITB STATE = /BITA * BITB STATE2 = BITA * /BITB STATE3 = BITA * BITB ;TRANSITION EUATIONS------------------ STATE := GO -> STATE +-> STATE2 STATE := GO -> STATE2 +-> STATE3 STATE2 := GO -> STATE3 +-> STATE STATE3 := GO -> STATE +-> STATE ;OUTPUT EUATIONS---------------------- STATE.OUTF = GO -> /OUT * /OUT2 +-> /OUT * OUT2 STATE.OUTF = GO -> /OUT * OUT2 +-> OUT * /OUT2 STATE2.OUTF = GO -> OUT * /OUT2 +-> OUT * OUT2 STATE3.OUTF = GO -> OUT * OUT2 +-> /OUT * /OUT2 CONDITIONS GO = INA ;----------------------------------- Simulation Segment ------------ SIMULATION TRACE_ON CLK INA BITA BITB OUT OUT2 SETF INA SETF /INA TRACE_OFF

- 8 - Schemat blokowy układu PALCE22 Schemat logiczny makrokomórki Rozkład wyprowadzeń układu PALCE22

- 9 - Schemat logiczny układu PALCE22 PALCE22 and PALCE22Z Families CLK/I (2) 3 4 7 8 2 5 6 9 2 23 24 27 28 3 32 35 36 39 4 43 AR 24 (28) CC 9 D AR SP 23 I/O 9 (27) 2 D AR SP 22 I/O 8 (26) I 2 (3) 2 33 D AR SP 2 I/O 7 (25) I 2 3 (4) 34 48 D AR SP 2 I/O 6 (24) I 3 4 ( 5 ) 49 D AR SP 9 I/O 5 (23) I 4 5 ( 6 ) 65 66 D AR SP 8 I/O 4 (2) I 5 6 ( 7 ) 82 83 97 D AR SP 7 I/O 3 (2) I 6 7 ( 9 ) 98 D AR SP 6 I/O 2 (9) I 7 8 ( ) 2 D AR SP 5 I/O (8) I 8 9 ( ) 22 3 D AR SP 4 I/O (7) I 9 ( 2 ) 3 SP I G N D ( 3 ) 2 ( 4 ) 3 4 7 8 2 5 6 9 2 23 24 27 28 3 32 35 36 39 4 43 3 I (6) 6564E-6

- 2 - Schemat logiczny układu PAL6L8 I ( 24 ) 6L8-5 ( 4) (-4) 3 4 7 8 2 5 6 9 2 23 24 27 28 3 2 (23) CC I 2 ( 25 ) 7 8 9 O 8 (22) GND (2) I 2 3 ( 26 ) 5 6 8 I/O 7 (2) GND (9) I 3 4 ( 27 ) 2 3 2 4 7 I/O 6 (8) GND (7) I 4 5 ( 28 ) 3 3 2 6 I/O 5 (6) GND (5) C C ( ) I 5 6 ( 2 ) 3 9 4 5 I/O 4 (4) GND (3) 4 I/O 3 4 7 (2) I 6 7 ( 3 ) 4 8 GND () 5 5 3 I/O 2 () I 7 8 ( 4 ) 5 6 GND (9) 6 3 2 O (8) I 8 9 ( 5 ) G N D ( 6 ) 3 4 7 8 2 5 6 9 2 23 24 27 28 3 I 9 (7) 6492D 8

- 2 - Schemat logiczny układu PAL6R8 6R8-5 ( 4) (-4) C L K 3 4 7 8 2 5 6 9 2 23 24 27 28 3 2 CC D 9 O 8 7 I 2 8 D 8 O 7 5 I 2 3 6 D 7 O 6 2 3 I 3 4 2 4 D 6 O 5 3 I 4 5 3 2 D 5 O 4 3 9 I 5 6 4 D 4 O 3 4 7 I 6 7 4 8 D 3 O 2 5 5 I 7 8 5 6 D 2 O 6 3 I 8 9 OE G N D 3 4 7 8 2 5 6 9 2 23 24 27 28 3

- 22 - Schemat logiczny układu PAL6R6 C L K 6R6-5 ( 4) (-4) 3 4 7 8 2 5 6 9 2 23 24 27 28 3 2 CC 9 I/O 8 7 I 2 8 D 8 O 7 5 I 2 3 6 D 7 O 6 2 3 I 3 4 2 4 D 6 O 5 3 I 4 5 3 2 D 5 O 4 3 9 I 5 6 4 D 4 O 3 4 7 I 6 7 4 8 D 3 O 2 5 5 I 7 8 5 6 2 I/O 6 3 I 8 9 OE G N D 3 4 7 8 2 5 6 9 2 23 24 27 28 3

- 23 - Schemat logiczny układu PALCE2RA Makrokomórka układu PALCE2RA