##// END OF EJS Templates
(MINI-LFR) WFP_MS-0.1-53
pellion -
r519:7d6d07e76b74 JC
parent child
Show More
@@ -518,7 +518,7 BEGIN -- beh
518 518 pirq_ms => 6,
519 519 pirq_wfp => 14,
520 520 hindex => 2,
521 top_lfr_version => X"000134") -- aa.bb.cc version
521 top_lfr_version => X"000135") -- aa.bb.cc version
522 522 PORT MAP (
523 523 clk => clk_25,
524 524 rstn => LFR_rstn,
@@ -583,7 +583,7 BEGIN -- beh
583 583
584 584 sample_hk <= "0001000100010001" WHEN HK_SEL = "00" ELSE
585 585 "0010001000100010" WHEN HK_SEL = "10" ELSE
586 "0100010001000100" WHEN HK_SEL = "10" ELSE
586 "0100010001000100" WHEN HK_SEL = "11" ELSE
587 587 (OTHERS => '0');
588 588
589 589
@@ -26,6 +26,8 USE ieee.std_logic_1164.ALL;
26 26
27 27 PACKAGE data_type_pkg IS
28 28
29 TYPE array_integer IS ARRAY (NATURAL RANGE <>) OF INTEGER;
30
29 31 TYPE sample_vector IS ARRAY(NATURAL RANGE <>, NATURAL RANGE <>) OF STD_LOGIC;
30 32
31 33 END data_type_pkg;
@@ -127,6 +127,7 BEGIN
127 127 LFR_soft_rstn <= NOT r.LFR_soft_reset;
128 128
129 129 PROCESS(resetn, clk25MHz)
130 VARIABLE paddr : STD_LOGIC_VECTOR(7 DOWNTO 2);
130 131 BEGIN
131 132
132 133 IF resetn = '0' THEN
@@ -161,36 +162,19 BEGIN
161 162 soft_reset <= '0';
162 163 END IF;
163 164
164 --APB Write OP
165 IF (apbi.psel(pindex) AND apbi.penable AND apbi.pwrite) = '1' THEN
166 CASE apbi.paddr(7 DOWNTO 2) IS
167 WHEN ADDR_LFR_MANAGMENT_CONTROL =>
168 r.ctrl <= apbi.pwdata(0);
169 r.soft_reset <= apbi.pwdata(1);
170 r.LFR_soft_reset <= apbi.pwdata(2);
171 WHEN ADDR_LFR_MANAGMENT_TIME_LOAD =>
172 r.coarse_time_load <= apbi.pwdata(30 DOWNTO 0);
173 coarsetime_reg_updated <= '1';
174 WHEN OTHERS =>
175 NULL;
176 END CASE;
177 ELSE
178 IF r.ctrl = '1' THEN
179 r.ctrl <= '0';
180 END if;
181 IF r.soft_reset = '1' THEN
182 r.soft_reset <= '0';
183 END if;
184 END IF;
165 paddr := "000000";
166 paddr(7 DOWNTO 2) := apbi.paddr(7 DOWNTO 2);
167 Rdata <= (OTHERS => '0');
185 168
169
170 IF apbi.psel(pindex) = '1' THEN
186 171 --APB READ OP
187 IF (apbi.psel(pindex) AND (NOT apbi.pwrite)) = '1' THEN
188 CASE apbi.paddr(7 DOWNTO 2) IS
172 CASE paddr(7 DOWNTO 2) IS
189 173 WHEN ADDR_LFR_MANAGMENT_CONTROL =>
190 174 Rdata(0) <= r.ctrl;
191 175 Rdata(1) <= r.soft_reset;
192 176 Rdata(2) <= r.LFR_soft_reset;
193 Rdata(31 DOWNTO 3) <= (others => '0');
177 Rdata(31 DOWNTO 3) <= (OTHERS => '0');
194 178 WHEN ADDR_LFR_MANAGMENT_TIME_LOAD =>
195 179 Rdata(30 DOWNTO 0) <= r.coarse_time_load(30 DOWNTO 0);
196 180 WHEN ADDR_LFR_MANAGMENT_TIME_COARSE =>
@@ -208,8 +192,31 BEGIN
208 192 Rdata(31 DOWNTO 16) <= (OTHERS => '0');
209 193 Rdata(15 DOWNTO 0) <= r.HK_temp_2;
210 194 WHEN OTHERS =>
211 Rdata(31 DOWNTO 0) <= (others => '0');
195 Rdata(31 DOWNTO 0) <= (OTHERS => '0');
212 196 END CASE;
197
198 --APB Write OP
199 IF (apbi.pwrite AND apbi.penable) = '1' THEN
200 CASE paddr(7 DOWNTO 2) IS
201 WHEN ADDR_LFR_MANAGMENT_CONTROL =>
202 r.ctrl <= apbi.pwdata(0);
203 r.soft_reset <= apbi.pwdata(1);
204 r.LFR_soft_reset <= apbi.pwdata(2);
205 WHEN ADDR_LFR_MANAGMENT_TIME_LOAD =>
206 r.coarse_time_load <= apbi.pwdata(30 DOWNTO 0);
207 coarsetime_reg_updated <= '1';
208 WHEN OTHERS =>
209 NULL;
210 END CASE;
211 ELSE
212 IF r.ctrl = '1' THEN
213 r.ctrl <= '0';
214 END IF;
215 IF r.soft_reset = '1' THEN
216 r.soft_reset <= '0';
217 END IF;
218 END IF;
219
213 220 END IF;
214 221
215 222 END IF;
@@ -360,7 +367,7 BEGIN
360 367
361 368 HK_sel_s <= "00";
362 369
363 ELSIF clk25MHz'event AND clk25MHz = '1' THEN -- rising clock edge
370 ELSIF clk25MHz'EVENT AND clk25MHz = '1' THEN -- rising clock edge
364 371
365 372 IF HK_val = '1' THEN
366 373 CASE HK_sel_s IS
@@ -377,4 +384,4 BEGIN
377 384
378 385 HK_sel <= HK_sel_s;
379 386
380 END Behavioral; No newline at end of file
387 END Behavioral;
General Comments 0
You need to be logged in to leave comments. Login now