Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE...

12
Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna dr inż. Jarosław Sugier Ver. 11

Transcript of Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE...

Page 1: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna

dr inż. Jarosław Sugier

Ver. 11

Page 2: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 1 –

1 Wiadomości ogólne

Zintegrowane środowisko Xilinx ISE służy do wykonania wszystkich operacji związanych z przygotowaniem projektu układu cyfrowego oraz jego implementacji w układzie CPLD lub FPGA. Uruchamiane jest ikoną „Xilinx ISE 11” , umieszczoną na pulpicie systemu Windows, bądź z menu Start o tej samej nazwie.

Podstawową platformą środowiska jest aplikacja „Project Nawigator”, z której, uruchamiając inne składniki pakietu, można edytować pliki źródłowe, sterować procesem syntezy i implementacji oraz zaprogramować układ poprzez interfejs JTAG.

Widoczne na rys. 1 okno główne aplikacji „Project Nawigator” dzieli się na 4 ogólne obszary:

(a) drzewo plików źródłowych „Sources” przedstawiające w formie hierarchicznej wszystkie elementy źródłowe projektu;

(b) drzewo procesów „Processes” wyświetlające operacje dostępne dla elementu źródłowego aktualnie wybranego w oknie (a);

(c) konsola wyświetlająca komunikaty generowane przez procesy przetwarzające elementy źródłowe;

(d) obszar roboczy, używany do edycji plików projektu, wizualizacji wyników itp.

Pole „Sources for:” w oknie źródłowym (a) decyduje o tym, jakiego typu składniki projektu są w nim wyświetlane. Możliwe są do wyboru dwie opcje: implementacja oraz symulacja, przy czym dla opcji symulacja dodatkowo w rozwijanym oknie wybiera się jej typ: behawioralna (bez opóźnień czasowych) lub projektu zaimplementowanego

(a)

(b)

(c)

(d)

Rys. 1 Okno główne środowiska ISE: (a) elementy źródłowe projektu, (b) okno procesów, (c) okno

konsoli, (d) obszar roboczy.

Page 3: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 2 –

w rzeczywistym układzie z uwzględnieniem wszystkich opóźnień (post-fit).

Zawartość okna procesów (b) zależy od tego, jakiego rodzaju element (schemat, moduł VHDL, wektor testowy…) jest aktualnie wybrany w oknie plików źródłowych (a). Większość operacji podczas pracy nad projektem wykonuje się wybierając najpierw odpowiedni plik źródłowy w oknie (a) (co może wymagać przełączenia opcji „Sources”) i następnie uruchamiając żądany proces w oknie (b).

Uruchomienie procesu widocznego w oknie (b) możliwe jest przez jego dwukrotne kliknięcie. Środowisko ISE domyślnie wykonuje wówczas proces w trybie „automake”, tzn. przed jego wywołaniem aktualizuje pliki wynikowe kroków wcześniejszych, o ile jest to potrzebne (decyduje porównanie daty utworzenia plików wynikowych oraz źródłowych).

Często przed uruchomieniem procesu konieczne jest ustawienie jego specyficznych parametrów. Wykonuje się to poprzez okno właściwości (przykład na rys. 2), otwierane poleceniem „Properties” z menu kontekstowego, które pojawia się po kliknięciu na proces prawym klawiszem myszy.

Polecenie „Rerun All” w menu kontekstowym procesu powoduje bezwarunkowe powtórzenie wszystkich poprzednich kroków projektowych. Jest to zalecona metoda odświeżenia stanu projektu po wprowadzeniu wielu zmian, które nie zawsze są poprawnie wykrywane przez mechanizm „automake”.

Do przywrócenia domyślnego rozkładu okien w aplikacji „Project Nawigator” służy polecenie View → Restore Default Layout.

Okno źródłowe (a) oraz procesów (b) umieszczone są w zakładce „Design”; uruchomienie w obszarze roboczym np. edytora schematów często powoduje automatyczne przełączenie zakładek.

