इंटेल 8253

इंटेल 8253 और 8254 प्रोग्रामयोग्य अंतराल टाइमर (पीआईटी) हैं, जो तीन 16-बिट काउंटर का उपयोग करके समय और गणना फ़ंक्शन निष्पादित करते हैं।

825x वर्ग मुख्य रूप से इंटेल 8080/इंटेल 8085-प्रोसेसर के लिए डिज़ाइन किया गया था, परंतु बाद में x86 संगत सिस्टम में उपयोग किया गया। 825x चिप, या बड़ी चिप में एम्बेडेड समकक्ष सर्किट, सभी आईबीएम पीसी संगत और वेक्टर -06 सी जैसे सोवियत कंप्यूटरों में पाए जाते हैं।

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

इंटेल 82c54 (सीएमओएस लॉजिक के लिए सी) प्रकार 10 मेगाहर्ट्ज क्लॉक सिग्नल तक संभालता है।

इतिहास
8253 का वर्णन 1980 इंटेल कंपोनेंट डेटा कैटलॉग प्रकाशन में किया गया है। 8254, जिसे उच्च क्लॉक स्पीड रेटिंग के साथ 8253 के सुपरसेट के रूप में वर्णित किया गया है, की 1982 इंटेल कंपोनेंट डेटा कैटलॉग में प्रारंभिक डेटा शीट है।

8254 को एचएमओएस में लागू किया गया है और इसमें रीड बैक कमांड 8253 पर उपलब्ध नहीं है, और एक ही काउंटर को इंटरलीव करने के लिए पढ़ने और लिखने की अनुमति देता है।

आधुनिक पीसी कंपेटिबल, या तो चिप सीपीयू या साउथब्रिज (कंप्यूटिंग) पर सिस्टम का उपयोग करते समय सामान्यतः बैकवर्ड संगतता और अंतरप्रचालनीयता के लिए पूर्ण 8254 संगतता लागू करते हैं। रीड बैक कमांड मल्टीकोर सीपीयू और जीपीयू के साथ अंतरप्रचालनीयता के लिए महत्वपूर्ण आई/ओ सुविधा है।

प्रकार
-55°C से +125°C के तापमान श्रेणी के साथ इंटेल M8253 का सैन्य संस्करण है, जिसमें ±10% 5V सामर्थ्य सहनशीलता भी है। उपलब्ध 82C53 CMOS संस्करण को ओकी इलेक्ट्रिक इंडस्ट्री कंपनी लिमिटेड को आउटसोर्स किया गया था। इंटेल 82C54 का उपलब्ध पैकेज संस्करण 1986 की प्रथम तिमाही में सैंपलिंग के 28-पिन चिप कैरियर में था।

विशेषताएँ
टाइमर में तीन काउंटर हैं, जिनकी संख्या 0 से 2 है। प्रत्येक चैनल को छह मोड में से में संचालित करने के लिए प्रोग्राम किया जा सकता है। एक बार प्रोग्राम हो जाने पर, चैनल स्वतंत्र रूप से कार्य करते हैं। प्रत्येक काउंटर में दो इनपुट पिन होते हैं - "CLK" ( घड़ी इनपुट) और "GATE" - और डेटा आउटपुट के लिए पिन, "OUT"। तीन काउंटर एक-दूसरे से स्वतंत्र 16-बिट डाउन काउंटर हैं, और इन्हें केंद्रीय प्रसंस्करण इकाई द्वारा सरलता से पढ़ा जा सकता है।
 * डेटा बस बफ़र में माइक्रोप्रोसेसर और आंतरिक रजिस्टरों के बीच डेटा बस को बफ़र करने का तर्क होता है। इसमें 8 इनपुट पिन हैं, जिन्हें सामान्यतः D7..D0 के रूप में लेबल किया जाता है, जहां D7 सबसे महत्वपूर्ण बिट है।
 * रीड/राइट लॉजिक में 5 पिन होते हैं, जो निम्न सूचीबद्ध हैं। $\overline{X}$ दर्शाता है कि X एक सक्रिय निम्न सिग्नल है।
 * $\overline{RD}$: रीड सिग्नल
 * $\overline{WR}$: राइट सिग्नल
 * $\overline{CS}$: चिप सिलेक्ट सिग्नल
 * A0, A1: एड्रैस लाइन

