Saya tahu jawaban Google dan jawaban wikipedia untuk pertanyaan di atas. Tapi saya punya pertanyaan yang lebih spesifik. Hub USB memiliki banyak port masuk dan dan hanya satu port keluar, saya dapat menggunakan say n-number perangkat bersama karena ini. Tapi, saya tidak mengerti bagaimana bisa satu port USB melakukan transfer data dengan n-number port USB?
bagaimana cara mengirim data yang berbeda ke semua port USB pada saat yang sama?
*
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
*.
Jawaban:
Ini semua berkaitan dengan arbitrase. Sistem apa pun yang memerlukan banyak perangkat untuk dihubungkan membutuhkan cara untuk menentukan siapa yang harus berbicara kapan. Ada skema berbeda seperti yang Anda harapkan tergantung pada aplikasi.
Contoh umum - dalam jaringan kami memiliki banyak node yang saling berbicara satu sama lain. Ini dilakukan oleh setiap node yang memiliki alamat (misalnya alamat IP), dan ketika sebuah node ingin berbicara dengan node lain, ia mengirimkan paket ke alamat itu. Anda kemudian memiliki perangkat seperti router yang membawa paket yang masuk pada beberapa port dan meneruskannya ke port yang benar. Arbitrase dilakukan menggunakan memori untuk menyimpan paket sampai port tujuan bebas.
Sekarang ke USB. Ini sebenarnya jauh lebih sederhana daripada jaringan karena tidak semua node dibuat sama. Anda memiliki dua macam, host, dan titik akhir. Hanya ada satu host, tetapi bisa banyak endpoint. Dalam hal ini arbitrase jauh lebih mudah karena hanya port host yang diizinkan untuk berbicara sesuka hati. Titik akhir hanya diperbolehkan untuk berbicara ketika diminta oleh tuan rumah , dan tuan rumah hanya pernah berbicara ke satu titik akhir pada suatu waktu.
Untuk paket endpoint host ->, hub USB hanya meneruskan permintaan dari host ke semua titik akhir. Karena semua titik akhir memiliki alamat, hanya alamat tujuan yang dialamatkan yang akan melakukan apa pun dengannya (mis. Merespons), semua yang lain akan mengabaikan paket tersebut.
Untuk paket endpoint-> host, host pertama-tama mengirim paket ke titik akhir spesifik berdasarkan alamat untuk mengatakan "Anda bisa bicara sekarang", dan kemudian titik akhir itu harus segera mengirim respons. Karena hanya satu titik akhir yang diizinkan untuk berbicara pada waktu tertentu, hub USB hanya akan merutekan paket dari port mana saja yang menanggapi permintaan dari host.
Dalam hal bagaimana host mengetahui perangkat apa yang terpasang, dan bagaimana titik akhir mendapatkan alamat mereka, ini dicapai melalui penghitungan.
Semua port host dan hub memiliki resistor pull-down (15kOhm) pada garis D + dan D-. Ini menempatkan jalur data port tersebut ke dalam kondisi yang diketahui saat tidak ada perangkat yang terpasang, suatu keadaan di mana port tidak akan mengirim data apa pun melalui jalur D + / D- sama sekali.
Ketika perangkat terpasang, itu membuat dirinya dikenal dengan menghubungkan baik D + (kecepatan penuh) atau D- (kecepatan rendah) data ke VCC menggunakan resistor 1,5kOhm. Ini memicu acara enumerasi. Port kemudian akan memulai proses mengkonfigurasi perangkat dan menetapkan alamat. Jika Anda menyambungkan dua perangkat secara bersamaan, mereka akan disebutkan satu per satu .
Jika tidak ada hub, tuan rumah hanya berbicara ke perangkat baru dan memasangnya. Jika ada hub dalam sistem, itu adalah hub yang melaporkan perangkat baru terpasang . Jika hub melaporkan perangkat baru terhubung, tuan rumah akan memerintahkan hub untuk mereset perangkat baru dan memulai komunikasi. Selama reset, titik akhir diberi alamat default 0 (*). Host kemudian dapat berbicara ke titik akhir menggunakan alamat default, dan mengkonfigurasinya dengan alamat non-nol unik yang akan memungkinkannya untuk tahu kapan sedang diajak bicara.
(*) Karena hanya satu perangkat yang disebutkan satu per satu, alamat 0 akan selalu unik untuk perangkat yang baru dipasang.
Anda mungkin kemudian bertanya, "bagaimana saya bisa membuat semua perangkat berbicara pada saat yang sama?" Katakanlah Anda memiliki mouse, keyboard, dan flash drive yang semuanya terhubung ke hub USB yang sama. Kita semua tahu bahwa Anda dapat menggunakan mouse dan keyboard Anda secara bersamaan sambil juga menyalin file ke / dari flash drive Anda, tetapi jika hanya satu perangkat yang dapat berbicara pada satu waktu, bagaimana mungkin?
Nah, itu semua bermuara pada fakta bahwa beberapa ratus milidetik yang diperlukan otak Anda untuk menyadari bahwa Anda telah menekan tombol dan berharap layar untuk memperbarui adalah kekekalan bagi komputer. Antarmuka USB 2.0 dapat berjalan hingga 480Mbps (USB 3.1 dapat berjalan hingga 10Gbps!), Yang berarti bahwa meskipun tuan rumah hanya pernah berbicara dengan satu titik akhir pada waktu tertentu, ia membuat siklus di antara mereka begitu cepat sehingga Anda dapat katakan itu melakukannya.
Perangkat host melacak alamat titik akhir mana yang digunakan dan akan mengirim paket ke masing-masing secara berurutan atau sesuai kebutuhan (yaitu ketika OS meminta akses ke perangkat tertentu). Jadi sementara itu tidak semua terjadi secara bersamaan, arbitrase begitu cepat sehingga komputer manusia tidak bisa membedakannya.
sumber
Jawaban lebih pendek: tuan rumah mengirimkan data yang ditujukan ke perangkat tertentu (yang sebelumnya disebut "enumerated"), satu transaksi pada suatu waktu, secara berurutan. Hub menyiarkan semua paket ke semua perangkat. Perangkat hanya merespons transaksi yang ditujukan kepadanya. Itu saja, berlaku untuk perangkat HS.
Untuk perangkat FS dan LS prosesnya sedikit lebih rumit. Ia menggunakan "penerjemah transaksi" yang dibangun di setiap hub untuk setiap port, yang menerjemahkan apa yang disebut "transaksi split" menjadi lalu lintas LS atau FS.
sumber