อ่าน 8 นาที
การสื่อสารผ่าน USB
บทความนี้ให้ข้อมูลเกี่ยวกับแง่มุมการสื่อสารของ Universal Serial Bus ( USB ): การส่งสัญญาณ โปรโตคอล และ การ ทำธุรกรรม USB เป็นมาตรฐานอุตสาหกรรมที่ใช้กำหนดสายเคเบิล ตัวเชื่อมต่อ...
การสื่อสารผ่าน USB
บทความนี้ให้ข้อมูลเกี่ยวกับแง่มุมการสื่อสารของ Universal Serial Bus ( USB ): การส่งสัญญาณโปรโตคอลและการทำธุรกรรม USB เป็นมาตรฐานอุตสาหกรรมที่ใช้กำหนดสายเคเบิล ตัวเชื่อมต่อ และโปรโตคอลที่ใช้สำหรับการสื่อสารระหว่างอุปกรณ์อิเล็กทรอนิกส์พอร์ตและสายเคเบิล USB ใช้สำหรับเชื่อมต่อฮาร์ดแวร์เช่นเครื่องพิมพ์ สแกนเนอร์คีย์บอร์ดเมาส์ แฟลชไดรฟ์ ฮาร์ดไดรฟ์ภายนอก จอยสติ๊กกล้องจอภาพและอื่นๆ กับคอมพิวเตอร์ทุกประเภท USB ยังรองรับอัตราการส่งสัญญาณตั้งแต่ 1.5 Mbit/s (ความเร็วต่ำ) ถึงUSB 80Gbps ( USB4 Gen 4) ขึ้นอยู่กับเวอร์ชันของมาตรฐาน บทความนี้อธิบายว่าอุปกรณ์ USB ส่งและรับข้อมูลโดยใช้สัญญาณไฟฟ้าผ่านเลเยอร์ทางกายภาพอย่างไร ระบุตัวตนและเจรจาพารามิเตอร์ เช่น ความเร็วและพลังงานกับโฮสต์หรืออุปกรณ์อื่นๆ โดยใช้โปรโตคอลมาตรฐาน เช่น USB Device Framework และ USB Power Delivery อย่างไร และแลกเปลี่ยนข้อมูลโดยใช้แพ็กเก็ตประเภทและรูปแบบต่างๆ เช่น โทเค็น ข้อมูล การจับมือ และแพ็กเก็ตพิเศษอย่างไร
การส่งสัญญาณ (USB PHY)
อัตราการส่งสัญญาณ (อัตราการส่งข้อมูล)
อัตราการส่งสัญญาณสูงสุดใน USB 2.0 คือ 480 เมกะบิต/วินาที (60 เมกะไบต์/วินาที) ต่อคอนโทรลเลอร์ และจะถูกแบ่งใช้ระหว่างอุปกรณ์ที่เชื่อมต่อทั้งหมด ผู้ผลิตชิปเซ็ต คอมพิวเตอร์ส่วนบุคคล บางราย แก้ปัญหาคอขวดนี้โดยการจัดหาคอนโทรลเลอร์ USB 2.0 หลายตัวไว้ในชิปเซ็ตใต้ (southbridge )
ในทางปฏิบัติและรวมถึงค่าใช้จ่ายของโปรโตคอล USB อัตราการส่งข้อมูล 320 Mbit/s (38 MB/s) สามารถทำได้อย่างต่อเนื่องผ่านปลายทางความเร็วสูง[ 2 ]ปริมาณงานอาจได้รับผลกระทบจากคอขวดเพิ่มเติม เช่นฮาร์ดดิสก์ไดรฟ์ดังที่เห็นในการทดสอบตามปกติที่ดำเนินการโดยCNetซึ่งการดำเนินการเขียนไปยังฮาร์ดไดรฟ์ความเร็วสูงทั่วไปจะรักษาอัตราไว้ที่ 25–30 MB/s และการดำเนินการอ่านที่ 30–42 MB/s [ 3 ]ซึ่งคิดเป็น 70% ของแบนด์วิดท์บัสทั้งหมดที่มีอยู่ สำหรับ USB 3.0 ความเร็วในการเขียนโดยทั่วไปคือ 70–90 MB/s ในขณะที่ความเร็วในการอ่านคือ 90–110 MB/s [ 3 ]การทดสอบมาสก์ หรือที่เรียกว่าการทดสอบไดอะแกรมตาใช้เพื่อกำหนดคุณภาพของสัญญาณในโดเมนเวลาโดยกำหนดไว้ในเอกสารอ้างอิงเป็นส่วนหนึ่งของคำอธิบายการทดสอบทางไฟฟ้าสำหรับโหมดความเร็วสูง (HS) ที่ 480 Mbit/s
ตามที่ประธาน USB-IF กล่าวไว้ว่า "อย่างน้อย 10 ถึง 15 เปอร์เซ็นต์ของความเร็วสูงสุดที่ระบุไว้ 60 MB/s (480 Mbit/s) ของ USB ความเร็วสูงนั้นถูกใช้ไปกับโอเวอร์เฮด ซึ่งเป็นโปรโตคอลการสื่อสารระหว่างการ์ดและอุปกรณ์ต่อพ่วง โอเวอร์เฮดเป็นส่วนประกอบของมาตรฐานการเชื่อมต่อทั้งหมด" [ 1 ]ตารางที่แสดงขีดจำกัดการถ่ายโอนจะแสดงอยู่ในบทที่ 5 ของข้อกำหนด USB
สำหรับ อุปกรณ์ ที่ทำงานพร้อมกันเช่น สตรีมเสียง แบนด์วิดท์จะคงที่และสงวนไว้สำหรับอุปกรณ์นั้นๆ โดยเฉพาะ ดังนั้น แบนด์วิดท์ของบัสจึงมีผลต่อจำนวนช่องสัญญาณที่สามารถส่งได้ในแต่ละครั้งเท่านั้น ไม่ได้มีผลต่อความเร็วหรือความหน่วงของการส่งข้อมูล
- มาตรฐาน USB 1.0 กำหนดอัตราความเร็วต่ำ (LS) ที่ 1.5 เมกะบิตต่อวินาที ซึ่งคล้ายกับการทำงานแบบเต็มแบนด์วิดท์มาก ยกเว้นว่าการส่งข้อมูลแต่ละบิตใช้เวลานานขึ้นถึง 8 เท่า โดยมีจุดประสงค์หลักเพื่อประหยัดต้นทุนใน อุปกรณ์อินเทอร์เฟซสำหรับผู้ใช้ (HID) ที่ใช้แบนด์วิดท์ต่ำ เช่น คีย์บอร์ด เมาส์ และจอยสติ๊ก
- ความเร็วเต็มพิกัด (FS)ที่ 12 เมกะบิตต่อวินาทีคืออัตราการส่งสัญญาณพื้นฐานของ USB ที่กำหนดโดย USB 1.0 ฮับ USB ทุกตัวสามารถทำงานที่ความเร็วระดับนี้ได้
- อัตรา ความเร็วสูง (HS) 480 เมกะบิตต่อวินาที (Mbit/s) เปิดตัวครั้งแรกในปี 2544 โดย USB 2.0 อุปกรณ์ความเร็วสูงต้องสามารถลดความเร็วกลับไปเป็นความเร็วปกติได้ด้วย ทำให้สามารถใช้งานร่วม กับอุปกรณ์ USB 1.1 ได้ ขั้วต่อของ USB 2.0 และ USB 1.xนั้นเหมือนกัน
- อัตรา ความเร็ว SuperSpeed (SS) 5.0 Gbit/s ข้อกำหนด USB 3.0 ที่เขียนขึ้นได้รับการเผยแพร่โดยIntelและพันธมิตรในเดือนสิงหาคม 2551 ชิปควบคุม USB 3.0 ตัวแรกได้รับการทดสอบโดยNECในเดือนพฤษภาคม 2552 [ 4 ]และผลิตภัณฑ์แรกที่ใช้ข้อกำหนด USB 3.0 มาถึงในเดือนมกราคม 2553 [ 5 ]ตัวเชื่อมต่อ USB 3.0 โดยทั่วไปสามารถใช้งานร่วมกับรุ่นก่อนหน้าได้ แต่มีการเดินสายใหม่และการทำงานแบบฟูลดูเพล็กซ์
- มาตรฐาน USB 3.1 กำหนดอัตราความเร็วSuperSpeed+ (SS+) ที่ 10 Gbit/s และมาตรฐาน USB 3.2 กำหนดอัตราความเร็ว 20 Gbit/s โดยใช้สองเลน
กรอบ
ตัวควบคุมหลักจะแบ่งเวลาของบัสออกเป็นเฟรมขนาด 1 มิลลิวินาที เมื่อใช้ความเร็วต่ำ (1.5 เมกะบิต/วินาที) และความเร็วเต็มที่ (12 เมกะบิต/วินาที) หรือไมโครเฟรมขนาด 125 ไมโครวินาที เมื่อใช้ความเร็วสูง (480 เมกะบิต/วินาที) ซึ่งในระหว่างนั้นอาจมีการทำธุรกรรมหลายรายการพร้อมกัน
ข้อกำหนดทางไฟฟ้า
สัญญาณ USB ถูกส่งผ่านโดยใช้การส่งสัญญาณแบบดิฟเฟอเรนเชียลบนสายเคเบิลข้อมูลแบบบิดเกลียว ที่มี อิมพีแดนซ์ลักษณะเฉพาะ90 Ω ± 15% [ 6 ]
- โหมด ความเร็วต่ำ (LS)และ โหมด ความเร็วเต็ม (FS)ใช้คู่ข้อมูลเดียวที่ติดป้ายกำกับ D+ และ D− ในแบบครึ่งดู เพล็ก ซ์ ระดับสัญญาณที่ส่งคือ0.0–0.3 Vสำหรับระดับลอจิกต่ำ และ2.8–3.6 Vสำหรับระดับลอจิกสูง สายสัญญาณไม่ได้ต่อกับตัวต้านทานปลายสาย
- โหมด ความเร็วสูง (HS)ใช้สายคู่เดียวกัน แต่มีข้อกำหนดทางไฟฟ้าที่แตกต่างกัน แรงดันสัญญาณต่ำกว่า โดยอยู่ที่−10 ถึง 10 mVสำหรับระดับต่ำ และ360 ถึง 440 mVสำหรับระดับสูงเชิงตรรกะ และมีการต่อตัวต้านทาน 45 Ω ลงกราวด์ หรือ 90 Ω แบบดิฟเฟอเรนเชียล เพื่อให้ตรงกับอิมพีแดนซ์ของสายเคเบิลข้อมูล
- SuperSpeed (SS)เพิ่มสายคู่บิดเกลียวหุ้มฉนวนอีกสองคู่ (และขั้วต่อแบบขยายใหม่ที่ส่วนใหญ่เข้ากันได้กับอุปกรณ์อื่น) สายเหล่านี้ใช้สำหรับการทำงานแบบฟูลดูเพล็กซ์ของ SuperSpeed โดยเฉพาะ ส่วนสายฮาล์ฟดูเพล็กซ์ยังคงใช้สำหรับการกำหนดค่า ระดับลอจิกไม่ได้กำหนดในแง่ของระดับแรงดันไฟฟ้า แต่กำหนดในแง่ของการเปลี่ยนแปลงแรงดันไฟฟ้า แรงดันไฟฟ้าจะแปรผันระหว่าง ±500 mV (±20%) ในระหว่างการเปลี่ยนแปลงในโหมดปกติ และระหว่าง ±200 - 600 mV (ขึ้นอยู่กับตัวส่งสัญญาณ) ในโหมดพลังงานต่ำ
- SuperSpeed+ (SS+)ใช้ความเร็วในการส่งสัญญาณที่เพิ่มขึ้น (โหมด Gen 2×1) และ/หรือช่องสัญญาณเพิ่มเติมในขั้วต่อ Type-C (โหมด Gen 1×2 และ Gen 2×2)
การเชื่อมต่อ USB จะเป็นการเชื่อมต่อระหว่างโฮสต์หรือฮับที่ ปลายด้านขั้วต่อ A กับพอร์ต อัปสตรีมของอุปกรณ์หรือฮับที่ปลายอีกด้านหนึ่ง เสมอ
สถานะการส่งสัญญาณ
วงจรโฮสต์มีตัวต้านทานแบบดึงลง (pull-down resistor ) ขนาด 15 kΩ ต่อ อยู่กับสายข้อมูลแต่ละเส้น เมื่อไม่มีอุปกรณ์เชื่อมต่อ ตัวต้านทานนี้จะดึงสายข้อมูลทั้งสองเส้นลงต่ำไปยังสถานะที่เรียกว่าsingle-ended zero state (SE0 ในเอกสาร USB) ซึ่งบ่งชี้ถึงการรีเซ็ตหรือการตัดการเชื่อมต่อ
สถานะการเปลี่ยนผ่านของเส้น
คำศัพท์ต่อไปนี้ใช้เพื่อประกอบการอธิบายทางเทคนิคเกี่ยวกับการส่งสัญญาณ USB PHY
| สัญญาณ | สถานะการเปลี่ยนผ่านของเส้น | คำอธิบาย | ความเร็วต่ำ(D− ดึงขึ้น) | ความเร็วเต็มที่(ดึงข้อแบบ D+) | ||
|---|---|---|---|---|---|---|
| ดี+ | ดี− | ดี+ | ดี− | |||
| เจ | เหมือนกับสถานะเส้นว่าง | สัญญาณนี้ปรากฏขึ้นระหว่างการเปลี่ยนผ่านของสายส่ง หรืออีกนัยหนึ่งคือ กำลังรอรับแพ็กเก็ตใหม่ | ต่ำ | สูง | สูง | ต่ำ |
| เค | ผกผันของสถานะ J | ปรากฏการณ์นี้เกิดขึ้นระหว่างการเปลี่ยนผ่านของสายส่งไฟฟ้า | สูง | ต่ำ | ต่ำ | สูง |
| ซีอีโอ | ศูนย์ปลายเดียว | ทั้ง D+ และ D− มีค่าต่ำ ซึ่งอาจบ่งชี้ถึงสัญญาณสิ้นสุดแพ็กเก็ตหรืออุปกรณ์ USB หลุดการเชื่อมต่อ | ต่ำ | ต่ำ | ต่ำ | ต่ำ |
| SE1 | แบบปลายเดียว | นี่เป็นสถานการณ์ที่ผิดกฎหมายและไม่ควรเกิดขึ้น ถือเป็นความผิดพลาด | สูง | สูง | สูง | สูง |
- สถานะสายว่าง คือ เมื่ออุปกรณ์เชื่อมต่อกับโฮสต์โดยใช้ตัวต้านทานดึงขึ้น (pull-up) ที่ขั้ว D+ (สำหรับ USB 1.x ความเร็วเต็ม) หรือ D− (สำหรับ USB 1.x ความเร็วต่ำ) โดยที่เอาต์พุตตัวส่งสัญญาณทั้งบนโฮสต์และอุปกรณ์ถูกตั้งค่าเป็นความต้านทานสูง (hi-Z) (เอาต์พุตตัดการเชื่อมต่อ)
- อุปกรณ์ USB ดึงสายข้อมูลเส้นหนึ่งขึ้นสูงด้วยตัวต้านทาน 1.5 kΩ ซึ่งจะเอาชนะตัวต้านทานดึงลง 15 kΩ ตัวหนึ่งในโฮสต์ และทำให้สายข้อมูลอยู่ในสถานะว่างที่เรียกว่าJ
- สำหรับ USB 1.x การเลือกสายส่งข้อมูลจะบ่งบอกถึงอัตราการส่งสัญญาณที่อุปกรณ์นั้นสามารถรองรับได้:
- อุปกรณ์ที่มีแบนด์วิดท์เต็มประสิทธิภาพจะดึงค่า D+ ให้สูงขึ้น
- อุปกรณ์ที่มีแบนด์วิดท์ต่ำจะดึงค่า D− ให้สูงขึ้น
- สถานะKมีขั้วตรงข้ามกับสถานะJ
สถานะสายสัญญาณ (ครอบคลุม USB 1.x และ 2.x)
| สถานะ/สัญญาณสาย | คำอธิบาย | ความเร็วต่ำ | ความเร็วเต็มที่ | ความเร็วสูง |
|---|---|---|---|---|
| แยกออก | ไม่พบอุปกรณ์ใดๆ ทั้งสองสายถูกดึงลงด้วยตัวต้านทานแบบดึงลงขนาด 15 kΩ ที่ฝั่งโฮสต์ | SE0 ≥ 2 μs | ||
| เชื่อมต่อ | อุปกรณ์ USB จะดึงสัญญาณ D+ หรือ D− เพื่อปลุกโฮสต์จากสถานะตัดการเชื่อมต่อ ซึ่งจะเริ่มกระบวนการค้นหาอุปกรณ์ USB และกำหนดสถานะว่าง (idle state) | ดึงขึ้น D− | ดึงขึ้น D+ | เมื่อถึงความเร็วเต็มที่แล้วจะมีเสียงเตือนเมื่อรีเซ็ต |
| ว่าง / เจ | ตัวส่งสัญญาณโฮสต์และอุปกรณ์ที่ Hi-Z การตรวจจับสถานะสายในกรณีที่สายหลุด | ในสถานะแยกหรือเชื่อมต่อ | ||
| ซิงค์ | จุดเริ่มต้นของรูปแบบการเปลี่ยนสายแพ็กเก็ต | เคเจเคเจเคเจเคเค | 15 × KJ จากนั้น KK รวมเป็น 32 สัญลักษณ์ | |
| อีโอพี | รูปแบบการเปลี่ยนผ่านของสายแพ็กเก็ตตอนท้าย | SE0, SE0, J | ||
| รีเซ็ต | รีเซ็ตอุปกรณ์ USB ให้กลับสู่สถานะเริ่มต้นที่ทราบแล้ว | SE0 ≥ 2.5 มิลลิวินาที | ||
| ระงับ | ปิดการทำงานของอุปกรณ์ เพื่อให้ใช้กระแสไฟจาก V BUS เพียง 2.5 mA เท่านั้น จะ ออกจากสถานะนี้ได้ก็ต่อเมื่อได้รับสัญญาณ resume หรือ reset เท่านั้น เพื่อหลีกเลี่ยงสถานะนี้ จะต้องส่งแพ็กเก็ต SOF (ความเร็วสูง) หรือสัญญาณ keep alive (ความเร็วต่ำ) | J ≥ 3 มิลลิวินาที | ||
| ประวัติย่อ (โฮสต์) | โฮสต์ต้องการปลุกอุปกรณ์ให้ทำงาน | ถ้า K ≥ 20 มิลลิวินาที ให้ใช้รูปแบบ EOP | ||
| ประวัติย่อ (อุปกรณ์) | อุปกรณ์ต้องการปลุกการทำงาน (ต้องอยู่ในโหมดไม่ได้ใช้งานอย่างน้อย 5 มิลลิวินาที) | อุปกรณ์ขับเคลื่อน K ≥ 1 มิลลิวินาทีจากนั้นโฮสต์จะส่งสัญญาณกลับมาทำงานต่อ | ||
| จงมีชีวิตอยู่ต่อไป | โฮสต์ต้องการสั่งให้อุปกรณ์ที่มีความเร็วต่ำทำงานต่อไป | รูปแบบ EOP เกิดขึ้นหนึ่งครั้งทุกมิลลิวินาที | ไม่มีข้อมูล | |
การแพร่เชื้อ
การส่งข้อมูลผ่าน USB ทำได้โดยการสลับสถานะของสายข้อมูลระหว่างสถานะ J และสถานะ K ซึ่งตรงข้ามกัน USB เข้ารหัสข้อมูลโดยใช้การเข้ารหัสสายสัญญาณแบบ NRZI :
- ข้อมูลบิต 0 จะถูกส่งโดยการสลับสายข้อมูลจาก J เป็น K หรือจาก K เป็น J
- การส่งข้อมูล 1 บิต ทำได้โดยปล่อยให้สายส่งข้อมูลเป็นไปตามเดิม
เพื่อให้แน่ใจว่ามีการเปลี่ยนแปลงสัญญาณเพียงพอสำหรับการกู้คืนสัญญาณนาฬิกาในบิตสตรีม จึงมีการใช้เทคนิค การเพิ่มบิตเข้าไปในบิตสตรีมข้อมูล: โดยการแทรกบิต 0 พิเศษเข้าไปในบิตสตรีมข้อมูลหลังจากที่พบ 1 บิตติดต่อกันหกครั้ง (เพื่อให้แน่ใจว่ามีบิต 0 ที่จะทำให้เกิดการเปลี่ยนแปลงสถานะการส่งข้อมูล) การได้รับ 1 บิตติดต่อกันเจ็ดครั้งถือเป็นข้อผิดพลาดเสมอ สำหรับ USB 3.0 จะมีการใช้การเข้ารหัสการส่งข้อมูลเพิ่มเติมเพื่อรองรับอัตราการส่งสัญญาณที่สูงขึ้นที่จำเป็น
ตัวอย่างการส่งข้อมูลบนอุปกรณ์ความเร็วเต็ม

- รูปแบบการซิงโครไนซ์
- แพ็กเก็ต USB เริ่มต้นด้วยลำดับการซิงโครไนซ์ 8 บิต คือ 00000001₂ กล่าวคือ หลังจากสถานะว่างเริ่มต้น J แล้ว สายข้อมูลจะสลับเป็น KJKJKJKK บิตสุดท้าย 1 บิต (สถานะ K ที่ซ้ำกัน) จะทำเครื่องหมายจุดสิ้นสุดของรูปแบบการซิงโครไนซ์และจุดเริ่มต้นของเฟรม USB สำหรับ USB ที่มีแบนด์วิดท์สูง แพ็กเก็ตจะเริ่มต้นด้วยลำดับการซิงโครไนซ์ 32 บิต
- สิ้นสุดแพ็กเก็ต (EOP)
- EOP จะแสดงโดยตัวส่งสัญญาณที่ขับสัญญาณ SE0 เป็นเวลา 2 บิต (D+ และ D− ต่ำกว่าค่าสูงสุดทั้งคู่) และสถานะ J เป็นเวลา 1 บิต หลังจากนั้น ตัวส่งสัญญาณจะหยุดขับสัญญาณ D+/D− และตัวต้านทานแบบดึงขึ้น (pull-up resistors) ที่กล่าวถึงข้างต้นจะคงสถานะ J (ว่าง) ไว้ บางครั้ง ความคลาดเคลื่อนเนื่องจากฮับอาจเพิ่มเวลาได้มากถึง 1 บิตก่อนถึง SE0 ของจุดสิ้นสุดของแพ็กเก็ต บิตพิเศษนี้อาจทำให้เกิดการละเมิดบิต (bit stuff violation)หากบิตหกบิตก่อนหน้านั้นใน CRC เป็น 1 บิตนี้ควรถูกละเลยโดยตัวรับ
- รีเซ็ตบัส
- บัส USB จะถูกรีเซ็ตโดยใช้สัญญาณ SE0 ที่มีระยะเวลานาน (10 ถึง 20 มิลลิวินาที)
การเจรจาความเร็วสูง
ระหว่างการรีเซ็ต จะใช้โปรโตคอลพิเศษที่เรียกว่า "การ ส่งสัญญาณแบบชิป ปิ้ง" (chirping ) เพื่อเจรจาโหมดความเร็วสูงกับโฮสต์หรือฮับ อุปกรณ์ที่รองรับความเร็วสูงจะเชื่อมต่อในโหมดความเร็วปกติก่อน (D+ ถูกดึงขึ้นสูง) แต่เมื่อได้รับสัญญาณ USB RESET (ทั้ง D+ และ D− ถูกดึงลงต่ำโดยโฮสต์เป็นเวลา 10 ถึง 20 มิลลิวินาที) มันจะดึงสาย D− ขึ้นสูง ซึ่งเรียกว่าสัญญาณชิปปิ้ง K นี่เป็นการบ่งบอกให้โฮสต์ทราบว่าอุปกรณ์นั้นใช้แบนด์วิดท์สูง หากโฮสต์/ฮับรองรับความเร็วสูงได้เช่นกัน มันจะส่งสัญญาณชิปปิ้ง (สลับสถานะ J และ K บนสาย D− และ D+) เพื่อแจ้งให้อุปกรณ์ทราบว่าฮับทำงานที่แบนด์วิดท์สูง อุปกรณ์ต้องได้รับสัญญาณชิปปิ้ง KJ อย่างน้อยสามชุดก่อนที่จะเปลี่ยนไปใช้การต่อสายความเร็วสูงและเริ่มส่งสัญญาณความเร็วสูง เนื่องจาก SuperSpeed และรุ่นที่สูงกว่านั้นใช้สายไฟที่แยกต่างหากและเพิ่มเติมจากที่ใช้ในโหมดก่อนหน้า การเจรจาแบนด์วิดท์ดังกล่าวจึงไม่จำเป็น
ค่าความคลาดเคลื่อนของความเร็วสัญญาณนาฬิกาคือ 480.00±0.24 เมกะบิต/วินาที, 12.00±0.03 เมกะบิต/วินาที และ 1.50±0.0225 เมกะบิต/วินาที
ยูเอสบี 3.0
USB 3 ใช้สายทองแดงชุบดีบุกแบบตีเกลียว AWG-28 [ 7 ]พร้อมอิมพีแดนซ์ 90 ± 7 Ωสำหรับคู่ดิฟเฟอเรนเชียลความเร็วสูง การส่งสัญญาณไฟฟ้าใช้รีจิสเตอร์เลื่อนป้อนกลับเชิงเส้นและการเข้ารหัส 8b/10bพร้อม การกำหนด จังหวะสเปกตรัมแบบกระจายส่งที่แรงดันไฟฟ้าปกติ 1 โวลต์ พร้อมเกณฑ์ตัวรับ 100 mV ตัวรับใช้การฝึกปรับสมดุล ส่วนหัวของแพ็กเก็ตได้รับการป้องกันด้วย CRC-16 ในขณะที่เพย์โหลดข้อมูลได้รับการป้องกันด้วย CRC-32 สามารถใช้พลังงานได้สูงสุด 3.6 W โหลดหนึ่งหน่วยในโหมดความเร็วสูงเท่ากับ 150 mA [ 8 ]
ชั้นโปรโตคอล
ในการสื่อสารผ่าน USB ข้อมูลจะถูกส่งในรูปแบบแพ็กเก็ตในขั้นต้น แพ็กเก็ตทั้งหมดจะถูกส่งจากโฮสต์ผ่านฮับหลัก และอาจมีฮับอื่นๆ เพิ่มเติม ไปยังอุปกรณ์ต่างๆ แพ็กเก็ตบางส่วนจะสั่งให้อุปกรณ์ส่งแพ็กเก็ตตอบกลับมา
หลังจากฟิลด์ซิงค์แล้ว แพ็กเก็ตทั้งหมดจะประกอบด้วยไบต์ 8 บิต โดยส่งแบบบิตที่มีค่าน้อยที่สุดก่อนไบต์แรกคือไบต์ตัวระบุแพ็กเก็ต (PID) ไบต์ PID นั้นจริงๆ แล้วมี 4 บิต โดยไบต์นี้ประกอบด้วย PID 4 บิต ตามด้วยบิตคอมพลีเมนต์ การซ้ำซ้อนนี้ช่วยในการตรวจจับข้อผิดพลาด (ไบต์ PID มีบิต 1 ติดต่อกันได้มากที่สุดสี่บิต ดังนั้นจึงไม่จำเป็นต้องเติมบิตแม้ว่าจะรวมกับบิต 1 สุดท้ายในฟิลด์ซิงค์ก็ตาม อย่างไรก็ตาม บิต 1 ที่อยู่ท้ายสุดใน PID อาจต้องเติมบิตภายในไม่กี่บิตแรกของเพย์โหลด)
| พิมพ์ | ค่า PID ( msb -first) | ไบต์ที่ส่ง( lsb -first) | ชื่อ | คำอธิบาย |
|---|---|---|---|---|
| ที่สงวนไว้ | 0000 | 0000 1111 | ||
| โทเค็น | 1000 | 0001 1110 | แยก | การแยกธุรกรรมความเร็วสูง (USB 2.0) |
| 0100 | 0010 1101 | ปิง | ตรวจสอบว่าอุปกรณ์ปลายทางสามารถรับข้อมูลได้หรือไม่ (USB 2.0) | |
| พิเศษ | 1100 | 0011 1100 | พรี | คำนำหน้า USB แบนด์วิดท์ต่ำ |
| การจับมือ | ข้อผิดพลาด | ข้อผิดพลาดในการแบ่งธุรกรรม (USB 2.0) | ||
| 0010 | 0100 1011 | แอก | แพ็กเก็ตข้อมูลได้รับการยอมรับแล้ว | |
| 1010 | 0101 1010 | นาค | รับแพ็กเก็ตข้อมูลไม่ได้ โปรดส่งใหม่อีกครั้ง | |
| 0110 | 0110 1001 | ไนเอท | ข้อมูลยังไม่พร้อมใช้งาน (USB 2.0) | |
| 1110 | 0111 1000 | แผงลอย | ไม่สามารถโอนได้ โปรดทำการแก้ไขข้อผิดพลาด | |
| โทเค็น | 0001 | 1000 0111 | ออก | ที่อยู่สำหรับการถ่ายโอนข้อมูลจากโฮสต์ไปยังอุปกรณ์ |
| 1001 | 1001 0110 | ใน | ที่อยู่สำหรับการถ่ายโอนข้อมูลจากอุปกรณ์ไปยังโฮสต์ | |
| 0101 | 1010 0101 | เอสโอเอฟ | เครื่องหมายเริ่มต้นเฟรม (ส่งทุกมิลลิวินาที) | |
| 1101 | 1011 0100 | การตั้งค่า | ที่อยู่สำหรับการถ่ายโอนการควบคุมจากโฮสต์ไปยังอุปกรณ์ | |
| ข้อมูล | 0011 | 1100 0011 | ดาต้า0 | แพ็กเก็ตข้อมูลเลขคู่ |
| 1011 | 1101 0010 | ดาต้า1 | แพ็กเก็ตข้อมูลเลขคี่ | |
| 0111 | 1110 0001 | ดาต้า2 | แพ็กเก็ตข้อมูลสำหรับการถ่ายโอนข้อมูลแบบไอโซโครนัสความเร็วสูง (USB 2.0) | |
| 1111 | 1111 0000 | เอ็มดีเอตา | แพ็กเก็ตข้อมูลสำหรับการถ่ายโอนข้อมูลแบบไอโซโครนัสความเร็วสูง (USB 2.0) |
แพ็กเก็ตมีสามประเภทพื้นฐาน โดยแต่ละประเภทมีรูปแบบและ CRC ( การตรวจสอบความซ้ำซ้อนแบบวนรอบ ) ที่แตกต่างกัน:
ซองจับมือ
| สนาม | ซิงค์ | PID | อีโอพี |
|---|---|---|---|
| บิต | 8 | ||
| สัญญาณ | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | SE0 SE0 เจ |
แพ็กเก็ตแฮนด์เชคประกอบด้วยไบต์ PID เพียงไบต์เดียว และโดยทั่วไปจะถูกส่งเพื่อตอบสนองต่อแพ็กเก็ตข้อมูล การตรวจจับข้อผิดพลาดทำได้โดยการส่งบิตสี่บิต ซึ่งแสดงถึงประเภทของแพ็กเก็ตสองครั้ง ในไบต์ PID เดียวโดยใช้ รูปแบบ เสริมประเภทพื้นฐานสามประเภท ได้แก่ACKซึ่งบ่งชี้ว่าได้รับข้อมูลสำเร็จNAKซึ่งบ่งชี้ว่าไม่สามารถรับข้อมูลได้และควรลองใหม่ และSTALLซึ่งบ่งชี้ว่าอุปกรณ์มีข้อผิดพลาดและไม่สามารถถ่ายโอนข้อมูลได้จนกว่าจะมีการดำเนินการแก้ไขบางอย่าง (เช่น การเริ่มต้นอุปกรณ์) เกิดขึ้น[ 9 ] [ 10 ]
USB 2.0 เพิ่มแพ็กเก็ตแฮนด์เชคเพิ่มเติมอีกสองแพ็กเก็ต ได้แก่NYETและERR NYET บ่งชี้ว่าธุรกรรมแบบแยกส่วนยังไม่เสร็จสมบูรณ์ ในขณะที่แฮนด์เชค ERR บ่งชี้ว่าธุรกรรมแบบแยกส่วนล้มเหลว การใช้งานที่สองของแพ็กเก็ต NYET คือการบอกโฮสต์ว่าอุปกรณ์ยอมรับแพ็กเก็ตข้อมูลแล้ว แต่ไม่สามารถรับแพ็กเก็ตเพิ่มเติมได้เนื่องจากบัฟเฟอร์เต็ม ซึ่งช่วยให้โฮสต์สามารถเปลี่ยนไปส่งโทเค็น PING ขนาดเล็กเพื่อสอบถามความพร้อมของอุปกรณ์ แทนที่จะส่งแพ็กเก็ต DATA ที่ไม่ต้องการทั้งหมดเพียงเพื่อกระตุ้นให้เกิด NAK [ 9 ] [ 10 ]
แพ็กเก็ตการเชื่อมต่อเพียงอย่างเดียวที่อุปกรณ์ USB โฮสต์อาจสร้างขึ้นคือ ACK หากอุปกรณ์ไม่พร้อมที่จะรับข้อมูล ก็ไม่ควรสั่งให้อุปกรณ์อื่นส่งข้อมูล
แพ็กเก็ตโทเค็น
แพ็กเก็ตโทเค็นประกอบด้วยไบต์ PID ตามด้วยไบต์เพย์โหลดสองไบต์: ที่อยู่ 11 บิตและ CRC 5 บิต โทเค็นจะถูกส่งโดยโฮสต์เท่านั้น ไม่ใช่โดยอุปกรณ์ ด้านล่างนี้คือตัวอย่างโทเค็นที่มีอยู่ใน USB 1.0:
- โทเค็น INและ OUTประกอบด้วยหมายเลขอุปกรณ์เจ็ดบิตและหมายเลขปลายทางสี่บิต เพื่อสั่งการให้อุปกรณ์ส่งแพ็กเก็ต DATAx หรือรับแพ็กเก็ต DATAx ที่ตามมา ตามลำดับ
- โทเค็น INคาดหวังการตอบกลับจากอุปกรณ์ การตอบกลับอาจเป็น NAK หรือ STALL หรือเฟรมDATAxในกรณีหลัง โฮสต์จะส่งการจับมือ ACK หากเหมาะสม
- หลังจากโทเค็น OUTแล้ว จะตามด้วย เฟรม DATAx ทันที อุปกรณ์จะตอบกลับด้วย ACK, NAK, NYET หรือ STALL ตามความเหมาะสม
- SETUPทำงานคล้ายกับโทเค็น OUT แต่ใช้สำหรับการตั้งค่าอุปกรณ์เบื้องต้น โดยจะตามด้วยเฟรม DATA0 ขนาดแปดไบต์ที่มีรูปแบบมาตรฐาน
- SOF (Start of Frame)ทุกๆ มิลลิวินาที (12000 บิตไทม์แบนด์วิดท์เต็ม) โฮสต์ USB จะส่ง โทเค็น SOF (start of frame) พิเศษ ซึ่งประกอบด้วยหมายเลขเฟรมที่เพิ่มขึ้นทีละ 11 บิต แทนที่ที่อยู่ของอุปกรณ์ โทเค็นนี้ใช้เพื่อซิงโครไนซ์การถ่ายโอนข้อมูลแบบไอโซโครนัสและแบบขัดจังหวะ อุปกรณ์ USB 2.0 ความเร็วสูงจะได้รับโทเค็น SOF เพิ่มเติมอีกเจ็ดโทเค็นต่อเฟรม โดยแต่ละโทเค็นจะส่งไมโครเฟรม ขนาด 125 ไมโครวินาที (60000 บิตไทม์แบนด์วิดท์สูงต่อไมโครเฟรม)
นอกจากนี้ USB 2.0 ยังเพิ่มPING Token และSPLIT Token ที่มีขนาดใหญ่ขึ้นถึงสามไบต์ ด้วย :
- PINGถามอุปกรณ์ว่าพร้อมที่จะรับคู่แพ็กเก็ต OUT/DATA หรือไม่ โดยปกติโฮสต์จะส่ง PING เมื่อทำการสำรวจอุปกรณ์ที่ตอบกลับล่าสุดด้วย NAK หรือ NYET ซึ่งจะช่วยหลีกเลี่ยงความจำเป็นในการส่งแพ็กเก็ตข้อมูลขนาดใหญ่ไปยังอุปกรณ์ที่โฮสต์สงสัยว่าไม่เต็มใจที่จะรับ [ 11 ]อุปกรณ์จะตอบกลับด้วย ACK, NAK หรือ STALL ตามความเหมาะสม
- SPLITใช้สำหรับทำการแบ่งการถ่ายโอนข้อมูล แทนที่จะใช้แบนด์วิดท์สูงของบัส USB ในการส่งข้อมูลไปยังอุปกรณ์ USB ที่ช้ากว่า ฮับที่มีแบนด์วิดท์สูงที่อยู่ใกล้ที่สุดจะได้รับโทเค็น SPLIT ตามด้วยแพ็กเก็ต USB หนึ่งหรือสองแพ็กเก็ตที่แบนด์วิดท์สูง ทำการถ่ายโอนข้อมูลที่แบนด์วิดท์เต็มหรือแบนด์วิดท์ต่ำ และส่งการตอบกลับที่แบนด์วิดท์สูงเมื่อได้รับการแจ้งเตือนด้วยโทเค็น SPLIT ตัวที่สอง โทเค็นนี้ประกอบด้วยหมายเลขฮับเจ็ดบิต แฟล็กควบคุม 12 บิต และ CRC ห้าบิต
แพ็กเก็ตโทเค็น OUT, IN, SETUP และ PING
| สนาม | ซิงค์ | PID | ที่อยู่ | ENDP | ซีอาร์ซี5 | อีโอพี |
|---|---|---|---|---|---|---|
| บิต | 8 | 7 | 4 | 5 | ||
| สัญญาณ | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | XXXX XXX | XXXX | XXXXX | SE0 SE0 เจ |
- ที่อยู่: ที่อยู่ของอุปกรณ์ USB (สูงสุด 127 อุปกรณ์)
- ENDP: เลือกบัฟเฟอร์ต้นทาง/ปลายทางของฮาร์ดแวร์บนอุปกรณ์ (เช่น PID OUT ใช้สำหรับส่งข้อมูลจากบัฟเฟอร์ต้นทางของโฮสต์ไปยังบัฟเฟอร์ปลายทางของอุปกรณ์ USB)
- โดยปกติแล้ว อุปกรณ์ USB ทุกชนิดจะต้องรองรับบัฟเฟอร์ปลายทาง 0 (EP0) เป็นอย่างน้อย เนื่องจาก EP0 ใช้สำหรับควบคุมอุปกรณ์และแสดงข้อมูลสถานะระหว่างการตรวจสอบและการทำงานปกติ
SOF: จุดเริ่มต้นของเฟรม
| สนาม | ซิงค์ | PID | หมายเลขเฟรม | ซีอาร์ซี5 | อีโอพี |
|---|---|---|---|---|---|
| บิต | 8 | 11 | 5 | ||
| สัญญาณ | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | XXXX XXXX XXX | XXXXX | SE0 SE0 เจ |
การใช้งาน: ธุรกรรมแรกในแต่ละ (ไมโคร)เฟรม SOF ช่วยให้เอนด์พอยต์ระบุจุดเริ่มต้นของ (ไมโคร)เฟรมและซิงโครไนซ์นาฬิกาภายในของเอนด์พอยต์กับโฮสต์ได้
- หมายเลขเฟรม: นี่คือหมายเลขเฟรมที่โฮสต์จะเพิ่มขึ้นเป็นระยะ เพื่อให้ปลายทางสามารถระบุจุดเริ่มต้นของเฟรม (หรือไมโครเฟรม) และซิงโครไนซ์นาฬิกาภายในของปลายทางกับนาฬิกาของโฮสต์ได้
SSPLIT และ CSPLIT: ธุรกรรมเริ่มต้นการแบ่ง และ ธุรกรรมการแบ่งเสร็จสมบูรณ์
| โหมด S/C | สนาม | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0, SSPLIT | ซิงค์ | PID | ที่ อยู่ศูนย์กลาง | ส/ซี | หมายเลข พอร์ต | เอส | อี | อีพี | ซีอาร์ซี5 | อีโอพี | |
| 1, ซีสปลิต | ยู | ||||||||||
| บิต | 8 | 7 | 1 | 7 | 1 | 1 | 2 | 5 | |||
| สัญญาณ | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | XXXX XXX | X | XXXX XXX | X | X | XX | XXXXX | SE0 SE0 เจ | |
- S/C, เริ่ม หรือ เสร็จสมบูรณ์:
- 0, SSPLIT, เริ่มธุรกรรมแยกส่วน
- 1. CSPLIT, การทำธุรกรรมแยกส่วนแบบสมบูรณ์
- S: 1, ความเร็วต่ำ; 0, ความเร็วสูง
- E, สิ้นสุดการบรรทุกด้วยความเร็วเต็มที่
- บิต U, U เป็นบิตที่สงวนไว้/ไม่ได้ใช้งาน และต้องตั้งค่ากลับเป็นศูนย์ (0 B)
- EP, จุดสิ้นสุด: ประเภท 00, ควบคุม; 01, ไอโซโครนัส; 10, บัลค์; และ 11, ขัดจังหวะ
แพ็กเก็ตข้อมูล
| สนาม | ซิงค์ | PID | ข้อมูล | ซีอาร์ซี16 | อีโอพี |
|---|---|---|---|---|---|
| บิต | 8 | 0–8192 | 16 | ||
| สัญญาณ | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | (XXXX XXXX) × จำนวนไบต์ | XXXX XXXX XXXX XXXX | SE0 SE0 เจ |
แพ็กเก็ตข้อมูลประกอบด้วย PID ตามด้วยเพย์โหลดข้อมูล 0–1,024 ไบต์ และ CRC 16 บิต[ 12 ]
- ข้อมูลสูงสุด 8 ไบต์ที่ความเร็วต่ำ (LS) [ 12 ]
- ข้อมูลสูงสุด 1023 ไบต์ที่ความเร็วเต็ม (FS) [ 12 ]
- ข้อมูลสูงสุด 1024 ไบต์ที่ความเร็วสูง (HS) [ 12 ]
ข้อมูลแพ็กเก็ตมีสองรูปแบบพื้นฐาน คือDATA0และDATA1แพ็กเก็ตข้อมูลจะต้องมีโทเค็นที่อยู่ก่อนหน้าเสมอ และโดยปกติจะตามด้วยโทเค็นการจับมือจากตัวรับกลับไปยังตัวส่ง แพ็กเก็ตทั้งสองประเภทนี้ให้หมายเลขลำดับ 1 บิตที่จำเป็นสำหรับARQ แบบหยุดและรอหากโฮสต์ USB ไม่ได้รับการตอบสนอง (เช่น ACK) สำหรับข้อมูลที่ส่งไป โฮสต์จะไม่ทราบว่าข้อมูลนั้นได้รับหรือไม่ ข้อมูลอาจสูญหายระหว่างการส่ง หรืออาจได้รับแล้วแต่การตอบสนองการจับมือหายไป
เพื่อแก้ปัญหานี้ อุปกรณ์จะติดตามประเภทของแพ็กเก็ต DATAx ที่รับล่าสุด หากได้รับแพ็กเก็ต DATAx ประเภทเดียวกันอีกครั้ง อุปกรณ์จะรับทราบแต่จะละเลยเนื่องจากเป็นแพ็กเก็ตซ้ำ เฉพาะแพ็กเก็ต DATAx ประเภทตรงข้ามเท่านั้นที่จะถูกรับอย่างแท้จริง
หากข้อมูลเสียหายระหว่างการส่งหรือรับ การตรวจสอบ CRC จะล้มเหลว เมื่อเกิดเหตุการณ์นี้ ผู้รับจะไม่สร้าง ACK ซึ่งทำให้ผู้ส่งต้องส่งแพ็กเก็ตใหม่[ 13 ]
เมื่ออุปกรณ์ถูกรีเซ็ตด้วยแพ็กเก็ต SETUP อุปกรณ์จะคาดหวังแพ็กเก็ต DATA0 ขนาด 8 ไบต์ตามมา
USB 2.0 เพิ่ม ประเภทแพ็กเก็ต DATA2และMDATAเข้ามาด้วย ประเภทแพ็กเก็ตเหล่านี้ใช้เฉพาะกับอุปกรณ์ที่มีแบนด์วิดท์สูงซึ่งทำการถ่ายโอนข้อมูลแบบไอโซโครนัสที่มีแบนด์วิดท์สูง โดยต้องถ่ายโอนข้อมูลมากกว่า 1024 ไบต์ต่อไมโครเฟรม 125 ไมโครวินาที (8,192 กิโลไบต์ต่อวินาที)
แพ็กเก็ต PRE (แจ้งให้ฮับเปลี่ยนไปใช้โหมดความเร็วต่ำชั่วคราว)
ฮับสามารถรองรับอุปกรณ์ที่มีแบนด์วิดท์ต่ำผสมกับอุปกรณ์ที่มีความเร็วอื่นๆ ได้โดยใช้ค่า PID พิเศษที่เรียกว่าPREซึ่งจำเป็นเพราะฮับ USBทำหน้าที่เป็นตัวทวนสัญญาณอย่างง่าย โดยกระจายข้อความจากโฮสต์ไปยังอุปกรณ์ที่เชื่อมต่อทั้งหมดโดยไม่คำนึงว่าแพ็กเก็ตนั้นจะเป็นของอุปกรณ์นั้นหรือไม่ นั่นหมายความว่าในสภาพแวดล้อมที่มีความเร็วผสมกัน อาจมีความเสี่ยงที่อุปกรณ์ความเร็วต่ำจะตีความสัญญาณความเร็วสูงหรือสัญญาณความเร็วเต็มที่จากโฮสต์ผิดพลาดได้
เพื่อขจัดอันตรายนี้ หากฮับ USB ตรวจพบอุปกรณ์ความเร็วสูงหรือความเร็วเต็มที่และอุปกรณ์ความเร็วต่ำปะปนกัน โดยค่าเริ่มต้น ฮับจะปิดการสื่อสารกับอุปกรณ์ความเร็วต่ำ เว้นแต่จะได้รับคำขอให้เปลี่ยนไปใช้โหมดความเร็วต่ำ อย่างไรก็ตาม เมื่อได้รับแพ็กเก็ต PRE ฮับจะเปิดใช้งานพอร์ตเอาต์พุตไปยังอุปกรณ์ความเร็วต่ำทั้งหมดชั่วคราว เพื่อให้โฮสต์สามารถส่งแพ็กเก็ตความเร็วต่ำเพียงแพ็กเก็ตเดียวไปยังอุปกรณ์ความเร็วต่ำได้ หลังจากส่งแพ็กเก็ตความเร็วต่ำแล้ว สัญญาณสิ้นสุดแพ็กเก็ต (EOP) จะบอกให้ฮับปิดการส่งออกทั้งหมดไปยังอุปกรณ์ความเร็วต่ำอีกครั้ง
เนื่องจากไบต์ PID ทั้งหมดมีบิต 0 สี่บิต จึงทำให้บัสอยู่ในสถานะ K ที่มีแบนด์วิดท์เต็ม ซึ่งเหมือนกับสถานะ J ที่มีแบนด์วิดท์ต่ำ จากนั้นจะมีการหยุดชั่วคราวสั้นๆ ในระหว่างนั้นฮับจะเปิดใช้งานเอาต์พุตที่มีแบนด์วิดท์ต่ำ ซึ่งอยู่ในสถานะ J ที่ไม่ได้ใช้งานอยู่แล้ว จากนั้นจะตามด้วยแพ็กเก็ตที่มีแบนด์วิดท์ต่ำ เริ่มต้นด้วยลำดับการซิงค์และไบต์ PID และสิ้นสุดด้วยช่วงเวลาสั้นๆ ของ SE0 อุปกรณ์ที่มีแบนด์วิดท์เต็มอื่นๆ นอกเหนือจากฮับสามารถเพิกเฉยต่อแพ็กเก็ต PRE และเนื้อหาที่มีแบนด์วิดท์ต่ำได้ จนกว่า SE0 สุดท้ายจะบ่งชี้ว่ามีแพ็กเก็ตใหม่ตามมา
| คำนำความเร็วเต็มที่, PRE | การตั้งค่าฮับช่วยให้สามารถส่งสัญญาณไปยังอุปกรณ์ความเร็วต่ำได้ | ตัวอย่างแพ็กเก็ตความเร็วต่ำ | ฮับจะปิดใช้งานการส่งสัญญาณไปยังอุปกรณ์ความเร็วต่ำ | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| สนาม | ซิงค์ | PID (ก่อน) | ซิงค์ | PID | ที่อยู่ | ENDP | ซีอาร์ซี5 | อีโอพี | ||
| บิต | 8 | 8 | 7 | 4 | 5 | |||||
| สัญญาณ | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | เคเจ เคเจ เคเจ เคเค | XXXX XXXX | XXXX XXX | XXXX | XXXXX | SE0 SE0 เจ | ||
ธุรกรรม
แพ็กเก็ต USB ถูกจัดระเบียบเป็นธุรกรรมซึ่งประกอบด้วยแพ็กเก็ตโทเค็น แพ็กเก็ตข้อมูลแบบมีเงื่อนไข และแพ็กเก็ตการจับมือกัน
ธุรกรรมขาออก
| ธุรกรรมขาออก (รวม 3 แพ็กเก็ต) | |||
|---|---|---|---|
| เจ้าภาพ | เจ้าภาพ | อุปกรณ์ | |
| รหัส PID ของแพ็กเก็ต | ออก | ดาต้าเอ็กซ์ | แอก |
| ประเภทแพ็กเก็ต | โทเค็น | ข้อมูล | การจับมือ |
| คำอธิบาย | สั่งให้อุปกรณ์บนADDRx เริ่มรับฟังแพ็กเก็ตข้อมูลขาเข้าที่ปลายทางEPx | บอกอุปกรณ์ USB ว่าคุณต้องการส่งข้อมูลอะไรไปให้มัน | อุปกรณ์จะแจ้งให้โฮสต์ทราบว่าได้รับและโหลดข้อมูลลงในบัฟเฟอร์ EPx เรียบร้อยแล้ว |
ในการทำธุรกรรม
| ธุรกรรม IN (รวม 3 แพ็กเก็ต) | |||
|---|---|---|---|
| เจ้าภาพ | อุปกรณ์ | เจ้าภาพ | |
| รหัส PID ของแพ็กเก็ต | ใน | ดาต้าเอ็กซ์ | แอก |
| ประเภทแพ็กเก็ต | โทเค็น | ข้อมูล | การจับมือ |
| คำอธิบาย | สั่งให้อุปกรณ์ที่อยู่บนADDRx ส่งข้อมูลใดๆ ก็ตามที่มีอยู่ในบัฟเฟอร์ปลายทางEPx ของอุปกรณ์นั้น | อุปกรณ์จะตรวจสอบบัฟเฟอร์ปลายทาง EPx และส่งข้อมูลที่ร้องขอไปยังโฮสต์ | โฮสต์จะแจ้งให้อุปกรณ์ทราบว่าได้รับข้อมูลเรียบร้อยแล้ว และได้โหลดข้อมูลลงในบัฟเฟอร์ EPx ของอุปกรณ์แล้ว |
ธุรกรรมการตั้งค่า
ส่วนนี้ใช้สำหรับการระบุอุปกรณ์และการจัดการการเชื่อมต่อ และแจ้งให้อุปกรณ์ทราบว่าโฮสต์ต้องการเริ่มการแลกเปลี่ยนข้อมูลควบคุม
| ธุรกรรม SETUP (รวม 3 แพ็กเก็ต) | |||
|---|---|---|---|
| เจ้าภาพ | เจ้าภาพ | อุปกรณ์ | |
| รหัส PID ของแพ็กเก็ต | การตั้งค่า | ดาต้า0 | แอก |
| ประเภทแพ็กเก็ต | โทเค็น | ข้อมูล | การจับมือ |
| คำอธิบาย | สั่งให้อุปกรณ์บนADDRx เริ่มโหมดตั้งค่าและเตรียมพร้อมรับแพ็กเก็ตข้อมูล | ส่งแพ็กเก็ตการตั้งค่าความยาว 8 ไบต์ไปยังอุปกรณ์ | อุปกรณ์จะยืนยันการรับข้อมูล SETUP และอัปเดตสถานะเครื่องตั้งค่า (setup state machine) ของตนเอง |
- ขึ้นอยู่กับแพ็กเก็ตการตั้งค่า อาจมีแพ็กเก็ตข้อมูลเพิ่มเติมจากอุปกรณ์ไปยังโฮสต์ หรือจากโฮสต์ไปยังอุปกรณ์
ชุดติดตั้ง
การทำธุรกรรมการตั้งค่าจะส่งแพ็กเก็ตการตั้งค่าขนาด 8 ไบต์ไปยังอุปกรณ์ แพ็กเก็ตการตั้งค่านี้จะเข้ารหัสทิศทางและความยาวของแพ็กเก็ตข้อมูลที่จะส่งตามมา
| สนาม | ออฟเซ็ต | ไบต์ | บิต | คำอธิบาย |
|---|---|---|---|---|
| bmRequestType | 0 | 1 | 0–4 | ผู้รับ:ส่วนประกอบซอฟต์แวร์ USB ที่กำลังได้รับการแก้ไข
|
| 5–6 | ประเภท:ใช้ร่วมกับไบต์ bRequest
| |||
| 7 | ทิศทาง:
| |||
| คำขอ | 1 | 1 | คำสั่งการตั้งค่า:เมื่อผู้รับ = 0 (อุปกรณ์) และประเภท = 0 (มาตรฐาน) คำขอที่กำหนดไว้คือ:
| |
| ค่า w | 2 | 2 | ค่าพารามิเตอร์:การตีความขึ้นอยู่กับ bRequest | |
| ดัชนี | 4 | 2 | พารามิเตอร์รอง:ระบุอินเทอร์เฟซหรือเอนด์พอยต์ที่คำขอนี้ส่งถึง สำหรับตัวอธิบายที่เป็นสตริง (ผู้รับ = อุปกรณ์) นี่คือรหัสภาษา | |
| ความยาว | 6 | 2 | ความยาวของการถ่ายโอนข้อมูล:จำนวนไบต์ที่จะถูกถ่ายโอนหลังจากแพ็กเก็ตการตั้งค่า | |
การโอนควบคุมการแลกเปลี่ยน
การแลกเปลี่ยนการโอนอำนาจควบคุมประกอบด้วยสามขั้นตอนที่แตกต่างกัน โดยแต่ละขั้นตอนประกอบด้วยธุรกรรมของตนเอง:
- ขั้นตอนการตั้งค่า: นี่คือคำสั่งการตั้งค่าที่ส่งโดยโฮสต์ไปยังอุปกรณ์ ประกอบด้วยโทเค็น SETUP แพ็กเก็ต DATA จากโฮสต์ที่มีโครงสร้าง "แพ็กเก็ตการตั้งค่า" ข้างต้น และแพ็กเก็ตจับมือจากอุปกรณ์[ 14 ]
- ขั้นตอนข้อมูล (ไม่บังคับ): ขั้นตอนนี้ประกอบด้วยข้อมูลที่อธิบายไว้ (ในกรณีของการถ่ายโอนจากโฮสต์ไปยังอุปกรณ์) หรือร้องขอ (ในกรณีของการถ่ายโอนจากอุปกรณ์ไปยังโฮสต์) โดยขั้นตอนการตั้งค่า ขั้นตอนนี้อาจประกอบด้วยธุรกรรมหลายรายการ และจะสิ้นสุดลงภายใต้เงื่อนไขหลายประการ: [ 15 ]
- ธุรกรรมที่มีแพ็กเก็ตข้อมูล (DATA packet) ที่ไม่มีข้อมูลภายใน (payload) เลย เรียกว่า แพ็กเก็ตความยาวศูนย์ (zero-length packet)
- ธุรกรรมที่มีแพ็กเก็ตข้อมูลที่มีความยาวน้อยกว่าขนาดแพ็กเก็ตสูงสุดสำหรับปลายทางนั้น เรียกว่าแพ็กเก็ต "สั้น"
- เมื่อ ส่งข้อมูลครบตามปริมาณที่ระบุไว้ใน ฟิลด์ wLength ของแพ็กเก็ตการตั้งค่าแล้ว
- ขั้นตอนสถานะ: ธุรกรรมความยาวศูนย์ ซึ่งมีทิศทางตรงกันข้ามกับขั้นตอนข้อมูล เพื่อระบุการเสร็จสิ้นการถ่ายโอนและตรวจสอบว่าอุปกรณ์ทำการถ่ายโอนเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด[ 14 ]
สิ่งนี้ช่วยให้โฮสต์สามารถดำเนินการจัดการบัส เช่น การแจงนับอุปกรณ์ USB ใหม่โดยการดึงคำอธิบายของอุปกรณ์ใหม่ การดึงคำอธิบายจะช่วยให้สามารถกำหนดคลาส USB, VID และ PID ซึ่งมักใช้ในการกำหนดไดรเวอร์ USB ที่ถูกต้องสำหรับอุปกรณ์ได้ โดยสามารถระบุตำแหน่งอุปกรณ์ USB ได้โดยใช้ที่อยู่บัส:อุปกรณ์ หรือโดยใช้ที่อยู่ฮับ:พอร์ต[ 16 ]
นอกจากนี้ หลังจากดึงข้อมูลตัวอธิบายแล้ว โฮสต์จะทำการแลกเปลี่ยนการถ่ายโอนควบคุมอีกครั้ง แต่คราวนี้เป็นการตั้งค่าที่อยู่ของอุปกรณ์ USB ให้เป็น ADDRx ใหม่
ดูเพิ่มเติม
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การสื่อสารผ่าน USB
บทความนี้ให้ข้อมูลเกี่ยวกับแง่มุมการสื่อสารของ Universal Serial Bus ( USB ): การส่งสัญญาณ โปรโตคอล และ การ ทำธุรกรรม USB เป็นมาตรฐานอุตสาหกรรมที่ใช้กำหนดสายเคเบิล ตัวเชื่อมต่อ...
อัตราการส่งสัญญาณ (อัตราการส่งข้อมูล)
อัตราการส่งสัญญาณสูงสุดใน USB 2.0 คือ 480 เมกะบิต/วินาที (60 เมกะไบต์/วินาที) ต่อคอนโทรลเลอร์ และจะถูกแบ่งใช้ระหว่างอุปกรณ์ที่เชื่อมต่อทั้งหมด ผู้ผลิตชิปเซ็ต คอมพิวเตอร์ส่วนบุคคล บางราย แก้ปัญหาคอขวดนี้โดยการจัดหาคอนโทรลเลอร์ USB 2.
ข้อกำหนดทางไฟฟ้า
สัญญาณ USB ถูกส่งผ่านโดยใช้ การส่งสัญญาณแบบดิฟเฟอเรนเชียลบ นสายเคเบิลข้อมูล แบบบิดเกลียว ที่มี อิมพีแดนซ์ลักษณะ เฉพาะ 90 Ω ± 15% [ 6 ]
สถานะการส่งสัญญาณ
วงจรโฮสต์มี ตัวต้านทานแบบดึงลง (pull-down resistor ) ขนาด 15 kΩ ต่อ อยู่กับสายข้อมูลแต่ละเส้น เมื่อไม่มีอุปกรณ์เชื่อมต่อ ตัวต้านทานนี้จะดึงสายข้อมูลทั้งสองเส้นลงต่ำไปยังสถานะที่เรียกว่า single-ended zero state (SE0 ในเอกสาร USB)...