ทำความเข้าใจเกี่ยวกับอัตราการส่งข้อมูลมากกว่าลวดทองแดง


11

ฉันค้นคว้าวิธีที่แตกต่างกันในการเชื่อมต่อเซ็นเซอร์กับ Arduino และ i2c น่าจะเป็นวิธียอดนิยม ฉันอ่านว่ามันน่าเชื่อถือในระยะทางสั้น ๆ (อย่างน้อยไม่กี่เมตร) ด้วยอัตราข้อมูล 400 หรือ 100kbps ฉันเข้าใจยากว่าทำไมขีด จำกัด ของโปรโตคอลนี้จึงต่ำเมื่อเทียบกับการส่งข้อมูลอื่น ๆ ผ่านทองแดงเช่นกิกะบิตอีเธอร์เน็ต ฉันเคยเห็นเหตุผลเช่นความจุ, แรงดันไฟฟ้าตก, และการต้านทานที่กำหนดไว้, แต่อีเทอร์เน็ตไม่ผ่าน cat5 / 6 ที่อยู่ภายใต้ปัญหาเดียวกันทั้งหมดเหรอ? โดยพื้นฐานแล้วฉันต้องการทราบว่าทำไมการลดแรงดันไฟฟ้าลงบางเส้นลวดทองแดงจึงไม่ให้ผลลัพธ์ที่สม่ำเสมอมากขึ้น (แบนด์วิดท์ระยะทาง) เมื่อเปรียบเทียบวิธีการต่าง ๆ เหล่านี้


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

ฉันแค่ต้องการชี้ให้เห็นว่าแม้ว่า I2C ไม่ได้ตั้งใจที่จะใช้วิธีนี้ แต่แน่นอนว่าควรจะใช้งานได้นานกว่า 100 ม. (มีระยะทางสูงสุดตามทฤษฎีเท่ากับอีเธอร์เน็ต) อย่างไรก็ตามคุณจะมีการรับส่งข้อมูลที่ต่ำมากหรือกระแสการดึงของคุณจะน่าหัวเราะ
Opifex

@Opifex Ludicrous ความเร็ว!
DKNguyen

1
นี่ไม่ใช่คำตอบและบางทีฉันอาจระบุได้ชัดเจน แต่ข้อ จำกัด ใน I2C (หรือโปรโตคอลอื่น ๆ ) นั้นเป็นเพราะวัสดุลวดและโปรโตคอล ปมคำถามของคุณน่าจะเป็น "ถ้าวิธีการ X ทำให้ฉันได้รับ A มากกว่าทองแดงแล้ว Y และ Z ไม่ควรได้รับฉันด้วยหรือไม่" ซึ่งไม่เป็นความจริงโดยเนื้อแท้
dwizum

6
โดย 30ft คุณหมายถึง 328ft / 100m @ mreff555 หรือไม่ นั่นเป็นข้อมูลจำเพาะสำหรับ twisted pair ethernet, coaxial ethernet ที่เก่ากว่านั้นยาวกว่า (200m สำหรับ 10base2, 500m สำหรับ 10base5)
Mark Booth

คำตอบ:


14

ทฤษฎีบทของแชนนอนตั้งค่าขีด จำกัด สูงสุดของแบนด์วิดธ์ข้อมูลบนสายเคเบิล นี่คือข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนั้น: https://www.gaussianwaves.com/2008/04/channel-capacity/

TL; รุ่น dr: สมการ Shannon-Hartley:

  • =Bล.โอก.2(1+Sยังไม่มีข้อความ)(1)

โดยที่Bคือแบนด์วิดท์ใน Hz, Sยังไม่มีข้อความคืออัตราส่วนสัญญาณต่อเสียงรบกวน

I2C เห็นได้ชัดว่าไม่ได้อยู่ใกล้ขีด จำกัด ของแชนนอนสำหรับสายเคเบิล แต่เป็นโปรโตคอลขนาดเล็กที่มีจังหวะช้า (100/400 kbit / s) โดยตั้งใจโดยใช้บัสแบบสะสมเพื่อให้ง่ายต่อการใช้งานสำหรับเครือข่ายของอุปกรณ์ขนาดเล็กที่มี I / O ขนาดเล็กและต้องการการควบคุม การดำเนินการช้าที่ระบุโดย I2C หลีกเลี่ยงปัญหาความสมบูรณ์ของสัญญาณส่วนใหญ่

