एआरएम द्वारा रंगीन एलसीडी पर सरल पाठ / ग्राफिक्स का कुशल प्रदर्शन


12

एआरएम-आधारित डिवाइस को डिजाइन करते समय, जो एक रंगीन एलसीडी पर सरल ग्राफिक्स प्रदर्शित करना चाहिए, किसी व्यक्ति को विशेष रूप से एआरएम या एलसीडी विक्रेता से बंधे बिना, तेजी से अपडेट की अनुमति देने के लिए चीजों को डिजाइन करने के बारे में सबसे अच्छा कैसे होना चाहिए? मेरी वर्तमान परियोजना एक काले और सफेद डिस्प्ले का उपयोग करती है जिसे एसपीआई पोर्ट द्वारा पीआईसी पर बिजली की तेजी से चलाया जा सकता है (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 सप्ताह का लीड समय होता है। दूसरी ओर, अगर इस तरह के डिस्प्ले कई विक्रेताओं के लिए उपलब्ध हैं और व्यापक रूप से उपलब्ध हैं, तो मैं एक अवर डिजाइन का उपयोग करने के लिए मुझे उपलब्धता के बारे में व्यामोह नहीं करना चाहता।


1
उत्तर नहीं है क्योंकि आपकी आवश्यकताओं में एक विशिष्ट एआरएम विक्रेता से बंधा नहीं है, लेकिन माइक्रोकंट्रोलर के एलपीसी एलएच 754 एक्सएक्सएक्स परिवार में एक एकीकृत एलसीडी ड्राइवर शामिल है।
केविन वर्मे

@reemrevnivek: छोटे एलसीडी ड्राइवरों के साथ कई एआरएम चिप्स हैं; मैं किसी भी चिप की कल्पना नहीं कर सकता जो किसी भी उपयोगी आकार के ग्राफिक्स के लिए उपयुक्त हो, जो एक ऐसे पैकेज में प्रदर्शित हो, जो चिप-ऑन-ग्लास परिदृश्य के अलावा किसी अन्य चीज में प्रयोग करने योग्य हो। एक चिप में एक नियंत्रक हो सकता है, लेकिन चिप-ऑन-ग्लास नियंत्रक के साथ एक एलसीडी अधिक शक्ति-कुशल और काम करने में आसान लगेगा। मैं आपके द्वारा बताए गए चिप की जांच करूंगा, हालांकि - दिलचस्प हो सकता है।
सुपरकाट

@supercat - मैं उन LCD के बारे में सोच रहा हूँ जिनमें RGB इंटरफ़ेस है: पिक्सेल घड़ी, फ्रेम सिंक, और लाइन सिंक कंट्रोल लाइन्स, एक समानांतर पिक्सेल डेटा बस के साथ। क्या आप COG नियंत्रित डिस्प्ले का उपयोग करने की उम्मीद कर रहे हैं?
केविन वर्मर

1
@reemrevnivek: यही मैं सोच रहा था। वे बहुत आम लग रहे हैं, क्योंकि वे सेल फोन की तरह पोर्टेबल बैटरी चालित उपकरणों के एक बहुत में उपयोग किया जाता है। अंतर्निहित नियंत्रक के साथ एक सीओजी डिस्प्ले एक से अधिक बिजली-कुशल होने वाला है जिसके लिए निरंतर-क्लॉक किए गए आरजीबी डेटा की आवश्यकता होती है।
सुपरकैट

@reemrevnivek: मैंने अभी और अधिक विस्तार से अपने प्रश्न को अपडेट किया है।
सुपरकैट

जवाबों:


7

एलसीडी ड्राइव करने के लिए एक माइक्रोकंट्रोलर का उपयोग करने में समस्या यह है कि एलसीडी को लगातार ध्यान देने की आवश्यकता होती है। इसे SPI पर संचालित CPLD (निश्चित रूप से DMA का उपयोग करके) के साथ कम किया जा सकता है, लेकिन फिर आप दूसरी समस्या में भाग लेते हैं: कलर एलसीडी को बहुत अधिक आवश्यकता होती हैआंकड़े का। काले और सफेद में 320x240 9.6KB पर सीमांत है, लेकिन इसे 24 बिट रंग बनाते हैं और अचानक आपको 1 सेकंड के 1/60 वें में 230KB डेटा देने की आवश्यकता होती है। (हालांकि, यह मत भूलो कि आप 4-बिट, 16-रंग नियंत्रण केवल एक सेटिंग में कम 20 बिट्स टाई करके प्राप्त कर सकते हैं)। एक 24-बिट फ्रेम बफर अब अधिकांश माइक्रोकंट्रोलर पर ऑनबोर्ड रैम में फिट नहीं होता है, और आपके पास शायद बाहरी रैम चिप से पढ़ने, डेटा को देखने और अभी भी अन्य प्रसंस्करण करने का समय नहीं है। CPLD (या FPGA) और RAM चिप के साथ ऐसा करने की कोशिश आपको $ 2 की कीमत में अच्छी तरह से मिल जाती है जिसके कारण आपको अपने प्रश्न को गंवाना पड़ता है।

एक रंग एलसीडी के साथ एक माइक्रोकंट्रोलर को बाधित करने का पारंपरिक समाधान SSD1963 की तरह एक डिस्प्ले कंट्रोलर है। यहाँ एक बहुत ही सरल ब्लॉक आरेख है:

राम बफर और रजिस्टरों के लिए MCU, और एलसीडी इंटरफ़ेस के लिए

एक बड़े रैम फ्रेम बफर के समानांतर इनपुट (अनुवाद: $ 2 से अधिक) एक रजिस्टर-विन्यास योग्य समानांतर एलसीडी इंटरफ़ेस के साथ हस्तक्षेप किया गया। समानांतर इनपुट आमतौर पर एक मेमोरी बस इंटरफ़ेस के साथ संगत है।

रंग एलसीडी बाजार हमेशा वेब पर खोजने के लिए आसान नहीं होता है, आमतौर पर केवल ओईएम का डोमेन होता है, बाकी कंपनियों से डिस्प्ले खरीदने के साथ जो डिस्प्ले के साथ नियंत्रक को एकीकृत करता है। मुझे जो सबसे अच्छा संसाधन मिला है वह है क्रिस्टल फोंट्ज़, विशेष रूप से ग्राफिक एलसीडी चुनने पर यह पेज । नियंत्रकों के लिए नीचे स्क्रॉल करें, जिसमें निम्नलिखित विकल्प शामिल हैं (ध्यान दें: सभी रंग नियंत्रक नहीं हैं):

  • एप्सों S1D13521B01 E इंक ब्रोडशीट (1 मॉड्यूल)
  • एप्सों S1D13700 (11 मॉड्यूल)
  • Epson SED1520 संगत (8 मॉड्यूल)
  • हिमाक्स HX8345 संगत (1 मॉड्यूल)
  • ILITek ILI9325 संगत (3 मॉड्यूल)
  • KS0107 / KS0108 संगत (26 मॉड्यूल)
  • Novatek NT7534 (14 मॉड्यूल)
  • Orise Technology OTM2201A (1 मॉड्यूल)
  • Orise Technology SPFD5420A (1 मॉड्यूल)
  • RAAO RA8835 (1 मॉड्यूल)
  • सान्यो LC7981 (13 मॉड्यूल)
  • चीन वेल्थ SH1101A (2 मॉड्यूल)
  • साइट्रोनिक्स ST7920 (29 मॉड्यूल)
  • सोलोमन SSD1303 (1 मॉड्यूल)
  • सोलोमन SSD1305 (9 मॉड्यूल)
  • सोलोमन SSD1325 (2 मॉड्यूल)
  • सोलोमन SSD1332 (1 मॉड्यूल)
  • सोलोमन SSD2119 (2 मॉड्यूल)
  • ST ST88105 (1 मॉड्यूल)
  • तोशिबा T6963 (23 मॉड्यूल)

@reemrevnivek: मैं बिल्ट-इन नियंत्रकों के साथ रंगीन एलसीडी के बारे में सोच रहा था। वे बहुत सामान्य प्रतीत होते हैं, लेकिन जिन लोगों को मैंने देखा है वे आमतौर पर सीपीयू को प्रति पिक्सेल कई बिट्स में देखने की उम्मीद करते हैं, भले ही एक सामान्य प्रदर्शन परिदृश्य ठोस-रंग पाठ का प्रदर्शन हो। मैंने सीपीएमएल का उपयोग करते हुए एक डीएमए-आधारित 4-स्तरीय ग्रेस्केल एलसीडी नियंत्रक लागू किया, और यह बहुत अच्छी तरह से काम करता था, लेकिन यह एक लाइन-संचालित डिवाइस था।
सुपरकैट

1
@supercat - बहुत कम एलसीडी कंट्रोलर एक सीपीयू की अपेक्षा करते हैं कि प्रत्येक फ्रेम के लिए एक बिट प्रति पिक्सेल में कई बिट्स देखें। वे आमतौर पर समर्पित ग्राफिक्स हार्डवेयर की उम्मीद कर रहे हैं । असल में, एक बार जब आप काफी बड़े हो जाते हैं (यानी> 128 * 128) RGB डिस्प्ले, स्क्रीन के लिए इमेज जेनरेट करने के लिए आवश्यक प्रोसेसिंग पावर काफी बड़ी होती है जो किसी प्रकार का समर्पित GPU (भले ही वह MCU में इंटीग्रेटेड हो) बहुत बहुत हमेशा मौजूद है।
कॉनर वुल्फ

1
@supercat - लेकिन आप जो वर्णन करते हैं, वह एक विशेष CPLD है जो ASCII को रूपांतरणों को तेज करने के लिए करता है, मूल रूप से (कस्टम) विशेष ग्राफिक्स हार्डवेयर है । मैं मूल रूप से कह रहा हूं कि पहिया का फिर से आविष्कार न करें, और यह केवल एक वीडियो-इंटरफ़ेस के साथ एमसीयू खरीदने के लिए आसान और अधिक लागत-कुशल है, फिर स्वयं को डिज़ाइन करें।
कॉनर वुल्फ

1
वैसे भी, यदि आप वास्तव में अपना रोल करना चाहते हैं, तो मैं कहूंगा कि दोहरे पोर्ट SRAM IC का उपयोग करें, और एक पोर्ट का उपयोग LCD के लिए, और दूसरा MCU के लिए। यह MCU को मेमोरी कंटेंट को उस गति से बदलने देता है जो वह चाहता है, और LCD इसे ताज़ा दर पर चला सकता है।
कॉनर वुल्फ

1
@ फ़ेक नाम: यह रूपांतरण करने के लिए ASCII नहीं होगा। यह मूल रूप से बिट-प्रति-पिक्सेल बहु-प्रति-पिक्सेल रूपांतरण के लिए होगा। मुझे लगता है कि आप गलत समझ रहे हैं कि मैं क्या देख रहा हूं। मैं उन डिस्प्ले की तलाश नहीं कर रहा हूं जिनमें केवल ड्राइवर हों , बल्कि जिनमें ड्राइवर और कंट्रोलर शामिल हों , इसलिए स्क्रीन पर सामान बदलने पर उन्हें केवल डेटा फीड करना होगा।
सुपरकैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.