जैसा कि आजकल एसिंक्रोनस सीरियल संचार व्यापक रूप से इलेक्ट्रॉनिक उपकरणों के बीच फैला हुआ है, मेरा मानना है कि हम में से कई ने समय-समय पर इस तरह के सवाल का सामना किया है। एक इलेक्ट्रॉनिक डिवाइस D
और PC
सीरियल लाइन (RS-232 या इसी तरह) से जुड़े कंप्यूटर पर विचार करें और लगातार सूचनाओं का आदान-प्रदान करें । यानी PC
प्रत्येक एक कमांड फ्रेम भेज रहा है X ms
, और D
स्टेटस रिपोर्ट / टेलीमेट्री फ्रेम प्रत्येक के साथ उत्तर दे रहा है Y ms
(रिपोर्ट को अनुरोध या स्वतंत्र रूप से प्रतिक्रिया के रूप में भेजा जा सकता है - वास्तव में यहां कोई फर्क नहीं पड़ता)। संचार फ़्रेम में कोई भी मनमाना बाइनरी डेटा हो सकता है । मान लें कि संचार फ़्रेम निश्चित लंबाई के पैकेट हैं।
समस्या:
जैसा कि प्रोटोकॉल जारी है, प्राप्त करने वाला पक्ष सिंक्रनाइज़ेशन को ढीला कर सकता है या चल रहे भेजे गए फ्रेम के बीच में "जुड़ना" कर सकता है, इसलिए यह सिर्फ यह नहीं जान पाएगा कि फ्रेम (SOF) की शुरुआत कहां है। डेटा का एसओएफ के लिए अपनी स्थिति के आधार पर अलग-अलग अर्थ है, प्राप्त डेटा दूषित हो जाएगा, संभवतः हमेशा के लिए।
आवश्यक समाधान
विश्वसनीय परिसीमन / तुल्यकालन योजना लघु वसूली समय के साथ SOF का पता लगाने के लिए (यानी इसे अधिक से अधिक नहीं लेना चाहिए, 1 फ्रेम को resynchronize कहना)।
मौजूदा तकनीकों से मैं अवगत हूँ (और कुछ का उपयोग करके):
1) हैडर / चेकसम - पूर्वनिर्धारित बाइट मान के रूप में एसओएफ। फ्रेम के अंत में चेकसम।
- पेशेवरों: सरल।
- विपक्ष: विश्वसनीय नहीं है। अज्ञात वसूली का समय।
2) बाइट स्टफिंग:
- पेशेवरों: विश्वसनीय, तेजी से वसूली, किसी भी हार्डवेयर के साथ इस्तेमाल किया जा सकता है
- विपक्ष: तय-आकार के फ्रेम-आधारित संचार के लिए उपयुक्त नहीं है
3) 9 वीं बिट मार्किंग - अतिरिक्त बिट के साथ प्रत्येक बाइट को प्रीपेन्ड करें, जबकि एसओएफ के साथ चिह्नित 1
और डेटा बाइट्स के साथ चिह्नित हैं 0
:
- पेशेवरों: विश्वसनीय, तेजी से वसूली
- विपक्ष: हार्डवेयर समर्थन की आवश्यकता है। सीधे
PC
हार्डवेयर और सॉफ्टवेयर के अधिकांश द्वारा समर्थित नहीं है ।
4) 8 वीं बिट अंकन - उपरोक्त प्रकार का अनुकरण, जबकि 9 के बजाय 8 बिट का उपयोग करते हुए, जो प्रत्येक डेटा शब्द के लिए केवल 7 बिट छोड़ रहा है।
- पेशेवरों: विश्वसनीय, तेजी से वसूली, किसी भी हार्डवेयर के साथ इस्तेमाल किया जा सकता है।
- विपक्ष: पारंपरिक 8-बिट प्रतिनिधित्व / से / 7-बिट प्रतिनिधित्व के लिए / से एन्कोडिंग / डिकोडिंग योजना की आवश्यकता है। कुछ हद तक बेकार।
5) टाइमआउट आधारित - कुछ परिभाषित निष्क्रिय समय के बाद आने वाले पहले बाइट के रूप में एसओएफ मान लें।
- पेशेवरों: कोई डेटा ओवरहेड, सरल नहीं।
- विपक्ष: विश्वसनीय नहीं है। विंडोज पीसी जैसे खराब टाइमिंग सिस्टम के साथ अच्छा काम नहीं करेगा। संभावित थ्रूपुट ओवरहेड।
प्रश्न: समस्या का समाधान करने के लिए अन्य संभावित तकनीक / समाधान क्या मौजूद हैं? क्या आप उपर्युक्त सूची में विपक्ष की ओर इशारा कर सकते हैं, जो आसानी से चारों ओर काम कर सकता है, इस प्रकार उन्हें हटा सकता है? कैसे आप (या आप) अपने सिस्टम प्रोटोकॉल को डिजाइन करेंगे?