उपरोक्त हार्डवेयर सिग्नल सेट करके पीआईटी का ऑपरेशन मोड बदल दिया जाता है। उदाहरण के लिए, कंट्रोल वर्ड रजिस्टर पर लिखने के लिए, किसी को $\overline{CS}$=0, $\overline{RD}$=1, $\overline{WR}$=0, A1=A0=1 सेट करना होगा।


 * कंट्रोल वर्ड रजिस्टर में प्रोग्राम की गई सूचना होती है जिसे (माइक्रोप्रोसेसर द्वारा) डिवाइस पर भेजा जाएगा। यह परिभाषित करता है कि पीआईटी का प्रत्येक चैनल तार्किक रूप से कैसे कार्य करता है। इन पोर्ट तक प्रत्येक पहुंच में लगभग 1 µs का समय लगता है।

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

नियंत्रण शब्द रजिस्टर में 8 बिट्स हैं, जिन्हें D7..D0 लेबल किया गया है (D7 सबसे महत्वपूर्ण बिट है)। डिकोडिंग कुछ जटिल है। अधिकांश मान तीन काउंटरों में से एक के लिए पैरामीटर सेट करते हैं:
 * सबसे महत्वपूर्ण दो बिट्स (यदि 11 नहीं) उस काउंटर रजिस्टर का चयन करें जिस पर कमांड लागू होता है।
 * अग्रिम दो बिट्स (यदि 00 नहीं हैं) उस फॉर्मैट का चयन करें जिसका उपयोग काउंटर रजिस्टर में बाद में पढ़ने/लिखने की पहुंच के लिए किया जाएगा। इसे सामान्यतः ऐसे मोड पर सेट किया जाता है जहां एक्सेस सबसे कम-महत्वपूर्ण और सबसे-महत्वपूर्ण बाइट्स के बीच वैकल्पिक होता है। 8253 और 8254 के बीच अंतर यह है कि पहले वाले में आंतरिक बिट था जो पढ़ने और लिखने दोनों को प्रभावित करता था, इसलिए यदि फॉर्मैट 2-बाइट पर सेट किया गया था, तो lsbyte को पढ़ने से निम्नलिखित लेखन को msbyte पर निर्देशित किया जाएगा। 8254 में पढ़ने और लिखने के लिए अलग-अलग बिट्स का उपयोग किया गया।
 * अग्रिम तीन बिट्स उस मोड का चयन करें जिसमें काउंटर कार्य करेगा।
 * सबसे कम महत्वपूर्ण बिट यह चयनित है कि काउंटर बाइनरी या बाइनरी-कोडित दशमलव में कार्य करेगा या नहीं। (बीसीडी गणना लगभग कभी भी उपयोग नहीं की जाती है और इसे एमुलेटर या साउथब्रिज में ठीक से लागू नहीं किया जा सकता है।)

यद्यपि, दो अन्य रूप भी हैं:
 * किसी दिए गए टाइमर के लिए गणना को लॉक करें। अग्रिम रीड, रीड के समय काउंटर वैल्यू लौटाने के अतिरिक्त, लैच कमांड के समय में काउंटर वैल्यू लौटाएगा। रीड पूर्ण होने के पश्चात, बाद में पढ़ा गया वर्तमान काउंटर लौटा देगा। जब लैच कमांड का उपयोग किया जाता है, तो मोड और बीसीडी स्थिति नहीं बदली जाती है।
 * (मात्र 8254) एकाधिक टाइमर के लिए स्थिति को लॉक करें और/या गणना करें। यह बिटमैप का उपयोग करके साथ कई लैच कमांड की अनुमति देता है। साथ ही, वर्तमान चैनल कॉन्फ़िगरेशन को गणना के अतिरिक्त वापस पढ़ा जा सकता है।

