• Nie Znaleziono Wyników

Stanowisko laboratoryjne wspomagające projektowanie interfejsu USB z wykorzystaniem układu FPGA.

N/A
N/A
Protected

Academic year: 2022

Share "Stanowisko laboratoryjne wspomagające projektowanie interfejsu USB z wykorzystaniem układu FPGA."

Copied!
74
0
0

Pełen tekst

(1)

Rok akademicki 2013/2014 Politechnika Warszawska

Wydział Elektroniki i Technik Informacyjnych Instytut Informatyki

PRACA DYPLOMOWA INŻYNIERSKA

Bartłomiej Jan Kowalczyk

Stanowisko laboratoryjne wspomagające projektowanie interfejsu USB z wykorzystaniem

układu FPGA.

Opiekun pracy mgr inż. Marek Pawłowski

Ocena: ...

...

Podpis Przewodniczącego Komisji Egzaminu Dyplomowego

(2)

Kierunek: Informatyka

Specjalność: Inżynieria Systemów Informatycznych

Data urodzenia: 1991.12.10

Data rozpoczęcia studiów: 2011.02.21

Życiorys

Ukończyłem Gimnazjum nr 60 przy XLIX LO im. J.W. Goethego, a następnie Autorskie Liceum Ogólnokształcące Nr 42 w Warszawie. Obecnie studiuję informatykę na Wydziale Elektroniki i Technik Informacyjnych Politechniki Warszawskiej. Moją pasją jest gotowanie i żeglarstwo. W wolnych chwilach natomiast rozwijam wiedzę oraz zdobywam doświadczenie w zakresie zarządzania projektami.

...

Podpis studenta

EGZAMIN DYPLOMOWY

Złożył egzamin dyplomowy w dniu ... 2014 r z wynikiem ...

Ogólny wynik studiów: ...

Dodatkowe wnioski i uwagi Komisji: ...

...

...

(3)

STRESZCZENIE

Celem niniejszej pracy było przygotowanie stanowiska laboratoryjnego wspomagającego projektowanie interfejsu USB z wykorzystaniem układu FPGA. W ramach pracy powstały prototypy dwóch nowych modułów laboratoryjnych zgodnych ze standardem SML3.

Pierwszy – Moduł USB1 – pełniący funkcję warstwy fizycznej standardu USB 1.1 oraz drugi – Moduł FPGA (DE0-Nano) mający w przyszłości zastąpić obecnie używany moduł FPGA(EP1K30). Dodatkowo, opracowano scenariusz przykładowego ćwiczenia laboratoryjnego wykorzystującego wyżej wymienione moduły oraz odpowiednio zmodyfikowane w tym celu oprogramowanie.

Słowa kluczowe: FPGA, USB, SML3

THE LABORATORY WORKSTATION SUPPORTING THE DESIGN PROCESS OF THE USB INTERFACE USING FPGA.

The aim of this work was to prepare the laboratory workstation supporting the design process of the USB interface using FPGA. As part of the work, prototypes of two new laboratory modules compatible with SML3 standard were developed. First - Module USB1 - acting as the physical layer of the USB 1.1 and the second - FPGA Module (DE0-Nano) - which in the future is supposed to replace the currently used FPGA Module (EP1K30). In addition, a sample scenario of laboratory exercises was developed using the above- mentioned modules as well as appropriately modified software that would support them.

Keywords: FPGA, USB, SML3

(4)

SPIS TREŚCI

1. WSTĘP ...7

2. PODSTAWOWE WYMAGANIA STANDARDU SML-3 ...9

3. WYMAGANIA STANDARDU USB 1.1 ... 10

3.1. WYMAGANIA WARSTWY FIZYCZNEJ ... 10

3.2. WYMAGANIA WARSTWY LOGICZNEJ ... 13

4. OPROGRAMOWANIE WSPIERAJĄCE REALIZACJĘ ĆWICZENIA Z USB ... 18

5. ETAP WSTĘPNY PROJEKTU ... 22

5.1. OPIS AKTUALNIE WYKORZYSTYWANEGO MODUŁU ... 22

5.2. WYMAGANIA KONSTRUKCYJNE ... 23

5.3. WYBÓR UKŁADU FPGA ... 25

5.4. WYBÓR GOTOWEGO ZESTAWU Z UKŁADEM FPGA ... 27

6. PROJEKT MODUŁU LABORATORYJNEGO FPGA (DE0-Nano)... 30

6.1. PROJEKT SCHEMATU MODUŁU ... 30

6.2. PROJEKT PŁYTKI DRUKOWANEJ ... 34

6.3. METODOLOGIA MONTAŻU I URUCHAMIANIA MODUŁU ... 36

6.4. TESTOWANIE MODUŁU W TRAKCIE UŻYTKOWANIA ... 36

7. PROJEKT MODUŁU LABORATORYJNEGO USB1 ... 39

7.1. PROJEKT SCHEMATU MODUŁU ... 39

7.2. PROJEKT PŁYTKI DRUKOWANEJ ... 42

7.3. METODOLOGIA MONTAŻU I URUCHAMIANIA MODUŁU ... 42

7.4. TESTOWANIE MODUŁU W TRAKCIE UŻYTKOWANIA ... 43

8. PROJEKT ĆWICZENIA „WARSTWA FIZYCZNA ŁĄCZA USB” ... 44

8.1. BUDOWA STANOWISKA LABORATORYJNEGO DLA REALIZACJI ĆWICZENIA ... 44

8.2. WYKORZYSTYWANE SKŁADNIKI PROGRAMOWE ... 44

8.2.1. Architektura ... 45

8.2.2. Przykładowa konfiguracja systemu z wykorzystaniem modułu USBHostSlave ... 49

9. PODSUMOWANIE ... 51

10. BIBLIOGRAFIA... 53

11. INDEKS TABEL ... 55

12. INDEKS ILUSTRACJI ... 56

(5)

5

ZAŁĄCZNIKI

ZAŁĄCZNIK 1. ŁĄCZE FIZYCZNE USB ... 57 ZAŁĄCZNIK 2. DOKUMENTACJA MODUŁU 420_USB ... 65 ZAŁĄCZNIK 3. DOKUMENTACJA MODUŁU 305_FPGA_(DE0-NANO) ... 69

(6)

6

WYKAZ UŻYWANYCH SKRÓTÓW

EDA – Oprogramowanie wspierające projektowanie zawartości układów FPGA (ang.

Electronic design automation).

FPGA – Matryca konfigurowalnych bloków logicznych (ang. Field Programmable Gate Array).

UKI – Układ kontrolera interfejsu USB.

SML3 – System Modułów Laboratoryjnych używanych w Pracowni Sprzętowej Instytutu Informatyki PW.

UOLS – Układ Obsługi Linii Szeregowej interfejsu USB.

USB – Uniwersalna magistrala szeregowa (ang. Universal Serial Bus).

UWF – Układ Warstwy Fizycznej interfejsu USB.

(7)

7

1.

WSTĘP

Programowalne układy logiczne FPGA stanowią obecnie jeden z najprężniej rozwijających się obszarów elektroniki. Stopniowo wypierają z rynku tanie układy ASIC. Ich wykorzystanie pozwala na skrócenie czasu opracowania prototypu oraz obniżenie kosztu opracowania i weryfikacji projektu.

Układy FPGA ze względu na swoją uniwersalność znajdują zastosowanie nie tylko w rozwiązaniach przemysłowych, ale także dydaktycznych. Obecnie wykorzystywane oprogramowanie EDA pozwala na syntezę układów logicznych w oparciu o różne formy opisu ich zawartości. Od prostych schematów opartych na bramkach po zaawansowane mikroprocesory wbudowane, czy sprzętowe implementacje interfejsów, układy FPGA oferują szerokie możliwości dydaktyczne na każdym z etapów rozwoju etapie edukacji projektanta urządzeń cyfrowych.

Uniwersalna magistrala szeregowa USB to technologia, która w sposób istotny przyczyniła się do kształtu stosowanych obecnie rozwiązań w dziedzinie interfejsów urządzeń peryferyjnych. Dzięki prostocie budowy i wszechstronności jaką oferuje, znalazła szerokie grono odbiorców na całym świecie. Od chwili jej powstania w roku 1996 do chwili obecnej powstały trzy oficjalne wersje standardu. W trakcie pisania niniejszej pracy zatwierdzona została specyfikacja interfejsu USB 3.1 umożliwiającego transmisje z prędkością 10Gb/s.

Tematem niniejszej pracy jest opracowanie stanowiska laboratoryjnego wspomagającego projektowanie interfejsu USB z wykorzystaniem układu FPGA. Praca ma charakter empiryczny, jednakże omówione zostają pewne zagadnienia teoretyczne.

Czynnikiem decydującym przy wyborze tematu pracy przez dyplomanta, była chęć poznania procesu projektowania układów cyfrowych oraz zagadnień związanych z ich programowaniem.

Podstawowym celem niniejszej pracy jest stworzenie stanowiska laboratoryjnego wspomagającego projektowanie interfejsu USB z wykorzystaniem układu FPGA oraz opracowanie metodologii ćwiczenia laboratoryjnego realizowanego w ramach przedmiotu urządzenia zewnętrzne i interfejsy. Celem podrzędnym natomiast jest zastąpienie, używanego od blisko 10 lat, modułu FPGA w systemie SML3.

