एआरएम-आधारित डिवाइस को डिजाइन करते समय, जो एक रंगीन एलसीडी पर सरल ग्राफिक्स प्रदर्शित करना चाहिए, किसी व्यक्ति को विशेष रूप से एआरएम या एलसीडी विक्रेता से बंधे बिना, तेजी से अपडेट की अनुमति देने के लिए चीजों को डिजाइन करने के बारे में सबसे अच्छा कैसे होना चाहिए? मेरी वर्तमान परियोजना एक काले और सफेद डिस्प्ले का उपयोग करती है जिसे एसपीआई पोर्ट द्वारा पीआईसी पर बिजली की तेजी से चलाया जा सकता है (1/60 सेकंड में एक जटिल प्रदर्शन को फिर से परिभाषित करना)। ऐसा लगता है कि सामान्य रंग के एलसीडी डिस्प्ले में SPI पोर्ट होता है, लेकिन 160x120 LCD को ठोस रंग से भरने पर भी 30ms लगते हैं, और 320x240 में 120ms का सर्वश्रेष्ठ-केस (10MHz शिफ्ट घड़ी) लगेगा।
यदि कोई कंट्रोलर पिन को बंद कर सकता है, तो समानांतर मोड बेहतर हो सकता है, लेकिन मुझे प्रत्येक पिक्सेल के लिए तीन अलग-अलग मेमोरी-स्टोर निर्देशों की आवश्यकता के बिना समानांतर इंटरफ़ेस को हुक करने के किसी भी पारिवारिक-स्वतंत्र साधन का पता नहीं है (डेटा सेट करने के लिए एक, एक क्लॉक आउटपुट हाई सेट करने के लिए, और एक इसे लो क्लॉक करने के लिए)। कुछ एआरएम चिप्स में मेमोरी-बस इंटरफेस होता है, लेकिन जो लोग अक्सर मल्टीप्लेक्स एड्रेस और डेटा जैसी चीजें करना चाहते हैं, या अप्रासंगिक पते बिट्स को आउटपुट करने के लिए बहुत सारे पिन करते हैं (एलसीडी को बस एक एड्रेस बिट की आवश्यकता होगी)।
ILITEK द्वारा ILI9320, या Renesas द्वारा HD66789 को देखते हुए, एक दृष्टिकोण जो दिलचस्प लगेगा, SPI को समानांतर डेटा में बदलने के लिए CPLD का उपयोग करना होगा, और इसमें एक मोड शामिल होगा जो प्रति पिक्सेल पिक्सेल आउटपुट करेगा। रेनेसा डेटा शीट को देखते हुए, पिक्सेल-प्रति-बिट न्यूनतम हार्डवेयर (कोई CPLD आवश्यक) के साथ लिखना संभव हो सकता है, सभी समानांतर-पोर्ट डेटा बिट्स सीरियल-डेटा पिन को ट्रैक करते हैं, सब कुछ के लिए सीरियल मोड का उपयोग करके पिक्सेल तुलना / मुखौटा कार्यों को लिखता है और उनका उपयोग करता है, ताकि या तो ऑल-जीरो पिक्सल पारदर्शी हो और सभी-पिक्सेल पिक्सेल GRAM में चयनित बिट्स सेट करें, या सभी-पिक्सेल पिक्सेल पारदर्शी होंगे और ऑल-जीरो पिक्सेल चयनित बिट्स को साफ़ कर देंगे। IKITEK डेटा शीट के "फीचर्स" खंड से पता चलता है कि इसमें समान कार्यक्षमता है, लेकिन रजिस्टर मैप्स डॉन '
यह मानते हुए कि कोड मुख्य रूप से सॉलिड-कलर टेक्स्ट और ग्राफिक्स दिखा रहा होगा, एआरएम के एसपीआई पोर्ट को डिस्प्ले के समानांतर पोर्ट पर इंटरफ़ेस करने के लिए सीपीएलडी का उपयोग करने के लिए आदर्श दृष्टिकोण प्रतीत होगा, और सीपीएलडी को अग्रभूमि / पृष्ठभूमि रंगों के साथ लोड करने की अनुमति होगी। यह विशेष रूप से अच्छा होगा यदि किसी के पास "पारदर्शी" पिक्सेल लिखने का साधन हो। दो-रंग के बिटमैप के रूप में एक फ़ॉन्ट को देखते हुए, कोई फ़ॉन्ट डेटा को सीधे SPI पोर्ट में लोड कर सकता है; इससे फ़ॉन्ट डेटा को प्रत्येक दो ARM घड़ियों में एक पिक्सेल की दर से दिखाया जा सकेगा। दूसरी ओर, ऐसे प्रदर्शन नियंत्रण कार्य को संभालने के लिए पर्याप्त CPLD की लागत लगभग $ 2 होगी।
एक रंग एलसीडी के साथ एआरएम को इंटरफ़ेस करने का सबसे अच्छा तरीका क्या है, अगर उद्देश्य मुख्य रूप से ठोस-रंग पाठ या सरल (जैसे 16-रंग या 64-रंग) ग्राफिक्स दिखाना है?
संपादित करें
मैंने कई प्रकार के एलसीडी के साथ कई प्रकार के एलसीडी डिस्प्ले प्रोजेक्ट किए हैं, जिसमें कैरेक्टर-मोड एलसीडी, कस्टम 3: 1 मल्टीप्लेक्स सेगमेंट-आधारित है, जो मेरी अपनी ड्राइव विधि का उपयोग करते हुए, काले और सफेद ग्राफिक एलसीडी के साथ बिल्ट-इन कंट्रोलर, और ब्लैक-एंड -इसके लिए एलसीडी जिसमें मैंने एक माइक्रोकंट्रोलर के सामान्य-उद्देश्य डीएमए (चार-स्तरीय स्केल प्रदान करता है) के साथ इंटरफेस करने के लिए अपने खुद के सीपीएलडी-आधारित नियंत्रक को डिज़ाइन किया है। मुझे अपने आप पर गर्व है कि मैं झप्पी दिखाता हूं। ग्राफिक नियंत्रकों में से एक एक कुत्ता था, जिसे निरंतर डेटा लिखते समय भी पूर्ण स्क्रीन रिफ्रेश के लिए लगभग 1/10 सेकंड की आवश्यकता होती थी, लेकिन मेरे अधिकांश डिस्प्ले 1/50 सेकंड के भीतर भी काफी जटिल छवि प्रस्तुत कर सकते हैं।
मेरे द्वारा की गई कई परियोजनाएँ बैटरी से चलने वाली हैं, इसलिए वर्तमान ड्रा एक मुद्दा है। डीएमए आधारित प्रदर्शन नियंत्रक मैंने अच्छी तरह से काम किया था, लेकिन यह एक लाइन-संचालित परियोजना के लिए था। मेरा मानना है कि ग्राफिक्स एलसीडी से उचित वर्तमान ड्रॉ पाने का एकमात्र तरीका नियंत्रक का उपयोग करना है जो डिस्प्ले बफर और कॉलम ड्राइवरों को जोड़ता है। चिप्स के बीच बहुत सारे डिस्प्ले भेजने से हर फ्रेम एक बिट-प्रति-पिक्सेल डिस्प्ले पर भी बहुत अधिक ऊर्जा बर्बाद होती है; पिक्सेल प्रति सोलह बिट्स के साथ एक रंग प्रदर्शन पर, यह कहीं अधिक खराब होगा।
मैंने केवल रंग एलसीडी डेटा शीट देखना शुरू किया है; कई डिस्प्ले ILITEK ILI9320 के समान एक कंट्रोलर का उपयोग करते प्रतीत होते हैं, हालाँकि मैंने उस सामान्य डिज़ाइन के आधार पर नियंत्रकों के लिए जो भी डेटा शीट पाई हैं, सभी को "प्रारंभिक" के रूप में चिह्नित किया गया है। ILITEK के कुछ लोग मास्किंग और पारदर्शिता सुविधाओं का दावा करते हैं, लेकिन उनके लिए कोई रजिस्टर सूचीबद्ध नहीं करते हैं; मुझे नहीं पता कि वास्तविक चिप्स में ऐसी विशेषताएं हैं लेकिन "प्रारंभिक" डेटा शीट में उन्हें शामिल करने के लिए उपेक्षित किया गया है, या क्या उन्होंने सुविधाओं को छोड़ दिया है, लेकिन उनके बारे में उल्लेख करना भूल गए हैं। यदि व्यवहार में ऐसे सभी चिप्स में पारदर्शिता की विशेषताएं हैं, तो उनके लिए डिजाइन करना उचित होगा; यदि नहीं, तो नहीं।
मैं उम्मीद करूंगा कि अधिकांश परियोजनाओं के लिए एक विशिष्ट स्क्रीन में मध्यस्थता के आकार के ठोस रंग के फोंट के मध्यम संख्या में मनमाने ढंग से रखे गए पाठ शामिल होंगे। फ़ॉन्ट को संभवतः प्रति-पिक्सेल डेटा के रूप में संग्रहीत किया जाएगा। कॉर्टेक्स-एम 3 का उपयोग करते हुए, यदि मैं समानांतर डेटा के साथ डिस्प्ले लिखना चाहता था, तो दो पिक्सल लिखने के लिए कोड का "इनर लूप" शायद कुछ इस तरह से समाप्त होगा:
rol r0, r0, # 2; C में एक बिट प्राप्त करें, दूसरा N में आईटीसी strhcs r1, [r3, # DATA_OFS]; डेटा लिखें strhcc r2, [r3, # DATA_OFS]; डेटा लिखें strb r4, [r3, # CLOCK_SET_OFS]; क्लॉक हाई सेट करें strb r4, [r3, # CLOCK_CLR_OFS]; घड़ी कम सेट करें itmi strhmi r1, [r3, # DATA_OFS]; डेटा लिखें strhpl r2, [r3, # DATA_OFS]; डेटा लिखें strb r4, [r3, # CLOCK_SET_OFS]; क्लॉक हाई सेट करें strb r4, [r3, # CLOCK_CLR_OFS]; घड़ी कम सेट करें
दुनिया की सबसे तेज चीज नहीं। सेट / स्पष्ट घड़ी निर्देशों को लिखने को खत्म करने से मदद मिलेगी। मेरा अनुमान है कि दोनों घड़ी को खत्म करने का कोई अच्छा वास्तु-स्वतंत्र तरीका नहीं है, लेकिन एक बहुत ही सामान्य तरीका हो सकता है जो एक को खत्म करने की अनुमति देगा (जैसे कई चिप्स में एक काउंटर / पीडब्लूएम हो सकता है जो एक आउटपुट को पल्स कर सकता है। संक्षेप में एक मेमोरी स्टोर ऑपरेशन के जवाब में)।
एसपीआई पोर्ट का उपयोग करना और हार्डवेयर को एक पिक्सेल प्रति बिट में जोड़ना प्रदर्शन की गति को बहुत तेज कर देगा। यदि मास्किंग और पारदर्शिता के बिना प्रदर्शन का उपयोग करते हुए, CPLD को एक पता काउंटर शामिल करना होगा, और प्रत्येक पिक्सेल के लिए या तो पिक्सेल डेटा का एक शब्द देखना होगा या फिर निम्नलिखित पिक्सेल की स्थिति के लिए एक सेट-एड्रेस कमांड होगा (जिसके लिए उसे एक काउंटर की आवश्यकता होगी। )। इसके विपरीत, अगर किसी डिस्प्ले में मास्किंग और पारदर्शिता होती है, तो मुझे बस इतना करना होगा कि सीपीएलडी एक मोड का समर्थन करे, जहां यह 16 बिट्स में क्लॉक करने के बाद, प्रत्येक अतिरिक्त बिट डेटा के एक शब्द को डिस्प्ले के साथ प्रदर्शित करेगा। एलएसबी एसडीआई पिन को ट्रैक कर रहा है (यह सीपीएलडी का उपयोग करने के लिए आवश्यक भी नहीं हो सकता है - बस कुछ सामान्य तर्क चिप्स)। मैं जिस रंग को लिखना चाहता हूं, उसके लिए मैं पारदर्शिता रंग निर्धारित करूंगा, लेकिन एलएसबी के साथ फ़्लिप किया जाएगा।
मैं एक सुंदर डिजाइन के साथ नहीं आना चाहता जो मास्किंग और पारदर्शिता पर निर्भर करता है और फिर पता चलता है कि ऐसी विशेषताओं वाले एकमात्र डिस्प्ले में 30 सप्ताह का लीड समय होता है। दूसरी ओर, अगर इस तरह के डिस्प्ले कई विक्रेताओं के लिए उपलब्ध हैं और व्यापक रूप से उपलब्ध हैं, तो मैं एक अवर डिजाइन का उपयोग करने के लिए मुझे उपलब्धता के बारे में व्यामोह नहीं करना चाहता।