##// END OF EJS Templates
Simulation without RAM_CEL
pellion -
r582:3fed66e2161d simu_with_Leon3
parent child
Show More
@@ -85,6 +85,8 ARCHITECTURE Behavioral OF lpp_dma_SEND1
85
85
86 SIGNAL bus_request : STD_LOGIC;
86 SIGNAL bus_request : STD_LOGIC;
87 SIGNAL bus_lock : STD_LOGIC;
87 SIGNAL bus_lock : STD_LOGIC;
88
89 SIGNAL data_reg : STD_LOGIC_VECTOR(31 DOWNTO 0);
88
90
89 BEGIN
91 BEGIN
90
92
@@ -111,8 +113,8 BEGIN
111
113
112 -----------------------------------------------------------------------------
114 -----------------------------------------------------------------------------
113 AHB_Master_Out.HADDR <= address(31 DOWNTO 6) & address_counter_reg & "00";
115 AHB_Master_Out.HADDR <= address(31 DOWNTO 6) & address_counter_reg & "00";
114 AHB_Master_Out.HWDATA <= ahbdrivedata(data);
116 AHB_Master_Out.HWDATA <= ahbdrivedata(data) WHEN AHB_Master_In.HREADY = '1' ELSE ahbdrivedata(data_reg);
115
117
116 -----------------------------------------------------------------------------
118 -----------------------------------------------------------------------------
117 --ren <= NOT ((AHB_Master_In.HGRANT(hindex) OR LAST_READ ) AND AHB_Master_In.HREADY );
119 --ren <= NOT ((AHB_Master_In.HGRANT(hindex) OR LAST_READ ) AND AHB_Master_In.HREADY );
118 --ren <= NOT beat;
120 --ren <= NOT beat;
@@ -122,12 +124,21 BEGIN
122 IF rstn = '0' THEN -- asynchronous reset (active low)
124 IF rstn = '0' THEN -- asynchronous reset (active low)
123 state <= IDLE;
125 state <= IDLE;
124 done <= '0';
126 done <= '0';
127 ren <= '1';
125 address_counter_reg <= (OTHERS => '0');
128 address_counter_reg <= (OTHERS => '0');
126 AHB_Master_Out.HTRANS <= HTRANS_IDLE;
129 AHB_Master_Out.HTRANS <= HTRANS_IDLE;
127 AHB_Master_Out.HBUSREQ <= '0';
130 AHB_Master_Out.HBUSREQ <= '0';
128 AHB_Master_Out.HLOCK <= '0';
131 AHB_Master_Out.HLOCK <= '0';
132
133 data_reg <= (OTHERS => '0');
129 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
134 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
135
136 IF AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' THEN
137 data_reg <= data;
138 END IF;
139
130 done <= '0';
140 done <= '0';
141 ren <= '1';
131 CASE state IS
142 CASE state IS
132 WHEN IDLE =>
143 WHEN IDLE =>
133 AHB_Master_Out.HBUSREQ <= '0';
144 AHB_Master_Out.HBUSREQ <= '0';
@@ -159,6 +170,7 BEGIN
159 IF AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' THEN
170 IF AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' THEN
160 AHB_Master_Out.HTRANS <= HTRANS_SEQ;
171 AHB_Master_Out.HTRANS <= HTRANS_SEQ;
161 state <= s_CTRL_DATA;
172 state <= s_CTRL_DATA;
173 ren <= '0';
162 END IF;
174 END IF;
163
175
164 WHEN s_CTRL_DATA =>
176 WHEN s_CTRL_DATA =>
@@ -176,6 +188,11 BEGIN
176 state <= s_DATA;
188 state <= s_DATA;
177 END IF;
189 END IF;
178
190
191 IF AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' AND address_counter_reg /= "1111" THEN
192 ren <= '0';
193 END IF;
194
195
179 WHEN s_DATA =>
196 WHEN s_DATA =>
180 AHB_Master_Out.HBUSREQ <= '0';
197 AHB_Master_Out.HBUSREQ <= '0';
181 --AHB_Master_Out.HLOCK <= '0';
198 --AHB_Master_Out.HLOCK <= '0';
@@ -194,7 +211,9 BEGIN
194 ctrl_window <= '1' WHEN state = s_CTRL OR state = s_CTRL_DATA ELSE '0';
211 ctrl_window <= '1' WHEN state = s_CTRL OR state = s_CTRL_DATA ELSE '0';
195 data_window <= '1' WHEN state = s_CTRL_DATA OR state = s_DATA ELSE '0';
212 data_window <= '1' WHEN state = s_CTRL_DATA OR state = s_DATA ELSE '0';
196 -----------------------------------------------------------------------------
213 -----------------------------------------------------------------------------
197 ren <= NOT(AHB_Master_In.HREADY) WHEN state = s_CTRL_DATA ELSE '1';
214
215
216 --ren <= NOT(AHB_Master_In.HREADY) WHEN state = s_CTRL_DATA ELSE '1';
198
217
199 -----------------------------------------------------------------------------
218 -----------------------------------------------------------------------------
200 --PROCESS (clk, rstn)
219 --PROCESS (clk, rstn)
@@ -422,7 +422,7 BEGIN
422 --Aeroflex memory generics:
422 --Aeroflex memory generics:
423 mbpedac => BYPASS_EDAC_MEMCTRLR,
423 mbpedac => BYPASS_EDAC_MEMCTRLR,
424 mprog => 1, -- program memory by default values after reset
424 mprog => 1, -- program memory by default values after reset
425 mpsrate => 15, -- default scrub rate period
425 mpsrate => 5, -- default scrub rate period
426 mpb2s => 14, -- default busy to scrub delay
426 mpb2s => 14, -- default busy to scrub delay
427 mpapb => 1, -- instantiate apb register
427 mpapb => 1, -- instantiate apb register
428 mchipcnt => 2,
428 mchipcnt => 2,
@@ -83,6 +83,9 ARCHITECTURE beh OF lpp_lfr IS
83 SIGNAL sample_f2_val : STD_LOGIC;
83 SIGNAL sample_f2_val : STD_LOGIC;
84 SIGNAL sample_f3_val : STD_LOGIC;
84 SIGNAL sample_f3_val : STD_LOGIC;
85 --
85 --
86 SIGNAL sample_f_val : STD_LOGIC_VECTOR(3 DOWNTO 0);
87 SIGNAL sample_f_data : STD_LOGIC_VECTOR((6*16)*4-1 DOWNTO 0);
88 --
86 SIGNAL sample_f0_data : STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
89 SIGNAL sample_f0_data : STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
87 SIGNAL sample_f1_data : STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
90 SIGNAL sample_f1_data : STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
88 SIGNAL sample_f2_data : STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
91 SIGNAL sample_f2_data : STD_LOGIC_VECTOR((6*16)-1 DOWNTO 0);
@@ -262,20 +265,66 BEGIN
262 data_shaping_R0 => data_shaping_R0,
265 data_shaping_R0 => data_shaping_R0,
263 data_shaping_R1 => data_shaping_R1,
266 data_shaping_R1 => data_shaping_R1,
264 data_shaping_R2 => data_shaping_R2,
267 data_shaping_R2 => data_shaping_R2,
265 sample_f0_val => sample_f0_val,
268 sample_f0_val => sample_f_val(0),
266 sample_f1_val => sample_f1_val,
269 sample_f1_val => sample_f_val(1),
267 sample_f2_val => sample_f2_val,
270 sample_f2_val => sample_f_val(2),
268 sample_f3_val => sample_f3_val,
271 sample_f3_val => sample_f_val(3),
269 sample_f0_wdata => sample_f0_data,
272 sample_f0_wdata => OPEN,
270 sample_f1_wdata => sample_f1_data,
273 sample_f1_wdata => OPEN,
271 sample_f2_wdata => sample_f2_data,
274 sample_f2_wdata => OPEN,
272 sample_f3_wdata => sample_f3_data,
275 sample_f3_wdata => OPEN,
273 sample_f0_time => sample_f0_time,
276 sample_f0_time => sample_f0_time,
274 sample_f1_time => sample_f1_time,
277 sample_f1_time => sample_f1_time,
275 sample_f2_time => sample_f2_time,
278 sample_f2_time => sample_f2_time,
276 sample_f3_time => sample_f3_time
279 sample_f3_time => sample_f3_time
277 );
280 );
281 -----------------------------------------------------------------------------
282 ALL_lane: FOR J IN 0 TO 3 GENERATE
283 ALL_channel: FOR I IN 0 TO 5 GENERATE
284 sample_f_data(15 + I*16 + J*6*16 DOWNTO 14 + I*16 + J*6*16) <= STD_LOGIC_VECTOR(to_unsigned(J,2));
285 sample_f_data(13 + I*16 + J*6*16 DOWNTO 11 + I*16 + J*6*16) <= STD_LOGIC_VECTOR(to_unsigned(I,3));
278
286
287 PROCESS (clk, rstn)
288 BEGIN -- PROCESS
289 IF rstn = '0' THEN -- asynchronous reset (active low)
290 sample_f_data(10 + I*16 + J*6*16 DOWNTO 0 + I*16 + J*6*16 ) <= STD_LOGIC_VECTOR(to_unsigned(2**11/6*I,11));
291 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
292 IF sample_f_val(J) = '1' THEN
293 sample_f_data(10 + I*16 + J*6*16 DOWNTO 0 + I*16 + J*6*16) <= STD_LOGIC_VECTOR(to_unsigned(
294 to_integer(UNSIGNED(sample_f_data(10 + I*16 + J*6*16 DOWNTO 0 + I*16 + J*6*16))) + 1,
295 11));
296 END IF;
297 END IF;
298 END PROCESS;
299
300 END GENERATE ALL_channel;
301 END GENERATE ALL_lane;
302
303 PROCESS (clk, rstn)
304 BEGIN -- PROCESS
305 IF rstn = '0' THEN -- asynchronous reset (active low)
306 sample_f0_val <= '0';
307 sample_f1_val <= '0';
308 sample_f2_val <= '0';
309 sample_f3_val <= '0';
310 ELSIF clk'event AND clk = '1' THEN -- rising clock edge
311 sample_f0_val <= sample_f_val(0);
312 sample_f1_val <= sample_f_val(1);
313 sample_f2_val <= sample_f_val(2);
314 sample_f3_val <= sample_f_val(3);
315 END IF;
316 END PROCESS;
317
318
319 sample_f0_data <= sample_f_data(1*6*16-1 DOWNTO 0*6*16);
320 sample_f1_data <= sample_f_data(2*6*16-1 DOWNTO 1*6*16);
321 sample_f2_data <= sample_f_data(3*6*16-1 DOWNTO 2*6*16);
322 sample_f3_data <= sample_f_data(4*6*16-1 DOWNTO 3*6*16);
323
324 --sample_f0_data <= X"0020" & X"0010" & X"0008" & X"0004" & X"0002" & X"0001";
325 --sample_f1_data <= X"1020" & X"1010" & X"1008" & X"1004" & X"1002" & X"1001";
326 --sample_f2_data <= X"2020" & X"2010" & X"2008" & X"2004" & X"2002" & X"2001";
327 --sample_f3_data <= X"4020" & X"4010" & X"4008" & X"4004" & X"4002" & X"4001";
279 -----------------------------------------------------------------------------
328 -----------------------------------------------------------------------------
280 lpp_lfr_apbreg_1 : lpp_lfr_apbreg
329 lpp_lfr_apbreg_1 : lpp_lfr_apbreg
281 GENERIC MAP (
330 GENERIC MAP (
@@ -539,4 +588,4 BEGIN
539 buffer_full_err => dma_buffer_full_err, --buffer_full_err,
588 buffer_full_err => dma_buffer_full_err, --buffer_full_err,
540 grant_error => dma_grant_error); --grant_error);
589 grant_error => dma_grant_error); --grant_error);
541
590
542 END beh; No newline at end of file
591 END beh;
General Comments 0
You need to be logged in to leave comments. Login now