Senin, 03 Oktober 2011

Dody Fanditya 0910630048


Universal Serial Bus (USB)

Universal Serial Bus atau biasa disebut USB ini adalah sebuah protokol komunikasi yang mendukung transfer data secara serial antara PC (yang mendukung USB) dan perangkat lain (yang mendukung USB juga). USB ialah port yang sangat diandalkan saat ini dengan bentuknya yang kecil dan kecepatan datanya yang tinggi. USB memiliki kemampuan untuk menangani 127 perangkat sekaligus dengan SATU kabel konektor saja. Antara lain adalah :
* Printer
* Scanner
* Mice/Mouse
* Joysticks
* Flight yokes
* Kamera Digital
* Webcam
* Modem
* Speaker
* Video phone
* Storage devices, sepertiZip drives
* Network connections
Selain daripada itu, komunikasi USB juga mempunyai beberapa keuntungan lain, antara lain :
  1. Kemudahan cara koneksi. Konektor USB hanya perlu satu soket dalam PC anda sehinga anda tidak perlu menghafal bentuk konektor untuk masing-masing perangkat.
  2. Kemampuan hot-swaping Plug 'n Play dan Host Insertion and Removal, adalah kemampuan yang memungkinkan memasang ataupun melepas peralatan, seperti scanner, tanpa harus terlebih dahulu mematikan sistemnya. Hal ini membuat perangkat USB jauh dari masalah dan konflik yang disebabkan oleh kesulitan konfigurasi manual seperti DIP switch, jumper, IRQ, DMA, dan I/O.
3.       Power Suply Konektor USB menyertakan line tersendiri untuk mengalirkan listrik bertegangan +-5 volt. Sehingga dengan demikian beberapa perangkat yang memerlukan daya listrik tidak perlu lagi menggunakan adaptor untuk mengkonversi listrik AC menjadi DC. Jadi bisa menghemat ruang dan uang.
Saat ini transfer data menggunakan port USB sudah semakin marak, port USB menjadi pilihan utama karena ukuran yang ringkas dan kecepatan transfer data yang cukup besar.  Sebagai perbandingan, Bus  PCI saat ini mendukung transfer data hingga 132 Mbps, dimana AGP (pada 66MHz) mendukung hingga 533 Mbps. AGP  dapat melakukan ini karena kemampuannya untuk mentransfer data pada ujung naik dan turun detak 66MHz.
Perbedaan paling mencolok antara versi 2.0 dan lama adalah kecepatan transfer yang jauh meningkat. Kecepatan transfer data USB dibagi menjadi tiga, antara lain :
  • High speed data dengan frekuensi clock 480.00Mbps dan tolerasi pensinyalan data pada ± 500ppm.
  • Full speed data dengan frekuensi clock 12.000Mbps dan tolerasi pensinyalan data pada ±0.25% atau 2,500ppm.
·         Low speed data dengan frekuensi clock 1.50Mbps dan tolerasi pensinyalan data pada ±1.5% atau 15,000ppm.
Sejak tahun 1994 sampai sekarang, USB telah berkembang dari versi lama hingga versi terbaru yang jauh lebih cepat dari pendahulunya. Berikut adalah beberapa versi dari USB :
1.       USB 0,7 Keluar pada November 19 94
2.       USB 0,8 Keluar pada Desember 1994
3.       USB 0.9 Keluar pada April 1995
4.       USB 0.99 Keluar pada Agustus 1995
5.       USB 1.0 Muncul pada November 1995, diperkenalkan pada Januari 1996
USB versi 1.0 mendukung 2 kecepatan yaitu 1,5 Mbps (Low-Speed) dan 12 Mbps (Full-Speed). USB versi ini tidak memungkinkan perpanjangan kabel atau pass-through monitor (karena keterbatasan waktu dan kekutan). Beberapa perangkat seperti itu benar-benar berhasil dipasarkan.
6.       USB 1.1 Muncul pada September 1998
USB versi 1.1 mendukung 2 kecepatan yaitu mode kecepatan penuh 12Mbps dan kecepatan rendah 1.5 Mbps.
7.       USB 2.0 Muncul pada April 2000
USB 2.0 mempunyai kecepatan 480Mbps yang dikenal sebagai mode kecepatan tinggi. (Hi-Speed). Modifikasi lebih lanjut spesifikasi USB telah dilakukan melalui Rekayasa Change Notices (ECN). Yang paling penting ECN ini dimasukkan ke dalam USB 2.0 spesifikasi paket yang tersedia dari USB.
  • Mini-B Connector ECN: Muncul pada October 2000.Spesifikasi untuk Mini-B steker dan stopkontak. Ini tidak boleh dikacaukan dengan Micro-B steker dan stopkontak.
  • Errata as : Muncul pada Desember 2000
  • Pull-up/Pull-down Resistors ECN: Muncul pada Mei 2002.
  • Errata as of : Muncul pada Mei 2002.
  • Interface Associations ECN: Muncul pada Deskriptor standar baru ini ditambahkan yang memungkinkan beberapa interface untuk dihubungkan dengan satu fungsi perangkat.
  • Rounded Chamfer ECN: Muncul pada Oktober 2003. Yang disarankan, perubahan yang kompatibel untuk Mini-B plugin yang menghasilkan konektor lebih tahan lama
  • Unicode ECN: muncul pada Februari 2005. ECN ini menetapkan bahwa string dikodekan menggunakan  UTF-16LE. USB 2.0 tidak menentukan bahwa Unicode akan digunakan tetapi tidak menentukan encoding.
  • Battery Charging Specification 1.1: muncul pada Maret 2007 (diperbarui 15 April 2009). Menambahkan dukungan untuk dipersembahkan pengisi daya (power supply dengan konektor USB), host pengisi daya (USB host yang dapat bertindak sebagai charger) dan ketentuan yang memungkinkan perangkat untuk sementara menarik 100 mA saat ini setelah mereka telah terpasang. Jika sebuah perangkat USB yang terhubung ke pengisi daya berdedikasi, arus maksimal yang ditarik oleh perangkat mungkin setinggi 1.8A. (Perhatikan bahwa dokumen ini tidak didistribusikan dengan spesifikasi USB 2.0 hanya paket USB 3.0 dan USB On-The-Go.)