W każdym programie środowiska ISE polecenie menu „Help → Software Manuals” otwiera dokument z odnośnikami do pełnej dokumentacji elektronicznej PDF „Xilinx ISE Software Manuals”. Ponadto, dodatkowe informacje na temat pracy konkretnych aplikacji dostępne są w standardowym systemie pomocy MS Windows otwieranym poleceniem „Help → Help Topics”.

Rys. 2 Okno właściwości procesu „Implement Design → Fit”.

Page 4: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 3 –

UWAGI OGÓLNE

1) W ścieżce katalogu z projektem ISE nie mogą występować odstępy (w szczególności więc nie należy umieszczać projektów na pulpicie Windows!).

2) Nazwy niektórych plików źródłowych są używanie jako identyfikatory w kodzie VHDL i należy tworzyć je tak, aby spełniały odpowiednie warunki (muszą rozpoczynać się od litery oraz nie mogą zawierać żadnych znaków innych niż litery, cyfry oraz znak podkreślenia ‘_’). Błędy tego rodzaju w nazwach plików są szczególnie dotkliwe, gdyż nie są sygnalizowane przez program, a objawiają się dopiero złą praca niektórych jego narzędzi.

3) Jeśli aplikacja „Project Navigator” została zamknięta awaryjnie wskutek błędu wewnętrznego, należy sprawdzić czy pozostał po niej proces _pn.exe i w razie potrzeby zamknąć go ręcznie.

4) Aplikację iMPACT (patrz dalej) służącą do programowania układu lepiej uruchamiać jej ikoną na pulpicie niezależnie od Nawigatora Projektu; w Nawigatorze należy wówczas przeprowadzać implementację do procesu „Generate Progamming File” włącznie i następnie załadować powstały plik JED do aplikacji iMPACT.

2 Synteza układu opisanego w postaci schematowej

Rozdział ten omawia główne kroki przy projektowaniu układu, którego opis zadany jest w postaci schematu logicznego.

2.1 Utworzenie nowego projektu 1º Wybierz „File → New Project…”. W pierwszym oknie parametrów projektu podaj jego

nazwę, lokalizację oraz rodzaj głównego pliku źródłowego „Top-Level Source Type”; w tym przypadku wybierz „Schematic”.

2º W drugim oknie parametrów wybierz kategorię oraz rodzinę układów, konkretne urządzenie, typ obudowy oraz gradację szybkości. Pozostałe parametry:

„Synthesis Tool = XST (VHDL/Verilog)” „Simulator = Modelsim-XE VHDL” „Preferred Language = VHDL”

Naciśnij klawisz „Next”.

3º Utwórz nowy plik ze schematem: klawisz „New Source…” → rodzaj pliku „Schematic”, wpisz nazwę pliku, pozostaw opcję „Add to project” włączoną, naciśnij „Next” i potwierdź wpisane parametry w kolejnym oknie.

4º W kolejnym oknie „Add existing sources” (klawisz „Next”) nie wykonuj żadnych operacji; naciśnij klawisz „Next”.

5º Sprawdź opcje tworzonego projektu i zatwierdź klawiszem „Finish”.

2.2 Edycja schematu Po utworzeniu nowego projektu wg powyższych kroków środowisko automatycznie wywołuje edytor schematów ECS. Dla schematu już istniejącego w projekcie edytor ten można uruchomić klikając dwukrotnie jego plik (.sch) w oknie elementów źródłowych projektu.

Page 5: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 4 –

Domyślnie edytor jest wyświetlany jako podokno w obszarze roboczym nawigatora, ale możliwa jest także jego praca niezależna (rys. 3). Przełączenie się pomiędzy tymi dwoma trybami pracy umożliwiają klawisze oraz .

Podczas edycji schematu należy umieszczać symbole elementów logicznych wybrane w zakładce „Symbols” po lewej stronie obszaru roboczego (klawisz na pasku narzędzi). Do rysowania połączeń służy polecenie menu „Add → Wire” ( ), własne nazwy można im nadawać poleceniem „Add → Net Name” ( ). Sygnały WE/WY projektu należy umieścić na szczytowym schemacie jako znaczniki WE/WY („Add → I/O Marker”; ).

