جدول المحتويات:
- الخطوة 1: تصميم الدائرة التي ستمثلها "FPGA"
- الخطوة 2: أدخل FPGA
- الخطوة 3: من FPGA إلى Arduino
- الخطوة 4: من Arduino إلى DIP Chip على لوحة الخبز
- الخطوة 5: الخاتمة
فيديو: Arduino باعتباره Breadboard FPGA رخيص: 5 خطوات (بالصور)
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:40
يمكن أن يكون تصميم الدوائر المنطقية للأجهزة أمرًا ممتعًا. كانت طريقة المدرسة القديمة للقيام بذلك هي بوابات NAND ، على لوح الخبز ، الموصلة بأسلاك توصيل. لا يزال هذا ممكنًا ، لكن الأمر لا يتطلب الكثير قبل أن يخرج عدد البوابات عن السيطرة. الخيار الأحدث هو استخدام FPGA (مصفوفة البوابة القابلة للبرمجة الميدانية). يمكن لهذه الشرائح إعادة توصيل نفسها لتصبح أي دائرة منطقية رقمية يمكنك تصميمها ، ولكنها ليست رخيصة ومتاحة بسهولة. سأوضح كيف يمكن استبدال FPGA هذا بشريحة Atmega رخيصة من Arduino UNO ، مما يضع بشكل فعال الدائرة الرقمية في حزمة DIP ، وهي صديقة للغاية للوح.
الخطوة 1: تصميم الدائرة التي ستمثلها "FPGA"
سأبني أفعى 2 بت + 2 بت. يأخذ زوجين من دبابيس المدخلات المنطقية ، ويخرج ثلاثة أضعاف من دبابيس الإخراج.
للقيام بذلك باستخدام بوابات NAND ، انظر التخطيطي في الصورة. يحتاج إلى 14 بوابة NAND. لقد استخدمت 4 شرائح NAND بوابة TTL رباعية ، وقمت بتوصيلها على لوح الخبز.
لقد أضفت بعض مصابيح LED (لا تنس مقاومات الحد الحالية) لإظهار متى كانت دبابيس الإدخال والإخراج قيد التشغيل (عالية) ، ومتى كانت متوقفة (منخفضة). لقيادة دبابيس الإدخال ، قمت إما بربطها بالسكة الأرضية أو سكة الطاقة الموجبة.
تعمل هذه الدائرة ، لكنها تشغل بالفعل 4 شرائح TTL ، وهي عبارة عن عُش أسلاك الفئران. إذا كانت هناك حاجة إلى المزيد من القطع ، فسيكون هناك المزيد من ألواح الخبز ، والمزيد من وصلات العبور. بسرعة كبيرة سيخرج حجم الدائرة عن السيطرة.
في ملاحظة جانبية ، عند العمل مع بوابات TTL ، فإنها لا تنتج بالضبط 0V أو 5V كما يتوقع المرء. غالبًا ما يخرجون حوالي 3 فولت من أجل "مرتفع" ، لكن الجهد الدقيق يكون في نطاق واسع جدًا. نفس الدائرة التي تستخدم الرقائق المكافئة لـ CMOS سيكون لها تقلبات أفضل من 0 فولت إلى 5 فولت بالضبط.
الخطوة 2: أدخل FPGA
FPGA عبارة عن شريحة خيالية ، يمكن أن تصبح حرفياً أي مجموعة من البوابات المنطقية ، سلكية معًا في أي مجموعة. يقوم أحدهم بتصميم "الدائرة" بلغة تصميم الأجهزة (HDL). هناك العديد من هذه اللغات ، واحدة منها تسمى Verilog. ملف.v في الصورة هو المكافئ فيريلوج من أفعى البتتين. ملف.pch أدناه مطلوب أيضًا لتعيين دبابيس الإدخال والإخراج المسماة في ملف verilog إلى دبابيس الأجهزة الحقيقية على الشريحة.
في هذه الحالة ، أستخدم لوحة تطوير iCEstick لأشباه الموصلات الشبكية (https://www.latticesemi.com/icestick). شريحة FPGA الفعلية هي iCE40HX-1k ، مع ما يزيد قليلاً عن 1000 بوابة ، والتي يمكن أن تصبح أي بوابة منطقية. وهذا يعني أن كل بوابة يمكن أن تكون بوابة NAND أو بوابة OR أو بوابة NOT أو NOR أو XOR وما إلى ذلك. بالإضافة إلى ذلك ، يمكن لكل بوابة التعامل مع أكثر من مدخلين. هذا خاص بكل مصنع ، ولكن في iCE40 ، يمكن لكل بوابة التعامل مع 4 مدخلات. وبالتالي فإن كل بوابة أكثر قدرة بكثير من بوابات NAND ذات الدخلتين.
اضطررت إلى تعيين 4 دبابيس إدخال و 3 دبابيس إخراج إلى دبابيس مادية 91 و 90 و 88 و 87 و 81 و 80 و 79 على التوالي. هذا خاص بشريحة fpga ولوحة الاختراق الموجودة عليها ، وكيف يتم توصيل هذه المسامير بمنفذ PMOD. يتوفر هذا في أوراق البيانات الخاصة بلوحة FPGA.
يوفر Lattice سلسلة الأدوات الخاصة بهم لتجميع (مكافئ FPGA لتجميع وحدات المعالجة المركزية) الدوائر من Verilog ، لكنني استخدمت icestorm سلسلة أداة مفتوحة المصدر مجانية (https://www.clifford.at/icestorm/). تعليمات التثبيت متوفرة على هذا الموقع. مع تثبيت icestorm وملف verilog و pcf ، فإن أوامر تحميل هذه الدائرة على FPGA هي:
yosys -p "synth_ice40 -blif twoBitAdder.v" twoBitAdder.blif
arachne-pnr -d 1k -p iCEstick.pcf twoBitAdder.blif -o twoBitAdder.asc
icepack twoBitAdder.asc twoBitAdder.bin
iceprog twoBitAdder.bin
هذا يعمل بشكل رائع ، ولكن بما في ذلك شحن iCEstick سيكلف حوالي 30 دولارًا. هذه ليست أرخص طريقة لبناء دائرة رقمية ، لكنها قوية. لديها أكثر من 1000 بوابة ولهذه الدائرة الصغيرة تستخدم 3 منها فقط. يستخدم مكافئ بوابة NAND 14 بوابة. هذا يرجع إلى حقيقة أن كل بوابة يمكن أن تصبح أي نوع من البوابات ، وكل بوابة هي في الواقع بوابة إدخال 4. يمكن لكل بوابة أن تفعل المزيد. إذا كنت بحاجة إلى المزيد من البوابات ، فإن iCEstick لديه أخ أكبر به 8000 بوابة ، وهذا يكلف ضعفًا تقريبًا. لدى الشركات المصنعة الأخرى عروض أخرى ولكن السعر يمكن أن يصبح باهظًا جدًا.
الخطوة 3: من FPGA إلى Arduino
تعتبر FPGAs رائعة ، ولكنها قد تكون باهظة الثمن ، ويصعب الحصول عليها ، وليست صديقة للغاية للخبز. رقاقة Atmega 328 P سهلة الاستخدام ورخيصة الثمن ، والتي تأتي في حزمة DIP أنيقة ، ومثالية للوح اللوح. كما يمكن الحصول عليها بحوالي 4 دولارات. هذا هو قلب Arduino UNO. يمكنك بالطبع استخدام UNO بالكامل ، ولكن كن رخيصًا ، يمكننا سحب Atmega 328 P من UNO ، واستخدامها بمفردها. لقد استخدمت مجلس UNO كمبرمج لـ Atmega رغم ذلك.
في هذه المرحلة سوف تحتاج
1. Arduino UNO ، مع وحدة المعالجة المركزية Atmega 328P القابلة للإزالة.
2. Atmega 328P آخر مع محمل الإقلاع Arduino المحترق مسبقًا ، ليحل محل المحمل الذي نحن على وشك إخراجه من UNO. (اختياري على افتراض أنك لا تزال تريد أن يكون لديك UNO قابل للاستخدام).
الهدف هو تحويل ملف verilog إلى مشروع اردوينو يمكن تحميله في 328P. يعتمد Arduino على C ++. ملائم يوجد مترجم من Verilog إلى C ++ ، يسمى Verilator (https://www.veripool.org/wiki/verilator). تم تصميم Verilator ليتم استخدامه من قبل مصممي الأجهزة الذين يحتاجون إلى محاكاة تصميماتهم قبل الالتزام بهذه التصميمات لأجهزة باهظة الثمن. يقوم Verilator cross بتجميع verilog إلى C ++ ، ثم يوفر المستخدم أداة اختبار لتوفير إشارات إدخال محاكاة وتسجيل إشارات الإخراج. سنستخدمه لحشر تصميم فيريلوج في Atmega 328P باستخدام سلسلة أدوات Arduino.
قم أولاً بتثبيت برنامج Verilator. اتبع التعليمات الموجودة على
قم أيضًا بتثبيت Arduino IDE ، واختبر أنه يمكنه الاتصال بـ Arduino UNO عبر USB.
سنستخدم نفس ملف verilog الخاص بـ FPGA ، باستثناء أن أسماء الدبابيس تحتاج إلى تغيير. أضفت شرطة سفلية (_) إلى بداية كل منهما. هذا ضروري لأن مكتبات arduino تتضمن ملف رأس يترجم أشياء مثل B0 و B001 وما إلى ذلك إلى أرقام ثنائية. كانت أسماء دبوس الإدخال الأخرى جيدة كما هي ، لكن B0 و B1 كان من الممكن أن تتسبب في فشل الإنشاء.
في الدليل الذي يحتوي على twoBitAdder.v و iCEstick.pcf ، قم بتشغيل ما يلي:
أداة التحقق - جدار --cc twoBitAdder.v
سيؤدي هذا إلى إنشاء دليل فرعي يسمى obj_dir يحتوي على عدة ملفات جديدة. نحتاج فقط إلى ملفات header و cpp و VtwoBitAdder.h و VtwoBitAdder.cpp و VtwoBitAdder_Syms.h و VtwoBitAdder_Syms.cpp.
في Arduino IDE ، قم بإنشاء رسم تخطيطي جديد يسمى twoBitAdder.ino. سيؤدي هذا إلى إنشاء ملف ino في دليل جديد يسمى أيضًا twoBitAdder ، داخل دليل كراسة الرسم من Arduino. انسخ ملفات VtwoBitAdder.h و VtwoBitAdder.cpp إلى مجلد twoBitAdder هذا في مجلد Arduino.
الآن انسخ ملفات الرأس من تثبيت أداة التحقق.
cp / usr / local / share / verilator / include / verilated *.
أخيرًا انسخ في مكتبة std c ++ من https://github.com/maniacbug/StandardCplusplus. وفقًا لتعليمات التثبيت الخاصة بهم "يتم تثبيت هذا تمامًا مثل مكتبة Arduino العادية. قم بفك محتويات التوزيع في مجلد" المكتبات "أسفل دفتر الرسم الخاص بك. على سبيل المثال ، دفتر الرسم الخاص بي موجود في / home / maniacbug / Source / Arduino ، لذلك هذه المكتبة موجود في / home / maniacbug / Source / Arduino / libraries / StandardCplusplus.
تأكد من إعادة تعيين Arduino IDE الخاص بك بعد تثبيته."
الآن استبدل محتوى twoBitAdder.ino بالمحتوى المتوفر في هذه الخطوة. هذا اختبار اختبار يتوقعه المحقق ، والذي يقوم بإعداد دبابيس الإدخال / الإخراج ، ثم في الحلقة ، يقرأ دبابيس الإدخال ، ويغذيها إلى VtwoBitAdder (الإصدار المترجم من دائرتنا) ، ثم يقرأ المخرجات من VtwoBitAdder ويطبق منهم إلى دبابيس الإخراج.
يجب تجميع هذا البرنامج وتنفيذه على Arduino UNO.
الخطوة 4: من Arduino إلى DIP Chip على لوحة الخبز
الآن بعد أن أصبح البرنامج يعمل على Arduino ، لم نعد بحاجة إلى لوحة Arduino نفسها. كل ما نحتاجه هو وحدة المعالجة المركزية.
قم بإزالة Atmega 328P بعناية من مقبس Arduino UNO ، وقم بإدخال البديل اختياريًا.
ضع Atmega 328P على اللوح. ضع النهاية مع توجيه الفتحة لأعلى على لوح الخبز. الدبوس 1 هو الدبوس الأيسر العلوي. الدبوس 2 هو التالي لأسفل ، وهكذا إلى السن 14 الموجود في أسفل اليسار. ثم يكون الدبوس 15 أسفل اليمين ، والدبابيس من 16 إلى 28 تحسب احتياطيًا للجانب الأيمن من الشريحة.
قم بتوصيل المسامير 8 و 22 بالأرض.
قم بتوصيل السن 7 بـ VCC (+ 5V).
قم بتوصيل بلورة كوارتز 16 ميجا هرتز بين المسامير 9 و 10. أيضًا مكثف صغير (22pF) بين الدبوس 9 والأرض ، وبين الدبوس 10 والأرض. هذا يعطي Atmega 328P سرعة الساعة 16 ميجا هرتز. هناك تعليمات في مكان آخر حول تعليم 328P لاستخدام ساعته الداخلية 8 ميجا هرتز بدلاً من ذلك والتي من شأنها توفير جزءين ، ولكن هذا من شأنه أن يبطئ المعالج.
منافذ Arduino GPIO 5 و 6 و 7 و 8 ، والتي استخدمناها لدبابيس الإدخال هي في الواقع المسامير المادية 11 و 12 و 13 و 14 على Atmega 328P. سيكون هذا هو الدبابيس الأربعة السفلية على اليسار.
منافذ Arduino GPIO 11 و 10 و 9 ، التي استخدمناها لمنافذ الإخراج هي في الواقع المسامير المادية 17 و 16 و 15 على Atmega 328P. سيكون هذا هو الدبابيس الثلاثة السفلية على اليمين.
لقد قمت بتوصيل مصابيح LED بهذه المسامير كما كان من قبل.
الخطوة 5: الخاتمة
تعمل شرائح TTL ، لكن الأمر يتطلب الكثير منها لبناء أي شيء. تعمل FPGAs بشكل جيد حقًا ، ولكنها ليست رخيصة. إذا كنت تستطيع العيش مع عدد أقل من دبابيس IO ، وسرعة أقل ، فقد تكون Atmega 328P هي الشريحة المناسبة لك.
بعض الأشياء التي يجب وضعها في الاعتبار:
FPGA:
طليعة
- يمكنه التعامل مع الإشارات عالية السرعة. نظرًا لعدم وجود وحدة معالجة مركزية لمعالجة الاختناق وصولاً إلى تعليمات واحدة في كل مرة ، فإن العامل المحدد هو تأخير الانتشار عبر البوابات على الدائرة المحددة. في كثير من الحالات ، قد يكون هذا أسرع بكثير من الساعة المزودة بالرقاقة. بالنسبة لتصميمي ، كان التأخير المحسوب قد سمح لـ twoBitAdder بالاستجابة لحوالي 100 مليون تغيير في قيم الإدخال في الثانية (100 ميجاهرتز) على الرغم من أن الساعة على اللوحة عبارة عن بلورة 12 ميجاهرتز فقط.
- مع زيادة تعقيد التصميم ، لا يتدهور أداء الدوائر الحالية (كثيرًا). نظرًا لأن إضافة الدوائر إلى النسيج هي ببساطة وضع شيء جديد في العقارات غير المستخدمة ، فإنها لا تؤثر على الدوائر الحالية.
- اعتمادًا على FPGA ، يمكن أن يكون عدد دبابيس الإدخال والإخراج المتاحة مرتفعًا جدًا ، وهي عمومًا غير مقفلة لأي غرض معين.
يخدع
- يمكن أن تكون باهظة الثمن و / أو يصعب الحصول عليها.
- يأتي عادةً في حزمة BGA التي تتطلب نوعًا من لوحة الاختراق للعمل مع الشريحة في أي مشروع هواة. إذا كنت تقوم ببنائه في تصميم باستخدام SMT PCB متعدد الطبقات مخصص ، فهذه ليست مشكلة.
- توفر معظم الشركات المصنعة لـ FPGA برامج تصميم مغلقة المصدر خاصة بها ، والتي قد تكلف في بعض الحالات أموالاً ، أو يكون لها تاريخ انتهاء صلاحية الترخيص.
Arduino كـ FPGA:
طليعة
- رخيصة وسهلة الحصول عليها. ما عليك سوى البحث عن atmega328p-pu على Amazon. يجب أن تكون حوالي 4 دولارات / قطعة. يبيعها العديد من البائعين في مجموعات من 3 أو 4.
- هذه حزمة DIP ، مما يعني أنها تتناسب تمامًا مع اللوح مع دبابيسه الخارجية.
- هذا جهاز بجهد 5 فولت ، مما يجعل التفاعل مع أجهزة 5 فولت الأخرى أمرًا سهلاً.
يخدع
- يحتوي ATMEGA328P على عدد محدود من منافذ الإدخال والإخراج (23) ، والعديد منها مخصص لمهام محددة.
- مع زيادة تعقيد الدائرة ، يزداد مقدار الكود الذي يتم تشغيله في طريقة حلقة Arduino ، مما يعني أن مدة كل دورة أطول.
- حتى إذا كان تعقيد الدائرة منخفضًا ، فإن كل دورة تتطلب العديد من تعليمات وحدة المعالجة المركزية لجلب قيم طرف الإدخال ، وكتابة قيم طرف الإخراج ، والعودة إلى الجزء العلوي من الحلقة. مع بلورة 16 ميجا هرتز ، حتى عند وجود تعليمات واحدة لكل دورة ساعة ، لن تعمل الحلقة أكثر من مليون مرة في الثانية (1 ميجا هرتز). بالنسبة لمعظم مشاريع الإلكترونيات الخاصة بالهواة ، يكون ذلك أسرع بكثير مما هو مطلوب.
موصى به:
فرن إعادة التدفق التلقائي SMD من فرن محمصة رخيص: 8 خطوات (بالصور)
فرن إعادة التدفق التلقائي SMD من فرن محمصة رخيص: أصبح صنع ثنائي الفينيل متعدد الكلور من الهواة أكثر سهولة. من السهل لحام لوحات الدوائر التي تحتوي على مكونات من خلال الفتحات فقط ولكن حجم اللوحة محدود في النهاية بحجم المكون. على هذا النحو ، فإن استخدام مكونات تثبيت السطح ena
Smokin '- آلة دخان يتم التحكم فيها عن بعد بسعر رخيص: 5 خطوات (بالصور)
Smokin '- آلة دخان يتم التحكم فيها عن بُعد بسعر رخيص: هذا دليل قصير حول كيفية صنع آلة دخان صغيرة نسبيًا يمكن التحكم فيها عن بعد ورخيصة وممتعة ، والتي يمكن استخدامها لمزحة الأصدقاء أو القيام بحيل سحرية أو اختبار تدفقات الهواء أو أي شيء آخر رغبات قلبك. إخلاء المسئولية: يحتوي هذا البناء على
الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره Ethernet Dongle: 6 خطوات
الوصول إلى نظام ملفات الجذر البعيد باستخدام DB410 باعتباره دونجل إيثرنت: الأهداف: تثبيت toolchain وإعادة تجميع النواة لإدخال دعم USB Ethernet CDC Gadget ؛ إعادة إنشاء boot.img من Linaro لتشغيل USB Ethernet CDC ؛ إنشاء خادم NFS لاستضافة نظام ملفات الجذر ؛ تكوين IP في DEVICE و HOST
استخدام برنامج هيئة الطرق والمواصلات باعتباره راسم الذبذبات أو محلل الدائرة: 4 خطوات
استخدام برنامج هيئة الطرق والمواصلات باعتباره راسم الذبذبات أو محلل الدائرة: الغرض من هذه الخدعة هو منح المشاهدين خيارًا ميسور التكلفة لعرض الإشارات الكهربائية لدوائرهم وأجهزتهم باستخدام برامج محلل الوقت الفعلي (RTA). الفائدة الأساسية من هذا النهج على الذبذبات هي أن برامج هيئة الطرق والمواصلات
واجهة متعددة اللمس بسعر رخيص (رخيص حقًا): 3 خطوات
واجهة متعددة اللمس بسعر رخيص (رخيص حقًا): هذا هو أول تعليمات لي ، لذا يرجى أن تكون لطيفًا. هذه هي كيفية إنشاء واجهة متعددة اللمس من مكتبك مقابل القليل جدًا من المال. أخيرًا ، تم تحميل مقطع فيديو ، آسف على معدل الإطارات السيئ للكمبيوتر المحمول الخاص بي ليس جيدًا