Lo que quería explicarte era más sencillo:
Codigo:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity holamundo is
Port ( busy : in std_logic;
clk :in std_logic;
reset : in std_logic;
salida : out std_logic_vector(7 downto 0);
dav : out std_logic);
end entity holamundo;
architecture Behavioral of holamundo is
signal letra: std_logic_vector(3 downto 0);
signal estado : std_logic_vector(3 downto 0);
begin
process (clk, reset) begin
if(reset = "1") then
estado <= (others => "0");
dav <="0";
elsif(clk"event and clk="1")then
if(estado = X"0"
then
if(busy = "0") then
dav <= "1";
estado <= X"1";
end if;
elsif(estado=X"1"
then
dav <= "0";
estado <= X"2";
elsif(estado=X"2"
then
letra <= letra + "1";
estado <= X"0";
end if;
end if;
end process;
process (letra) begin
case letra is
when "0000" => salida<= "00100000";--espacio
when "0001" => salida<= "00100000";--espacio
when "0010" => salida<= "01001000"; -- H
when "0011" => salida<= "01001111"; -- O
when "0100" => salida<= "01001100"; -- L
when "0101" => salida<= "01000001"; -- A
when "0110" => salida<= "00100000";--espacio
when "0111" => salida<= "01001101"; -- M
when "1000" => salida<= "01010101"; -- U
when "1001" => salida<= "01001110"; -- N
when "1010" => salida<= "01000100"; -- D
when "1011" => salida<= "01001111"; -- O
when "1100" => salida<= "00100000";--espacio
when "1101" => salida<= "00100000";--espacio
when "1110" => salida<= "00100000";--espacio
when "1111" => salida<= "00100000";--espacio
when others => salida <=(others=>"0");
end case;
end process;
end Behavioral;
Prueba a ver si funciona