Dwukrotne kliknięcie dowolnego elementu na schemacie otwiera okno z jego atrybutami. Poprzez atrybuty połączenia z portem WE/WY można nadać mu nazwę własną; kierunek portu (WE lub WY) także jest atrybutem.

Opisy wszystkich elementów logicznych zawarte są w dokumencie „Libraries Guide” dostępnym w systemie pomocy jako plik PDF. Opisy poszczególnych elementów można wywołać klawiszem „Symbol Info” na dole zakładki „Symbols” .

Źródłami sygnałów logicznej 1 oraz 0 są elementy „vcc” oraz „gnd”; bramka negacji nosi nazwę INV.

Na rysunku 3 widać zasadę konstruowania magistral sygnałowych: rozmiar magistrali należy podać w nazwie sygnału jako zakres indeksu (X:Y), a dostęp do jej poszczególnych składowych następuje poprzez odwołanie się do konkretnej wartości indeksu w nazwie połączenia odchodzącego od magistrali. Zakres indeksu nie musi być malejący ani kończyć się na 0, choć tak standardowo się je tworzy. Elementem graficznym przedstawiającym dołączenie linii do magistrali jest tzw. „bus tap” ( ).

W zakładce „Options” są dostępne ważne opcje edycji, np. zaznaczanie całości połączenia lub tylko pojedynczych jego odcinków (przydatne przy usuwaniu), automatyczne lub ręczne trasowanie geometrii połączeń podczas ich dodawania („Autorouter”), itp. Widoczne opcje zależą od aktualnie wybranego narzędzia rysowania.

Rys. 3 Edytor schematów ECS (oraz przykład użycia 4-bitowej magistrali sygnałowej).

Page 6: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 5 –

Przydatne skróty klawiszowe: F8 / F7= Zoom In/Out, F5 = Refresh.

Po zakończeniu edycji schematu należy sprawdzić jego poprawność poleceniem „Tools → Check Schematic” ; jeśli znajdowane są błędy, raportowane symbole lub połączenia można wyszukać poleceniem „Edit → Find (Ctrl+F)”.

Nazwy portów na schemacie muszą być poprawnymi identyfikatorami języka VHDL: muszą zaczynać się od litery, nie mogą być słowami kluczowymi, np. „in”, „out”, itp. Błędy tego rodzaju nie zawsze są wykrywane przez polecenie „Check Schematic”.

Dalszych szczegółowych informacji nt. edytora ECS należy szukać w jego systemie pomocy on-line.

2.3 Określenie lokalizacji sygnałów WE/WY Przypisanie sygnałów WE/WY projektu do konkretnych wyprowadzeń obudowy układu CPLD jest fragmentem szerszego zagadnienia, jakim jest definiowanie ograniczeń projektowych („user constraints”). Sformułowane ograniczenia są przechowywane w pliku tekstowym o rozszerzeniu UCF, który jest jednym z (ważnych!) elementów źródłowych projektu i jest widoczny w drzewie plików wejściowych Nawigatora.

Podczas pracy z płytą ZL-9572 należy korzystać z pliku UCF dostępnego na stronie WWW, który zawiera przypisania wszystkich wyprowadzeń. Plik ten należy dodać do projektu („Project → Add Source”) i następnie usunąć w nim znaki komentarza (#) w liniach opisujących porty rzeczywiście występujące na schemacie.

W przypadku ogólnym utworzenie nowego pliku UCF oraz przypisanie wyprowadzeń można wykonać na dwa sposoby:

1) dodając ręcznie źródło UCF do projektu (menu „Project → New Source → Implementation Constraints File”), następnie wykonując jego edycję („User Constraints → Edit Constraints (Text)”) i wpisując odpowiednie linie z poleceniami LOC:

#Format: NET "NazwaPortu" LOC = "Wyprowadzenie"; NET "We1" LOC = "P13"; NET "We2" LOC = "P12"; NET "Wy" LOC = "P24"; ...

2) uruchamiając aplikację PACE – „Pinout Area Constraints Editor” („User Constraints → Floorplan IO – Pre-Synthesis”), w której można przeciągnąć myszką porty WE/WY na graficzny obraz obudowy układu.

Jeśli po uruchomieniu aplikacji PACE lista widocznych w nim portów nie zgadza się z rzeczywistymi sygnałami WE/WY projektu, należy ją zamknąć i wykonać edycję tekstową pliku UCF jak w punkcie 1.

Symbole wyprowadzeń podawane z poleceniach LOC zależą od typu obudowy. Dla obudowy typu PLCC numeracja wyprowadzeń jest liniowa i symbole maja postać „PNrWypr”, dla obudów BGA, używanych w układach FPGA, symbole mają postać „szachową”, np. A1, C35 itp. W każdym przypadku należy sprawdzić w dokumentacji, do którego wyprowadzenia obudowy powinien być dołączony każdy port i opisać to odpowiednio w pliku UCF.

Page 7: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 6 –

Jeśli w projekcie pozostają porty, dla których nie podano poleceń LOC w pliku UCF, program automatycznie przypisze im lokalizację wg własnych kryteriów. Implementacja projektu będzie wówczas wykonywana, ale nie ma dużych szans na jej poprawną pracę w sprzęcie.

2.4 Symulacja projektu Symulacja przygotowanego projektu wymaga zdefiniowania pliku VHDL z wektorami pobudzeń dla portów WE oraz wywołania symulatora ModelSim-XE, który obliczy oraz przedstawi graficznie wygenerowane przez układ odpowiedzi na portach WY. Sam język VHDL będzie omawiany na wykładzie, natomiast podane niżej informacje wstępne, choć fragmentaryczne, są wystarczające do pisania prostych wektorów pobudzeń na początkowych zajęciach. System ISE automatycznie generuje odpowiedni szablon VHDL dla układu ze wskazanego schematu – zob. przykład na rys. 4.

Utworzenie pliku VHDL z pobudzeniami testowymi

1º Wybierz polecenie „Project → New Source…”, zaznacz „VHDL Test Bench” oraz podaj nazwę pliku; w następnym oknie zaznacz plik schematowy projektu jako obiekt symulacji.

2º Po zatwierdzeniu parametrów zostanie utworzony plik o rozszerzeniu .vhd z automatycznie utworzoną jednostką testową (ENTITY) oraz architekturą (ARCHITECTURE). Wygenerowane nazwy jednostki oraz architektury nie są istotne, uzupełnienia natomiast wymagać będzie treść architektury zawarta pomiędzy słowami BEGIN … END.

3º Przed modyfikacją treści architektury należy zwrócić uwagę na jej część deklaracyjną przed słowem BEGIN. Powinny znajdować się w niej automatycznie wygenerowane: deklaracja symulowanej jednostki (COMPONENT) z portami WE/WY jak na schemacie

Rys. 4 Automatycznie wygenerowany szablon kodu VHDL dla jednostki testowej uzupełniony o instrukcje przypisania pobudzeń dla wejść we1 i we2.

Page 8: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 7 –

oraz definicje odpowiadających im sygnałów (SIGNAL). Identyczne nazwy sygnałów oraz portów w języku VHDL nie powodują konfliktów; ponadto duże i małe litery nie są rozróżniane w identyfikatorach, więc tego typu różnice mogą wystąpić.

4º W treści architektury (po słowie BEGIN) powinna znajdować się instrukcja instancji zadeklarowanego wyżej komponentu UUT: (…) ;. Należy pozostawić ją bez zmian, natomiast dalsze instrukcje (do słowa END) usunąć – zostaną zastąpione poleceniami własnymi.

