Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Bu təlimatda, xarici LED dövrəsini idarə etmək üçün FPGA -dan istifadə edəcəyik. Aşağıdakı vəzifələri yerinə yetirəcəyik
(A) LED -i idarə etmək üçün FPGA Cyclone IV DuePrologic düymələrindən istifadə edin.
(B) Flaş LED -i vaxtaşırı açılır və sönür
Video demo
Laboratoriya menyusu:
Addım 1: Elektron Dövrə qurun
Addım 2: Pin Plannerini yoxlayın və Verilog Kodunu Düzəldin
Addım 3: Verilog Kodunu redaktə edin
FPGA DueProLogic satın aldığınız zaman bir DVD almalısınız. "Projects_HDL" proqramını açdıqdan sonra orijinal kod faylını görməlisiniz
Vurğulanan kodu əlavə edin. G/Ç portlarını qeyd edir və limanlara nömrələr təyin edir.
çıxış teli [7: 0] XIO_1, // XIO-D2-D9
çıxış teli [5: 0] XIO_2, // XIO-D10-D12
çıxış teli [5: 0] XIO_3, // XIO-D22-D29
giriş teli [5: 0] XIO_4, // XIO-D30-D37
giriş teli [5: 0] XIO_5, // XIO-D38-D45
çıxış teli [4: 0] XIO_6_OUT, // XIO-D46-D53
giriş teli [31: 5] XIO_6, // XIO-D46-D53
çıxış teli [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76
giriş teli UBA, // Push Button Switch
giriş teli UBB // Push Button Switch
təyin XIO_1 [3] = start_stop_cntrl;
təyin XIO_2 [1] = start_blinky; // LED fənəri LED yandırılır və sönür
təyin XIO_2 [2] = 1'b1; // YÜKSƏK
təyin XIO_2 [3] = ~ UBA; // A düyməsini basın
təyin XIO_2 [4] = UBB; // B düyməsini basın
c_enable = XIO_5 [2] təyin edin;
LEDExt = XIO_5 [5] təyin edin;
Sonra bir gecikmə taymerini təyin etməliyik. Orijinal taymer kodunu şərh edin və yeni bir taymer funksiyası yazın
//-----------------------------------------------
// LED yanıb -sönən başlanğıc
//-----------------------------------------------
/*
həmişə @(pozitge CLK_66 və ya RST işarələndi)
başlamaq
əgər (! RST)
start_blinky <= 1'b0;
başqa
başlamaq
əgər (control_register [7: 4]> 0)
start_blinky <= 1'b1;
başqa
start_blinky <= 1'b0;
bitmək
bitmək
*/
reg [31: 0] ex;
ilkin başlanğıc
ex <= 32'b0;
start_blinky <= 1'b0;
bitmək
həmişə @(poza CLK_66)
başlamaq
ex <= ex + 1'b1;
əgər (məsələn> 100000000) // yanıp sönmə/sönmə ~ 1.6 saniyə, saat 66MHz
başlamaq
start_blinky <=! start_blinky;
ex <= 32'b0;
bitmək
bitmək
//-----------------------------------------------
// LED Gecikmə Taymeri Sayacı
//-----------------------------------------------
/*
həmişə @(pozitge CLK_66 və ya RST işarələndi)
başlamaq
əgər (! RST)
led_delay_counter <= TIMER_LOW_LIMIT;
başqa
başlamaq
əgər (dövlət [SELECT_MODE])
led_delay_counter <= timer_value;
başqa halda ([WAIT_FOR_TIMER] vəziyyətini bildirin)
led_delay_counter <= led_delay_counter - 1'd1;
bitmək
son*/
Addım 4: Verilog Kodunu tərtib edin
Quartus -da "Derlemeye Başla" düyməsini basın, heç bir səhv mesajı yaradılmamalıdır.
Birdən çox pin haqqında bir səhv mesajı alsanız. Tapşırıqlar -> Cihaz -> Cihaz və Pin Seçimləri -> İkiqat Məqalələrə -> uyğun pinin dəyərini "Normal G/Ç olaraq istifadə et" olaraq dəyişdirin.
Tərtib etdikdən sonra birbaşa pof çıxış faylını almalısınız. Proqramınız müasir deyilsə, yalnız sof faylı əldə edə bilərsiniz. Bu baş verdikdə, Quartusdakı "Fayl" -> "proqramlaşdırma fayllarını çevir" düyməsini basın. Qırmızı qutularla işarələnmiş parametrləri dəyişdirin.
Addım 5: Gəlin sınayaq
Axı, işləməlidir !!! Sarı LED həmişə yanır. Qırmızı LED yanıb -sönür. B düyməsini basarsanız mavi LED sönür. A düyməsini basarsanız yaşıl LED yanır