VHDL мультиплексирование семисегментный дисплей - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь реализовать половину сумматора.Я использую мультиплексор для управления двумя цифрами на семисегментном дисплее на плате с тактовой частотой 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;
...