USB
(Universal
Serial Bus)
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.
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 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
|
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
|
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.
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)
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.
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.