5º Za instancją komponentu dopisz pobudzenia tych sygnałów, które odpowiadają portom WE. Najprościej można to zrobić instrukcjami przypisań współbieżnych ‘<=’, których uproszczoną składnię wystarczająco tłumaczą następujące dwa przykłady: we1 <= '0', '1' after 100 ns, '0' after 300 ns; we2 <= '0', '1' after 200 ns, '0' after 400 ns;

Dla każdego sygnału WE należy podać dokładnie jedną instrukcję przypisania. W przykładach powyższych we1 i we2 są ich nazwami, '0' oraz '1' są przypisywanymi wartościami, natomiast po słowach after podawane są momenty czasu, w których dane przypisanie ma mieć miejsce. Efekt powyższych dwóch instrukcji można zobaczyć na rys. 5: oba sygnały są początkowo inicjalizowane zerem logicznym, po czym na każdym z nich pojawia się trwający 200 ns impuls jedynkowy. Różne przesunięcie czasowe impulsu daje efekt dwubitowego kodu Gray’a.

Gdy zachodzi potrzeba generacji fali prostokątnej o wypełnieniu 50% i stałym okresie należy dopisać inicjalizację wartości początkowej sygnału do jego definicji w części deklaracyjnej: SIGNAL Clk : STD_LOGIC := '0';

oraz w treści architektury zastosować przypisanie jak w poniższym przykładzie: Clk <= not Clk after 500 ns;

(gdzie przykładowa wartość 500 ns oznacza żądaną wartość półokresu).

Oznaczenia jednostek czasu w języku VHDL: fs, ps, ns, us, ms, sec.

Sygnałom, które są wektorami (odpowiadają portom magistralowym), przypisuje się stałe ujęte w znaki "…": SIGNAL K : STD_LOGIC_VECTOR( 3 DOWNTO 0 ); (...) K <= "0000", "0001" after 100 ns, "0011" after 300 ns;

Stałe wektorowe, których długość jest wielokrotnością 4, można zapisywać w notacji heksadecymalnej: "0011" = X"3", "11110111" = X"F3", itp. (ale "011" ≠ X"3").

Wywołanie symulatora ModelSim 1º W oknie plików źródłowych wybierz opcję „Sources for: Simulation” oraz zaznacz

utworzony powyżej plik VHDL z pobudzeniami (ale nie również widoczny poniżej podporządkowany mu element UUT!). Uruchom proces „ModelSim Simulator → Simulate Behavioral Model” lub „ModelSim Simulator → Simulate Post-Fit Model”; zostanie uruchomiona aplikacja ModelSim-XE.

W przypadku wybrania symulacji czasowej „post-fit” może okazać się konieczna synteza i implementacja układu; jeśli nie zakończy się powodzeniem, zamiast oczekiwanej pracy z aplikacją ModelSim trzeba będzie wrócić do poprawiania błędów wykrytych w projekcie.

Page 9: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 8 –

2º Symulator ModelSim pracuje we własnym środowisku z szeregiem obszarów roboczych; okno z obliczonymi przebiegami czasowymi (Wave) pokazuje rys. 5.

Przełączanie podokien ModelSim do oraz z trybu niezależnego umożliwiają klawisze oraz .

Przy analizie wykresów czasowych ważne jest ustawienie odpowiedniego powiększenia skali czasowej (polecenia „View → Zoom → In / Out / Full / …”, klawisze ). Ponadto przy precyzyjnym wyznaczaniu opóźnień pomocne są polecenia ustawiające kursory: „Insert Cursor” , „Find Previous Transition” , „Find Next Transition”

, etc.

Moduł poddawany symulacji powinien być modułem będącym na szczycie hierarchii plików źródłowych (w symulacji post-fit jest to konieczne). Ustawienie szczytu hierarchii wykonuje się poleceniem „Set as Top module”, które jest dostępne w menu kontekstowym modułu (jeśli jest ono nieaktywne, dany moduł już znajduje się na szczycie hierarchii).

