##// END OF EJS Templates
Moved Validation_LFR_TIME_MANAGEMENT from designs to tests directory...
Moved Validation_LFR_TIME_MANAGEMENT from designs to tests directory Changed test directory Validation_LFR_TIME_MANAGEMENT in LFR_time_management. Added LFR_MANAGMENT_TIME_FINE_DELTA register into apb_lfr_management module at address 0x30 : * LFR_MANAGMENT_TIME_FINE_DELTA ( 8 downto 0) : ft_counter_lsb value * LFR_MANAGMENT_TIME_FINE_DELTA (24 downto 9) : ft value * LFR_MANAGMENT_TIME_FINE_DELTA (26 downto 25) : + ft_counter_lsb_MAX_VALUE = 379 when "00" + ft_counter_lsb_MAX_VALUE = 380 when "01" + ft_counter_lsb_MAX_VALUE = 381 when "10" Updated LFR_time_managment testbench.

File last commit:

r655:2dbcdaf8bb73 default
r655:2dbcdaf8bb73 default
Show More
general_counter.vhd
54 lines | 1.5 KiB | text/x-vhdl | VhdlLexer
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.NUMERIC_STD.ALL;
ENTITY general_counter IS
GENERIC (
CYCLIC : STD_LOGIC := '1';
NB_BITS_COUNTER : INTEGER := 9;
RST_VALUE : INTEGER := 0
);
PORT (
clk : IN STD_LOGIC;
rstn : IN STD_LOGIC;
--
MAX_VALUE : IN STD_LOGIC_VECTOR(NB_BITS_COUNTER-1 DOWNTO 0);
--
set : IN STD_LOGIC;
set_value : IN STD_LOGIC_VECTOR(NB_BITS_COUNTER-1 DOWNTO 0);
add1 : IN STD_LOGIC;
counter : OUT STD_LOGIC_VECTOR(NB_BITS_COUNTER-1 DOWNTO 0)
);
END general_counter;
ARCHITECTURE beh OF general_counter IS
CONSTANT RST_VALUE_v : STD_LOGIC_VECTOR(NB_BITS_COUNTER-1 DOWNTO 0) := STD_LOGIC_VECTOR(to_unsigned(RST_VALUE, NB_BITS_COUNTER));
SIGNAL counter_s : STD_LOGIC_VECTOR(NB_BITS_COUNTER-1 DOWNTO 0);
BEGIN -- beh
PROCESS (clk, rstn)
BEGIN -- PROCESS
IF rstn = '0' THEN -- asynchronous reset (active low)
counter_s <= RST_VALUE_v;
ELSIF clk'EVENT AND clk = '1' THEN -- rising clock edge
IF set = '1' THEN
counter_s <= set_value;
ELSIF add1 = '1' THEN
IF counter_s < MAX_VALUE THEN
counter_s <= STD_LOGIC_VECTOR((UNSIGNED(counter_s) + 1));
ELSE
IF CYCLIC = '1' THEN
counter_s <= (OTHERS => '0');
END IF;
END IF;
END IF;
END IF;
END PROCESS;
counter <= counter_s;
END beh;