Założony zakres pracy obejmował przeprowadzenie analizy rynku układów FPGA, zebranie wymagań interesariuszy projektu, wybór odpowiednich układów oraz ich zakup zgodnie z procedurą udzielania zamówień publicznych, stworzenie projektów obwodów

(8)

8 drukowanych, ich realizację, a także wybór zewnętrznych dostawców. W ramach niniejszej pracy dokonany został wybór odpowiedniego projektu interfejsu USB realizowanego za pomocą układu FPGA, który następnie zostanie uruchomiony w zmodyfikowanej wersji w strukturach wybranego układu.

W rozdziale 2 pracy opisano wymagania standardu SML3. Wymagania powstały w oparciu o dokumentację systemu SML3 dostępną na serwerze Instytutu Informatyki – Galera.

Rozdział 3 opisuje wymagania standardu uniwersalnej magistrali szeregowej w wersji 1.1. Na potrzeby pracy zdecydowano się ograniczyć ich zakres do zagadnień niezbędnych do przeprowadzenia ćwiczenia „Łącze fizyczne USB”.

W rozdziale 4. umieszczony został opis procesu decyzyjnego który doprowadził do wyboru oprogramowania IP Core będącego sprzętową implementacją uniwersalnej magistrali szeregowej.

W rozdziale 5. przeprowadzona została analiza porównawcza dostępnych na rynku układów FPGA o możliwościach dostosowanych do zastosowań dydaktycznych. Następnie w oparciu o jej wyniki dokonano wyboru odpowiedniego zestawu uruchomieniowego.

Rozdziały 6 i 7 zawierają projekty modułów FPGA (DE0-Nano) oraz USB1. W rozdziałach umieszczone zostały ich schematy, projekty płytek drukowanych oraz opisy procedur montażu i testowania.

W rozdziale 8. przedstawiona została metodologia nowego ćwiczenia „Łącze fizyczne USB” realizowanego w ramach przedmiotu urządzenia zewnętrzne i interfejsy.

Omówione zostały proponowany przebieg ćwiczenia, konfiguracja laboratoryjna oraz niezbędne do jego przeprowadzenia oprogramowanie.

W niniejszej pracy korzystano głównie ze źródeł anglojęzycznych. Podstawowym źródłem informacji była oficjalna specyfikacja standardu uniwersalnej magistrali szeregowej w wersji 1.1. Na potrzeby pracy wykorzystano również literaturę specjalistyczna oraz liczne publikacje internetowe.

(9)

9

2. PODSTAWOWE WYMAGANIA STANDARDU SML-3

W niniejszym rozdziale przedstawione zostaną najważniejsze z wymagań, które wypełnić powinny zostać spełnione przy projektowaniu nowego modułu, aby zapewnić jego zgodność ze standardem obecnie wykorzystywanego, w Pracowni Sprzętowej II PW, systemu SML3[7].

1. Pod względem struktury połączeń moduł powinien być skonstruowany zgodnie z jednym z typów przewidzianych dla systemu SML3:

a. złożony z modułów równorzędnych b. z wyróżnionym modułem głównym.

2. Połączenie między modułami tworzącymi konfigurację doświadczalną musi być realizowalne na dwa sposoby:

a. poprzez złącza 16-stykowe typu “port”, przy użyciu taśm 16- przewodowych zakończonych wtykami

b. poprzez złącza pojedyncze, przy użyciu pojedynczych przewodów.

3. Zasilanie główne modułu musi odbywać się za pośrednictwem 16-stykowego złącza typu „port”.

4. Moduły, które korzystają z mniej niż ośmiu sygnałów, muszą być wyposażone w co najmniej dwa złącza typu port, z których jedno zawierać będzie linie danych nie wykorzystane przez dany moduł.

5. Płyta główna modułu powinna mieć szerokość nie większą niż 16 cm oraz wysokość 10 cm.

6. W przypadku używania układów CMOS należy zadbać o wymuszenie stanu wejść nie sterowanych z wyjść innych układów.

7. Dla każdego modułu powinna zostać stworzona dokumentacja zawierająca:

a. opis zawartości modułu,

b. schemat ideowy modułu z programu CAD, który został wykorzystany do wykonania projektu modułu, uzupełniony o opis jego elementów,

c. opis różnic w kolejnych wersjach wykonania modułu, d. opis złączy i elementów konfiguracyjnych,

e. przykłady zastosowania modułu, f. uwagi projektanta.

(10)

10

3. WYMAGANIA STANDARDU USB 1.1

Magistrala szeregowa USB pełni rolę uniwersalnego portu do komunikacji z urządzeniami zewnętrznymi, który niemalże całkowicie wyparł z rynku stosowane dawniej powszechnie porty szeregowe i porty równoległe. Opracowana została wspólnie przez firmy Compaq, IBM, DEC, Intel i Microsoft. W wersji 1.1 łącze USB udostępnia transmisję w dwóch trybach: Low Speed (1,5 Mbit/s) oraz Full Speed (12 Mbit/s). Poniżej przedstawiono szereg wymagań jakie musi spełnić projektowany moduł systemu SML3, aby zachować kompatybilność ze standardem uniwersalnej magistrali szeregowej w wersji 1.1.

3.1. WYMAGANIA WARSTWY FIZYCZNEJ

Do poprawnego funkcjonowania aplikacji wykorzystującej łącze USB, niezbędna jest nie tylko poprawna implementacja warstwy logicznej protokołu, ale także jego zgodność na poziomie warstwy fizycznej. W tabelach 3.1, 3.2, oraz 3.3 przedstawiono wybrane parametry elektryczne i dynamiczne łącza. Tabele te zostały opracowane na podstawie dokumentu w języku angielskim [5] i autorowi niniejszej pracy nie zawsze udało się dopasować do danego parametru jego syntetyczne określenie w języku polskim stąd w niektórych miejscach tabel pozostawiono nazwy angielskie. Przykładem takiego postępowania jest parametr Jitter, rozumiany jako przypadkowe i krótkotrwałe odchylenie sygnału od wartości oczekiwanej.

Tabela 3.1 Parametry elektryczne łącza USB 1.1

Parametr Min. Maks. Jedn.

Napięcie zasilania:

Port typu High-Power 4.75 5.25 V

Port typu Low-Power 4.40 5.25 V

Natężenie prądu zasilającego:

Port typu High-Power urządzenia typu Hub (prąd wyjściowy) 500 mA Port typu Low-Power urządzenia typu Hub (prąd wyjściowy) 100 mA Port typu High-Power urządzenia końcowego (prąd

wejściowy)

500 mA Port typu Low-Power urządzenia końcowego (prąd wejściowy) 100 mA Nieskonfigurowane urządzenie końcowe lub Hub (prąd

wejściowy)

100 mA

(11)

11

Parametr Min. Maks. Jedn.

Urządzenie typu High-Power w trybie zawieszenia 2.5 mA Urządzenie typu Low-Power w trybie zawieszenia 500 µA Poziomy wejściowe napięcia:

Wysoki (sterowane) 2.0 V

Wysoki (nie sterowane) 2.7 3.6 V

Niski 0.8 V

Czułość wejścia różnicowego 0.2 V

Zakres charakterystyczny wejścia różnicowego 0.8 2.5 V Poziomy wyjściowe napięcia:

Niski 0.0 0.3 V

Wysoki (sterowany) 2.8 3.6 V

Napięcie neutralne sygnału wyjściowego 1.3 2.0 V

Pojemność obejściowa:

Pojemność obejściowa portu typu Downstream 120 µF

Pojemność obejściowa portu typu Upstream 1.0 10.0 µF Pojemności wejściowe:

Portu typu Downstream 150 pF

Portu typu Upstream ( bez kabla ) 10 pF

Pojemność modelująca kształt krawędzi sygnału 75 pF

Terminatory:

Rezystor podciągający portu typu Upstream magistrali 1.425 1.575 kΩ Rezystor ściągający portu typu Downstream magistrali 14.25 15.75 kΩ Impedancja wejściowa z wyłączeniem rezystora

podciągającego / ściągającego

300 kΩ

Napięcie na rezystorze podciągającym portu typu Upstream 3.0 3.6 V Tabela 3.2 Parametry dynamiczne łącza USB 1.1 w trybie transmisji Full-Speed

Parametr Min. Maks. Jedn.

Charakterystyka nadajnika:

Czas narastania 4 20 ns

Czas opadania 4 20 ns

Dopasowanie różnicowego czasu narastania i opadania 90 111.11 %

Rezystancja wyjściowa nadajnika 28 44 Ω

(12)

12

Parametr Min. Maks. Jedn.

Parametry zegara:

Szybkość transmisji danych Full-Speed: 11.9700 12.0300 Mb/s

Interwał ramki 0.9995 1.0005 ms

Postępujący Jitter interwału ramki bez korekcji zegara 42 ns Postępujący Jitter interwału ramki z korekcją zegara 126 ns Taktowanie w transmisji danych Full-Speed:

Całkowity Jitter źródła (uwzględniając tolerancję częstotliwościową):

 do następnej zmiany stanu

 dla sparowanych zmian stanów -3.5

-4

3.5 4

ns ns

Jitter źródła dla przejścia do stanu SE0 -2 5 ns

Jitter odbiornika:

 do następnej zmiany stanu

 dla sparowanych zmian stanów

-18.5 -9

18.5 9

ns ns Czas trwania stanu SE0 w nadajniku dla EOP 160 175 ns

Czas trwania stanu SE0 w odbiorniku dla EOP 82 ns

Czas trwania stanu SE0 w trakcie różnicowej zmiany stanu

14 ns

Tabela 3.3 Parametry dynamiczne łącza USB 1.1 w trybie transmisji Low-Speed

Parametr Min. Maks. Jedn.

Charakterystyka sterownika:

Czas zmiany stanu:

 czas narastania

 czas opadania

75 75

300 300

ns ns

Dopasowanie czasu narastania i opadania 80 125 %

Port typu Upstream (bez kabla, tylko transmisja Low-Speed) 200 450 pF Taktowania zegara:

Szybkość transmisji danych Low-Speed 1.4775 1.5225 Mb/s Taktowanie w transmisji danych Low-Speed:

Całkowity Jitter źródła portu typu Upstream (uwzględniając tolerancje częstotliwościową )

 do następnej zmiany stanu

 dla sparowanych zmian stanów -95

-150

95 150

ns ns

(13)

13

Parametr Min. Maks. Jedn.

Jitter źródła portu typu Upstream dla przejścia różnicowego do stanu SE0.

-40 100 ns Jitter odbiornika różnicowego portu typu Upstream

 do następnej zmiany stanu

 dla sparowanych zmian stanów

-75 -45

75 45

ns ns Całkowity Jitter źródła portu typu Downstream

(uwzględniając tolerancje częstotliwościową )

 do następnej zmiany stanu

 dla sparowanych zmian stanów -25

-14

25 14

ns ns Jitter źródła portu typu Downstream dla przejścia

różnicowego do stanu SE0.

ns Jitter odbiornika różnicowego portu typu Downstream

 do następnej zmiany stanu

 dla sparowanych zmian stanów

-152 -200

152 200

ns ns Czas trwania stanu SE0 w nadajniku dla EOP 1.25 1.50 us

Czas trwania stanu SE0 w odbiorniku dla EOP 670 ns

Czas trwania stanu SE0 w trakcie różnicowej zmiany stanu 210 ns Przedstawione w tabelach parametry można osiągnąć stosując specjalizowany układ scalony przeznaczony do obsługi poziomu fizycznego interfejsu łącza USB. Wybór tego układu nastąpi na etapie projektowania modułu.

3.2. WYMAGANIA WARSTWY LOGICZNEJ

W niniejszej pracy zdecydowano się omówić jedynie wybrane fragmenty warstwy logicznej protokołu USB, których znajomość jest niezbędna do zaproponowania różnych scenariuszy realizacji ćwiczenia „Łącze fizyczne USB” - każde z omówionych zagadnień można rozszerzyć w oparciu o dokumentacje rozważanego standardu [5] lub specjalistyczną literaturę (jak na przykład [3]).

Magistrala USB pracuje w konfiguracji nadrzędny/podległy. Komunikacja w łączu USB jest inicjowana przez kontroler hosta, a urządzenie pozostaje bierne i nie może samo zainicjować komunikacji.

Prawidłowa komunikacja za pomocą magistrali USB odbywa się z wykorzystaniem trzech stanów określonych następującymi symbolami: J, K oraz SE0. Symbol J oznacza

(14)

14 różnicowe zero w przypadku komunikacji w trybie LS (Low-Speed), natomiast różnicową jedynkę w trybie FS (Full-Speed). Komplementarnym do symbolu J jest symbol K, który to w trybie LS oznacza różnicową jedynkę, natomiast w trybie FS różnicowe zero. Symbol SE0 oznacza ustalenie się stanu niskiego na obu linii różnicowych.

Standard USB oferuję transmisję danych w czterech trybach zwanych dalej transferami: sterującym, izochronicznym, masowym i pilnym [3].

Transfery sterujące służą do konfiguracji urządzenia oraz późniejszej kontroli nad jego pracą. Ten typ transferu musi być obsługiwany przez każde urządzenie zgodne ze standardem USB. Transmisja prowadzona jest w taki sposób, aby zminimalizować prawdopodobieństwo uszkodzenia danych, są one przesyłane poprzez w czasie zarezerwowanym wcześniej przez kontroler, a ich poprawność zapewniają mechanizmy takie jak sumy kontrolne czy potwierdzenia i retransmisje ramek.

Transfery izochroniczne służą do dostarczania porcji danych w regularnych odstępach czasu. Ten rodzaj transmisji gwarantuje nieprzekraczanie maksymalnego czasu pomiędzy transmisjami, ale w odróżnieniu od danych kontrolnych nie gwarantuje poprawności przesyłanych danych. Wynika to z faktu, że dla wysyłanych danych nie jest obliczana suma kontrolna, a ich dostarczenie nie jest potwierdzane przez odbiorcę.

Transfery masowe wykorzystywane są do przesyłania dużych ilości danych. W odróżnieniu od transferów izochronicznych, zwraca się tutaj szczególną uwagę na poprawność przesyłanych danych, akceptując dowolne opóźnienia transmisji. W praktyce transfery tego typu, wykonywane są jedynie wtedy, gdy łącze nie prowadzi żadnego innego transferu.

Transfery pilne łączą w sobie zalety wymiany izochronicznej i masowej.

Pozwalają na przesyłanie niewielkich ilości danych w regularnych odstępach czasu, ze szczególnym naciskiem na ich poprawność. Mechanizmy zapewniające poprawność przesyłanych danych są identyczne jak w przypadku trybów sterującego i masowego.

Pojedyncza transmisja danych realizowana jest jako transakcja, w której uczestniczą dwie strony, kontroler hosta oraz punkt końcowy. Każda transakcja rozpoczyna się od nadania przez kontroler hosta pakietu tzw. Token’a określającego jej typ, adresu docelowego urządzenia o raz numeru punktu końcowego przypisanego do danej transakcji. Następnie zależnie od typu transakcji może zostać przesłany pakiet

(15)

15 danych w kierunku kontrolera hosta lub punktu końcowego. Transakcja kończona jest nadaniem pakietu potwierdzenia przez odbiorcę, które może być pozytywne, negatywne a w przypadku punktu końcowego może również oznaczać, że dany punkt końcowy jest nieaktywny lub wstrzymany.

Poziom skomplikowania warstw protokołu USB oraz sztywne ograniczenia czasowe powodują, że implementacja uniwersalnej magistrali szeregowej w postaci jednego bloku może stanowić problem dla jego projektanta. Typowym rozwiązaniem jest wyodrębnienie ze wszystkich warstw protokołu USB warstwy łącza danych w postaci dedykowanego modułu sprzętowego. Warstwa łącza danych odpowiada za realizację operacji o stosunkowo niewielkim stopniu złożoności, które muszą się wykonać w ściśle określonym czasie. Tego typu moduł nazywany jest często układem obsługi linii szeregowej i wymaga się, aby odpowiadał on za kodowanie i dekodowanie danych, generację kodu CRC oraz korekcję błędów, wstawianie bitu zera, generowanie identyfikatora pakietu oraz konwersję szeregowo równoległą i równoległo szeregową.

W niniejszej pracy zdecydowano się omówić jedynie wybrane fragmenty warstw protokołu USB. Na szczególną uwagę zasługuję więc warstwa łącza danych, której implementacja konieczna jest w ramach ćwiczenia „Łącze fizyczne USB”.

Standard uniwersalnej magistrali szeregowej wykorzystuje do transmisji pakietów kodowanie liniowe NRZI. W dwupoziomowym sygnale NRZI w przypadku, gdy transmitowany bit ma wartość logicznego zera, przełączenie poziomu sygnału następuje synchroniczne, zgodnie z sygnałem zegarowym. Jeśli z kolei transmitowany bit ma wartość logicznej jedynki, to wartość sygnału fizycznego nie ulega zmianie.

Aby zapewnić synchronizację odbiornika przed rozpoczęciem kodowania NRZI, po każdych sześciu następujących po sobie jedynkach, do ciągu bitów danych wstawiany jest bit zero. Długi ciąg jednakowych symboli mógłby doprowadzić do rozsynchronizowania odbiornika. Dodatkowy bit pozwala na spełnienie przez nadajnik wymagań dotyczących maksymalnego czasu pomiędzy dwiema następującymi po sobie zmianami stanów. Dodatkowe zera usuwane są w układzie odbiornika.

Dane przesyłane za pomocą USB dzielone są na pakiety. Rysunek 3.1 przedstawia przykładową transmisję 8 bitowego pakietu.

(16)

16 Rysunek 3.1 Przykładowa transmisja 8 bitowego pakietu

W pierwszym wierszu pokazany jest ciąg danych wejściowych składający się z ośmiu bitów. Dane wejściowe zawierają sekwencje sześciu następujących po sobie jedynek, dlatego w celu zachowania synchronizacji odbiornika konieczne jest wstawienie dodatkowego bitu zera. Uzupełniony ciąg danych przedstawiony został w wierszu drugim.