पीआईटी सेट करते समय, माइक्रोप्रोसेसर पहले नियंत्रण संदेश भेजता है, फिर पीआईटी को गणना संदेश भेजता है। गणना की प्रक्रिया पीआईटी को ये संदेश प्राप्त होने के पश्चात प्रारंभ होगी, और, कुछ मामलों में, अगर यह "GATE" इनपुट संकेत किनारा बढ़ते सिग्नल किनारे का पता लगाता है। स्थिति बाइट फॉर्मैट. बिट 7 सॉफ़्टवेयर को OUT पिन की वर्तमान स्थिति की निगरानी करने की अनुमति देता है। बिट 6 इंगित करता है कि गणना कब पढ़ी जा सकती है; जब यह बिट 1 होता है, तो गणना तत्व अभी तक लोड नहीं हुआ है और प्रोसेसर द्वारा वापस पढ़ा नहीं जा सकता है। बिट्स 5 से 0 नियंत्रण रजिस्टर में लिखे गए अंतिम बिट्स के समान हैं।

ऑपरेशन मोड
नियंत्रण शब्द के D3, D2 और D1 बिट्स टाइमर के ऑपरेटिंग मोड को सेट करते हैं। कुल मिलाकर 6 मोड हैं; मोड 2 और 3 के लिए, डी3 बिट को नजरअंदाज कर दिया जाता है, इसलिए गायब मोड 6 और 7 मोड 2 और 3 के लिए उपनाम हैं।

सभी मोड GATE इनपुट के प्रति संवेदनशील हैं, GATE उच्च के कारण सामान्य ऑपरेशन होता है, परंतु GATE कम का प्रभाव मोड पर निर्भर करता है:
 * मोड 0 और 4: GATE कम होने पर गणना निलंबित कर दी जाती है, और GATE अधिक होने पर गणना फिर से प्रारंभ हो जाती है।
 * मोड 1 और 5: GATE के बढ़ते किनारे की गणना प्रारंभ होती है। गणना को प्रभावित किए बिना GATE निम्न जा सकता है, परंतु और बढ़ती बढ़त शुरुआत से ही गणना को फिर से प्रारंभ कर देगी।
 * मोड 2 और 3: "GATE" लो फोर्स को तुरंत हाई आउट करें (क्लॉक पल्स की प्रतीक्षा किए बिना) और काउंटर को रीसेट करता है (अगली क्लॉक गिरने वाले किनारे पर)। जब GATE फिर से ऊपर चला जाता है, तो गणना फिर से प्रारंभ हो जाती है।

मोड 0 (000): टर्मिनल गणना पर अंतरायन
मोड 0 का उपयोग सॉफ्टवेयर नियंत्रण के तहत सटीक समय विलंब उत्पन्न करने के लिए किया जाता है। इस मोड में, काउंटर इसमें लोड किए गए प्रारंभिक COUNT मान से 0 तक गणना प्रारंभ कर देगा। गणना दर इनपुट घड़ी आवृत्ति के बराबर है।

कंट्रोल वर्ड लिखे जाने के पश्चात OUT पिन को कम सेट किया जाता है, और COUNT प्रोग्राम होने के पश्चात गणना घड़ी चक्र प्रारंभ होती है। काउंटर 0 तक पहुंचने तक OUT कम रहता है, जिस बिंदु पर OUT को तब तक उच्च सेट किया जाएगा जब तक कि काउंटर पुनः लोड न हो जाए या नियंत्रण शब्द न लिखा जाए। काउंटर चारों ओर से लपेटता है  आंतरिक रूप से और गणना जारी रहती है, परंतु OUT पिन फिर कभी नहीं बदलता है। सामान्य गणना के लिए "GATE" सिग्नल को उच्च स्तर पर सक्रिय रहना चाहिए। यदि "GATE" निम्न चला जाता है, तो गणना रोक दी जाती है, और फिर से ऊपर जाने पर गणना फिर से प्रारंभ हो जाती है।

