@@ -0,0 +1,213 | |||||
|
1 | ------------------------------------------------------------------------------ | |||
|
2 | -- This file is a part of the LPP VHDL IP LIBRARY | |||
|
3 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |||
|
4 | -- | |||
|
5 | -- This program is free software; you can redistribute it and/or modify | |||
|
6 | -- it under the terms of the GNU General Public License as published by | |||
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |||
|
8 | -- (at your option) any later version. | |||
|
9 | -- | |||
|
10 | -- This program is distributed in the hope that it will be useful, | |||
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
13 | -- GNU General Public License for more details. | |||
|
14 | -- | |||
|
15 | -- You should have received a copy of the GNU General Public License | |||
|
16 | -- along with this program; if not, write to the Free Software | |||
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
|
18 | ------------------------------------------------------------------------------- | |||
|
19 | -- Author : Jean-christophe Pellion | |||
|
20 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |||
|
21 | -- jean-christophe.pellion@easii-ic.com | |||
|
22 | ------------------------------------------------------------------------------- | |||
|
23 | -- 1.0 - initial version | |||
|
24 | ------------------------------------------------------------------------------- | |||
|
25 | LIBRARY ieee; | |||
|
26 | USE ieee.std_logic_1164.ALL; | |||
|
27 | USE ieee.numeric_std.ALL; | |||
|
28 | LIBRARY grlib; | |||
|
29 | USE grlib.amba.ALL; | |||
|
30 | USE grlib.stdlib.ALL; | |||
|
31 | USE grlib.devices.ALL; | |||
|
32 | ||||
|
33 | LIBRARY lpp; | |||
|
34 | USE lpp.lpp_amba.ALL; | |||
|
35 | USE lpp.apb_devices_list.ALL; | |||
|
36 | USE lpp.lpp_memory.ALL; | |||
|
37 | USE lpp.lpp_dma_pkg.ALL; | |||
|
38 | USE lpp.general_purpose.ALL; | |||
|
39 | --USE lpp.lpp_waveform_pkg.ALL; | |||
|
40 | LIBRARY techmap; | |||
|
41 | USE techmap.gencomp.ALL; | |||
|
42 | ||||
|
43 | ||||
|
44 | ENTITY lpp_dma_SEND16B_FIFO2DMA IS | |||
|
45 | GENERIC ( | |||
|
46 | hindex : INTEGER := 2; | |||
|
47 | vendorid : IN INTEGER := 0; | |||
|
48 | deviceid : IN INTEGER := 0; | |||
|
49 | version : IN INTEGER := 0 | |||
|
50 | ); | |||
|
51 | PORT ( | |||
|
52 | clk : IN STD_LOGIC; | |||
|
53 | rstn : IN STD_LOGIC; | |||
|
54 | ||||
|
55 | -- AMBA AHB Master Interface | |||
|
56 | AHB_Master_In : IN AHB_Mst_In_Type; | |||
|
57 | AHB_Master_Out : OUT AHB_Mst_Out_Type; | |||
|
58 | ||||
|
59 | -- FIFO Interface | |||
|
60 | ren : OUT STD_LOGIC; | |||
|
61 | data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); | |||
|
62 | ||||
|
63 | -- Controls | |||
|
64 | send : IN STD_LOGIC; | |||
|
65 | valid_burst : IN STD_LOGIC; -- (1 => BURST , 0 => SINGLE) | |||
|
66 | done : OUT STD_LOGIC; | |||
|
67 | address : IN STD_LOGIC_VECTOR(31 DOWNTO 0) | |||
|
68 | ); | |||
|
69 | END; | |||
|
70 | ||||
|
71 | ARCHITECTURE Behavioral OF lpp_dma_SEND16B_FIFO2DMA IS | |||
|
72 | ||||
|
73 | CONSTANT HConfig : AHB_Config_Type := ( | |||
|
74 | 0 => ahb_device_reg(vendorid, deviceid, 0, version, 0), | |||
|
75 | OTHERS => (OTHERS => '0')); | |||
|
76 | ||||
|
77 | TYPE AHB_DMA_FSM_STATE IS (IDLE, s_ARBITER ,s_CTRL, s_CTRL_DATA, s_DATA); | |||
|
78 | SIGNAL state : AHB_DMA_FSM_STATE; | |||
|
79 | ||||
|
80 | SIGNAL address_counter_reg : STD_LOGIC_VECTOR(3 DOWNTO 0); | |||
|
81 | SIGNAL address_counter : STD_LOGIC_VECTOR(3 DOWNTO 0); | |||
|
82 | ||||
|
83 | SIGNAL data_window : STD_LOGIC; | |||
|
84 | SIGNAL ctrl_window : STD_LOGIC; | |||
|
85 | ||||
|
86 | SIGNAL bus_request : STD_LOGIC; | |||
|
87 | SIGNAL bus_lock : STD_LOGIC; | |||
|
88 | ||||
|
89 | BEGIN | |||
|
90 | ||||
|
91 | ----------------------------------------------------------------------------- | |||
|
92 | AHB_Master_Out.HCONFIG <= HConfig; | |||
|
93 | AHB_Master_Out.HSIZE <= "010"; --WORDS 32b | |||
|
94 | AHB_Master_Out.HINDEX <= hindex; | |||
|
95 | AHB_Master_Out.HPROT <= "0011"; --DATA ACCESS and PRIVILEDGED ACCESS | |||
|
96 | AHB_Master_Out.HIRQ <= (OTHERS => '0'); | |||
|
97 | AHB_Master_Out.HBURST <= "111"; -- INCR --"111"; --INCR16 | |||
|
98 | AHB_Master_Out.HWRITE <= '1'; | |||
|
99 | ||||
|
100 | --AHB_Master_Out.HTRANS <= HTRANS_NONSEQ WHEN ctrl_window = '1' OR data_window = '1' ELSE HTRANS_IDLE; | |||
|
101 | ||||
|
102 | --AHB_Master_Out.HBUSREQ <= bus_request; | |||
|
103 | --AHB_Master_Out.HLOCK <= data_window; | |||
|
104 | ||||
|
105 | --bus_request <= '0' WHEN address_counter_reg = "1111" AND AHB_Master_In.HREADY = '1' ELSE | |||
|
106 | -- '1' WHEN ctrl_window = '1' ELSE | |||
|
107 | -- '0'; | |||
|
108 | ||||
|
109 | --bus_lock <= '0' WHEN address_counter_reg = "1111" ELSE | |||
|
110 | -- '1' WHEN ctrl_window = '1' ELSE '0'; | |||
|
111 | ||||
|
112 | ----------------------------------------------------------------------------- | |||
|
113 | AHB_Master_Out.HADDR <= address(31 DOWNTO 6) & address_counter_reg & "00"; | |||
|
114 | AHB_Master_Out.HWDATA <= ahbdrivedata(data); | |||
|
115 | ||||
|
116 | ----------------------------------------------------------------------------- | |||
|
117 | --ren <= NOT ((AHB_Master_In.HGRANT(hindex) OR LAST_READ ) AND AHB_Master_In.HREADY ); | |||
|
118 | --ren <= NOT beat; | |||
|
119 | ----------------------------------------------------------------------------- | |||
|
120 | PROCESS (clk, rstn) | |||
|
121 | BEGIN -- PROCESS | |||
|
122 | IF rstn = '0' THEN -- asynchronous reset (active low) | |||
|
123 | state <= IDLE; | |||
|
124 | done <= '0'; | |||
|
125 | address_counter_reg <= (OTHERS => '0'); | |||
|
126 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
127 | AHB_Master_Out.HBUSREQ <= '0'; | |||
|
128 | AHB_Master_Out.HLOCK <= '0'; | |||
|
129 | ELSIF clk'event AND clk = '1' THEN -- rising clock edge | |||
|
130 | done <= '0'; | |||
|
131 | CASE state IS | |||
|
132 | WHEN IDLE => | |||
|
133 | AHB_Master_Out.HBUSREQ <= '0'; | |||
|
134 | AHB_Master_Out.HLOCK <= '0'; | |||
|
135 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
136 | address_counter_reg <= (OTHERS => '0'); | |||
|
137 | IF send = '1' THEN | |||
|
138 | AHB_Master_Out.HBUSREQ <= '1'; | |||
|
139 | AHB_Master_Out.HLOCK <= '1'; | |||
|
140 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
141 | state <= s_ARBITER; | |||
|
142 | END IF; | |||
|
143 | ||||
|
144 | WHEN s_ARBITER => | |||
|
145 | AHB_Master_Out.HBUSREQ <= '1'; | |||
|
146 | AHB_Master_Out.HLOCK <= '1'; | |||
|
147 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
148 | address_counter_reg <= (OTHERS => '0'); | |||
|
149 | ||||
|
150 | IF AHB_Master_In.HGRANT(hindex) = '1' THEN | |||
|
151 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
152 | state <= s_CTRL; | |||
|
153 | END IF; | |||
|
154 | ||||
|
155 | WHEN s_CTRL => | |||
|
156 | AHB_Master_Out.HBUSREQ <= '1'; | |||
|
157 | AHB_Master_Out.HLOCK <= '1'; | |||
|
158 | AHB_Master_Out.HTRANS <= HTRANS_NONSEQ; | |||
|
159 | IF AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' THEN | |||
|
160 | AHB_Master_Out.HTRANS <= HTRANS_SEQ; | |||
|
161 | state <= s_CTRL_DATA; | |||
|
162 | END IF; | |||
|
163 | ||||
|
164 | WHEN s_CTRL_DATA => | |||
|
165 | AHB_Master_Out.HBUSREQ <= '1'; | |||
|
166 | AHB_Master_Out.HLOCK <= '1'; | |||
|
167 | AHB_Master_Out.HTRANS <= HTRANS_SEQ; | |||
|
168 | IF AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' THEN | |||
|
169 | address_counter_reg <= STD_LOGIC_VECTOR(UNSIGNED(address_counter_reg) + 1); | |||
|
170 | END IF; | |||
|
171 | ||||
|
172 | IF address_counter_reg = "1111" AND AHB_Master_In.HREADY = '1' THEN | |||
|
173 | AHB_Master_Out.HBUSREQ <= '0'; | |||
|
174 | AHB_Master_Out.HLOCK <= '1';--'0'; | |||
|
175 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
176 | state <= s_DATA; | |||
|
177 | END IF; | |||
|
178 | ||||
|
179 | WHEN s_DATA => | |||
|
180 | AHB_Master_Out.HBUSREQ <= '0'; | |||
|
181 | AHB_Master_Out.HLOCK <= '0'; | |||
|
182 | AHB_Master_Out.HTRANS <= HTRANS_IDLE; | |||
|
183 | IF AHB_Master_In.HREADY = '1' THEN | |||
|
184 | state <= IDLE; | |||
|
185 | done <= '1'; | |||
|
186 | END IF; | |||
|
187 | ||||
|
188 | WHEN OTHERS => NULL; | |||
|
189 | END CASE; | |||
|
190 | END IF; | |||
|
191 | END PROCESS; | |||
|
192 | ||||
|
193 | ctrl_window <= '1' WHEN state = s_CTRL OR state = s_CTRL_DATA ELSE '0'; | |||
|
194 | data_window <= '1' WHEN state = s_CTRL_DATA OR state = s_DATA ELSE '0'; | |||
|
195 | ----------------------------------------------------------------------------- | |||
|
196 | ren <= NOT(AHB_Master_In.HREADY) WHEN state = s_CTRL_DATA ELSE '1'; | |||
|
197 | ||||
|
198 | ----------------------------------------------------------------------------- | |||
|
199 | --PROCESS (clk, rstn) | |||
|
200 | --BEGIN -- PROCESS | |||
|
201 | -- IF rstn = '0' THEN -- asynchronous reset (active low) | |||
|
202 | -- address_counter_reg <= (OTHERS => '0'); | |||
|
203 | -- ELSIF clk'event AND clk = '1' THEN -- rising clock edge | |||
|
204 | -- address_counter_reg <= address_counter; | |||
|
205 | -- END IF; | |||
|
206 | --END PROCESS; | |||
|
207 | ||||
|
208 | --address_counter <= STD_LOGIC_VECTOR(UNSIGNED(address_counter_reg) + 1) WHEN data_window = '1' AND AHB_Master_In.HREADY = '1' AND AHB_Master_In.HGRANT(hindex) = '1' ELSE | |||
|
209 | -- address_counter_reg; | |||
|
210 | ----------------------------------------------------------------------------- | |||
|
211 | ||||
|
212 | ||||
|
213 | END Behavioral; |
@@ -404,7 +404,7 BEGIN -- beh | |||||
404 | pirq_ms => 6, |
|
404 | pirq_ms => 6, | |
405 | pirq_wfp => 14, |
|
405 | pirq_wfp => 14, | |
406 | hindex => 2, |
|
406 | hindex => 2, | |
407 |
top_lfr_version => X"02014 |
|
407 | top_lfr_version => X"020146") -- aa.bb.cc version | |
408 | -- AA : BOARD NUMBER |
|
408 | -- AA : BOARD NUMBER | |
409 | -- 0 => MINI_LFR |
|
409 | -- 0 => MINI_LFR | |
410 | -- 1 => EM |
|
410 | -- 1 => EM |
@@ -214,6 +214,8 ARCHITECTURE beh OF MINI_LFR_top IS | |||||
214 | -- |
|
214 | -- | |
215 | SIGNAL sample_hk : STD_LOGIC_VECTOR(15 DOWNTO 0); |
|
215 | SIGNAL sample_hk : STD_LOGIC_VECTOR(15 DOWNTO 0); | |
216 | SIGNAL HK_SEL : STD_LOGIC_VECTOR(1 DOWNTO 0); |
|
216 | SIGNAL HK_SEL : STD_LOGIC_VECTOR(1 DOWNTO 0); | |
|
217 | ||||
|
218 | SIGNAL nSRAM_READY : STD_LOGIC; | |||
217 |
|
219 | |||
218 | BEGIN -- beh |
|
220 | BEGIN -- beh | |
219 |
|
221 | |||
@@ -368,7 +370,7 BEGIN -- beh | |||||
368 | NB_APB_SLAVE => NB_APB_SLAVE, |
|
370 | NB_APB_SLAVE => NB_APB_SLAVE, | |
369 | ADDRESS_SIZE => 20, |
|
371 | ADDRESS_SIZE => 20, | |
370 | USES_IAP_MEMCTRLR => USE_IAP_MEMCTRL, |
|
372 | USES_IAP_MEMCTRLR => USE_IAP_MEMCTRL, | |
371 |
BYPASS_EDAC_MEMCTRLR => ' |
|
373 | BYPASS_EDAC_MEMCTRLR => '0', | |
372 | SRBANKSZ => 9) |
|
374 | SRBANKSZ => 9) | |
373 | PORT MAP ( |
|
375 | PORT MAP ( | |
374 | clk => clk_25, |
|
376 | clk => clk_25, | |
@@ -387,7 +389,7 BEGIN -- beh | |||||
387 | nSRAM_WE => SRAM_nWE, |
|
389 | nSRAM_WE => SRAM_nWE, | |
388 | nSRAM_CE => SRAM_CE_s, |
|
390 | nSRAM_CE => SRAM_CE_s, | |
389 | nSRAM_OE => SRAM_nOE, |
|
391 | nSRAM_OE => SRAM_nOE, | |
390 |
nSRAM_READY => |
|
392 | nSRAM_READY => nSRAM_READY, | |
391 | SRAM_MBE => OPEN, |
|
393 | SRAM_MBE => OPEN, | |
392 | apbi_ext => apbi_ext, |
|
394 | apbi_ext => apbi_ext, | |
393 | apbo_ext => apbo_ext, |
|
395 | apbo_ext => apbo_ext, | |
@@ -396,13 +398,27 BEGIN -- beh | |||||
396 | ahbi_m_ext => ahbi_m_ext, |
|
398 | ahbi_m_ext => ahbi_m_ext, | |
397 | ahbo_m_ext => ahbo_m_ext); |
|
399 | ahbo_m_ext => ahbo_m_ext); | |
398 |
|
400 | |||
399 | IAP:if USE_IAP_MEMCTRL = 1 GENERATE |
|
401 | PROCESS (clk_25, rstn_25) | |
400 | SRAM_CE <= not SRAM_CE_s(0); |
|
402 | BEGIN -- PROCESS | |
401 | END GENERATE; |
|
403 | IF rstn_25 = '0' THEN -- asynchronous reset (active low) | |
|
404 | nSRAM_READY <= '1'; | |||
|
405 | ELSIF clk_25'event AND clk_25 = '1' THEN -- rising clock edge | |||
|
406 | nSRAM_READY <= '1'; | |||
|
407 | IF IO0 = '1' THEN | |||
|
408 | nSRAM_READY <= '0'; | |||
|
409 | END IF; | |||
|
410 | END IF; | |||
|
411 | END PROCESS; | |||
|
412 | ||||
|
413 | ||||
402 |
|
|
414 | ||
403 |
|
|
415 | IAP:if USE_IAP_MEMCTRL = 1 GENERATE | |
404 | SRAM_CE <= SRAM_CE_s(0); |
|
416 | SRAM_CE <= not SRAM_CE_s(0); | |
405 | END GENERATE; |
|
417 | END GENERATE; | |
|
418 | ||||
|
419 | NOIAP:if USE_IAP_MEMCTRL = 0 GENERATE | |||
|
420 | SRAM_CE <= SRAM_CE_s(0); | |||
|
421 | END GENERATE; | |||
406 | ------------------------------------------------------------------------------- |
|
422 | ------------------------------------------------------------------------------- | |
407 | -- APB_LFR_MANAGEMENT --------------------------------------------------------- |
|
423 | -- APB_LFR_MANAGEMENT --------------------------------------------------------- | |
408 | ------------------------------------------------------------------------------- |
|
424 | ------------------------------------------------------------------------------- | |
@@ -412,13 +428,13 END GENERATE; | |||||
412 | pindex => 6, |
|
428 | pindex => 6, | |
413 | paddr => 6, |
|
429 | paddr => 6, | |
414 | pmask => 16#fff#, |
|
430 | pmask => 16#fff#, | |
415 | FIRST_DIVISION => 374, -- ((49.152/2) /2^16) - 1 = 375 - 1 = 374 |
|
431 | -- FIRST_DIVISION => 374, -- ((49.152/2) /2^16) - 1 = 375 - 1 = 374 | |
416 | NB_SECOND_DESYNC => 60) -- 60 secondes of desynchronization before CoarseTime's MSB is Set |
|
432 | NB_SECOND_DESYNC => 60) -- 60 secondes of desynchronization before CoarseTime's MSB is Set | |
417 | PORT MAP ( |
|
433 | PORT MAP ( | |
418 | clk25MHz => clk_25, |
|
434 | clk25MHz => clk_25, | |
419 | resetn_25MHz => rstn_25, -- TODO |
|
435 | resetn_25MHz => rstn_25, -- TODO | |
420 | clk24_576MHz => clk_24, -- 49.152MHz/2 |
|
436 | -- clk24_576MHz => clk_24, -- 49.152MHz/2 | |
421 | resetn_24_576MHz => rstn_24, -- TODO |
|
437 | -- resetn_24_576MHz => rstn_24, -- TODO | |
422 | grspw_tick => swno.tickout, |
|
438 | grspw_tick => swno.tickout, | |
423 | apbi => apbi_ext, |
|
439 | apbi => apbi_ext, | |
424 | apbo => apbo_ext(6), |
|
440 | apbo => apbo_ext(6), | |
@@ -543,7 +559,7 END GENERATE; | |||||
543 | pirq_ms => 6, |
|
559 | pirq_ms => 6, | |
544 | pirq_wfp => 14, |
|
560 | pirq_wfp => 14, | |
545 | hindex => 2, |
|
561 | hindex => 2, | |
546 |
top_lfr_version => X"00014 |
|
562 | top_lfr_version => X"000146") -- aa.bb.cc version | |
547 | PORT MAP ( |
|
563 | PORT MAP ( | |
548 | clk => clk_25, |
|
564 | clk => clk_25, | |
549 | rstn => LFR_rstn, |
|
565 | rstn => LFR_rstn, | |
@@ -565,7 +581,7 END GENERATE; | |||||
565 | observation_reg(31 DOWNTO 12) <= (OTHERS => '0'); |
|
581 | observation_reg(31 DOWNTO 12) <= (OTHERS => '0'); | |
566 | observation_vector_0(11 DOWNTO 0) <= lfr_debug_vector; |
|
582 | observation_vector_0(11 DOWNTO 0) <= lfr_debug_vector; | |
567 | observation_vector_1(11 DOWNTO 0) <= lfr_debug_vector; |
|
583 | observation_vector_1(11 DOWNTO 0) <= lfr_debug_vector; | |
568 | IO0 <= rstn_25; |
|
584 | -- IO0 <= rstn_25; | |
569 | IO1 <= lfr_debug_vector_ms(0); -- LFR MS FFT data_valid |
|
585 | IO1 <= lfr_debug_vector_ms(0); -- LFR MS FFT data_valid | |
570 | IO2 <= lfr_debug_vector_ms(0); -- LFR MS FFT ready |
|
586 | IO2 <= lfr_debug_vector_ms(0); -- LFR MS FFT ready | |
571 | IO3 <= lfr_debug_vector(0); -- LFR APBREG error_buffer_full |
|
587 | IO3 <= lfr_debug_vector(0); -- LFR APBREG error_buffer_full |
@@ -3,6 +3,7 USE ieee.std_logic_1164.ALL; | |||||
3 | USE ieee.numeric_std.ALL; |
|
3 | USE ieee.numeric_std.ALL; | |
4 |
|
4 | |||
5 | LIBRARY lpp; |
|
5 | LIBRARY lpp; | |
|
6 | USE lpp.apb_devices_list.ALL; | |||
6 | USE lpp.lpp_ad_conv.ALL; |
|
7 | USE lpp.lpp_ad_conv.ALL; | |
7 | USE lpp.iir_filter.ALL; |
|
8 | USE lpp.iir_filter.ALL; | |
8 | USE lpp.FILTERcfg.ALL; |
|
9 | USE lpp.FILTERcfg.ALL; | |
@@ -25,7 +26,8 USE GRLIB.DMA2AHB_Package.ALL; | |||||
25 | ENTITY DMA_SubSystem IS |
|
26 | ENTITY DMA_SubSystem IS | |
26 |
|
27 | |||
27 | GENERIC ( |
|
28 | GENERIC ( | |
28 |
hindex : INTEGER := 2 |
|
29 | hindex : INTEGER := 2; | |
|
30 | CUSTOM_DMA : INTEGER := 1); | |||
29 |
|
31 | |||
30 | PORT ( |
|
32 | PORT ( | |
31 | clk : IN STD_LOGIC; |
|
33 | clk : IN STD_LOGIC; | |
@@ -116,25 +118,48 BEGIN -- beh | |||||
116 | ----------------------------------------------------------------------------- |
|
118 | ----------------------------------------------------------------------------- | |
117 | -- DMA |
|
119 | -- DMA | |
118 | ----------------------------------------------------------------------------- |
|
120 | ----------------------------------------------------------------------------- | |
119 | lpp_dma_singleOrBurst_1 : lpp_dma_singleOrBurst |
|
121 | GR_DMA : IF CUSTOM_DMA = 0 GENERATE | |
120 | GENERIC MAP ( |
|
122 | lpp_dma_singleOrBurst_1 : lpp_dma_singleOrBurst | |
121 | tech => inferred, |
|
123 | GENERIC MAP ( | |
122 | hindex => hindex) |
|
124 | tech => inferred, | |
123 | PORT MAP ( |
|
125 | hindex => hindex) | |
124 | HCLK => clk, |
|
126 | PORT MAP ( | |
125 |
|
|
127 | HCLK => clk, | |
126 |
|
|
128 | HRESETn => rstn, | |
127 | AHB_Master_In => ahbi, |
|
129 | run => run, | |
128 |
AHB_Master_ |
|
130 | AHB_Master_In => ahbi, | |
|
131 | AHB_Master_Out => ahbo, | |||
|
132 | ||||
|
133 | send => dma_send, | |||
|
134 | valid_burst => dma_valid_burst, | |||
|
135 | done => dma_done, | |||
|
136 | ren => dma_ren, | |||
|
137 | address => dma_address, | |||
|
138 | data => dma_data); | |||
|
139 | END GENERATE GR_DMA; | |||
129 |
|
140 | |||
130 | send => dma_send, |
|
141 | LPP_DMA_IP : IF CUSTOM_DMA = 1 GENERATE | |
131 | valid_burst => dma_valid_burst, |
|
142 | lpp_dma_SEND16B_FIFO2DMA_1 : lpp_dma_SEND16B_FIFO2DMA | |
132 | done => dma_done, |
|
143 | GENERIC MAP ( | |
133 | ren => dma_ren, |
|
144 | hindex => hindex, | |
134 | address => dma_address, |
|
145 | vendorid => VENDOR_LPP, | |
135 | data => dma_data); |
|
146 | deviceid => 10, | |
|
147 | version => 0) | |||
|
148 | PORT MAP ( | |||
|
149 | clk => clk, | |||
|
150 | rstn => rstn, | |||
|
151 | AHB_Master_In => ahbi, | |||
|
152 | AHB_Master_Out => ahbo, | |||
136 |
|
153 | |||
137 |
|
154 | ren => dma_ren, | ||
|
155 | data => dma_data, | |||
|
156 | send => dma_send, | |||
|
157 | valid_burst => dma_valid_burst, | |||
|
158 | done => dma_done, | |||
|
159 | address => dma_address); | |||
|
160 | END GENERATE LPP_DMA_IP; | |||
|
161 | ||||
|
162 | ||||
138 | ----------------------------------------------------------------------------- |
|
163 | ----------------------------------------------------------------------------- | |
139 | -- RoundRobin Selection Channel For DMA |
|
164 | -- RoundRobin Selection Channel For DMA | |
140 | ----------------------------------------------------------------------------- |
|
165 | ----------------------------------------------------------------------------- |
@@ -223,7 +223,8 PACKAGE lpp_dma_pkg IS | |||||
223 | ----------------------------------------------------------------------------- |
|
223 | ----------------------------------------------------------------------------- | |
224 | COMPONENT DMA_SubSystem |
|
224 | COMPONENT DMA_SubSystem | |
225 | GENERIC ( |
|
225 | GENERIC ( | |
226 |
hindex : INTEGER |
|
226 | hindex : INTEGER; | |
|
227 | CUSTOM_DMA : INTEGER := 1); | |||
227 | PORT ( |
|
228 | PORT ( | |
228 | clk : IN STD_LOGIC; |
|
229 | clk : IN STD_LOGIC; | |
229 | rstn : IN STD_LOGIC; |
|
230 | rstn : IN STD_LOGIC; | |
@@ -285,5 +286,24 PACKAGE lpp_dma_pkg IS | |||||
285 | dma_done : IN STD_LOGIC; |
|
286 | dma_done : IN STD_LOGIC; | |
286 | grant_error : OUT STD_LOGIC); |
|
287 | grant_error : OUT STD_LOGIC); | |
287 | END COMPONENT; |
|
288 | END COMPONENT; | |
|
289 | ||||
|
290 | COMPONENT lpp_dma_SEND16B_FIFO2DMA | |||
|
291 | GENERIC ( | |||
|
292 | hindex : INTEGER; | |||
|
293 | vendorid : in Integer; | |||
|
294 | deviceid : in Integer; | |||
|
295 | version : in Integer); | |||
|
296 | PORT ( | |||
|
297 | clk : IN STD_LOGIC; | |||
|
298 | rstn : IN STD_LOGIC; | |||
|
299 | AHB_Master_In : IN AHB_Mst_In_Type; | |||
|
300 | AHB_Master_Out : OUT AHB_Mst_Out_Type; | |||
|
301 | ren : OUT STD_LOGIC; | |||
|
302 | data : IN STD_LOGIC_VECTOR(31 DOWNTO 0); | |||
|
303 | send : IN STD_LOGIC; | |||
|
304 | valid_burst : IN STD_LOGIC; | |||
|
305 | done : OUT STD_LOGIC; | |||
|
306 | address : IN STD_LOGIC_VECTOR(31 DOWNTO 0)); | |||
|
307 | END COMPONENT; | |||
288 |
|
308 | |||
289 | END; |
|
309 | END; |
@@ -9,3 +9,4 DMA_SubSystem.vhd | |||||
9 | DMA_SubSystem_GestionBuffer.vhd |
|
9 | DMA_SubSystem_GestionBuffer.vhd | |
10 | DMA_SubSystem_Arbiter.vhd |
|
10 | DMA_SubSystem_Arbiter.vhd | |
11 | DMA_SubSystem_MUX.vhd |
|
11 | DMA_SubSystem_MUX.vhd | |
|
12 | lpp_dma_SEND16B_FIFO2DMA.vhd |
@@ -375,7 +375,7 BEGIN | |||||
375 | END GENERATE; |
|
375 | END GENERATE; | |
376 |
|
376 | |||
377 | nodsu : IF CFG_DSU = 0 GENERATE |
|
377 | nodsu : IF CFG_DSU = 0 GENERATE | |
378 |
ahbso( |
|
378 | ahbso(0) <= ahbs_none; | |
379 | dsuo.tstop <= '0'; |
|
379 | dsuo.tstop <= '0'; | |
380 | dsuo.active <= '0'; |
|
380 | dsuo.active <= '0'; | |
381 | END GENERATE; |
|
381 | END GENERATE; | |
@@ -397,12 +397,12 BEGIN | |||||
397 | ---------------------------------------------------------------------- |
|
397 | ---------------------------------------------------------------------- | |
398 | ESAMEMCT : IF USES_IAP_MEMCTRLR = 0 GENERATE |
|
398 | ESAMEMCT : IF USES_IAP_MEMCTRLR = 0 GENERATE | |
399 | memctrlr : mctrl GENERIC MAP ( |
|
399 | memctrlr : mctrl GENERIC MAP ( | |
400 |
hindex => |
|
400 | hindex => 2, | |
401 | pindex => 0, |
|
401 | pindex => 0, | |
402 | paddr => 0, |
|
402 | paddr => 0, | |
403 | srbanks => 1 |
|
403 | srbanks => 1 | |
404 | ) |
|
404 | ) | |
405 |
PORT MAP (rstn, clkm, memi, memo, ahbsi, ahbso( |
|
405 | PORT MAP (rstn, clkm, memi, memo, ahbsi, ahbso(2), apbi, apbo(0), wpo, sdo); | |
406 | memi.bexcn <= '1'; |
|
406 | memi.bexcn <= '1'; | |
407 | memi.brdyn <= '1'; |
|
407 | memi.brdyn <= '1'; | |
408 |
|
408 | |||
@@ -489,7 +489,7 BEGIN | |||||
489 | ahb0 : ahbctrl -- AHB arbiter/multiplexer |
|
489 | ahb0 : ahbctrl -- AHB arbiter/multiplexer | |
490 | GENERIC MAP (defmast => CFG_DEFMST, split => CFG_SPLIT, |
|
490 | GENERIC MAP (defmast => CFG_DEFMST, split => CFG_SPLIT, | |
491 | rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, |
|
491 | rrobin => CFG_RROBIN, ioaddr => CFG_AHBIO, | |
492 | ioen => 0, nahbm => maxahbmsp, nahbs => 8) |
|
492 | ioen => 0, nahbm => maxahbmsp, nahbs => 8, fixbrst => 0) | |
493 | PORT MAP (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); |
|
493 | PORT MAP (rstn, clkm, ahbmi, ahbmo, ahbsi, ahbso); | |
494 |
|
494 | |||
495 | ---------------------------------------------------------------------- |
|
495 | ---------------------------------------------------------------------- | |
@@ -569,4 +569,4 BEGIN | |||||
569 |
|
569 | |||
570 |
|
570 | |||
571 |
|
571 | |||
572 | END Behavioral; No newline at end of file |
|
572 | END Behavioral; |
General Comments 0
You need to be logged in to leave comments.
Login now