Wiersz trzeci przedstawia ciąg danych zakodowanych za pomocą liniowego kodowania NRZI i gotowy do osadzenia w ramce pakietu USB. Ostatni wiersz przedstawia kompletną ramkę USB opatrzoną sekwencją sygnałów synchronizujących w postaci ciągu symboli

„KJKJKJKK” oraz sekwencją końca pakietu SE0, SE0, J.

Przykładowa transmisja pakietu przebiega w opisany poniżej sposób.

1. W trakcie bezczynności, wyjścia nadajnika znajdują się w stanie wysokiej impedancji, a na liniach danych ustalony jest stan J.

2. W chwili rozpoczęcia transmisji wyjścia nadajnika przechodzą w stan aktywny.

Wysłana zostaje sekwencja synchronizująca SYNC, składająca się z trzykrotnie powtórzonej pary symboli KJ oraz znacznika początku pakietu SOP w postaci dwóch symboli K.

3. Następnie wysłana zostaje zawartość pakietu.

4. Po przesłaniu zawartości pakietu wysyłany jest znacznik końca pakietu EOP w postaci dwóch symboli SE0 i symbolu J.

5. Po zakończeniu transmisji wyjścia nadajnika, wracają w stan wysokiej impedancji, a na liniach danych ustalany jest stan J.

(17)

17 Protokół USB definiuje 3 typy pakietów: znacznika, danych oraz potwierdzeń. Każdy typ pakietu posiada 8 bitowe pole, jednoznacznie go identyfikujące. Ramki znacznika posiadają ponadto pole adresowe oraz pięcio-bitowe pole sumy kontrolnej CRC5. Pakiety danych wyróżnia natomiast pole danych oraz szesnasto-bitowe pole sumy kontrolnej CRC16.

Cykliczny kod nadmiarowy CRC (ang. Cyclic Redundancy Check) to kodowanie pozwalające na detekcje błędów, powszechnie używane w sieciach cyfrowych i pamięciach masowych. Dane zakodowane za pomocą CRC opatrzone są krótką wartością będącą resztą z dzielenia ich i zawartości przez odpowiedni wielomian generujący.

Standard USB definiuje dwa wielomiany generujące. Wielomian dla pakietów znacznika w postaci X5 + X2 + X0 (CRC5) oraz wielomian dla pakietów danych w postaci X16 + X15 +X2 +X0 (CRC16). Sprawdzenie poprawności przesłanych danych odbywa się poprzez porównanie wielomianu zapisanego w ramce pakietu z wartościami obliczonym przez układ odbiornika. W przypadku wystąpienia błędu CRC cały pakiet zostaje zignorowany. Podobnie dzieje się kiedy wykrywany jest błąd wstawiania bitu zero lub otrzymany pakiet posiada niepoprawny format.

(18)

18

4. OPROGRAMOWANIE WSPIERAJĄCE REALIZACJĘ ĆWICZENIA Z USB

Wykonanie ćwiczenia laboratoryjnego pt. „Łącze fizyczne USB” wymagać będzie użycia zestawu modułów laboratoryjnych SML3 wskazanych instrukcją (patrz załącznik „ŁĄCZE FIZYCZNE USB”), wyposażonych w układy o parametrach umożliwiających sprzętową implementację protokołu USB, oraz predefiniowanego bloku funkcjonalnego implementującego poziom logiczny interfejsu w układzie FPGA. W niniejszym rozdziale przedstawione zostaną warianty rozwiązań, które były brane pod uwagę w trakcie koncepcyjnej fazy projektu tego ćwiczenia.

Obecnie wykorzystuję się kilka możliwych wariantów implementacji protokołu USB. Zdecydowanie najpopularniejszym z nich jest rozwiązanie, w którym właściwą warstwę protokołu obsługuje dedykowany układ mikrokontrolera komunikujący się z urządzeniem końcowym, np. za pomocą interfejsu równoległego. Jest to jednak rozwiązanie nie nadające się do modyfikacji – nie ma możliwości ingerencji w mechanizmy wspierające działanie interfejsu - zatem nie znajdzie zastosowanie w niniejszej pracy.

Protokół uniwersalnej magistrali szeregowej to zaawansowany protokół komunikacyjny. Ze względu na jego wielowarstwowość oraz stopień skomplikowania samodzielna jego implementacja w strukturze układu FPGA byłaby zadaniem bardzo pracochłonnym i zdecydowanie wykraczającym poza zakres niniejszej pracy. Przyjęto zatem rozwiązanie polegające na modyfikacji wybranych elementów gotowego projektu w postaci szablonu. Szablon ten powstanie na bazie projektu opisanego językiem HDL i udostępnionego przez jego autora w internecie.

Na rynku dostępne są moduły implementujące różne wersje interfejsu uniwersalnej magistrali szeregowej, tzw. moduły IP Core. W niniejszej pracy zdecydowano się na zastosowanie modułu IP Core zgodnego ze standardem uniwersalnej magistrali szeregowej w wersji 1.1. Decyzja ta znajduje swoje uzasadnienie w charakterze ćwiczenia „Łącze fizyczne USB”, którego celem jest zapoznanie studenta z prostymi mechanizmami wykorzystywanymi w układzie obsługi linii szeregowej. Zatem, nie dostępna prędkość transmisji, a prostota rozwiązania jest najistotniejszym czynnikiem z punktu widzenia ćwiczenia. Moduły implementujące standard 2.0 są znacznie bardziej rozbudowane od tych

(19)

19 implementujących standard 1.1, a pełne wykorzystanie ich możliwości w ramach zajęć laboratoryjnych przedmiotu UZINT jest w zasadzie niemożliwe. Poniżej przedstawiono wybrane moduły będące sprzętową implementacją protokołu USB 1.1.

Jednym z modułów IP Core, dostępnym odpłatnie za pośrednictwem strony Altery jest oferowany przez firmę SLS moduł USB Function Controller, oznaczony nazwą USB11SR [10]. Standardowo moduł USB Function Controller wspiera transmisję w trybie FULL SPEED, opcjonalnie jednak może być rozszerzony o możliwość transmisji w trybie LOW SPEED. Modyfikacja ta realizowana jest na specjalne życzenie zamawiającego i podlega dodatkowej opłacie. Moduł USB Function Controller wykorzystuje pamięć typu RAM oraz wspiera trzy prekonfigurowane punkty końcowe: punkt końcowy transmisji sterującej , transmisji masowej typu IN oraz transmisji masowej typu OUT. Na życzenie klienta może on posiadać do 15 punktów końcowych, z których każdy posiada kontroler wspierający transfer pilny, masowy oraz izochroniczny. Moduł został zoptymalizowany pod kątem układów FPGA firmy Altera, a jego funkcjonalność została zweryfikowana z wykorzystaniem oprogramowania EDA Altera Quartus II. Wraz z modułem USB Function Controller dostępna jest prekompilowana biblioteka projektu ModelSim umożliwiająca symulację i weryfikację pracy modułu. Moduł USB Function Controller zaprojektowany jest w języku Verilog. Komunikacja z urządzeniem wykonawczym odbywa się za pomocą interfejsu AVALON (szyny systemowej oferowanej przez oprogramowanie Quartus w układach firmy Altera). Wraz z modułem dostarczany jest komplet dokumentacji oraz oprogramowanie umożliwiające wykorzystanie wszelkich jego możliwości.

Moduł USB11SR udostępniany jest w formie zabezpieczonej przed modyfikacją, natomiast specyfika realizowanego ćwiczenia laboratoryjnego wymaga, aby możliwe było wprowadzenie zmian do wykorzystanego oprogramowania. Z tej przyczyny moduł ten nie może być wykorzystany na potrzeby projektowanego ćwiczenia.

Alternatywą dla płatnych modułów IP Core są bezpłatne moduły Open Core.

Wykorzystanie w projekcie oprogramowania opartego na Licencji Wolnego Oprogramowania ma równie wiele wad jak i wiele zalet. Do wad zaliczyć należy brak wsparcia ze strony producenta oprogramowania - moduły Open Core powstają przeważnie jako efekt pracy osób prywatnych, a nie specjalistycznych pracowni projektowych. Często problem stanowi także niejasna dokumentacja bądź jej brak. Istnieje co prawda możliwość kontaktu z autorem drogą mailową lub z innymi użytkownikami poprzez specjalistyczne

(20)

20 fora dyskusyjne, jednak może być to niewygodne oraz mało skuteczne. Zaletą tego rozwiązania jest natomiast to, że moduły dostępne na licencji wolnego oprogramowania można bezpłatnie wykorzystywać i modyfikować, nie naruszając prawa autorskiego.

Na szczególną uwagę zasługuje moduł USBHostSlave autorstwa Steve’a Fielding’a dostępny na stronie internetowej opencores.org, który zyskał pozytywną opinię użytkowników [9]. Projekt USBHostSlave implementuje zarówno mechanizmy odpowiedzialne za układ hosta jak i za układ funkcji USB. Moduł USBHostSlave komunikuje się z urządzeniem końcowym za pomocą interfejsu Wishbone, który jest odpowiednikiem interfejsu AVALON zastosowanego w module USB Function Controller firmy SLS. Zaletą modułu jest fakt, że jest to wersja stabilna projektu, natomiast wadą szczątkowa dokumentacja techniczna.

