• Nie Znaleziono Wyników

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

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 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

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

33

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

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 Rysunek 6.3 Projekt płytki drukowanej

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 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 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

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 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

Rysunek 7.1 Schemat modułu USB1

42 7.2. PROJEKT PŁYTKI DRUKOWANEJ

Niewielkie rozmiary elementów wykorzystanych w projekcie modułu spowodowały, że zdecydowano się na projekt płytki drukowanej o wymiarach 40x100 mm. Zgodnie z wymaganiami systemu SML3 w górnej części płytki umieszczono złącza typu port a w dolnej - złącze USB typu B (wymagane standardem USB 1.1). W środkowej części modułu umieszczono układ warstwy fizycznej USB wraz z kondensatorem odprzęgającym.

Układ połączono ze złączem za pomocą linii różnicowej poprzez dwa rezystory szeregowe.

Do linii różnicowej dołączono rezystor podciągający z tranzystorem unipolarnym p-mos umożliwiając symulację odłączenia modułu. Na powierzchni obwodu przewidziano dodatkowe pola lutownicze umożliwiające montaż kondensatorów.

Rysunek 7.2 Projekt płytki drukowanej

Zgodnie z wymaganiami systemu SML3 na płytce drukowanej umieszczono, wytrawione w miedzi, napisy organizacyjne (nazwa modułu, jego numer oraz inicjały autora).

7.3. METODOLOGIA MONTAŻU I URUCHAMIANIA MODUŁU

Sprawdzenie modułu USB1 wykonano w sposób identyczny jak sprawdzenie modułu FPGA (DE0-Nano).

Podobnie jak w przypadku modułu FPGA (DE0-Nano) montaż przeprowadzono w sposób typowy, rozpoczynając od elementów najmniejszych. Pierwszym etapem montażu było umiejscowienie rezystorów szeregowych 24Ω na liniach różnicowych. Następnie przeprowadzono montaż rezystora 30kΩ i rezystora podciągającego 1,5kΩ przy jego

43 tranzystorze sterującym. W kolejnym etapie wykonano montaż pary równoległej: rezystora 470kΩ i kondensatora 10nF, pomiędzy masą układu a masą obudowy złącza USB oraz pojedynczego kondensatora 1µF pomiędzy masą układu i masą złącza, a sygnałem zasilającym dla złącza USB. Następnie wykonano montaż tranzystora BSS84, kondensatora odprzęgającego 100nF przy układzie USB1T11A oraz samego układu. W ostatnim kroku wykonano montaż konfiguratorów, złącz pomiarowych oraz standardowych gniazd danych systemu SML3 w wyznaczonych miejscach.

7.4. TESTOWANIE MODUŁU W TRAKCIE UŻYTKOWANIA

W celu sprawdzenia poprawności działania układu należy przygotować stosowną konfigurację testową. Na szynie systemu SML3 należy umieścić kolejno zasilacz, zestaw przełączników bistabilnych oraz moduł gniazd BNC. Złącza sygnałowe modułu USB1 należy połączyć za pomocą pojedynczych przewodów ze złączami na module przełączników bistabilnych. Natomiast złącza pomiarowe za pomocą pojedynczych przewodów ze złączami na module BNC. Następnie należy zbadać za pomocą oscyloskopu czy poziomy napięć na złączach pomiarowych są zgodne z określonymi w dokumentacji dla wybranych wzbudzeń sygnałów. Jeśli są one zgodne, moduł można uznać za działający poprawnie.

44

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

Zadaniem studenta realizującego ćwiczenie dotyczące implementacji wybranego fragmentu uniwersalnego interfejsu USB będzie najpierw zweryfikowanie działania szablonu projektu interfejsu USB 1.1. W tym celu obejrzy on na oscyloskopie przebiegi czasowe na liniach interfejsu i odczyta z ekranu komputera komunikat generowany przez wzorcowy układ. W kolejnym kroku student będzie musiał zastąpić wskazany blok funkcjonalny łącza implementowany w FPGA własnym układem opisanym językiem AHDL lub schematem.

Konieczne więc będzie:

 opracowanie materiałów pomocniczych do ćwiczenia,

 przygotowanie szablonu projektu zawartości FPGA,

 opracowanie przykładowych projektów.

8.1. BUDOWA STANOWISKA LABORATORYJNEGO DLA REALIZACJI ĆWICZENIA

Przykładowa konfiguracja systemu SML3 przygotowana na potrzeby realizacji ćwiczenia składa się z modułu zasilacza PS1, modułu FPGA (DE0-Nano) oraz modułu USB1. W zależności od zaistniałej potrzeby konfiguracja może być rozszerzona o dowolny moduł zgodny ze standardem SML3.

8.2. WYKORZYSTYWANE SKŁADNIKI PROGRAMOWE

Przygotowując projekt ćwiczenia laboratoryjnego należało założyć, że wkład studenta w zaprojektowanie układu realizującego interfejs USB powinien być stosunkowo niewielki.

Dlatego konieczne jest przygotowanie gotowego układu, który student będzie musiał jedynie uzupełnić. Samodzielny projekt kompletnego łącza USB wykraczałby poza zakres ćwiczenia, stąd pomysł, aby wykorzystać odpowiednio zmodyfikowany projekt zrealizowany w ramach Open Core przez Steve’a Fielding’a pod nazwą USBHostSlave

W niniejszej pracy wykorzystany zostanie moduł implementujący protokół USB w wersji 1.1. Jego szczegółowy opis zawiera dokument [8], który został obok oryginalnego projektu zamieszczony na płycie CD-ROM dołączonej do pracy dyplomowej. Projekt ten

45 zostanie uzupełniony o alternatywne implementacje wybranych modułów, zrealizowanych w postaci graficznej lub plików AHDL. Wybrane moduły realizować będą proste mechanizmy odpowiadające za poprawne przesyłanie i odbieranie komunikatów w trakcie transmisji z komputerem IBM PC.

8.2.1. Architektura

Moduł Open Core składa się z pięciu głównych bloków funkcjonalnych:

USBSerialInterfaceEngine, HostSlaveMux, USBSlaveControl, USBHostControl oraz WishBoneBI[8]. Rysunek 8.1 przedstawia schemat blokowy modułu USBHostSlave oraz zależności jakie występują pomiędzy poszczególnymi blokami.

Rysunek 8.1 Schemat blokowy modułu USBHostSlave

Wymienione na rysunku 8.1 bloki funkcjonalne realizują następujące funkcje:

1) USBSerialInterfaceEngine – Wspiera mechanizmy najniższej warstwy protokołu USB 1.1. Na ścieżce nadawania USBSerialInterfaceEngine implementuje, wstawianie sekwencji synchronizującej, kalkulację i wstawianie cyklicznego kodu

46 nadmiarowego, konwersję równoległo-szeregową, wstawianie bitu zera oraz kodowanie NRZI. Natomiast na ścieżce odbioru USBSerialInterfaceEngine implementuje wykrywanie stanu połączenia, wykrywanie i usuwanie sekwencji synchronizującej, odzyskiwanie zegara, dekodowanie NRZI, usuwanie bitu zera, obliczenie i porównanie cyklicznego kodu nadmiarowego oraz konwersję szeregowo-równoległą.

2) HostSlaveMux – Pozwala na współdzielenie USBSerialInterfaceEngine przez kontrolery host i slave.

3) USBSlaveControl – Wspiera część warstwy protokołu urządzenia wykonawczego.

Wspiera wszystkie typy transakcji zgodne z protokołem USB 1.1: masową, sterującą , pilną i izochroniczną.

4) USBHostControl – Wspiera część warstwy protokołu hosta. Wspiera wszystkie typy transakcji zgodne z protokołem USB 1.1. Wspiera automatyczne wstawianie preambuły oraz automatyczne tworzenie i transmisje pakietu początku ramki SOF.

5) WishBoneBI – Wspiera interfejs kompatybilny z kontrolerami hosta i urządzenia wykonawczego oraz kolejkami nadawania i odbioru.

W celu przybliżenia czytelnikowi budowy modułu USBHostSlave na rysunkach 8.1 – 8.4 przedstawiono widok plików RTL wygenerowanych na podstawie kodu źródłowego projektu.

Rysunek 8.2 Schemat blokowy modułu usbDevice

Na schemacie pokazanym na rysunku 8.1 wybrano symbol modułu usbSlave (prawy dolny róg rysunku). Rozwinięcie tego symbolu przedstawia rysunek 8.2.

47 Rysunek 8.3 Schemat blokowy modułu usbSlave

Na schemacie pokazanym na rysunku 8.2 wybrano symbol modułu usbSerialInterfaceEngine (element wyróżniony w części środkowej rysunku). Rozwinięcie tego symbolu przedstawia rysunek 8.3.

Rysunek 8.4 Schemat blokowy modułu usbSerialInterfaceEngine

48 Rysunek 8.5 Widok ogólny modułu USBHostSlave

49 Pełny schemat ukazujący złożoność modułu USBHostSlave przedstawiono na rysunku 8.4. Analiza tych rysunków w przedstawionej wersji nie ma sensu ze względu na ich złożoność i nieczytelność. Możliwe jest to wyłącznie za pomocą oprogramowania Quartus po odpowiednim powiększeniu wybranego obszaru ekranu. Zamieszczenie tych rysunków miało na celu pokazanie złożoności projektu, z którym miał do czynienia autor niniejszej pracy.

8.2.2. Przykładowa konfiguracja systemu z wykorzystaniem modułu USBHostSlave Na rysunku 8.2 przedstawiona została przykładową konfiguracja systemu z wykorzystaniem modułu USBHostSlave.

Rysunek 8.6 Przykładowa konfiguracja systemu z wykorzystaniem modułu USBHostSlave

Przykładowa konfiguracja systemu z wykorzystaniem modułu USBHostSlave składa się ze złącza USB, układu warstwy fizycznej UWF, modułu USBHostSlave oraz bloku sterującego, którego funkcję może pełnić dowolny moduł kompatybilny z magistralą Wishbone.

Po włączeniu zasilania, blok sterujący konfiguruje układ USBHostSlave jako urządzenie końcowe USB. W przypadku, gdy urządzenie końcowe nie jest podłączone do urządzenia Hosta, USBHostSlave zgłasza, że linia USB jest w stanie RESET. W momencie, gdy urządzenie końcowe jest podłączone do urządzenia Hosta, USBHostSlave

50 rejestruje zdarzenie połączenia oraz dopuszczalną maksymalną prędkość połączenia. W następnym kroku dochodzi do konfiguracji połączenia. Ustalana jest:

 prędkość połączenia,

 polaryzacja połączenia,

 flaga globalna punktu końcowego,

 adres.

Po zakończeniu konfiguracji komputer IBM PC i urządzenie końcowe gotowe są do rozpoczęcia wymiany danych.

Szczegółowy opis realizacji ćwiczenia został zawarty w załączniku 1 „Instrukcja dla studentów do ćwiczenia UZINT_USB”.

51

9. PODSUMOWANIE

Układy programowalne FPGA to obecnie jedna z najprężniej rozwijających się dziedzin elektroniki. Spadek ich cen oraz wzrost możliwości jakie oferują powoduje, że coraz częściej zastępują popularne układy ASIC oraz mikrokontrolery. Z powodzeniem znajdują swoje zastosowanie nie tylko w rozwiązaniach przemysłowych, ale także edukacyjnych.

Jednym z zastosowań układów programowalnych FPGA może być sprzętowa implementacja szybkich interfejsów przesyłania danych. Celem niniejszej pracy było przygotowanie stanowiska laboratoryjnego wspomagającego projektowanie interfejsu USB z wykorzystaniem układu FPGA, a także zaprojektowanie i uruchomienie modułu systemu SML3 umożliwiającego modelowanie złożonych układów cyfrowych wykorzystujących struktury FPGA.

Niniejsza praca powstała głównie w oparciu o dokumentację techniczną protokołu USB1.1 oraz oprogramowania Open Core UsbHostSlave autorstwa Steve’a Fielding’a.

Analizy porównawcze układów FPGA oraz zestawów uruchomieniowych przeprowadzone zostały w oparciu o materiały informacyjne dostępne na stronach producentów układów.

W pracy wykorzystano również liczne informacje pozyskane na specjalistycznych forach dyskusyjnych oraz prywatnych stronach internetowych.

W ramach niniejszej pracy zaprojektowano i wykonano dwa moduły laboratoryjne zgodne ze standardem SML3. Ponadto opracowano stosowną dokumentację do tych modułów, wybrano odpowiednie oprogramowanie Open Core, zmodyfikowano je oraz dokonano syntezy w strukturach układu FPGA. Integralną częścią pracy jest opracowana metodologia ćwiczenia pt. „Łącze fizyczne USB”.

Ze względu na złożoność i rozległość zagadnienia praca nad nimi powinna być kontynuowana w kolejnych opracowaniach. Na obecnym etapie projektu nie udało się nawiązać połączenia pomiędzy modułami, a komputerem klasy IBM PC za pośrednictwem zaprojektowanego łącza USB. Dokładna przyczyna niepowodzenia, w chwili pisania pracy nie była znana. Przypuszcza się, że problemem mógł być błąd w oprogramowaniu Open Core. W opinii autora praca stanowi dobrą podstawę do dalszych badań, których efektem może być zidentyfikowanie i naprawa zaistniałych nieprawidłowości, a także wprowadzenie zaprojektowanego ćwiczenia do programu zajęć laboratoryjnych.

52 Do pracy dołączono trzy załączniki. Pierwszy z nich zawiera opis ćwiczenia ze złączem USB przeznaczony dla studentów. Drugi i trzeci opisują opracowane przez autora niniejszej pracy dwa moduły SML3. Opis ich przygotowany jest wzorowany na dokumentacji systemu SML3 udostępnionej na portalu www.galera.ii.pw.edu.pl.

53

10. BIBLIOGRAFIA

1. Chabko K., Gracki K., Pawłowski M., Raczkowski J., Skorupski A,, Szymański Z.

„Projektowanie układów cyfrowych”, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2011.

2. Mielczarek W. „USB. Uniwersalny interfejs szeregowy”, Helion, Gliwice, 2005.

3. Peczarski M. „USB dla niewtajemniczonych w przykładach na mikrokontrolery STM32” ,Wydawnictwo BTC, Legionowo, 2013.

4. Praca zbiorowa pod redakcją Andrzeja Dąbrowskiego Przemysława Dymarskiego

„Podstawy transmisji cyfrowej”, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 2004.

5. Dokumentacja techniczna Universal Serial Bus

http://www.usb.org/developers/docs/usb20_docs/usb_20_031114.zip [Dostęp: grudzień 2013]

6. Dokumentacja modułu FPGA (EP1K30)

6. Dokumentacja modułu FPGA (EP1K30)

Powiązane dokumenty