جدول المحتويات:
- الخطوة 1: إعداد مشروع في Vivado لـ Ernie
- الخطوة 2: إنشاء Ernie's PWM في Vivado
- الخطوة 3: إنشاء TDOA الخاص بـ Ernie في Vivado
- الخطوة 4: تغليف وتصدير Ernie
- الخطوة 5: بناء Ernie
- الخطوة 6: Ernie's First BSP
- الخطوة 7: FreeRTOS'ing Ernie
- الخطوة 8: استيراد كود Ernie's C
- الخطوة 9: تصحيح أخطاء Ernie
- الخطوة العاشرة: جعل إرني مستقلاً
- الخطوة 11: جعل Ernie لطيف
فيديو: كيف تصنع إرني: 11 خطوة
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
هذا برنامج تعليمي حول كيفية بناء Ernie ، صوتك المستقل الذي يتبع الروبوت ، باستخدام لوحة Zybo. سيغطي كيفية: إنشاء مشروع في Vivado ، وإنشاء برامج تشغيل محركات مؤازرة تشبه PWM في FPGA ، والواجهة مع مستشعرين للصوت ، وإنشاء فرق وقت وصول IP ، واستخدام freeRTOS ، وتشغيل zybo من حزمة بطارية. كان هذا هو مشروعنا الأخير لفئة أنظمة تشغيل الوقت الحقيقي (CPE 439) في Cal Poly SLO.
قائمة المعدات:
- 1- مجلس تطوير ZYBO Zynq 7000
- 2 - Parallax التناوب المستمر المؤازر
- 2 - مستشعر الصوت (كاشف الصوت SparkFun)
- 1-5 فولت بطارية ليثيوم أيون USB (للوحة)
- 4 - بطاريات AA (لأجهزة الماكينة)
- 1 - بطارية AA (مع 4 فتحات للبطارية)
- 1 - كابل Micro USB
- 1 - اللوح
- كثير - ذكر إلى ذكر الأسلاك
- 1 - شاسيه مؤازر
متطلبات البرنامج:
- Xilinx Vivado Design Suite 2016.2.2 تحديث
- Digilent Adept 2.16.1
الخطوة 1: إعداد مشروع في Vivado لـ Ernie
- المعالج سوف يطفو على السطح
- انقر فوق {التالي
-
الاسم التالي للمشروع
- لا تستخدم اسم مشروع أو مسار دليل يحتوي على مسافات !!!!!
- سيكون هذا مشروع RTL.
- لا نريد تحديد المصادر
-
بالنقر فوق التالي ، نصل إلى صفحة الجزء. نحن نستخدم ZYNQ XC7Z010-1CLG400C.
- لا تحتوي Vivado على Zybo مدرجة كواحدة من لوحاتها المحددة مسبقًا. حدد: "أجزاء" ثم ابحث عن xc7z010clg400-1.
- إذا اخترت الجزء الخطأ عن طريق الخطأ ، يمكنك بسهولة تبديل الرقائق: الأدوات -> إعدادات المشروع -> عام والنقر على النقاط الموجودة على يمين "جهاز المشروع"
-
انقر فوق إنشاء تصميم بلوك.
سمها design_1 الآن
- سترى شريطًا أخضر يشير إلى إضافة عنوان IP ، انقر فوقه.
-
ابحث عن Zynq.
- انقر نقرًا مزدوجًا فوق نظام المعالجة ZYNQ7 ،
- ستظهر هذه الكتلة في تصميم الكتلة الخاص بنا.
- سترى شريطًا أخضر يشير إلى تشغيل بلوك أتمتة ، انقر فوقه.
- قم بتنزيل zybo_zynq_def.xml أدناه.
-
في Vivado ، انقر فوق "استيراد إعدادات XPS" وحدد "zybo_zynq_def.xml"
هذا يملأ تكوين كتلة Vivado مسبقًا بجميع الأجهزة الطرفية المضمنة في لوحة Zybo وتخصيصات الدبوس
-
انقر نقرًا مزدوجًا فوق كتلة ZYNQ.
-
تكوين MIO
- تمكين Timer 0 (ضمن Application Processor Unit - img 1)
- تمكين مراقب (ضمن وحدة معالج التطبيق- img 1)
- تمكين GPIO-> GPIO MIO (ضمن وحدة معالج التطبيق - img 2)
- تمكين GPIO-> ENET Reset (ضمن I / O Peripherals- img 2)
-
تكوين الساعة
تعطيل FCLK0 (تحت PL Fabric Clocks - IMG 3)
-
- انقر فوق موافق.
-
"تشغيل Block Automation" الآن.
ستكون هناك بعض الأسئلة حول الإشارات ، قل "حسنًا"
-
انقر فوق "إنشاء غلاف HDL".
سنرغب في نسخ الغلاف الذي تم إنشاؤه للسماح للمستخدم بإجراء تعديلات
- انقر فوق موافق.
الخطوة 2: إنشاء Ernie's PWM في Vivado
ستنشئ هذه الخطوة عنوان IP PWM مع المدخلات المرسلة عبر مكتبة AXI.
-
قم بإنشاء كتلة AXI GPIO بالنقر بزر الماوس الأيمن فوق الخلفية ، والنقر فوق "إضافة IP"
اكتب "AXI_GPIO" في شريط البحث ، وحدد هذه الحزمة
-
أعد تخصيص IP عن طريق النقر المزدوج على كتلة axi_gpio_0 الجديدة
- ضمن GPIO ، اضبط عرض GPIO على 2. ستكون هذه البتات هي إشارة PWM_ON لدفع كل مثيل وحدة PWM.
- انقر فوق "تمكين القناة المزدوجة"
- تحت GPIO 2 ، اضبط عرض GPIO على 2. ستكون هذه البتات هي إشارة PWM_FW لتعيين اتجاه كل مثيل وحدة PWM.
-
انقر بزر الماوس الأيمن على منفذ الإخراج axi_gpio_0 المسمى GPIO ، وحدد "Make External"
- انقر فوق الإخراج الجديد المسمى GPIO ، وانتقل إلى علامة التبويب "الخصائص" على شريط الأدوات الأيسر ، وقم بتغيير الاسم إلى PWM_ON
- انقر فوق الإخراج الجديد المسمى GPIO2 ، وانتقل إلى علامة التبويب "الخصائص" على شريط الأدوات الأيسر ، وقم بتغيير الاسم إلى PWM_FW
-
حدد تشغيل أتمتة الاتصال في الشعار الأخضر أعلى الرسم التخطيطي للكتل.
إذا قمت بتوصيل المنافذ يدويًا ، فقد لا يتم تكوين عناوين AXI ، مما يؤدي إلى حدوث مشكلات في الاتصال لاحقًا
-
في جزء Flow Navigator ، حدد مدير المشروع -> إضافة مصادر لإنشاء كتلة IP مخصصة جديدة
- اختر "إضافة أو إنشاء مصادر التصميم" ، ثم اضغط على التالي
- انقر على "إنشاء ملف" ، وغير نوع الملف إلى "SystemVerilog" ، واكتب "pwm" في حقل اسم الملف ، ثم انقر فوق "موافق"
- انقر فوق "إنهاء"
-
تجاهل نافذة Define Module بالضغط على OK (سنقوم بالكتابة فوقها لاحقًا)
إذا سألك ما إذا كنت متأكدًا ، فانقر فوق "نعم"
-
في علامة تبويب المصادر ، انقر نقرًا مزدوجًا فوق pwm.sv (الموجود في "Design Sources / design_1_wrapper")
انسخ / الصق رمز SystemVerilog بالكامل من ملف pwm.txt المرفق أدناه
الخطوة 3: إنشاء TDOA الخاص بـ Ernie في Vivado
ستولد هذه الخطوة IP TDOA الذي يمكن قراءة مخرجاته عبر مكتبة AXI
-
قم بإنشاء كتلة AXI GPIO بالنقر بزر الماوس الأيمن فوق الخلفية ، والنقر فوق "إضافة IP"
اكتب "AXI_GPIO" في شريط البحث ، وحدد هذه الحزمة
-
أعد تخصيص عنوان IP بالنقر نقرًا مزدوجًا فوق مجموعة axi_gpio_1 الجديدة
- ضمن GPIO ، حدد مربع "كل المدخلات" ، واضبط عرض GPIO على 32. سيكون هذا الناقل هو فرق وقت الوصول بين المستشعرين.
- داخل كتلة axi_gpio_1 ، انقر فوق + بجوار منفذ GPIO للكشف عن gpio_io_i [31: 0].
-
انقر بزر الماوس الأيمن على منفذ الإخراج axi_gpio_1 المسمى gpio_io_i [31: 0] ، وحدد "Make External"
انقر فوق الإدخال الجديد المسمى gpio_io_i [31: 0] ، وانتقل إلى علامة التبويب "الخصائص" على شريط الأدوات الأيسر ، وقم بتغيير الاسم إلى TDOA_val
-
حدد تشغيل أتمتة الاتصال في الشعار الأخضر أعلى الرسم التخطيطي للكتل.
إذا قمت بتوصيل المنافذ يدويًا ، فقد لا يتم تكوين عناوين AXI ، مما يؤدي إلى حدوث مشكلات في الاتصال لاحقًا
-
في جزء Flow Navigator ، حدد مدير المشروع -> إضافة مصادر لإنشاء كتلة IP مخصصة جديدة
- اختر "إضافة أو إنشاء مصادر التصميم" ، ثم اضغط على التالي
- انقر على "إنشاء ملف" ، وغير نوع الملف إلى "SystemVerilog" ، واكتب "tdoa" في حقل اسم الملف ، ثم انقر فوق "موافق"
- انقر فوق "إنهاء"
-
تجاهل نافذة Define Module بالضغط على OK (سنقوم بالكتابة فوقها لاحقًا)
إذا سألك ما إذا كنت متأكدًا ، فانقر فوق "نعم"
-
في علامة تبويب المصادر ، انقر نقرًا مزدوجًا فوق tdoa.sv (الموجود في "Design Sources / design_1_wrapper")
انسخ / الصق كود SystemVerilog بالكامل من ملف tdoa.txt المرفق أدناه
الخطوة 4: تغليف وتصدير Ernie
- تحقق من أن مخطط الكتلة يبدو مثل لقطة الشاشة المرفقة
-
في علامة تبويب المصادر ، انقر بزر الماوس الأيمن فوق design_1.bd وحدد "إنشاء غلاف HDL …"
- حدد "نسخ المخرجات التي تم إنشاؤها للسماح بتعديل المستخدم" ، ثم اضغط على "موافق"
- انسخ الكود من design_1_wrapper.txt المرفق أدناه ، والصقه في مكان الرمز design_1_wrapper.v الذي تم إنشاؤه
- احفظ design_1_wrapper.v
-
في علامة تبويب المصادر ، انقر نقرًا مزدوجًا فوق ملف ZYBO_Master.xdc ضمن قيود / تفسيرات 1
- انسخ الرمز من ZYBO_Master.txt المرفق أدناه ، والصقه في مكان رمز ZYBO_Master.xdc الحالي
-
لاحظ دبابيس الإدخال / الإخراج التالية:
- L15: إشارة PWM للمحرك الأيسر (Pmod JA2 على Zybo)
- L14: إشارة PWM للمحرك الصحيح (Pmod JA8 على Zybo)
- V12: مدخل بوابة من مستشعر الصوت 1 (Pmod JE1 على Zybo)
- K16: مدخل بوابة من مستشعر الصوت 2 (Pmod JE2 على Zybo)
-
في جزء Flow Navigator ، انقر فوق "إنشاء Bitstream" ضمن البرنامج والتصحيح
إذا كنت تعتقد أنه تم على الفور ، فمن المحتمل ألا يكون كذلك. بجدية ، اصنع بعض الشاي
-
انقر فوق ملف-> تصدير-> إنشاء أجهزة
حدد "تضمين Bitstream" واضغط على موافق
- انقر فوق ملف-> تشغيل SDK
الخطوة 5: بناء Ernie
- قم بتركيب الماكينات على هيكل المؤازرة.
-
باتباع ورقة البيانات للوحدات المؤازرة ، قم بما يلي:
- قم بتوصيل أرضية الماكينات بالدبابيس الأرضية على Zybo's JA Pmod (انظر صورة pinout المرفقة)
- قم بتوصيل دبوس الطاقة الخاص بوحدات الماكينة بحزمة بطارية AA
وجدنا أنه عندما يتم توصيل الماكينات بـ Zybo's Vdd ، فإن اللوحة تجذب الكثير من التيار ، مما يتسبب في إعادة ضبط اللوحة باستمرار
- قم بتوصيل دبابيس إشارة الإدخال بدبابيس الإخراج المناسبة لـ Zybo (يسار: JA2 ، يمين: JA8)
- قم بتركيب مستشعرات الصوت في مقدمة الهيكل ، بحيث تكون متجهة للأمام ، مع إبقاءها قريبة من بعضها قدر الإمكان
-
استخدم دليل توصيل مستشعر الصوت لدمج مستشعرات الصوت
- قم بتوصيل الأرض ودبابيس Vdd لكل مستشعر صوت على الأرض ودبابيس Vdd على Zybo's JE Pmod (انظر صورة pinout المرفقة)
- قم بتوصيل دبوس بوابة مستشعر الصوت الأيسر إلى JE1
- قم بتوصيل دبوس بوابة مستشعر الصوت الأيمن إلى JE2
الخطوة 6: Ernie's First BSP
-
قم بإنشاء BSP لإنهاء النظام الأساسي الذي أنشأناه للتو.
يمكنك الحصول على هذا من خلال ملف -> جديد -> حزمة دعم المجلس
-
سينبثق معالج لمساعدتك في إنشاء BSP.
- نريد ربط طريقة الدفع لتسوية الفواتير (BSP) بمنصتنا التي أنشأناها للتو ، لذلك
- يجب أن تتوافق منصة الأجهزة مع النظام الذي أنشأناه للتو (انظر الصورة 1)
- ستكون وحدة المعالجة المركزية لدينا هي _0 وحدة المعالجة المركزية.
- انقر فوق "إنهاء"
- تأكد من تحديد lwip141 للتضمين مع bsp في النافذة المنبثقة (انظر الشكل 2)
الخطوة 7: FreeRTOS'ing Ernie
-
قم بتنزيل أحدث إصدار من FreeRTOS من Sourceforge.
إذا كان التنزيل قابلاً للتنفيذ ، فقم بتشغيله لاستخراج ملفات FreeRTOS إلى دليل المشروع
- احتفظ بحزمة SDK مفتوحة ، وانقر فوق ملف -> استيراد.
- نريد النقر فوق عام-> من مساحة عمل موجودة ، ثم نريد الانتقال إلى حيث نزّلنا FreeRTOS.
-
سيكون عرضنا موجودًا في FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702. عند تحديد هذا المجلد ، يجب أن نرى ثلاثة مشاريع منبثقة (رمزنا (نظام التشغيل) ، وهو BSP ، ومنصة HW).
فقط قم باستيراد RTOSDemo إلى مساحة عملك الحالية
-
في جميع مشاريع المجلد "الأزرق" ، قم بتغيير BSP المشار إليه
- النقر بزر الماوس الأيمن واختيار "تغيير BSP المشار إليه".
- حدد BSP الذي أنشأته للتو لـ Zybo الخاص بك
- يعد تحرير الكود في مجلدات SDK Blue من Xilinx بمثابة مشاريع الكود الفعلية.
الخطوة 8: استيراد كود Ernie's C
- في دليل RTOSDemo / src ، استبدل main.c الحالي بالملف main.c المرفق هنا.
- انسخ الملف main_sound.c إلى دليل RTOSDemo / src.
الخطوة 9: تصحيح أخطاء Ernie
- حدد تشغيل -> تكوينات التصحيح
- في الجزء الأيمن ، قم بإنشاء تشغيل جديد لـ System Debugger
-
في علامة التبويب "الإعداد الهدف" ،
حدد "إعادة تعيين النظام بالكامل" بحيث يتم تحديد كل من ذلك و ps7_init
-
الآن حدد علامة التبويب التطبيق.
- حدد "تنزيل التطبيق"
- اضبط cortexa9_0 core على "التوقف عند إدخال البرنامج"
- انقر فوق تطبيق وتصحيح.
- تحقق من عدم وجود أخطاء في عملية التصحيح
- للحفاظ على مراقبة الروبوت عن كثب ، اضغط على زر استئناف حتى يتم تشغيل البرنامج دون الاصطدام بأي نقاط توقف
- يجب أن يستدير الروبوت الآن ويتحرك نحو الأصوات الصاخبة. ياي!
الخطوة العاشرة: جعل إرني مستقلاً
- بمجرد أن يصبح مشروعك جاهزًا للانطلاق (يمكنك تشغيله دون مشاكل من خلال مصحح الأخطاء) ، فأنت جاهز لتحميله على ذاكرة الفلاش الموجودة على لوحتك.
-
قم بإنشاء ما يسمى بمشروع "محمل إقلاع المرحلة الأولى" (FSBL) ويحتوي على جميع التعليمات التي ستحتاجها اللوحة الخاصة بك من أجل تحميل ملفات المشروع (دفق البت ونظام التشغيل) عند بدء التشغيل.
- حدد: ملف-> جديد-> مشروع التطبيق وستظهر النافذة التالية.
- سمها كما تريد (أي "FSBL")
- تأكد من أن النظام الأساسي للأجهزة هو الذي تعمل معه
- اضغط على التالي (لا تضغط على إنهاء)
- حدد قالب Zynq FSBL
- انقر فوق إنهاء.
- بمجرد اكتمال عملية الإنشاء ، ستعرف ما إذا كان كل شيء يعمل إذا رأيت المجلدين الجديدين التاليين في نافذة Project Explorer.
-
إنشاء صورة التمهيد الآن سوف تحتاج إلى إنشاء صورة التمهيد.
- انقر بزر الماوس الأيمن على مجلد مشروعك (في هذه الحالة يسمى ملفي "RTOSDemo")
- انقر فوق "إنشاء صورة التمهيد" من القائمة المنسدلة
-
إذا تم ربط كل شيء بشكل صحيح ، فسيعرف المشروع الملفات التي يحتاجها وستظهر النافذة التالية كما ترى أدناه (المفتاح هو أن لديك 3 أقسام ضمن قسم صورة التمهيد ، ومحمل الإقلاع ، وملفك الصغير ، وملف مشروعاتك.).
إذا لم يكن الأمر كذلك ، فمن المحتمل أن يكون هناك خطأ ما في ربط مشروعك. تأكد من أن مجلدات المشروع مرتبطة بمقدمي الدفع لتسوية الفواتير (BSPs) الخاص بهم
- انقر فوق الزر "إنشاء صورة"
-
الخطوة الأخيرة التي يجب تنفيذها في البرنامج هي الآن وميض صورتك التي تم إنشاؤها مسبقًا إلى ذاكرة اللوحة
- حدد من شريط الأدوات الرئيسي لـ SDK حدد Xilinx Tools-> Program Flash Memory
- تأكد من تحديد النظام الأساسي الصحيح للأجهزة وأن مسار ملف الصورة يشير بشكل صحيح إلى ملف. BIN الذي تم إنشاؤه في الخطوة السابقة.
- حدد "qspi single" من نوع الفلاش
- ضع علامة على "تحقق بعد الفلاش" لضمان النزاهة ولكنها ليست ضرورية
- تكوين اللوحة الخاصة بك أخيرًا ، تحتاج إلى التأكد من ضبط وصلة وضع برمجة اللوحات (JP5) بشكل صحيح لتحديد التمهيد من qspi (الذي يحتوي على ما قمت بوميضه للتو) عند تشغيل BootROM.
- الآن ما عليك سوى تشغيل دورة تشغيل الجهاز والتأكد من أن "مؤشر LED للتهيئة المنطقية" (LED 10) مضاء باللون الأخضر.
الخطوة 11: جعل Ernie لطيف
- الفراء
- الكثير من الفراء
- عيون كبيرة!
- … قبعة عالية
موصى به:
كيف تصنع كاشف مسافة اجتماعية: 15 خطوة
كيف تصنع كاشف عن بعد اجتماعي: مع اقتراب عام 2020 من نهايته ، اعتقدت أنه سيكون من الجيد أن أقول وداعًا من خلال برنامج تعليمي حتى عام 2020. أقدم لك ، كاشف المسافة الاجتماعية. باستخدام هذا الجهاز ، ستتمكن من التواصل الاجتماعي باستخدام التكنولوجيا وترك المخاوف وراءك. تي
كيف تصنع لوحة دوائر كهربائية في المنزل: 11 خطوة
كيف تصنع لوحة دوائر في المنزل: اطبع خطتك أولاً على ورقة بواسطة نوع طابعات الليزر النفاثة
كيف تصنع جسر H: 15 خطوة
كيف تصنع جسر H: الجسر H هو نوع من الدوائر التي يمكنك استخدامها لجعل محرك DC قابل للانعكاس يدور في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة ، بمعنى آخر ، تسمح لك هذه الدائرة بعكس اتجاه المحرك بسرعة الدوران باستخدام مفتاح أو وحدة تحكم ج
كيف تصنع بوابة WIFI الخاصة بك لتوصيل Arduino بشبكة IP؟: 11 خطوة (بالصور)
كيف تصنع بوابة WIFI الخاصة بك لتوصيل Arduino بشبكة IP؟: نظرًا لأن العديد من الأشخاص تعتقد أن Arduino هو حل جيد جدًا للقيام بالأتمتة المنزلية والروبوتية! ولكن فيما يتعلق بالاتصال ، تأتي Arduinos مع روابط تسلسلية. أنا أعمل على روبوت يجب أن يكون متصلاً بشكل دائم بخادم يعمل
كيف تصنع بيت الأناناس سبونجبوب: 12 خطوة
كيف تصنع بيت الأناناس سبونجبوب: من يعيش في أناناس تحت البحر؟ الجواب على هذا السؤال (سبونجبوب) واضح إلى حد ما لمعظم الناس اليوم. تم تكليف فريقنا بمهمة تصميم وبناء دعامة للإنتاج المسرحي القادم. الفكرة التي جاءت على الفور