आज सुबह मैं Arduino की कैलिफ़ोर्निया शाखा के कार्यालय में गया। शैक्षिक कार्यक्रमों पर एक अंतर-बैठक हुई, जिसमें एएमडी प्रबंधक तैमूर पलताशेव ने मुझे आमंत्रित किया। घटना के अंत में, एक दिलचस्प चर्चा हुई:
अभी, स्कूली बच्चों को माइक्रोकंट्रोलर और एम्बेडेड प्रोसेसर (लेगो, रासबेरी पाइ, आदि) पर आधारित Arduino और अन्य उपकरणों को प्रोग्राम करने के लिए सिखाया जाता है। लेकिन 1970 के दशक में, स्कूली बच्चों को कैलिफ़ोर्निया में AND-NOT-NOT तत्वों और D- ट्रिगर्स के साथ एक ब्रेडबोर्ड, ट्रांजिस्टर और माइक्रोक्रिस्चुएट्स की एक छोटी सी डिग्री (7400 TTL, CMOS 4000 आदि) के साथ सर्किट इकट्ठा करने के लिए सिखाया गया था। यह प्रगति की तरह है - आप एक माइक्रोकंट्रोलर पर एक प्रोग्राम लिख सकते हैं जो जानबूझकर एक रोबोट हाथ को आगे बढ़ाएगा, जो कि व्यक्तिगत तर्क तत्वों पर करना मुश्किल है, लेकिन हम स्कूली बच्चों को कैसे बड़ा करते हैं जो खुद को माइक्रोकंट्रोलर डिजाइन कर सकते हैं (प्रोग्राम नहीं)?
उत्तर आम तौर पर स्पष्ट है: कारखाने में जारी किए गए व्यक्तिगत तर्क तत्वों और माइक्रोकंट्रोलर्स के बीच, आप प्रोग्रामेबल लॉजिक इंटीग्रेटेड सर्किट (FPGAs) लगा सकते हैं और बच्चों में दुनिया की एक और अच्छी तस्वीर बनाने के लिए "व्यक्तिगत तत्वों - FPGAs - microcontrollers" का उपयोग कर सकते हैं। जिसके पास न केवल सॉफ्टवेयर और एक छोटा इंटरफ़ेस है, बल्कि प्रणालीगत सोच है, जिसमें प्रोग्रामिंग और सर्किट्री के बीच कार्य वितरित किए जाते हैं, और, एक बहुत ही सरल हाई स्कूल स्तर पर, सभी स्तरों को समझा जा सकता है और प्रौद्योगिकी - ट्रांजिस्टर को अर्धचालकों के भौतिकी से फाटक के लिए - हस्तांतरण स्तर रजिस्टर करने के लिए - सूक्ष्म / ब्लॉक प्रोसेसर इकाई के स्तर पर - स्तर वास्तुकला / प्रणाली आदेशों के लिए - सी और पायथन में स्तरीय प्रोग्रामिंग करने के लिए - रोबोट के लिए और इतने पर।

डिजिटल सर्किटरी और एम्बेडेड प्रोग्रामिंग के पूरे मोर्चे पर स्कूली बच्चों को पढ़ाने का विचार सैद्धांतिक रूप से अच्छा लगता है, लेकिन इसे जीवन में कैसे लाया जाए?
Arduino में पहले से ही सस्ते FPGA बोर्ड हैं, और FPGA निर्माताओं ने जटिल लाइसेंस के बिना संश्लेषण के लिए मुफ्त सॉफ्टवेयर वितरित करना शुरू कर दिया है। हालांकि, निर्वाण के रास्ते में हैं:
- सर्किट संश्लेषण और उनके द्वारा FPGAs के विन्यास के लिए सॉफ्टवेयर मैत्री
- उपकरण के SystemVerilog विवरण भाषा में कोड के समानांतर मानसिक मॉडल और अनुक्रमिक प्रोग्रामिंग के सहज स्पष्ट मानसिक मॉडल के बीच एक गंभीर अंतर
- विशेष रूप से बच्चों की समस्याएं, उदाहरण के लिए: यहां तक कि छोटे स्कूली बच्चों (7-10 वर्ष) की विद्युत धारा, प्रतिरोध और कैपेसिटर, दहनशील तर्क तत्व, बाइनरी अंकगणितीय संचालन की अवधारणा को समझना अपेक्षाकृत आसान है - लेकिन क्रमिक तर्क (डी-ट्रिगर, काउंटर, शिफ्ट रजिस्टर) की समझ के साथ परिमित राज्य मशीनें) एक प्लग है, हालांकि पुराने छात्र इसे समझते हैं।
यदि आप नहीं जानते कि FPGAs क्या हैं, तो आप मेरे पुराने ग्रंथों को पढ़ सकते हैं
"FPGAs का उपयोग करके हार्डवेयर का विकास कैसे शुरू करें - चरण-दर-चरण निर्देश" , साथ ही
"उन प्रोग्रामरों के लिए चिप हार्डवेयर के डिज़ाइन का परिचय जो कभी भी ऐसा नहीं किया है" ।
मैं मानसिक मॉडल और बच्चों की समस्याओं के बारे में अलग-अलग पोस्ट लिखूंगा, और अब मैं केवल उपकरण का वर्णन करने के लिए भाषा में कोड को संश्लेषित करने के लिए सॉफ़्टवेयर की दोस्ती पर ध्यान केंद्रित करूंगा। यह सॉफ़्टवेयर किसी बच्चे के लिए स्क्रीनशॉट से भी भारी लगता है:
एल्टर क्वार्टस II:

Xilinx Vivado:

यह स्पष्ट है कि इस तरह के जीयूआई बच्चों के लिए उपयुक्त नहीं है। बच्चों को Arduino की तरह एक सरल, स्वच्छ GUI की आवश्यकता होती है, लेकिन हार्डवेयर विवरण भाषाओं को संश्लेषित करने के लिए कुछ बारीकियों के साथ - उदाहरण के लिए, GUI को सर्किट का आकार और अधिकतम घड़ी आवृत्ति दिखानी चाहिए, जिस पर सर्किट अनावश्यक विवरणों के साथ ओवरलोड किए बिना काम कर सकता है। और संश्लेषित योजना भी दिखाएं:

Arduino शैली में एक साधारण GUI लिखना बहुत कठिन कार्य नहीं होना चाहिए, क्योंकि Xilinx और Altera दोनों में अपने पैकेज में प्रोग्राम होते हैं जो कमांड लाइन से संश्लेषण और अनुरेखण करते हैं, और GUI इन कार्यक्रमों को कॉल कर सकते हैं। यह पता लगाना बाकी है कि लोकप्रिय ओपन सोर्स प्रोजेक्ट के रूप में कौन ऐसा करना चाहेगा। मैंने अपने रूसी, यूक्रेनी आदि के बीच देखने के लिए Arduino.org से अपने साथियों का वादा किया। संपर्क, यह कौन कर सकता है। मैं टिप्पणियों में इस पर चर्चा करने का सुझाव देता हूं।
प्रश्न: Verilog / SystemVerilog / VHDL में वर्णन से FPGA में सर्किट का संश्लेषण क्यों हुआ? आखिरकार, क्या उच्च-स्तरीय संश्लेषण के लिए एक उपकरण है जो आपको सी में एक एल्गोरिथ्म से एक सर्किट को संश्लेषित करने की अनुमति देता है?
उत्तर: इस तरह के तुला के पास उन योजनाओं के प्रकारों पर गंभीर प्रतिबंध हैं जो वे पैदा कर सकते हैं। स्टालों और अग्रेषण के साथ एक पाइपलाइन वाले प्रोसेसर को डिजाइन करने के लिए इस तरह के उपकरण पर प्रयास करें।
प्रश्न: लेकिन मैंने FPGA (
http://www.cnx-software.com/2016/10/21/alorium-xlr8-arduino-compatible-altera-max-0-fpga-board ) के साथ इस बहुत ही आर्कषक बोर्ड की वेबसाइट पर पाया
-sells-for-75 / ) कि यह सामान्य स्केच के साथ सामान्य Arduino वातावरण के साथ प्रोग्राम किया जा सकता है।
उत्तर: यह सिर्फ इतना है कि निर्माता ने AVR माइक्रोकंट्रोलर को संश्लेषित किया और इसे FPGA के लिए फ्लैश किया। FPGAs का उपयोग करना इस तरह से कॉफी स्टैंड के रूप में CD-ROM ड्राइव का उपयोग करने जैसा है। यह किया जा सकता है, लेकिन यह ड्राइव के सार को समाप्त नहीं करता है। आप FPGAs पर विभिन्न प्रकार की योजनाएँ बना सकते हैं, जो एक सरल और तत्व से शुरू होती हैं और एक प्रकाश सर्किट तरीके से पलकें झपकाते हैं, और न केवल अन्य लोगों द्वारा डिज़ाइन किए गए एक बड़े प्रोसेसर को फ्लैश करते हैं।