@@ -266,11 +266,11 BEGIN | |||||
266 |
|
266 | |||
267 | tick => new_timecode, |
|
267 | tick => new_timecode, | |
268 | new_coarsetime => new_coarsetime, |
|
268 | new_coarsetime => new_coarsetime, | |
269 |
coarsetime_reg => coarsetime_reg(3 |
|
269 | coarsetime_reg => coarsetime_reg(31 DOWNTO 0), | |
270 |
|
270 | |||
271 | fine_time => fine_time_49, |
|
271 | fine_time => fine_time_49, | |
272 | fine_time_new => fine_time_new_49, |
|
272 | fine_time_new => fine_time_new_49, | |
273 | coarse_time => coarse_time_49, |
|
273 | coarse_time => coarse_time_49, | |
274 | coarse_time_new => coarse_time_new_49); |
|
274 | coarse_time_new => coarse_time_new_49); | |
275 |
|
275 | |||
276 | END Behavioral; No newline at end of file |
|
276 | END Behavioral; |
@@ -15,7 +15,7 ENTITY coarse_time_counter IS | |||||
15 |
|
15 | |||
16 | tick : IN STD_LOGIC; |
|
16 | tick : IN STD_LOGIC; | |
17 | set_TCU : IN STD_LOGIC; |
|
17 | set_TCU : IN STD_LOGIC; | |
18 |
set_TCU_value : IN STD_LOGIC_VECTOR(3 |
|
18 | set_TCU_value : IN STD_LOGIC_VECTOR(31 DOWNTO 0); | |
19 | CT_add1 : IN STD_LOGIC; |
|
19 | CT_add1 : IN STD_LOGIC; | |
20 | fsm_desync : IN STD_LOGIC; |
|
20 | fsm_desync : IN STD_LOGIC; | |
21 | FT_max : IN STD_LOGIC; |
|
21 | FT_max : IN STD_LOGIC; | |
@@ -34,6 +34,9 ARCHITECTURE beh OF coarse_time_counter | |||||
34 | SIGNAL coarse_time_new_counter : STD_LOGIC; |
|
34 | SIGNAL coarse_time_new_counter : STD_LOGIC; | |
35 | SIGNAL coarse_time_31 : STD_LOGIC; |
|
35 | SIGNAL coarse_time_31 : STD_LOGIC; | |
36 | SIGNAL coarse_time_31_reg : STD_LOGIC; |
|
36 | SIGNAL coarse_time_31_reg : STD_LOGIC; | |
|
37 | ||||
|
38 | SIGNAL set_synchronized : STD_LOGIC; | |||
|
39 | SIGNAL set_synchronized_value : STD_LOGIC_VECTOR(5 DOWNTO 0); | |||
37 |
|
40 | |||
38 | --CONSTANT NB_SECOND_DESYNC : INTEGER := 4; -- TODO : 60 |
|
41 | --CONSTANT NB_SECOND_DESYNC : INTEGER := 4; -- TODO : 60 | |
39 | BEGIN -- beh |
|
42 | BEGIN -- beh | |
@@ -48,12 +51,17 BEGIN -- beh | |||||
48 | RST_VALUE => (OTHERS => '0'), |
|
51 | RST_VALUE => (OTHERS => '0'), | |
49 | MAX_VALUE => "111" & X"FFFFFFF" , |
|
52 | MAX_VALUE => "111" & X"FFFFFFF" , | |
50 | set => set_TCU, |
|
53 | set => set_TCU, | |
51 | set_value => set_TCU_value, |
|
54 | set_value => set_TCU_value(30 DOWNTO 0), | |
52 | add1 => CT_add1, |
|
55 | add1 => CT_add1, | |
53 | counter => coarse_time(30 DOWNTO 0)); |
|
56 | counter => coarse_time(30 DOWNTO 0)); | |
54 |
|
57 | |||
55 |
|
58 | |||
56 | add1_bit31 <= '1' WHEN fsm_desync = '1' AND FT_max = '1' ELSE '0'; |
|
59 | add1_bit31 <= '1' WHEN fsm_desync = '1' AND FT_max = '1' ELSE '0'; | |
|
60 | ||||
|
61 | ||||
|
62 | set_synchronized <= (tick AND (NOT coarse_time_31)) OR (coarse_time_31 AND set_TCU); | |||
|
63 | set_synchronized_value <= STD_LOGIC_VECTOR(to_unsigned(NB_SECOND_DESYNC, 6)) WHEN (set_TCU AND set_TCU_value(31)) = '1' ELSE | |||
|
64 | (OTHERS => '0'); | |||
57 |
|
65 | |||
58 | counter_2 : general_counter |
|
66 | counter_2 : general_counter | |
59 | GENERIC MAP ( |
|
67 | GENERIC MAP ( | |
@@ -64,8 +72,8 BEGIN -- beh | |||||
64 | rstn => rstn, |
|
72 | rstn => rstn, | |
65 | RST_VALUE => STD_LOGIC_VECTOR(to_unsigned(NB_SECOND_DESYNC, 6)), |
|
73 | RST_VALUE => STD_LOGIC_VECTOR(to_unsigned(NB_SECOND_DESYNC, 6)), | |
66 | MAX_VALUE => STD_LOGIC_VECTOR(to_unsigned(NB_SECOND_DESYNC, 6)), |
|
74 | MAX_VALUE => STD_LOGIC_VECTOR(to_unsigned(NB_SECOND_DESYNC, 6)), | |
67 |
set => |
|
75 | set => set_synchronized, | |
68 | set_value => (OTHERS => '0'), |
|
76 | set_value => set_synchronized_value, | |
69 | add1 => add1_bit31, |
|
77 | add1 => add1_bit31, | |
70 | counter => nb_second_counter); |
|
78 | counter => nb_second_counter); | |
71 |
|
79 |
@@ -34,7 +34,7 ENTITY lfr_time_management IS | |||||
34 | tick : IN STD_LOGIC; -- transition signal information |
|
34 | tick : IN STD_LOGIC; -- transition signal information | |
35 |
|
35 | |||
36 | new_coarsetime : IN STD_LOGIC; -- transition signal information |
|
36 | new_coarsetime : IN STD_LOGIC; -- transition signal information | |
37 |
coarsetime_reg : IN STD_LOGIC_VECTOR(3 |
|
37 | coarsetime_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0); | |
38 |
|
38 | |||
39 | fine_time : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); |
|
39 | fine_time : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); | |
40 | fine_time_new : OUT STD_LOGIC; |
|
40 | fine_time_new : OUT STD_LOGIC; |
@@ -57,7 +57,7 PACKAGE lpp_lfr_time_management IS | |||||
57 | rstn : IN STD_LOGIC; |
|
57 | rstn : IN STD_LOGIC; | |
58 | tick : IN STD_LOGIC; |
|
58 | tick : IN STD_LOGIC; | |
59 | new_coarsetime : IN STD_LOGIC; |
|
59 | new_coarsetime : IN STD_LOGIC; | |
60 |
coarsetime_reg : IN STD_LOGIC_VECTOR(3 |
|
60 | coarsetime_reg : IN STD_LOGIC_VECTOR(31 DOWNTO 0); | |
61 | fine_time : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); |
|
61 | fine_time : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); | |
62 | fine_time_new : OUT STD_LOGIC; |
|
62 | fine_time_new : OUT STD_LOGIC; | |
63 | coarse_time : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); |
|
63 | coarse_time : OUT STD_LOGIC_VECTOR(31 DOWNTO 0); | |
@@ -72,7 +72,7 PACKAGE lpp_lfr_time_management IS | |||||
72 | rstn : IN STD_LOGIC; |
|
72 | rstn : IN STD_LOGIC; | |
73 | tick : IN STD_LOGIC; |
|
73 | tick : IN STD_LOGIC; | |
74 | set_TCU : IN STD_LOGIC; |
|
74 | set_TCU : IN STD_LOGIC; | |
75 |
set_TCU_value : IN STD_LOGIC_VECTOR(3 |
|
75 | set_TCU_value : IN STD_LOGIC_VECTOR(31 DOWNTO 0); | |
76 | CT_add1 : IN STD_LOGIC; |
|
76 | CT_add1 : IN STD_LOGIC; | |
77 | fsm_desync : IN STD_LOGIC; |
|
77 | fsm_desync : IN STD_LOGIC; | |
78 | FT_max : IN STD_LOGIC; |
|
78 | FT_max : IN STD_LOGIC; |
General Comments 0
You need to be logged in to leave comments.
Login now