विटर्बी डिकोडर

एक विटरबी डिकोडर बिटस्ट्रीम को डिकोड करने के लिए विटरबी एल्गोरिदम का उपयोग करता है कन्वोल्यूशनल कोड या ट्रेलिस मॉड्यूलेशन का उपयोग करके एन्कोड किया गया।

कनवल्शनल रूप से एन्कोडेड स्ट्रीम को डिकोड करने के लिए अन्य एल्गोरिदम हैं (उदाहरण के लिए, अनुक्रमिक डिकोडिंग#फैनो एल्गोरिदम)। विटर्बी एल्गोरिदम सबसे अधिक संसाधन-खपत वाला है, लेकिन यह अधिकतम संभावना डिकोडिंग करता है। इसका उपयोग अक्सर बाधा लंबाई k≤3 के साथ दृढ़ कोड को डिकोड करने के लिए किया जाता है, लेकिन k=15 तक के मान व्यवहार में उपयोग किए जाते हैं।

विटरबी डिकोडिंग एंड्रयू जे. विटरबी द्वारा विकसित किया गया था और पेपर में प्रकाशित किया गया था

विटरबी डिकोडर के हार्डवेयर (मॉडेम में) और सॉफ्टवेयर दोनों कार्यान्वयन हैं।

विटरबी डिकोडिंग का उपयोग पुनरावृत्त विटर्बी डिकोडिंग एल्गोरिदम में किया जाता है।

हार्डवेयर कार्यान्वयन
बुनियादी (छिद्रित नहीं) कोड के लिए एक हार्डवेयर विटरबी डिकोडर में आमतौर पर निम्नलिखित प्रमुख ब्लॉक होते हैं:


 * शाखा मीट्रिक इकाई (बीएमयू)
 * पथ मीट्रिक इकाई (पीएमयू)
 * ट्रेसबैक यूनिट (टीबीयू)

शाखा मीट्रिक इकाई (बीएमयू)
एक शाखा मीट्रिक इकाई का कार्य शाखा मीट्रिक की गणना करना है, जो कोड वर्णमाला में प्रत्येक संभावित प्रतीक और प्राप्त प्रतीक के बीच मानक दूरी है।

कठोर निर्णय और नरम निर्णय विटर्बी डिकोडर हैं। एक कठिन निर्णय विटर्बी डिकोडर अपने इनपुट पर एक सरल बिटस्ट्रीम प्राप्त करता है, और हैमिंग दूरी को मीट्रिक के रूप में उपयोग किया जाता है। एक नरम निर्णय विटर्बी डिकोडर एक बिटस्ट्रीम प्राप्त करता है जिसमें प्रत्येक प्राप्त प्रतीक की विश्वसनीयता के बारे में जानकारी होती है। उदाहरण के लिए, 3-बिट एन्कोडिंग में, इस विश्वसनीयता जानकारी को निम्नानुसार एन्कोड किया जा सकता है:

बेशक, यह विश्वसनीयता डेटा को एन्कोड करने का एकमात्र तरीका नहीं है।

वर्गाकार यूक्लिडियन दूरी का उपयोग नरम निर्णय डिकोडर्स के लिए एक मीट्रिक के रूप में किया जाता है।

पथ मीट्रिक इकाई (पीएमयू)
एक पथ मीट्रिक इकाई मेट्रिक्स प्राप्त करने के लिए शाखा मेट्रिक्स का सारांश प्रस्तुत करती है $$2^{K-1}$$ पथ, जहां K कोड की बाधा लंबाई है, जिनमें से एक को अंततः इष्टतम के रूप में चुना जा सकता है। प्रत्येक घड़ी यह बनाती है $$2^{K-1}$$ निर्णय, जानबूझकर गैर-इष्टतम रास्तों को त्यागना। इन निर्णयों के परिणाम ट्रेसबैक इकाई की मेमोरी में लिखे जाते हैं।

पीएमयू के मुख्य तत्व एसीएस (ऐड-कंपेयर-सेलेक्ट) इकाइयां हैं। जिस तरह से वे आपस में जुड़े हुए हैं उसे एक विशिष्ट कोड के ट्रेलिस आरेख द्वारा परिभाषित किया गया है।

चूँकि शाखा मेट्रिक्स हमेशा होते हैं $$\ge 0$$, मीट्रिक काउंटरों को अतिप्रवाह से रोकने के लिए एक अतिरिक्त सर्किट (छवि पर नहीं दिखाया गया) होना चाहिए। एक वैकल्पिक विधि जो पथ मीट्रिक वृद्धि की निगरानी करने की आवश्यकता को समाप्त करती है, वह है पथ मीट्रिक को रोल ओवर करने की अनुमति देना; इस पद्धति का उपयोग करने के लिए यह सुनिश्चित करना आवश्यक है कि पथ मीट्रिक संचायक में सर्वोत्तम और सबसे खराब मानों को 2 के भीतर आने से रोकने के लिए पर्याप्त बिट्स हों।(n-1)एक दूसरे का। तुलना सर्किट मूलतः अपरिवर्तित है।

सर्वोत्तम पथ मीट्रिक की वृद्धि दर की निगरानी करके आने वाली बिट स्ट्रीम पर शोर स्तर की निगरानी करना संभव है। ऐसा करने का एक सरल तरीका यह है कि किसी एक स्थान या स्थिति की निगरानी की जाए और इसे संचायक की सीमा के भीतर चार अलग-अलग स्तरों से गुजरते हुए देखा जाए। जैसे ही यह इनमें से प्रत्येक सीमा से ऊपर की ओर गुजरता है, एक काउंटर बढ़ जाता है जो आने वाले सिग्नल पर मौजूद शोर को दर्शाता है।

ट्रेसबैक यूनिट (टीबीयू)
बैक-ट्रेस इकाई पीएमयू द्वारा लिए गए निर्णयों से (लगभग) अधिकतम-संभावना पथ को पुनर्स्थापित करती है। चूँकि यह इसे विपरीत दिशा में करता है, एक विटरबी डिकोडर में सही क्रम का पुनर्निर्माण करने के लिए एक FILO (फर्स्ट-इन-लास्ट-आउट) बफर शामिल होता है।

ध्यान दें कि छवि पर दिखाए गए कार्यान्वयन के लिए दोहरी आवृत्ति की आवश्यकता होती है। कुछ तरकीबें हैं जो इस आवश्यकता को ख़त्म कर देती हैं।

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


 * $$\,\! T = \sqrt{\frac{N_0}{2^k}},$$

कहाँ $$N_0$$ एक शोर शक्ति वर्णक्रमीय घनत्व है, और k नरम निर्णय के लिए बिट्स की एक संख्या है।

यूक्लिडियन मीट्रिक गणना
वर्ग मानदंड (गणित) ($$\ell_2$$) कोड वर्णमाला में प्राप्त और वास्तविक प्रतीकों के बीच की दूरी को एक रैखिक योग/अंतर रूप में और सरल बनाया जा सकता है, जो इसे कम कम्प्यूटेशनल रूप से गहन बनाता है।

1/2 कनवल्शनल कोड पर विचार करें, जो प्रत्येक इनपुट बिट (1 या 0) के लिए 2 बिट्स (00, 01, 10 या 11) उत्पन्न करता है। इन रिटर्न-टू-जीरो संकेतों को साथ में दिखाए गए नॉन-रिटर्न-टू-जीरो फॉर्म में अनुवादित किया गया है।

प्रत्येक प्राप्त प्रतीक को वेक्टर रूप में v के रूप में दर्शाया जा सकता हैr= {आर0, आर1}, जहां आर0 और आर1 नरम निर्णय मूल्य हैं, जिनके परिमाण प्राप्त वेक्टर की संयुक्त विश्वसनीयता को दर्शाते हैं, 'वीr.

इसी तरह, कोड वर्णमाला में प्रत्येक प्रतीक को वेक्टर v द्वारा दर्शाया जा सकता हैi= {±1, ±1}.

यूक्लिडियन दूरी मीट्रिक की वास्तविक गणना है:


 * $$\,\!D = (\overrightarrow{v_r} - \overrightarrow{v_i})^2 = \overrightarrow{v_r}^2 - 2 \overrightarrow{v_r} \overrightarrow{v_i} + \overrightarrow{v_i}^2$$

प्रत्येक वर्ग पद एक मानक दूरी है, जो प्रतीक की ऊर्जा को दर्शाता है। उदाहरण के लिए, प्रतीक 'v' की ऊर्जाi= {±1, ±1} की गणना इस प्रकार की जा सकती है


 * $$\,\!\overrightarrow{v_i}^2 = (\pm 1)^2 + (\pm 1)^2 = 2$$

इस प्रकार, कोड वर्णमाला में सभी प्रतीकों का ऊर्जा शब्द स्थिर है ((सामान्यीकृत) मान 2 पर)।

ऐड-तुलना-चयन (एसीएस) ऑपरेशन प्राप्त प्रतीक '||v' के बीच मीट्रिक दूरी की तुलना करता हैr|| और कोड वर्णमाला में कोई भी 2 प्रतीक जिनके पथ संबंधित सलाखें में एक नोड पर विलीन हो जाते हैं, ||vi(0)|| और ||vi(1)||. यह तुलना करने के बराबर है


 * $$\,\!D_0 = \overrightarrow{v_r}^2 - 2 \overrightarrow{v_r} \overrightarrow{v_i^0} + \overrightarrow{v_i^0}^2$$

और


 * $$\,\!D_1 = \overrightarrow{v_r}^2 - 2 \overrightarrow{v_r} \overrightarrow{v_i^1} + \overrightarrow{v_i^1}^2$$

लेकिन, ऊपर से हम जानते हैं कि 'v' की ऊर्जाiस्थिर है (2 के (सामान्यीकृत) मान के बराबर), और वी की ऊर्जा हैrदोनों मामलों में समान है. यह 2 (मध्य) डॉट उत्पाद शब्दों के बीच एक मिनिमा फ़ंक्शन की तुलना को कम करता है,


 * $$\,\!\min(-2 \overrightarrow{v_r} \overrightarrow{v_i^0},-2 \overrightarrow{v_r} \overrightarrow{v_i^1}) = \max(\overrightarrow{v_r} \overrightarrow{v_i^0}, \overrightarrow{v_r} \overrightarrow{v_i^1})$$

से एक $min$ ऋणात्मक संख्याओं पर संक्रिया को समकक्ष के रूप में समझा जा सकता है $max$ धनात्मक मात्राओं पर संचालन।

प्रत्येक डॉट उत्पाद शब्द को इस प्रकार विस्तारित किया जा सकता है


 * $$\,\! \max(\pm r_0 \pm r_1, \pm r_0 \pm r_1)$$

जहां, प्रत्येक पद के चिह्न प्रतीकों पर निर्भर करते हैं, vi(0)और वीi(1), तुलना की जा रही है। इस प्रकार, शाखा मीट्रिक की गणना करने के लिए वर्ग यूक्लिडियन मीट्रिक दूरी की गणना एक सरल जोड़/घटाव ऑपरेशन के साथ की जा सकती है।

ट्रेसबैक
ट्रेसबैक के लिए सामान्य दृष्टिकोण बाधा लंबाई (5 (के - 1)) से पांच गुना तक पथ मेट्रिक्स जमा करना है, सबसे बड़ी संचित लागत के साथ नोड ढूंढना, और इस नोड से ट्रेसबैक शुरू करना है।

कन्वेन्शनल कोड की मेमोरी (बाधा लंबाई K-1) की पांच गुना की ट्रंकेशन गहराई का आमतौर पर इस्तेमाल किया जाने वाला अंगूठे का नियम केवल दर 1/2 कोड के लिए सटीक है। एक मनमानी दर के लिए, सटीक नियम 2.5(K - 1)/(1−r) है जहां r कोड दर है। हालाँकि, उस नोड की गणना करना जिसने सबसे बड़ी लागत (या तो सबसे बड़ी या सबसे छोटी अभिन्न पथ मीट्रिक) जमा की है, इसमें कई (आमतौर पर 2) की मैक्सिमा या मिनिमा का पता लगाना शामिल हैK-1) नंबर, जिन्हें एंबेडेड हार्डवेयर सिस्टम पर लागू करने में समय लग सकता है।

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

