USB 2.0 หลีกเลี่ยงการชนได้อย่างไร


33

ดูที่ขาของ USB 3.0 เต้ารับฉันจะเห็นว่ามีคู่ส่งและรับแยกกัน แต่สำหรับ USB 2.0 มีคู่พิน "data" เพียงคู่เดียว USB 2.0 มั่นใจได้อย่างไรว่าอุปกรณ์ไม่ได้สื่อสารพร้อมกัน


2
คุณอาจสนใจดูสิ่งต่าง ๆ เช่น CSMA / CD ซึ่งเป็นวิธีการแก้ไขในบริบทอื่น ๆ
PlasmaHH

1
แยกส่ง / คู่รับไม่ได้แก้ข้อขัดแย้งทั้งหมด ลองนึกภาพคุณมี pendrive และโมเด็มพวกเขาทั้งคู่ต้องการส่งข้อมูลบางอย่างไปยังโฮสต์ดังนั้นพวกเขาทั้งคู่จึงเริ่มส่งสัญญาณ ที่ไหน? ในคู่เดียวกัน: โฮสต์ได้รับ ความขัดแย้งยังคงมีอยู่ นี่ไม่ใช่วิธีการทำงานของ USB แต่นี่เป็นวิธีที่ 10/100 อีเธอร์เน็ตทำงานได้ทุกทิศทางมีคู่ของตัวเอง แต่ไฟ "การชน" ที่ฮับยังคงกะพริบอยู่
Agent_L

คำตอบ:


67

USB เป็นเจ้าทาสอย่างเคร่งครัด อุปกรณ์ไม่ส่งสัญญาณยกเว้นว่าโฮสต์บอกให้ส่งสัญญาณ

แม้เรียกว่าโหมด "ขัดจังหวะ" คือการสำรวจจริง ๆ : ตัวอย่างเช่นทุกๆ 8 มิลลิวินาที (หรือน้อยกว่าถ้าคุณมีเมาส์สำหรับเล่นเกม) พีซีถามว่า "ตำแหน่งของคุณ" คืออะไรและเมาส์ตอบกลับ

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

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

Firewire (ตัวอย่าง) มีปรัชญาที่แตกต่างกันโดยสิ้นเชิงมันมีประสิทธิภาพมากขึ้นเป็น multi-master เพื่อให้อุปกรณ์สามารถพูดคุยกันได้โดยไม่ต้องขอความช่วยเหลือจาก host / master ในความเป็นจริงแล้วปรัชญาของโทเค็นนั้นมีความใกล้ชิดกับโทเค็นโทเค็นมากขึ้นและมีการถ่ายโอนแบบไอโซทรอนิกส์ที่ด้านบนมากกว่า USB อย่างไรก็ตาม "multi master" หมายถึงต้องการไมโครคอนโทรลเลอร์ที่ทรงพลังในอุปกรณ์ซึ่งใช้สแต็กซอฟต์แวร์ที่ซับซ้อน ดังนั้นจึงมีราคาแพงกว่าและ จำกัด เฉพาะผลิตภัณฑ์ราคาแพงเช่นกล้องวิดีโอและกล่องหุ้มฮาร์ดไดรฟ์ที่รวดเร็ว เมาส์ FireWire ไม่สมเหตุสมผลมันจะแพงเกินไป นั่นเป็นหนึ่งในเหตุผลที่ FireWire ล้มเหลว


3
คำอธิบายที่ดีเยี่ยมและการเปรียบเทียบที่เหมาะสมกับ FireWire (และใช่เรามาสร้างเครือข่ายการสร้างสัญญาณโทเค็นสำหรับ ... ในความเป็นจริงมีอุปกรณ์ 5 อย่างบนรถบัส)
Marcus Müller

3
นี่เป็นคำตอบที่ดี แต่ฉันคิดว่ามันจะสมบูรณ์กว่านี้ถ้าคุณพูดถึงการแจงนับ การค้นพบว่าอุปกรณ์ใดบ้างที่เชื่อมต่อกับเครือข่ายแบบไดนามิกที่ไม่มีความสามารถในการอนุญาโตตุลาการ (เช่นเครือข่ายแบบ multi-master) เป็นปัญหาที่ไม่น่ารำคาญและในหลาย ๆ ทางกำหนดว่าทำไม USB ไม่สามารถใช้โทโพโลยีบัสจริง
Jon

ขอบคุณ;) ฉันไม่ทราบรายละเอียดเต็มไปด้วยเลือดเกี่ยวกับการแจงนับจากฝั่งโฮสต์แม้ว่า แต่ IMO เหตุผลที่แท้จริงของ USB เป็นเช่นนี้คือมันถูกออกแบบมาในช่วงกลางปี ​​1990 และในเวลานั้นไมโครคอนโทรลเลอร์มีราคาแพงกว่าในปัจจุบันและวิธีการที่อุปกรณ์ราคาถูกก็คือทำให้มันโง่เท่าที่จะเป็นไปได้ เป็นไปได้. นอกจากนี้มันใช้งานได้ดีมากมันค่อนข้างดี
peufeu