มีตัวแปร I2C ที่เร็วกว่าซึ่งใช้อัตรา 1 Mbit และ 3.2 Mbit / s สิ่งเหล่านี้ต้องการความสนใจมากขึ้นในการจัดวางและการเลิกจ้างมากกว่า I2C ปกติและแน่นอนว่ามีความเข้มงวดมากขึ้น

Gbit Ethernet นั้นใช้เชนหลายอย่างเพื่อให้ได้ปริมาณงานที่เพิ่มขึ้น:

  • การส่งสัญญาณที่แตกต่างกัน
  • หลายคู่ (4)
  • การส่งสัญญาณหลายระดับเรียกว่า PAM-5
  • Preemphasis / Deemphasis
  • Adalive Equalization

เทคนิคเหล่านี้ใช้ซิลิคอนจำนวนมากรวมถึงบล็อก ADC / DAC สัญญาณผสมขนาดใหญ่ที่รวดเร็วเพื่อพูดคุยกับสายเคเบิลและการประมวลผลสัญญาณที่ค่อนข้างหนักเพื่อจัดการมัน เพิ่มเข้าไปในซอฟต์แวร์สแต็กที่ซับซ้อนมากขึ้นเพื่อขับมัน สิ่งนี้ทำให้ Ethernet เป็นบล็อกบนชิปมากสำหรับไมโครคอนโทรลเลอร์ระดับล่าง (บางตัวเลือกที่จะใช้ PHY ภายนอกแทน) ความสมบูรณ์ของมันอยู่ในระยะที่สามารถเข้าถึง Systems-on-Chip ที่ใหญ่กว่าได้

เราเข้าใกล้ขีด จำกัด แชนนอนแค่ไหน? เพิ่มเติมได้ที่นี่: https://pdfs.semanticscholar.org/482f/5afbf88a06d192f7cb052f543625c4b66290.pdf


หืมมมมีวูดู: เน้นก่อนและไม่เน้น อีเธอร์เน็ตจึงไม่เพียงส่งพัลสแควร์หรือแม้แต่ไซน์เวฟลงมาและอธิษฐานว่ามันจะไม่บิดเบือนมากเกินไปเมื่อถึงปลายทาง มันกำลังสร้างรูปคลื่นแบบอะนาล็อกและส่งมันลงมา
DKNguyen

3
@DKNguyen วูดูจริงสำหรับอีเทอร์เน็ต 100 เมกะบิตหรือเร็วกว่านั้นอยู่ในเครื่องรับ มีการใช้อัลกอริทึมการทำให้เท่าเทียมกันแบบ Adaptive ในปัจจุบันมักจะนำมาใช้แบบดิจิทัล สัญญาณที่ได้รับฟีด ADC ตามด้วยฮาร์ดแวร์ DSP บางอย่าง (ทั้งหมดภายในอุปกรณ์ $ 0.50 PHY ของคุณ) เทคโนโลยีในโปรโตคอลความเร็วสูงที่ผ่านมามีความซับซ้อนยิ่งขึ้นอีกครั้ง
scary_jeff

ขอบคุณ @scary_jeff เกี่ยวกับ eq แบบปรับตัว การแจ้งเตือน เพิ่มเข้าไปในคำตอบของฉัน
แฮ็กทดลอง

6

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

คิดแบบนี้: อากาศเป็นสื่อ ทำไมประเภทของข้อมูลที่สามารถถ่ายทอดได้เมื่อสุนัขพูดคุยกันน้อยกว่ามนุษย์พูดคุยกันมาก? ทำไมการส่งคลื่นความดันบางส่วนผ่านอากาศไม่ให้ผลลัพธ์ที่สอดคล้องกันมากขึ้นในการสื่อสารระหว่างสัตว์ทั้งสองชนิดนี้

ปัจจัย จำกัด บางประการสำหรับ I2C (และโปรโตคอลอื่น ๆ อีกมากมาย) คือ:

  1. ไดรฟ์สะสมเปิด
  2. ไม่มีการจับคู่ความต้านทาน
  3. ไม่มีการส่งสมดุล
  4. ไม่มีการตรวจสอบข้อผิดพลาด
  5. รูปแบบการเข้ารหัสง่าย
  6. ระดับแรงดันไฟฟ้าค่อนข้างสูง (หากขั้นตอนแรงดันไฟฟ้าของคุณไม่จำเป็นต้องมีขนาดใหญ่คุณสามารถส่งได้เร็วขึ้นเพราะ dV / dT ของคุณไม่จำเป็นต้องสูงสำหรับความเร็วที่สูงขึ้น)
  7. ไม่มีความเหงา
  8. แรงดันไฟฟ้า unipolar (อีเธอร์เน็ตส่งที่ +/- 2.5V ซึ่งอาจช่วยได้)
  9. การส่งสัญญาณของทาสถูกควบคุมโดยเจ้านายดังนั้นนาฬิกาจะต้องเดินทางไปกลับเร็วกว่าสัญญาณข้อมูล