8.       USB 3.0 Muncul pada 18 September 2007
Pat Gelsinger menunjukkan USB 3.0 di Intel Developer Forum. USB 3.0 Promoter Group mengumumkan pada 17 November 2008, bahwa versi 3.0 dari spesifikasi itu telah selesai dan beralih ke USB Implementers Forum (USB-IF), badan pengelola spesifikasi USB. Langkah ini secara efektif membuka spec hardware pengembang untuk implementasi produk  di masa depan. Pertama USB 3.0 port yang ditampilkan pada motherboard Asus P6X58 namun forum ini dibatalkan sebelum produksi.
Fitur :

·         Fitur utama SuperSpeed bus, yang menyediakan modus transfer keempat di 4,8 Gbps. Baku throughput adalah 4 Gbps, dan spesifikasi menganggap masuk akal untuk mencapai 3,2 Gbps (0,4 GBps atau 400 MBps) atau lebih setelah protokol overhead

·         Ketika beroperasi di modus SuperSpeed, full-duplex signaling diferensial terjadi lebih dari 2 pasang terpisah dari non-SuperSpeed pasangan diferensial. Hal ini mengakibatkan kabel USB 3.0 untuk kabel yang mengandung 2 kekuatan dan ground, 2 kawat untuk non-SuperSpeed data, dan 4 untuk SuperSpeed kabel data, dan pelindung (tidak diperlukan dalam spesifikasi sebelumnya).

·         Untuk mengakomodasi tambahan SuperSpeed untuk modus pin, bentuk fisik faktor untuk colokan USB 3.0 dan wadah telah dimodifikasi dari yang digunakan dalam versi sebelumnya. Standar-A  kabel telah memperluas kepala tempat konektor SuperSpeed melampaui dan sedikit di atas konektor sebelumnya. Demikian pula, Standar-A wadah yang  lebih mendalam untuk menerima konektor baru ini. Pada ujung yang lain, SuperSpeed konektor Standar-B ditempatkan di atas faktor bentuk yang ada. Sebuah warisan standar A-to-B kabel akan bekerja seperti yang dirancang dan tidak akan pernah menghubungi salah satu konektor SuperSpeed, memastikan kompatibilitas. Namun, SuperSpeed USB kabel, dengan colokan diperpanjang, akan tidak mampu dalam wadah versi yang lama.

·         SuperSpeed membentuk pipa komunikasi antara host dan masing-masing perangkat, dalam berbagai protokol yang diarahkan. Sebaliknya, USB 2.0 lalu lintas paket broadcast ke semua perangkat.

·         USB 3.0 memperluas jenis transfer massal di SuperSpeed dengan Streaming. This extension host dan memungkinkan  perangkat untuk membuat dan mentransfer beberapa aliran data melalui satu sakuran massal.

·         Spec kekuatan bus telah ditingkatkan sehingga beban unit adalah 150 mA (minimum 50% di atas menggunakan USB 2.0). Sebuah perangkat unconfigured masih bisa menggambar hanya 1 unit beban, tetapi sebuah perangkat dikonfigurasi dapat menarik hingga 6 unit beban (900 mA, 80% meningkat sementara USB 2.0 di terdaftar maksimum 500 mA). Perangkat minimum tegangan operasi diturunkan dari 4,4 V sampai 4 V.

·         USB 3.0 tidak mendefinisikan pemasangan kabel panjang, kecuali bahwa dapat diperpanjang asalkan memenuhi semuapersyaratan yang ditetapkan dalam spesifikasi. Namun, perkiraan electronicdesign.com kabel akan dibatasi sampai 3 m pada SuperSpeed.

·         Teknologi ini mirip dengan saluran tunggal (1x) dari PCI Express 2.0 (5-Gbps). 8B/10B menggunakan pengkodean, register geser umpan balik linear (LFSR) berjuang untuk data dan penyebaran spektrum. Memaksa penerima menggunakan sinyal periodik dengan frekuensi rendah (LFPS), dinamis pemerataan, dan urutan pelatihan untuk memastikan sinyal cepat penguncian.

Sistem USB mempunyai desain yang asimetris, yang terdiri dari pengontrol host dan beberapa peralatan terhubung yang berbentuk pohon dengan menggunakan peralatan hub yang khusus.


commlyrs

Desain USB ditujukan untuk menghilangkan perlunya penambahan expansion card ke ISA komputer atau bus PCI, dan memperbaiki kemampuan plug-and-play (pasang-dan-mainkan) dengan memperbolehkan peralatan-peralatan ditukar atau ditambah ke sistem tanpa perlu mereboot komputer. Ketika USB dipasang, ia langsung dikenal system komputer dan memroses device driver yang diperlukan untuk menjalankannya.






300px-3-Tastenmaus_Microsoft
220px-Swedish_keyboard_20050614


USB dapat menghubungkan peralatan tambahan komputer seperti mouse, keyboard, pemindai gambar, kamera digital, printer, hard disk, dan komponen networking. USB kini telah menjadi standar bagi peralatan multimedia seperti pemindai gambar dan kamera digital.


USB [Universal Serial Bus] mendefinisikan lapisan Mekanikal, Listrik dan Protokol antarmuka. Kabel dan konektor sepenuhnya didefinisikan. USB terdiri dari 2 jenis perangkat keras, Hub dan Fungsi. Sampai dengan 127 perangkat dapat dihubungkan bersama-sama dalam Bus Topologi. Faktor pembatas terdiri 7 bit alamat. Segmen kawat fisik point-to-point antara Host, Hub, atau Fungsi. Sistem hanya dapat memiliki satu host, yang menghubungkan ke Hub seorang. Sebuah USB Hub dapat terhubung ke Hub lain atau ke Fungsi USB. Setiap lapisan transisi dari Hub ke Hub merupakan Tier lain. Hub USB memungkinkan koneksi ke bus USB, sementara Fungsi Usb adalah perangkat yang melakukan beberapa fungsi.

 

Protokol USB

 

Persinyalan USB

USB adalah host-centric bus di mana host/terminal induk memulai semua transaksi. Paket pertama/penanda (token) awal dihasilkan oleh host untuk menjelaskan apakah paket yang mengikutinya akan dibaca atau ditulis dan apa tujuan dari perangkat dan titik akhir. Paket berikutnya adalah data paket yang diikuti oleh handshaking packet yang melaporkan apakah data atau penanda sudah diterima dengan baik atau pun titik akhir gagal menerima data dengan baik.
Setiap proses transaksi pada USB terdiri atas:
  • Paket token/sinyal penanda (Header yang menjelaskan data yang mengikutinya)
  • Pilihan paket data (termasuk tingkat muatan) dan
  • Status paket (untuk acknowledge/pemberitahuan hasil transaksi dan untuk koreksi kesalahan)


Konektor USB (Tipe A dan B)
Nomor kaki (dilihat pada soket):
USB_konektoryUSB TypeAB Connector Pinout.svg
Penetapan kaki[1]
Kaki
Fungsi

1
VBUS (4.75–5.25 V)

2
D−

3
D+

4

Shell

500px-USB


Standard tipe A
Standard-A jenis konektor USB adalah persegi panjang pipih yang memasukkan ke dalam wadah "hilir-port" pada host USB, atau hub, dan membawa kedua daya dan data. Port ini sering terlihat pada kabel yang secara permanen terpasang ke perangkat, salah satu contoh menghubungkan keyboard atau mouse ke komputer melalui koneksi USB.
Koneksi USB pada akhirnya aus dan kendur koneksi setelah pluggin dan plugout berulang-ulang. Umur konektor A USB adalah sekitar 1.500 kali siklus connect /disconnect.

Standar tipe B
Sebuah plug Standar-B yang memiliki bentuk persegi dengan colokan eksterior sudut biasanya miring ke dalam "stopkontak hulu" pada perangkat yang menggunakan kabel portabel, misalnya printer. Sebuah plug Standar-B selain membawa data juga menghasilkan daya. Pada beberapa perangkat, wadah Standar-B tidak memiliki koneksi data, digunakan hanya untuk menerima daya dari perangkat hulu.

Paket data umum USB

Data di bus USB disalurkan dengan cara mendahulukan Least Significant Bit(LSB). LSB adalah bagian dari barisan data biner (basis dua) yang mempunyai nilai paling tidak berarti/paling kecil.
 Paket-paket USB terdiri dari data-data berikut ini:
  • Sync
Semua paket harus diawali dengan data sync. Sync adalah data 8 bit untuk low dan full speed atau data 32 bit untuk high speed yang digunakan untuk mensinkronkan clock dari penerima dengan pemancar. Dua bit terakhir mengindikasikan dimana data PID dimulai.

  • PID (Packet Identity/Identitas paket)
