FPGA Cyclone IV DueProLogic - Botão e LED: 5 etapas
FPGA Cyclone IV DueProLogic - Botão e LED: 5 etapas
Anonim
FPGA Cyclone IV DueProLogic - Botão e LED
FPGA Cyclone IV DueProLogic - Botão e LED

Neste tutorial, usaremos o FPGA para controlar o circuito externo de LED. Vamos implementar as seguintes tarefas

(A) Use os botões no FPGA Cyclone IV DuePrologic para controlar o LED.

(B) Flash LED acende e apaga periodicamente

Demonstração de vídeo

Menu do laboratório:

Etapa 1: construir o circuito eletrônico

Etapa 2: verifique o planejador de pinos e edite o código Verilog

Verifique o Planejador de Pin e Edite o Código Verilog
Verifique o Planejador de Pin e Edite o Código Verilog

Etapa 3: editar o código Verilog

Editar Código Verilog
Editar Código Verilog

Ao comprar o FPGA DueProLogic, você receberá um DVD. Depois de abrir "Projects_HDL", você deve ver o arquivo de código original

Adicione o código destacado. Ele registra as portas de E / S e atribui números às portas.

fio de saída [7: 0] XIO_1, // XIO - D2-D9

fio de saída [5: 0] XIO_2, // XIO - D10-D12

fio de saída [5: 0] XIO_3, // XIO - D22-D29

fio de entrada [5: 0] XIO_4, // XIO - D30-D37

fio de entrada [5: 0] XIO_5, // XIO - D38-D45

fio de saída [4: 0] XIO_6_OUT, // XIO - D46-D53

fio de entrada [31: 5] XIO_6, // XIO - D46-D53

fio de saída [2: 0] XIO_7, // XIO - D69, D70, D71, D74, D75, D76

fio de entrada UBA, // Interruptores de botão de pressão

fio de entrada UBB // Interruptores de botão de pressão

atribuir XIO_1 [3] = start_stop_cntrl;

atribuir XIO_2 [1] = start_blinky; // LED flash LED ligado e desligado

atribuir XIO_2 [2] = 1'b1; // output HIGH

atribuir XIO_2 [3] = ~ UBA; // Pressione o botão A

atribuir XIO_2 [4] = UBB; // Pressione o botão B

atribuir c_enable = XIO_5 [2];

atribuir LEDExt = XIO_5 [5];

Então, temos que definir um temporizador de atraso. Comente o código do temporizador original e escreva uma nova função do temporizador

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

// LED Blinky start

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

/*

sempre @ (posedge CLK_66 ou negedge RST)

começar

if (! RST)

start_blinky <= 1'b0;

outro

começar

if (control_register [7: 4]> 0)

start_blinky <= 1'b1;

outro

start_blinky <= 1'b0;

fim

fim

*/

reg [31: 0] ex;

começo inicial

ex <= 32'b0;

start_blinky <= 1'b0;

fim

sempre @ (posedge CLK_66)

começar

ex <= ex + 1'b1;

if (ex> 100000000) // flash on / off ~ 1,6 segundos, clock de 66 MHz

começar

start_blinky <=! start_blinky;

ex <= 32'b0;

fim

fim

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

// LED Delay Timer Counter

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

/*

sempre @ (posedge CLK_66 ou negedge RST)

começar

if (! RST)

led_delay_counter <= TIMER_LOW_LIMIT;

outro

começar

if (estado [SELECT_MODE])

led_delay_counter <= timer_value;

else if (estado [WAIT_FOR_TIMER])

led_delay_counter <= led_delay_counter - 1'd1;

fim

fim*/

Etapa 4: compilar o código Verilog

Compilar o Código Verilog
Compilar o Código Verilog
Compilar o Código Verilog
Compilar o Código Verilog

Pressione "Iniciar Compilação" no Quartus, nenhuma mensagem de erro deve ser gerada.

Se você receber uma mensagem de erro sobre vários pinos. Vá para Atribuições -> Dispositivo -> Opções de dispositivo e pino -> Pinos de dupla finalidade -> altere o valor do pino apropriado para "Usar como E / S regular".

Após a compilação, você deve obter o arquivo de saída pof diretamente. Se o seu software não estiver atualizado, você pode obter apenas o arquivo sof. Quando isso acontecer, clique em "Arquivo" no Quartus -> "converter arquivos de programação". Altere as configurações marcadas com caixas vermelhas.

Etapa 5: vamos tentar

Afinal, deve funcionar !!! O LED amarelo está sempre aceso. O LED vermelho está piscando. O LED azul é desligado se você pressionar o botão B. O LED verde é ligado se você pressionar o botão A