İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu derste, harici LED devresini kontrol etmek için FPGA kullanacağız. Aşağıdaki görevleri uygulayacağız
(A) LED'i kontrol etmek için FPGA Cyclone IV DuePrologic üzerindeki basma düğmelerini kullanın.
(B) Flaş LED'i periyodik olarak açılır ve kapanır
Video demosu
Laboratuvar menüsü:
Adım 1: Elektronik Devre Oluşturun
Adım 2: Pin Planlayıcıyı Kontrol Edin ve Verilog Kodunu Düzenleyin
3. Adım: Verilog Kodunu Düzenleyin
FPGA DueProLogic satın aldığınızda, bir DVD alacaksınız. "Projects_HDL"yi açtıktan sonra orijinal kod dosyasını görmelisiniz.
Vurgulanan kodu ekleyin. G/Ç bağlantı noktalarını kaydeder ve bağlantı noktalarına numara atar.
çıkış kablosu [7:0] XIO_1, //XIO -- D2-D9
çıkış kablosu [5:0] XIO_2, //XIO -- D10-D12
çıkış kablosu [5:0] XIO_3, //XIO -- D22-D29
giriş kablosu [5:0] XIO_4, //XIO -- D30-D37
giriş kablosu [5:0] XIO_5, //XIO -- D38-D45
çıkış kablosu [4:0] XIO_6_OUT, //XIO -- D46-D53
giriş kablosu [31:5] XIO_6, //XIO -- D46-D53
çıkış kablosu [2:0] XIO_7, //XIO -- D69, D70, D71, D74, D75, D76
giriş kablosu UBA, //Push Buton Anahtarları
giriş kablosu UBB //Push Buton Anahtarları
XIO_1[3] ata = start_stop_cntrl;
atama XIO_2[1] = start_blinky; //LED flaş LED'i açık ve kapalı
XIO_2[2] = 1'b1 ata; // çıkış YÜKSEK
XIO_2[3] = ~UBA ata; //A düğmesine basın
XIO_2[4] ata = UBB; //B düğmesine basın
ata c_enable = XIO_5[2];
LEDExt = XIO_5[5] ata;
O zaman bir gecikme zamanlayıcı ayarlamalıyız. Orijinal zamanlayıcı kodunu yorumlayın ve yeni bir zamanlayıcı işlevi yazın
//-----------------------------------------------
// LED Yanıp sönen başlangıç
//-----------------------------------------------
/*
her zaman @(posedge CLK_66 veya negedge RST)
başlamak
eğer(!RST)
start_blinky <= 1'b0;
Başka
başlamak
if(control_register[7:4] > 0)
start_blinky <= 1'b1;
Başka
start_blinky <= 1'b0;
son
son
*/
reg [31:0] örn;
ilk başlangıç
eski <= 32'b0;
start_blinky <= 1'b0;
son
her zaman @(posedge CLK_66)
başlamak
eski <= eski + 1'b1;
if(ex > 100000000) //flaş açık/kapalı ~1.6 saniye, saat 66MHz
başlamak
start_blinky <= !start_blinky;
eski <= 32'b0;
son
son
//-----------------------------------------------
// LED Gecikme Zamanlayıcı Sayacı
//-----------------------------------------------
/*
her zaman @(posedge CLK_66 veya negedge RST)
başlamak
eğer(!RST)
led_delay_counter <= TIMER_LOW_LIMIT;
Başka
başlamak
if(durum[SELECT_MODE])
led_delay_counter <= timer_value;
else if(durum[WAIT_FOR_TIMER])
led_delay_counter <= led_delay_counter - 1'd1;
son
son*/
Adım 4: Verilog Kodunu Derleyin
Quartus'ta "Derlemeyi Başlat" a basın, hiçbir hata mesajı oluşturulmamalıdır.
Birden fazla pin hakkında hata mesajı alıyorsanız. Atamalar -> Cihaz -> Cihaz ve Pin Seçenekleri -> Çift Amaçlı Pinler -> seçeneğine gidin ve uygun pinin değerini "Normal G/Ç olarak kullan" olarak değiştirin.
Derlemeden sonra doğrudan pof çıktı dosyasını almalısınız. Yazılımınız güncel değilse sadece sof file alabilirsiniz. Bu olduğunda, Quartus -> "programlama dosyalarını dönüştür"de "Dosya"ya tıklayın. Kırmızı kutularla işaretlenmiş ayarları değiştirin.
Adım 5: Hadi Deneyelim
Sonuçta, çalışması gerekir !!! Sarı LED her zaman açıktır. Kırmızı LED yanıp sönüyor. B düğmesine basarsanız mavi LED söner. A düğmesine basarsanız yeşil LED yanar