Adalah field untuk menandakan tipe dari paket yang sedang dikirim.









Tabel dibawah ini menunjukkan nilai-nilai PID:

Group
Nilai PID
Identitas Paket
Token
0001
OUT Token
Token
1001
IN Token
Token
0101
SOF Token
Token
1101
SETUP Token
Data
0011
DATA0
Data
1011
DATA1
Data
0111
DATA2
Data
1111
MDATA
Handshake
0010
ACK Handshake
Handshake
1010
NAK Handshake
Handshake
1110
STALL Handshake
Handshake
0110
NYET (No Response Yet)
Special
1100
PREamble
Special
1100
ERR
Special
1000
Split
Special
0100
Ping





Ada 4 bit PID data, supaya yakin diterima dengan benar, 4 bit di komplementasikan dan diulang, menjadikan 8 bit data PID. Hasil dari pengaturan tersebut adalah sebagai berikut.
PID0
PID1
PID2
PID3
nPID0
nPID1
nPID2
nPID3
  • ADDR (address)
Bagian alamat dari peralatan dimana paket digunakan. Dengan lebar 7 bit, 127 peralatan dapat disambungkan. Alamat 0 tidak sah, peralatan yang belum terdaftar harus merespon paket yang dikirim ke alamat 0.

  • ENDP (End point)
Titik akhir dari field yang terdiri dari 4 bit, menjadikan 16 kemungkinan titik akhir. Low speed devices, hanya dapat mempunyai 2 tambahan end point pada puncak dari pipe default. (maksimal 4 endpoints)

  • CRC
Cyclic Redundancy Check dijalankan pada data di dalam paket yang dikirim. Semua penanda (token) paket mempunyai sebuah 5 bit CRC ketika paket data mempunyai sebuah 16 bit CRC.

  • EOP (End of packet)
Akhir dari paket yang disinyalkan dengan satu angka akhir 0 (Single Ended Zero/SEO) untuk kira-kira 2 kali bit diikuti oleh sebuah J 1 kali.

Data yang dikirim dalam bus USB adalah salah satu dari 4 bentuk, yaitu control, interrupt, bulk, atau isochronous.
intrtrns
iso

Perancangan peralatan yang menggunakan USB

Untuk membuat suatu peralatan yang dapat berkomunikasi dengan protokol USB tidak perlu harus mengetahui secara rinci protokol USB. Bahkan kadang tidak perlu pengetahuan tentang USB protokol sama sekali. Pengetahuan tentang USB protokol hanya diperlukan untuk mengetahui spesifikasi yang dibutuhkan untuk alat kita. Pada kenyataannya untuk mengimplemetasikan USB protokol di FPGA. Field-Programmable Gate Array (FPGA) adalah komponen elektronika dan semikonduktor yang mempunyai komponen gerbang terprogram (programmable logic) dan sambungan terprogram ataupun perangkat bantu lain sangat tidak efisien dan banyak waktu terbuang untuk merancangnya. Menggunakan kontroler USB sangat lebih dianjurkan dalam membuat alat yang dapat berkomunikasi melalui protokol ini. Kontroler USB mempunyai banyak macam bentuk, dari microcontroller berbasis 8051 yang mempunyai input output USB secara langsung sampai pengubah protocol dari serial seperti I2C bus ke USB.
USB controller biasanya dijual dengan disertai berbagai fasilitas yang mempermudah pengembangan alat, diantaranya manual yang lengkap, driver untuk windows XP, contoh code aplikasi untuk mengakses USB, contoh code untuk USB controller, dan skema rangkaian elektronikanya.
220px-Altera_StratixIVGX_FPGA
Contoh Gambar FPGA

Dalam sisi pengembangan software aplikasi dalam personal computer, komunikasi antar hardware di dalam perangkat keras USB tidak terlalu diperhatikan karena Windows ataupun sistem operasi lain yang akan mengurusnya. Pengembang perangkat lunak hanya memberikan data yang akan dikirim ke alat USB di buffer penyimpan dan membaca data dari alat USB dari buffer pembaca. Untuk driver pun kadang-kadang Windows sudah menyediakannya, kecuali untuk peralatan yang mempunyai spesifikasi khusus kita harus membuatnya sendiri.

Fungsi USB

