बिट बैंगिंग

From Vigyanwiki
Revision as of 11:52, 2 May 2023 by alpha>Indicwiki (Created page with "{{ref improve|date=July 2014}} {{Confuse|Bit twiddling}} {{Use dmy dates|date=December 2021|cs1-dates=y}} {{Use list-defined references|date=December 2021}} कंप्य...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:Ref improve

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

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

सी कोड उदाहरण

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

// transmit byte serially, MSB first
void send_8bit_serial_data(unsigned char data)
{
   int i;

   // select device (active low)
   output_low(SD_CS);

   // send bits 7..0
   for (i = 0; i < 8; i++)
   {
       // consider leftmost bit
       // set line high if bit is 1, low if bit is 0
       if (data & 0x80)
           output_high(SD_DI);
       else
           output_low(SD_DI);

       // pulse the clock state to indicate that bit value should be read
       output_low(SD_CLK);
       delay();
       output_high(SD_CLK);

       // shift byte left so next bit will be leftmost
       data <<= 1;
   }

   // deselect device
   output_high(SD_CS);
}


विचार

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

यह भी देखें

संदर्भ

  1. Predko, Michael (2000). Programming and customizing PICmicro microcontrollers (2nd ed.). McGraw-Hill Professional. pp. 10–12. ISBN 978-0-07-136172-9.


बाहरी संबंध

Asynchronous serial (RS-232)
I²C bus
SPI bus