सीमाएँ
विटरबी डिकोडर के भौतिक कार्यान्वयन से इनपुट सिग्नल, शाखा और पथ मेट्रिक्स के परिमाणीकरण (सिग्नल प्रोसेसिंग), और सीमित ट्रेसबैक लंबाई के कारण सटीक अधिकतम-संभावना स्ट्रीम नहीं मिलेगी। व्यावहारिक कार्यान्वयन आदर्श के 1 डीबी के भीतर होता है।

विटर्बी डिकोडर के आउटपुट में, जब एक एडिटिव गॉसियन चैनल द्वारा क्षतिग्रस्त संदेश को डिकोड किया जाता है, तो त्रुटियों को एरर बर्स्ट में समूहीकृत किया जाता है। हैमिंग कोड|अकेले एकल-त्रुटि-सुधार करने वाले कोड ऐसे विस्फोटों को ठीक नहीं कर सकते हैं, इसलिए या तो कन्वेन्शनल कोड और विटरबी डिकोडर को त्रुटियों को स्वीकार्य दर तक लाने के लिए पर्याप्त शक्तिशाली डिज़ाइन किया जाना चाहिए, या बर्स्ट त्रुटि-सुधार करने वाले कोड का उपयोग किया जाना चाहिए।

छिद्रित कोड
पंचर कोड कोड का एक हार्डवेयर विटरबी डिकोडर आमतौर पर इस तरह से कार्यान्वित किया जाता है:


 * एक डिपंक्चरर, जो इनपुट स्ट्रीम को उस स्ट्रीम में बदल देता है जो मूल (गैर पंचर) स्ट्रीम की तरह दिखती है, जहां बिट्स मिटाए गए स्थानों पर ERASE निशान होते हैं।
 * एक बुनियादी विटरबी डिकोडर जो इन ERASE चिह्नों को समझता है (अर्थात, शाखा मीट्रिक गणना के लिए उनका उपयोग नहीं कर रहा है)।

सॉफ्टवेयर कार्यान्वयन
सबसे अधिक समय लेने वाले ऑपरेशनों में से एक एसीएस बटरफ्लाई है, जिसे आमतौर पर डिकोडिंग समय को तेज करने के लिए असेंबली भाषा और उपयुक्त निर्देश सेट एक्सटेंशन (जैसे खराब 2) का उपयोग करके कार्यान्वित किया जाता है।

अनुप्रयोग
विटरबी डिकोडिंग एल्गोरिदम का व्यापक रूप से निम्नलिखित क्षेत्रों में उपयोग किया जाता है:
 * रेडियो संचार: डिजिटल टीवी (एटीएससी, क्यूएएम (टेलीविजन), डीवीबी-टी, आदि), रेडियो रिले लिंक, उपग्रह संचार, शौकिया रेडियो के लिए आसानी से1 डिजिटल मोड।
 * डिकोडिंग ट्रेलिस-कोडित मॉड्यूलेशन  (टीसीएम), 3 किलोहर्ट्ज़-बैंडविड्थ एनालॉग टेलीफोन लाइनों से उच्च वर्णक्रमीय दक्षता को निचोड़ने के लिए टेलीफोन-लाइन मॉडेम में उपयोग की जाने वाली तकनीक।
 * कंप्यूटर स्टोरेज डिवाइस जैसे हार्ड डिस्क ड्राइव।
 * स्वचालित वाक् पहचान

बाहरी संबंध

 * Details on Viterbi decoding, as well as a bibliography.
 * Viterbi algorithm explanation with the focus on hardware implementation issues.
 * r=1/6 k=15 coding for the Cassini mission to Saturn.
 * Online Generator of optimized software Viterbi decoders (GPL).
 * GPL Viterbi decoder software for four standard codes.
 * Description of a k=24 Viterbi decoder, believed to be the largest ever in practical use.
 * Generic Viterbi decoder hardware (GPL).
 * Generic Viterbi decoder hardware (GPL).