Saya mendengar bahwa D + dan D- adalah sinyal diferensial, apakah penting jika saya menukar mereka ketika menghubungkan perangkat USB ke komputer?
Saya mendengar bahwa D + dan D- adalah sinyal diferensial, apakah penting jika saya menukar mereka ketika menghubungkan perangkat USB ke komputer?
Jawaban:
Saat memasuki dan keluar dari kondisi idle, polaritas penting dan menukar D + dan D-line akan menyebabkan masalah.
Data USB diberi kode NRZ sedemikian rupa sehingga "Satu" diwakili oleh tidak ada perubahan tingkat fisik, dan "Nol" diwakili oleh perubahan tingkat fisik (lihat gambar di bawah). Oleh karena itu, membalikkan sinyal (misalnya, dengan menukar D + dan D-) tidak menghasilkan perubahan fungsional selama transmisi data. Tetapi mungkin ada masalah sebelum dan sesudah pengiriman data yang dapat mematikan komunikasi dengan perangkat.
Tuan rumah mencakup resistor pull-down 15 kΩ pada setiap jalur data. Ketika tidak ada perangkat yang terhubung, ini menarik kedua jalur data rendah ke dalam apa yang disebut "nol ujung tunggal" (SE0 dalam dokumentasi USB), dan menunjukkan koneksi reset atau terputus. Perangkat USB menarik salah satu jalur data yang tinggi dengan resistor 1,5 kΩ. Ini mengalahkan salah satu resistor pull-down di host dan meninggalkan garis data dalam keadaan siaga yang disebut "J". Untuk USB 1.x, pilihan jalur data menunjukkan kecepatan sinyal apa yang mampu dilakukan perangkat; perangkat bandwidth penuh menarik D + tinggi, sedangkan perangkat bandwidth rendah menarik D− tinggi.
Sementara data dikodekan NRZI, urutan sinkronisasi dan EoP didefinisikan dalam hal kondisi tetap (J / K / SE0). Ketika D + dan D- diaktifkan, keadaan J diaktifkan dengan K dan SE0 masih SE0 (kedua garis rendah). Jadi urutan sinkronisasi dan EoP akan menjadi salah pada inversi. Di USB 1.x, jika D + dan D- bertukar, perangkat bandwidth penuh dikenali sebagai bandwidth rendah dan sebaliknya. Jadi perangkat bahkan tidak akan berkomunikasi dengan kecepatan yang sama dengan tuan rumah.
Akhir paket USB, disebut EOP (end-of-packet), ditunjukkan oleh pemancar yang mengemudikan 2 bit kali SE0 (D + dan D− keduanya di bawah maks) dan 1 bit waktu keadaan J. Setelah ini, pemancar berhenti menggerakkan garis D + / D− dan resistor penarik yang disebutkan di atas menahannya dalam status J (idle).
Dengan driver bertukar D + / D, host akan melihat urutan (SE0, SE0, K) dan bukannya yang benar (SE0, SE0, J). Tuan rumah kemudian mungkin gagal mengenali akhir paket, yang akan menyebabkan masalah.
Jika perangkat dan host mematuhi spesifikasi USB secara ketat, menukar D + dan D-pin akan menyebabkan kegagalan. Bisa dibayangkan bahwa perancang host meramalkan mode kegagalan seperti itu, dan dibangun dalam kompatibilitas untuk itu. Tetapi apakah kabel yang ditukar itu akan berfungsi atau tidak dalam praktiknya, tentu saja kabel itu tidak akan mematuhi spesifikasi.
Anggota lain, Andrew Kohlsmith, mengalami ini ketika pin dari hub USB secara tidak sengaja ditukar. Masalahnya memanifestasikan dirinya sebagai perangkat yang terhubung tidak muncul. Perangkat USB akan menunjukkan itu bertenaga tetapi tidak dikenali sama sekali oleh komputer di sisi hulu hub (yang ditransfer dengan benar ke host).
Sunting: terima kasih kepada mereka yang berkomentar. Saya menambahkan penekanan dan detail dari catatan bermanfaat Anda.
Saya telah melihat perangkat bernegosiasi sebagai kecepatan rendah hanya ketika d + dan d- ditukar. Ini dengan perangkat kecepatan penuh (12mbps) dan port berbasis chipset VIA.