• Nie Znaleziono Wyników

Tabela 3.1 Parametry elektryczne łącza USB 1.1..……….10 Tabela 3.2 Parametry dynamiczne łącza USB 1.1 w trybie transmisji Full-Speed..……...11 Tabela 3.3 Parametry dynamiczne łącza USB 1.1 w trybie transmisji Low-Speed……....12 Tabela 5.1 Zestawienie układów FPGA………..25 Tabela 5.2 Parametry wybranych zestawów uruchomieniowych………...28

56

12. INDEKS ILUSTRACJI

Rysunek 3.1 Przykładowa transmisja 8 bitowego pakietu………..16

Rysunek 4.1 Schemat blokowy rozwiązania proponowanego przez Rudolf’a Usselmann’a……….20

Rysunek 5.1 Fotografia modułu FPGA……….. 23

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

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

Rysunek 6.3 Projekt płytki drukowanej……….35

Rysunek 7.1 Schemat modułu USB1………..41

Rysunek 7.2 Projekt płytki drukowanej………..42

Rysunek 8.1 Schemat blokowy modułu USBHostSlave. ……….………..45

Rysunek 8.2 Schemat blokowy modułu usbDevice ………...46

Rysunek 8.3 Schemat blokowy modułu usbSlave………..… 47

Rysunek 8.4 Schemat blokowy modułu usbSerialInterfaceEngine……….…47

Rysunek 8.5 Widok ogólny modułu USBHostSlave………...48

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

57

ZAŁĄCZNIK 1.

ŁĄCZE FIZYCZNE USB

Celem ćwiczenia jest poznanie zasad działania wybranych mechanizmów, wykorzystywanych w uniwersalnej magistrali szeregowej.

1. WPROWADZENIE DO STANDARDU USB

Uniwersalna magistrala szeregowa USB to technologia wykorzystywana do łączenia komputera z urządzeniami peryferyjnymi lub innymi urządzeniami cyfrowymi. Po raz pierwszy, standard USB przedstawiono w 1995 roku. Powstał on w wyniku współpracy takich firm jak IBM, Intel oraz Microsoft, jako prostszy sposób na łączenie układów peryferyjnych z komputerami osobistymi. Przed wprowadzeniem technologii USB każdy komputer posiadał wiele portów dedykowanych takich jak porty szeregowe, równoległe czy PS2 pozwalające na obsługę myszy i klawiatury. Standard USB wprowadził jednolity sposób łączenia szerokiej gamy urządzeń zewnętrznych, oferując jednocześnie parametry przekraczające możliwości innych typów połączeń [1].

Typowy system USB, którego schemat blokowy pokazany jest na rysunku 1.1, składa się z układu warstwy fizycznej UWF, układu obsługi linii szeregowych UOLS oraz układu kontrolera interfejsu UKI. Układ warstwy fizycznej odpowiada za dopasowanie sygnałów warstwy fizycznej protokołu uniwersalnej magistrali szeregowej. Układ obsługi linii szeregowej odpowiada za kodowanie, dekodowanie, wstawanie bitu zero, usuwanie bitu zero, konwersję szeregowo-równoległą oraz równoległo-szeregową. Natomiast układ kontrolera interfejsu odpowiada za logikę połączenia.

Rysunek 1.1 Budowa typowego systemu USB

Implementację łącza uniwersalnej magistrali szeregowej USB w strukturach układów FPGA typowo wykonuje się w jednej z dwóch konfiguracji: z wyodrębnionym układem warstwy fizycznej lub z wyodrębnionym układem warstwy fizycznej i układem obsługi linii szeregowej. Na rysunku 1.2 przedstawiono konfigurację systemu USB przygotowaną na potrzeby niniejszego ćwiczenia.

58 Rysunek 1.2 Konfiguracja przygotowana na potrzeby ćwiczenia „Łącze fizyczne USB”

