תוכן עניינים:

FPGA Cyclone IV DueProLogic - לחצן לחיצה ומנורת LED: 5 שלבים
FPGA Cyclone IV DueProLogic - לחצן לחיצה ומנורת LED: 5 שלבים

וִידֵאוֹ: FPGA Cyclone IV DueProLogic - לחצן לחיצה ומנורת LED: 5 שלבים

וִידֵאוֹ: FPGA Cyclone IV DueProLogic - לחצן לחיצה ומנורת LED: 5 שלבים
וִידֵאוֹ: FPGA Cyclone IV DueProLogic - Push button & LED (Tutorial & code) 2024, דֵצֶמבֶּר
Anonim
FPGA Cyclone IV DueProLogic - כפתור לחיצה ומנורת LED
FPGA Cyclone IV DueProLogic - כפתור לחיצה ומנורת LED

במדריך זה אנו הולכים להשתמש ב- FPGA לשליטה במעגל LED חיצוני. אנו הולכים ליישם את המשימות הבאות

(א) השתמש בלחצני הלחיצה ב- FPGA Cyclone IV DuePrologic לשליטה ב- LED.

(ב) נורית הבזק מופעלת וכיבוי מעת לעת

הדגמת וידאו

תפריט מעבדה: https://roywchpi.blogspot.com 2020/06/10-fpga-dueprologic-push-button-led.html

שלב 1: בנה מעגל אלקטרוני

שלב 2: בדוק את מתכנן הפינים וערוך את קוד Verilog

בדוק את מתכנן הפינים וערוך את קוד Verilog
בדוק את מתכנן הפינים וערוך את קוד Verilog

שלב 3: ערוך את קוד Verilog

ערוך את קוד Verilog
ערוך את קוד Verilog

כאשר אתה קונה 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 לד לסירוגין

הקצה XIO_2 [2] = 1'b1; // פלט גבוה

להקצות XIO_2 [3] = ~ UBA; // לחצן A

הקצה XIO_2 [4] = UBB; // לחצן B

להקצות c_enable = XIO_5 [2];

הקצה LEDExt = XIO_5 [5];

לאחר מכן עלינו להגדיר טיימר עיכוב. הגיבו על קוד הטיימר המקורי וכתבו פונקציית טיימר חדשה

//-----------------------------------------------

// התחלה מהבהבת LED

//-----------------------------------------------

/*

always @(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] לשעבר;

התחלה ראשונית

ex <= 32'b0;

start_blinky <= 1'b0;

סוֹף

always @(posedge CLK_66)

התחל

ex <= ex + 1'b1;

אם (לשעבר> 100000000) // הבזק הפעלה/כיבוי ~ 1.6 שניות, שעון 66MHz

התחל

start_blinky <=! start_blinky;

ex <= 32'b0;

סוֹף

סוֹף

//-----------------------------------------------

// מונה טיימר טיימר לד

//-----------------------------------------------

/*

always @(posedge CLK_66 או negedge RST)

התחל

אם (! RST)

counter_delay_counter <= TIMER_LOW_LIMIT;

אַחֵר

התחל

אם (ציין [SELECT_MODE])

led_delay_counter <= timer_value;

אחרת אם (ציין [WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

סוֹף

סוֹף*/

שלב 4: הידור קוד Verilog

הידור קוד Verilog
הידור קוד Verilog
הידור קוד Verilog
הידור קוד Verilog

לחץ על "התחל אוסף" ב- Quartus, אין ליצור הודעת שגיאה.

אם תקבל הודעת שגיאה על מספר סיכות. עבור אל מטלות -> מכשיר -> מכשיר ואפשרויות סיכה -> סיכות למטרות כפולות -> שנה את ערך הסיכה המתאימה ל"שימוש כקלט/פלט רגיל ".

לאחר האוסף, אתה אמור לקבל קובץ פלט POF ישירות. אם התוכנה שלך לא מעודכנת, ייתכן שתקבל קובץ sof בלבד. כאשר זה קורה, לחץ על "קובץ" ב- Quartus -> "המר קבצי תכנות". שנה את ההגדרות המסומנות בתיבות אדומות.

שלב 5: בוא ננסה

אחרי הכל, זה אמור לעבוד !!! הנורית הצהובה דולקת תמיד. הנורית האדומה מהבהבת. הנורית הכחולה כבויה אם תלחץ על כפתור B. הנורית הירוקה נדלקת אם תלחץ על כפתור A

מוּמלָץ: