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
* 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 :
- Kemudahan cara koneksi. Konektor USB hanya perlu satu soket dalam PC anda sehinga anda tidak perlu menghafal bentuk konektor untuk masing-masing perangkat.
- 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.
![]() |
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.


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):
Penetapan kaki[1]
|
||
Kaki
|
Fungsi
|
|
|
1
|
VBUS (4.75–5.25 V)
|
|
2
|
D−
|
|
3
|
D+
|
|
4
|
|
|
Shell
|

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


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.

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

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