Aprendí Java el año pasado y comencé a aprender VHDL y la implementación en BASYS3 este año. Solo trato de mostrar los números en el segmento siete comenzando desde 0 y cada vez que se presiona un botón, el número aumentará. Estoy familiarizado con las declaraciones de entrada y salida, pero no pude declarar mi variable entera de la siguiente manera en VHDL vivado;
architecture Behavioral of top_module is
begin
shared variable total_foul : integer range 0 to 5;
total_foul := 0;
Sigue diciendo que hay un error de sintaxis cerca de la variable y el rango que no pude descubrir. También traté de escribir el código de siete segmentos en las declaraciones de casos de la siguiente manera;
begin
case total_foul is
when 1 => LED <= "1001111"; -- "1"
when 2 => LED <= "0010010"; -- "2"
when 3 => LED <= "0000110"; -- "3"
when 4 => LED <= "1001100"; -- "4"
when 5 => LED <= "0100100"; -- "5"
when others => LED <= "0000001"; -- "0"
Pero esto también indica que hay un error de sintaxis cerca de cuándo.
El código general por ahora es;
entity top_module is
Port ( increase : in STD_LOGIC;
decrease : in STD_LOGIC;
foul : in STD_LOGIC;
anode : out STD_LOGIC_VECTOR (3 downto 0);
LED : out STD_LOGIC_VECTOR (6 downto 0));
end top_module;
architecture Behavioral of top_module is
begin
anode <= "1111";
shared variable total_foul : integer range 0 to 5;
total_foul := 0;
begin
if foul = '1' then
if increase = '1' and decrease = '0' then
total_foul := total_foul + 1;
elsif decrease = '1' and increase = '0' then
total_foul := total_foul - 1;
end if;
begin
case total_foul is
when 1 => LED <= "1001111"; -- "1"
when 2 => LED <= "0010010"; -- "2"
when 3 => LED <= "0000110"; -- "3"
when 4 => LED <= "1001100"; -- "4"
when 5 => LED <= "0100100"; -- "5"
when others => LED <= "0000001"; -- "0"
end Behavioral;
Gracias a todos por adelantado.