DATA: Ćwiczenie nr 4 PROTOTYPOWANIE UKŁADÓW ELEKTRONICZNYCH Programowalne układy logiczne FPGA Maciej Rosół, Katedra Automatyki AGH, e-mail: mr@ia.agh.edu.pl 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z możliwością wykorzystania programowalnych układów logicznych FPGA do akwizycji danych z urządzeń pomiarowych z cyfrowym interfejsem wyjściowym oraz generacji sygnałów sterujących dla urządzeń wykonawczych z cyfrowym interfejsem wejściowym (np. PWM). 2. Wstęp W ramach ćwiczenia należy zrealizować projekt logiki generujący sygnały wejściowe dla sterownika mocy PWM. Wejściowe sygnały sterownika mocy podłączane są do wybranych końcówek układu FPGA (rodzina Spartan II) znajdującego się na zestawie uruchomieniowym firmy Memec. Projekt logiki dla układu FPGA należy wykonać w pakiecie WebPack. Pakiet WebPack dostępny jest bezpłatnie w Internecie wraz z modułem symulacyjnym pod adresem URL http://www.xilinx.com/sxpresso/webpack.htm. W ramach zajęć laboratoryjnych grupy studenckie otrzymują szablonowy projekt logiki zawierający plik konfiguracyjny dotyczący parametrów pracy układu i specyfikacji wyprowadzeń. Ten fragment projektu nie jest merytorycznie związany z wykonywanym ćwiczeniem i nie będzie omawiany w niniejszym opisie. 3. Wykorzystanie pakietu WebPack do generacji projektów logiki Projekt logiki programującej układ FPGA zrealizowany jest za pomocą pakietu WebPack. Pakiet wykorzystywany jest do tworzenia tzw. bitstream-ów (plików o rozszerzeniu bit). Dodatkowy program pozwala tworzyć pliki w formacie SVF umożliwiającym programowanie układu FPGA za pośrednictwem protokołu JTAG. Programowanie odbywa się poprzez port równoległy i nie jest w tym celu wymagany żaden dodatkowy sprzęt.??? Problemy do samodzielnego rozwiązania przez studentów Jaka jest zasada pracy protokołu JTAG? W trakcie zajęć grupy studenckie otrzymują szablonowy projekt logiki zawarty w pliku pue2004.npl. 3.1. Uruchomienie programu WebPack Główny program pakietu WebPack zawarty jest w pliku webpack.exe. Jest on związany z ikoną przedstawioną na Rys.1. 1
Rys.1. Ikona głównego programu pakietu WebPack. Rys.2. Okno nawigatora projektów. Uruchomienie programu powoduje otwarcie okna nawigatora projektu (Rys. 2). Zawiera on następujące cztery podokna: 1. Sources in Project zawiera nazwę projektu (PUE2004), określenie typu układu FPGA który poddany zostanie programowaniu oraz informację, że będzie on programowany w języku VHDL (xc2s100-5pq208-xst VHDL) oraz listę plików wchodzących w skład projektu (PUE2004.sch; PUE2004.ucf). Studenci mogą zmieniać jedynie plik GenerPWM.vhd. W przypadku realizacji generatora sygnału PWM jako schematu należy plik GenerPWM.vhd usunąć, 2. Processes for Source lista operacji, które można przeprowadzić w aktualnym projekcie. W celu wygenerowania nowej wersji logiki należy dwukrotnie kliknąć opcję Generate Programming File po uprzednim zaznaczeniu pola PUE2004.sch w oknie Sources in Project, 3. Okno edytora plików źródłowych znajduje się w prawej-górnej części okna nawigatora. Zawiera edytowany program w języku VHDL. Program przywołuje się do edycji poprzez dwukrotne naciśnięcie myszy na odpowiednim pliku w oknie Sources in Project, 4. Okno komunikatów znajduje się w dolnej części okna nawigatora. Zawiera komunikaty związane z wykonywanymi operacjami, a w szczególności komunikaty błędów dotyczące tworzonych w języku VHDL programów. 2
3.2. Programowanie układu FPGA Na podstawie projektów pakietu WebPack tworzone są pliki, które mogą zostać wykorzystane do programowania struktury logicznej układu FPGA. Docelowe programowanie układu FPGA odbywa się poprzez protokół JTAG z wykorzystaniem pliku typu BIT. Pliki typu BIT tworzone są przez nawigator projektów po dwukrotnym naciśnięciu myszy na polu Generate Programming File w oknie Processes for Source po uprzednim zaznaczeniu pola PUE2004.sch w oknie Sources in Project. W oknie komunikatów pojawiają się komunikaty o aktualnie wykonywanych fazach operacji generowania plików typu BIT. Ewentualne błędu w dowolnej fazie sygnalizowane są za pomocą komunikatów w języku czerwonym. Komunikaty błędów zwykle dotyczą błędnych instrukcji w plikach źródłowych języka VHDL. Programowanie układu Spartan 2 wchodzącego w skład systemu uruchomieniowego odbywa się za pomocą portu równoległego. W celu dokonania operacji programowania należy dwukrotnie kliknąć opcję Configure Device (impact) z zakładki Generate Programming File w oknie Processes for Source. Otworzy się okno pokazane na Rys. 3. Rys. 3. Programowanie układu Spartan 2. W oknie tym należy zaznaczyć układ xc2s100 a następnie przycisnąć prawy przycisk myszy i wybrać opcję Program. Po kilku (kilkunastu) sekundach układ zostanie zaprogramowany. 3
4. Stanowisko laboratoryjne Stanowisko laboratoryjne składa się z: Komputera klasy PC wraz z oprogramowaniem WebPack, Zestawu uruchomieniowego firmy Memec zawierającej układ FPGA typu Spartan II, Sterownika mocy z wejściem sterującym typu PWM i silnika DC wykorzystanego jako obciążenie. Element mocy wykorzystywany w ćwiczeniu posiada trzy wejścia sterujące: PWM: właściwy sygnał sterujący mocą wydzielaną do obciążenia. Jest to sygnał o ustalonej częstotliwości i regulowanym współczynniku wypełnienia (patrz Rys. 5) DIR: sygnał zmiany kierunku przepływu prądu przez obciążenia (decyduje np. o zmianie kierunku obrotów silnika DC). BRAKE: sygnał odłączający obciążenie od sterownika mocy. Wszystkie sygnały wejściowe sterownika mocy posiadają optoizolację. Użyte układy optoizolatorów ograniczają maksymalną częstotliwość sygnału PWM do około 35 khz. Połączenie pomiędzy kartą pomiarowo-sterującą a sterownikiem mocy zrealizowano z wykorzystanie tzw. Wire Terminal a. Połączenie to nie powinno być zmieniane podczas ćwiczeń laboratoryjnych, aby nie uszkodzić układu FPGA. 5. Przebieg ćwiczenia W ramach zajęć laboratoryjnych należy w pakiecie WebPack zrealizować projekt generatora sygnałów sterujących dla kontrolera mocy w szczególności sygnału PWM (patrz Rys. 5) zgodnie ze schematem blokowym z Rys. 6. Projekt logiki może być utworzony w postaci komponentu napisanego w języku VHDL lub w postaci schematu złożonego z gotowych elementów bibliotecznych dostarczonych dla układu Spartan II. UWAGA!!! Etapy: projektowania, programowania układu FPGA i testowania powinny być przeprowadzane przy wyłączonym zasilaniu sterownika mocy. U [V] Podstawowy okres sygnału PWM Czas [s] 4
Rys. 5. Sygnał PWM Generator 40MHZ Programowalny dzielnik przez liczbę z zakresu 1 (2 16-1) Licznik 12 bitowy Dane z komputera Dzielnik częstotliwości podstawowej (rejestr) Stan licznika Czas trwania stanu wysokiego (rejestr) Komparator (8 lub 12 bitów) Sygnał PWM Rys. 6. Generator sygnału PWM Jeżeli generator sygnału PWM będzie realizowany z wykorzystaniem języka VHDL to wynikowy element biblioteczny wygenerowany na bazie pliku *.vhdl powinien mieć strukturę jak na Rys. 7. Rys. 7. Struktura bloku generatora PWM Znaczenie poszczególnych sygnałów jest następujące: CLK. Podstawowy zegar generatora podany na wejście bloku (na Rys. 6 oznaczony kolorem zielonym). Freq. Sygnał wejściowy decydujący o częstotliwości sygnału PWM (zawartości rejestru decydującego o dzielniku częstotliwości). Szerokość tego sygnału wynosi 1 bit. PWM. Sygnał wejściowy decydujący o czasie trwania stanu wysokiego sygnału PWM. PWM_OUT. Sygnał wyjściowy typu PWM z generatora. 5
Po zrealizowaniu projektu logiki należy wygenerować plik programujący zgodnie z opisem w rozdziale 3.2 i zaprogramować układ FPGA. Jeżeli wyniki testów przebiegną pomyślnie i zostaną zatwierdzone przez prowadzącego zajęcia należy podłączyć zasilanie do układu mocy i sterować dołączonym do niego silnikiem DC. 6. Literatura 1. Wrona W.: VHDL język opisu i projektowania układów cyfrowych, Wydawnictwo Pracowni Komputerowej Jacka Skalmierskiego, Gliwice, 1998. 2. Praca zbiorowa pod redakcją Józefa Kalisza: Język VHDL w praktyce, Wydawnictwo Komunikacji i Łączności, Warszawa, 2002. 3. Zbysiński Piotr, Pasierbiński Jerzy: Układy programowalne pierwsze kroki, Wydawnictwo BTC, Warszawa, 2002. 4. Shahill Kevin: Język VHDL. Projektowanie programowalnych układów logicznych, Wydawnictwo Naukowo-Techniczne, Warszawa, 2001. 5. IEEE Standard VHDL Language Reference Manual, IEEE Std. 1076-1987, Institute of Electrical and Elecronic Engineers, 1988. 6. IEEE Standard VHDL Language Reference Manual, ANSI/IEEE Std. 1076-1993, Institute of Electrical and Elecronic Engineers, 1984. 7. XILINX - opis pakietu WebPack, Internet. 8. XILINX - katalogi firmowe, Internet. 9. Navabi Z.: VHDL. Analysis and Modeling of Digital Systems, McGraw-Hill, New York, 1998. 10. Ashenden P.J.: The VHDL Cookbook. First Edition, Dept. Computer Science, University of Adelaide, South Australia, 1990, materiały dostępne w sieci Internet. 6