Hola a todos.
Estoy realizando un proyecto utilizando un fpga Max II y una matriz de leds de 5X7.
Necesito crear un código en vhdl para que aparezca una palabra que se mueva de derecha a izquierda. he podido hacer que aparezca solo una letra pero no logro hacer que se mueva.
Gracias por su atención.
¿Me podrían ayudar por favor a guiarme?
Aquí el código, este código muestra una flecha pero no permite que se mueva.
Estoy realizando un proyecto utilizando un fpga Max II y una matriz de leds de 5X7.
Necesito crear un código en vhdl para que aparezca una palabra que se mueva de derecha a izquierda. he podido hacer que aparezca solo una letra pero no logro hacer que se mueva.
Gracias por su atención.
¿Me podrían ayudar por favor a guiarme?
Aquí el código, este código muestra una flecha pero no permite que se mueva.
Código:
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_unsigned.all;
ENTITY matrix IS
PORT(
CLK, RESET: in STD_LOGIC;
c1, c2, c3, c4, c5, f1, f2, f3, f4,
f5,f6,f7: out STD_LOGIC
);
END matrix;
ARCHITECTURE archmatrix OF matrix IS
signal frec_alta, frec_lenta: STD_LOGIC;
signal COUNT: STD_LOGIC_VECTOR (23 downto 0);
signal COUNTB: STD_LOGIC_VECTOR (2 downto 0);
signal matrix_led: STD_LOGIC_VECTOR (11 downto 0);
begin
divisor: process (CLK, RESET)
begin
if RESET=\'1\' then
COUNT <= "000000000000000000000000";
elsif CLK=\'1\' and CLK\'event then
COUNT <= COUNT + 1;
else
COUNT <= COUNT;
end if;
frec_alta <= COUNT(19);
frec_lenta <= COUNT(23);
end process divisor;
contabin: process (frec_alta, RESET)
begin
if (RESET=\'1\' or COUNTB= 5) then
COUNTB <= "000";
elsif frec_alta=\'1\' and frec_alta\'event then
COUNTB <= COUNTB + 1;
else COUNTB <=
COUNTB;
end if;
end process contabin;
decomatrix: process (COUNTB)
begin
-- CONTB(2:0) -> c1|c2|c3|c4|c5|f1|f2|f3|f4|f5
case COUNTB is
when "000" => matrix_led <="011110010000"; --
barrido c1
when "001" => matrix_led <="101110111111"; --c2
when "010" => matrix_led <="110111111111"; --c3
when "011" => matrix_led <="111010111111"; --c4
when "100" => matrix_led <="111100010000"; --c5
when others => matrix_led <="111110000000"; --
apagado
end case;
end process decomatrix;
salida_individual: process (matrix_led)
begin
c1 <= matrix_led(11);
c2 <= matrix_led(10);
c3 <= matrix_led(9);
c4 <= matrix_led(8);
c5 <= matrix_led(7);
f1 <= matrix_led(6);
f2 <= matrix_led(5);
f3 <= matrix_led(4);
f4 <= matrix_led(3);
f5 <= matrix_led(2);
f6 <= matrix_led(1);
f7 <= matrix_led(0);
end process salida_individual;
END archmatrix;
Última edición por un moderador: