Tôi nghe nói rằng D + và D- là tín hiệu vi sai, có vấn đề gì không nếu tôi trao đổi chúng khi kết nối thiết bị USB với máy tính?
Tôi nghe nói rằng D + và D- là tín hiệu vi sai, có vấn đề gì không nếu tôi trao đổi chúng khi kết nối thiết bị USB với máy tính?
Câu trả lời:
Khi vào và thoát khỏi trạng thái không hoạt động, cực tính rất quan trọng và việc hoán đổi các đường D + và D- sẽ gây ra vấn đề.
Dữ liệu USB được mã hóa NRZ sao cho "Một" được biểu thị bằng không thay đổi mức vật lý và "Không" được biểu thị bằng thay đổi về mức vật lý (xem hình bên dưới). Do đó, đảo ngược tín hiệu (ví dụ, bằng cách hoán đổi D + và D-) dẫn đến không có thay đổi chức năng trong quá trình truyền dữ liệu. Nhưng có thể có vấn đề trước và sau khi truyền dữ liệu có thể giết chết giao tiếp với thiết bị.
Máy chủ bao gồm các điện trở kéo xuống 15 kΩ trên mỗi dòng dữ liệu. Khi không có thiết bị nào được kết nối, điều này sẽ kéo cả hai dòng dữ liệu xuống trạng thái được gọi là "không kết thúc một lần" (SE0 trong tài liệu USB) và cho biết kết nối được đặt lại hoặc ngắt kết nối. Một thiết bị USB kéo một trong các dòng dữ liệu lên cao với điện trở 1,5 kΩ. Điều này áp đảo một trong các điện trở kéo xuống trong máy chủ và để các dòng dữ liệu ở trạng thái không hoạt động được gọi là "J". Đối với USB 1.x, việc chọn đường dữ liệu cho biết tốc độ tín hiệu nào mà thiết bị có khả năng; thiết bị băng thông đầy đủ kéo D + cao, trong khi thiết bị băng thông thấp kéo D cao.
Mặc dù dữ liệu được mã hóa NRZI, trình tự đồng bộ hóa và EoP được xác định theo các trạng thái cố định (J / K / SE0). Khi D + và D- được chuyển đổi, trạng thái J được chuyển đổi với K và SE0 vẫn là SE0 (cả hai dòng thấp). Vì vậy, chuỗi đồng bộ hóa và EoP sẽ trở nên không chính xác khi đảo ngược. Trong USB 1.x, nếu D + và D- được hoán đổi, một thiết bị băng thông đầy đủ sẽ được công nhận là băng thông thấp và ngược lại. Vì vậy, thiết bị thậm chí sẽ không giao tiếp ở cùng tốc độ với máy chủ.
Đầu cuối của gói USB, được gọi là EOP (cuối gói), được biểu thị bằng bộ phát điều khiển 2 lần SE0 (D + và D− cả dưới mức tối đa) và thời gian 1 bit của trạng thái J. Sau đó, bộ phát ngừng điều khiển các dòng D + / D− và các điện trở kéo lên đã nói ở trên giữ nó ở trạng thái J (nhàn rỗi).
Với trình điều khiển hoán đổi D + / D-, máy chủ sẽ thấy chuỗi (SE0, SE0, K) thay vì đúng (SE0, SE0, J). Sau đó, máy chủ có thể không nhận ra được phần cuối của gói, điều này sẽ gây ra sự cố.
Nếu thiết bị và máy chủ tuân thủ nghiêm ngặt các thông số kỹ thuật của USB, việc tráo đổi chân D + và D- sẽ dẫn đến lỗi. Có thể hình dung rằng người thiết kế máy chủ đã thấy trước một chế độ thất bại như vậy và được xây dựng để tương thích với nó. Nhưng liệu một dây cáp tráo đổi như vậy có hoạt động trong thực tế hay không, chắc chắn nó sẽ không tuân thủ các thông số kỹ thuật.
Một thành viên khác, Andrew Kohlsmith, đã trải nghiệm điều này khi các chân của bộ chia USB vô tình bị tráo đổi. Vấn đề thể hiện là các thiết bị được kết nối không hiển thị. Thiết bị USB sẽ cho thấy nó được cấp nguồn nhưng hoàn toàn không được máy tính nhận ra ở phía thượng nguồn của trung tâm (được nối chính xác với máy chủ).
Chỉnh sửa: cảm ơn những người đã bình luận. Tôi đã thêm nhấn mạnh và chi tiết từ ghi chú hữu ích của bạn.
Tôi đã thấy các thiết bị đàm phán là tốc độ thấp chỉ khi d + và d- được hoán đổi. Điều này là với một thiết bị tốc độ đầy đủ (12mbps) và cổng dựa trên chipset VIA.