บอร์ดระยะสั้นเพื่อการสื่อสารของบอร์ด


24

MCU ของฉันใช้ SPI บัสซึ่งมีอุปกรณ์ประมาณ 4 ตัว ฉันต้องการต่อรถบัสคันนี้ให้ออกนอกบอร์ดด้วยเช่นมี PCB บางอันเชื่อมต่อกับบอร์ด "หลัก" และขยายการทำงาน ระยะทาง "pad to pad" จะเป็น:

ความยาวร่องรอยของกระดานหลัก + ความยาวสายเคเบิล + ความยาวร่องรอยบนกระดานขยาย

3 "+ 6" + 3 "= ประมาณ 12"

จากประสบการณ์ของฉันแม้กระทั่งสัญญาณ 1 MHz ที่มีเวลาเพิ่มขึ้นประมาณ 7 ns ระยะทางผ่านสายเคเบิลริบบิ้นนี้มีการแก้ไขเกิน 1 V (แต่ไม่มีเสียงเรียกเข้ามากเกินไป) บอร์ดจะได้รับพลังงานจากแหล่งจ่ายไฟเดียวกัน

ป้อนคำอธิบายรูปภาพที่นี่

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

ฉันต้องการให้ระบบทำงานที่ 4 MHz แต่ 2 MHz ก็เป็นที่ยอมรับเช่นกัน ค่าสูงสุด จำนวนบอร์ดที่ฉันต้องการเชื่อมต่อจะมีประมาณ 4 ตัวและจะขยายบัส SPI ให้มีอุปกรณ์ประมาณ 12 ตัว ฉันไม่คิดว่ามันจะยากเกินไปที่จะจัดการผ่านรหัสเพราะฉันมีบางสิ่งบางอย่างที่ทำงานเช่นนี้แล้ว การมีสายเลือกทาสเพิ่มเติมไม่ใช่ปัญหาเช่นกัน

อย่างไรก็ตามข้อกังวลของฉันคือวิธีการส่งข้อมูล SPI จากบอร์ดหนึ่งไปยังอีกบอร์ดหนึ่ง ฉันควรส่ง SPI แบบตรงหรือแปลงเป็น LVDS ที่ปลายด้านหนึ่งแล้วแปลงกลับเป็น SPI ที่ปลายอีกด้านหนึ่งหรือไม่


1
เวลาที่เพิ่มขึ้นของคุณคืออะไร?
Kortuk

@Kortuk ลืมไปโดยสิ้นเชิงในรายการที่ขอโทษ อัปเดตคำถาม
Saad

7nS เวลาเพิ่มขึ้นนั่นคือการกรีดร้องอย่างรวดเร็ว
Kortuk

ขออภัยสำหรับคำถามที่ไม่เกี่ยวข้องสองข้อ ออสซิลโลสโคปที่คุณใช้คืออะไร 2. ทำไมวงแหวนถึงสำคัญมาก?
richieqianle

คำตอบ:


15

Rule-of-thumb กล่าวว่าคุณต้องคำนวณผลกระทบของสายส่งในกรณีที่ความยาวการเชื่อมต่อของคุณนานกว่า 1 ใน 10 ของความยาวคลื่นของสัญญาณ

ป้อนคำอธิบายรูปภาพที่นี่

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

ความยาวสาย 12 "(30 ซม.) คือ 1/10 ของความยาวคลื่น 3 มม. หรือ 100MHz. 1MHz และ 4MHz ไม่ควรมีปัญหามากมายที่นี่การยกเลิกสายอย่าง Wouter กล่าวอาจเป็นมาตรการแรก อินพุตอาจเป็นอิมพีแดนซ์สูงและนั่นก็ไม่ใช่การจับคู่ที่ดีเนื่องจากคุณมีสามส่วนที่แตกต่างกันในการเชื่อมต่อของคุณ (PCB, wire, PCB) การค้นหาอิมพิแดนซ์ลักษณะจะยาก (มันจะต่างกันสำหรับ PCB และลวด ดังนั้นที่ความถี่สูงมากคุณจะได้รับการสะท้อนกลับที่การเชื่อมต่อของสายเคเบิล) ด้วยความยาวสั้นและความถี่ต่ำค่าของตัวต้านทานการยุติของคุณจึงไม่สำคัญ 100อาจต่ำเกินไปสำหรับไมโครคอนโทรลเลอร์ ไม่จ่าย 33mA (หรือ 50mA ที่ 5V) ฉันจะลอง 1kโอห์มΩΩ ตัวต้านทานเริ่มต้นด้วยและดูว่ามันทำให้เราห่างไกลแค่ไหน

แก้ไข (ปรับปรุงคำถามอีกครั้ง)
เวลาที่เพิ่มขึ้นน่าจะเป็น 7ns เร็วเหมือนที่ Kortuk พูดว่าหมายความว่าคุณมีคลื่นความถี่อย่างน้อย 400MHz และเสียงประสานเหล่านั้นจะได้รับผลกระทบจากสายส่งแน่นอนแม้ว่านาฬิกาของคุณจะมีเพียง 1MHz พยายามกรองออกแบนด์วิดท์ 20MHz (80MHz สำหรับนาฬิกา 4MHz) ให้เวลามากกว่าการเพิ่มขึ้นเพียงพอ นี่คือคลื่นสี่เหลี่ยม 1MHz ที่กรองด้วยกำแพงอิฐ LPF ที่ 20MHz:

ป้อนคำอธิบายรูปภาพที่นี่