Suatu piranti USB dapat dikatakan sebagai sebuah  alat transceiver( pengirim sekaligus penerima ) Baik host maupun USB itu sendiri. Sebuah istilah baru di perkenalkan, yakni USB function yang maksudnya adalah peralatan USB yang memilki kemampuan khusus. Seperti printer, scanner, modem, dan lain-lainnya.
Data dikirim secara serial, maka piranti USB harus mampu menangani gelombang kontinyu. Gelombang ini di hubungkan langsung ke pin data USB dari sebuah sumber tegangan dengan impedansi output 39W. Sumber tegangan rangkaian terbuka untuk keperluan ini ada pada kemungkinan terburuk dari adanya overshoot dan undershoot.
Pada  koneksi USB dengan kecepatan 12 MHz digunakan kabel twisted-pair yang terlindung dengan impedansi 90W  kurang lebih 15% dan delay maksimumnya 26ns.Sedang impedansi pada drivernya harus antara 28W hingga 44W. Jika di ukur, arus yang masuk dan keluar piranti USB V1.1 tidak boleh melebihi 10,71 VOH mA. Tegangan logika yang di masukan ke D+ dan D- tidak boleh melebihi 0.3 VOH untuk logika rendah dan juga harus turun sebesar 0.7 VOH untuk logika tinggi.
Karena ada piranti USB yang berkomunikasi pada kecepatan rendah 1.5 MHz, maka kombinasi kabel dan piranti USB harus mengandung kapasitas tunggal dengan nilai 200pF hingga 450pF di pin D+ dan D-. Perambatan delay pada kabel kecepatan rendah harus kurang dari 18 ns. Data sinyal yang naik turun diukur dari 10% hingga 90% dari sinyal,dengan toleransi 10%. Waktu untuk ini dari 4ns hingga 20ns, tergantung kecepatan USB yang digunakan. 
Sudah saatnya anda membangun aplikasi menggunakan port USB.  Jika anda ingin membangun sistem elektronika berbasis port USB, dapat menggunakan chip FTDI atau modul FTDI, antara lain :
· FT2232C , IC USB UART/FIFO
clip_image021
Gambar Chip FT2232C
IC ini mempunyai fitur :
v Single chip USB <=> asynchronous serial data transfer
v Full handshaking & modem interface signals
v UART interface mendukung  7/8 data bits, 1/2 stop bits dan Odd/Even/Mark/Space/No Parity
v Data transfer rate 300 Baud => 3M Baud (TTL)
v Data transfer rate 300 Baud => 1M Baud (RS232)
v Data transfer rate 300 Baud => 3M Baud (RS422/RS485)
v 384 Byte Rx buffer/128 Byte Tx buffer for high data throughput
v Rx buffer timeout  dapat disesuaikan
v Dukungan built-in untuk  event characters dan kondisi  line break
v Mendukung USB suspend/resume through SLEEP# and RI# pins
v Mendukung daya tinggi USB bus powered devices melalui pin  PWREN#
v Integrated level converter dan UART dan sinyal control untuk  interfacing ke logika 5V dan  3.3V
v Kompatibel USB 1.1 dan USB 2.0
v EEPROM programmable on-board melalui USB
· FT245BM, IC USB FIFO  Kecepatan Tinggi
IC ini memiliki fitur yang mirip dengan IC TF2232C, untuk aplikasi Modem, PC, instrumentasi dan lain-lainnya berbasis USB.
clip_image023
Selain dapat membeli chip tersebut, kita dapat juga membeli modul-modul DIP menggunakan chip FTDI, antara lain   DLP-2232M, yaitu modul menggunakan FT2232C3rd generation Dual USB UART/FIFO

Gambar DLP-2232M
clip_image025
Versi lainnya seperti DLP-USB245M ialah modul ekonomis menggunakan chip FT245BM sebagai USB FIFO. Modul ini memiliki chip pendukung antara lain 93C46 EEPROM untuk kustomisasi OEM. Beberapa chip dan model lainnya dapat anda miliki dari produk FTDI.

usb_asp_cirLevel Tegangan/ Karakteristik Elektrik

Rentang tegangan kerja sinyal USB adalah 0.3 Volt sehingga 3.6 Volt pada beban 1.5 kW.
Logika tinggi di dapat jika tegangan sudah melebihi 2.8 Volt terhadap ground pada beban 1.5 kW. Pada piranti USB yang berkecepatan rendah dan penuh, diferensial 1 dikirim dengan menarik D+ hingga lebih besar dari 2.8 Volt dengan sebuah resistor 1.5 kW terhubung ke ground dan sekaligus menarik D- hingga dibawah  0.3 Volt dengan sebuah resistor 1.5 kW terhubung ke 3.6 Volt. Hal yang sama diferensial 0 adalah D- lebih besar dari 2.8 Volt dan D+ lebih rendah dari 0.3 Volt dengan resistor pull-up dan pull-down yang sama. Di bagian penerima diferensial 1 di definisikan sebagai D+ lebih besar  200 mV dari D-, dan diferensial 0 berarti D+ lebih kecil dari 200mV dibanding D-. pada USB berkecepatan tinggi 480 Mbit/s digunakan sumber arus tetap 17,78 mA untuk mengurangi noise.
Data dikirim secara serial, maka piranti USB harus mampu menangani gelombang kontinyu. Gelombang ini di hubungkan langsung ke pin data USB dari sebuah sumber tegangan dengan impedansi output 39W. Sumber tegangan rangkaian terbuka untuk keperluan ini ada pada kemungkinan terburuk dari adanya overshoot dan undershoot.
Pada  koneksi USB dengan kecepatan 12 MHz digunakan kabel twisted-pair yang terlindung dengan impedansi 90W  kurang lebih 15% dan delay maksimumnya 26ns.Sedang impedansi pada drivernya harus antara 28W hingga 44W. Jika di ukur, arus yang masuk dan keluar piranti USB V1.1 tidak boleh melebihi 10,71 VOH mA. Tegangan logika yang di masukan ke D+ dan D- tidak boleh melebihi 0.3 VOH untuk logika rendah dan juga harus turun sebesar 0.7 VOH untuk logika tinggi.

