NINGBO TONGRUN ELECTRONICS CO.,LTD

แพ็กเก็ต USB

2009 01/16

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

หลังจากฟิลด์ซิงค์ที่อธิบายไว้ข้างต้น แพ็กเก็ตทั้งหมดประกอบด้วยไบต์ 8 บิต โดยส่งบิตที่มีนัยสำคัญน้อยที่สุดก่อน ไบต์แรกคือไบต์ของตัวระบุแพ็กเก็ต (PID) PID จริงๆ แล้วคือ 4 บิต; ไบต์ประกอบด้วย PID 4 บิตตามด้วยส่วนเสริมระดับบิต ความซ้ำซ้อนนี้ช่วยตรวจจับข้อผิดพลาด (โปรดทราบว่าไบต์ PID มี 1 บิตต่อเนื่องกันสูงสุดสี่รายการ ดังนั้นจึงไม่จำเป็นต้องเติมบิต แม้ว่าจะรวมกับ 1 บิตสุดท้ายในไบต์ซิงค์ก็ตาม อย่างไรก็ตาม ไบต์ OUT PID จะลงท้ายด้วย 1 บิตต่อเนื่องกันสามรายการ ดังนั้น หากที่อยู่อุปกรณ์ USB ต่อไปนี้ขึ้นต้นด้วย 1 บิตสามบิต ก็จำเป็นต้องมีการเติมบิต)

แพ็กเก็ตมีสามประเภทพื้นฐาน แต่ละประเภทมีรูปแบบและ CRC ที่แตกต่างกัน (การตรวจสอบความซ้ำซ้อนแบบวน):

แพ็กเก็ต Handshake ไม่มีอะไรนอกจากไบต์ PID และโดยทั่วไปจะถูกส่งเพื่อตอบสนองต่อแพ็กเก็ตข้อมูล ประเภทพื้นฐานสามประเภท ได้แก่ ACK ซึ่งระบุว่าได้รับข้อมูลสำเร็จ NAK ซึ่งระบุว่าไม่สามารถรับข้อมูลได้ในขณะนี้และควรลองใหม่ และ STALL ซึ่งระบุว่าอุปกรณ์มีข้อผิดพลาดและจะไม่สามารถถ่ายโอนข้อมูลได้สำเร็จจนกว่าจะดำเนินการแก้ไขบางอย่าง (เช่น การเริ่มต้นอุปกรณ์)

USB 2.0 เพิ่มแพ็กเก็ตการจับมือเพิ่มเติมอีกสองแพ็กเก็ต NYET ซึ่งระบุว่าธุรกรรมการแยกยังไม่เสร็จสมบูรณ์ และการจับมือ ERR เพื่อระบุว่าธุรกรรมการแยกล้มเหลว

แพ็กเก็ตการจับมือเดียวที่โฮสต์ USB อาจสร้างคือ ACK; หากไม่พร้อมรับข้อมูลก็ไม่ควรสั่งให้อุปกรณ์ส่งข้อมูลใดๆ

แพ็กเก็ตโทเค็นประกอบด้วยไบต์ PID ตามด้วยที่อยู่ 11 บิตและ CRC 5 บิต โทเค็นจะถูกส่งโดยโฮสต์เท่านั้น ไม่ใช่อุปกรณ์--

โทเค็น IN และ OUT ประกอบด้วยหมายเลขอุปกรณ์ 7 บิตและหมายเลขฟังก์ชัน 4 บิต (สำหรับอุปกรณ์มัลติฟังก์ชัน) และสั่งให้อุปกรณ์ส่งแพ็กเก็ต DATAx หรือรับแพ็กเก็ต DATAx ต่อไปนี้ตามลำดับ

โทเค็น IN คาดหวังการตอบสนองจากอุปกรณ์ การตอบสนองอาจเป็นการตอบสนอง NAK หรือ STALL หรือเฟรม DATAx ในกรณีหลัง โฮสต์จะออกการจับมือ ACK ถ้าเหมาะสม

โทเค็น OUT จะตามด้วยเฟรม DATAx ทันที อุปกรณ์ตอบสนองด้วย ACK, NAK หรือ STALL ตามความเหมาะสม

SETUP ทำงานเหมือนกับโทเค็น OUT แต่ใช้สำหรับการตั้งค่าอุปกรณ์เบื้องต้น

ทุก ๆ มิลลิวินาที (บิตความเร็วเต็ม 12,000 ครั้ง) โฮสต์ USB จะส่งโทเค็น SOF พิเศษ (จุดเริ่มต้นของเฟรม) ซึ่งมีหมายเลขเฟรมที่เพิ่มขึ้น 11 บิตแทนที่ที่อยู่อุปกรณ์ ใช้เพื่อซิงโครไนซ์กระแสข้อมูลแบบไม่ต่อเนื่อง อุปกรณ์ USB 2.0 ความเร็วสูงได้รับโทเค็น SOF ซ้ำเพิ่มเติม 7 โทเค็นต่อเฟรม โดยแต่ละโทเค็นจะมี "ไมโครเฟรม" ขนาด 125 µs

