सॉफ्टवेयर में वाहक चरण वसूली कैसे करें?


13

सॉफ्टवेयर में BPSK सिग्नल के चरण को पुनर्प्राप्त करने के लिए क्या विकल्प हैं? एकमात्र संसाधन जो मुझे ऑनलाइन मिलेंगे उनमें सर्किट आरेख हैं - ऐसा लगता है कि एनालॉग सर्किट से अपरिचित लोगों को यह समझाने के लिए कोई भी तैयार नहीं है।

मैं इस बात की कोई व्याख्या करना चाहता हूं कि वाहक पुनर्प्राप्ति सिद्धांत में कैसे काम करता है, और स्यूडोकोड या कोड उदाहरण भी पसंद करेगा।


हम आम तौर पर कोड उदाहरण प्रदान नहीं करते हैं- विशेष रूप से एक बीपीएसके डिमोडुलेटर के रूप में जटिल कुछ के लिए।
जिम क्ले

1
जैसा कि JimClay ने संकेत दिया है, आपको डीमोडुलेटर को लागू करने के लिए पूर्ण स्रोत कोड प्रदान करने के लिए पर्याप्त समय के साथ किसी को प्राप्त करने की संभावना नहीं है। हालांकि, यदि आप अवधारणाओं को समझते हैं, तो एक कार्यान्वयन बनाने का यांत्रिकी आसान होना चाहिए। सामान्य तौर पर, एक सॉफ्टवेयर रिसीवर के पास संबंधित हार्डवेयर तकनीक (जैसे कि फीडफॉर्वर्ड नॉनलेरियारिटी-आधारित सिंक्रनाइज़र या फीडबैक PLL- बेस्ड अप्रोच) के समान संरचना होती है। क्या आपके पास एक विशिष्ट टोपोलॉजी है जिसे आप लक्षित करने की योजना बना रहे थे?
जेसन आर

आपकी टिप्पणियों @JimClay और जेसन के लिए धन्यवाद - मेरा मतलब काम स्रोत कोड के लिए पूछना नहीं था। मैंने प्रश्न को और अधिक विशिष्ट होने के लिए अपडेट किया है: मैं बस किसी भी स्पष्टीकरण की तलाश कर रहा हूं जो एनालॉग सर्किट और सर्किट आरेखों की समझ को निर्धारित नहीं करता है।
कीथ

जवाबों:


25

चरण-शिफ्ट कीड सिग्नल को डीमोड्यूलेट करने के लिए, जिनमें से बीपीएसके सबसे सरल है, आपको वाहक आवृत्ति, चरण और प्रतीक समय को पुनर्प्राप्त करना होगा।

बर्स्टी सिग्नल कुछ संकेत फटे हैं और एक ज्ञात डेटा अनुक्रम प्रदान करते हैं जिसे एक प्रस्तावना या मध्य- अम्बल कहा जाता है (यह इस बात पर निर्भर करता है कि यह फटने की शुरुआत या मध्य में दिखाई देता है)। डेमोडुलेटर एक मिलान किए गए फ़िल्टर का उपयोग कर सकते हैं जो ज्ञात डेटा अनुक्रम के लिए "दिखता है" और इसका उपयोग फट की आवृत्ति, चरण और प्रतीक समय का पता लगाने के लिए करता है। वे हर फट के लिए ऐसा करते हैं और "बहाव" के साथ परेशान करने की आवश्यकता नहीं होती है (क्रमिक दूरी जो डिमोडुलेटर के बीच बनाता है और प्राप्त सिग्नल छोटी त्रुटियों के रूप में जमा होता है) क्योंकि फट आमतौर पर काफी कम होते हैं जो बहाव नहीं होता है मुसीबत।

निरंतर संकेत तब निरंतर संकेत होते हैं। वे कई तरह से कठिन संकेतों से उबरने के लिए कठिन हैं क्योंकि आपके पास आमतौर पर सिग्नल के साथ लॉक करने में सहायता करने के लिए एक ज्ञात डेटा अनुक्रम नहीं है, और सिग्नल पर लॉक होने के बाद भी आपको बहाव के बारे में चिंता करने की ज़रूरत नहीं है। मैं एक उच्च स्तर पर वर्णन करने की कोशिश करूँगा जो मुख्य चरण हैं जो आमतौर पर निरंतर संकेतों को पुनर्प्राप्त करने के लिए उपयोग किए जाते हैं।

कैरियर रिकवरी

आमतौर पर आप जानते हैं कि जिस सिग्नल की आप देख रहे हैं वह कितनी आवृत्ति पर होगा, या कम से कम क्या आवृत्तियों के सेट पर हो सकता है। इस ज्ञान के साथ, हालांकि, आपको आमतौर पर आवृत्ति ऑफसेट को सही करने में सक्षम होना चाहिए क्योंकि कोई भी दो ट्रांसमीटर एक ही आवृत्ति पर संचारित नहीं होते हैं। हमेशा कुछ न कुछ त्रुटि होती है। सामान्य विधि, फिर, उस आवृत्ति को मिलाना है जो आपको लगता है कि संकेत पर होगा, और फिर अवशिष्ट आवृत्ति त्रुटि को ठीक करेगा। यह कोस्टास लूप के साथ किया जा सकता है, या बेसबैंड सिग्नल डेटा की चौथी शक्ति लेने और एक आवृत्ति स्पाइक की तलाश में। वाहक ऑफसेट * 4 पर एक आवृत्ति स्पाइक होना चाहिए (उदाहरण के लिए यदि आप डेटा की FFT को 4 की शक्ति पर ले जाते हैं और 8300 हर्ट्ज पर आवृत्ति स्पाइक देखते हैं, तो इसका मतलब है कि वाहक ऑफसेट 8300/4 = 2075 हर्ट्ज है)। यह आवृत्ति ऑफसेट पर प्रारंभिक लॉक प्राप्त करने का एक बहुत प्रभावी साधन है। यदि आप इसे कभी-कभार दोबारा करते हैं, तो आप इसे बहाव की भरपाई के लिए भी उपयोग कर सकते हैं। बहाव की भरपाई करने का एक और तरीका है जिसे मैं बाद में छूऊंगा।

वाहक चरण

इस बिंदु पर यदि आपने अपने जटिल डेटा को जटिल विमान में रखा है (x- अक्ष वास्तविक है, y- अक्ष काल्पनिक है) तो यह कुछ इस तरह दिखना चाहिए-

BPSK घुमाया गया

यदि आप बारीकी से देखते हैं तो आप धुंधली रेखा के छोर की ओर दो घने क्षेत्र देख सकते हैं। वे बीपीएसके तारामंडल बिंदु हैं। बीच के अंक नक्षत्र बिंदुओं के बीच के संक्रमण हैं। एक बार जब हम प्रतीक का समय प्राप्त कर लेंगे, तो वे साफ हो जाएंगे। वाहक चरण के कारण लाइन कोण पर है। यह द्वारा नकारात्मक वास्तविक मान वाले सभी बिंदुओं को गुणा करके संकेत को प्रतिबिंबित करके मापा जा सकता हैejπ

घुमाया और BPSK को प्रतिबिंबित किया

और फिर अंक के कोणों का मतलब लेना। एक बार जब आप गणना कर लेते हैं, तो उस बिंदु को सभी बिंदुओं से घटा दें, जो वाहक ऑफसेट को द्वारा अंक गुणा करके हटा दिया गया है । आप चरण ऑफसेट को गतिशील रूप से अपडेट करके इस तकनीक के साथ वाहक ऑफसेट बहाव की भरपाई भी कर सकते हैं। एक बार डेटा चरण सही हो जाने के बाद इसे कुछ इस तरह से देखना चाहिए-ejω

शोर बीपीएसके

एक बार जब डेटा चरण सही हो जाता है तो आप डेटा के काल्पनिक भाग को छोड़ सकते हैं क्योंकि यह कोई जानकारी नहीं जोड़ता है।

प्रतीक समय

आपको सामान्य रूप से पता होना चाहिए, एक प्राथमिकता, जिस सिग्नल को आप डिमोड्यूलेट करने की कोशिश कर रहे हैं उसका प्रतीक अवधि। यदि आपको प्रतीक अवधि / आवृत्ति को निर्धारित करने की आवश्यकता है, तो आप वाहक ऑफसेट का पता लगाने के तरीके से कर सकते हैं। आप डेटा को वर्ग कर सकते हैं जो प्रतीक आवृत्ति से दो बार आवृत्ति स्पाइक का कारण होगा।