Na rysunku 1.2 przedstawiono diagram blokowy przygotowanej konfiguracji systemu SML3. Konfiguracja zaprojektowana została w oparciu o dwa moduły systemu SML3: USB1 oraz FPGA(DE0-Nano). Pierwszy z nich odpowiada za realizację układu warstwy fizycznej USB, natomiast drugi zawiera pozostałe elementy typowego systemu USB.

Na rysunku 1.3 przedstawiono uproszczony diagram blokowy układu obsługi linii szeregowej stworzonego na potrzeby zajęć laboratoryjnych. Układ ten stanowi element modułu urządzenia USB. Szczegółowy opis modułu przedstawionego na rysunku 1.3 został umieszczony na serwerze Galera.

59 Rysunek 1.3 Diagram blokowy układu obsługi linii szeregowej

Moduł układu obsługi linii szeregowej przedstawiony na rysunku 1.3 składa się z dwóch głównych części: odbiornika i nadajnika. Elementy odbiornika modułu zaznaczono na rysunku kolorem czerwonym, elementy nadajnika kolorem niebieskim, natomiast elementy wspólne kolorem zielonym. W trakcie ćwiczenia modyfikowane będą elementy układu odbiornika. Odbiornik do odbioru i przetwarzania sygnałów korzysta z następujących bloków funkcyjnych:

 Blok kontroli linii (ang. lineControlUpdate ) – moduł określa polaryzacje połączenia USB, tzn. znaczenie symboli J i K wykorzystywanych podczas transmisji.

 Blok czytania danych wejściowych (ang. readUSBWireData) – moduł

odczytuje dane z linii różnicowych oraz buforuje je w wewnętrznych kolejkach FIFO,

 Blok operacji niższego poziomu (odbiornika) (ang. processRxBit) – moduł realizuje operacje usuwania bitu zero oraz dekodowania NRZI,

 Blok operacji wyższego poziomu (odbiornika) (ang. processRxByte) – moduł sprawdza poprawność nadesłanych danych oraz rozpoznaje ich typ,

60

 Blok obliczania CRC16 (ang. updateCRC16) – moduł oblicza resztę z dzielenia ciągu danych przez wielomian CRC w postaci G(X) = X16+X15+X2+1,

 Blok obliczania CRC16 (ang. updateCRC5) – moduł oblicza resztę z dzielenia ciągu danych przez wielomian CRC w postaci G(X) = X5+X2+1,

 Sterownik odbiornika UOLS (ang. SIEReceiver ) – moduł określa stan połączenia na podstawie informacji otrzymanych od innych modułów.

W dalszej części instrukcji wykorzystywana będzie terminologia angielska, która to także jest występuje w plikach źródłowych systemu.

2. PRZYKŁADOWE ZADANIE

Treść zadania

Zaprojektować przy pomocy języka AHDL element układu obsługi linii szeregowej, którego symbol graficzny przedstawiono na rysunku 2.1.

Rysunek 2.1 Blok funkcyjny lineControlUpdate.

Znaczenie sygnałów wejściowych :

 fullSpeedPolarity – wskazuje odczytaną polaryzację łącza, ‘0’ – oznacza transmisję w trybie FS , a ‘1’ wskazuje na tryb LS,

 fullSpeedBitRate – sygnał pozostaje niewykorzystany.

Znaczenie sygnałów wyjściowych:

 JBit[1..0] – Wektor dwubitowy. Określa znaczenie symbolu J. W przypadku transmisji FS (Full-Speed) przyjmuję wartość kolejno 0, 1 odpowiednio dla linii sygnałowych D–, D+, analogicznie dla transmisji LS (Low-Speed) przyjmuję wartość 1,0 ,

61

 KBit[1..0] – Wektor dwubitowy. Określa znaczenie symbolu K. W przypadku transmisji FS przyjmuję wartość kolejno 1, 0 odpowiednio dla linii sygnałowych D–, D+, analogicznie dla transmisji LS przyjmuję wartość 0,1.

Realizowane przez układ funkcje

