جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
في هذا البرنامج التعليمي ، سنستخدم FPGA للتحكم في دائرة LED الخارجية. سنقوم بتنفيذ المهام التالية
(أ) استخدم الأزرار الانضغاطية في FPGA Cyclone IV DuePrologic للتحكم في مؤشر LED.
(ب) فلاش LED وإيقاف تشغيله بشكل دوري
فيديو تجريبي
قائمة المختبر:
الخطوة الأولى: بناء دائرة إلكترونية
الخطوة 2: تحقق من Pin Planner و Edit Verilog Code
الخطوة 3: تحرير Verilog Code
عند شراء FPGA DueProLogic ، يجب أن تتلقى قرص DVD. بعد فتح "Projects_HDL" ، يجب أن تشاهد ملف الشفرة الأصلي
أضف الرمز المميز. يقوم بتسجيل منافذ الإدخال / الإخراج وتعيين أرقام للمنافذ.
سلك الإخراج [7: 0] XIO_1 ، // XIO - D2-D9
سلك الإخراج [5: 0] XIO_2 ، // XIO - D10-D12
سلك الإخراج [5: 0] XIO_3 ، // XIO - D22-D29
سلك الإدخال [5: 0] XIO_4 ، // XIO - D30-D37
سلك الإدخال [5: 0] XIO_5 ، // XIO - D38-D45
سلك الإخراج [4: 0] XIO_6_OUT ، // XIO - D46-D53
سلك الإدخال [31: 5] XIO_6 ، // XIO - D46-D53
سلك الإخراج [2: 0] XIO_7، // XIO - D69، D70، D71، D74، D75، D76
سلك الإدخال UBA ، // مفاتيح زر الضغط
سلك الإدخال UBB // مفاتيح زر الضغط
تعيين XIO_1 [3] = start_stop_cntrl ،
تعيين XIO_2 [1] = start_blinky ، // LED فلاش LED وإيقاف تشغيله
تعيين XIO_2 [2] = 1'b1 ؛ // ناتج مرتفع
تعيين XIO_2 [3] = ~ UBA ؛ // زر الضغط أ
تعيين XIO_2 [4] = UBB ؛ // زر الضغط ب
تعيين c_enable = XIO_5 [2] ؛
تعيين LEDExt = XIO_5 [5] ؛
ثم يتعين علينا ضبط مؤقت التأخير. علق على كود المؤقت الأصلي واكتب وظيفة عداد وقت جديدة
//-----------------------------------------------
// LED بدء وميض
//-----------------------------------------------
/*
دائمًا @ (posedge CLK_66 أو negedge RST)
يبدأ
إذا (! RST)
start_blinky <= 1'b0 ؛
آخر
يبدأ
إذا (control_register [7: 4]> 0)
start_blinky <= 1'b1 ؛
آخر
start_blinky <= 1'b0 ؛
نهاية
نهاية
*/
reg [31: 0] على سبيل المثال ؛
البداية الأولية
على سبيل المثال <= 32'b0 ؛
start_blinky <= 1'b0 ؛
نهاية
دائما @ (posedge CLK_66)
يبدأ
على سبيل المثال <= ex + 1'b1 ؛
إذا (على سبيل المثال> 100000000) // flash on / off ~ 1.6 ثانية ، الساعة 66 ميجا هرتز
يبدأ
start_blinky <=! start_blinky؛
على سبيل المثال <= 32'b0 ؛
نهاية
نهاية
//-----------------------------------------------
// LED تأخير الموقت عداد
//-----------------------------------------------
/*
دائمًا @ (posedge CLK_66 أو negedge RST)
يبدأ
إذا (! RST)
led_delay_counter <= TIMER_LOW_LIMIT ،
آخر
يبدأ
إذا (حالة [SELECT_MODE])
led_delay_counter <= timer_value ؛
وإلا إذا (حالة [WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1 ؛
نهاية
نهاية*/
الخطوة 4: تجميع كود فيريلوج
اضغط على "بدء التجميع" في Quartus ، يجب عدم إنشاء رسالة خطأ.
إذا تلقيت رسالة خطأ حول دبابيس متعددة. انتقل إلى التعيينات -> الجهاز -> خيارات الجهاز والرقم -> الدبابيس ثنائية الغرض -> قم بتغيير قيمة الدبوس المناسب إلى "استخدام كإدخال / إخراج عادي".
بعد التجميع ، يجب أن تحصل على ملف الإخراج pof مباشرة. إذا لم يكن برنامجك محدثًا ، فقد تحصل على ملف soft فقط. عندما يحدث ذلك ، انقر فوق "ملف" في Quartus -> "تحويل ملفات البرمجة". قم بتغيير الإعدادات المميزة بالمربعات الحمراء.
الخطوة 5: لنجربها
بعد كل شيء ، يجب أن تعمل !!! مصباح LED الأصفر دائمًا في وضع التشغيل. يومض المؤشر الأحمر. يتم إيقاف تشغيل مؤشر LED الأزرق إذا ضغطت على الزر B. يتم تشغيل مؤشر LED الأخضر إذا ضغطت على الزر A.