ทั้งหมดนี้เป็นสิ่งที่ดีสำหรับการทำสิ่งที่ง่าย ไม่ค่อยดีสำหรับอัตราข้อมูลสูงหรือการส่งทางไกล

อาจมีวูดูอื่น ๆ ที่เกิดขึ้นในฮาร์ดแวร์ที่ฉันไม่รู้


6

กฎง่ายๆสองสามข้อ: ไม่มีสิ่งใดมาบดบัง สายไฟทั้งหมดเป็นเสาอากาศ สายไฟทั้งหมดเป็นสายส่ง มีเสียงรบกวนอยู่เสมอ

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


5

I2C เป็น open drain busมันถูกดึงต่ำ แต่แรงดึง (อย่างน้อยสำหรับ 100kHz ปกติ, 400kHz) เป็นตัวต้านทานแบบพาสซีฟ

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

เป็นคำแนะนำในการเพิ่มขอบเขตและสังเกตว่าขอบที่ลดลงบน I2C นั้นคมชัดกว่ามากและขอบที่สูงขึ้น

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

เมื่อระยะทางเพิ่มขึ้นสิ่งอื่นจะเข้ากันได้ดีกว่า แต่บนกระดานที่มีอินเตอร์เฟสการกำหนดค่า eeprom / อุณหภูมิ / อุปกรณ์ที่เรียบง่ายมันก็ทำได้ดีพอสมควร


2

ผลลัพธ์ที่แตกต่างกันเพราะวงจรคนขับแตกต่างกันไปในแต่ละเทคโนโลยี

โดยทั่วไปแล้ว 100kHz I2C ใช้ตัวต้านทานแบบดึงขึ้นเพื่อให้สัญญาณอยู่ในระดับสูงและไดรเวอร์แบบ open-drain เพื่อให้สัญญาณอยู่ในระดับต่ำ

ตัวต้านทานแบบดึงขึ้นโดยทั่วไปจะมีหลายกิโลโอห์ม ยิ่งสายเคเบิลยาวเท่าใดก็ยิ่งมีความจุมากเท่านั้น เวลาที่ใช้เส้นในการเปลี่ยนจาก 0 เป็น 1 จะเป็นสัดส่วนกับความจุทั้งหมดในบรรทัดและค่าตัวต้านทานแบบดึงขึ้น อยู่ในช่วงประมาณ T = 2 * R * C จะถูกต้อง

ตัวอย่างเช่นหากคุณมีสายเคเบิล 10 ฟุตที่มี 20pF ต่อฟุตของความจุและคุณใช้ตัวต้านทานแบบดึงขึ้น 10K ก็จะใช้ T = 2 * 20pF / ฟุต * 10 ฟุต * 10K * 3.6K เพื่อเปลี่ยนจากต่ำไปสูง

ในกรณีนี้คุณเห็นได้ชัดว่าคุณไม่สามารถมีหนึ่งบิตต่อไปนี้เป็นศูนย์ที่น้อยกว่า 3.6us ดังนั้นอัตราการส่งของคุณจะถูก จำกัด ที่ 277kHz

ในระบบ I2C จริงข้อมูลจำเพาะของ I2C จะช่วยให้การตั้งค่าและการเก็บรักษาข้อมูลและการเปลี่ยนนาฬิกาเป็นไปอย่างต่อเนื่อง เวลาเหล่านั้นมีทั้งแบบนาโนวินาทีหรือไมโครวินาที เวลาถูกทำให้ช้ามากโดยมีวัตถุประสงค์เพื่อให้อุปกรณ์สามารถนำไปใช้อย่างถูก (เพนนี) และใช้พลังงานน้อยมาก (มิลลิวัตต์)

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

การตั้งค่าคล้ายกับ I2C สามารถทำงานได้เร็วขึ้นแน่นอนเพียงเปลี่ยน 10K pullup เป็น 100 ohms และตอนนี้เวลาที่คุณเพิ่มขึ้นเป็น 10ft ของสายเคเบิลลดลงจาก 3.6us เป็น 36ns คุณสามารถทำงานที่ความเร็วประมาณ 10MHz โดยไม่มีปัญหามากเกินไป (นอกเหนือจากข้อเท็จจริงที่ว่าชิป I2C ทั่วไปไม่สามารถพูดได้อย่างรวดเร็ว)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.