Bagaimana cara kerja Hub USB?

9

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?

*

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

*.

Aaditya Sahay
sumber
1
Sama seperti router jaringan Anda dapat menghubungkan satu port LAN (internet) ke beberapa perangkat. Setiap titik akhir (perangkat USB) diberi alamat, dan hub hanya merutekan permintaan dari host ke perangkat yang benar dengan melacak alamat apa yang ada di port apa. Ini jauh lebih sederhana untuk USB dalam arti bahwa hanya ada satu master (port host) yang memulai semua transaksi.
Tom Carpenter
@ TomCarpenter Lalu Bagaimana port USB mengirim data yang berbeda secara bersamaan?
Aaditya Sahay
1
Port host meminta titik akhir khusus untuk berbicara. Titik akhir hanya berbicara kembali ketika diminta oleh tuan rumah.
Tom Carpenter
@ TomCarpenter Tapi mereka semua digunakan secara bersamaan dan tidak satu per satu, tapi semuanya bersamaan.
Aaditya Sahay
3
Ingat bahwa bus USB dapat berjalan hingga 480Mbps pada USB 2.0. Tuan rumah hanya pernah berbicara ke satu titik akhir pada satu waktu, tetapi berbicara kepada mereka semua secara berurutan dan beralih di antara mereka begitu cepat sehingga Anda tidak tahu. Hal yang sama dilakukan oleh jaringan. "Hei, mouse pada port 1, beri tahu saya jika Anda telah pindah. Ok sekarang keyboard pada port 2 apakah Anda punya tombol yang perlu dilaporkan? Sekarang Anda ada di port 3, flash drive, simpan data ini untuk saya. perlu bicara dengan? tidak, oke, mouse pada port 1, katakan padaku jika Anda sudah pindah ... "
Tom Carpenter

Jawaban:

16

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.

Host USB: "Hei, mouse pada port 1, beri tahu saya jika Anda telah pindah. Ok sekarang keyboard pada port 2 apakah Anda punya tombol yang perlu dilaporkan? Sekarang Anda ada di port 3, flash drive, simpan data ini untuk saya. Adakah yang harus saya ajak bicara? Tidak, oke, tetikus pada port 1, beri tahu saya apakah Anda sudah pindah ... "

Manusia: "Oh, lihat, komputer memperhatikan saya baru saja menggerakkan mouse saya, menekan tombol pada keyboard saya, dan menyalin gambar ke flash drive, semuanya pada saat bersamaan!"

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.

Tom Carpenter
sumber
2
Untuk menambahkan: Perangkat USB (hanya titik akhir "interupsi", tepatnya) dapat meminta untuk disurvei pada interval tertentu hingga 1 ms. Selama Anda tidak memiliki ratusan perangkat input, Anda tidak akan pernah melihat penundaan.
Michael
Bagaimana tuan rumah tahu titik akhir mana yang terhubung? Juga, ini sepertinya tidak menjawab pertanyaan asli tentang hub. Bagaimana mereka berinteraksi dalam proses ini? Bagaimana interaksi dalam enumerasi?
Yona Appletree
1
Enumerasi @YonaAppletree. Host dan hub memindai semua port mereka untuk koneksi perangkat - mereka mendeteksi resistor pull-up 1,5kOhm pada D + (Kecepatan Penuh) atau D- (Kecepatan rendah). Saya akan menambahkan beberapa info tentang bagaimana titik akhir diberi alamat.
Tom Carpenter
@ YonaAppletree dalam hal hub selama operasi, jawabannya sudah membicarakannya. Untuk host to endpoint: "hub USB cukup kirimkan permintaan dari host ke semua endpoint". Untuk endpoint menjadi tuan rumah: "Karena hanya satu titik akhir yang diizinkan untuk berbicara pada waktu tertentu, hub USB hanya akan merutekan paket dari port mana saja yang merespons"
Tom Carpenter
1

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.

Ale..chenski
sumber
Bagaimana dengan USB 3?
jbarlow
Hub USB3 lebih cerdas untuk tautan Kecepatan-Super, dan menggunakan perutean eksplisit ke perangkat / titik akhir. Bagian USB2 tetap sama. Lihat Bagian 3.1 "Ringkasan Arsitektur" dari spesifikasi USB3.1 terbaru, usb.org/developers/docs/usb_31_052016.zip
Ale..chenski