Po starcie ModelSim wykonuje cykl symulacji trwający domyślnie 1000 ns. Kolejne cykle wydłużające czas symulacji można uruchamiać wpisując w oknie „Transcript” na dole środowiska ModelSim polecenie run <czas>, np. run 10 us. Polecenie „Simulate → Run → Restart” (lub po prostu restart w oknie „Transcript”) wraca do chwili zero.

Podczas symulacji behawioralnej możliwe jest śledzenie w oknie „Wave” nie tylko portów badanego modułu, ale też wszystkich jego sygnałów wewnętrznych. W tym przypadku warto nadać połączeniom na schemacie nazwy znaczące w miejsce domyślnie generowanych przez system XLXN_xx. Sygnały te można odszukać w oknie „Objects” po zaznaczeniu elementu UUT w oknie „Workspace”. Po kliknięciu prawym klawiszem myszy na sygnał, który chcemy śledzić, należy wybrać polecenie „Add to Wave”, po czym

Rys. 5 Okno z przebiegami czasowymi symulatora ModelSim.

Page 10: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 9 –

uruchomić symulację ponownie („Simulate → Run → Restart” + „Simulate → Run → Run -All”).

Aby nie było konieczne powtarzanie symulacji po dodaniu każdego nowego sygnału do okna „Wave”, można włączyć rejestrowanie historii zmian wszystkich sygnałów poleceniem log –r /*. Polecenie to można wpisać ręcznie w oknie „Transcript” zaraz po uruchomieniu ModelSim, albo zapisać w pliku skryptu użytkownika (nazwa identyczna jak jednostka VHDL + rozszerzenie .udo) i wówczas będzie wykonywane automatycznie przy starcie symulatora. Dzięki niemu po dodaniu do okna Wave nowego sygnału zostanie natychmiast wyświetlona historia jego zmian od chwili 0.

2.5 Zaprogramowanie układu

1º Dla głównego pliku schematowego uruchom proces „Implement Design → Generate Programming File”. Jeśli zakończy się powodzeniem, w katalogu głównym projektu powstanie plik o rozszerzeniu .jed gotowy do przesłania do układu CPLD.

Implementacja projektów CPLD składa się z procesów „Synthesize”, „Translate” oraz „Fit”. Jeśli którykolwiek nie zakończy się pomyślnie, należy odszukać w oknie konsoli komunikat o błędach i wrócić do ich usunięcia. Najczęściej błędy procesu „Synthesize” dotyczą kodu VHDL, błędy „Translate” – pliku UCF, błędy „Fit” – problemów z przypisaniem wyprowadzeń, niedostatecznymi zasobami w wybranym układzie itp.

2º Podłącz sprzęt do zasilania oraz do komputera poprzez kabel JTAG i uruchom aplikację iMPACT.

3º Zamknij pierwsze pojawiające się okno „New iMPACT Project” bez tworzenia projektu oraz dwukrotnie kliknij opcję „Boundary Scan” w podoknie „iMPACT Flows” (lewy górny róg okna głównego). Wybierz polecenie „File → Initialize Chain (Ctrl+I)”.

Rys. 6 Poprawnie wykryty układ w aplikacji iMPACT z oknem wyboru pliku konfiguracyjnego.

Page 11: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 10 –

W tym momencie program musi automatycznie wykryć i poprawnie zidentyfikować dołączony układ CPLD tak, jak pokazuje rys. 6. Jeśli tak się nie stanie, sprawdź jeszcze raz podłączenie kabli, zasilanie płyty itp.

4º W oknie wyboru pliku konfiguracyjnego (rys. 6) wskaż plik .jed wygenerowany w katalogu głównym projektu, następnie zaakceptuj zaproponowane ustawienia „Device Programming Properties”.

5º Aplikacja iMPACT gotowa jest do zaprogramowania układu: kliknij prawym klawiszem myszy na jego symbol oraz wybierz polecenie „Program…”; jeśli transmisja poprzez kabel JTAG odbędzie się pomyślnie, pojawi się niebieski komunikat „Programming succeeded”. W przypadku wystąpienia błędów wykonaj test łącza poleceniem „Debug → IDCODE Looping”.

6º Układ został skonfigurowany zgodnie z projektem – sprawdź poprawność jego pracy na płycie laboratoryjnej.

3 Opis układu w języku VHDL

Język VHDL jest podstawowym formatem opisu danych w środowisku ISE dla ścieżki projektowej „XST VHDL” i nie wymaga żadnych zewnętrznych edytorów. Aby utworzyć nowy moduł w języku VHDL i dodać go do projektu:

1º W nawigatorze projektu wybierz „Project → New Source…”; zaznacz „VHDL Module”, podaj nazwę pliku oraz naciśnij klawisz „Next”.

2º W oknie „Define Module” (rys. 7) podaj nazwy jednostki i architektury oraz opisz porty jednostki. Dla każdego portu wpisz jego nazwę, wybierz kierunek oraz, w przypadku magistral, w polach MSB / LSB podaj zakres indeksu sygnałów składowych.

Ze względu na możliwości syntezy nie należy stosować innych trybów pracy portów jak dwa podstawowe in oraz out.

3º Po zatwierdzeniu podanych parametrów nowopowstały plik .vhd zostanie automatycznie dodany do projektu i otworzony do edycji. Początkowa treść pliku będzie zawierała definicję jednostki (z podanymi wcześniej portami) oraz definicję jednej, pustej, architektury, jak na rys. 8.

4º Pusty szkielet kodu należy uzupełnić wpisując instrukcje VHDL jako treść architektury.

Rys. 7 Definicja portów podczas tworzenia nowego modułu VHDL.

Page 12: Środowisko Xilinx ISE i ModelSim XE Instrukcja laboratoryjna · J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11 – 5 – ) Przydatne skróty klawiszowe: F8

J.Sugier Xilinx ISE / ModelSim XE – Instrukcja laboratoryjna Ver. 11

– 11 –

Przy opisie podstawowych układów kombinacyjnych oraz sekwencyjnych należy wzorować się na przykładach zawartych w dokumencie PDF „XST User Guide”, rozdz. „XST HDL Coding Techniques”. Pomocne mogą być też szablony, których bibliotekę otwiera w oknie nawigatora polecenie „Edit → Language Templates…” ( ; patrz gałąź VHLD → Synthesis Constructs → Coding Examples).

5º Dla przygotowanego modułu VHDL można utworzyć symbol uruchamiając dla niego proces „Design Utilities → Create Schematic Symbol”. Po umieszczeniu takiego symbolu na schemacie powstaje hierarchia różnych plików źródłowych (sch na szczycie + VHDL jako submoduł).

Domyślnie każdy symbol jest tworzony jako prostokąt z dołączonymi wyprowadzeniami, które odpowiadają portom jednostki VHDL: po lewej stronie porty WE, po prawej WY. Aby zmienić taki początkowy układ należy poddać symbol edycji: w edytorze schematów ECS po jego zaznaczeniu dostępne jest polecenie „Edit → Symbol”.

Po wskazaniu modułu VHDL jako głównego pliku projektu, pozostałe kroki projektowe (przypisanie wyprowadzeń, symulacja oraz zaprogramowanie układu) wykonuje się identycznie, jak zostało to opisane w części 2 dla opisu schematowego.

Literatura 1) ISE Libraries Guide (lib.pdf), Xilinx Inc. 2) XST User Guide (lib.pdf), Xilinx Inc. 3) Pomoc on-line aplikacji pakietu ISE 4) ISE 1.1 Quick Start Tutorial (qst.pdf), Xilinx Inc. 5) K. Parnell, N. Mehta: Programmable Logic Design Quick Start Hand Book

(logic_handbook.pdf), Xilinx Inc., www.xilinx.com

Rys. 8 Pusty szablon VHDL wygenerowany dla parametrów jak na rys. 7.