Идет входной сигнал INPUT, по каждому его фронту обнуляю показания счетчика тактовых импульсов CLOCK. Не работает и все, пишет что значение PERIODSIG на хранится вне CLOCK. Почему так и как надо?
LIBRARY ieee ; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY METER IS PORT ( INPUT, CLOCK: IN STD_LOGIC; PERIOD : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); END METER ;
ARCHITECTURE BEHAVIOR OF METER IS SIGNAL PERIODSIG : INTEGER RANGE 0 TO 255; BEGIN
CLKPROC: PROCESS ( CLOCK, INPUT ) BEGIN IF (INPUT'EVENT AND RISING_EDGE(INPUT)) THEN PERIODSIG <= 0; END IF; IF (CLOCK'EVENT AND RISING_EDGE(CLOCK)) THEN PERIODSIG <= PERIODSIG + 1; END IF; END PROCESS CLKPROC;
PERIOD <= CONV_STD_LOGIC_VECTOR(PERIODSIG,8); END BEHAVIOR;
|