Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: PROGRAMOWALNE STRUKTURY LOGICZNE ES1C420 300 Ćwiczenie Nr 9 REALIZACJA PROJEKTÓW HIERARCHICZNYCH W STRUKTURACH PROGRAMOWALNYCH Opracował: dr inż. Marian Gilewski dr inż. Walenty Owieczko BIAŁYSTOK 2017
Zawartość instrukcji 1. Informacje wstępne. 2. Nawigacja w strukturze hierarchicznej. 3. Komunikacja w strukturze hierarchicznej. 4. Zadania do realizacji. 5. Wymagania BHP 6. Sprawozdanie. 1. Informacje wstępne. Struktury hierarchiczne wiążą się z zagadnieniami syntezy wielopoziomowej i dekompozycji funkcjonalnej złożonych układów cyfrowych. Stosowany w laboratorium pakiet programowy umożliwia realizację projektów hierarchicznych. Realizacja takiego projektu łączy w sobie zagadnienia z zakresu: - syntezy elementu bibliotecznego użytkownika, - posługiwania się elementami bibliotecznymi systemu, - organizacji komunikacji pomiędzy różnymi elementami projektu na poszczególnych poziomach hierarchicznych, - dekompozycji funkcjonalnej zadania projektowego z uwzględnieniem specyfiki struktury programowalnej. Poglądową budowę struktury hierarchicznej przedstawiono na rysunku 1. Rys.1. Struktura hierarchiczna projektu W systemie projektowym na najwyższym poziomie struktury (top-level) znajduje się plik graficzny zawierający sieć połączeń elementów bibliotecznych lub symboli reprezentujących elementy funkcyjne zdefiniowane przez użytkownika. Symbole użytkownika powinny znajdować się w katalogu pliku top-level. Plik graficzny tego poziomu powinien posiadać tę
samą nawę własną jak projekt układu. Projektowi układu przypisywana jest konkretna struktura programowalna, której fizyczną reprezentację stanowią numery pinów układu scalonego przypisane portom zawartym w pliku graficznym poziomu "0". Kompilacja projektu odwołuje się do pliku top-level i zawartych w tam informacji. W wyniku kompilacji powstaje plik źródłowy programatora konkretnego układu scalonego. Dlatego powinna być zachowana zgodność nazw projektu i pliku poziomu "0" (rysunek poniżej). Rys.2. Poprawna relacja nazw: projektu i pliku top-level oraz symbolu użytkownika. Niespełnienie powyższego warunku prowadzi do kompilacji innego projektu i innego związanego z nim pliku top-level niż aktualnie edytowany. Może to powodować błędne wnioski dotyczące poprawności projektu. W szczególnym przypadku plik poziomu "0" może być plikiem tekstowym programu w języku AHDL, wówczas jednak w procesie kompilacje nie powstaje plik źródłowy programatora. Przypadek ten ma miejsce podczas sprawdzania poprawności funkcjonalnej części projektu lub tworzenia elementów bibliotecznych użytkownika. Innym często popełnianym błędem przez studentów, w początkowym etapie nauki obsługi systemu projektowego, jest próba umieszczenia w pliku poziomu "0" symbolu o takiej samej nazwie jak nazwa projektu. Symbol taki może reprezentować również plik graficzny, będący jego definicją. Niezrozumienie tej specyfiki powoduje zapętlenie systemu plików, skasowanie funkcji symbolu i w efekcie uszkodzenie projektu. Obowiązuje zasada: nazwa projektu nie może być identyczna z nazwami elementów bibliotecznych w nim stosowanych (Rys.2.). Elementy schematu poziomu "0" (L01, L02,..., L0n) mogą stanowić elementarne symbole biblioteczne lub użytkownika, zdefiniowane graficzną siecią połączeń lub programem AHDL, jak również mogą to być struktury zagnieżdżone niższych poziomów ((L-111, L-112,..., L-11m), itd.). Komunikacja pomiędzy poziomami hierarchicznymi odbywa się za pomocą portów oraz magistral. Szczególnym przypadkiem magistrali jednoelementowej jest pojedyńcza linia łącząca. Magistrala powinna posiadać identyczną etykietę i wymiar jak porty do niej
dołączone. Magistrala, która na schemacie nie podlega rozgałęzieniu (łączy bezpośrednio wyjście z wejściem/wejściami) może nie zawierać zdefiniowanej etykiety (wymiaru). Zaleca się stosowanie, zarówno w pliku graficznym jak i tekstowym języka AHDL, magistral i portów etykietowanych zgodnie z konwencją: nazwa[górny_indeks.. dolny_indeks] np. mbus[3..0] - oznacza magistralę zawierającą elementy: mbus3, mbus2, mbus1, mbus0. W takiej konwencji górny_indeks oznacza transmisję bitu MSB, zaś dolny_indeks transmisję bitu LSB. Taki zapis pozwala uniknąć niekonsekwencji w interpretacji zapisu danych i stosowania dodatkowych dyrektyw kompilatora w programach AHDL. Porty pliku top-level powinny być jednowymiarowe ze względu na konieczność przypisywania indywidualnych numerów pinów układu scalonego struktury programowalnej. 2. Nawigacja w strukturze hierarchicznej. Na rysunku 3 przedstawiono zawartość pliku graficznego top-level sumatora 4 bitowego zrealizowanego w strukturze hierarchicznej. Schemat zawiera element biblioteki użytkownika s4bit_pl, realizujący funkcję sumowania dwóch licz 4 bitowych A i B. Liczba A jest wartością stałą zadawaną parametrami bloku bibliotecznego LPM_CONSTANT. Liczba B wprowadzana jest za pośrednictwem portów wejściowych DataB0 DataB3. Sygnały z tych portów za pośrednictwem identycznie etykietowanych linii łączących wchodzą na magistralę o takiej samej nazwie własnej DataB[3..0]. Rys.3 Plik top-level projektu sumator. Warto zauważyć, iż etykieta magistrali i etykieta wejścia, do którego jest dołączona, mogą mieć różne nazwy własne, istotna jest jedynie zgodność wymiarów. W przypadku magistrali łączącej bezpośrednio wyjście elementu LPM_CONSTANT z wejściem elementu s4bit_pl nie zachodzi konieczność jej etykietowania. Porty wyjściowe Q0 Q4 wyprowadzają 5 bitowy wynik sumowania. Wskutek bezpośredniego połączenia, w tym przypadku nie zachodzi również konieczność etykietowania linii łączących. Z powyższym projektem związana jest (relacja nie jest widoczna na schemacie) struktura programowalna EPF10K70RC240-4. Proces przypisania zrealizowano funkcją z menu górnego systemu: Assign -> Device... -> FLEX10K -> EPF10K70RC240-4 - > OK.
Portom wejściowym i wyjściowym przypisano selektywnie piny układu scalonego struktury wykonując polecenia z menu podręcznego: Assign -> Pin/Location/Chip... -> Pin: -> numer_pinu -> Pin Type -> typ_pinu -> OK. Element s4bit_pl zawiera niższe poziomy hierarchiczne. Po dwukrotnym kliknięciu wskaźnikiem myszy na symbol graficzny elementu następuje przejście do niższego poziomu hierarchicznego -1 przedstawionego na poniższym rysunku. Rys.4. Poziom -1 hierarchii projektu sumator Zawiera on 4 identyczne bloki pełnych sumatorów jednobitowych s1bit_pl. Każdy z tych bloków może być zdefiniowany funkcyjnie w sposób graficzny przy pomocy schematu bądź kodem źródłowym np. języka AHDL. Opisy bloków odpowiadają najniższemu poziomowi w hierarchicznego projektu. W przypadku definicji graficznej (rysunek 5) opis zawiera elementarne Rys.5. Najniższy poziom hierarchiczny projektu sumator w postaci pliku graficznego.
funktory logiczne, które nie zawierają innych elementów bibliotecznych w swojej strukturze. Kod źródłowy (rysunek 6), opisujący sumator jednobitowy, reprezentuje również zwartą jednostkę funkcjonalną, która nie podlega dalszemu podziałowi w sensie funkcjonalnym. Rys.6. Najniższy poziom hierarchii projektu sumator w postaci kodu źródłowego AHDL. Przemieszczanie się w projekcie hierarchicznym w dół (na niższe poziomy) następuje poprzez dwukrotne kliknięcie wybranego elementu. Poruszanie się w górę odbywa się w wyniku zamykania okien kolejnych, otwartych poziomów hierarchicznych. Powrót do top-level z dowolnego poziomu następuje w wyniku wywołania funkcji Opens the top-level design file for the current project... ikony z górnego menu graficznego (rysunek 7). Rys.7. Funkcja powrotu do top-level z menu górnego. Nadanie nazwy projektowi następuje podczas inicjacji, realizacją funkcji górnego menu: File -> Project -> Name -> nazwa_projektu -> OK, lub później w trakcie realizacji elementów składowych projektu. Zalecana jest pierwsza technika nadawania nazwy, gdyż wpisuje się ona w naturalny ciąg kolejnych czynności projektowych: - otwarcie nowego projektu, - otwarcie nowego pliku graficznego top-level i przypisanie mu nazwy projektu, - edycja i weryfikacja plików składowych oraz elementów bibliotecznych,
- budowa struktury hierarchicznej, - kompilacja struktury, - symulacja, programowanie i uruchomienie układu. Drugi sposób następuje w późniejszych etapach procesu projektowego, gdy również możliwe jest nadanie lub zmiana nazwy projektu. Do tego celu służą dwie funkcje górnego menu graficznego wskazane na rysunkach 8 i 9. Rys.8. Funkcja zmiany nazwy projektu na taką samą nazwę, jak nazwa aktualnie obsługiwanego pliku graficznego lub pliku z kodem źródłowym AHDL. Rys.9. Funkcja nadania nowej nazwy projektu. Wyświetlanie i edycję struktury hierarchicznej projektu obsługuje funkcja ikony górnego menu graficznego wskazanej na rysunku 10. Na rysunku 11 przedstawiono przykładową strukturę hierarchiczną z interpretacją poszczególnych jej elementów. Rys.10. Funkcja wyświetlania i edycji struktury hierarchicznej projektu.
Rys.11. Widok przykładowej struktury hierarchicznej z interpretacją elementów. Widok struktury hierarchicznej projektu sumator przedstawiono na rysunku 12. Na najwyższym poziomie zawiera ona plik top_level sumator.gdf. z którym skojarzone są pliki pomocnicze : - sumator.rpt - plik raportowy procesu kompilacji, - sumator.fit - plik raportowy rozmieszczenia w strukturze programowalnej, - sumator.acf - plik przypisania zasobów dla kompilatora i symulatora, - sumator.pin - plik raportowy przypisania pinów układu scalonego. Rys.12. Widok struktury hierarchicznej projektu sumator. Na najwyższym poziomie hierarchicznym znajdują się: element biblioteczny lpm_constant zdefiniowany kodem źródłowym AHDL w pliku lpm_constant.tdf. Jest to element końcowy ścieżki hierarchicznej, nie zawiera składników na niższych poziomach. Element biblioteczny użytkownika w postaci pliku graficznego s4bit_pl.gdf jest drugim składnikiem top-level. Składa się on z 4 identycznych sumatorów jednobitowych s1bit_pl.tdf, w tym przypadku zdefiniowanych kodem źródłowym języka AHDL. Możliwa jest zmiana typu pliku definiującego element biblioteczny. W tym celu należy wskazać dany element (Rys.12) a następnie z menu podręcznego wykonać polecenie: Change file type ->.gdf lub.tdf -> OK wybierając właściwy rodzaj pliku, pod warunkiem, że zarówno plik graficzny jak i źródłowy AHDL znajdują się w katalogu projektu.
4. Zadania do realizacji. 4.1 Moduł DSP. a/ zaprojektować i zrealizować w strukturze FPGA moduł DSP przedstawiony na rysunku, jako strukturę hierarchiczną, b/ opcjonalnie rozważyć możliwość przetwarzania potokowego, c/ zbadać symulacyjnie czasy propagacji sygnałów od wejść do wyjść, d/ układ zoptymalizować w sensie szybkości działania, badając różne realizacje elementów składowych systemu i wybierając najkorzystniejszą. 4.2 Hierarchiczny układ arytmetyczny. a/ zaprojektować w strukturze FPGA układ wyznaczający wartość wielomianu 3 stopnia dla zadanych dodatnich współczynników i 4 bitowej zmiennej wejściowej, b/ układ zaprogramować i zbadać w modelu laboratoryjnym UP2. 5. Wymagania BHP Warunkiem przystąpienia do wykonywania ćwiczenia jest zapoznanie się z instrukcją stanowiskową BHP stosowaną w Laboratorium i ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje te powinny być przedstawione studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w Laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium został umieszczony na początku niniejszego opracowania. 6. Sprawozdanie. Sprawozdanie powinno zawierać: - stronę tytułową, zgodną ze standardami wymaganymi przez Dziekanat (szczegółowe informacje dostępne w Dziekanacie Wydziału Elektrycznego), - treści zadań projektowych, - schematy układów pomiarowych (zarówno aparaturowych jak i symulacyjnych), - komunikaty kompilatora poszczególnych projektów, - wyniki badań symulacyjnych i/lub aparaturowych projektów, - wydruk struktur hierarchicznych, - interpretację wyników i wnioski końcowe.
7. Literatura 1. L. Grodzki, W. Owieczko: Podstawy techniki cyfrowej, 2006 2. Barski M., Jędruch W.: Układy cyfrowe. Podstawy projektowania i opis w języku VHDL. PGd, Gdańsk 2007 3. P. Zbysiński, J. Pasierbiński: Układy programowalne pierwsze kroki. BTC, 2004. 4. Materiały pomocnicze strona internetowa firmy Altera http://www.altera.com