5
ที่ไม่ถูกต้อง, USB มีรถบัส มันมีโทโพโลยีที่แตกต่างกัน (ดาว) ตรงข้ามกับรถบัส "เส้นตรง" ที่คุ้นเคยมากขึ้น ธุรกรรมโฮสต์ USB 2.0 (HS) ทั้งหมดจะออกอากาศในทุกส่วนของดาวดังนั้นจึงไม่แตกต่างจากบัส "เชิงเส้น" มากนัก เช่นเดียวกับรถบัสเชิงเส้นอุปกรณ์ทั้งหมดจะเห็นกิจกรรมของบัสเกือบจะในคราวเดียว ความแตกต่างเพียงอย่างเดียวคือการตอบสนองของอุปกรณ์จะไม่ปรากฏในอุปกรณ์อื่น ๆ
Ale..chenski

2
@huldottech มันเจ๋งพอสมควรถ้ามันใช้งานได้ แต่ FireWire มีความน่าเชื่อถือน้อยกว่า USB มากโดยเฉพาะอย่างยิ่งปลั๊กอิน WRT และด้วย USB คุณสามารถเชื่อมต่อไดรฟ์หลายตัวเข้ากับพอร์ตเดียวได้อย่างง่ายดายโดยใช้ฮับพิเศษ มีการแลกเปลี่ยนประสิทธิภาพ แต่ความน่าเชื่อถือและความสะดวกสบายสำคัญกว่า
leftaroundabout

18

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

หลังจากเชื่อมต่ออุปกรณ์ USB 2.0 แล้วโฮสต์จะระบุโดยการกำหนดที่อยู่เฉพาะให้กับแต่ละอุปกรณ์

ทุกการทำธุรกรรมบนบัสนั้นเริ่มต้นโดยโฮสต์ USB

ส่วนหัวของทุกธุรกรรม USB มีที่อยู่อุปกรณ์เฉพาะ แม้ว่าการทำธุรกรรมจะถูกถ่ายทอดผ่านทรี USB ทั้งหมด (บนอินสแตนซ์โฮสต์คอนโทรลเลอร์เฉพาะ) เฉพาะอุปกรณ์ที่มีที่อยู่ที่ตรงกันเท่านั้นที่จะตอบสนองต่อธุรกรรมและรับข้อมูลหรือตอบกลับด้วยข้อมูล

ลิงก์ "พันธมิตร" จะส่งการตอบรับไปในทิศทางที่ได้รับข้อมูลสำเร็จ การทำธุรกรรมทั้งหมดเป็นไปตามโปรโตคอลที่จัดตั้งขึ้นพร้อมลำดับลำดับของโทเค็นการหมดเวลาและรหัสการแก้ไขข้อผิดพลาดเพื่อให้แน่ใจว่าการทำธุรกรรมนั้นสมบูรณ์

อุปกรณ์อื่น ๆ ทั้งหมดเป็นเพียงการฟังและเพิกเฉยต่อการรับส่งข้อมูลที่ไม่ได้นำไปยังอุปกรณ์เหล่านั้น

เกี่ยวกับมันมันเป็นอินเตอร์เฟซ "half-duplex"


1
ไม่คุ้นเคยกับโปรโตคอล USB ดังนั้นโฮสต์รู้ได้อย่างไรว่าอุปกรณ์ตอบถูกต้อง?
Derek 朕會功夫

@ ดีเร็ก朕會功夫โฮสต์รู้สิ่งนี้เพราะนี่เป็นอุปกรณ์เดียวที่ควรจะตอบสนองไม่มีใครจะตอบกลับ การทำธุรกรรม USB 2.0 เป็น "atomic" ไม่มีการตอบกลับที่เลื่อนเวลาไป ไม่มีการตอบสนองทันเวลา (การทำธุรกรรมที่ไม่สมบูรณ์) จะส่งผลให้ลองอีกครั้ง
Ale..chenski

ในการติดตามคำถามของฉันคือเนื่องจากทุกอุปกรณ์เชื่อมต่อกับรถบัสเดียวกันสิ่งที่ทำให้ฉันไม่สามารถทำเป็นอุปกรณ์อื่นที่เชื่อมต่อได้
Derek 朕會功夫

7
@Derek 朕會功夫: ไม่มีอะไร นั่นเป็นเหตุผลที่คุณไม่ต้องเสียบกุญแจ USB แบบสุ่มที่คุณได้รับจากตลาดนอกถนน คุณไม่สามารถไว้วางใจพวกเขา
การแข่งขัน Lightness กับโมนิก้า

7
@Derek 朕會功夫เจตนาที่เป็นอันตรายกันอุปกรณ์ USB จะต้องยอมรับที่อยู่ในระหว่างการแจงนับและอุปกรณ์อื่นจะมีที่อยู่ที่แตกต่างกันทั้งหมดควบคุมโดยโฮสต์ สิ่งนี้ไม่แตกต่างจากเมื่อโมดูลหน่วยความจำหลายตัวเชื่อมต่อกับบัสแบบขนาน แต่แต่ละโมดูลตอบสนองต่อการเลือกตัวถอดรหัส / ชิปเท่านั้น และถ้าอุปกรณ์ USB สองเครื่องตอบสนองโดยไม่ตั้งใจ (เช่นโฮสต์เมาพร้อมการกำหนดที่อยู่) จะมีการชนกันของข้อมูลบนบัสและไม่มีแพ็คเก็ตที่จะส่งผ่าน CRC (ซึ่งต่ออยู่กับโทเค็น USB ทุกอัน) และพอร์ตที่เกี่ยวข้องจะ ถูกปิดใช้งานเนื่องจากข้อผิดพลาดใหญ่
Ale..chenski
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.