विषयसूची:
वीडियो: दस बिट कंप्यूटर - वीएचडीएल: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
द्वारा निर्मित: टायलर स्टार और एज़ेडेन गज़ालिक
परिचय
यह परियोजना कैल पॉली एसएलओ में सीपीई 133 के लिए अंतिम परियोजना के हिस्से के रूप में पूरी हुई थी। यह समझने वाले किसी व्यक्ति के लिए यह एक महान परियोजना है कि कंप्यूटर अपने निम्नतम स्तर पर कैसे कार्य करता है और वे अपने कार्यों को कैसे प्राप्त करते हैं। परियोजना को अल्बर्ट माल्विनो की पुस्तक डिजिटल कंप्यूटर इलेक्ट्रॉनिक्स में वर्णित 8-बिट एसएपी कंप्यूटर के बाद तैयार किया गया है। हालांकि, हमने अधिक ऑप कोड (ऑपरेशन कोड) के कार्यान्वयन की अनुमति देने के लिए कंप्यूटर को 10-बिट तक बढ़ा दिया है। उपयोगकर्ता कुछ निर्देशों को इनपुट करके कंप्यूटर को संचालन का एक सेट करने के लिए प्रोग्राम कर सकता है।
सिस्टम और सर्किट आर्किटेक्चर:
कंप्यूटर VHDL में लिखा गया है और Digilent के बेसिस 3 बोर्ड में शामिल होगा। इनपुट्स को बोर्ड के निचले हिस्से में स्थित स्विच में मैप किया जाएगा। रीसेट और लिखने के कार्यों के लिए दो स्पर्श स्विच का उपयोग किया जाएगा। आउटपुट बोर्ड के 7 सेगमेंट डिस्प्ले पर प्रदर्शित होगा।
कंप्यूटर छोटे सर्किट (मॉड्यूल) में टूट जाएगा जो विभिन्न कार्यों को संभालता है। प्रत्येक मॉड्यूल को निम्नलिखित चरणों में विस्तार से समझाया जाएगा।
चरण 1: सामग्री
इस प्रोजेक्ट के लिए Digilent का Basys3 FPGA बोर्ड और बोर्ड को आपके कंप्यूटर से जोड़ने के लिए एक माइक्रो USB वायर की आवश्यकता है।
चरण 2: सर्किट मॉड्यूल का ब्लॉक आरेख
ऊपर दिए गए ब्लॉक आरेख विभिन्न सर्किट मॉड्यूल दिखाते हैं जो 10-बिट कंप्यूटर बनाते हैं। ऊपर दिए गए आरेखों में दिखाए गए प्रत्येक व्यक्तिगत भागों/मॉड्यूल के विवरण नीचे दिए गए हैं।
कार्यक्रम गणक
इनपुट का विवरण: प्रोग्राम काउंटर में एक नंबर लोड करने के लिए इनपुट एक 5 बिट इनपुट है। सीपी जब ऊंचा होता है तो काउंटर घड़ी के किनारों को गिरने पर गिना जाता है। Clr काउंटर को 0 पर रीसेट करता है। जब उच्च काउंटर वर्तमान गणना को आउटपुट करता है तो Ep। एसपी जब उच्च काउंटर इनपुट पर संख्या को गिनती सेट करता है।
-
आउटपुट का विवरण:
आउटपुट LEDS 0-15 पर उपयोग के लिए गणना की एक प्रति है। गणना वर्तमान गणना को आउटपुट करती है।
- सिस्टम में समग्र स्थान: यह काउंटर उस मेमोरी लोकेशन का ट्रैक रखता है जिसमें प्रोग्राम है। सभी प्रोग्राम मेमोरी एड्रेस 00000 (0) से शुरू होते हैं और 11111 (31) तक जाते हैं, जब तक कि हॉल्ट का उपयोग नहीं किया जाता है। जंप स्टेटमेंट में, प्रोग्राम काउंटर उस पते से गिनना जारी रखता है जिस पर प्रोग्राम कूद रहा है।
इनपुट एमयूएक्स
- इनपुट का विवरण: पता स्विच 11 से 15 तक इनपुट लेता है। MAR, MAR के रूप में उपयोग किए जाने वाले 10 बिट रजिस्टर से इनपुट लेता है। प्रोग्राम नियंत्रित करता है कि कौन से इनपुट को आउटपुट के लिए रूट किया जाए।
- आउटपुट का विवरण: आउटपुट चयनित इनपुट को रैम में रूट करता है।
- सिस्टम में समग्र स्थान: यह एमयूएक्स निर्धारित करता है कि पते को स्विच या बस से रैम तक रूट करना है या नहीं। प्रोग्राम मोड में स्विच से एड्रेस को रूट किया जाता है और रन मोड में बस से एड्रेस को रूट किया जाता है।
राममक्स
- इनपुट का विवरण: उपयोगकर्ता इनपुट वह इनपुट है जो उपयोगकर्ता प्रोग्राम मोड के दौरान दर्ज करता है। aRegInput A रजिस्टर में निहित डेटा है, इसका उपयोग मूव ऑपरेशन के दौरान किया जाता है। नियंत्रण इस एमयूएक्स के लिए चयन है।
- आउटपुट का विवरण: आउटपुट रैम के लिए 10-बिट डेटा इनपुट है।
- सिस्टम में समग्र स्थान: यह एमयूएक्स रैम मॉड्यूल में उपयोग किए जाने वाले 10-बिट इनपुट डेटा को आउटपुट करता है। जब नियंत्रण बिट अधिक होता है, तो एमयूएक्स उस डेटा को आउटपुट करता है जिसे उपयोगकर्ता ने प्रोग्राम मोड में दर्ज किया था। जब नियंत्रण बिट कम होता है, तो MUX नियंत्रण बस में डेटा को आउटपुट करता है।
राममॉड्यूल
- इनपुट का विवरण: इनपुटडेटा रैम में संग्रहीत किया जा रहा डेटा है। inputAddress वह स्थान है जहाँ डेटा संग्रहीत किया जा रहा है। प्रोग्राम इंगित करता है कि कंप्यूटर प्रोग्राम या रन मोड में है या नहीं। readWrite इंगित करता है कि कोई पढ़ने या लिखने का कार्य हो रहा है या नहीं। notCE RAM मॉड्यूल के लिए नियंत्रण बिट है। मूव इंगित करता है कि एक मूव ऑपरेशन किया जा रहा है।
- आउटपुट का विवरण: outputDataToBus वह डेटा है जो RAM से बस तक जाता है। आउटपुटडेटा और आउटपुट पता डेटा और पता हैं जो निर्देश रजिस्टर में जाते हैं।
- सिस्टम में समग्र स्थान: रैम प्रोग्राम चलाने से पहले मेमोरी में प्रोग्राम और डेटा स्टोरेज की अनुमति देता है। एक बार प्रोग्राम चलने के बाद, RAM को MAR से एक पता प्राप्त होता है और उस पते पर डेटा को बस में आउटपुट करता है।
पतारोम
- इनपुट का विवरण: opCode वह इनपुट होता है जिसमें कंप्यूटर द्वारा किए जा रहे opcode का पता होता है
- आउटपुट का विवरण: opCodeStart स्मृति पता है जो संबंधित opCode के पहले माइक्रो-निर्देश स्थान को इंगित करता है।
- सिस्टम में ओवरऑल प्लेस: यह मॉड्यूल लैच्ड माइक्रो-इंस्ट्रक्शन लेता है और उस मेमोरी लोकेशन को आउटपुट करता है जो उस माइक्रो-इंस्ट्रक्शन सीक्वेंस की शुरुआत से मेल खाती है।
रिंग काउंटर
- इनपुट्स का विवरण: रीसेट काउंटर को वापस 100000 (पहला "टी स्टेट") पर सेट करता है। घड़ी के गिरते किनारे पर क्लक काउंटर को एक-एक करके बढ़ाता है। एनओपी इंगित करता है कि वर्तमान स्थिति/चक्र एक "कोई संचालन नहीं" चक्र है।
- आउटपुट का विवरण: गिनती काउंटर का आउटपुट है।
- सिस्टम में समग्र स्थान: रिंग काउंटर प्री-सेटटेबल काउंटर को नियंत्रित करता है और प्रत्येक निर्देश चक्र (T1-T6) में छह माइक्रो-स्टेप्स को चित्रित करता है।
पूर्व काउंटर
- इनपुट्स का विवरण: opCodeStart, किए जा रहे opCode के लिए माइक्रो-निर्देशों की मेमोरी लोकेशन है। T1 उच्च होने पर काउंटर को 0 पर रीसेट करता है। जब T3 अधिक होता है, तो opCodeStart लोड हो जाता है और शेष 3 चक्रों (T4-T6) के लिए उस स्थान से गिनती जारी रहती है। Clr काउंटर को 0 पर सेट करता है। Clk बढ़ते हुए किनारे पर एक-एक करके काउंटर करता है।
- आउटपुट का विवरण: controlWordLocation निष्पादित किए जाने वाले नियंत्रण शब्द की मेमोरी लोकेशन को आउटपुट करता है।
- सिस्टम में समग्र स्थान: प्रत्येक ऑप-कोड में 3 सूक्ष्म निर्देश होते हैं। पहले 3 चक्रों (लाने के चक्र) के लिए 0 से शुरू होकर काउंटर 1 से बढ़ता है। फिर काउंटर को रिंग काउंटर द्वारा opCodeStart पर पता लोड करने के लिए ट्रिगर किया जाता है और शेष 3 चक्रों के लिए 1 से वृद्धि की जाती है। इस तरह प्रीकाउंटर किए जाने वाले सूक्ष्म निर्देशों के अनुक्रम को नियंत्रित करता है।
कंट्रोलरोम
- इनपुट्स का विवरण: controlWordLocation controlWord का पता है जिसे controlROM आउटपुट करेगा। एनओपी इंगित करता है कि स्थान "कोई संचालन नहीं" स्थान है।
- आउटपुट का विवरण: controlWord वह नियंत्रण शब्द है जो वांछित संचालन करने के लिए विभिन्न कंप्यूटर मॉड्यूल को सक्षम / अक्षम करता है।
- सिस्टम में समग्र स्थान: यह मॉड्यूल प्रीकाउंटर से मेमोरी लोकेशन को डिकोड करता है और वांछित ऑपरेशन के लिए कंट्रोल वर्ड को आउटपुट करता है।
आलू
- इनपुट का विवरण: ए और बी रजिस्टर ए और रजिस्टर बी से इनपुट हैं, जिस पर एएलयू अंकगणित और तर्क संचालन करता है। जब घटाव सक्रिय होता है, तो यह इंगित करता है कि B को A से घटाया जा रहा है।
- आउटपुट का विवरण: परिणाम ए और बी को जोड़ने, या ए से बी घटाने का परिणाम है। आउटपुट अधिक से अधिक, कम से कम, और बराबर यह इंगित करने के लिए कि (एबी, या ए = बी) और सशर्त जंप मॉड्यूल में उपयोग किया जाता है। त्रुटि सक्रिय होने पर ओवरफ़्लो या अंडरफ़्लो इंगित करती है।
- सिस्टम में समग्र स्थान: ALU में कंप्यूटर द्वारा किए गए अंकगणित और तर्क संचालन के लिए तर्क होते हैं। यह मॉड्यूल दो 10-बिट बाइनरी नंबर जोड़ और घटा सकता है। ALU यह भी निर्धारित कर सकता है कि क्या A>B, A
सशर्त जेएमपी
- इनपुट का विवरण: इनपुटकाउंट का उपयोग करंट काउंट को लैच करने के लिए किया जाता है। inputAddress का उपयोग उस पते को कुंडी लगाने के लिए किया जाता है जिस पर छलांग लगाई जाएगी। loadFromRegister जब कम लैच इनपुट एड्रेस। लोडकाउंट जब कम लैच इनपुटकाउंट। जब outputEnable कम होता है तो आउटपुट को जम्प करने के लिए पते पर सेट किया जाता है। gT, iT, और eQ निर्धारित करते हैं कि किस स्थिति की जाँच की जा रही है। अधिक से अधिक, कम से कम, और बराबर एएलयू से इनपुट हैं जो ए और बी के बीच तुलना के परिणाम को इंगित करते हैं। क्लक के बढ़ते घड़ी के किनारे पर इनपुटकाउंट और इनपुट एड्रेस को रजिस्टरों में पढ़ा जाता है।
- आउटपुट का विवरण: outputJmp वह पता है जिसे प्रोग्राम काउंटर पढ़ेगा।
- सिस्टम में समग्र स्थान: यह मॉड्यूल कंप्यूटर के लिए सशर्त और गैर-सशर्त कूद को संभालता है। इनपुट gT, iT, और eQ के आधार पर, मॉड्यूल निर्धारित करता है कि किस स्थिति की जाँच करनी है और क्या वह स्थिति सही है या गलत। यदि स्थिति सही है, तो यह निर्देश के पते को कूदने के लिए आउटपुट करेगा, अन्यथा, यह अगले निर्देश की गिनती को आउटपुट करता है।
बिन टूबीसीडी
- इनपुट का विवरण: बाइनरी कोडेड दशमलव में कनवर्ट करने के लिए 10 बिट संख्या को नंबर दें।
- आउटपुट का विवरण: बाइनरी संख्या के सैकड़ों स्थान में सैकड़ों अंक। द्विआधारी संख्या के दहाई के स्थान पर अंक को दहाई करता है। बाइनरी संख्या के इकाई के स्थान पर अंक।
- सिस्टम में समग्र स्थान: यह मॉड्यूल हमारे चार अंकों के डिस्प्ले ड्राइवर के लिए 7 सेगमेंट डिस्प्ले पर दशमलव में संख्या प्रदर्शित करने के लिए आउटपुट रजिस्टर से 10 बिट संख्या को बीसीडी में परिवर्तित करता है।
चार अंक चालक
- इनपुट का विवरण: संख्या 16 बिट बाइनरी इनपुट है जो डिकोडर को संचालित होता है। inClk बेसिस बोर्ड की आंतरिक घड़ी है और इसका उपयोग क्लॉक डिवाइडर के लिए किया जाता है। RST अंकों को चलाने के लिए उपयोग की जाने वाली घड़ी को रीसेट करता है।
- आउटपुट का विवरण: एनोड निर्धारित करता है कि कौन सा अंक स्थान प्रकाशित किया जाएगा। अंक डिकोडर का इनपुट नंबर है।
- सिस्टम में समग्र स्थान: यह मॉड्यूल डिकोडर को डिस्प्ले पर बीसीडी नंबर आउटपुट करने के लिए प्रेरित करता है।
विकोडक
- इनपुट का विवरण: इनपुट नंबर वह अंक है जो ड्राइवर से आता है और जिसे डिकोड किया जाएगा।
- आउटपुट का विवरण: कैथोड निर्धारित करता है कि वांछित अंक प्रदर्शित करने के लिए कौन से कैथोड चालू किए जाएंगे।
- सिस्टम में समग्र स्थान: यह मॉड्यूल उस अंक को डिकोड करता है जिसे 7 सेगमेंट डिस्प्ले पर प्रदर्शित किया जाना है।
फोरडिजिट डिस्प्ले
- इनपुट का विवरण: संख्या 7 सेगमेंट डिस्प्ले पर प्रदर्शित होने वाली संख्या है। त्रुटि इंगित करती है कि प्रदर्शन को "इरेट" कब पढ़ना चाहिए। Clk वह घड़ी संकेत है जिस पर डिस्प्ले चल रहा है। यह सिग्नल लगभग 60 हर्ट्ज़ का होना चाहिए ताकि डिस्प्ले एक साथ सभी 4 अंकों के स्थानों को दिखा सके।
- आउटपुट का विवरण: एनोड निर्धारित करता है कि कौन सा अंक स्थान सक्षम है। कैथोड निर्धारित करता है कि वांछित अंक प्रदर्शित करने के लिए कौन से कैथोड सक्रिय हैं।
- सिस्टम में समग्र स्थान: यह मॉड्यूल 7 सेगमेंट डिस्प्ले पर एक नंबर प्रदर्शित करता है। प्रदर्शन का उपयोग करने के लिए कैथोड और एनोड सक्रिय करने वाली जानकारी के लिए बेसिस 3 बोर्ड निर्देश मैनुअल देखें। जब त्रुटि बिट अधिक होती है, तो प्रदर्शन "इरेट" दिखाता है।
आउटपुटएमयूएक्स
- इनपुट का विवरण: progModeInput निर्धारित करता है कि प्रोग्रामिंग मोड के दौरान कौन से एलईडी चालू हैं। runModeInput निर्धारित करता है कि रन मोड के दौरान कौन से एलईडी चालू हैं। मोड चयन एमयूएक्स के लिए चयन या नियंत्रण बिट है।
- आउटपुट का विवरण: एलईडी आउटपुट इंगित करता है कि कौन सी एलईडी चालू की जाएगी।
- सिस्टम में समग्र स्थान: उस मोड के आधार पर जिसमें कंप्यूटर (प्रोग्राम या रम) है, MUX अलग-अलग एलईडी को चालू करेगा। प्रोग्राम मोड में (मोडसेलेक्ट '0' है), एमयूएक्स उस मेमोरी लोकेशन से मिलता-जुलता है जिसमें कंप्यूटर है और उसमें क्या है। रन मोड में (मोडसेलेक्ट '1' है), एमयूएक्स का उपयोग डिबगिंग के लिए किया जाता है लेकिन कुछ और प्रदर्शित करने के लिए सेट किया जा सकता है।
क्लॉक डिवाइडर
- इनपुट्स का विवरण: स्टॉप बस से पांच एमएसबी बिट्स को पढ़ता है ताकि हॉल्ट कमांड ('11111') का पता लगाया जा सके और घड़ी को रोक दिया जा सके। inputClk बेसिस 3 बोर्ड का आंतरिक घड़ी संकेत है।
- आउटपुट का विवरण: ouputClk नई घड़ी है जिसे धीमा कर दिया गया है।
- सिस्टम में समग्र स्थान: इस घड़ी का उपयोग कंप्यूटर को धीमा करने के लिए किया जाता है ताकि उपयोगकर्ता यह निर्धारित कर सके कि क्या हो रहा है। घड़ी बहुत तेज चल सकती है, हालांकि, यह वर्तमान में 2 हर्ट्ज पर सेट है।
ट्राईस्टेटबफर
- इनपुट का विवरण: दीन बफर में जाने वाला 5 बिट इनपुट है। ईपी नियंत्रण बिट है।
- आउटपुट का विवरण: Dout बफर का 5 बिट आउटपुट है
- सिस्टम में समग्र स्थान: जब नियंत्रण बिट एप सक्रिय होता है, तो बफर इनपुट को आउटपुट करता है। जब नियंत्रण बिट सक्रिय नहीं होता है, तो बफ़र कुछ भी आउटपुट नहीं करता है।
दस बिट डी रजिस्टर
- इनपुट का विवरण: Dbus वह इनपुट है जिसे रजिस्टर करना है। Clk रजिस्टर को राइजिंग क्लॉक एज पर डेटा में पढ़ने की अनुमति देता है। एआरएसटी रजिस्टर को अतुल्यकालिक रूप से 0 पर सेट करता है। जब outputEnable कम होता है, तो रजिस्टर की सामग्री आउटपुट होती है। जब रीडइन कम होता है, तो रजिस्टर बढ़ते हुए घड़ी के किनारे पर Dbus को पकड़ लेता है।
- आउटपुट का विवरण: क्यूबस रजिस्टर का आउटपुट है
- सिस्टम में समग्र स्थान: रजिस्टर का उपयोग पूरे कंप्यूटर में कई बार किया जाता है और संचालन करते समय सूचनाओं को संग्रहीत करने के लिए उपयोग किया जाता है।
फाइवबिटडीआररजिस्टर
- इनपुट का विवरण: Dbus वह इनपुट है जिसे रजिस्टर करना है। Clk रजिस्टर को राइजिंग क्लॉक एज पर डेटा में पढ़ने की अनुमति देता है। एआरएसटी रजिस्टर को अतुल्यकालिक रूप से 0 पर सेट करता है। जब outputEnable कम होता है, तो रजिस्टर की सामग्री आउटपुट होती है। जब रीडइन कम होता है, तो रजिस्टर बढ़ते हुए क्लॉक एज पर Dbus को लैच कर देता है।
- आउटपुट का विवरण: क्यूबस रजिस्टर का आउटपुट है।
- सिस्टम में समग्र स्थान: रजिस्टर का उपयोग पूरे कंप्यूटर में कई बार किया जाता है और संचालन करते समय सूचनाओं को संग्रहीत करने के लिए उपयोग किया जाता है।
चरण 3: कोड
नीचे एक फ़ोल्डर है जिसमें 10-बिट कंप्यूटर के लिए बाधा और स्रोत फ़ाइलें हैं।
चरण 4: डेमो और नमूना कोड
ऊपर दिया गया वीडियो दिखाता है कि बेसिस 3 एफपीजीए बोर्ड पर 10-बिट कंप्यूटर को कैसे प्रोग्राम किया जाए। ऑप-कोड युक्त एक पीडीएफ और एक नमूना कार्यक्रम भी नीचे संलग्न है।
सिफारिश की:
मोटो का उपयोग करके सर्वो मोटर्स को कैसे चलाएं: माइक्रो के साथ बिट: बिट: 7 कदम (चित्रों के साथ)
मोटो का उपयोग करके सर्वो मोटर्स को कैसे चलाएं: माइक्रो के साथ बिट: माइक्रो: बिट की कार्यक्षमता को बढ़ाने का एक तरीका है मोटो: बिट नामक बोर्ड का उपयोग स्पार्कफुन इलेक्ट्रॉनिक्स (लगभग $ 15-20) द्वारा। यह जटिल दिखता है और इसमें कई विशेषताएं हैं, लेकिन इससे सर्वो मोटर्स को चलाना मुश्किल नहीं है। मोटो: बिट आपको
रास्पबेरी पाई MMA8452Q 3-एक्सिस 12-बिट/8-बिट डिजिटल एक्सेलेरोमीटर पायथन ट्यूटोरियल: 4 कदम
रास्पबेरी पाई MMA8452Q 3-एक्सिस 12-बिट/8-बिट डिजिटल एक्सेलेरोमीटर पायथन ट्यूटोरियल: MMA8452Q एक स्मार्ट, लो-पावर, थ्री-एक्सिस, कैपेसिटिव, माइक्रोमैचिन्ड एक्सेलेरोमीटर है जिसमें 12 बिट रिज़ॉल्यूशन है। एक्सेलेरोमीटर में एम्बेडेड फ़ंक्शंस की सहायता से लचीले उपयोगकर्ता प्रोग्राम योग्य विकल्प प्रदान किए जाते हैं, जो दो इंटरअप के लिए कॉन्फ़िगर करने योग्य होते हैं
एक माइक्रो प्रोग्रामिंग: बिट रोबोट और जॉयस्टिक: माइक्रोपायथन के साथ बिट नियंत्रक: 11 कदम
एक माइक्रो प्रोग्रामिंग: बिट रोबोट और जॉयस्टिक: माइक्रोपायथन के साथ बिट कंट्रोलर: रोबोकैम्प 2019 के लिए, हमारे ग्रीष्मकालीन रोबोटिक्स शिविर, 10-13 आयु वर्ग के युवा सोल्डरिंग, प्रोग्रामिंग और बीबीसी माइक्रो: बिट आधारित 'एंटीवेट रोबोट' का निर्माण कर रहे हैं, साथ ही साथ प्रोग्रामिंग भी कर रहे हैं। रिमोट कंट्रोल के रूप में उपयोग करने के लिए एक माइक्रो: बिट। यदि आप वर्तमान में रोबोकैम्प में हैं, स्की
रास्पबेरी पाई MMA8452Q 3-एक्सिस 12-बिट/8-बिट डिजिटल एक्सेलेरोमीटर जावा ट्यूटोरियल: 4 कदम
रास्पबेरी पाई MMA8452Q 3-एक्सिस 12-बिट/8-बिट डिजिटल एक्सेलेरोमीटर जावा ट्यूटोरियल: MMA8452Q एक स्मार्ट, लो-पावर, थ्री-एक्सिस, कैपेसिटिव, माइक्रोमैचिन्ड एक्सेलेरोमीटर है जिसमें 12 बिट रिज़ॉल्यूशन है। एक्सेलेरोमीटर में एम्बेडेड फ़ंक्शंस की सहायता से लचीले उपयोगकर्ता प्रोग्राम योग्य विकल्प प्रदान किए जाते हैं, जो दो इंटरअप के लिए कॉन्फ़िगर करने योग्य होते हैं
पिमोरोनी एनविरो के साथ प्रकाश और रंग मापन: माइक्रो के लिए बिट: बिट: 5 कदम
पिमोरोनी एनविरो के साथ प्रकाश और रंग माप: माइक्रो के लिए बिट: मैं कुछ उपकरणों पर काम कर रहा था जो पहले प्रकाश और रंग माप की अनुमति देते थे और आपको इस तरह के माप के पीछे सिद्धांत के बारे में बहुत कुछ मिल सकता है, यहां और यहां निर्देश। पिमोरोनी ने हाल ही में जारी किया गया एनवायरो: बिट, एम के लिए एक ऐड-ऑन