Daya

USB 1.x dan 2.0 menyediakan 5 V pasokan daya pada kawat tunggal dari perangkat USB yang terhubung. Spesifikasi menyediakan tidak lebih dari 5,25 V dan tidak kurang dari 4,75 V (5 V ± 5%) antara jalur bus kekuatan positif dan negatif. Untuk USB 2.0 tegangan yang diberikan oleh powered hub port-rendah adalah 4,4 V sampai 5,25 V.
Sebuah beban unit didefinisikan sebagai 100 mA dalam USB 2.0, dan dibangkitkan untuk 150 mA dalam USB 3.0. Maksimal 5 unit muatan (500 mA) dapat diambil dari sebuah port di USB 2.0, yang telah diangkat ke 6 (900 mA) di USB 3.0. Ada dua jenis perangkat: rendah daya dan daya tinggi. Low-power  menarik beban paling lama 1 unit, dengan tegangan operasi minimum 4.4 V di USB 2.0, dan 4 V di USB 3.0. Daya tinggi menarik jumlah maksimum beban unit yang didukung oleh standar. Semua default perangkat sebagai daya rendah tetapi perangkat lunak dapat meminta daya tinggi selama daya tersedia pada bus.
Beberapa perangkat seperti disk drive eksternal kecepatan tinggi mungkin membutuhkan lebih dari 500 mA saat ini dan oleh karena itu tidak dapat diaktifkan dari satu port USB 2.0. perangkat semacam ini biasanya datang dengan kabel berbentuk Y yang memiliki dua konektor USB yang akan dimasukkan ke dalam komputer. Dengan kabel perangkat yang dapat menarik daya dari dua port USB secara bersamaan.
Hub bus-powered diinisialisasi pada 1 beban unit dan transisi ke unit beban maksimal setelah konfigurasi hub diperoleh. Setiap perangkat yang terhubung ke hub akan menarik 1 unit beban terlepas dari menarik saat perangkat yang terhubung ke port lain dari hub (yaitu satu perangkat terhubung pada sebuah hub empat-port hanya akan menarik beban 1 unit terlepas dari kenyataan bahwa semua beban unit yang yang dipasok ke hub).
Sebuah hub yang dapat menghasilkan daya sendiri akan memasok beban maksimum yang unit yang didukung ke perangkat yang tersambung ke jaringan tersebut. Sebuah hub bertenaga baterai dapat menyediakan unit muatan maksimum ke port. Selain itu, V BUS akan menyediakan 1 unit beban hulu untuk komunikasi jika bagian dari Hub powered bawah.
Dalam baterai Pengisian Spesifikasi, mode powering baru ditambahkan ke spesifikasi USB. Sebuah host atau hub Pengisian Hilir Port dapat menyediakan arus maksimum sebesar 1,5 A ketika berkomunikasi di bandwidth rendah atau full-bandwidth, maksimum 900 mA saat berkomunikasi di full-bandwidth, dan kebanyakan sekarang sebagai konektor aman akan menangani jika tidak ada komunikasi yang berlangsung; USB 2.0 standar-A konektor dinilai pada 1500 mA secara default. Sebuah Dedicated Port Pengisian dapat menyediakan maksimum 1,8 A saat ini sebesar 5,25 V. Perangkat portabel dapat menarik sampai 1,8 A dari Pengisian Dedicated Port. Yang didedikasikan Mengisi Port celana pendek D + dan D-pin dengan hambatan paling banyak 200 Ω. Menonaktifkan transfer data pendek, namun memungkinkan perangkat untuk mendeteksi Dedicated Port Pengisian dan memungkinkan sangat sederhana, pengisi arus tinggi akan diproduksi. Arus meningkat (lebih cepat, 9 pengisian W) akan terjadi setelah kedua host / hub dan perangkat mendukung spesifikasi pengisian baru.

Powered USB

Powered USB menggunakan USB standar sinyal dengan penambahan kabel listrik tambahan. Ini menggunakan empat pin tambahan untuk memasok arus hingga 6 A baik pada 5 V, 12 V, atau 24 V dengan alat tambahan. Kabel dan kontak pada bagian USB telah ditingkatkan untuk mendukung arus yang lebih tinggi pada baris V 5, juga. Hal ini umumnya digunakan dalam sistem ritel dan memberikan kekuatan yang cukup untuk mengoperasikan stasioner barcode scanner, printer, bantalan pin, tanda tangan perangkat menangkap, dll ini modifikasi dari interface USB adalah proprietary dan dikembangkan oleh IBM , NCR , dan FCI / Berg . Hal ini pada dasarnya dua konektor ditumpuk sedemikian rupa sehingga konektor bawah menerima plug USB standar dan konektor atas mengambil konektor daya.

Contoh program dlm bahasa C/C++ untuk aplikasi USB
USB Controller Source Code
 main.c
 #include "xparameters.h"
#include "xbasic_types.h"
#include "xio.h"
 #define ADDR_CM 0x01800000  // XIO_Out
#define ADDR_FIFO_RD 0x01800004 // XIO_In 
#define ADDR_FIFO_WR 0x01800008 // X_IO_Out
#define ADDR_SIG_INTERRUPT 0x01800010
#define ADDR_READ_INTERRUPT 0x01800014
#define ADDR_EMPTY_FLAG 0x01800018
#define DESC_LENGTH 0x42
#define BASE_ADDR 0x01800000
 #define TEMP1 0x01800004
#define TEMP2 0x01800000
#define TEMP3 0x01800008

Xuint8 short_descriptor[6]= {
180, 
4, 
2,
16,
1,
0 
};
 Xuint8 descriptor[66] = {
// Descriptor for USB Remote Control - values written in integer format
// Philip Li 
//  Device Descriptor  (ALL in INTEGER FORMAT)
18,     //descriptor length
01,     //descriptor type
00,02,     //specification version BCD
00,     //device class
00,     //device subclass
00,     //protocol 
64,     //max packet size for EP0
64, 64,  //VID Vendor ID
64, 64,  //PID Product ID
64, 64,  //Device ID
00,     //Manucfacturer String Index
00,     //Product String Index
01,     //Number of configurations
// DeviceQualDscr
10,   //descriptor length
06,    //descriptor type  
00,02,  //BCD
00,   //device class
00,   //device subclass
  1800,   //device sub-sub-class
64,    //max packet size
01,    //number of configuration
00,   //reserved
//HighSpeedConfigDscr
9,  //Dscr length 
02, //Dscr type
46,00,  //total data length ( 46 bytes)
1,  //number of interfaces
1, //configuration number
0,  //configuration string 
160,  //attibutes self powered, no remote wakeup 10100000
50,  //power requirement (50mA)
//Interface Descriptor 
9,      //Dscr length 
04,      //Dscr type
00,      //#index of interface
00,      //alternate setting
02,      //num of endpoints
03,      //interface class (HID)
00,      //interface subclass
01,      //interface sub-subclass (ProtocolCcode,0-None,1-Keyboard,2-
Mouse)
00,      //interface dscr string index
//Class Descriptor (HID interface)
9, //Dscr length
33,  //Dscr type - HID 0x21
00,01,  //HID spec release number 
00,  //hardware target country
01,  //number of HID class dscr to follow
34,  //Descriptor type 0x22  ???
//total length of report descriptor
// Endpoint Descriptor EP2 
07,      // Dscr length 
05,      // Dscr type
02,      // Endpoint number and direction
03,      // Endpoint type  0000 0011 - OUT interrupt transfer (Read
p.113 USBComplete)
00,      // Max packet size LSB 512bytes 
02,      // Max packet size MSB (0x0200)
01,      // polling interval maximum latency p.114 USBComplete
// Endpoint Descriptor EP6
07,      // Dscr length 
05,      // Dscr type
134,      // Endpoint number and direction
03,      // Endpoint type  1000 0110 -IN interrupt transfer (Read
p.113 USBComplete)
00,      // Max packet size LSB 512bytes 
02,      // Max packet size MSB (0x0200)
01      // polling interval maximum latency p.114 USBComplete
};
 // USB address is from 0000 0001 1000 0000 to 0000 0001 1000 0111
int main()
{
  // variables for reading DSCR file 
      19  //variables
  int ready=0;
  int i;
  Xuint32 incoming_byte;
  Xuint32 incoming_byte1;
  Xuint32 incoming_byte2;
  Xuint32 incoming_byte3;
  Xuint32 incoming_byte4;
  Xuint32 incoming_byte5;
  Xuint32 incoming_byte6;
  Xuint8 incoming_byte8;
  Xuint8 incoming_byte7;
  Xuint8 outgoing_byte;

 
  // write register 0x1
  outgoing_byte = 0x5;
  write_register(0x01, outgoing_byte); 
  print("write 0xf2 to register0x07\r\n");
  outgoing_byte = 0xf2;   // 11110010
  write_register(0x06, outgoing_byte);
  print("finish writing\r\n");
  for(i=0; i<1000; i++){}
  incoming_byte7 = read_register(0x07);
  print("\r\n");
  print("read from the register and the byte is \r\n");
  putnum(incoming_byte6);
  print("write the descriptor now\r\n");
  write_descriptor2();
}