Warto również zwrócić uwagę na moduły Open Core stworzone przez Rudolf’a Usselmann’a. Autor, w proponowanej przez siebie sprzętowej implementacji protokołu uniwersalnej magistrali szeregowej przewiduje wykorzystanie dwóch oddzielnych modułów, usb_phy [15] oraz usb1_funct [14] (patrz rysunek 4.1).

Rysunek 4.1 Schemat blokowy rozwiązania proponowanego przez Rudolf’a Usselmann’a Pierwszy z nich odpowiada za niskopoziomowe mechanizmy protokołu USB, a w jego strukturach zaimplementowano obsługę konwersji szeregowo równoległej, wstawianie i usuwanie bitów zero oraz kodowanie i dekodowanie NRZI. Moduł usb1_funct natomiast stanowi modyfikację modułu „usb” implementującego protokół w wersji 2.0. tego samego autora. Usunięto z niego fragmenty odpowiedzialne za transmisję w trybie FULL SPEED oraz zrezygnowano z pamięci dzielonej na rzecz kolejek FIFO. W podstawowej konfiguracji moduł zawiera 6 punktów końcowych, w tym jeden do transmisji sterującej, jeden do izochronicznej wyjściowej, po jednym do transmisji masowej wejściowej oraz wyjściowej oraz jeden do wejściowej transmisji pilnej. Podobnie jak USBHostSlave, oba moduły napisane są w języku Verilog. Moduły komunikują się ze sobą za pomocą uproszczonego interfejsu UTMI. Rozwiązanie to pozawala na oddzielne wykorzystanie modułu usb_phy, np. w konfiguracji z układem mikroprogramowalnym. Do

(21)

21 znanych wad modułów należy natomiast zaliczyć brak walidacji transmisji w module odpowiedzialnym za transmisję odbiorczą.

Po dokonaniu analizy dostępnych rozwiązań zdecydowano się wykorzystać, na potrzeby niniejszej pracy, moduł USBHostSlave autorstwa Steve’a Fieldinga. W tym miejscu warto zauważyć, że wybór stosownego modułu projektowego nie jest decyzją nieodwracalną. W razie zaistnienia takiej potrzeby możliwa jest wymiana zastosowanego modułu IP Core na inny, np. zgodny ze standardem USB 2.0.

(22)

22

5. ETAP WSTĘPNY PROJEKTU

Etap wstępny projektu to czas, w którym wcześniej określone wymagania należy doprecyzować i spośród nich wybrać te, które są kluczowe dla realizacji projektu. W wyniku prac przeprowadzonych na tymże etapie powstanie spójna koncepcja, która będzie następnie podstawą do zaprojektowania nowych modułów SML3.

Rozdział rozpoczyna opis aktualnie wykorzystywanego modułu. Następnie w oparciu o potrzeby użytkowników oraz wymagania systemowe zdefiniowane zostaną wymagania konstrukcyjne. Opisany zostanie także proces wyboru preferowanego układu FPGA spełniającego określone wymagania oraz proces wyboru, wyposażonego w taki lub podobny układ, zestawu uruchomieniowego.

5.1. OPIS AKTUALNIE WYKORZYSTYWANEGO MODUŁU

Obecnie wykorzystywany moduł FPGA (EP1K30) został opracowany w Instytucie Informatyki Politechniki Warszawskiej w 2004 roku. Moduł wyposażony jest w programowalny układ EP1K30TC144-30 firmy ALTERA. Połączenie z innymi modułami tworzącymi konfigurację doświadczalną zrealizowane jest za pomocą ośmiu złączy typu

„port”. Złącza mogą realizować zadania linii wejściowych, wyjściowych lub dwukierunkowych, w zależności od wymagań projektu. Moduł wyposażony jest w trzy przełączniki stabilne oraz cztery przełączniki niestabilne. Ponadto istnieje możliwość wyświetlania danych bezpośrednio na module za pomocą 16 wbudowanych diod LED.

Konfiguracja układu FPGA odbywa się za pomocą zrealizowanego na module układu ByteBlaster II, który komunikuje się z komputerem za pomocą złącza szufladowego typu D-SUB25 służącego do połączenia komputera klasy IBM PC poprzez gniazdo LTP [6].

(23)

23 Rysunek 5.1 Fotografia modułu FPGA

Na rysunku 5.1 pokazano fotografię używanego od dziesięciu lat modułu systemu SML3 z układem FPGA.

5.2. WYMAGANIA KONSTRUKCYJNE

Etapem poprzedzającym wybór odpowiedniego układu FPGA był etap definiowania wymagań. Wyodrębniono dwie grupy wymagań - pozwalające na zachowanie zgodności z systemem SML3 oraz zapewniające zgodności ze standardem uniwersalnej magistrali szeregowej USB w wersji 1.1. Poniżej przedstawiono listę wymagań konstrukcyjnych zdefiniowanych dla projektowanego modułu FPGA (DE0-Nano), którego nazwa została nadana po wyborze zestawu z FPGA, opisanego w dalszej części prace. Nadanie nazwy modułowi miało za zadanie ułatwić czytelnikowi rozróżnienie nowo projektowanego modułu od modułu starego.

1. Zostaną zaprojektowane dwa moduły SML3:

a. moduł FPGA (DE0-Nano) pełniący funkcję płytki bazowej dla wybranego, gotowego zestawu z układem popularnym FPGA,

b. moduł USB1 realizujący interfejs fizyczny łącza USB.

(24)

24 2. Moduł FPGA (DE0-Nano) powinien być wyposażony w:

a. co najmniej osiem złączy typu „port” systemu SML3 umożliwiających dołączenie innych modułów systemu laboratoryjnego,

b. co najmniej cztery przyciski niestabilne, c. co najmniej trzy przełączniki stabilne,

d. co najmniej szesnaście niezależnie sterowanych diod LED,

e. wydzielone łącza SML3 dla obsługi dodatkowych układów występujących w wybranym zestawie.

3. Gotowy zestaw z układem FPGA powinien charakteryzować się następującymi własnościami:

a. układ FPGA powinien zawierać minimum 20 tysięcy bloków LUT; co najmniej 20 000 bajtów pamięci, minimum 93 układy wejścia-wyjścia; co najmniej 2 układy PLL,

b. zestaw powinien być wyposażony w złącza dwurzędowe umożliwiające dostęp do co najmniej 94 końcówek wejścia-wyjścia układu FPGA,

c. zestaw powinien być zasilany pojedynczym napięciem +5V, d. zestaw powinien posiadać wbudowany układ konfiguratora FPGA,

e. wymiar płytki drukowanej zestawu nie powinien przekraczać 100x100 mm.

4. Moduł FPGA (DE0-Nano) będzie zasilany napięciem +5V za pośrednictwem dowolnego złącza typu „port”.

5. Moduł laboratoryjny FPGA (DE0-Nano) powinien spełniać wymagania systemu SML3 i mieć szerokość 160 mm oraz wysokość 100 mm.

6. Zestaw z układem FPGA powinien być tak ustawiony na module FPGA (DE0- Nano) aby złącze USB służące do konfiguracji układu FPGA znalazło się na górnej krawędzi projektowanego modułu.

7. Moduł USB1 powinien być wyposażony w:

a. układ zgodny ze standardem uniwersalnej magistrali szeregowej USB 1.1.

b. dwa złącza systemu SML3:

i. pierwsze dla sygnałów łączących układ 7.a z układem sterującym, ii. drugie dla sygnałów nie wykorzystanych w łączu pierwszym;

c. złącze USB typu B umieszczone przy dolnej krawędzi modułu.

8. Moduł USB1 będzie zasilany napięciem +3.3V.

(25)

25 Wymienione wyżej założenia zostaną doprecyzowane w dalszej części niniejszego rozdziału. Wiele z nich wynika z głównego celu jaki postawiono przed projektantem.

Celem tym było skonstruowanie modułu SML3, który mógłby zastąpić dotychczas używany moduł FPGA (E1K30), dlatego założeń projektowych wynikających z konieczności realizacji tego celu nie ma potrzeby omawiać.

5.3. WYBÓR UKŁADU FPGA

Podstawowym problemem przed jakim stanął autor opisywanego projektu był wybór producenta układów FPGA (dostępność i jakość oprogramowania EDA), rodziny układów FPGA (własności funkcjonalne układów, popularność na rynku gwarantująca ich obsługę przez EDA w dłuższej perspektywie czasu, ceny układów) a w końcu układu użytego w oferowanym na rynku gotowym zestawie.

Obecnie na rynku znajduję się wiele firm oferujących układy programowalne FPGA.

Do największych producentów należą firmy takie jak Altera, Xilinx oraz Lattice. Posiadają one szeroką ofertę układów znajdujących swoje zastosowanie zarówno w małych aplikacjach jak i w złożonych układach cyfrowych.

Tabela 5.1. Zestawienie układów FPGA

Model

Altera Cyclone V E

5CEA2

Altera Cyclone IV E

EP4CE22

Altera Cyclone III

EP3C25

Xilinx Spartan-6 XC6SLX25

Lattice LatticeECP3

ECP3-35 Liczba elementów

logicznych (w tysiącach)

25 22 24 24 33

Liczba bloków pamięci

wbudowanej 176 66 66 52 72

Pojemność pamięci

wbudowanej (Kb) 1,760 594 594 936 1,327

Liczba układów

mnożących 50 66 66 38 64

Liczba układów pętli

synchronizacji fazy 4 4 4 2 4

Liczba układów

wejścia-wyjścia 224 153 215 266 310

(26)

26 W tabeli 5.1. przedstawiono zestawienie wybranych układów FPGA [11,12,13]. W porównaniu brano pod uwagę układy z rodzin CYCLONE V, CYCLONE IV, CYCLONE III, SPARTAN-6 oraz LatticeECP3 oferowane przez firmy Altera, Xilinx oraz Lattice.

Celowo nie podane zostały ceny wybranych układów, ponieważ różnią się one w znacznym stopniu w zależności od wybranej obudowy. Wśród przedstawionych układów na szczególna uwagę zasługuje oferowany przez firmę Altera model Cyclone V E 5CEA2, który zawiera pamięć wbudowaną o największym rozmiarze w swojej klasie oraz układ Lattice ECP3-35, którego główną zaletą jest oferowana maksymalna ilość układów wejścia-wyjścia. Podobnymi parametrami natomiast charakteryzują się układy Cyclone IV E EP4CE22 oraz Cyclone III EP3C25.

Przedstawione układy należą do głównych linii produktowych wybranych producentów. Przeznaczone są do zastosowania w niewielkich aplikacjach, w których znaczenie ma cena wykorzystanego układu. Oferowane przez nie parametry są porównywalne i spełniają wymagania określone w rozdziale wymagania konstrukcyjne.

Każdy z producentów wyżej wymienionych układów oferuję darmowy pakiet oprogramowania EDA. W załączonych pakietach istnieje możliwość opisu projektowanego układu zarówno w sposób strukturalny jak i behawioralny, co pozwala na realizację ćwiczenia „Łącze fizyczne USB”.

W niniejszej pracy jako preferowany do realizacji modułu SML3 uznano układ Altera Cyclone IV E EP4CE22. Układ EP4CE22 należy do obecnej na rynku od 2009 roku popularnej rodziny układów FPGA Cyclone IV. Wykorzystanie układu z rodziny Cyclone III mogłoby nieść ze sobą ryzyko przedwczesnego wycofania go z produkcji, natomiast układy z rodziny Cyclone V zostały wprowadzone na rynek w 2011 roku i są obecnie trudno dostępne w sprzedaży detalicznej. Obecnie w laboratorium Instytutu Informatyki Politechniki Warszawskiej wykorzystywane są układy EP1K30TC144-30 firmy Altera.

Ich konfigurowanie odbywa się w oparciu o oprogramowanie EDA MaxPlus II oraz Quartus II. Istotnym czynnikiem przy wyborze nowego układu była możliwość użycia możliwie podobnego oprogramowanie do tego używanego obecnie, dlatego zdecydowano się zrezygnować z zakupu porównywalnych układów Lattice oraz Xilinx.

Układ EP4CE22 dostępny jest w obudowach typu EQPF, FBGA oraz UBGA. Cena układu wacha się od 35 do 66 dolarów amerykańskich w zależności od typu obudowy.

Istnieje możliwość zakupienia układu w gotowym zestawie uruchomieniowym.

(27)

27 5.4. WYBÓR GOTOWEGO ZESTAWU Z UKŁADEM FPGA

Samodzielne wykonanie złożonej aplikacji wykorzystującej układ FPGA może być dla początkującego użytkownika niewykonalne ze względu na konieczność wykonania wielowarstwowej płytki PCB. Aby umożliwić naukę języków opisu sprzętu HDL powstaje coraz więcej kompletnych zestawów uruchomieniowych o zastosowaniu edukacyjnym.

Możliwości tych modułów pozwalają zarówno na wykorzystanie ich w roli układów prototypowych jak i stałych elementów funkcjonalnych bardziej złożonej aplikacji.

Kompletne zestawy uruchomieniowe najczęściej posiadają rozbudowany zestaw układów peryferyjnych w postaci przetworników analogowo cyfrowych, diod oraz przełączników.

W tabeli 5.2. przedstawiono parametry wybranych zestawów uruchomieniowych.

Widać wyraźne różnicę pomiędzy poszczególnymi modułami. Wśród wymienionych modułów najlepszymi parametrami układu FPGA charakteryzuje się oferowany przez firmę TerasIC Cyclone V GX Starter Kit [16]. Układ ten zawiera 77 tysięcy elementów logicznych oraz prawie 5 kilobajtów pamięci wbudowanej. Główną wadą modułu jest niewielka ilość udostępnionych uniwersalnych układów wejścia-wyjścia. Dodatkowym czynnikiem uniemożliwiającym jego wykorzystanie jest jego rozmiar. Umieszczenie modułu było by niemożliwe na żadnym ze standardowych modułów zgodnych ze standardem SML3. Na szczególną uwagę zasługuje moduł BeMicro CV [17], oferowany przez firmę Arrow Electronics. Moduł najlepiej odpowiada zdefiniowanym wymaganiom.

Posiada odpowiednią ilość układów wejścia-wyjścia oraz odpowiedni rozmiar. Ponadto moduł BeMicro CV jest najtańszym z prezentowanych w zestawieniu modułów. Niestety w trakcie etapu wstępnego projektu moduł ten nie był dostępny w ofercie żadnego z polskich dystrybutorów układów tego typu. Parametrami zbliżonymi do modułu BeMicro CV charakteryzuje się moduł DE0-Nano firmy TerasIC [18]. Układ FPGA zastosowany w module posiada wprawdzie nieznacznie mniejszą ilość elementów logicznych, ale pomimo to nadal spełnia określone wymagania. Ilość oferowanych przez niego układów wejścia- wyjścia jest wystarczająca do realizacji projektu, a wymiary pozwalają umieszczenie go na standardowej płycie systemu SML3. Moduł DE0-Nano jest jednak dwukrotnie droższy od omawianego wcześniej BeMicro CV.

(28)

28 Tabela 5.2. Parametry wybranych zestawów uruchomieniowych

Terasic DE0 TerasIC DE0-Nano Diligent Nexys2

500K Kit BeMicro CV TerasIC Cyclone V GX Starter Kit

Papilio Pro LX9

FPGA Cyclone III 3C16 FPGA

Cyclone IV E

P4CE22F17C6N Xilinx Spartan-3E Cyclone V E 5CEFA2F23C8N

Cyclone V

5CGXFC5C6F27C7N Xilinx XC6SLX9

Elementy logiczne 15,408 22,320 10,467 25,000 77,000 9,152

Bloki pamięci

wbudowanej 56 # # 176 # 32

Pojemność pamięci

wbudowanej (Kb) 504 594 360 1,760 4,884 576

Układy mnożące 56 66 20 50 150 (27x27) 16

Pętle synchronizacji

fazy 4 4 4 4 6 2

Złącza modułu z I/O FPGA m.in. dwa 40- pinowe złącza

m.in. dwa 40-pinowe złącza z 72 dostępnymi pinami i

jedno 26-pinowe złącze z 16 dostępnymi pinami

oraz 8 wejść analogowych

m.in. jedno szybkie złącze Hirose FX2

ze złączem 43- pinowym oraz cztery złącza Pmod

2x6

m.in. dwa 20- pinowe złącza oraz 80-pinowe

złącze kompatybilne z

BeMicro SDK

m.in. złącze HSMC oraz dwa 20-pinowe

złącza

m.in. 48-pinowe złącze

Pamięć zewnętrzna

8 Mb pamięci SDRAM 4 Mb pamięci Flash

32MB pamięci SDRAM 2Kb pamięci I2C

EEPROM

16MB pamięci Micron PSDRAM

16MB pamięci Intel StrataFlash

Flash R

64M x 16 pamięci DDR3 MT41J64M16LA

@ 300MHz [ Micron DDR3

SDRAM 1G (64M x 16)

533MHz]

4 Gb pamięci LPDDR2 x32 bits

data bus 4 Mb SRAM x16 bits

data bus

64Mbit pamięci Micron MT48LC4M16

SDRAM 64Mbit pamięci

Macronix MX25L6445 SPI

Flash Złącze konfiguratora JTAG Wbudowane przez

USB

Wbudowane przez USB

Wbudowane przez USB

Wbudowane przez USB

Wbudowane przez USB

Wbudowane przez USB

Rozmiar 99.7 X 128.02 mm 49.0 X 75.2mm 190.5 x 152.4 mm 48.0 mm x 92.0

mm 145*115.8 mm #

Cena 470,01 PLN 300,78 PLN 468,52 PLN 150,00 PLN 919,69 PLN 300,00 PLN

(29)

29 Niewątpliwą zaletą wykorzystania w projekcie kompletnego zestawu uruchomieniowego jest brak konieczności samodzielnego montażu układu FPGA na płycie drukowanej. Kompletne moduły uruchomieniowe posiadają wyprowadzenia złącz na swoich obrzeżach, co ułatwia łączenie ich z innymi modułami. Konfigurowanie układu FPGA w tego typu modułach odbywa się za pomocą dedykowanego interfejsu.

Zastosowanie kompletnego zestawu uruchomieniowego może w znacznym stopniu uprościć proces projektowania nowego modułu laboratoryjnego oraz pozwolić w prosty sposób na rozszerzenie go o dodatkowe funkcjonalności podnoszące jego wartość dydaktyczną. Bazując na powyższych rozważaniach wybrano zestaw DE0-Nano firmy TerasIC. Zastosowanie tego typu układu w nieznacznym stopniu podwyższy koszt projektu, natomiast pozwoli na realizacje znacznie bardziej rozbudowanych projektów w przyszłości.

(30)

30

6. PROJEKT MODUŁU LABORATORYJNEGO FPGA (DE0-Nano) Niniejszy rozdział w całości poświęcony jest budowie modułu laboratoryjnego FPGA (DE0-Nano).

Pomimo dobrze zdefiniowanych wymagań etap projektowania modułu zajął znacznie więcej czasu niż wcześniej zostało to oszacowane. W trakcie projektowania pojawiały się nowe wymagania mające na celu poprawę walorów użytkowych modułu. W efekcie powstały dwa projekty modułów. Moduł wykonany zgodnie z obecnymi zasadami projektowania modułów w standardzie SML3 oraz moduł alternatywny, o podwyższonych walorach dydaktycznych. W niniejszej pracy przedstawiony zostanie jedynie pierwszy z nich.

Moduł FPGA (DE0-Nano) został wyposażony w trzy przełączniki stabilne, cztery przyciski niestabilne oraz 16 diod LED. Wszystkie z wykorzystywanych elementów elektronicznych przeznaczone są do montażu powierzchniowego. Moduł wyposażono w 8 gniazd danych typu „Port” oraz jedno gniazdo do obsługi sygnałów przetwornika analogowo-cyfrowego. Zestaw uruchomieniowy umieszczony został w pozycji centralnej z gniazdem konfiguracyjnym skierowanym w stronę górnej krawędzi modułu. Montaż zestawu uruchomieniowego odbywa się poprzez nasadzenie go na odpowiednie gniazda pośrednie umieszczone w module FPGA (DE0-Nano). Aby to umożliwić złącza pośrednie zestawu uruchomieniowego zostały przelutowane ze strony górnej na stronę dolną modułu DE0-Nano. Zasilanie doprowadzane jest poprzez dowolny z portów znajdujących się na module SML3. Alternatywnie możliwie jest doprowadzenie zasilania poprzez złącze konfiguracyjne USB, jednak jego wydajność prądowa jest mocno ograniczona i może uniemożliwić pracę z modułem.

Do wykonania projektu użyto oprogramowania EAGLE CAD. Dokładny opis bibliotek i elementów które zostały wykorzystane podczas projektowania modułu umieszczony został w podrozdziale „Projekt schematu modułu”.

6.1. PROJEKT SCHEMATU MODUŁU

Projekt płytki drukowanej musi być poprzedzony projektem schematu układu, który ma zostać umieszczony na płytce. Zgodnie z wymaganiami systemu SML3 do realizacji łączy typu port wykorzystano złącza ML16 z biblioteki con-harting-ml. Układ DE0-Nano

(31)

31 połączono z płytą modułu za pomocą złączy FE20-2, FE13-2 z biblioteki con-lsta oraz F-1X02-SIP-100-40 (F-1X02-) z biblioteki con-headers-jp. Diody 4148-0805 (4148), rezystory R0805 (R), 4R-EU0603 (4R-EU) oraz kondensatory C-EU0805 (C-EU) pobrano z biblioteki gbm-smd, konfiguratory MA03-1 z biblioteki con-lstb, przyciski 10-XX z biblioteki switch-omron, natomiast układ 74HC595D z biblioteki 74xx-eu.

Układ 74HC595D zastosowano do sterowania diodami LED. Ze względu na ograniczoną liczbę końcówek we-we udostępnionych przez moduł DE0-Nano konieczne było zapamiętanie na zewnątrz układu FPGA stanu diod LED. Do tego służy wymieniony rejestr, którego zawartość jest zapisywana szeregowo przez układ FPGA.

W projekcie wykorzystano również diodę MBRS130LT3G dostępną w bibliotece elementów stworzonych na potrzeby projektu. Na rysunkach 6.1 i 6.2 przedstawiono schemat modułu FPGA (DE0-Nano).

(32)

32

Rysunek 6.1 Schemat modułu FPGA (DE0-Nano)

(33)

33

Rysunek 6.2 Schemat modułu FPGA (DE0-Nano) kontynuacja

(34)

34 6.2. PROJEKT PŁYTKI DRUKOWANEJ

W trakcie tego etapu projektowania rozważano różne konfiguracje modułu FPGA (DE0-Nano). Początkowo planowano, aby zestaw uruchomieniowy DE0-Nano został umieszczony przy lewej krawędzi modułu z wydzielonym portem zasilania po swojej lewej stronie i zestawem portów danych wraz z portem przetwornika analogowo- cyfrowego po prawej stronie. Na module oprócz podstawowych elementów takich jak diody czy przyciski miał zostać umieszczony dodatkowy port USB wraz z odpowiednim układem warstwy fizycznej USB. Konfiguracja ta jednak posiadała wiele wad, a przede wszystkim godziła w jedną z głównych zasad systemu SML3. System SML3 to system modułowy i każdy moduł powinien posiadać ściśle określoną odpowiedzialność, nie wskazane jest natomiast łączenie odpowiedzialności kiedy nie jest to konieczne.

Na rysunku 6.1 przedstawiono projekt płytki drukowanej modułu SML3 FPGA (DE0-Nano). W projekcie wprowadzono szereg zmian w stosunku do pierwotnych założeń projektowych. Zestaw uruchomieniowy umieszczono w pozycji centralnej. Zrezygnowano z osobnego gniazda zasilania. Gniazdo z sygnałami wejściowymi dla przetwornika analogowo-cyfrowego umieszczono na dole płytki drukowanej w pozycji poziomej, aby odróżnić je od pozostałych gniazd modułu. Oprócz standardowych diod i przycisków dodano stabilne przełączniki dwupozycyjne, a zrezygnowano z układu interfejsu fizycznego łącza USB oraz dodatkowego gniazda USB.

Projekt wykonano przy ustawieniach rastra głównego o rozmiarze 25 mils z mnożnikiem 2 oraz rastra alternatywnego o rozmiarze 5 mils.

(35)

35 Rysunek 6.3 Projekt płytki drukowanej

(36)

36 6.3. METODOLOGIA MONTAŻU I URUCHAMIANIA MODUŁU

Przed rozpoczęciem montażu elementów elektronicznych wykonano sprawdzenie obwodu drukowanego. Sprawdzenie obwodu drukowanego wpierw wykonano metodą optyczną.

Położenie ścieżek porównano z położeniem w dostarczonym projekcie. Zbadano ich kształt oraz grubość. Zwrócono szczególną uwagę na nadmierne zwężenia warstwy izolacyjnej, przewężenia ścieżek sygnałowych oraz ubytki płaszczyzny masy. Ponadto sprawdzono kształt pól lutowniczych oraz przesunięcia otworów względem pól lutowniczych. Po zakończeniu procesu testowania optycznego przeprowadzono proces testowania elektrycznego. Za pomocą omomierza wykonano pomiar rezystancji wszystkich ścieżek. Dopiero taki sposób testowania pozwolił na wstępne stwierdzenie o poprawności testowanego obwodu drukowanego. Testowane w niniejszej pracy obwody okazały się wystarczające, aby spełnić wymagania określone dla prototypowych płytek drukowanych.

Montaż przeprowadzono w sposób typowy, zaczynając od elementów najmniejszych i kończąc na największych. Pierwszym etapem montażu było umiejscowienie pojedynczych rezystorów 2K2, zlokalizowanych powyżej przycisków, na obwodzie drukowanym. Następnie przeprowadzono montaż pojemności odprzęgających 100nF przy układach rejestrów przesuwnych, rezystorów podciągających 4R 2K2 połączonych z przełącznikami SWi, rezystorów 220R połączonych z diodami LED, diod LED, diody Shottky’ego przy gnieździe przetwornika analogowo-cyfrowego oraz układów rejestrów przesuwnych 74HC595D. W ostatnim kroku wykonano montaż przycisków, przełączników oraz standardowych gniazd danych systemu SML3 i gniazd pod układ DE0- Nano w wyznaczonych miejscach.

Po wykonaniu montażu modułu przeprowadzenie procesu jego testowania. Został on szczegółowo opisany w rozdziale „Testowanie modułu w trakcie użytkowania”.

6.4. TESTOWANIE MODUŁU W TRAKCIE UŻYTKOWANIA

W celu sprawdzenia poprawności działania modułu należy przygotować odpowiednią konfigurację testową. Na standardowej szynie systemu należy umieścić kolejno moduły PS1, FPGA (DE0-Nano) oraz LED8, a następnie połączyć je za pomocą taśm 16- przewodowych systemu SML3. Do przeprowadzenia procedury testującej oprócz standardowego zasilacza systemu SML3 niezbędny również będzie zewnętrzny

(37)

37 stabilizowany zasilacz laboratoryjny z płynną regulacją napięcia. Badanie poszczególnych elementów modułu należy wykonać poprzez uruchomienie oraz weryfikację działania programu testującego załączonego do niniejszej pracy na płycie CD.

Program testujący został umieszczony w katalogu „Test”. Pozwala on na przeprowadzenie badania przewodności ścieżek oraz poprawności funkcjonowania dołączonych elementów elektronicznych. Program testujący umożliwia przeprowadzenie trzech procedur testowych. Przełączanie pomiędzy procedurami możliwe jest za pomocą czterech umieszczonych na zestawie uruchomieniowym przełączników. Zgodnie z wybraną kombinacją przełączników 0001, 0010, 0011 kolejno zostanie przeprowadzona procedura testowania ścieżek, diod lub przetwornika analogowo – cyfrowego. Poniżej przedstawiony został opis poszczególnych procedur.

Przed rozpoczęciem testowania należy skonfigurować układ FPGA. W tym celu, po uruchomieniu programu Quartus należy wybrać zakładkę Tools a z jej listy funkcję Programmer. W okienku tej funkcji należy wskazać typ programatora (opcją Hardware Setup – wybrać „USB-Blaster [USB-0]”, a następnie je zamknąć. Programowanie układu odbywa się automatycznie po wciśnięciu przycisku „Start”. Po jego zakończeniu w prawej górnej części okienka widoczny jest zielony pasek wypełniony napisem 100%.

Pierwsza z procedur pozwala na przeprowadzenie badania przewodności ścieżek danych oraz ich poprawnego przypisania do znajdujących się na module portów.

Sprawdzenie należy wykonać poprzez połączenie jednego z końców taśmy do pierwszego z portów danych na module FPGA (DE0-Nano), natomiast drugiego do pierwszego z portów na module LED8. Poprawne działanie układu sygnalizowane jest przez cykliczne świecenie kolejnych diod. W celu sprawdzenia wszystkich pozostałych połączeń należy powtórzyć procedurę dla pozostałych portów z wyłączeniem portu dedykowanego dla przetwornika A/C. Potwierdzeniem wykonywania tej procedury jest cyklicznie zaświecanie diod LED umieszczonych na module uruchomieniowym.

Druga z procedur sprawdza działanie przycisków. Poprawne działanie tych elementów potwierdza zapalenie się wybranej diody LED oznaczonej numerem z zakresu od 0 do 3, w reakcji na wciśnięcie odpowiedniego klawisza przycisku umieszczonego na płycie modułu FPGA (DE0-Nano). W podobny sposób zachowują się diody LED modułu uruchomieniowego.

(38)

38 Ostatnia z procedur sprawdza działanie układu przetwornika analogowo- cyfrowego. Do jej uruchomienia niezbędne będzie wykorzystanie zewnętrznego zasilacza stabilizowanego. W celu przeprowadzenia testu należy ustawić napięcie zasilacza na wartość 0V, a następnie połączyć jego wyjścia ze stykiem masy oraz wybranym stykiem w gnieździe przetwornika analogowo-cyfrowego. Kolejnym etapem procedury jest stopniowe zwiększanie napięcia zasilacza do wartości 3.3V. W trakcie zmiany wartości poziomu napięcia kolejne diody na module DE0-Nano powinny ulega stopniowemu zaświeceniu. Dla minimalnego napięcia wejściowego U<0,35V wszystkie diody będą wyłączone. Kolejna dioda zaświeca się po zwiększeniu napięcia wejściowego o kolejne 0,35V. Osiągnięcie maksymalnego napięcia wejściowego powinno być sygnalizowane świeceniem wszystkich diod LED. Ponieważ układ przetwornika wyposażony jest w 8- wejściowy multiplekser analogowy konieczne jest powtórzenie tego testu ośmiokrotnie. Na początek sygnał z zasilacza powinien być wprowadzamy na końcówkę 14 złącza przetwornika analogowo-cyfrowego, w kolejnym teście zasilacz powinien zasilić końcówkę 13 tego samego złącza. Czynność tę należy powtórzyć w sposób analogiczny dla końcówek kolejno 12,11,10,9,8 i 7, Wybór aktywnego wejścia realizowany jest za pomocą przełączników bistabilnych, gdzie konfiguracja 000 oznacza wejście 1, 001 wejście 2 itd. zgodnie z powyższą regułą.

Moduł można uznać za działający poprawnie, w przypadku prawidłowego wykonania wszystkich z wyżej wymienionych procedur testujących.

(39)

39

7. PROJEKT MODUŁU LABORATORYJNEGO USB1

Idea zaprojektowania odrębnego modułu USB1 zrodziła się w trakcie projektowania modułu FPGA (DE0-Nano). Aby umożliwić zastąpienie obecnie używanego modułu FPGA należało w pełni zachować jego dotychczasową funkcjonalność. Zastosowanie kompletnego zestawu uruchomieniowego w znacznym stopniu ograniczyło ilość dostępnego na płytce miejsca. Ponieważ funkcjonalność jaką jest dodatkowe złącze USB wykorzystywana będzie jedynie w ramach jednego z ćwiczeń przedmiotu UZINT, zdecydowano się na udostępnienie jej w postaci dedykowanego modułu. Takie rozwiązanie pozwala na wykorzystanie modułu USB z innymi modułami laboratoryjnymi takimi jak np. moduł Z80 czy msp430 oraz ewentualne zastąpienie go odpowiednim modułem USB 2.0 w przyszłości.

7.1. PROJEKT SCHEMATU MODUŁU

Realizacja poziomu fizycznego łącza USB1.1 wymagała zastosowania specjalizowanego układu scalonego. Z pośród dostępnych na rynku układów rozważano użycie takich jak Fairchild Semiconductor USB1T11A, PHILIPS PDIUSBP11A, PHILIPS ISP1105 czy FARADAY USB90B1H. Ze względu na dostępność, kompatybilność z zastosowanym oprogramowaniem IP Core oraz działanie potwierdzone w aplikacjach użytkowników, zdecydowano się wykorzystać pierwszy z wymienionych układów.

Wybór pozostałych elementów modułu wynikał z noty aplikacyjnej układu USB1T11A. W celu zachowania pełnej funkcjonalności układu warstwy fizycznej bez konieczności zwiększania liczby wykorzystanych portów zastosowano dwa konfiguratory.

Zadaniem konfiguratora JP1 jest wybór trybu pracy układu warstwy fizycznej, czyli znaczenia wyjścia VMO/FSE0. Natomiast zadaniem konfiguratora JP2 jest wybór parametrów sygnałów na liniach różnicowych w zależności od jednego z dwóch trybów transmisji: FS lub LS. Sposób ustawienia konfiguratorów został przedstawiony w załączniku 2.

Na płycie modułu zdecydowano się również umieścić dwa dodatkowe punkty kontrolne. Ich zastosowanie umożliwia wykorzystanie oscyloskopu do analizy przebiegów sygnałów w trakcie transmisji. Ze względu na miejsce umieszczenia złączy punktów kontrolnych (bezpośrednio przy metalowym gnieździe USB) należy ostrożnie korzystać z

(40)

40 sond oscyloskopowych. Zaleca się łączenie tych punktów pojedynczymi przewodami z modułem BNC, do którego można podłączyć oscyloskop.

W projekcie wykorzystano złącza ML16 z biblioteki con-harting-ml, złącze USB- B-H (USB) z biblioteki con-usb-2, złącze pomiarowe M-1X02-SIP-100-32 (M-1X02-) z biblioteki con-headers-jp, konfiguratory PINHD-1X3 z biblioteki 0_SML3_MPW, tranzystor BSS84 z biblioteki transistor-small-signal oraz rezystory R0805 (R) i kondensatory C-EU0805 (C-EU) z biblioteki gbm-smd. Na rysunku 7.1 przedstawiono schemat modułu USB1.

(41)

41

Rysunek 7.1 Schemat modułu USB1

Cytaty

Powiązane dokumenty

W artykule przedstawiono wyniki symulacji stanów pracy przykładowego układu elektrycznego z wykorzystaniem symulatora, opartego na procesorze sygnałowym.. Jest to

W przypadku komunikacji z kartą pomiarową stanowisko miało mieć możliwość zarówno akwizycji sygnału jak i generowania sygnałów na wyjściu karty.. Program

Spełnienie potrzeby klienta dotyczącej nowych, pożądanych smaków przekąsek jest możliwe dzięki zastosowaniu specyficznych dodatków (wędzony łosoś, szynka par- meńska,

Dla prędkości obrotowej n=2850 obr/min miary, tj.: wartość skuteczna, energia sygnału, wartość międzyszczytowa, potrafią rozpoznać jeden z trzech stanów silnika

W modelu obliczeniowym przyjęto następujące warunki brzegowe. Dolną powierzchnię warstwy tworzywa w myśl przyjętego założenia o nieskończenie dużej sztywności

W niniejszym opracowaniu dokonano więc analizy drgań układu mechatronicznego w postaci belki wspornikowej oraz przetwornika piezoelektrycznego z uwzględnieniem

Na podstawie zmierzonych w czasie badań wartości przygo- towane zostały wykresy sprawności w funkcji momentu obroto- wego przy stałej prędkości obrotowej wału napędzającego oraz

Opracowany akumulatorowy układ zasilający składa się z modułu baterii i aparatury zabudowanych na wozie strzelniczym oraz wolnostojącego modułu ładowania opracowanego