बिट बैंगिंग

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

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

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

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

यह भी देखें

 * बिट हेरफेर
 * बिट स्ट्रीम
 * बिट ट्विडलर (बहुविकल्पी)
 * बिट-सीरियल आर्किटेक्चर
 * 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