เนื่องจากการสื่อสารแบบซีเรียลแบบอะซิงโครนัสแพร่กระจายอย่างกว้างขวางในอุปกรณ์อิเล็กทรอนิกส์ทุกวันนี้ฉันเชื่อว่าพวกเราหลายคนได้พบคำถามเช่นนี้เป็นครั้งคราว พิจารณาอุปกรณ์อิเล็กทรอนิกส์D
และคอมพิวเตอร์PC
ที่เชื่อมต่อกับสายอนุกรม (RS-232 หรือคล้ายกัน) และจำเป็นต้องมีการแลกเปลี่ยนข้อมูลอย่างต่อเนื่อง Ie PC
กำลังส่งเฟรมคำสั่งแต่ละเฟรมX ms
และD
กำลังตอบกลับด้วยรายงานสถานะ / เฟรม telemetry แต่ละรายการY ms
(สามารถส่งรายงานเป็นการตอบสนองต่อคำขอหรือเป็นอิสระ - ไม่สำคัญเลยที่นี่) กรอบการสื่อสารสามารถมีข้อมูลไบนารีใด ๆ โดยพลการ สมมติว่าเฟรมการสื่อสารเป็นแพ็กเก็ตที่มีความยาวคงที่
ปัญหา:
เนื่องจากโปรโตคอลมีความต่อเนื่องด้านการรับอาจหลุดการซิงโครไนซ์หรือเพียงแค่ "เข้าร่วม" ที่อยู่ตรงกลางของเฟรมที่ส่งต่อเนื่องดังนั้นมันจะไม่รู้ว่าจุดเริ่มต้นของเฟรม (SOF) นั้นอยู่ที่ไหน ข้อมูลมีความหมายที่แตกต่างกันไปตามตำแหน่งของ SOF ข้อมูลที่ได้รับจะเสียหายและอาจเกิดขึ้นตลอดไป
ทางออกที่ต้องการ
รูปแบบการลด / ประสานที่เชื่อถือได้ในการตรวจจับ SOF ด้วยเวลาการกู้คืนสั้น ๆ (เช่นไม่ควรใช้เวลามากกว่านั้นพูด 1 เฟรมเพื่อซิงโครไนซ์อีกครั้ง)
เทคนิคที่มีอยู่ฉันรู้ (และใช้บางส่วน) ของ:
1) ส่วนหัว / การตรวจสอบ - SOF เป็นค่าไบต์ที่กำหนดไว้ล่วงหน้า ตรวจสอบผลรวมในตอนท้ายของเฟรม
- จุดเด่น:เรียบง่าย
- ข้อด้อย:ไม่น่าเชื่อถือ เวลาฟื้นตัวที่ไม่รู้จัก
2) การบรรจุไบต์:
- ข้อดี:การกู้คืนที่รวดเร็วและเชื่อถือได้สามารถใช้กับฮาร์ดแวร์ใด ๆ
- ข้อด้อย:ไม่เหมาะสำหรับการสื่อสารด้วยเฟรมขนาดคงที่
3) การทำเครื่องหมายบิตที่ 9 - เพิ่มแต่ละไบต์ด้วยบิตเพิ่มเติมในขณะที่ SOF ที่ทำเครื่องหมายด้วย1
และไบต์ข้อมูลจะถูกทำเครื่องหมายด้วย0
:
- จุดเด่น:การกู้คืนที่รวดเร็วและเชื่อถือได้
- ข้อด้อย:ต้องการการสนับสนุนฮาร์ดแวร์
PC
ฮาร์ดแวร์และซอฟต์แวร์ส่วนใหญ่ไม่ได้รับการสนับสนุนโดยตรง
4) การทำเครื่องหมายบิตที่ 8 - ชนิดของการจำลองด้านบนในขณะที่ใช้บิตที่ 8 แทน 9 ซึ่งจะเหลือเพียง 7 บิตสำหรับแต่ละคำของข้อมูล
- ข้อดี:การกู้คืนที่รวดเร็วและเชื่อถือได้สามารถใช้กับฮาร์ดแวร์ใด ๆ
- ข้อด้อย:ต้องใช้รูปแบบการเข้ารหัส / ถอดรหัสจาก / ถึงการนำเสนอ 8 บิตแบบเดิมไปยัง / จากการเป็นตัวแทน 7 บิต ค่อนข้างสิ้นเปลือง
5) การหมดเวลาใช้งาน - สมมติว่า SOF เป็นไบต์แรกที่มาหลังจากเวลาว่างที่กำหนด
- ข้อดี:ไม่มีข้อมูลค่าใช้จ่ายง่าย ๆ
- ข้อด้อย:ไม่น่าเชื่อถือ จะไม่ทำงานได้ดีกับระบบจับเวลาที่ไม่ดีเช่น Windows PC ค่าโสหุ้ยการรับส่งข้อมูลที่อาจเกิดขึ้น
คำถาม: มีเทคนิค / วิธีแก้ไขอื่น ๆ ที่เป็นไปได้เพื่อแก้ไขปัญหาคืออะไร? คุณสามารถชี้ไปที่ข้อเสียในรายการด้านบนซึ่งสามารถใช้งานได้อย่างง่ายดายจึงลบออกได้หรือไม่ คุณ (หรือคุณ) ออกแบบระบบของคุณอย่างไร