LABORATORIUM TECHNIKI CYFROWEJ Sterowanie modelem dwigu za pomoc układów programowalnych CPLD Opracowali: dr in. Krystyna Noga mgr in. Marcin Radwaski Akademia Morska Wydział Elektryczny Katedra Automatyki Okrtowej Gdynia, marzec 2008 wersja poprawiona i uzupełniona
1. Wstp Niniejsza instrukcja laboratoryjna przeznaczona jest dla studentów kierunku Elektrotechnika specjalnoci Komputerowe Systemy Sterowania i Elektroautomatyka Okrtowa. Celem wiczenia jest zapoznanie studentów z moliwociami sterowania fizycznym modelem obiektu za pomoc cyfrowych układów logicznych. Obiektem sterowanym jest model dwigu wykonany z zabawki dla dzieci. Model dwigu moe by sterowany nastpujcymi układami cyfrowymi: standardowymi układami logicznymi wykonanymi w technologii TTL, układami wykonanymi w technologii CMOS zasilanymi napiciem 5V, prostymi układami programowalnymi (SPLD) wykonanymi w technologii zgodnej ze standardem TTL, złoonymi układami programowalnymi (CPLD) zgodnymi ze standardem TTL, innymi układami sterujcymi zgodnymi z technologi TTL. Układ sterowania dwigiem został wykonany tak, aby obcienie wyj układów logicznych było minimalne i nie zakłócało pracy układów cyfrowych. W przypadku wykorzystania układów CPLD zalecane jest wykorzystanie edytora graficznego [1] lub uycie jzyka opisu sprztu VHDL, co umoliwia sterowanie modelem przy pomocy sygnałów wejciowych wystpujcych w danej chwili czasu (implementowany układ sterujcy jest układem kombinacyjnym). Moliwe jest równie wykonanie kolejno kilku rónych czynnoci, wówczas układ sterujcy jest układem sekwencyjnym. Podobny sposób sterowania moe by zrealizowany za pomoc cyfrowych układów logicznych wykonanych w rónych technologiach. Zadaniem studenta jest opracowanie algorytmu pracy modelu opisanego za pomoc funkcji logicznych, synteza logiczna projektu i implementacja tego algorytmu w układach cyfrowych wykonanych w wybranej technologii. Ocena poprawnoci wykonania projektu jest dokonywana na podstawie obserwacji pracy modelu dwigu. 2. Stanowisko laboratoryjne 2.1. Elementy składowe stanowiska Kompletne stanowisko laboratoryjne pokazane jest na rysunku 2.1. Sterowanie modelem jest zrealizowane za pomoc układu CPLD EPM7128SLC84-15 firmy Altera [2] lub XC95108 firmy Xilinx [3] umieszczonego w zestawie uruchomieniowym ZL1pld [4], który jest połczony ze sterownikiem modelu umieszczonym w podstawie dwigu. Programowanie układu EPM7128 realizowane jest za pomoc komputera z zainstalowanym oprogramowaniem Altera MAX+plus II Baseline Student poprzez programator ByteBlasterMV [5] dołczony do portu równoległego komputera. W przypadku wykorzystania układu XC95108 naley uy oprogramowania Xilinx WebPack [6] i programatora ZL11PRG-M [7]. Skrócony opis zasad pracy w rodowisku MAX+plus II Baseline, układu CPLD EPM7128 i zestawu uruchomieniowego zawarty jest w instrukcji laboratoryjnej rodowisko MAX+plus II Baseline Student oraz jzyk programowania sprztu VHDL [8], natomiast szeroki opis oprogramowania i zestawu uruchomieniowego zawarty jest w ksice P. Zbysiskiego i J. Pasierbiskiego Układy programowalne pierwsze kroki wyd. BTC, 2002 [9]. Ponadto dokładne omówienie jzyka VHDL znajduje si w literaturze, np. [10, 11, 12]. Na stanowisku laboratoryjnym dostpne s równie nastpujce urzdzenia: zasilacz prdu stałego ZT-980-2M, generator funkcji G-432, czstociomierz cyfrowy PFL-30. 1
Zasilacz prdu stałego Generator funkcji Czstociomierz cyfrowy Sterownik modelu dwigu Programator ByteBlasterMV lub ZL11PRG-M Zestaw uruchomieniowy z układem CPLD Rys. 2.1. Kompletne stanowisko laboratoryjne 2.2. Zasilanie układu Do zasilania zestawu uruchomieniowego z układem PLD i modelu dwigu słuy zasilacz ZT-980-2M pokazany na rys. 2.2. Rys. 2.2. Zasilacz ZT-980-2M W celu uzyskania prawidłowej pracy zestawu laboratoryjnego naley ustawi nastpujce wartoci parametrów pracy zasilacza (rys. 2.3): napicie zasilania: 5V, ograniczenie poboru prdu: 1,5A w przypadku uruchamiania tylko jednego silnika w danej chwili czasu, lub 2A w przypadku uruchamiania jednoczenie wicej ni jednego silnika. Przy prawidłowych ustawieniach pobór prdu przez zestaw z układem CPLD nie moe by wyszy ni 200mA. Zasilacz połczony jest z modelem poprzez kabel z wtykami radiowymi do zasilacza, przy czym wtyk czerwony naley umieci w gniedzie oznaczonym symbolem +, a wtyk biały w gniedzie zasilacza i wtykiem BNC do gniazda w podstawie dwigu. 2
Główny regulator napicia naley ustawi na 4V. Precyzyjny regulator napicia naley ustawi na 1V. Główny ogranicznik prdu naley ustawi na 1,5A. Precyzyjny ogranicznik prdu naley ustawi zalenie od potrzeb. Rys. 2.3. Prawidłowe wartoci nastaw zasilacza ZT-980-2M Uwaga: Przekroczenie podanych wartoci parametrów grozi trwałym uszkodzeniem układu CPLD. Jeeli podczas programowania układu CPLD wystpuj błdy naley sprawdzi nastawy napicia zasilacza. Zestaw uruchomieniowy z układem CPLD jest zasilany poprzez kabel łczcy ten zestaw ze sterownikiem dwigu, zatem gniazdo zasilania znajdujce si na płytce z układem CPLD w trakcie normalnej pracy zestawu musi pozosta nieuywane. 2.3. Model dwigu Prosty model dwigu został wykonany na bazie zabawki dla dzieci i przystosowany do sterowania za pomoc sygnałów logicznych. Model składa si z podstawy w której umieszczono sterownik, obrotowej wiey i wysignika, po którym porusza si wózek z wycigark haka. Do poruszania elementami modelu zastosowano trzy silniki prdu stałego: silnik nr 1 zapewniajcy obrót wiey w podstawie, silnik nr 2 napdzajcy wycigark haka, silnik nr 3 zapewniajcy ruch wózka po wysigniku. Kady silnik jest sterowany dwoma sygnałami logicznymi: sygnał załczajcy zasilanie silnika Zx, gdzie x to numer silnika, sygnał ustalajcy kierunek ruchu, oznaczony symbolem Kx, gdzie x to numer silnika. Z budowy modelu wynika, e do pełnego sterowania konieczne jest sze sygnałów logicznych. Wszystkie te sygnały zostały wyprowadzone równolegle na 9-pinowe gniazdo, przez co zapewnione jest pełne sterowanie kadym elementem ruchomym dwigu z osobna. Sygnały kierunku ruchu i załczenia silników s od siebie całkowicie niezalene, moliwa jest np. zmiana kierunku ruchu silnika bez koniecznoci wyłczenia zasilania tego silnika. Konstrukcja sterownika zapobiega wszelkim moliwym zwarciom w układzie zasilania aby zmieni kierunek ruchu silnika prdu stałego konieczna jest krzyowa zamiana biegunów zasilania. Ponadto przez 9-pinowe gniazdo wyprowadzone s linie zasilania połczone z gniazdem BNC, co umoliwia zasilanie układu sterujcego przez to gniazdo lub zasilanie modelu z układu sterujcego. Dlatego te model dwigu z układami logicznymi naley łczy tylko za pomoc specjalnie przygotowanych kabli. Na rys. 2.4 przedstawiony jest model wraz z zaznaczonymi elementami wykonawczymi i wyprowadzonymi gniazdami. Uwaga: Do 9-pinowego gniazda (zgodnego ze standardem RS232) nie wolno dołcza innych urzdze wyposaonych w odpowiednie wtyki (np. mysz komputerowa) lub łczy sterownik dwigu z komputerem. Sygnały sterujce dwigiem nie s zgodne z interfejsem RS232 i dołczenie innych urzdze moe doprowadzi do powanego uszkodzenia tego urzdzenia lub sterownika dwigu. 3
Silnik nr 3 Silnik nr 2 Silnik nr 1 Gniazdo do podłczenia układu sterujcego Gniazdo zasilania Rys. 2.4. Model dwigu Wykonanie kilku czynnoci jest moliwe podczas sterowania sekwencyjnego na podstawie pomiaru upływu czasu. Do okrelania upływu czasu moe słuy licznik impulsów zewntrznych o znanej czstotliwoci. Poziom logiczny sygnałów sterujcych dwigiem moe by zaleny od stanu tego licznika, w zwizku z czym naley dobra tak czstotliwo impulsów aby zapewni dostateczn rozdzielczo czasow sterowania ruchem przy jednoczesnym ograniczeniu długoci tego licznika. Naley pamita, e rozpdzony silnik kontynuuje ruch po wyłczeniu zasilania nawet przez około 0,3 s, zatem pomidzy poszczególnymi zmianami stanu sygnałów załczajcych silniki naley umieci około 0,5 s przerwy. Takie przerwy równie zapobiegaj przecianiu zasilacza w momencie załczania wicej ni jednego silnika w tym samym czasie. Zatrzymany silnik stanowi zwarcie i załczenie wicej ni jednego silnika w jednej chwili powoduje znaczny spadek napicia zasilania, co zakłóca prac układów cyfrowych. W przypadku wykorzystania moliwoci pracy wicej ni jednego silnika w jednym momencie, naley stosowa nastpujc sekwencj sygnałów załczajcych silniki: załczenie silnika x przerwa załczenie silnika y przerwa wyłczenie silnika x przerwa wyłczenie silnika y. Zmiana stanu sygnałów wyznaczajcych kierunek ruchu silników moe nastpi w dowolnej chwili. Przed rozpoczciem sekwencji ruchów naley ustawi dwig w odpowiedniej dla danej sekwencji pozycji pocztkowej, np. przy podnoszeniu haka musi istnie moliwo takiego ruchu, czyli hak nie moe znajdowa w górnym skrajnym połoeniu. Dokona tego naley za pomoc prostego układu kombinacyjnego lub za pomoc sygnałów logicznych generowanych przez zestaw UNILOG-2. Nie wolno przesuwa elementów dwigu rcznie grozi to uszkodzeniami mechanicznymi. Oczywiste jest, e czas załczenia silnika poruszajcego danym elementem nie moe by dłuszy ni czas jaki jest potrzebny na pokonanie całego moliwego zakresu ruchu. W tablicy 2.1 podane s orientacyjne czasy wykonania pełnego ruchu danego elementu. 4
Tablica 2.1. Orientacyjne czasy wykonania pełnego ruchu elementów dwigu Element Zakres ruchu Orientacyjny czas (sekundy) Silnik nr 1 Obrót wiey o 350 w lewo lub w prawo 30 Opuszczenie lub podniesienie haka od/do poziomu blatu Silnik nr 2 4 Silnik nr 3 do nawinicia/rozwinicia linki na/ze szpuli Przysunicie wózka do wiey po całym ramieniu Odsunicie wózka od wiey do skrajnego połoenia 3 3 2.4. Zestaw uruchomieniowy z układem CPLD Fizyczna struktura zestawu uruchomieniowego ZL1pld przedstawiona jest na rysunku 2.5. Wszystkie elementy słuce do wprowadzania sygnałów do układu (nastawniki, przełczniki i zworki) oraz elementy wskazujce stan linii wyjciowych (wywietlacze i diody LED) zostały zaznaczone i opisane. Programator ByteBlasterMV lub ZL11PRG-M Dioda TCK sygnalizujca transmisj przez interfejs JTAG Dioda PWR sygnalizujca włczenie zasilania układu Wywietlacze siedmiosegmentowe W1 i W2 Złcze interfejsu JTAG Zworki JP1 i JP2 Układ EPM7128S lub XC95108 w adapterze Diody LED D0,, D7 Nastawniki szesnastkowe NA i NB Przycisk SW2 Przycisk SW3 Rys. 2.5. Zestaw uruchomieniowy z układem CPLD Układy EPM7128S i XC95108 s logicznie zgodne ze standardem TTL zatem zapalenie diody lub segmentu wywietlacza polega na ustawieniu na danym wyjciu jedynki logicznej. Do sterowania modelem dwigu wykorzystano wyjcia połczone z diodami D0,, D5, zatem stan logiczny sygnałów sterujcych mona dodatkowo obserwowa na tych diodach. Znaczenie poszczególnych wyj sterujcych dwigiem opisane jest w tablicy 2.2. 5
Warto logiczna 0 1 0 1 0 1 0 1 0 1 0 1 Znaczenie Tablica 2.2. Znaczenie wyj sterujcych dwigiem Oznaczenie sygnału Dioda Silnik obracajcy wie dwigu (silnik nr 1) silnik wyłczony D0 nie wieci Z1 silnik załczony D0 wieci obrót wiey w lewo (patrzc z góry) D1 nie wieci K1 obrót wiey w prawo (patrzc z góry) D1 wieci Silnik podnoszcy i opuszczajcy hak (silnik nr 2) silnik wyłczony D2 nie wieci Z2 silnik załczony D2 wieci opuszczanie haka 1 D3 nie wieci K2 podnoszenie haka D3 wieci Silnik przesuwajcy wózek po wysigniku (silnik nr 3) silnik wyłczony D4 nie wieci Z3 silnik załczony D4 wieci wózek przysuwany do wiey D5 nie wieci K3 wózek odsuwany od wiey D5 wieci Wyprowadzenie układu CPLD EPM7128S XC95108 70 70 69 69 68 68 67 67 65 65 64 62 Naley pamita, e wszystkie sygnały s niezalene od siebie i konieczna jest kontrola stanu wyj załczajcych silniki. Po ustawieniu wartoci logicznej równej 1 na dowolnym wyjciu załczajcym silnik odpowiedni element dwigu bdzie napdzany. W zwizku z brakiem wyłczników kracowych, kontynuacja załczenia silnika moe doprowadzi do uszkodze mechanicznych modelu. Dlatego zaleca si sprawdzenie poprawnoci działania programu sterujcego przy odłczonym dwigu, jedynie obserwujc stan diod D0,, D5. W przypadku projektowania układu sekwencyjnego konieczne jest podłczenie do zestawu sygnału zegarowego bdcego wzorcem czasu. W tym celu naley wykorzysta wyprowadzenia jednej ze zworek JP1 lub JP2. Mas generatora funkcji naley dołczy do pinu wybranej zworki oznaczonego symbolem 0, a sygnał z generatora do rodkowego pinu. Przed wykonaniem tych połcze naley sprawdzi parametry generowanego sygnału prostoktnego, tj. czstotliwo i amplitud, która musi by zgodna ze standardem TTL, tj. amplituda sygnału powinna wynosi 5V, a czstotliwo jest zalena od podanej rozdzielczoci czasowej (ograniczenie od dołu) i od długo- ci zaprogramowanego licznika (ograniczenie od góry). Aby poprawi jako projektu naley wykorzysta moliwie duo elementów zawartych w zestawie uruchomieniowym podłczonych do wyj układu CPLD. Dostpne wywietlacze i diody mog słuy do informowania o stanie wewntrznych liczników lub dekodowania wewntrznych sygnałów sterujcych. W przypadku układu EPM7128S konfiguracja wszystkich połcze podana jest w tablicy 2.3, a dla układu XC95108 w tablicy 2.4. 1 Kierunek ruchu haka jest zaleny od sposobu nawinicia linki na szpul. Ruch moe przebiega w odwrotn stron, jeli podczas opuszczania haka dojdzie do rozwinicia całej linki i nawinicia jej poprzez kontynuowanie ruchu silnika. 6
Tablica 2.3. Konfiguracja połcze dla układu EPM7128S Dostpne wejcia Zworki JP1 i JP2 Zworka Dołczona do wyprowadzenia EPM7128S JP1 28 JP2 30 Przełczniki SW2 i SW3 Przełcznik Dołczony do wyprowadzenia EPM7128S SW3 (styk NC) 57 SW2 (styk NC) 55 SW2 (styk NO) 58 Nastawniki szesnastkowe NA i NB Styk nastawnika (waga binarna) Dołczony do wyprowadzenia EPM7128S NA_1 (2 0 ) 31 (A_0) NA_4 (2 1 ) 35 (A_1) NA_3 (2 2 ) 37 (A_2) NA_6 (2 3 ) 34 (A_3) NB_1 (2 0 ) 49 (B_0) NB_4 (2 1 ) 54 (B_1) NB_3 (2 2 ) 56 (B_2) NB_6 (2 3 ) 51 (B_3) Dostpne wyjcia Wywietlacze W1 i W2 Segmenty wywietlacza W1 Dołczone do wyprowadze Segmenty wywietlacza W2 Dołczone do wyprowadze A1 5 A2 74 B1 6 B2 73 C1 9 C2 75 D1 10 D2 77 E1 11 E2 79 F1 15 F2 80 G1 12 G2 81 DP1 8 DP2 76 Diody LED D0,, D8 Oznaczenie diody LED Sterowanie silnikami Dołczona do wyprowadzenia układu EPM7128S: Znaczenie przy sterowaniu modelem dwigu D0 Z1 70 załczenie silnika nr 1 D1 K1 69 kierunek obrotów silnika nr 1 D2 Z2 68 załczenie silnika nr 2 D3 K2 67 kierunek obrotów silnika nr 2 D4 Z3 65 załczenie silnika nr 3 D5 K3 64 kierunek obrotów silnika nr 3 D6 63 diody te mog słuy jako D7 60 wskaniki poziomów logicznych D8 61 wybranych sygnałów Symbole NC i NO uyte w tablicy 2.3 posiadaj odpowiednio nastpujce znaczenie: Normally Closed (zwolniony przycisk podaje na wyprowadzenie wysoki poziom logiczny 1 ) i Normally Open (zwolniony przycisk podaje na wyprowadzenie niski poziom logiczny 0 ). 7
Tablica 2.4. Konfiguracja połcze dla układu XC95108 Dostpne wejcia Zworki JP1 i JP2 Zworka Dołczona do wyprowadzenia XC95108 JP1 26 JP2 32 Przełczniki SW2 i SW3 Przełcznik Dołczony do wyprowadzenia XC95108 SW3 (styk NC) 57 SW2 (styk NC) 55 SW2 (styk NO) 58 Nastawniki szesnastkowe NA i NB Styk nastawnika (waga binarna) Dołczony do wyprowadzenia XC95108 NA_1 (2 0 ) 31 (A_0) NA_4 (2 1 ) 35 (A_1) NA_3 (2 2 ) 37 (A_2) NA_6 (2 3 ) 34 (A_3) NB_1 (2 0 ) 52 (B_0) NB_4 (2 1 ) 54 (B_1) NB_3 (2 2 ) 56 (B_2) NB_6 (2 3 ) 51 (B_3) Dostpne wyjcia Wywietlacze W1 i W2 Segmenty wywietlacza W1 Dołczone do wyprowadze Segmenty wywietlacza W2 Dołczone do wyprowadze A1 5 A2 72 B1 6 B2 71 C1 9 C2 77 D1 11 D2 80 E1 14 E2 79 F1 15 F2 82 G1 12 G2 81 DP1 7 DP2 75 Diody LED D0,, D8 Oznaczenie diody LED Sterowanie silnikami Dołczona do wyprowadzenia układu XC95108 Znaczenie przy sterowaniu modelem dwigu D0 Z1 70 załczenie silnika nr 1 D1 K1 69 kierunek obrotów silnika nr 1 D2 Z2 68 załczenie silnika nr 2 D3 K2 67 kierunek obrotów silnika nr 2 D4 Z3 65 załczenie silnika nr 3 D5 K3 62 kierunek obrotów silnika nr 3 D6 63 diody te mog słuy jako D7 61 wskaniki poziomów logicznych D8 53 wybranych sygnałów Symbole NC i NO uyte w tablicy 2.4 posiadaj odpowiednio nastpujce znaczenie: Normally Closed (zwolniony przycisk podaje na wyprowadzenie wysoki poziom logiczny 1 ) i Normally Open (zwolniony przycisk podaje na wyprowadzenie niski poziom logiczny 0 ). 8
Uwaga: Jeeli w testowanym projekcie nie s wykorzystywane zworki JP1, JP2 oraz nastawniki NA i NB, to naley ustawi je w pozycji 0, a zworki JP1 i JP2 usun. Jeeli nie jest wykorzystywany take przycisk SW3, to po zaprogramowaniu układu naley unika uywania go. Przestrzeganie tych zalece jest niezbdne, aby unikn uszkodzenia układu EPM7128S w przypadku, gdy wyprowadzeniu I/O, do którego dołczone s wymienione elementy, zostanie przypisana przez oprogramowanie MAX+plus II rola wewntrznego wzła bloku funkcjonalnego realizujcego okrelon cz zadania. Aby omin te kłopoty, mona przed kompilacj zarezerwowa wyprowadzenia, do których s dołczone nastawniki i zworki. 2.5. Łczenie modelu dwigu z innymi układami sterujcymi Model dwigu moe by sterowany za pomoc dowolnego układu logicznego zgodnego ze standardem TTL. Najlepszym dostpnym w laboratorium TC rozwizaniem jest wykorzystanie zestawu elementów logicznych UNILOG-2, który umoliwia uruchamianie układów zbudowanych w technologii TTL i CMOS. Zasilacz tego zestawu zapewnia stabilizowane napicie o wartoci 5V i ma wystarczajc wydajno prdow do zasilania modelu i sterownika dwigu. Do połczenia modelu dwigu z zestawem UNILOG-2 słuy specjalnie wykonany kabel pokazany na rys. 2.6, przy czym znaczenie poszczególnych przewodów zostało przedstawione w tablicy 2.5. Gniazdo zasilania (rys. 2.4.) znajdujce si na obudowie podstawy dwigu naley wówczas pozostawi niewykorzystane. Rys. 2.6. Kabel do połczenia modelu dwigu i zestawu UNILOG-2 Tablica 2.5. Znaczenie przewodów w kablu do zestawu UNILOG-2 Oznaczenie Kolor sygnału przewodu Znacznie sygnału Z1 czarny załczenie silnika nr 1 K1 brzowy kierunek obrotów silnika nr 1 Z2 niebieski załczenie silnika nr 2 K2 czerwony kierunek obrotów silnika nr 2 Z3 biały załczenie silnika nr 3 K3 pomaraczowy kierunek obrotów silnika nr 3 V CC fioletowy zasilanie modelu dwigu GND szary masa układu 9
W przypadku łczenia modelu dwigu z innym układem sterujcym wyposaonym w zasilacz o zbyt niskiej wydajnoci prdowej naley skorzysta z zasilacza ZT-980-2M, tak jak w przypadku sterowania z układu CPLD. Zasilacz ten naley połczy z gniazdem BNC znajdujcym si w podstawie dwigu, wówczas przewód fioletowy (V CC ) w kablu łczcym sygnały logiczne naley pozostawi niepodłczony. Przewód szary (GND) naley wykorzysta do stworzenia wspólnej masy układu sterujcego i sterownika dwigu. 2.6. Projektowanie i uruchamianie układu sterujcego Sterowanie rzeczywistym modelem wymaga wprowadzenia do projektu dodatkowych zabezpiecze zapobiegajcych moliwym uszkodzeniom mechanicznym. W momencie włczenia zasilania układu sterujcego sygnały załczajce silniki (Z1, Z2 i Z3) musz by równe 0 logicznemu, poniewa w przeciwnym przypadku elementy dwigu zaczn si porusza w sposób niekontrolowany. Powysza uwaga dotyczy dowolnego rodzaju układu sterowania (kombinacyjnego lub sekwencyjnego) wykonanego w dowolnej technologii. Ruch elementów mechanicznych musi by pod stał kontrol, zatem w przypadku kombinacyjnego układu sterujcego ruch moe by wykonany gdy uytkownik wykona cile okrelone czynnoci takie jak: okrelenie wszystkich szeciu funkcji wyjciowych poprzez dokonanie odpowiednich nastaw, okrelenie połoenia pocztkowego elementów ruchomych i porównanie ich z nastawami, tak aby ruch elementu mechanicznego był wykonany w odpowiednim kierunku, uruchomienie silnika moe nastpi wtedy, gdy uytkownik wykona konkretn akcj, np. naci- nie i przytrzyma przycisk, puszczenie przycisku sterujcego musi skutkowa zakoczeniem ruchu. Sekwencyjny układ sterujcy wymaga jeszcze wikszej ostronoci. Przed rozpoczciem ruchu konieczne jest sprawdzenie połoenia pocztkowego elementów mechanicznych i porównanie ich z zaprojektowan sekwencj ruchów. Wykonanie sekwencji musi rozpocz si na wyrany sygnał ze strony uytkownika, np. przycinicie i przytrzymanie przycisku sterujcego. Puszczenie tego przycisku w dowolnym momencie musi spowodowa zatrzymanie ruchu. Jeeli sekwencja jest uruchamiana pojedynczym naciniciem przycisku lub upływem okrelonego czasu w układzie musi istnie przycisk bezpieczestwa zatrzymujcy dowolny ruch w momencie jego uycia. Po zaprojektowaniu i przeprowadzeniu symulacji komputerowej pracy układu sterujcego zaleca si uruchomienie projektu bez podłczenia modelu dwigu. Proces kompilacji i symulacji komputerowej projektów jest opisany w odpowiednich instrukcjach laboratoryjnych [5, 7]. Stan wyj sterujcych w rzeczywistych układach mona obserwowa na diodach D0,, D5 (układ CPLD), diodach wskazujcych stan logiczny na zestawie UNILOG-2 lub innym próbniku stanów logicznych. W przypadku układów CPLD naley odłczy przewody zasilacza i sterowania od podstawy dwigu, a do zasilania zestawu ZL1PLD naley wykorzysta zasilacz oryginalny ZNJ9 podłczony do gniazda na płytce z układem CPLD. Uycie tego zasilacza powoduje silne nagrzewanie si układu CPLD i stabilizatora na zestawie, zatem zalecane jest włczenie zasilania z tego zasilacza na czas nie dłuszy ni jedna minuta. 10
3. Przykłady 3.1. Prosty układ kombinacyjny Zadanie: Zaprojektowa układ kombinacyjny umoliwiajcy sterowanie dwigiem za pomoc układów CPLD. W danej chwili moe by załczony tylko jeden silnik, a stan nastaw powinien by wywietlany na wywietlaczach. Silnik moe pracowa, jeeli wcinity jest przycisk sterujcy. Rozwizanie: Wybór silnika jest realizowany za pomoc nastawnika szesnastkowego NA, a wybór kierunku ruchu za pomoc nastawnika NB. Kady z nastawników podaje na wejcia układu CPLD cztery bity: NX_3, NX_2, NX_1 i NX_0 o wagach odpowiednio 8, 4, 2, 1 zatem moliwe jest podanie liczby z zakresu od 0 do 15. Silnik uruchamiany jest przy wcinitym przycisku SW2, czyli wykorzystywany jest styk normalnie otwarty (SW2_NO). Wywietlacz W1 bdzie wskazywał numer wybranego silnika, a wywietlacz W2 kierunek ruchu. Do wyprowadze układu CPLD dołczone s osobno wszystkie segmenty wywietlacza zatem mona zapala dowoln kombinacj segmentów. Znajdujce si w zestawie laboratoryjnym zworki JP1 i JP2 oraz przyciski SW1 i SW3 pozostan niewykorzystane. Układ generuje 6 sygnałów wyjciowych (Zx i Kx) podanych na silniki (i równoczenie na diody D0,, D5) oraz 14 sygnałów sterujcych wywietlaczami W1 i W2, co daje w sumie 19 wyj. Wejciami układu s nastawniki NA i NB (4 bity kady) oraz przycisk SW2_NO (1 bit), co daje 9 wej. Sposób wykorzystania wej i wyj podany jest w tablicy 3.1 a znaczenie poszczególnych kombinacji wej i wyj opisano w tablicy 3.2. Poniewa w danym momencie za pomoc nastawnika NA moe by wybrany tylko jeden silnik warto wszystkich sygnałów wyjciowych sterujcych kierunkiem ruchu silników Kx mog zmienia si równoczenie w zalenoci od pozycji nastawnika NB: Kx = 0, gdy NB=1 oraz Kx = 1, gdy NB=2 przy poprawnym numerze (1, 2 lub 3) na nastawniku NA. Wykorzystane zostan nastpujce pozycje nastawników: Nastawnik NA (numer silnika): 1 wybór silnika nr 1 (na wywietlaczu W1 zapalona cyfra 1, czyli segmenty a i b), 2 wybór silnika nr 2 (na wywietlaczu W2 zapalona cyfra 2, segmenty a, b, d, e, g), 3 wybór silnika nr 3 (na wywietlaczu W2 zapalona cyfra 3, segmenty a, b, c, d, g). Nastawnik NB (kierunek ruchu): 1 kierunek pierwszy, 2 kierunek przeciwny. Pozostałe kombinacje pozostan niewykorzystane, w przypadku ich wystpienia na wywietlaczach W1 i W2 zostanie zapalona litera E (segmenty a, d, e, f, g) oznaczajca błd (ang. error). Znak wywietlany na W2 zaley zarówno od wartoci nastawy NA jak i od NB w nastpujcy sposób: NA=1, NB=1 zapalony znak L (segmenty d, e, f) czyli obrót wiey w Lewo, NA=1, NB=2 zapalony znak P (segmenty a, b, e, f, g) czyli obrót wiey w Prawo, NA=2, NB=1 zapalony znak d (segmenty b, c, d, e, g) czyli ruch haka w dół, NA=2, NB=2 zapalony znak g (segmenty a, b, c, d, f, g) czyli ruch haka w gór, NA=3, NB=1 zapalony znak P (segmenty a, b, e, f, g) czyli Przyblianie wózka do wiey, NA=3, NB=1 zapalony znak O (segmenty a, b, c, d, e, f) czyli Odsuwanie wózka od wiey. Warto logiczna sygnałów Zx zaley od pozycji nastawnika NA i pozycji przycisku SW2, w taki sposób aby sygnał Zx był ustawiany na 1 jeli NA=x przy wcinitym przycisku SW2. Kod ródłowy tak działajcego układu sterujcego podany jest na listingu 3.1. 11
Tablica 3.1. Sposób wykorzystania wej i wyj w układzie kombinacyjnym Wejcia Wyjcia Nastawnik NA Nastawnik NB Przycisk Wywietlacz W2 Wywietlacz W1 Z1 K1 Z2 K2 Z3 K3 NA_3 NA_2 NA_1 NA_0 Warto Warto NB_3 NB_2 NB_1 NB_0 nastawy nastawy SW2_NO W2_a W2_b W2_c W2_d W2_e W2_f W2_g W1_a W1_b W1_c W1_d W1_e W1_f W1_g D0 D1 D2 D3 D4 D5 0 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 A 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 B 0 0 0 1 1 0 0 1 0 2 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 1 0 1 0 1 C 0 0 0 1 1 0 0 1 0 2 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 D 0 0 1 0 2 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 E 0 0 1 0 2 0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 0 0 0 F 0 0 1 0 2 0 0 1 0 2 0 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 G 0 0 1 0 2 0 0 1 0 2 1 1 1 1 1 0 1 1 1 1 0 1 1 0 1 0 1 1 1 0 1 H 0 0 1 1 3 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 I 0 0 1 1 3 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 J 0 0 1 1 3 0 0 1 0 2 0 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 0 1 K 0 0 1 1 3 0 0 1 0 2 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 0 1 1 1 L Inna nastawa Inna nastawa x 1 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 M Znaczenie A B C D E F G H I J K L Znaczenie Tablica 3.2. Znaczenie poszczególnych kombinacji wej i wyj w układzie kombinacyjnym Wartoci nastawników NA i NB wynosz 1, przycisk SW2 jest zwolniony, na W1 zapalona jest 1 numer silnika, W2 wywietla L obrót w lewo, silniki s wyłczone. NA, NB, W1 i W2 tak jak w znaczeniu A, przycisk SW2 jest wcinity nastpuje obrót wiey w lewo poniewa warto sygnału Z1 wynosi 1. Silniki 2 i 3 s wyłczone. Wartoci nastawników: NA = 1, NB = 2, przycisk SW2 jest zwolniony, na W1 zapalona jest 1 numer silnika, W2 wywietla P obrót w prawo, silniki s wyłczone. NA, NB, W1 i W2 tak jak w znaczeniu C, przycisk SW2 jest wcinity nastpuje obrót wiey w prawo poniewa Z1 = 1. Sygnały Kx = 1. Silniki 2 i 3 s wyłczone. Nastawy: NA = 2, NB = 1, przycisk SW2 jest zwolniony, na W1 zapalona jest 2 numer silnika, W2 wywietla d (dół) opuszczanie haka, silniki s wyłczone. NA, NB, W1 i W2 tak jak w znaczeniu E, przycisk SW2 jest wcinity nastpuje opuszczanie haka poniewa warto sygnału Z2 wynosi 1. Silniki 1 i 3 s wyłczone. Nastawy: NA = 2, NB = 2, przycisk SW2 jest zwolniony, na W1 zapalona jest 2 numer silnika, W2 wywietla g (góra) podnoszenie haka, silniki s wyłczone. NA, NB, W1 i W2 tak jak w znaczeniu G, przycisk SW2 jest wcinity nastpuje podnoszenie haka poniewa Z2 wynosi 1. Sygnały Kx = 1. Silniki 1 i 3 s wyłczone. Nastawy: NA = 3, NB = 1, przycisk SW2 jest zwolniony, na W1 zapalona jest 3 numer silnika, W2 wywietla P przyblianie wózka do wiey, silniki s wyłczone. NA, NB, W1 i W2 tak jak w znaczeniu I, przycisk SW2 jest wcinity nastpuje przyblianie wózka poniewa warto sygnału Z3 wynosi 1. Silniki 1 i 2 s wyłczone. Nastawy: NA = 3, NB = 2, przycisk SW2 jest zwolniony, na W1 zapalona jest 3 numer silnika, W2 wywietla O oddalanie wózka od wiey, silniki s wyłczone. NA, NB, W1 i W2 tak jak w znaczeniu K, przycisk SW2 jest wcinity nastpuje odsuwanie wózka poniewa Z3 wynosi 1. Sygnały Kx = 1. Silniki 1 i 2 s wyłczone. M Nastawa NA jest róna od 1, 2 lub 3 oraz nastawa NB jest róna od 1 lub 2. Wywietlacze W1 i W2 pokazuj znak E (error) błd. Sygnały Zx i Kx wynosz 0. Opis 12
Listing 3.1. Układ kombinacyjny sterujcy dwigiem LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dzwig IS PORT ( wejscia : IN STD_LOGIC_VECTOR ( 8 DOWNTO 0); -- wejscia 8,7,6,5 - nastawnik NA -- wejscia 4,3,2,1 - nastawnik NB -- wejscie 0 - przycisk SW2 styk NO wyjscia : OUT STD_LOGIC_VECTOR (19 DOWNTO 0) -- wyjscia 19,18,17,16,15,14,13 - wyswietlacz W2 - kierunek -- wyjscia 12,11,10,9,8,7,6 - wyswietlacz W1 - silnik -- wyjscia 5,4,3,2,1,0 - diody D5 D0 uruchamiajace dzwig ); END dzwig; ARCHITECTURE tabela OF dzwig IS BEGIN WITH wejscia SELECT wyjscia <= "00011100110000000000" WHEN "000100010", -- W1="1", W2="L", Z1=0 "00011100110000100000" WHEN "000100011", -- W1="1", W2="L", Z1=1 "11001110110000010101" WHEN "000100100", -- W1="1", W2="P", Z1=0 "11001110110000110101" WHEN "000100101", -- W1="1", W2="P", Z1=1 "01111011101101000000" WHEN "001000010", -- W1="2", W2="d", Z2=0 "01111011101101001000" WHEN "001000011", -- W1="2", W2="d", Z2=1 "11110111101101010101" WHEN "001000100", -- W1="2", W2="g", Z2=0 "11110111101101011101" WHEN "001000101", -- W1="2", W2="g", Z2=1 "11001111111001000000" WHEN "001100010", -- W1="3", W2="p", Z3=0 "11001111111001000010" WHEN "001100011", -- W1="3", W2="p", Z3=1 "11111101111001010101" WHEN "001100100", -- W1="3", W2="O", Z3=0 "11111101111001010111" WHEN "001100101", -- W1="3", W2="O", Z3=1 "10011111001111000000" WHEN OTHERS; END tabela; Podany powyej kod naley wprowadzi do oprogramowania obsługujcego jzyk VHDL słucego do implementacji projektów w układach CPLD. Kod ten kompiluje si poprawnie w zarówno w aplikacjach firmy Altera jak i Xilinx. Po kompilacji sprawdzajcej poprawno składniow kodu naley przeprowadzi operacj przyporzdkowania sygnałów wejciowych i wyjciowych do fizycznych wyprowadze układów CPLD za pomoc odpowiednich modułów wchodzcych w skład oprogramowania projektowego. Rozkład wyprowadze w zestawie laboratoryjnym podany jest w tablicach 2.3 (układ firmy Altera) i 2.4 (układ firmy Xilinx). Ponowna kompilacja umoliwia przeprowadzenie symulacji pracy projektowanego układu oraz zaprogramowanie układu docelowego. Po zaprogramowaniu układ CPLD zachowuje program w pamici nawet po wyłczeniu zasilania. Ponowne włczenie zasilania powoduje automatyczne uruchomienie wczeniej wprowadzonego programu. 13
3.2. Kombinacyjny układ sterujcy zbudowany z elementów logicznych Zadanie: Zaprojektowa układ kombinacyjny umoliwiajcy sterowanie dwigiem za pomoc układów CPLD. W danej chwili moe by załczony tylko jeden silnik, przy czym silnik moe pracowa, jeeli wcinity jest przycisk sterujcy. Rozwizanie: Podobnie jak w przykładzie 3.1, wybór silnika jest realizowany za pomoc nastawnika szesnastkowego NA, przy czym wykorzystane zostan dwa najmłodsze bity generowane przez ten nastawnik. Wybór kierunku ruchu bdzie sygnalizowany przez najmłodszy bit nastawnika NB. Wybrany silnik uruchamiany jest przy wcinitym przycisku SW2 oznaczonym jako Start, czyli wykorzystywany jest styk normalnie otwarty (SW2_NO). Znajdujce si w zestawie laboratoryjnym wywietlacze W1 i W2, zworki JP1 i JP2 oraz przyciski SW1 i SW3 pozostan niewykorzystane. Ze wzgldu na złoono schematu podczas syntezy układu pominito pozostałe bity nastawników oraz generowanie komunikatów wywietlanych na wywietlaczach siedmiosegmentowych W1 i W2. Układ ma za danie generowanie 6 sygnałów wyjciowych (Zx i Kx) podanych na silniki (i równoczenie na diody D0,, D5). Wejciami układu s dwa bity z nastawnika NA i jeden bit z nastawnika NB oraz przycisk SW2_NO (1 bit), co daje łcznie 4 wejcia. Poszczególnym sygnałom wejciowym przypisano nastpujce znaczenie: Dwa najmłodsze bity nastawnika NA (numer silnika) oznaczone jako Sil1 i Sil0: 00 nie wybrano adnego silnika, model pozostanie nieruchomy, 01 uruchomiony zostanie silnik nr 1, 10 uruchomiony zostanie silnik nr 2, 11 uruchomiony zostanie silnik nr 3. Najmłodszy bit nastawnika NB (kierunek ruchu) oznaczony jako Kier: 0 kierunek pierwszy, 1 kierunek przeciwny. Aby uproci projekt układu, podczas pierwszego etapu pominito sygnał z przycisku SW2, zatem pozostało tylko zaprojektowanie układu kombinacyjnego majcego trzy wejcia i 6 wyj, co oznacza konieczno wyznaczenia szeciu funkcji logicznych trzech zmiennych zapisanych w tablicy 3.3, któr stworzono na podstawie tablicy 2.2. Tablica 3.3. Tabela stanów kombinacyjnego układu sterujcego Wejcia Wyjcia Kier Sil1 Sil0 Z1 K1 Z2 K2 Z3 K3 Opis 0 0 0 0 0 0 0 0 0 Silniki wyłczone 0 0 1 1 0 0 0 0 0 Obrót wiey w lewo 0 1 0 0 0 1 0 0 0 Opuszczanie haka 0 1 1 0 0 0 0 1 0 Przysuwanie wózka do wiey 1 0 0 0 0 0 0 0 0 Silniki wyłczone 1 0 1 1 1 0 0 0 0 Obrót wiey w prawo 1 1 0 0 0 1 1 0 0 Podnoszenie haka 1 1 1 0 0 0 0 1 1 Odsuwanie wózka od wiey Aby uproci i przyspieszy realizacj techniczn powyszych funkcji do wygenerowania wyj wykorzystano układ UCY 74155 zawierajcy dwa demultipleksery o dwóch wejciach adresowych, które mona połczy w jeden demultiplekser o trzech wejciach adresowych. Na te wej- cia adresowe mona poda zmienne wejciowe. Na podstawie tablicy 3.3 otrzymano nastpujce funkcje logiczne: 14
( ) = Π( 1,5 ) Z2( Kier,Sil1,Sil0 ) = Π( 2,6) Z3( Kier,Sil1,Sil0 ) = Π( 3,7) ( ) = Π( 5) K2( Kier,Sil1,Sil0 ) = Π( 6) K3( Kier,Sil1,Sil0 ) = Π( 7) Z1 Kier,Sil1,Sil0 K1 Kier,Sil1,Sil0 Otrzymane funkcje przeniesiono do edytora graficznego w rodowisku MAX+plus II i zapisano jako plik schematu dzwig_komb.gdf (rys. 3.1). Zapisany schemat nie wchodził w skład projektu, ani nie był kompilowany. Rys. 3.1. Schemat kombinacyjnego układu sterujcego Utworzony obwód jest tylko czci projektowanego układu sterujcego. Nie został na razie uwzgldniony sygnał z przycisku SW2, konieczna jest wic rozbudowa powyszego obwodu. Kompletny układ sterujcy bdzie bardziej przejrzysty, jeeli otrzyman cz zamieni si podobwód i dołczy brakujce elementy. Aby utworzy podobwód naley, przy otwartym oknie edytora graficznego ze schematem, wybra polecenie File Create Default Symbol. Polecenie to spowoduje utworzenie, w katalogu zawierajcym plik dzwig_komb.gdf, trzech dodatkowych plików, midzy innymi pliku dzwig_komb.sym, który zawiera definicj wygldu podobwodu. Plik ten mona obejrze poprzez otwarcie go poleceniem File Open, które spowoduje uruchomienie edytora symboli (rys. 3.2). W tym edytorze mona dopasowa wygld (rodzaj i wielko czcionki) i rozkład wyprowadze, lecz nie mona modyfikowa schematu wewntrznego. Rys. 3.2. Podobwód z układem kombinacyjnym w oknie edytora symboli Dokoczenie zadania polega na utworzeniu nowego projektu i dodaniu obsługi przycisku SW2. Najłatwiej jest to wykona poprzez dołczenie do wej podobwodu bramek realizujcych iloczyn sygnału z przycisku i sygnałów z nastawników NA i NB. Naley zauway, e utworzony wczeniej układ kombinacyjny przy zerowym pobudzeniu nie uruchamia adnego z silników. Aby utworzony podobwód był dostpny z poziomu nowego projektu naley cztery wczeniej utworzone pliki o nazwach zawierajcych człon dzwig_komb.* skopiowa do katalogu z tym projektem. Podoobwód bdzie widoczny jako nowy komponent w bazie podczas dodawania elementów do schematu w edytorze schematów. Jednoczenie zaleca si, aby projekt miał inn nazw (tutaj dzwig_ttl ) ni nazwy własnych podoobwodów lub gotowych elementów w bazie danych. Takie same nazwy powoduj kłopoty w ustaleniu hierarchii poszczególnych modułów i uniemoliwiaj poprawn implementacj projektu. 15
Gotowy kompletny układ pokazano na rysunku 3.3. Przed implementacj projektu do układu programowalnego naley przeprowadzi symulacj pracy układu dla wszystkich moliwych kombinacji sygnałów wejciowych i sprawdzi poprawno otrzymanych przebiegów czasowych (rys. 3.4). Po przyporzdkowaniu wyprowadze i kocowej kompilacji układ sterujcy jest gotowy do zaprogramowania w strukturze PLD. Rys. 3.3. Kompletny układ kombinacyjny sterujcy modelem dwigu Rys. 3.4. Przebiegi czasowe w układzie kombinacyjnym sterujcym modelem dwigu Uwaga: W powyszym rozwizaniu nie wykorzystano wywietlaczy, na których mona pokaza czynno, jak wykona model po naciniciu przycisku SW2. Wywietlanie numeru mona zrealizowa poprzez podanie bitów okrelajcych numer silnika na wejcia układu UCY 7448, natomiast wyjcia tego układu mog bezporednio sterowa wyjciami połczonymi ze wskanikiem siedmiosegmentowym. Wywietlenie kodu oznaczajcego czynno bdzie moliwe po zaprojektowaniu transkodera trzech bitów wejciowych sterujcych modelem na symbole wywietlane na siedmiu segmentach drugiego wywietlacza. Taki transkoder najłatwiej wykona równie wykorzystujc demultiplekser. Podane rozwizanie jest nadmiarowe i nie jest optymalne pod wzgldem technicznym. Lepsze parametry mona otrzyma poprzez rczne zaprojektowanie i analityczn minimalizacj funkcji logicznych sterujcych wejciami modelu i wywietlaczami bez wykorzystania gotowych bloków, takich jak demultipleksery czy układ UCY 7448. Takie rozwizanie jest jednak bardziej pracochłonne, a podany w przykładzie układ sterujcy wykorzystuje tylko 4% moliwoci układu CPLD dostpnego w laboratorium. 16
3.3. Prosta sekwencja ruchów Zadanie: Zaprojektowa układ sterowania dwigiem zrealizowany za pomoc układów CPLD, który wykona nastpujce czynnoci: obrót wiey w lewo o około 90, odsunicie wózka od wiey na około 1/3 długoci wysignika, opuszczenie haka do poziomu blatu, wstrzymanie pracy modelu na około 5 sekund, podniesienie haka, przysunicie wózka do wiey, obrót wiey w prawo o około 90 (powrót do pozycji wyjciowej). Układ powinien by wyposaony w zabezpieczenie pozwalajce zatrzyma urzdzenie oraz anulowa sekwencj ruchów w dowolnym momencie. Rozwizanie: Najprostszym sposobem realizacji sterowania sekwencyjnego jest zastosowanie układu sterujcego zbudowanego z licznika zewntrznych impulsów taktujcych i dekodera stanów. W jzyku VHDL licznik najłatwiej jest zrealizowa jako proces, a dekoder za pomoc instrukcji selektywnej (moliwe jest równie zrealizowanie dekodera za pomoc zbioru instrukcji warunkowych). Do realizacji zadania zostan wykorzystane nastpujce elementy zestawu uruchomieniowego (rys. 2.5): złcze zworki JP1, do którego zostanie dołczony generator zewntrzny (zmienna zegar), przycisk SW2, styk NO wykorzystano jako przycisk bezpieczestwa (zmienna bezp), diody D5,, D0 bdce wyjciami sterujcymi modelem (wektor wyjciowy diody), 8 pojedynczych segmentów wywietlaczy W1 i W2 do wywietlenia stanu licznika w postaci niezdekodowanej (zakładajc wykorzystanie licznika o pojemnoci 8 bitów), czerwon diod LED D8 do wywietlenia wartoci impulsu zegarowego (zmienna zeg_d). W kodzie ródłowym (listing 3.2) stan licznika został zadeklarowany jako wektor wejciowo-wyjciowy, zatem wymagane jest wyprowadzenie wszystkich omiu bitów na wyprowadzenia I/O układu programowalnego. W tym wypadku stan bdzie zmieniany przez sam układ programowalny, czyli bity te naley przyporzdkowa do wyprowadze dołczonych do elementów wyj- ciowych zestawu uruchomieniowego, np. wywietlaczy. Dekoder stanów został zrealizowany za pomoc instrukcji selektywnej. W proponowanym rozwizaniu załoono, e zegar bdzie pracował z czstotliwoci około 1 Hz. Do wykonania całej sekwencji ruchów potrzeba 40 pocztkowych stanów licznika, zatem wystarczyłby licznik szeciobitowy. W celu zwikszenia precyzji wykonywanych ruchów mona zwikszy czstotliwo sygnału zegarowego, lecz jednoczenie naley odpowiednio zmieni cz programu odpowiedzialn za dekodowanie stanów, co znacznie wydłu- yłoby podany w przykładzie kod ródłowy. Listing 3.2. Prosta sekwencja ruchów library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; Entity sekw is port ( zegar : in std_logic; -- JP1 bezp : in std_logic; -- SW2_N0 zeg_d : out std_logic; -- dioda zegara D8 stan : inout std_logic_vector(7 downto 0); -- stan licznika diody : out std_logic_vector (5 downto 0) end sekw; architecture sekwencja of sekw is 17 -- D5..D0 czyli sygnaly sterujace dzwigiem );
begin process (zegar, bezp) -- definicja licznika sterowanego zegarem i przyciskiem begin if bezp = '0' then stan <= "00000000"; -- przycisk SW2 jest puszczony elsif zegar = '1' and zegar'event then stan <= stan + 1; end if; -- stan licznika jest zwikszany przy narastajcym zboczu zegara end process; with stan select diody <= -- dekoder stanów dla czstotliwoci 1 Hz "000000" when "00000000", -- przerwa na 4 takty "000000" when "00000001", "000000" when "00000010", "000010" when "00000011", -- przygotuj obrót wiey lewo "000010" when "00000100", "000011" when "00000101", -- włcz obrót wiey w lewo na 5 taktów "000011" when "00000110", "000011" when "00000111", "000011" when "00001000", "000011" when "00001001", "000010" when "00001010", -- wyłcz obrót wiey "100000" when "00001011", -- wyłcz kierunek wiey, włcz kierunek odsuwanie wozka "110000" when "00001100", -- odsuwanie wózka przez 2 takty "110000" when "00001101", "100000" when "00001110", -- odsuwanie stop "000000" when "00001111", -- wyłcz kierunek odsuwania "000100" when "00010000", -- zaczyna opuszczanie haka na 3 takty "000100" when "00010001", "000100" when "00010010", "000000" when "00010011", -- opuszczanie stop, przerwa 6s na załadunek "000000" when "00010100", "000000" when "00010101", "001000" when "00010110", -- ustaw kierunek na podnoszenie haka "001000" when "00010111", "001000" when "00011000", "001100" when "00011001", -- włcz podnoszenie haka na 3 takty "001100" when "00011010", "001100" when "00011011", "001000" when "00011100", -- wyłcz podnoszenie haka "000000" when "00011101", -- wyłcz kierunek podnoszenia "100000" when "00011110", -- załcz przysuwanie wózka do wiey na 2 takty "100000" when "00011111", "000000" when "00100000", -- wyłcz przysuwanie wózka "000000" when "00100001", "000001" when "00100010", -- włcz obrót wiey w prawo na 5 taktów "000001" when "00100011", "000001" when "00100100", "000001" when "00100101", "000001" when "00100110", "000000" when "00100111", -- wszystko zatrzymaj "000000" when others; zeg_d <= zegar; end sekwencja; Uwaga: Nastawniki szesnastkowe NA i NB naley ustawi w pozycji 0, a zwork JP2 pozostawi wiszc. Podany przykład uruchomi najpierw na układzie CPLD odłczonym od modelu, stany wyj sterujcych naley obserwowa na diodach D0 D5. 18
3.4. Sekwencja ruchów generowana z bloków logicznych Zadanie: Zaprojektowa układ sterowania dwigiem zrealizowany za pomoc układów CPLD, który wykona nastpujce czynnoci: 1) odsun wózek od wiey, 2) opuci hak o kilkanacie centymetrów, 3) zatrzyma model na około 1 sekund, 4) podnie hak o kilkanacie centymetrów, 5) obróci wie o około 30 w prawo, 6) opuci hak o kilkanacie centymetrów, 7) zatrzyma model na około 1 sekund, 8) podnie hak o kilkanacie centymetrów, 9) obróci wie o około 30 w lewo, 10) przysun wózek od wiey (powrót do pozycji pocztkowej). Naley równie wyposay układ w przycisk Start uruchamiajcy sekwencj z moliwo- ci natychmiastowego zatrzymania ruchu modelu w przypadku puszczenia tego przycisku. Gdy przewidziana sekwencja czynnoci zostanie zakoczona, a przycisk Start nadal pozostaje wcinity naley zatrzyma model a do ponownego uruchomienia sekwencji poprzez ponowne wcinicie tego przycisku. Rozwizanie: Przed przystpieniem do rozwizywania zadania naley okreli minimaln czstotliwo zegara sterujcego układem sekwencyjnym oraz ilo bitów potrzebnych do wygenerowania stanów licznika. Po uwzgldnieniu parametrów zawartych w tablicy 2.1 oraz przy załoeniu e czstotliwo zegara bdzie równa 1 Hz, mona zapisa nastpujce uwagi: odsuwanie i przysuwanie wózka do wiey bdzie trwało około 1s (1 takt zegara), opuszczanie i podnoszenie haka bdzie trwało około 1s (1 takt zegara), obracanie wiey bdzie trwało około 3s (3 takty zegara), przy zerowym stanie licznika sterujcego nie naley uruchamia adnego elementu ruchomego modelu, poniewa pierwsze zbocze zegarowe pobudzajce licznik moe przyj natychmiast po wciniciu przycisku Start oraz zresetowanie licznika do stanu zerowego moe by czci rozwizania, w której naley zapobiec dalszym ruchom modelu, jako wejcia zostan wykorzystane: SW2 jako przycisk Start, oraz zworka JP1 jako wejcie zegarowe, wyjciami bdzie sze sygnałów Zx, Kx sterujcych modelem. Układ powinien generowa sze sygnałów wyjciowych, jednak wykorzystujc podobwód przygotowany w przykładzie 3.2, opisany tablic 3.3, mona zredukowa t liczb do trzech sygnałów. Ponadto, po zliczeniu potrzebnych taktów zegarowych z uwzgldnieniem pocztkowego zera i stanu ostatniego, który zatrzyma ruch modelu po zakoczonej sekwencji mona stwierdzi, e potrzeba 16 rónych stanów licznika sterujcego, zatem wystarczy licznik 4-bitowy. Cały układ sterowania bdzie składał si z nastpujcych czci: bramkowanie sygnału zegarowego (gdy przycisk Start jest puszczony, oraz gdy licznik osignie stan maksymalny 1111), dekodera czterech bitów stanu na trzy bity sterujce układem kombinacyjnym i układu kombinacyjnego generujcego sze sygnałów wyjciowych. Naley zauway, e licznik naley zatrzyma w stanie resetu, jeeli przycisk Start jest puszczony. Zakładajc, e przycisk Start jest wcinity i do układu doprowadzony jest sygnał zegarowy, to powysze spostrzeenia mona zapisa w postaci tabeli stanów licznika i wyj dekodera stanu (tab. 3.4). 19
Tablica 3.4. Tabela stanów licznika i wyj dekodera stanu Stan Bity licznika Wyjcia dekodera Czynno licznika QD QC QB QA Kier Sil1 Sil0 Znacznie Stop 0 0 0 0 0 0 0 0 Zaczekaj na zbocze wyzwalajce licznik 1) 1 0 0 0 1 1 1 1 Odsuwanie wózka od wiey (silnik 3) 2) 2 0 0 1 0 0 1 0 Opuszczanie haka (silnik 2) 3) 3 0 0 1 1 0 0 0 Przerwa na 1 takt zegara 4) 4 0 1 0 0 1 1 0 Podnoszenie haka (silnik 2) 5) 5 0 1 0 1 1 0 1 Obrót wiey w prawo przez 3 takty 6 0 1 1 0 1 0 1 zegara (silnik 1) 7 0 1 1 1 1 0 1 6) 8 1 0 0 0 0 1 0 Opuszczanie haka (silnik 2) 7) 9 1 0 0 1 0 0 0 Przerwa na 1 takt zegara 8) A 1 0 1 0 1 1 0 Podnoszenie haka (silnik 2) 9) B 1 0 1 1 0 0 1 Obrót wiey w lewo przez 3 takty C 1 1 0 0 0 0 1 zegara (silnik 1) D 1 1 0 1 0 0 1 10) E 1 1 1 0 0 1 1 Przysuwanie wózka do wiey (silnik 3) Stop F 1 1 1 1 0 0 0 Zatrzymanie modelu i licznika Aby uproci i przyspieszy realizacj techniczn dekodera stanów wykorzystano układ UCY 74154 zawierajcy demultiplekser 1/16 (cztery wejcia adresowe). Na wejcia adresowe demultipleksera wystarczy poda bity stanu licznika zgodnie z wag binarn i zrealizowa trzy funkcje zawarte w tablicy 3.4. Funkcje te przyjmuj nastpujca posta logiczn: Kier(QD,QC,QB,QA) Sil1(QD,QC,QB,QA) Sil0(QD,QC,QB,QA) = Σ = Σ = Σ ( 1,4,5,6,7,10 ) = Π( 1,4,5,6,7,10 ) ( 1,2,4,8,10,14 ) = Π( 1,2,4,8,10,14 ) ( 1,5,6,7,11,12,13,14 ) = Π( 1,5,6,7,11,12,13,14 ) Do realizacji licznika w zupełnoci wystarczy układ UCY 7493, który jest wyposaony w wejcia zerujce wykorzystywane do inicjalizacji sekwencji i zatrzymania pracy modelu. Sygnał zegarowy moe by podany na wejcie zegarowe licznika wtedy gdy: wcinity jest przycisk Start, stan licznika jest róny od 1111. Schemat kompletnego układu przedstawiono na rysunku 3.5, natomiast przebiegi czasowe otrzymane w wyniku symulacji s pokazane na rysunku 3.6. Warto zwróci uwag na wyranie widoczne zjawisko hazardu statycznego widoczne na przebiegach, które spowodowane jest specyficznym sposobem modelowania licznika UCY 7493 w rodowisku MAX+plus II. Eliminacja takich zjawisk oraz poprawa parametrów technicznych projektu jest moliwa i wskazana. Naley wtedy zastosowa analityczne metody minimalizacji funkcji logicznych bez wykorzystania gotowych bloków logicznych takich jak np. demultiplekser. Podczas minimalizacji naley zwróci uwag na zjawisko hazardu oraz dobór bramek logicznych do realizacji funkcji. Podany w przykładzie układ warto wyposay w dekodery pokazujce wykonywane czynnoci na wskanikach siedmiosegmentowych. Do ich zaprojektowania mona bez obawy wykorzysta gotowe bloki, takie jak dekoder UCY 7448 i demultipleksery, poniewa zaprojektowany układ wykorzystuje tylko 8% zasobów laboratoryjnego układu CPLD. 20
Rys. 3.5. Schemat sekwencyjnego układu sterowania modelem dwigu Rys. 3.6. Przebiegi czasowe w sekwencyjnym układzie sterowania modelem dwigu 21
3.5. Złoony układ sterowania modelem dwigu Zadanie: Zaprojektuj układ sterowania modelem dwigu umoliwiajcy sterowanie zarówno w trybie sekwencyjnym jak i kombinacyjnym. W trybie sekwencyjnym model ma wykona nastpujce czynnoci o zadanym czasie trwania: 1) odsunicie wózka od wiey (2 sekundy), 2) opuszczanie haka (3 sekundy), 3) zatrzymanie modelu (4 sekundy), 4) podnoszenie haka (3 sekundy), 5) obrócenie wiey w prawo (5 sekund), 6) przysunicie wózka do wiey (2 sekundy), 7) opuszczanie haka (3 sekundy), 8) zatrzymanie modelu (4 sekundy), 9) podnoszenie haka (3 sekundy), 10) obrócenie wiey w lewo (10 sekund), 11) opuszczanie haka (3 sekundy), 12) zatrzymanie modelu (4 sekundy), 13) podnoszenie haka (3 sekundy), 14) obrócenie wiey w prawo (5 sekund), 15) opuszczanie haka (3 sekundy), 16) zatrzymanie modelu (2 sekundy), 17) podnoszenie haka (3 sekundy) model powinien powróci do pozycji pocztkowej. Rozwizanie: Suma czasu trwania zadanych czynnoci wynosi 62 sekundy. Dodatkowo trzeba uwzgldni to, e przed rozpoczciem wykonywania sekwencji wskazane jest pominicie pierwszego impulsu zegarowego oraz to, e po zakoczeniu sekwencji naley zatrzyma model w kocowej pozycji. Wynika std, e w sumie otrzymujemy 64 róne stany, które mona wygenerowa za pomoc licznika 6-bitowego (2 6 = 64) pobudzanego z generatora sygnałów zegarowych o czstotliwoci 1 Hz. Aby otrzyma taki licznik wystarczy do licznika 4-bitowego doda dwa przerzutniki. Aby uproci fizyczn realizacj układu, do asynchronicznego licznika UCY 7493 dodano dwa standardowe przerzutniki JK kady połczony w układ dwójki liczcej. Poniewa przerzutniki te w rodowisku MAX-plus II s wyzwalane zboczem narastajcym, sygnały zegarowe bdce wyjciami poprzednich bitów stanu podano przez negatory. W ten sposób otrzymano 6-bitowy licznik o wyjciach oznaczonych jako QF, QE (przerzutniki JK), QD, QC QB i QA (układ UCY 7493), przy czym QA jest bitem najmłodszym. Ponadto asynchroniczne wejcia resetujce przerzutniki zostały połczone tak, aby były pobudzane tym samym sygnałem co wejcia resetujce R01 i R02 układu UCY 7493, co umoliwia zerowanie całego licznika jednym sygnałem. Poniewa w zadaniu nie wystpuje konieczno uruchamiania wicej ni jednego silnika w danej chwili czasu, do budowy kompletnego układu sterujcego zostanie wykorzystany dekoder trzech sygnałów sterujcych: Kier, Sil1 i Sil0 na sygnały sterujce modelem dwigu: Z1, K1, Z2, K2, Z3 i K3 zaprojektowany w przykładzie 3.2, zatem dekoder stanów licznika bdzie realizował trzy funkcje (Kier, Sil1, Sil0) szeciu zmiennych (QF, QE, QD, QC QB, QA). Tabela stanów tego dekodera została podana w tablicy 3.5, któr stworzono na podstawie zadanych czynnoci i tablicy 3.3. Funkcje te zrealizowano za pomoc demultipleksera 1/8 oraz trzech multiplekserów 8/1. Na wejcia adresowe C, B, A multiplekserów podano równolegle bity QF, QE, QD licznika a na wej- cia adresowe C, B, A demultipleksera podano odpowiednio bity QC, QB, QA licznika. Dodatkowa kolumna A w tablicy 3.5 oznacza numer wyjcia (i adres) demultipleksera zaleny od bitów QC, QB i QA. 22
Tablica 3.5. Tabela stanów licznika i wyj dekodera stanu Stan licznika Wyjcia Stan licznika Wyjcia Czynno A Czynno A Q QF QE QD QC QB QA Kier Sil1 Sil0 Q QF QE QD QC QB QA Kier Sil1 Sil0 Stop 0 0 0 0 0 0 0 0 0 0 0 0 32 1 0 0 0 0 0 0 0 1 1) 1 1 0 0 0 0 0 1 1 1 1 1 33 1 0 0 0 0 1 0 0 1 2 2 0 0 0 0 1 0 1 1 1 2 34 1 0 0 0 1 0 0 0 1 3 3 0 0 0 0 1 1 0 1 0 3 35 1 0 0 0 1 1 0 0 1 10) 2) 4 4 0 0 0 1 0 0 0 1 0 4 36 1 0 0 1 0 0 0 0 1 5 5 0 0 0 1 0 1 0 1 0 5 37 1 0 0 1 0 1 0 0 1 6 6 0 0 0 1 1 0 0 0 0 6 38 1 0 0 1 1 0 0 0 1 3) 7 7 0 0 0 1 1 1 0 0 0 7 39 1 0 0 1 1 1 0 0 1 0 8 0 0 1 0 0 0 0 0 0 0 40 1 0 1 0 0 0 0 1 0 1 9 0 0 1 0 0 1 0 0 0 11) 1 41 1 0 1 0 0 1 0 1 0 2 10 0 0 1 0 1 0 1 1 0 2 42 1 0 1 0 1 0 0 1 0 4) 3 11 0 0 1 0 1 1 1 1 0 3 43 1 0 1 0 1 1 0 0 0 4 12 0 0 1 1 0 0 1 1 0 4 44 1 0 1 1 0 0 0 0 0 12) 5 13 0 0 1 1 0 1 1 0 1 5 45 1 0 1 1 0 1 0 0 0 6 14 0 0 1 1 1 0 1 0 1 6 46 1 0 1 1 1 0 0 0 0 5) 7 15 0 0 1 1 1 1 1 0 1 7 47 1 0 1 1 1 1 1 1 0 0 16 0 1 0 0 0 0 1 0 1 13) 0 48 1 1 0 0 0 0 1 1 0 1 17 0 1 0 0 0 1 1 0 1 1 49 1 1 0 0 0 1 1 1 0 6) 2 18 0 1 0 0 1 0 0 1 1 2 50 1 1 0 0 1 0 1 0 1 3 19 0 1 0 0 1 1 0 1 1 3 51 1 1 0 0 1 1 1 0 1 4 20 0 1 0 1 0 0 0 1 0 14) 4 52 1 1 0 1 0 0 1 0 1 7) 5 21 0 1 0 1 0 1 0 1 0 5 53 1 1 0 1 0 1 1 0 1 6 22 0 1 0 1 1 0 0 1 0 6 54 1 1 0 1 1 0 1 0 1 7 23 0 1 0 1 1 1 0 0 0 7 55 1 1 0 1 1 1 0 1 0 8) 0 24 0 1 1 0 0 0 0 0 0 15) 0 56 1 1 1 0 0 0 0 1 0 1 25 0 1 1 0 0 1 0 0 0 1 57 1 1 1 0 0 1 0 1 0 2 26 0 1 1 0 1 0 0 0 0 2 58 1 1 1 0 1 0 0 0 0 16) 3 27 0 1 1 0 1 1 1 1 0 3 59 1 1 1 0 1 1 0 0 0 9) 4 28 0 1 1 1 0 0 1 1 0 4 60 1 1 1 1 0 0 1 1 0 5 29 0 1 1 1 0 1 1 1 0 17) 5 61 1 1 1 1 0 1 1 1 0 10) 6 30 0 1 1 1 1 0 0 0 1 6 62 1 1 1 1 1 0 1 1 0 7 31 0 1 1 1 1 1 0 0 1 Stop 7 63 1 1 1 1 1 1 0 0 0 Na podstawie powyszej tabeli i opisanego sposobu realizacji układu otrzymano nastpujce funkcje składowe, przy czym indeks przy nazwie funkcji oznacza numer wejcia informacyjnego multipleksera realizujcego dan funkcj: Kier 0 ( QC,QB,QA ) = Π( 1,2) Kier 1 ( QC,QB,QA ) = Π( 0,1) 0,1) ( QC,QB,QA ) Kier2 ( QC,QB, QA) = Π( = Kier1 Kier 3 ( QC,QB,QA ) = Π( 3,4,5) Kier 4 ( QC,QB,QA ) = 0 Kier 5 ( QC,QB,QA ) = Π( 7) ( QC,QB,QA ) = Π( 7) Kier ( QC,QB,QA ) ( QC,QB,QA ) = Π( 4,5,6) Kier6 = 5 Kier 7 23
Sil1 0 ( QC,QB, QA) = Π( 0,6,7) Sil 1 ( QC,QB,QA ) = Π( 2,3,4) Sil1 2 ( QC,QB,QA ) = Π( 0,1,7 ) Sil1 3 ( QC,QB,QA ) = Π( 3,4,5) = Kier3 ( QC,QB,QA ) Sil1 4 ( QC,QB,QA ) = 0 Sil1 5 ( QC,QB,QA ) = Π( 3,4,5,6 ) Sil1 06 ( QC,QB,QA ) = Sil1 02( QC,QB,QA ) Sil1 7 ( QC,QB,QA ) = Π( 2,3,7) Sil00 ( QC,QB,QA ) = Kier0 ( QC,QB,QA ) Sil0 1 ( QC,QB,QA ) = Π( 5,6,7) Sil0 2 ( QC,QB,QA ) = Π( 4,5,6,7) = QC Sil0 3 ( QC,QB,QA ) = Π( 6,7) Sil0 4 ( QC,QB,QA ) = 1 Sil0 5 ( QC,QB,QA ) = 0 Sil06 ( QC,QB,QA ) = Sil1 2( QC,QB,QA ) Sil0 7 ( QC,QB,QA ) = 0 Po zaprojektowaniu dekodera stanów pozostaje problem uruchomienia układu sterowania w dwóch osobnych trybach działania: jako układ kombinacyjny lub jako układ sekwencyjny. W tym celu do zestawu wej sterujcych Kier, Sil1, Sil0 i Start (patrz przykład 3.2) dodano jeszcze jedno wejcie oznaczone jako Sekw. Jego zadaniem jest uzupełnienie kombinacji czterech wej: Sekw, Kier, Sil1, Sil0. Jako kombinacj umoliwiajc uruchomienie trybu sekwencyjnego wybrano warto tych wej równ 0000 wykrywan przez bramk OR. Sygnał z tej bramki blokuje tryb kombinacyjny (wysyłajc na wejcia Kier, Sil1 i Sil0 kombinacyjnego układu wyjciowego zera) oraz, po zanegowaniu, pozwala na podanie sygnału zegarowego na licznik i wyłczenie sygnału zerujcego ten licznik. Ponadto negacja tego sygnału, oznaczona jako WyS został wyprowadzony na jedno z wyj układu programowalnego w celu zasygnalizowania kombinacji wej uruchamiajcej tryb sekwencyjny. W trybie sekwencyjnym wartoci generowane przez wejcia kombinacyjne s wyzerowane w zwizku z czym nie wpływaj na układ dekodera wyjciowego, który pobiera sygnały zarówno z dekodera stanów jak i z wej sterujcych bezporednio. Po osigniciu maksymalnej wartoci przez licznik równej 111111 wykrywanej przez 8-wejciowa bramk NAND sygnał zegarowy jest bramkowany i licznik si zatrzymuje. Jednoczenie w tym stanie dekoder stanów podaje na wejcia dekodera wyjciowego zerowe pobudzenie, co powoduje zatrzymanie si modelu. W trybie kombinacyjnym licznik zostaje wyzerowany, sygnał zegarowy jest bramkowany przy jednoczesnej moliwoci podania stanu wej sterowania bezporedniego na wejcia dekodera wyjciowego. Przy stanie licznika równym 000000 dekoder stanów podaje na wejcia dekodera wyjciowego zerowe pobudzenie, co nie wpływa na sterowanie w trybie kombinacyjnym. Uruchomienie modelu w obu trybach moliwe jest jedynie po podaniu sygnału Start równego 1. W trybie kombinacyjnym odblokowane zostaj bramki AND podajce sygnał z wej sterujcych na wejcia dekodera wyjciowego, natomiast w trybie sekwencyjnym licznik zostaje wyprowadzony ze stanu zerowania, oraz zostaje podany sygnał zegarowy na wejcie licznika. Zmiana stanu sygnału Start na 0 w trakcie wykonywania sekwencji powoduje wyzerowanie licznika (przez co dekoder stanów poda zera na wejcia dekodera wyjciowego) i zatrzymanie modelu. Ponowne podanie sygnału Start równego 1 uruchomi zaprogramowan sekwencj od pocztku, układ nie ma moliwoci wstrzymania sekwencji i ponownego jej rozpoczcia w tym samym punkcie. Dodatkowym układem na widocznym na schemacie pokazanym na rys. 3.7 jest dekoder sygnałów Kier, Sil1 i Sil0 sterujcych modelem na sygnały sterujce segmentami dwóch wywietlaczy 7-segmentowych. Wywietlacz wskazujcy numer silnika jest sterowany z układu UCY 7448 na którego wejcia podano sygnały Sil1 i Sil0. Wywietlacz pokazujcy wykonywan czynno pracuje w identyczny sposób jak wywietlacz W2 sterowany według tablicy 3.1 i został wykonany za pomoc demultipleksera 1/8, na którego wejcia adresowe C, B, A zostały podane odpowiednio bity Kier, Sil1 i Sil0. Przedstawiony schemat został narysowany z wykorzystaniem wirtualnej szyny połczeniowej. Jej wprowadzenie i wykorzystanie polega na narysowaniu normalnego połczenia midzy 24
dwoma dowolnymi elementami i zmianie wygldu tego połczenia na Bus line grub lini cigł. Czynno t wykonuje si poprzez kliknicie danego połczenia prawym klawiszem myszy i wybór pogrubionej linii poleceniem Line Style. Tak utworzon szyn mona przemieszcza, zmienia jej kształt i rozmiar oraz kopiowa i wkleja. Sygnały znajdujce si w szynie s identyfikowane poprzez ich nazwy, które w prowadza si w miejscach połczenia danego sygnału z szyn. Nazw wprowadza si poprzez kliknicie prawym klawiszem myszy na połczeniu i prowadzeniu nazwy poleceniem Enter Node/Bus Name z menu kontekstowego. Zaprezentowany układ zaimplementowano praktycznie, jako wejcia Sil1 i Sil0 wybrano dwa młodsze bity nastawnika NA odpowiednio NA_1 i NA_0, wejcia Sekw i Kier przyporzdkowano do dwóch młodszych bitów nastawnika NB: NB_1 i NB_0. Sygnał Start jest podawany z przycisku SW2_NO, a zegar na zwork JP1. Wyjcia WyS i WyZeg (wskazujce podłczenie zewntrznego zegara) podano odpowiednio na diody LED D8 i DP2. Pozostałe wyjcia przyporzdkowano zgodnie z tablic 2.3. Rys. 3.7. Schemat kombinacyjno-sekwencyjnego układu sterowania modelem dwigu W celu sprawdzenia poprawnoci rozwizania przeprowadzono symulacj układu i otrzymano przebiegi czasowe (rys.3.8), na których widoczna jest pełna sekwencja, pocztek nastpnej sekwencji uruchomionej po ponownym podaniu sygnału Start oraz działanie układu w trybie kombinacyjnym. Rys. 3.8. Przebiegi czasowe w kombinacyjno-sekwencyjnym układzie sterowania modelem dwigu 25
4. Przyporzdkowanie wej i wyj logicznych do wyprowadze fizycznych układu programowalnego w pakiecie Altera Max+Plus II Rozmieszczenie sygnałów logicznych wród wyprowadze układu programowalnego zaley od budowy konkretnego zestawu laboratoryjnego. Za wyjtkiem wyprowadze pełnicych okrelone funkcje w układzie programowalnym (np. zasilanie, Clear, OE, interfejs JTAG, zegary) wszystkie pozostałe wyprowadzenia s uniwersalnymi wejciami lub wyjciami logicznymi. Podczas tworzenia projektu naley zawsze posługiwa si tabel zawierajc list wykorzystanych wyprowadze w docelowym zestawie uruchomieniowym. Zestawy uruchomieniowe w wikszoci przypadków zawieraj wyprowadzenia jednokierunkowe (wejcia lub wyjcia), rzadkie s przypadki wyprowadze dwukierunkowych. Z reguły nie wszystkie wyprowadzenia I/O układów programowalnych s wykorzystane w zestawach uruchomieniowych. Jest to konieczne ze wzgldu na fakt traktowania niewykorzystanych kocówek I/O przez układ programowalny jako komórki pamici, zatem musz one pozosta wiszce. Uwagi: Niewykorzystane wyprowadzenia wejciowe i wyjciowe, wystpujce w zestawach laboratoryjnych jako piny przeznaczone do łczenia z innymi układami logicznymi, musz pozosta nie podłczone. W zestawach laboratoryjnych wyprodukowanych przez firm BTC wystpuje powany błd konstrukcyjny: kocówki układów PLD połczone z nastawnikami szesnastkowymi N1 i N2 oraz przełcznikami SW2 i SW3 musz by zawsze deklarowane jako wejcia, niezalenie czy maj okrelone znaczenie w danym projekcie, czy nie. Mona na przykład wykona na nich elementarn funkcj logiczn (sum lub iloczyn wszystkich sygnałów), a jej wynik wywietli na jednej z diod lub segmencie wywietlacza. Jeeli zworki JP1 i JP2 nie s wykorzystane naley pozostawi je wiszce. Poniej podany został skrócony tok postpowania podczas projektowania z wykorzystaniem pakietu Altera MAX+plus II Baseline. Dokładniejszy opis wszystkich czynnoci oraz podstawowe wiadomoci o jzyku opisu sprztu VHDL zostały przedstawione w laboratoryjnej instrukcji obsługi rodowiska MAX+plus II Baseline. 1. Utworzenie projektu i pierwsza kompilacja: przed uruchomieniem programu MAX+plus II mona utworzy pusty katalog, który bdzie zawierał tworzony projekt; po uruchomieniu programu MAX+plus II naley poleceniem File Project Name uruchomi okno tworzenia nowego projektu (rys. 4.1), nada nazw projektu w polu Project Name oraz wskaza utworzony wczeniej katalog do przechowywania tego projektu i zamkn okno przyciskiem OK; poleceniem File New otworzy okno wyboru rodzaju pliku opisujcego projekt (rys. 4.2) i wybra opcj Text Editor File plik tekstowy i potwierdzi przyciskiem OK; po wprowadzeniu opisu projektu w edytorze tekstowym naley zapisa opis projektu poleceniem File Save As, które otworzy okno zapisu (rys. 4.3. naley zwróci uwag na zgodno nazw i typ pliku zaznaczone na rysunku elipsami), w tym oknie naley rcznie wpisa nazw pliku w polu File Name wraz z rozszerzeniem.vhd; wprowadzane nazwy musz by takie same ze wzgldu na wymagania kompilatora; zamkn okno przyciskiem OK; poleceniem MAX+plus II HierarchyDisplay (rys. 4.4) sprawdzi, czy plik opisu w jzyku VHDL jest na szczycie hierarchii opisu; 26
poleceniem Assign Device wybra układ docelowy, w tym przypadku z rodziny MAX7000S układ EPM7128SLC84-15 (rys. 4.5); aby układ ten był widoczny na licie naley odznaczy opcj Show Only Fastest Speed Grades; wybór naley potwierdzi przyciskiem OK; poleceniem MAX+plus II Compiler otworzy okno kompilatora i uruchomi kompilator przyciskiem Start; po pomylnym zakoczeniu kompilacji (rys. 4.6) mona przystpi do kolejnego etapu implementacji projektu; jeeli wystpiły błdy (Errors), naley wprowadzi niezbdne poprawki w kodzie opisu projektu, natomiast ostrzeenia (Warnings) mog wskazywa na błdy w projekcie, jednak nie uniemoliwiaj one dalsz prac. Rys. 4.1. Okno wyboru lokalizacji i nazwy projektu Rys. 4.2. Okno wyboru rodzaju opisu projektu Rys. 4.3. Okno zapisu pliku z opisem projektu 27
Rys. 4.4. Okno hierarchii projektu Rys. 4.5. Okno wyboru układu docelowego Rys. 4.6. Okno kompilatora po pomylnej kompilacji projektu 2. Przypisywanie sygnałów do właciwych wyprowadze Po pierwszej kompilacji zadeklarowane w projekcie sygnały logiczne s przypisane arbitralnie (rys. 4.7), program rozpoczyna rozmieszczanie wej do wyprowadze o najniszych numerach a wyj do wyprowadze o najwyszych numerach. Jest to widoczne po uruchomieniu edytora wyprowadze poleceniem MAX+plus II Floorplan Editor. Rys. 4.7. Rozmieszczenie wej i wyj po pierwszej kompilacji 28
Aby zmieni domylne przyporzdkowanie wyprowadze na zgodne z budow zestawu uruchomieniowego naley, posługujc si edytorem wyprowadze, wykona nastpujce czynno- ci: 1. odnale w instrukcji obsługi zestawu tabel lub rysunek z rozkładem wyprowadze; 2. zaznaczy wyprowadzenie przeznaczone do zmiany lokalizacji poprzez kliknicie na nim lewym przyciskiem myszy (rys. 4.8); 3. na zaznaczonym wyprowadzeniu uruchomi menu kontekstowe poprzez kliknicie prawym przyciskiem myszy i wybra polecenie Assign Pin/Location/Chip (rys. 4.9) w celu uruchomienia okna zmian przyporzdkowania sygnału; ten sam skutek wywoła wykonanie polecenia Assign Pin/Location/Chip z głównego menu programu; 4. w oknie zmian przyporzdkowania sygnału (rys. 4.10) naley w polu Pin wpisa poprawny numer wyprowadzenia w zestawie docelowym, zatwierdzi t czynno kolejno przyciskami Add (sygnał powinien pojawi si na licie przyporzdkowanych) oraz OK; 5. czynnoci z podpunktów 2 4 naley powtórzy dla wszystkich sygnałów zawartych w projekcie; podczas wykonywania tych czynnoci edytor wyprowadze nie uaktualnia widoku wyprowadze; 6. po wykonaniu powyszych czynnoci naley ponownie skompilowa projekt za pomoc okna kompilatora poleceniem MAX+plus II Compiler. 7. po udanej kompilacji widok w edytorze wyprowadze zostanie automatycznie zaktualizowany; w przypadku stwierdzenia pomyłki naley ponownie wywoła polecenie Assign Pin/Location/Chip (jak w podpunkcie 3), wprowadzi poprawny numer wyprowadzenia, zatwierdzi zmian kolejno przyciskami Change i OK; po wprowadzeniu jakichkolwiek poprawek projekt naley kompilowa ponownie; 8. po kompilacji projekt jest gotowy do dalszej pracy, czyli symulacji lub programowania układu docelowego. Rys. 4.8. Zaznaczenie sygnału do zmiany lokalizacji Lista sygnałów przyporzdkowanych Rys. 4.9. Polecenia w menu kontekstowym Rys. 4.10. Okno zmiany przyporzdkowania sygnału 29