การวางตัวต้านทานแบบอนุกรมจะกลายเป็นลำดับแรกของ LPF พร้อมกับความจุของเส้น ถ้าเราประมาณว่าที่ 50pF

R=12π100MHz50pF=32Ω

ให้คุณตัดความถี่ของ 100MHz ตัวต้านทานซีรีส์33ควรลดเวลาการเพิ่มของคุณ แต่ปล่อยให้มากพอที่จะมีสัญญาณดีที่ 4MHzΩ


2
ความถี่ 1MHz นั้นไม่เกี่ยวข้อง มันเป็นเวลาที่เพิ่มขึ้นที่สำคัญ
Rocketmagnet

@stevenvh พยายามเพิ่มตัวต้านทาน 1K ลงกราวด์ที่ปลายทาง มันช่วยด้วยเดือย แต่ก็ทำให้ระดับสัญญาณลดลงเล็กน้อย เป็นเรื่องปกติหรือไม่ เมื่อฉันพูดระดับที่สัญญาณทรุดตัวลง ก็ลอง 500 โอห์มเอฟเฟกต์เดียวกัน 220 โอห์ม แต่เด่นชัดกว่านี้
Saad

@ Saad - เท่าไหร่บิต? 3.3 โวลต์ใน 1k มีค่าเพียง 3mA คนขับควรจะสามารถจ่ายได้อย่างสมบูรณ์แบบ มันอาจจะมีความต้านทานภายใน แต่ก็มีไม่กี่สิบโอห์มดังนั้นระดับควรลดลงเพียง 2 หรือ 3%
stevenvh

@stevenvh ฉันลืมไปว่าตัวต้านทานแบบอนุกรมอยู่บนเส้นดังนั้นเห็นได้ชัดว่าฉันจะลดแรงดันไฟฟ้าลง โง่ฉัน! อย่างไรก็ตามตัวต้านทาน 180 โอห์มก็ไม่ได้ช่วยอะไรมาก มันนำไปสู่การโอเวอร์โหลดเป็น 4.5V ฉันเดาว่าฉันจะต้องมีการต่อต้านที่ต่ำกว่ามาก แต่แล้วฉันต้องกังวลกับการเสมอกัน
Saad

นอกจากนี้ฉันควรพิจารณาการเลิกใช้งานหรือไม่ การใช้ความต้านทานต่ำจะเพิ่มความต้องการพลังงานในบอร์ดทั้งหมดและเนื่องจากบัสทำงานตลอดเวลาจึงเพิ่มการใช้พลังงาน การใช้ไดโอด Schottky เป็นที่หนีบทำงานได้ดีหรือไม่?
Saad

6

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


ฉันได้ลองวิธีนี้แล้วแลง ฉันใช้ตัวต้านทาน 100 โอห์มและลดแรงขับเกิน 500 mV และลดลงเหลือ 4.3 V จาก 4.7 V ซึ่งยังคงเป็นโวลต์ที่สูงกว่า 3.3 V! เวลาที่เพิ่มขึ้นนั้น 12 ns เมื่อเทียบกับ 7 เริ่มต้น
Saad

ดูเหมือนว่าฉันกำลังคำนวณตัวต้านทานของฉันในขณะที่คุณโพสต์คำตอบของคุณแลง ขออภัยเกี่ยวกับสิ่งนั้น
stevenvh

@OlinLathrop ฉันเพิ่มความต้านทานแบบเป็น 330 โอห์มและมันนำมาซึ่งการโอเวอร์โหลดเป็น 3.7V ฉันมีความสุขมากกับสิ่งนี้ เวลาที่เพิ่มขึ้นคือ 10 ns ฉันควรจะติดกับสิ่งนี้หรือใส่ตัวต้านทานการเลิกจ้างในการปรับปรุงบอร์ดครั้งต่อไปหรือไม่? ฉันถามเพราะคุณแนะนำไม่ให้เกิน 120 โอห์ม
Saad

@Saad: ฉันเป็นห่วงเกี่ยวกับผลกระทบของการโหลดอื่น ๆ ในบรรทัดและมันจะไวต่อเสียงรบกวน หากสัญญาณสะอาดและไม่มีโหลด DC (เช่นอินพุต CMOS ความต้านทานสูง) ในบรรทัดจากนั้นไปข้างหน้าและใช้ 300 โอห์ม
Olin Lathrop

4

AFAIK การโอเวอร์โหลดสามารถยกเลิกได้ด้วยการยกเลิกโพรบเปอร์หากไดรเวอร์ของคุณสามารถขับโหลดได้ ไม่เช่นนั้นไดรเวอร์ / ตัวรับสัญญาณบางคู่เช่น LVDS หรือแม้แต่ RS485 ก็จะทำเช่นนั้นอย่างแน่นอน


+1: เรามักใช้ LVDS เพื่อดำเนินการส่งสัญญาณ SPI
Jason S

1

ฉันเคยมีปัญหาร้ายแรงในอดีตที่ใช้ SPI ผ่านสายเคเบิลริบบิ้นแม้ว่าจะนานกว่าที่คุณอธิบาย ภูมิคุ้มกันเสียงรบกวนกลายเป็นปัญหาจริงและคำสั่งที่เสียหายก็จบลงที่อุปกรณ์ต่อพ่วงของฉัน มันเพียงพอที่จะล้มเหลวในการทดสอบภูมิคุ้มกันสัญญาณรบกวน CE หากคุณประสบปัญหาในเรื่องนี้ในภายหลังฉันขอแนะนำให้วาง MCU แยกในแต่ละบอร์ดและเชื่อมต่อพวกเขาผ่านทาง CANbus

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