Я пытаюсь реализовать половину сумматора.Я использую мультиплексор для управления двумя цифрами на семисегментном дисплее на плате с тактовой частотой 32 МГц.Я хочу, чтобы каждая цифра (подключенная к анодам активного низкого уровня 0 и 1) была включена в течение 1 мс.Я пытаюсь добиться этого с помощью счетчика.
Код мультиплексора приведен ниже.Cmux и Smux - это векторы, представляющие семь сегментов (плюс десятичная точка) для переноса и суммирования, которые мультиплексируются.
Код, который я написал ниже.Я получаю сообщение об ошибке FF / latch seg имеет постоянное значение в блоке mux.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.std_logic_arith.all;
entity mux is
port(Cmux, Smux: in std_logic_vector(7 downto 0);
CLK: in std_logic;
Seg: inout std_logic_vector(7 downto 0);
AN0, AN1: out std_logic);
end mux;
architecture Behavioral of mux is
signal counter: integer range 0 to 32000 := 0;
begin
process(CLK)
begin
if CLK'event and CLK='1' then
if counter = 32000 then
if Seg = Cmux then
Seg <= Smux;
AN0 <= '1';
AN1 <= '0';
else
if Seg = Smux then
Seg <= Cmux;
AN0 <= '0';
AN1 <= '1';
else
Seg <= Smux;
AN0 <= '1';
AN1 <= '0';
end if;
counter <= 0;
end if;
else
counter <= counter + 1;
end if;
end if;
end process;
end Behavioral;