Xuint8 read_register ( Xuint8 regaddress ){
  int ready = 0;
  Xuint32 incoming;
  low_level_command_write(0xC0 + regaddress);
  while( ready == 0){
    XIo_In32(ADDR_CM);
    incoming =  XIo_In32(ADDR_SIG_INTERRUPT);
    print("\r\n");
    print("addr_sig_interrupt is \r\n");
    putnum(incoming);
    if (incoming != 0x0)ready =1;
  };   
  incoming =  XIo_In32(ADDR_READ_INTERRUPT);
  print("incoming\r\n");
  putnum(incoming);
  return incoming;
}
  20
 void write_register (Xuint8 regaddress, Xuint8 data){
  low_level_command_write(0x80 + regaddress); // command address byte
  low_level_command_write(0xF & (data>>4)); // command data byte one
  low_level_command_write(0xF & data); // command data byte two
}
void low_level_command_write(Xuint8 data){
  Xuint32 outgoing_byte;
  outgoing_byte = (0xFF & data);
  putnum(outgoing_byte);
  print("\r\n");
  //  XIo_In32(ADDR_CM);
  XIo_Out32(ADDR_CM, outgoing_byte);
 }
void write_descriptor2(){
  Xuint8 lengthOfRegister = 0x06; // Descriptor length = 6 
  int i;
  low_level_command_write(0x80 + 0x30); // command address byte 0x30 is
the Desc RAM
  low_level_command_write(lengthOfRegister);
  low_level_command_write(0);
  
                for ( i = 0; i <6 ; i ++){
                low_level_command_write(short_descriptor[i]);
                }
 } 
void write_descriptor(){
  Xuint8 lengthOfRegister = 0x42; // Descriptor length = 66 
  int i;
  low_level_command_write(0x80 + 0x30); // command address byte 0x30 is
the Desc RAM
  low_level_command_write(lengthOfRegister);
  low_level_command_write(0);
  
                 for ( i = 0; i <66 ; i ++){
                low_level_command_write(descriptor[i]);
                }
 }


pb_usb_ v2_1_0.mpd

 ###################################################################
##
## Microprocessor Peripheral Definition
##
###################################################################

BEGIN opb_usb, IPTYPE = PERIPHERAL, EDIF=TRUE

BUS_INTERFACE BUS = SOPB, BUS_STD = OPB, BUS_TYPE = SLAVE

## Generics for VHDL
PARAMETER c_baseaddr     = 0xFFFFFFFF, DT = std_logic_vector, MIN_SIZE
= 0xFF
PARAMETER c_highaddr     = 0x00000000, DT = std_logic_vector
PARAMETER c_opb_awidth   = 32,         DT = integer
PARAMETER c_opb_dwidth   = 32,         DT = integer

## Ports
PORT opb_abus    = OPB_ABus,    DIR = IN, VEC = [0:(c_opb_awidth-1)],    
BUS = SOPB
PORT opb_be      = OPB_BE,      DIR = IN, VEC = [0:((c_opb_dwidth/8)-
1)], BUS = SOPB
PORT opb_clk     = "",          DIR = IN,         BUS =
SOPB
PORT opb_dbus    = OPB_DBus,    DIR = IN, VEC = [0:(c_opb_dwidth-1)],    
BUS = SOPB
PORT opb_rnw     = OPB_RNW,     DIR = IN,                                 
BUS = SOPB
PORT opb_rst     = OPB_Rst,     DIR = IN,                                
BUS = SOPB
PORT opb_select  = OPB_select,  DIR = IN,                                
BUS = SOPB
PORT opb_seqaddr = OPB_seqAddr, DIR = IN,                                 
BUS = SOPB
PORT sln_dbus    = Sl_DBus,     DIR = OUT, VEC = [0:(c_opb_dwidth-1)],   
BUS = SOPB
PORT sln_errack  = Sl_errAck,   DIR = OUT,                               
BUS = SOPB
PORT sln_retry   = Sl_retry,    DIR = OUT,                               
BUS = SOPB
PORT sln_toutsup = Sl_toutSup,  DIR = OUT,                               
BUS = SOPB
PORT sln_xferack = Sl_xferAck,  DIR = OUT,                               
BUS = SOPB


# User Ports
PORT PB_D   = "", DIR = INOUT, VEC = [0:15], 3STATE=FALSE,
IOB_STATE=BUF
PORT PB_A  = "",   DIR = OUT, VEC = [0:2], 3STATE=FALSE,
IOB_STATE=BUF
PORT PB_OE  = "",   DIR = OUT
PORT PB_SLRD   = "",   DIR = OUT
PORT PB_SLWR   = "",   DIR = OUT
  31PORT PB_PKTEND  = "",   DIR = OUT
PORT USB_IFCLK  = "",   DIR = OUT
PORT USB_CS   = "",   DIR = OUT
PORT USB_FLAGA   = "",   DIR = IN 
PORT USB_FLAGB   = "",   DIR = IN 
PORT USB_FLAGC   = "",   DIR = IN 
PORT USB_READY   = "",   DIR = IN 
PORT USB_INT   = "",   DIR = IN 


PORT BUTTON_S1   = "",   DIR = IN
PORT BUTTON_S2  = "",   DIR = IN
PORT BUTTON_S4  = "",   DIR = IN

END






Timing Diagram

Tidak ada komentar:

Posting Komentar