جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
على الرغم من أن FPGA DueProLogic مصمم رسميًا لـ Arduino ، إلا أننا سنجعل FPGA و Raspberry Pi 4B قابلين للتواصل.
يتم تنفيذ ثلاث مهام في هذا البرنامج التعليمي:
(أ) اضغط في نفس الوقت على زري الضغط على FPGA لقلب زاوية كاميرا RPi.
(ب) يتحكم Raspberry Pi 4B في دائرة LED الخارجية لـ FPGA.
(C) بث مباشر لكاميرا Raspberry Pi على المتصفح عبر WiFi
الخطوة الأولى: بناء دائرة إلكترونية
الخطوة 2: تحرير Verilog Code
عند شراء FPGA DueProLogic ، يجب أن تتلقى قرص DVD. بعد فتح "Projects_HDL" ، يجب أن تشاهد ملف كود HDL الأصلي. بعد إعداد مخطط الدبوس ، أضف الكود المميز كما هو موضح في القسم 2 أ و 2 ب و 2 ج و 2 د.
2 أ: لتنشيط الأزرار الانضغاطية ، يجب عليك استخدام هذا الرمز
// مفاتيح الضغط على زر
سلك الإدخال UBA ،
سلك الإدخال UBB
للتواصل مع Raspberry Pi ، تحتاج إلى إضافة هذه.
ريج sel_send ؛ // تفعيل Raspberry pi
ريج استقبال // وردت من التوت باي
2 ب: لتعيين قيم للمنافذ ، يجب عليك تحرير الكود وفقًا لذلك
تعيين XIO_1 [3] = start_stop_cntrl ،
تعيين XIO_2 [2] = استقبال ؛ // ناتج مرتفع أو منخفض في دائرة LED
تعيين XIO_2 [3] = ~ UBA ؛ //اضغط الزر
تعيين XIO_2 [4] = UBB ؛ //اضغط الزر
تعيين XIO_2 [5] = sel_send ؛ // يرسل FPGA إشارة إلى Raspberry Pi
تعيين sel_read = XIO_5 [1] ؛ // يستقبل FPGA إشارة من raspberry pi
تعيين c_enable = XIO_5 [2] ؛ // XIO_5 - UB57 - D17
تعيين LEDExt = XIO_5 [5] ؛
2C: إذا تم الضغط على زرين ضغط في وقت واحد ، فإن FPGA يرسل خرجًا عاليًا إلى Raspberry Pi.
دائمًا @ (sel_send أو UBB أو UBA) // أرسل إلى RPi
يبدأ
إذا (UBB == 1'b0 && UBA == 1'b0)
sel_send = 1'b1 ؛
آخر
sel_send = 1'b0 ؛
نهاية
2D: يقرأ FPGA الإشارة من Raspberry Pi بتردد ساعة يبلغ 66 ميجاهرتز. المنفذ XIO_2 [2] مرتبط بـ "استقبال".
دائما @ (sel_read) // قراءة pi
يبدأ
إذا (sel_read == 1'b1)
استقبال = 1'b0 ؛
آخر
استقبال = 1'b1 ؛
نهاية
الخطوة 3: قم بتحميل كود فيريلوج
ثم قم بتحميل ملف pof المترجم إلى FPGA. إذا لم يتم اكتشاف أي جهاز تلقائيًا ، فانقر فوق "إعداد الأجهزة" لتصحيحه يدويًا
الخطوة 4: قم بتحميل رمز Raspberry Pi Code
تسمح الخطوط المميزة لـ FPGA بالتواصل مع Raspberry Pi.
كود Raspberry Pi الكامل لهذا المشروع ،
أ = إدخال GPIO (دبوس) # قراءة FPGAprint (A) ؛
إذا (أ == 1):
camera.rotation = 0
GPIO.output (18، GPIO. LOW) # يرسل إلى FPGA
إذا (A == 0):
camera.rotation = 180
GPIO.output (18، GPIO. HIGH) # إرسال إلى FPGA
الخطوة 5: لنجربها
افتح متصفحك واكتب عنوان IP الخاص بك على سبيل المثال 192.168.xx.xxx:8000.
بعد كل شيء ، يجب أن يعمل النظام!