Daftar Isi:

FPGA Cyclone IV DueProLogic - Tombol Tekan & LED: 5 Langkah
FPGA Cyclone IV DueProLogic - Tombol Tekan & LED: 5 Langkah

Video: FPGA Cyclone IV DueProLogic - Tombol Tekan & LED: 5 Langkah

Video: FPGA Cyclone IV DueProLogic - Tombol Tekan & LED: 5 Langkah
Video: Как читать нажатие кнопки в VHDL 2024, November
Anonim
FPGA Cyclone IV DueProLogic - Tombol Tekan & LED
FPGA Cyclone IV DueProLogic - Tombol Tekan & LED

Dalam tutorial ini, kita akan menggunakan FPGA untuk mengontrol rangkaian LED eksternal. Kami akan mengimplementasikan tugas-tugas berikut:

(A) Gunakan tombol tekan pada FPGA Cyclone IV DuePrologic untuk mengontrol LED.

(B) LED Flash hidup & mati secara berkala

Video demo

Menu lab:

Langkah 1: Bangun Sirkuit Elektronik

Langkah 2: Periksa Pin Planner dan Edit Kode Verilog

Periksa Pin Planner dan Edit Kode Verilog
Periksa Pin Planner dan Edit Kode Verilog

Langkah 3: Edit Kode Verilog

Edit Kode Verilog
Edit Kode Verilog

Saat Anda membeli FPGA DueProLogic, Anda akan menerima DVD. Setelah Anda membuka "Projects_HDL", Anda akan melihat file kode asli

Tambahkan kode yang disorot. Ini mendaftarkan port I/O dan menetapkan nomor ke port.

kabel keluaran [7:0] XIO_1, //XIO -- D2-D9

kabel keluaran [5:0] XIO_2, //XIO -- D10-D12

kabel keluaran [5:0] XIO_3, //XIO -- D22-D29

kabel masukan [5:0] XIO_4, //XIO -- D30-D37

kabel masukan [5:0] XIO_5, //XIO -- D38-D45

kabel keluaran [4:0] XIO_6_OUT, //XIO -- D46-D53

kabel masukan [31:5] XIO_6, //XIO -- D46-D53

kabel keluaran [2:0] XIO_7, //XIO -- D69, D70, D71, D74, D75, D76

kabel input UBA, // Sakelar Tombol Tekan

kabel input UBB // Saklar Tombol Tekan

tetapkan XIO_1[3] = start_stop_cntrl;

tetapkan XIO_2[1] = start_blinky; //LED flash LED hidup dan mati

tetapkan XIO_2[2] = 1'b1; //keluaran TINGGI

menetapkan XIO_2[3] = ~UBA; //Tekan tombol A

tetapkan XIO_2[4] = UBB; //Tekan tombol B

tetapkan c_enable = XIO_5[2];

menetapkan LEDExt = XIO_5[5];

Kemudian kita harus mengatur waktu tunda. Komentari kode pengatur waktu asli dan tulis fungsi pengatur waktu baru

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

// LED Berkedip mulai

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

/*

selalu @(posedge CLK_66 atau negedge RST)

mulai

jika(!RST)

start_blinky <= 1'b0;

lain

mulai

jika(control_register[7:4] > 0)

start_blinky <= 1'b1;

lain

start_blinky <= 1'b0;

akhir

akhir

*/

reg [31:0] contoh;

awal mulai

contoh <= 32'b0;

start_blinky <= 1'b0;

akhir

selalu @(berpose CLK_66)

mulai

ex <= ex + 1'b1;

if(ex > 100000000) //flash hidup/mati ~1,6 detik, jam 66MHz

mulai

start_blinky <= !start_blinky;

contoh <= 32'b0;

akhir

akhir

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

// Penghitung Waktu Tunda LED

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

/*

selalu @(posedge CLK_66 atau negedge RST)

mulai

jika(!RST)

led_delay_counter <= TIMER_LOW_LIMIT;

lain

mulai

jika(status[SELECT_MODE])

led_delay_counter <= nilai_waktu;

else if(status[WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

akhir

akhir*/

Langkah 4: Kompilasi Kode Verilog

Kompilasi Kode Verilog
Kompilasi Kode Verilog
Kompilasi Kode Verilog
Kompilasi Kode Verilog

Tekan "Mulai Kompilasi" di Quartus, tidak ada pesan kesalahan yang harus dibuat.

Jika Anda menerima pesan kesalahan tentang beberapa pin. Buka Tugas -> Perangkat -> Opsi Perangkat dan Pin -> Pin Dual-Purpose -> ubah nilai pin yang sesuai menjadi "Gunakan sebagai I/O biasa".

Setelah kompilasi, Anda harus mendapatkan file output pof secara langsung. Jika perangkat lunak Anda tidak mutakhir, Anda mungkin hanya mendapatkan file lunak. Ketika itu terjadi, klik "File" di Quartus -> "convert programming files". Ubah pengaturan yang ditandai dengan kotak merah.

Langkah 5: Ayo Coba

Bagaimanapun, itu harus berhasil!!! LED kuning selalu menyala. LED merah berkedip. LED biru mati jika Anda menekan tombol B. LED hijau menyala jika Anda menekan tombol A

Direkomendasikan: