กลับไปหน้าบทความ

อ่าน 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)

อัตราการส่งสัญญาณ (อัตราการส่งข้อมูล)

การเปรียบเทียบอัตราการส่งสัญญาณ
โลโก้ฉลากโหมดการทำงาน[ 1 ]อัตราการส่งสัญญาณอัตราการส่งข้อมูลทั่วไปเปิดตัวใน
ความเร็วพื้นฐานความเร็วต่ำ1.5 เมกะบิต/วินาที (187.5 กิโลไบต์/วินาที)?ยูเอสบี 1.0
ความเร็วเต็มที่12 เมกะบิต/วินาที (1.5 เมกะไบต์/วินาที)?ยูเอสบี 1.0
ความเร็วสูงความเร็วสูง480 เมกะบิต/วินาที (60 เมกะไบต์/วินาที)ขวา: 30–42 MB/วินาทีW: 25–30 MB/วินาทียูเอสบี 2.0
USB 5GbpsUSB 3.2 Gen 1×15 กิกะบิต/วินาที (625 เมกะไบต์/วินาที)ขวา: 90–110 MB/วินาทีW: 70–90 MB/วินาทียูเอสบี 3.0
USB 10GbpsUSB 3.2 Gen 2×110 กิกะบิต/วินาที (1.25 กิกะไบต์/วินาที)?ยูเอสบี 3.1
USB 20GbpsUSB 3.2 Gen 2×220 กิกะบิต/วินาที (2.5 กิกะไบต์/วินาที)?ยูเอสบี 3.2
USB 40GbpsUSB4 Gen 3×240 กิกะบิต/วินาที (5 กิกะไบต์/วินาที)?ยูเอสบี4
USB 80GbpsUSB4 เจนเนอเรชั่น 4×280 กิกะบิต/วินาที (10 กิกะไบต์/วินาที)?USB4 เวอร์ชัน 2.0

อัตราการส่งสัญญาณสูงสุดใน 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 จะมีการใช้การเข้ารหัสการส่งข้อมูลเพิ่มเติมเพื่อรองรับอัตราการส่งสัญญาณที่สูงขึ้นที่จำเป็น

ตัวอย่างการส่งข้อมูลบนอุปกรณ์ความเร็วเต็ม

ตัวอย่างของแพ็กเก็ต Negative Acknowledge ที่ส่งโดยอุปกรณ์ USB 1.1 ความเร็วเต็ม เมื่อไม่มีข้อมูลให้อ่านอีกต่อไป แพ็กเก็ตนี้ประกอบด้วยฟิลด์ต่อไปนี้: ไบต์การซิงโครไนซ์นาฬิกา, ประเภทของแพ็กเก็ต และส่วนท้ายของแพ็กเก็ต แพ็กเก็ตข้อมูลจะมีข้อมูลเพิ่มเติมระหว่างประเภทของแพ็กเก็ตและส่วนท้ายของแพ็กเก็ต
รูปแบบการซิงโครไนซ์
แพ็กเก็ต 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 อาจต้องเติมบิตภายในไม่กี่บิตแรกของเพย์โหลด)

ไบต์ USB PID
พิมพ์ ค่า PID ( msb -first) ไบต์ที่ส่ง( lsb -first) ชื่อ คำอธิบาย
ที่สงวนไว้00000000 1111
โทเค็น10000001 1110แยกการแยกธุรกรรมความเร็วสูง (USB 2.0)
01000010 1101ปิงตรวจสอบว่าอุปกรณ์ปลายทางสามารถรับข้อมูลได้หรือไม่ (USB 2.0)
พิเศษ11000011 1100พรีคำนำหน้า USB แบนด์วิดท์ต่ำ
การจับมือข้อผิดพลาดข้อผิดพลาดในการแบ่งธุรกรรม (USB 2.0)
00100100 1011แอกแพ็กเก็ตข้อมูลได้รับการยอมรับแล้ว
10100101 1010นาครับแพ็กเก็ตข้อมูลไม่ได้ โปรดส่งใหม่อีกครั้ง
01100110 1001ไนเอทข้อมูลยังไม่พร้อมใช้งาน (USB 2.0)
11100111 1000แผงลอยไม่สามารถโอนได้ โปรดทำการแก้ไขข้อผิดพลาด
โทเค็น00011000 0111ออกที่อยู่สำหรับการถ่ายโอนข้อมูลจากโฮสต์ไปยังอุปกรณ์
10011001 0110ในที่อยู่สำหรับการถ่ายโอนข้อมูลจากอุปกรณ์ไปยังโฮสต์
01011010 0101เอสโอเอฟเครื่องหมายเริ่มต้นเฟรม (ส่งทุกมิลลิวินาที)
11011011 0100การตั้งค่าที่อยู่สำหรับการถ่ายโอนการควบคุมจากโฮสต์ไปยังอุปกรณ์
ข้อมูล00111100 0011ดาต้า0แพ็กเก็ตข้อมูลเลขคู่
10111101 0010ดาต้า1แพ็กเก็ตข้อมูลเลขคี่
01111110 0001ดาต้า2แพ็กเก็ตข้อมูลสำหรับการถ่ายโอนข้อมูลแบบไอโซโครนัสความเร็วสูง (USB 2.0)
11111111 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 010–4ผู้รับ:ส่วนประกอบซอฟต์แวร์ USB ที่กำลังได้รับการแก้ไข
0 = อุปกรณ์
1 = อินเทอร์เฟซ
2 = จุดสิ้นสุด
3 = อื่นๆ
4–31 (สงวนสิทธิ์)
5–6ประเภท:ใช้ร่วมกับไบต์ bRequest
0 = มาตรฐาน (รองรับโดยอุปกรณ์ USB ทุกชนิด)
1 = คลาส (ขึ้นอยู่กับคลาสของอุปกรณ์ USB)
2 = ผู้ขาย
3 (สำรองไว้)
7ทิศทาง:
0 = การถ่ายโอนข้อมูลจากโฮสต์ไปยังอุปกรณ์หรือไม่มีการถ่ายโอนข้อมูล (wLength == 0)
1 = อุปกรณ์ส่งกลับไปยังโฮสต์ (wLength > 0 ไบต์ของสถานะที่ส่งคืน)
คำขอ 11คำสั่งการตั้งค่า:เมื่อผู้รับ = 0 (อุปกรณ์) และประเภท = 0 (มาตรฐาน) คำขอที่กำหนดไว้คือ:
0 = GET_STATUS (อ่านข้อมูล 2 ไบต์)
1 = CLEAR_FEATURE (0 ไบต์; คุณสมบัติที่เลือกโดย wValue)
3 = SET_FEATURE (0 ไบต์; คุณสมบัติที่เลือกโดย wValue)
5 = SET_ADDRESS (0 ไบต์; ที่อยู่ใน wValue)
6 = GET_DESCRIPTOR (อ่าน wLength-byte; ประเภทตัวอธิบายและดัชนีใน wValue)
7 = SET_DESCRIPTOR (เขียน wLength-byte; ประเภทตัวอธิบายและดัชนีใน wValue)
8 = GET_CONFIGURATION (อ่านข้อมูล 1 ไบต์)
9 = SET_CONFIGURATION (0 ไบต์; การกำหนดค่าถูกเลือกโดย wValue)
ค่า w 22ค่าพารามิเตอร์:การตีความขึ้นอยู่กับ bRequest
ดัชนี 42พารามิเตอร์รอง:ระบุอินเทอร์เฟซหรือเอนด์พอยต์ที่คำขอนี้ส่งถึง สำหรับตัวอธิบายที่เป็นสตริง (ผู้รับ = อุปกรณ์) นี่คือรหัสภาษา
ความยาว 62ความยาวของการถ่ายโอนข้อมูล:จำนวนไบต์ที่จะถูกถ่ายโอนหลังจากแพ็กเก็ตการตั้งค่า

