Bus Beruntut Semesta
(USB) (bahasa Inggris: Universal
Serial Bus) adalah standar bus serial untuk perangkat penghubung, biasanya
kepada komputer namun juga digunakan di peralatan
lainnya seperti konsol permainan,
ponsel dan PDA.
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
sistem 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.
Daftar isi
|
Sejarah versi
Standard USB telah berevolusi kebeberapa versi:
Pre-rilis
- USB 0.7: dirilis November 1994.
- USB 0.8: dirilis December 1994.
- USB 0.9: dirilis April 1995.
- USB 0.99: dirilis August 1995.
- USB 1.0 Release Candidate: dirilis November 1995.
USB versi 1
USB versi 1 dirilis Januari
1996.
USB versi 2
USB versi 2.0 dirilis April 2000.
Perbedaan paling mencolok dengan versi sebelumnya, yaitu versi 1.0 adalah
kecepatan transfer yang jauh meningkat. Kecepatan transfer data USB dibagi
menjadi tiga, antara lain:
- Super speed data dengan frekuensi clock 4,800.00Mb/s
- High speed data dengan frekuensi clock 480.00Mb/s dan tolerasi pensinyalan data pada ± 500ppm.
- Full speed data dengan frekuensi clock 12.000Mb/s dan tolerasi pensinyalan data pada ±0.25% atau 2,500ppm.
- Low speed data dengan frekuensi clock 1.50Mb/s dan tolerasi pensinyalan data pada ±1.5% atau 15,000ppm.
USB versi 3
USB versi 3.0 dirilis November 2008. Beberapa perubahan telah
diimplementasikan di USB 3.0 seiring dengan peningkatan penggunaan perangkat
eksternal dan kebutuhan kecepatan lebih tinggi. Kecepatan transfer data USB 3.0
sekitar 3.2 Gbps (400 MB/s), dan secara teori dapat mencapat 4.8 Gbps.
Kecepatan ini 6 sampai 10x lebih cepat dari maksimal kecepatan USB 2.0. USB 3.0
mengenalkan teknologi transfer data dua arah (full duplex), sehingga dapat
membaca dan menulis data secara bersamaan (simultan). USB 2.0 dan sebelumnya
belum mendukung teknologi bi-directional ini. Tegangan listrik diturunkan dari
4.4V menjadi 4V, kemudian arus juga ditingkatkan (menjadi 150mA), sehingga
selain lebih hemat energi, sebuah port USB 3.0 dapat digunakan 4-6 perangkat.
Power managemen lebih baik dibanding USB 2.0, sehingga mendukung idle, sleep
dan suspend. Ujung USB 3.0 akan sama dengan USB 2.0 (standard), tetapi kabel
didalamnya akan lebih banyak, ada tambahan 4 jalur kabel dibanding USB 2.0
(total ada 9 jalur kabel).
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)
Nomor kaki (dilihat pada soket):
Penetapan kaki[1]
|
||
Kaki
|
Fungsi
|
|
|
1
|
VBUS (4.75–5.25 V)
|
|
2
|
D−
|
|
3
|
D+
|
|
4
|
|
|
Shell
|
Paket data umum USB
Data di bus USB disalurkan dengan cara mendahulukan Least Significant Bit(LSB).
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 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.
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.