Попробуйте что-нибудь подобное для вашего второго процесса
signal digit_display : std_logic := '0';
process(clk)
begin
if rising_edge(clk) then
digit_display <= not(digit_display);
if digit_display = '1' then
dot_seg <= '0';
if player_clk = '1' then -- player
case player_in is
when "00" => seg <= "1000110";
when "01" => seg <= "1000011";
when "10" => seg <= "0010101";
when "11" => seg <= "1000110";
select_seg <= "01111111";
end case;
end if;
else
seg <= "0000000"; -- Full off, I don't know polarity
if dot_clk = '1' then -- dot(road) segment
dot_seg <= '1';
select_seg <= "01011111";
else
dot_seg <='1';
select_seg <= "10101111";
end if;
end if;
end if;
end process;
Если clk слишком быстр, чтобы мигать digit_display, вы можете поставить счетчик так:
signal digit_display_count : unsigned(15 downto 0) := (others => '0');
if digit_display_count = 100 then -- Choose an appropriate value
digit_display <= not(digit_display);
digit_display_count <= (others => '0')
else
digit_display_count <= digit_display_count + 1;
end if;