USB 2.0 เพิ่มโทเค็น PING ซึ่งจะถามอุปกรณ์ว่าพร้อมรับคู่แพ็กเก็ต OUT/DATA หรือไม่ อุปกรณ์ตอบสนองด้วย ACK, NAK หรือ STALL ตามความเหมาะสม วิธีนี้จะหลีกเลี่ยงความจำเป็นในการส่งแพ็กเก็ต DATA หากอุปกรณ์รู้ว่าจะตอบสนองด้วย NAK

USB 2.0 ยังเพิ่มโทเค็น SPLIT ที่ใหญ่กว่าด้วยหมายเลขฮับ 7 บิต, แฟล็กควบคุม 12 บิต และ CRC 5 บิต ใช้ในการแยกธุรกรรม แทนที่จะเชื่อมต่อบัส USB ความเร็วสูงที่ส่งข้อมูลไปยังอุปกรณ์ USB ที่ช้ากว่า ฮับที่มีความสามารถความเร็วสูงที่ใกล้ที่สุดจะได้รับโทเค็น SPLIT ตามด้วยแพ็กเก็ต USB หนึ่งหรือสองแพ็คเก็ตที่ความเร็วสูง ทำการถ่ายโอนข้อมูลที่ความเร็วเต็มหรือความเร็วต่ำ และให้การตอบสนองที่ความเร็วสูงเมื่อได้รับแจ้งจากโทเค็น SPLIT ตัวที่สอง รายละเอียดมีความซับซ้อน ดูข้อกำหนด USB


แพ็กเก็ตข้อมูล
มีแพ็กเก็ตข้อมูลพื้นฐานสองชุดคือ DATA0 และ DATA1 ทั้งสองประกอบด้วยช่อง DATAx PID, เพย์โหลดข้อมูล 0–1,023 ไบต์ (สูงสุด 1,024 ในความเร็วสูง สูงสุด 8 ที่ความเร็วต่ำ) และ CRC 16 บิต โดยจะต้องนำหน้าด้วยโทเค็นที่อยู่เสมอ และโดยปกติแล้วตามด้วยโทเค็นการจับมือจากตัวรับกลับไปยังตัวส่งสัญญาณ แพ็กเก็ตทั้งสองประเภทจะมีหมายเลขลำดับ 1 บิตที่จำเป็นสำหรับ ARQ แบบหยุดและรอ หากโฮสต์ USB ไม่ได้รับ การตอบสนอง (เช่น ACK) สำหรับข้อมูลที่ถูกส่ง ไม่ทราบว่าได้รับข้อมูลหรือไม่ ข้อมูลอาจสูญหายระหว่างการขนส่ง หรืออาจได้รับแล้ว แต่การตอบสนองของการจับมือหายไป

เพื่อแก้ไขปัญหานี้ อุปกรณ์จะติดตามประเภทของแพ็กเก็ต DATAx ที่ยอมรับครั้งล่าสุด หากได้รับแพ็กเก็ต DATAx อื่นที่เป็นประเภทเดียวกัน ระบบจะยอมรับแต่จะละเว้นว่าแพ็กเก็ตที่ซ้ำกัน จริงๆ แล้วจะได้รับเฉพาะแพ็กเก็ต DATAx ประเภทตรงกันข้ามเท่านั้น

เมื่ออุปกรณ์ถูกรีเซ็ตด้วยแพ็กเก็ต SETUP อุปกรณ์นั้นคาดว่าจะมีแพ็กเก็ต DATA0 ถัดไป

USB 2.0 เพิ่มประเภทแพ็คเก็ต DATA2 และ MDATA เช่นกัน ใช้เฉพาะกับอุปกรณ์ความเร็วสูงที่ทำการถ่ายโอนแบบไอโซโครนัสแบนด์วิธสูง ซึ่งจำเป็นต้องถ่ายโอนมากกว่า 1,024 ไบต์ต่อ 125 µs "ไมโครเฟรม" (8192 kB/s)


ก่อน "แพ็คเก็ต"
รองรับอุปกรณ์ความเร็วต่ำด้วยค่า PID พิเศษ PRE นี่เป็นจุดเริ่มต้นของแพ็กเก็ตความเร็วต่ำ และถูกใช้โดยฮับซึ่งโดยปกติจะไม่ส่งแพ็กเก็ตความเร็วเต็มไปยังอุปกรณ์ความเร็วต่ำ เนื่องจากไบต์ PID ทั้งหมดมี 0 บิตสี่บิต จึงปล่อยให้บัสอยู่ในสถานะ K ความเร็วเต็ม ซึ่งเหมือนกับสถานะ J ความเร็วต่ำ ตามด้วยการหยุดชั่วขณะในระหว่างที่ฮับเปิดใช้งานเอาต์พุตความเร็วต่ำ โดยอยู่ในสถานะ J แล้ว จากนั้นแพ็กเก็ตความเร็วต่ำจะตามมา เริ่มต้นด้วยลำดับการซิงค์และไบต์ PID และสิ้นสุดด้วยช่วงเวลาสั้นๆ ที่ SE0 อุปกรณ์ความเร็วเต็มอื่นที่ไม่ใช่ฮับสามารถละเว้นแพ็กเก็ต PRE และเนื้อหาความเร็วต่ำได้ จนกระทั่ง SE0 สุดท้ายบ่งชี้ว่ามีแพ็กเก็ตใหม่ตามมา