USB memiliki beberapa lapisan, yang dijelaskan dalam Spesifikasi USB 2.0 . Jika Anda terbiasa dengan model jaringan berlapis OSI, Anda dapat menganggapnya seperti ini:
- Lapisan sesi = Bab 10 Perangkat Keras dan Perangkat Lunak Host USB (driver perangkat)
- Transport layer = Bab 9 Kerangka Perangkat USB
- Lapisan jaringan = Bab 8 Lapisan Protokol (bitstream)
- Lapisan Data Link = Bab 7 Listrik (sirkuit)
- Lapisan fisik = Bab 6 Mekanis (kabel dan konektor)
Secara konseptual USB didasarkan pada aliran data, yang disebut Endpoints , yang dapat berupa IN (ke host) atau OUT (dari host). Setiap perangkat memiliki Endpoint 0, yang digunakan untuk kontrol dan status. Perangkat mungkin memiliki titik akhir tambahan untuk data aplikasi. Setiap titik akhir berperilaku seperti buffer FIFO.
Data ditransfer pada titik akhir baik sebagai Massal (seperti TCP / IP, dijamin bahwa setiap byte tiba dan dalam urutan yang benar), atau Isochronous (seperti UDP / IP, dijamin masih segar tetapi dapat menjatuhkan paket). Ada jenis transfer " Interrupt " yang menyesatkan , yang benar-benar hanya disurvei oleh tuan rumah.
USB 2.0 menggunakan pasangan diferensial untuk datalink. Saya tidak akan membahas lebih detail karena ini dicakup oleh USB 2.0 spec bab 7. Secara umum pada layout PCB kita memperlakukan ini sebagai pasangan diferensial yang cocok, panjang, dan dimasukkan ke dalam seri resistor yang diperlukan oleh USB PHY apa pun (Fisik). Antarmuka) sedang digunakan. Periferal USB menggunakan resistor bernilai tinggi pada salah satu D + atau D-line untuk memberi tahu host bahwa periferal ini berkecepatan tinggi atau berkecepatan rendah.
Segera setelah host USB menemukan bahwa ada sebuah perangkat, host meminta sekelompok deskriptor dari perangkat. Ini diurus di belakang layar oleh chip FTDI. Deskripsinya dijelaskan dalam Bab 9.5 . Ini termasuk Device Descriptor , Configuration Descriptor , Deskriptor Antarmuka , Deskriptor Endpoint , Deskriptor String , bahkan mungkin HID Deskriptoror Laporan .
The Perangkat Descriptor termasuk USB VID (Vendor Identification) dan PID nomor (Identifikasi Produk). Sistem operasi menggunakan pasangan angka ini, VID_PID, untuk menentukan driver perangkat mana yang akan digunakan untuk perangkat ini. Perhatikan bahwa nomor VID dikeluarkan dengan memiliki keanggotaan di forum implementor USB, jadi itu semacam masalah jika Anda seorang penemu perorangan.
Selain itu, ada driver kelas HID (Perangkat Antarmuka Manusia), yang menyediakan input agak umum untuk keyboard / mouse / dll, serta input / output generik. Satu keuntungan dari HID adalah bahwa ia tidak perlu menyediakan driver perangkat khusus, tetapi throughputnya agak terbatas dibandingkan dengan driver massal kustom. Ada seluruh dokumen spesifikasi lain tentang deskriptor HID; dan dokumen Tabel Penggunaan HID yang merinci semua nomor kode yang menjelaskan berbagai fitur yang tersedia pada perangkat antarmuka manusia yang diberikan.
Chip FTDI seperti lembar data FT220X menyediakan "mesin antarmuka serial" USB (jangan dikacaukan dengan serial SPI atau serial RS232). Ini menangani sebagian besar hal-hal tingkat rendah yang dijelaskan dalam bab 6, 7, dan 8.
FTDI menggunakan EEPROM (offchip pada FT2232H, on-chip pada FT220X) untuk memuat sedikit informasi yang masuk ke deskriptor. Anda dapat menyesuaikan nilai VID / PID, dan memberikan string uraian khusus.