การโอนควบคุมการแลกเปลี่ยน

การแลกเปลี่ยนการโอนอำนาจควบคุมประกอบด้วยสามขั้นตอนที่แตกต่างกัน โดยแต่ละขั้นตอนประกอบด้วยธุรกรรมของตนเอง:

  • ขั้นตอนการตั้งค่า: นี่คือคำสั่งการตั้งค่าที่ส่งโดยโฮสต์ไปยังอุปกรณ์ ประกอบด้วยโทเค็น SETUP แพ็กเก็ต DATA จากโฮสต์ที่มีโครงสร้าง "แพ็กเก็ตการตั้งค่า" ข้างต้น และแพ็กเก็ตจับมือจากอุปกรณ์[ 14 ]
  • ขั้นตอนข้อมูล (ไม่บังคับ): ขั้นตอนนี้ประกอบด้วยข้อมูลที่อธิบายไว้ (ในกรณีของการถ่ายโอนจากโฮสต์ไปยังอุปกรณ์) หรือร้องขอ (ในกรณีของการถ่ายโอนจากอุปกรณ์ไปยังโฮสต์) โดยขั้นตอนการตั้งค่า ขั้นตอนนี้อาจประกอบด้วยธุรกรรมหลายรายการ และจะสิ้นสุดลงภายใต้เงื่อนไขหลายประการ: [ 15 ]
    • ธุรกรรมที่มีแพ็กเก็ตข้อมูล (DATA packet) ที่ไม่มีข้อมูลภายใน (payload) เลย เรียกว่า แพ็กเก็ตความยาวศูนย์ (zero-length packet)
    • ธุรกรรมที่มีแพ็กเก็ตข้อมูลที่มีความยาวน้อยกว่าขนาดแพ็กเก็ตสูงสุดสำหรับปลายทางนั้น เรียกว่าแพ็กเก็ต "สั้น"
    • เมื่อ ส่งข้อมูลครบตามปริมาณที่ระบุไว้ใน ฟิลด์ wLength ของแพ็กเก็ตการตั้งค่าแล้ว
  • ขั้นตอนสถานะ: ธุรกรรมความยาวศูนย์ ซึ่งมีทิศทางตรงกันข้ามกับขั้นตอนข้อมูล เพื่อระบุการเสร็จสิ้นการถ่ายโอนและตรวจสอบว่าอุปกรณ์ทำการถ่ายโอนเสร็จสมบูรณ์โดยไม่มีข้อผิดพลาด[ 14 ]

สิ่งนี้ช่วยให้โฮสต์สามารถดำเนินการจัดการบัส เช่น การแจงนับอุปกรณ์ USB ใหม่โดยการดึงคำอธิบายของอุปกรณ์ใหม่ การดึงคำอธิบายจะช่วยให้สามารถกำหนดคลาส USB, VID และ PID ซึ่งมักใช้ในการกำหนดไดรเวอร์ USB ที่ถูกต้องสำหรับอุปกรณ์ได้ โดยสามารถระบุตำแหน่งอุปกรณ์ USB ได้โดยใช้ที่อยู่บัส:อุปกรณ์ หรือโดยใช้ที่อยู่ฮับ:พอร์ต[ 16 ]

นอกจากนี้ หลังจากดึงข้อมูลตัวอธิบายแล้ว โฮสต์จะทำการแลกเปลี่ยนการถ่ายโอนควบคุมอีกครั้ง แต่คราวนี้เป็นการตั้งค่าที่อยู่ของอุปกรณ์ USB ให้เป็น ADDRx ใหม่

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=USB_communications&oldid=1359966506 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การสื่อสารผ่าน 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)...