slideshow 1 slideshow 2 slideshow 3 slideshow 4

Interfejsy komputera PC. USB

    Uwaga! W artykule wyrażono opinie w których porównuje się ze sobą marki i ich produkty. Opinie tu zawarte są wyłącznie prywatną opinią autora i mają na celu jedynie określenie jak odbiera to autor-inżynier zajmujący się na co dzień tego typu zagadnieniami.

    Komputer PC posiada wiele interfejsów umożliwiających mu kontakt ze światem zewnętrznym. Poza interfejsami dedykowanymi dla wyświetlania grafiki czy odbierania danych wprowadzanych poprzez klawiaturę istnieje szereg interfejsów, które umożliwiają wymianę danych w formacie wymaganym przez użytkownika. Należą do nich wymierające już interfejsy LPT czy UART (RS232) ale również interfejsy obecnie popularne takie jak USB lub PCI i jej nowsza wersja PCI Express. Z bezprzewodowych interfejsów wymienić można powoli zanikającą już IrDA’ę oraz nadal popularne Wi-Fi czy Bluetooth.

    Poza wymienionymi istnieją oczywiście również inne interfejsy wymiany danych. Nic nie stoi na przeszkodzie aby zrobić sterowanie urządzeniem za pomocą wejść/wyjść audio czy za pomocą programowego wysuwania napędu CD. Jednak nie wszystkie one nadają się równie dobrze. Dla transferu bardzo dużej ilości danych pomiędzy procesorem a urządzeniem, a w dodatku przy bardzo częstej zmianie kierunku transmisji danych, warto użyć PCI lub PCI Express lub w skrajnych przypadkach np. magistrali HyperTransport firmy AMD. Dzięki PCI i darmowym modelom PCI opracowanym w Verilog lub VHDL można zrealizować bardzo wydajne urządzenie umożliwiające komunikację komputera PC z otoczeniem czy urządzenie działające na zasadzie akceleratora.

    Jednak ze względu na coraz bardziej popularne i tanie komputery klasy notebook na prowadzenie wysuwa się interfejs USB jako medium transmisyjne dzięki któremu można kontrolować zewnętrzne urządzenia elektroniczne. Łatwość w montażu, małe złącze, duża przepustowość 50MB/s dla USB2.0 i ok. 450MB/s dla działającego już USB3.0 sprawiają że ten standard nie bez powodu zdobywa coraz większa popularność.

    Inżynierowie z którymi miałem okazję współpracować, którzy znają interfejsy USB i Fire-Wire na ogół twierdzą, ze ten drugi miał „większy potencjał”, tak przynajmniej było kiedyś. Niestety jak to miało miejsce w przypadku procesorów Motoroli i Intela (to wyłącznie moim zdaniem) poza „potencjałem” i „czystością” rozwiązania liczy się również siła marki, marketing i inne raczej obce dla inżyniera pojęcia. W przypadku USB było podobnie. Słaba przepustowość pierwszych wersji USB w stosunku do FireWire, nie najlepsze połączenia elektryczne, bardziej skomplikowane warstwy łącza standardów nie przeszkodziły jednak aby to ten standard wygrał. Warto o tym pamiętać gdy projektowany zostaje nowy sprzęt. Nie musi być najlepszy, nie musi być najtańszy. W przeciwnym przypadku (wyłącznie moim zdaniem) rozwiązania typu iPod nie odniosłyby sukcesu. Jest to o tyle ważne, że w przypadku projektowania komercyjnych urządzeń również należy skoncentrować się rentowności przedsięwzięcia, a nie tylko na kwestii technicznej tak uwielbianej przez inżynierów.

    Wracając jednak do kwestii technicznej interfejsów wymiany danych pomiędzy komputerem PC, a zewnętrznym urządzeniem warto wspomnieć również o wadach USB. Należą do nich:

  • Możliwość zasilania z USB tylko urządzeń o mocy nie większej niż 2,5W. Co więcej, w początkowej fazie pracy urządzenia należy zapewnić pobór prądu nie większy niż 100 mA, a dopiero po uzyskaniu od hosta przydziału mocy można przełączyć się w tryb pełnego dopuszczalnego obciążenia. Spełnienie tego warunku jest konieczne aby urządzenie USB było zgodne ze standardem opracowanym przez organizację zarządzającą USB www.usb.org. W praktycznych rozwiązaniach, zwłaszcza tych prostszych na ogół pomija się to zagadnienie. Niepisana zasada zakłada, że początkowy skok prądu nie może być większy niż 1A i nie może trwać dłużej niż 100us. Wówczas w większości komputerów podłączenie urządzenia nie spowoduje to pojawienia się komunikatu o skoku napięcia na koncentratorze USB lub po prostu o pojawieniu się zwarcia na linii USB. Ta dość ważna wskazówka wymusza znaczne ograniczenie stosowania kondensatorów elektrolitycznych w urządzeniu zasilanym z USB. W praktyce największa nie naładowana pojemność jaką można podpiąć do zasilania USB wynosi ok. 300uF. Powyżej tej wartości system wyświetli odpowiedni komunikat jednak zasilanie nadal będzie dostarczane do urządzenia USB
  • USB wymaga dużo bardziej skomplikowanego oprogramowani zarządzającego transmisją danych niż to miało miejsce w przypadku klasycznego interfejsu szeregowego RS232. Oczywiście zyskujemy dużo większe możliwości jednak w prostych systemach jest to istotna przeszkoda
  • Urządzenie sterowane nie może znajdować się dalej niż 25 metrów od hosta USB czyli w tym przypadku komputera PC. Pojedynczy przewód nie może być dłuższy niż 5m i wymagane jest wówczas zastosowanie 5 hubów
  • Ta cecha jest znana jednak na ogół nie jest traktowana jako problem. Wszystko zmienia się gdy staje się wąskim gardłem systemu i w rzeczywistości nie ma sposobu na jej obejście. Jak chyba każdy elektronik wie, USB 2.0 High-Speed oferuje przepustowość na poziomie 480Mbit/s. Jak wykazały testy na najszybszych dostępnych urządzeniach USB, transfer ten nie jest jednak większy niż 50MB/s. Jest to oczywiste i pomimo spadku realnej przepustowości transfer danych nadal jest ogromny. Interfejs ma jednak inną niewygodną cechę. Transfer taki jest osiągalny przy ciągłym przesyle danych w jednym kierunku. Natomiast w urządzeniach elektronicznych nierzadko zachodzi potrzeba częstej wymiany danych na zasadzie wysłania żądania do urządzenia, a następnie odpowiedź. W większości przypadków okres takiej dwukierunkowej operacji wynosi nie mniej niż 2ms. Niezależnie czy przesyłamy dane w obie strony po jednym bajcie czy po kilkadziesiąt kilobajtów. W przybliżeniu trwa to co najmniej 2ms. Przez tą niedogodność częste zmiany kierunku przesyłu danych dyskwalifikują USB jako wydajne medium do sterownia urządzeniami elektronicznymi. Obecnie problem można obejść raczej tylko w jeden sposób. Należy zaprojektować oprogramowanie tak aby ilość operacji typu rozkaz-odpowiedź była jak najmniejsza. Można oczywiście zmienić interfejs USB na PCI gdzie ten problem jest mniejszy, jednak w wielu przypadkach nie jest to możliwe.

    Wybierając interfejs wymiany danych pomiędzy komputerem PC, a urządzeniem elektronicznym obecnie najlepiej jest zdecydować się na USB lub PCI gdy ograniczenia tych interfejsów są do zaakceptowania. Na pytanie czy projektować własne rozwiązanie USB czy użyć gotowego układu FTDI można odpowiedzieć tak, że dla początkujących użytkowników zalecane jest FTDI. Jednak bardziej doświadczeni elektronicy przy projektowaniu bardziej wymagające układów powinni oprzeć USB o bardziej wydajne rozwiązania np. firmy Cypress i jej układy z serii FX2. Na rynku pojawia się coraz więcej gotowego firmware’u oraz darmowych sterowników pod systemy operacyjne, przez co ta droga jest jak najbardziej słuszna.

Podsumowanie i literatura

Pozycje wykorzystane bezpośrednio do opracowania treści artykułu:

  • [1] FT245BM USB FIFO IC Data Sheet. Revision 1.8, FTDI CHIP, 2008
  • [2] www.usb.org
  • Autorem artykułu jest Krzysztof Fijak

Fijak Logic od 2009r