W odpowiedzi na zmianę sygnału określającego polaryzacje łącza moduł definiuje odpowiednio znaczenie sygnałów J i K. W przypadku, gdy wejście fullSpeedPolarity przyjmuje wartość logicznej „1” na wyjściach powinny znaleźć się parametry odpowiednie dla transmisji w trybie FS analogicznie w przypadku, gdy wejście fullSpeedPolarity przyjmuje wartość logicznej „0”.

 Realizacja zadania

Po analizie znaczenia sygnałów wejściowych i wyjściowych oraz realizowanych przez układ funkcji należało uzależnić stan wyjść JBit i KBit od sygnału fullSpeedPolarity w sposób pokazany w rozwiązaniu zadania przedstawionym na rysunku 2.2.

1

if (fullSpeedPolarity==VCC) then JBit[]=B"01"; KBit[]=B"10";

else JBit[]=B"10"; KBit[]=B"01"; end if;

END;

Rysunek 2.2 Przykładowe implementacja modułu lineControlUpdate 3. PRZYGOTOWANIE ZESTAWU LABORATORYJNEGO

Uruchomienie zaprojektowanego układu w systemie laboratoryjnym SML3 wymaga umieszczenia na szynie systemowej następujących modułów:

PS1 – zasilacz,

FPGA (DE0-Nano) – moduł układu FPGA, USB1 – moduł układu warstwy fizycznej USB.

62 Moduły należy połączyć w sposób przedstawiony na rysunku 3.1.

Rysunek 3.1 Schemat połączeń modułów systemu SML3

Szczegółowy opis modułów przedstawionych na rysunku 3.1 został umieszczony na serwerze Galera.

4. LITERATURA:

1) Informacja ogólna o uniwersalnej magistrali szeregowej

http://www.britannica.com/EBchecked/topic/1056046/USB [Dostęp: maj 2014]

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

3) Pawłowski M., Skorupski A. „Projektowanie układów cyfrowych”, Wydawnictwo Komunikacji i Łączności sp. z o.o., Warszawa, 2010

4) Dokumentacja techniczna Universal Serial Bus dostępna stronie internetowej www.usb.org/developers/docs/usb20_docs/usb_20_031114.zip

[Dostęp: grudzień 2013]

63 5. ZADANIA DO SAMODZIELNEGO WYKONANIA W LABORATORIUM

Treść zadania

Zaprojektować przy pomocy języka AHDL element układu obsługi linii szeregowej, którego symbol graficzny przedstawiono na rysunku 5.1.

Rysunek 5.1 Blok funkcyjny CRC5 Znaczenie sygnałów wejściowych :

 rst – stan ‘1’ powoduje przywrócenie modułu do stanu początkowego, wykorzystywane jako element globalnego układu wznawiania pracy układu, ustawia wartość wyjść ready oraz CRCResult w stan wysoki,

 rstCRC – stan ‘1’ powoduje przywrócenie modułu do stanu początkowego, wykorzystywane jest jedynie we współpracy z blokiem SIETransmitter, ustawia wartość wyjść ready oraz CRCResult w stan wysoki,

 CRCEn – stan ‘1’ powoduje wpisanie danych z linii danych do rejestrów oraz rozpoczęcie obliczeń,

 CRC5_8BitIn – stan ‘1’ oznacza, że na wejściu danych wprowadzona została 8-bitowa wartość, natomiast stan ‘0’, że została wprowadzona wartość 3-bitowa,

 dataIn – 8-bitowa szyna danych, przyjmuje argument operacji,

 clk – sygnał taktujący o częstotliwości zegara 48MHz.

Znaczenie sygnałów wyjściowych:

 CRCResult – 4-bitowa szyna danych zwraca wynik zakończonej operacji,

 ready – przyjmuje stan wysoki w chwili zakończenia obliczeń.

64 Realizowane przez układ funkcje

