Circuito FPGA de LED simple

0

Soy nuevo en diseño digital, y recientemente compré una placa de desarrollo Bemicro MAX10 FPGA para ayudarme a mojarme los pies. Estoy tratando de aprender VHDL, y he descargado algunos archivos PDF para comenzar. El circuito que estoy tratando de crear es un circuito simple de LED. Hay dos botones que son entradas y dos LED que son las salidas. La idea es que, cuando se presiona el botón_0 o el botón_1 en el tablero, se enciende el LED_1. Cuando se presionan ambos botones, se encienden ambos LED. Aquí está el código que he escrito para lograr esto:

library IEEE;
use IEEE.std_logic_1164.ALL;

entity Button_LEDs is
    Port ( button_0 : in std_logic;
           button_1 : in std_logic;
           LED_0 : out std_logic;
           LED_1 : out std_logic);
end Button_LEDs;

architecture Behavorial of Button_LEDs is 

begin
    LED_0 <= (button_0 AND button_1);
    LED_1 <= (button_0 OR button_1);    
end Behavorial;

El problema es que cuando se presiona button_0 o button_1, LED_0 se enciende en lugar de LED_1. La linea

LED_0 <= (button_0 AND button_1);

se está comportando como una puerta OR en lugar de una puerta AND. Ambos LED se encienden cuando se presionan ambos botones, lo que se espera. He verificado dos veces las asignaciones de pines, y estoy seguro de que se han asignado correctamente, por lo que estoy muy confundido por esta lógica.

    
pregunta Alex Hempel

2 respuestas

1

Alex, mi consejo es:

  1. Vuelva a verificar los identificadores de los botones y LED.
  2. Use la lógica combinacional si no tiene requisitos específicos para el modelado de comportamiento . Si desea tener un procedimiento de modelado de comportamiento, asegúrese de que el nivel eléctrico predeterminado sea correcto.
respondido por el Mr.Budapest
0

Algo importante que hay que recordar es que a veces las placas de desarrollo FPGA (botones, LED, etc.) están activas-bajas. Es decir, los botones están en '1' cuando no están presionados, y '0' cuando se presionan.

Los LEDs en este FPGA también parecen estar activos-bajos (por lo tanto, se encienden cuando se les asigna '0'). Esta es mi conclusión al mirar el schematic para este FPGA.

Entonces, cuando sus botones no están presionados: LED_0 < = '1' Y '1' LED_0 es '1' (así que está apagado).

Cada vez que se presiona uno de los botones, irá a '0' y luego LED_0 se encenderá, haciéndolo parecer un OR. Para resolver esto, debes escribir:

LED_0 <= button_0 OR button_1;

¿Qué pasa con LED_1? Parece que en esta situación debería actuar como una puerta AND.

    
respondido por el GaiusJulius

Lea otras preguntas en las etiquetas