नई गणना की पहली बाइट गणना रजिस्टर में लोड होने पर पिछली गणना को रोक देती है।

मोड 1 (001): प्रोग्रामयोग्य शॉट
इस मोड में 8253 का उपयोग मोनोस्टेबल मल्टीवाइब्रेटर के रूप में किया जा सकता है। GATE इनपुट का उपयोग ट्रिगर इनपुट के रूप में किया जाता है।

प्रारंभ में OUT उच्च होगा। एक-शॉट पल्स प्रारंभ करने के लिए ट्रिगर के पश्चात क्लॉक पल्स पर OUT कम हो जाएगा, और जब तक काउंटर शून्य तक नहीं पहुंच जाता तब तक कम रहेगा। फिर OUT उच्च स्तर पर जाएगा और अग्रिम ट्रिगर के पश्चात CLK पल्स तक उच्च बना रहेगा।

नियंत्रण शब्द और प्रारंभिक गणना लिखने के पश्चात, काउंटर सशस्त्र है। ट्रिगर के परिणामस्वरूप काउंटर लोड होता है और अग्रिम "CLK" पल्स पर आउट कम सेट होता है, इस प्रकार एक-शॉट पल्स प्रारंभ होता है। एन की प्रारंभिक गणना के परिणामस्वरूप अवधि में एक-शॉट पल्स एन "CLK" चक्र प्राप्त होगा।

वन-शॉट पुनः ट्रिगर करने योग्य है, इसलिए किसी भी ट्रिगर के पश्चात एन "CLK" पल्स के लिए आउट कम रहेगा। एक-शॉट पल्स को काउंटर में समान गणना दोबारा लिखे बिना दोहराया जा सकता है। GATE का OUT पर कोई प्रभाव नहीं पड़ता. यदि ऑनशॉट पल्स के दौरान काउंटर पर नई गणना लिखी जाती है, तो वर्तमान वन-शॉट प्रभावित नहीं होता है जब तक कि काउंटर को फिर से चालू न किया जाए। उस स्थिति में, काउंटर को नई गणना के साथ लोड किया जाता है और नई गणना समाप्त होने तक वनशॉट पल्स जारी रहता है।

मोड 2 (X10): दर जनरेटर
इस मोड में, डिवाइस डिवाइड-बाय-एन काउंटर के रूप में कार्य करता है, जिसका उपयोग सामान्यतः वास्तविक समय घड़ी अंतरायन उत्पन्न करने के लिए किया जाता है।

अन्य तरीकों की तरह, COUNT भेजे जाने के पश्चात गणना प्रक्रिया अग्रिम घड़ी चक्र प्रारंभ कर देगी। तब तक OUT ऊंचा रहेगा जब तक काउंटर 1 तक नहीं पहुंच जाता, और क्लॉक पल्स के लिए कम हो जाएगा। अग्रिम चक्र में, गणना पुनः लोड की जाती है, OUT फिर से उच्च हो जाता है, और पूरी प्रक्रिया खुद को दोहराती है।

उच्च दालों के बीच का समय काउंटर के रजिस्टर में पूर्व निर्धारित गणना पर निर्भर करता है, और निम्न सूत्र का उपयोग करके गणना की जाती है:

काउंटर में लोड किया जाने वाला मान = $$f_{\rm input}\over f_{\rm output}$$ ध्यान दें कि COUNT रजिस्टर में मानों की सीमा होती है $$n$$ से 1; रजिस्टर कभी भी शून्य तक नहीं पहुंचता.

मोड 3 (X11): वर्ग तरंग जनरेटर
यह मोड मोड 2 के समान है। यद्यपि, आउटपुट की उच्च और निम्न क्लॉक पल्स की अवधि मोड 2 से भिन्न होगी।

कल्पना करना $$n$$ काउंटर में लोड की गई संख्या (COUNT संदेश) है, तो आउटपुट अधिक होगा $$\left\lceil{n\over2}\right\rceil$$ मायने रखता है, और इसके लिए कम है $$\left\lfloor{n\over2}\right\rfloor$$ मायने रखता है. इस प्रकार, अवधि होगी $$n$$ मायने रखता है, और यदि $$n$$ अजीब है, अतिरिक्त आधा चक्र OUT उच्च के साथ व्यतीत होता है।