वाहक के साथ की तरह आपको चरण (समय) सही प्राप्त करना होगा और फिर बहाव के लिए क्षतिपूर्ति करनी होगी। इन दोनों समस्याओं के लिए सामान्य विधि शून्य क्रॉसिंग की तलाश है। जब तक कि शोर काफी खराब न हो जाए, यह केवल प्रतीक चिह्न के बीच के शून्य बिंदु को -1 से 1 तक या 1 से -1 तक पार करना चाहिए। भले ही शोर प्रतीक के बीच में ऐसा करने का कारण बनता है, यह बहुत बार नहीं होगा।

आँख का आरेख

ऊपर दी गई तस्वीर को आमतौर पर "आंख आरेख" या "आंख का पैटर्न" कहा जाता है। यह दो प्रतीक अवधि चौड़ा है, और एक दूसरे के ऊपर "ढेर" के कई प्रतीक हैं। मुझे नहीं पता कि आप ऑसिलोस्कोप से परिचित हैं या नहीं, लेकिन इस तरह की तस्वीर दिखाने के लिए आपको ऑसिलोस्कोप मिल सकता है। वैसे भी, दो "एक्स" प्रतीक चिन्ह हैं। X में निम्न से उच्च रेखाएँ होती हैं, जब प्रतीक 1 से -1 तक संक्रमण करते हैं, और X में उच्च रेखाएँ निम्न होती हैं, जब प्रतीक -1 से 1 में संक्रमण करते हैं। बीच में बिंदु, जहाँ गुलाबी रेखा है, यह देखने के लिए डेटा का नमूना करने के लिए इष्टतम स्थान है कि क्या प्रतीक 1 या -1 है।

इसी तकनीक का उपयोग प्रतीक समय के बहाव को संभालने के लिए किया जा सकता है। पूर्व की जीरो क्रॉसिंग और शून्य क्रॉसिंग के बाद की दूरी का रनिंग औसत लें। यदि दो औसत समान हैं, तो सब ठीक है। यदि कोई दूसरे से बड़ा है तो आपको शिफ्ट करने की आवश्यकता है जहां आप अपना नमूना ले रहे हैं।

एक बार जब आप सही बिंदुओं पर प्रतीकों का नमूना ले लेते हैं, तो आपके डेटा बिंदुओं को क्लासिक बीपीएसके तारामंडल बिंदुओं की तरह दिखने वाली चीज़ मिलनी चाहिए।

शोर बीपीएसके तारामंडल

आशा है कि ये आपकी मदद करेगा।


इस अद्भुत पोस्ट को बेहतर बनाने के लिए, शायद आप प्रतीक समय से पहले घड़ी की वसूली का एक खंड जोड़ सकते हैं?
LWZ

मुझे लगता है कि मुझे पता चल सकता है कि आपके मन में क्या है लेकिन मुझे यकीन नहीं है। क्या विशेष रूप से आपके मन में था?
जिम क्ले

बहुत बहुत धन्यवाद! मैंने इस तरह से शून्य क्रॉसिंग की तलाश करने, या x / y पर वास्तविक / काल्पनिक साजिश रचने के बारे में नहीं सोचा था। मैं अभी चरण के रेखांकन को देख रहा हूं और सोच रहा हूं कि सब कुछ कैसे सिंक्रनाइज़ किया जाए। एक बार फिर धन्यवाद!
कीथ

@Jimlay, अपने सिंबल टाइमिंग सेक्शन की शुरुआत में , आपने उल्लेख किया था कि "आपको सामान्य रूप से उस सिग्नल की प्रतीक अवधि पता होनी चाहिए जिसे आप डिमॉड्यूलेट करने की कोशिश कर रहे हैं।" t अपने डेटा के साथ एक घड़ी भेजें। बीपीएसके सिग्नल के लिए यह आसान है, जहां आप केवल अपने सिग्नल को स्क्वायर कर सकते हैं, जो डेटा को हटा देता है। फिर आप पावर स्पेक्ट्रम को देखते हैं, एक शिखर आवृत्ति होनी चाहिए जिसे घड़ी टोन कहा जाता है , जो आपको प्रतीक अवधि देता है।
LWZ

प्रतीक आवृत्ति पर एक अनुच्छेद जोड़ा गया।
जिम क्ले
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.