बिट बैंगिंग

कंप्यूटर इंजीनियरिंग और विद्युत अभियन्त्रण  में, बिट बैंगिंग एक "कला का शब्द" है जो किसी भी डेटा प्रसारण  की विधि के लिए उपयोग की जाती है जिसमें सॉफ़्टवेयर विशेष हार्डवेयर के स्थान पर प्रेषित संकेतों को उत्पन्न करने या प्राप्त संकेतों को प्रोसेस करने के लिए उपयोग करता है। सॉफ्टवेयर सीधे जीपीआईओ (जैसे, एक माइक्रोकंट्रोलर पर पिन) के स्थितियों को सेट और  नमूनाकरण (सिग्नल प्रोसेसिंग)  करता है, और संकेतों के सभी टाइमिंग आवश्यकताओं और प्रोटोकॉल क्रमबद्धता का जिम्मा सॉफ़्टवेयर को होता है। बिट बैंगिंग के विपरीत, समर्पित हार्डवेयर (जैसे, UART, क्रमानुसार बाह्य इंटरफ़ेस, I²C) इन आवश्यकताओं को पूरा करता है और, यदि आवश्यक हो, तो सॉफ़्टवेयर समय की आवश्यकताओं को शिथिल करने के लिए डेटा बफर प्रदान करता है। बिट बैंगिंग को बहुत कम लागत पर लागू किया जा सकता है, और आमतौर पर कुछ  अंतः स्थापित प्रणालियाँ  में इसका उपयोग किया जाता है।

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

सी कोड उदाहरण
निम्नलिखित सी (प्रोग्रामिंग भाषा) कोड उदाहरण एक सीरियल पेरिफेरल इंटरफेस बस पर डेटा का एक बाइट प्रसारित करता है।

विचार
बिट बैंगिंग का उपयोग करने या न करने का सवाल एक वजन, प्रदर्शन और विश्वसनीयता के बीच एक बदले हुए निर्णय है, और दूसरी ओर हार्डवेयर विकल्प की उपलब्धता पर निर्भर करता है। सॉफ़्टवेयर उत्पन्नित करने की प्रक्रिया, विशेष हार्डवेयर के समर्थन की तुलना में, अधिक प्रोसेसिंग पावर का उपयोग करती है। माइक्रोकंट्रोलर अपना अधिकांश समय अन्य कार्यों की कीमत पर, पिनों को और उनसे नमूने भेजने या प्राप्त करने में व्यतीत करता है। उत्पादित सिग्नल में आमतौर पर अधिक घबराहट या गड़बड़ियां होती हैं, खासकर अगर प्रोसेसर संचार करते समय अन्य कार्यों को भी निष्पादित कर रहा हो। हालाँकि, यदि बिट-बैंगिंग सॉफ़्टवेयर सिग्नल द्वारा बाधित-चालित है, तो यह मामूली महत्व का हो सकता है, विशेष रूप से यदि RTS, CTS या DCD डेटा वाहक का पता लगाना जैसे नियंत्रण संकेत उपलब्ध हैं। विशिष्ट हार्डवेयर समर्थन उपलब्ध नहीं होने या अधिक महंगे माइक्रोकंट्रोलर की आवश्यकता होने पर सॉफ़्टवेयर में कार्यान्वयन एक समाधान हो सकता है।

यह भी देखें

 * बिट हेरफेर
 * बिट स्ट्रीम
 * बिट ट्विडलर (बहुविकल्पी)
 * बिट-सीरियल आर्किटेक्चर
 * 1-बिट आर्किटेक्चर
 * तेज लोडर
 * एकीकृत Woz मशीन (IWM)
 * FTDI, USB से सीरियल कन्वर्टर चिप्स की एक श्रृंखला भी बिट बैंग मोड का समर्थन करती है
 * 2MGUI (सिरियाको गार्सिया डी सेलिस द्वारा एक डॉस ड्राइवर सामान्य फ्लॉपी नियंत्रक तर्क को दरकिनार करते हुए गैर-मानक अल्ट्रा-उच्च क्षमता वाले फ्लॉपी डिस्क प्रारूपों का समर्थन करने के लिए बिट-बैंगिंग का उपयोग करता है, अमिगा फ्लॉपी के लिए एक समान कार्यक्रम विन्सेंट जोगुइन का डिस्क2एफडीआई है)
 * आभासी मशीन (वीएम) (वास्तविक हार्डवेयर नियंत्रकों का अनुकरण करने वाले वर्चुअल डिवाइस ड्राइवरों को लागू करने में कभी-कभी बिट बैंगिंग जैसी प्रोग्रामिंग तकनीकों का उपयोग करना शामिल होता है)
 * सॉफ्टवेयर-परिभाषित रेडियो (एसडीआर)
 * मतदान (कंप्यूटर विज्ञान)

बाहरी संबंध

 * Asynchronous serial (RS-232)
 * Notes on bit-banging async serial
 * Bit banging for Async Serial Communication
 * Bit banging for RS-232


 * I²C bus
 * I2C on AVR using bit banging


 * SPI bus
 * Efficient bit-banged SPI for 8051 microcontroller