मोड 4 (100): सॉफ्टवेयर ट्रिगर स्ट्रोब
कंट्रोल वर्ड और COUNT लोड होने के पश्चात, काउंटर शून्य तक पहुंचने तक आउटपुट उच्च रहेगा। फिर काउंटर 1 घड़ी चक्र (एक स्ट्रोब) के लिए कम पल्स उत्पन्न करेगा - उसके पश्चात आउटपुट फिर से उच्च हो जाएगा।

GATE निम्न गणना को निलंबित कर देता है, जो GATE के दोबारा उच्च होने पर फिर से प्रारंभ हो जाती है।

मोड 5 (101): हार्डवेयर ट्रिगर स्ट्रोब
यह मोड मोड 4 के समान है। यद्यपि, गणना प्रक्रिया GATE इनपुट द्वारा ट्रिगर होती है।

कंट्रोल वर्ड और COUNT प्राप्त करने के पश्चात, आउटपुट हाई सेट कर दिया जाएगा। बार जब डिवाइस GATE इनपुट पर बढ़ते किनारे का पता लगा लेता है, तो यह गणना प्रारंभ कर देगा। जब काउंटर 0 पर पहुंचता है, तो आउटपुट घड़ी चक्र के लिए कम हो जाएगा - उसके पश्चात यह GATE के अग्रिम बढ़ते किनारे पर चक्र को दोहराने के लिए फिर से उच्च हो जाएगा।

आईबीएम पीसी प्रोग्रामिंग
8253 का उपयोग 1981 में उनकी प्रारंभ के पश्चात से आईबीएम पीसी संगतों में किया गया था। आधुनिक समय में, इस PIT को x86 PC में अलग चिप के रूप में शामिल नहीं किया गया है। बल्कि, इसकी कार्यक्षमता मदरबोर्ड चिपसेट के साउथब्रिज (कंप्यूटिंग) के हिस्से के रूप में शामिल है। आधुनिक चिपसेट में, यह परिवर्तन x86 आई/ओ एड्रेस स्पेस में PIT के रजिस्टरों तक काफ़ी तेज़ पहुंच के रूप में दिखाई दे सकता है।

सभी पीसी संगत पीआईटी को 105/88 = 1.193 की क्लॉक दर पर संचालित करते हैं$\overline{count}$ मेगाहर्ट्ज, $\overline{status}$ एनटीएससी रंग-विस्फोट फ्रीक्वेंसी जो सिस्टम क्लॉक (14.31818 मेगाहर्ट्ज) को 12 से विभाजित करने से आती है। यह सबसे पहले रंग ग्राफ़िक्स एडाप्टर पीसी का होल्डओवर है - उन्होंने ही क्रिस्टल थरथरानवाला से सभी आवश्यक आवृत्तियों को प्राप्त किया, और टीवी आउटपुट को संभव बनाने के लिए, इस ऑसिलेटर को एनटीएससी रंग सबकैरियर आवृत्ति के गुणक पर चलाना था। यह आवृत्ति, 2 से विभाजित है16 (सबसे बड़ा विभाजक जो 8253 सक्षम है) MS-DOS और संबंधित ऑपरेटिंग सिस्टम में उपयोग किए जाने वाले ≈18.2 Hz टाइमर इंटरप्ट का उत्पादन करता है।

मूल आईबीएम पीसी में, काउंटर 0 का उपयोग टाइमकीपिंग अंतरायन उत्पन्न करने के लिए किया जाता है। काउंटर 1 का उपयोग डीरैम मेमोरी के रिफ्रेश को ट्रिगर करने के लिए किया जाता है। काउंटर 2 का उपयोग पीसी स्पीकर के माध्यम से टोन उत्पन्न करने के लिए किया जाता है।

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

