[an error occurred while processing this directive]
|
На выходе ZZZZ.
А хотелось бы двоично-десятичный счетчик :((
library IEEE;
use IEEE.std_logic_1164.all;
entity DB_count is
port (
CLK: in STD_LOGIC;
CLR: in STD_LOGIC;
CE: in STD_LOGIC;
-- FL: in STD_LOGIC;
-- CTR: in STD_LOGIC;
-- OP_MODE: in INTEGER range 0 to 3;
-- FLAG1: inout STD_LOGIC;
D_OUT: out STD_LOGIC_VECTOR(11 downto 0)
);
end DB_count;
architecture DB_count_arch of DB_count is
SIGNAL D1,D2,D3: STD_LOGIC_VECTOR(3 downto 0);--INTEGER range 0 to 9;
SIGNAL DI1,DI2,DI3: INTEGER range 0 to 9;
SIGNAL FLAG1, FLAG2: bit;
begin
process (CLR, CLK, CE, DI1, DI2, DI3, D1, D2, D3)
begin
if CLR='1' then
DI1 <= 0;
DI2 <= 0;
DI3 <= 0;
elsif CLK'event and CLK='1' then
--
if CE='1' then
IF (DI3=9 AND DI2=5 AND DI1=9) THEN
DI1 <= 0;
DI2 <= 0;
DI3 <= 0;
ELSE
DI1 <= DI1 + 1;
if FLAG1='1' then
DI2 <= DI2 + 1;
END IF;
if FLAG2='1' then
DI3 <= DI3 + 1;
END IF;
end if;
end if;
end if;
D1(3 downto 0) <= D1;
D2(3 downto 0) <= D2;
D3(3 downto 0) <= D3;
D_OUT(3 downto 0) <= D1(3 downto 0);
D_OUT(7 downto 4) <= D2(3 downto 0);
D_OUT(11 downto 8) <= D3(3 downto 0);
if DI1=9 then
FLAG1 <= '1';
else FLAG1 <= '0';
end if;
if DI2=9 then
FLAG2 <= '1';
else FLAG2 <= '0';
end if;
end process;
end DB_count_arch;
E-mail: info@telesys.ru