Blok CRC5 realizuje operację obliczania reszty z dzielenia ciągu danych przez wielomian CRC w postaci G(X) = X5 + X2 + 1. Blok posiada dwa synchronizowane zegarem, aktywne stanem wysokim, wejścia reset: rst oraz rstCRC. Pierwsze z nich stanowi element globalnego układu wznawiania układu, natomiast drugie wykorzystywane jest wyłącznie we współpracy z innymi modułami w ramach modułu usbSerialInterfaceEngine. Pojawienie się sygnału wysokiego na wejściach reset powoduje, oprócz przywrócenia układu do stanu początkowego, ustalenie stanu wysokiego na wyjściu ready oraz wszystkich wyjściach magistrali CRCResult. Sygnał taktujący dostarczany jest przez wejście clk. Układ dostosowany jest do obliczania wartości z porcji danych o 2 dopuszczalnych długościach: 8 bitów i 3 bitów. Rozmiar wprowadzanych danych określany jest za pomocą wejścia 8BitIn, gdzie wartość logicznej „1” na jego wejściu oznacza dłuższą wartość natomiast wartość logicznego „0” krótszą. Dane wejściowe wprowadzane są do modułu za pomocą 8-bitowej magistrali dataIn.

Obliczanie cyklicznego kodu nadmiarowego rozpoczyna się z pojawieniem się stanu logicznej „1” na wejściu CRCEn. Po zakończeniu wyliczenia sumy kontrolnej ustawiany jest stan „1” na wyjściu ready oraz zapisywany jest wynik obliczeń do rejestru wyjściowego CRCResult. Operacja obliczania reszty z dzielenia ciągu danych przez wielomian generujący opisuje poniższy algorytm. W pierwszym kroku sprawdzona zostaje wartość najbardziej znaczącego bitu w ciągu danych wejściowych. W przypadku, gdy wynosi ona ‘0’, na ciągu danych zostaje wykonana operacja przesunięcia w prawo z dopełnieniem zerami. W przypadku przeciwnym wykonana zostaje operacja xor z bitową reprezentacją wielomianu generującego. Sekwencja ta jest powtarzana cyklicznie do uzyskania wyniku - 5-bitowej reszty.

65

ZAŁĄCZNIK 2.

DOKUMENTACJA MODUŁU 420_USB

420_USB1 – MODUŁ UKŁADU WARSTWY FIZYCZNEJ USB 1.1. – USB1T11A

Opis ogólny

Moduł 420_USB1 wyposażony jest w układ warstwy fizycznej USB1T11A produkowany przez firmę Fairchild Semiconductor oraz gniazdo USB typu B, zgodne ze standardem USB 1.1.

W górnej części modułu umieszczono dwa złącza: po lewej stronie SV1[7..0], a po prawej SV2[7..0] służące do połączenia modułu USB1 z innymi modułami dostarczającymi danych i sterowań, a także umożliwiające zasilenie sąsiedniego modułu SML3.

66

Schemat

Wyprowadzenia linii sterujących układu USB1T11A doprowadzono do złącz typu port oraz elementów konfiguracyjnych na płycie modułu. Wyjścia nadajnika-odbiornika różnicowego połączono z gniazdem USB typu B. Funkcje wejść układu przedstawiono w tabeli.

67

Złącza i elementy konfiguracyjne

Moduł wyposażony jest w dwa złącza 8-sytkowe SV1 o standardowym dla systemu SML3 rozmieszczeniu sygnałów logicznych i linii zasilających.

Złącze SV1[7..0], SV2[7..0]

7 USBP USBP sterowanie rezystorem podciągającym

8 X X nie zdefiniowane

9 TX_DN VMO/FSE0 wejścia danych dla nadajnika różnicowego

10 TX_DP VPO

11 RX_D RCV pojedyncze wyjście danych z odbiornika różnicowego

12 TX_OE /OE ustalenie trybu układu warstwy fizycznej.

13 RX_DN VM wyjścia danych z odbiornika różnicowego

14 RX_DP VP

Ustalenie trybu działania układu warstwy fizycznej – konfigurator J1

„1” „1”

we Mode = „1” we Mode = „0”

„0” „0”

Ustalanie współczynnika krawędziowego – konfigurator J2

„1” „1”

we Speed = „1” we Speed = „0”

„0” „0”

68

Zastosowanie

Moduł implementuje warstwę fizyczna interfejsu uniwersalnej magistrali szeregowe zgodnie ze standardem 1.1.

Wersje modułu

W laboratorium dostępna jest jedna wersja modułu.

69

ZAŁĄCZNIK 3.

DOKUMENTACJA MODUŁU 305_FPGA_(DE0-NANO)

305_FPGA_(DE0-NANO)

– MODUŁ UNIWERSALNY Z UKŁADEM FPGA

Opis ogólny

Głównym elementem modułu FPGA (DE0-Nano) jest zestaw uruchomieniowy DE0-Nano firmy terasIC wyposażony w układ FPGA EP4CE22F17C6N firmy Altera.

Komunikacja modułu FPGA(DE0-Nano) z innymi modułami systemu SML3 odbywa się za pomocą 8 złącz danych typu „Port” oraz jednego dedykowanego złącza przetwornika analogowo-cyfrowego.

Moduł FPGA (DE0-Nano) wyposażony jest w trzy przełączniki bistabilne, 4 przyciski niestabilne oraz 16 diod LED dostępne dla projektantów układu umieszczanego w FPGA.

Każdy z przełączników bistabilnych SWi posiada dwa wyprowadzenia SWiA i SWiB dołączone do wyprowadzeń zestawu uruchomieniowego DE0-Nano. Ustawienie przełącznika SWi w pozycji górnej spowoduje wymuszenie stanów kolejno 0 i 1 na wyjściach SWiA i SWiB, natomiast w pozycji przeciwnej kolejno 1 i 0.

70 Dodatkowo na płycie zestawu uruchomieniowego DE0-Nano umieszczone są 2 przyciski stabilne, 4 przełączniki typu dip oraz 8 diod LED. Istnieje również możliwość wykorzystania 13-bitowy akcelerometru oraz 12-bitowy układ przetwornika analogowo-cyfrowego.

Układ konfigurowany jest za pomocą środowiska Quartus II w wersji co najmniej 12.

poprzez dedykowane złącze USB-Blaster umieszczone na zestawie uruchomieniowym.

Schemat

Schemat modułu został umieszczony na dwóch stronach. Pierwsza z nich zawiera elementy wymienione w opisie ogólnym, natomiast druga połączenia układu ze złączami SVi.

71

72

73

Złącza i elementy konfiguracyjne

Na każdym ze złącz SVi wyprowadzono osiem sygnałów informacyjnych Di[7..0], gdzie i jest numerem złącza od 1 do 8, oraz zasilania zgodnie z wymaganiami systemy SML3.

Pozostałe elementy modułu dołączone są do następujących końcówek modułu FPGA DE0-Nano.

74

Zastosowanie

Moduł FPGA (DE0-Nano) pozwala na realizację różnych układów logicznych począwszy od prostych układów kombinacyjnych realizowanych za pomocą bramek, poprzez złożone automaty opisywane za pomocą języków opisu sprzętu HDL, aż po wbudowane systemy mikroprocesorowe.

Moduł może być zasilany na jeden z dwóch sposobów. Poprzez złącze konfiguracyjne USB umieszczone na zestawie uruchomieniowym lub za pomocą jednego ze złącz typu

„Port” znajdującego się na module.

Zgodnie z założeniami systemu SML3 zaleca się, aby moduł był zasilany poprzez złącze SV1 bezpośrednio z modułu zasilającego PS1. Alternatywny sposób zasilania to zasilenie za pośrednictwem modułu SML3 połączonego z modułem PS1 a z drugiej strony dołączonego do dowolnego złącza SVi modułu FPGA.

Układ FPGA Altera EPC 43242 umieszczony w zestawie uruchomieniowym DE0-Nano może być konfigurowany za pomocą oprogramowania EDA Quartus II w wersji nie starszej niż 12.1.

Wersje modułu

W laboratorium dostępna jest tylko jedna wersja tego modułu.

Powiązane dokumenty