पीसी पर टाइमर0 (चिप) का पता पोर्ट 40h..43h पर है और दूसरे टाइमर1 (चिप) का पता 50h..53h पर है।

x86 पीसी पर, कई वीडियो कार्ड BIOS और सिस्टम BIOS अपने स्वयं के उपयोग के लिए दूसरे काउंटर को पुन: प्रोग्राम करेंगे। रीप्रोग्रामिंग आम तौर पर वीडियो मोड में बदलाव के दौरान होती है, जब वीडियो BIOS निष्पादित किया जा सकता है, और सिस्टम प्रबंधन मोड और सामर्थ्य सेविंग स्थिति में परिवर्तन के दौरान, जब सिस्टम BIOS निष्पादित किया जा सकता है। यह कई x86 सिस्टमों पर टाइमर के दूसरे काउंटर के किसी भी गंभीर वैकल्पिक उपयोग को रोकता है।

जैसा कि ऊपर कहा गया है, चैनल 0 को काउंटर के रूप में लागू किया गया है। सामान्यतः, काउंटर का प्रारंभिक मान कंट्रोल को बाइट्स भेजकर सेट किया जाता है, फिर डेटा आई/ओ पोर्ट रजिस्टर करता है (36h का मान पोर्ट 43h पर भेजा जाता है, फिर कम बाइट पोर्ट 40h पर भेजा जाता है, और उच्च बाइट के लिए फिर से पोर्ट 40h भेजा जाता है). काउंटर शून्य तक गणना करता है, फिर सीपीयू को हार्डवेयर अंतरायन (आईआरक्यू 0, आईएनटी 8) भेजता है। फिर काउंटर अपने प्रारंभिक वैल्यू पर रीसेट हो जाता है और फिर से उलटी गणना प्रारंभ कर देता है। सबसे तेज़ संभव अंतरायन आवृत्ति मेगाहर्ट्ज़ के आधे से थोड़ा अधिक है। सबसे धीमी संभावित आवृत्ति, जो सामान्यतः MS-DOS या संगत ऑपरेटिंग सिस्टम चलाने वाले कंप्यूटरों द्वारा उपयोग की जाती है, लगभग 18.2 Hz है। इन वास्तविक मोड ऑपरेटिंग सिस्टम के तहत, BIOS वास्तविक मोड पते 0040:006c में प्राप्त होने वाली INT 8 कॉल की संख्या जमा करता है, जिसे प्रोग्राम द्वारा पढ़ा जा सकता है।

जैसे ही टाइमर उलटी गणना करता है, इसके वैल्यू को सीधे इसके आई/ओ पोर्ट को दो बार पढ़कर भी पढ़ा जा सकता है, पहले कम बाइट के लिए, और फिर उच्च बाइट के लिए। यद्यपि, फ्री-रनिंग काउंटर एप्लिकेशन जैसे कि x86 पीसी में, पहले नियंत्रण रजिस्टर में वांछित चैनल के लिए कुंडी (इलेक्ट्रॉनिक्स) कमांड लिखना आवश्यक है, ताकि पढ़े गए दोनों बाइट्स ही मान के हों।

2002 के माइक्रोसॉफ्ट दस्तावेज़ के अनुसार, क्योंकि इस हार्डवेयर [8254] को पढ़ने और लिखने के लिए आईओ पोर्ट के माध्यम से संचार की आवश्यकता होती है, प्रोग्रामिंग में कई चक्र लगते हैं, जो ओएस के लिए अत्यधिक महंगा है। इस वजह से, व्यवहार में एपेरियोडिक कार्यक्षमता का उपयोग नहीं किया जाता है।

यह भी देखें

 * LAPIC प्रोग्रामयोग्य टाइमर प्रदान करता है
 * एचपीईटी

बाहरी संबंध

 * 82C54 Datasheet
 * Overview of the इंटेल 8253 PIT chip
 * इंटेल 8253 complete datasheets
 * 8254/82C54 Programmable Interval Timer FAQ
 * Programmable Interval Timer - OSDev Wiki