FPGA Cyclone IV DueProLogic - زر ضغط ومصباح LED: 5 خطوات
FPGA Cyclone IV DueProLogic - زر ضغط ومصباح LED: 5 خطوات
Anonim
FPGA Cyclone IV DueProLogic - زر ضغط ومصباح LED
FPGA Cyclone IV DueProLogic - زر ضغط ومصباح LED

في هذا البرنامج التعليمي ، سنستخدم FPGA للتحكم في دائرة LED الخارجية. سنقوم بتنفيذ المهام التالية

(أ) استخدم الأزرار الانضغاطية في FPGA Cyclone IV DuePrologic للتحكم في مؤشر LED.

(ب) فلاش LED وإيقاف تشغيله بشكل دوري

فيديو تجريبي

قائمة المختبر:

الخطوة الأولى: بناء دائرة إلكترونية

الخطوة 2: تحقق من Pin Planner و Edit Verilog Code

تحقق من Pin Planner وتحرير Verilog Code
تحقق من Pin Planner وتحرير 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.