@@ -0,0 +1,192 | |||
|
1 | ||
|
2 | ------------------------------------------------------------------------------ | |
|
3 | -- This file is a part of the LPP VHDL IP LIBRARY | |
|
4 | -- Copyright (C) 2009 - 2010, Laboratory of Plasmas Physic - CNRS | |
|
5 | -- | |
|
6 | -- This program is free software; you can redistribute it and/or modify | |
|
7 | -- it under the terms of the GNU General Public License as published by | |
|
8 | -- the Free Software Foundation; either version 3 of the License, or | |
|
9 | -- (at your option) any later version. | |
|
10 | -- | |
|
11 | -- This program is distributed in the hope that it will be useful, | |
|
12 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
13 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
14 | -- GNU General Public License for more details. | |
|
15 | -- | |
|
16 | -- You should have received a copy of the GNU General Public License | |
|
17 | -- along with this program; if not, write to the Free Software | |
|
18 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
19 | ------------------------------------------------------------------------------- | |
|
20 | -- Author : Jean-christophe Pellion | |
|
21 | -- Mail : jean-christophe.pellion@lpp.polytechnique.fr | |
|
22 | -- jean-christophe.pellion@easii-ic.com | |
|
23 | ------------------------------------------------------------------------------- | |
|
24 | -- 1.0 - initial version | |
|
25 | -- 1.1 - (01/11/2013) FIX boundary error (1kB address should not be crossed by BURSTS) | |
|
26 | ------------------------------------------------------------------------------- | |
|
27 | LIBRARY ieee; | |
|
28 | USE ieee.std_logic_1164.ALL; | |
|
29 | USE ieee.numeric_std.ALL; | |
|
30 | LIBRARY grlib; | |
|
31 | USE grlib.amba.ALL; | |
|
32 | USE grlib.stdlib.ALL; | |
|
33 | USE grlib.devices.ALL; | |
|
34 | USE GRLIB.DMA2AHB_Package.ALL; | |
|
35 | LIBRARY lpp; | |
|
36 | USE lpp.lpp_amba.ALL; | |
|
37 | USE lpp.apb_devices_list.ALL; | |
|
38 | USE lpp.lpp_memory.ALL; | |
|
39 | USE lpp.lpp_dma_pkg.ALL; | |
|
40 | USE lpp.lpp_waveform_pkg.ALL; | |
|
41 | LIBRARY techmap; | |
|
42 | USE techmap.gencomp.ALL; | |
|
43 | ||
|
44 | ||
|
45 | ENTITY lpp_debug_dma_singleOrBurst IS | |
|
46 | GENERIC ( | |
|
47 | tech : INTEGER := inferred; | |
|
48 | hindex : INTEGER := 2; | |
|
49 | pindex : INTEGER := 4; | |
|
50 | paddr : INTEGER := 4; | |
|
51 | pmask : INTEGER := 16#fff# | |
|
52 | ); | |
|
53 | PORT ( | |
|
54 | -- AMBA AHB system signals | |
|
55 | HCLK : IN STD_ULOGIC; | |
|
56 | HRESETn : IN STD_ULOGIC; | |
|
57 | -- AMBA AHB Master Interface | |
|
58 | ahbmi : IN AHB_Mst_In_Type; | |
|
59 | ahbmo : OUT AHB_Mst_Out_Type; | |
|
60 | -- AMBA AHB Master Interface | |
|
61 | apbi : IN apb_slv_in_type; | |
|
62 | apbo : OUT apb_slv_out_type | |
|
63 | ); | |
|
64 | END; | |
|
65 | ||
|
66 | ARCHITECTURE Behavioral OF lpp_debug_dma_singleOrBurst IS | |
|
67 | SIGNAL run : STD_LOGIC; | |
|
68 | SIGNAL send : STD_LOGIC; | |
|
69 | SIGNAL valid_burst : STD_LOGIC; | |
|
70 | SIGNAL done : STD_LOGIC; | |
|
71 | SIGNAL ren : STD_LOGIC; | |
|
72 | SIGNAL address : STD_LOGIC_VECTOR(31 DOWNTO 0); | |
|
73 | SIGNAL data : STD_LOGIC_VECTOR(31 DOWNTO 0); | |
|
74 | -- | |
|
75 | ||
|
76 | CONSTANT REVISION : INTEGER := 1; | |
|
77 | ||
|
78 | CONSTANT pconfig : apb_config_type := ( | |
|
79 | 0 => ahb_device_reg (VENDOR_LPP, LPP_DEBUG_DMA, 2, REVISION, 0), | |
|
80 | 1 => apb_iobar(paddr, pmask)); | |
|
81 | ||
|
82 | TYPE lpp_debug_dma_regs IS RECORD | |
|
83 | run : STD_LOGIC; | |
|
84 | send : STD_LOGIC; | |
|
85 | valid_burst : STD_LOGIC; | |
|
86 | done : STD_LOGIC; | |
|
87 | ren : STD_LOGIC; | |
|
88 | addr : STD_LOGIC_VECTOR(31 DOWNTO 0); | |
|
89 | data : STD_LOGIC_VECTOR(31 DOWNTO 0); | |
|
90 | nb_ren : STD_LOGIC_VECTOR(31 DOWNTO 0); | |
|
91 | END RECORD; | |
|
92 | SIGNAL reg : lpp_debug_dma_regs; | |
|
93 | ||
|
94 | SIGNAL prdata : STD_LOGIC_VECTOR(31 DOWNTO 0); | |
|
95 | ||
|
96 | BEGIN | |
|
97 | ||
|
98 | lpp_dma_singleOrBurst_1 : lpp_dma_singleOrBurst | |
|
99 | GENERIC MAP ( | |
|
100 | tech => tech, | |
|
101 | hindex => hindex) | |
|
102 | PORT MAP ( | |
|
103 | HCLK => HCLK, | |
|
104 | HRESETn => HRESETn, | |
|
105 | run => run, -- | |
|
106 | AHB_Master_In => ahbmi, | |
|
107 | AHB_Master_Out => ahbmo, | |
|
108 | send => send, -- | |
|
109 | valid_burst => valid_burst, -- | |
|
110 | done => done, -- out | |
|
111 | ren => ren, -- out | |
|
112 | address => address, | |
|
113 | data => data); | |
|
114 | ||
|
115 | ||
|
116 | run <= reg.run; | |
|
117 | valid_burst <= reg.valid_burst; | |
|
118 | send <= reg.send; | |
|
119 | address <= reg.addr; | |
|
120 | data <= reg.data; | |
|
121 | ||
|
122 | lpp_lfr_apbreg : PROCESS (HCLK, HRESETn) | |
|
123 | VARIABLE paddr : STD_LOGIC_VECTOR(7 DOWNTO 2); | |
|
124 | BEGIN -- PROCESS lpp_dma_top | |
|
125 | IF HRESETn = '0' THEN -- asynchronous reset (active low) | |
|
126 | reg.run <= '0'; | |
|
127 | reg.send <= '0'; | |
|
128 | reg.valid_burst <= '0'; | |
|
129 | reg.done <= '0'; | |
|
130 | reg.ren <= '0'; | |
|
131 | reg.addr <= (OTHERS => '0'); | |
|
132 | reg.data <= (OTHERS => '0'); | |
|
133 | reg.nb_ren <= (OTHERS => '0'); | |
|
134 | ||
|
135 | apbo.pirq <= (OTHERS => '0'); | |
|
136 | ELSIF HCLK'EVENT AND HCLK = '1' THEN -- rising clock edge | |
|
137 | paddr := "000000"; | |
|
138 | paddr(7 DOWNTO 2) := apbi.paddr(7 DOWNTO 2); | |
|
139 | prdata <= (OTHERS => '0'); | |
|
140 | ------------------------------------ | |
|
141 | reg.send <= '0'; | |
|
142 | IF done = '1' THEN | |
|
143 | reg.done <= '1'; | |
|
144 | END IF; | |
|
145 | IF ren = '0' THEN | |
|
146 | reg.ren <= '1'; | |
|
147 | reg.nb_ren <= STD_LOGIC_VECTOR(UNSIGNED(reg.nb_ren) + 1); | |
|
148 | END IF; | |
|
149 | ------------------------------------ | |
|
150 | ||
|
151 | IF apbi.psel(pindex) = '1' THEN | |
|
152 | -- APB DMA READ -- | |
|
153 | CASE paddr(7 DOWNTO 2) IS | |
|
154 | -- | |
|
155 | WHEN "000000" => prdata(0) <= reg.run; | |
|
156 | prdata(1) <= reg.send; | |
|
157 | prdata(2) <= reg.valid_burst; | |
|
158 | prdata(3) <= reg.done; | |
|
159 | prdata(4) <= reg.ren; | |
|
160 | WHEN "000001" => prdata <= reg.addr; | |
|
161 | WHEN "000010" => prdata <= reg.data; | |
|
162 | WHEN "000011" => prdata <= reg.nb_ren; | |
|
163 | ||
|
164 | WHEN OTHERS => NULL; | |
|
165 | END CASE; | |
|
166 | IF (apbi.pwrite AND apbi.penable) = '1' THEN | |
|
167 | -- APB DMA WRITE -- | |
|
168 | CASE paddr(7 DOWNTO 2) IS | |
|
169 | -- | |
|
170 | WHEN "000000" => reg.run <= apbi.pwdata(0); | |
|
171 | reg.send <= apbi.pwdata(1); | |
|
172 | reg.valid_burst <= apbi.pwdata(2); | |
|
173 | reg.done <= apbi.pwdata(3); | |
|
174 | reg.ren <= apbi.pwdata(4); | |
|
175 | WHEN "000001" => reg.addr <= apbi.pwdata; | |
|
176 | WHEN "000010" => reg.data <= apbi.pwdata; | |
|
177 | WHEN "000011" => reg.nb_ren <= apbi.pwdata; | |
|
178 | WHEN OTHERS => NULL; | |
|
179 | END CASE; | |
|
180 | END IF; | |
|
181 | END IF; | |
|
182 | ||
|
183 | END IF; | |
|
184 | END PROCESS lpp_lfr_apbreg; | |
|
185 | ||
|
186 | apbo.pindex <= pindex; | |
|
187 | apbo.pconfig <= pconfig; | |
|
188 | apbo.prdata <= prdata; | |
|
189 | ||
|
190 | ||
|
191 | ||
|
192 | END Behavioral; No newline at end of file |
@@ -0,0 +1,46 | |||
|
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 | LIBRARY ieee; | |
|
24 | USE ieee.std_logic_1164.ALL; | |
|
25 | LIBRARY grlib; | |
|
26 | USE grlib.amba.ALL; | |
|
27 | ||
|
28 | PACKAGE lpp_debug_lfr_pkg IS | |
|
29 | ||
|
30 | COMPONENT lpp_debug_dma_singleOrBurst | |
|
31 | GENERIC ( | |
|
32 | tech : INTEGER; | |
|
33 | hindex : INTEGER; | |
|
34 | pindex : INTEGER; | |
|
35 | paddr : INTEGER; | |
|
36 | pmask : INTEGER); | |
|
37 | PORT ( | |
|
38 | HCLK : IN STD_ULOGIC; | |
|
39 | HRESETn : IN STD_ULOGIC; | |
|
40 | ahbmi : IN AHB_Mst_In_Type; | |
|
41 | ahbmo : OUT AHB_Mst_Out_Type; | |
|
42 | apbi : IN apb_slv_in_type; | |
|
43 | apbo : OUT apb_slv_out_type); | |
|
44 | END COMPONENT; | |
|
45 | ||
|
46 | END; |
@@ -43,6 +43,7 USE lpp.iir_filter.ALL; | |||
|
43 | 43 | USE lpp.general_purpose.ALL; |
|
44 | 44 | USE lpp.lpp_lfr_time_management.ALL; |
|
45 | 45 | USE lpp.lpp_leon3_soc_pkg.ALL; |
|
46 | USE lpp.lpp_debug_lfr_pkg.ALL; | |
|
46 | 47 | |
|
47 | 48 | ENTITY MINI_LFR_top IS |
|
48 | 49 | |
@@ -212,8 +213,6 BEGIN -- beh | |||
|
212 | 213 | nCTS2 <= '1'; |
|
213 | 214 | nDCD2 <= '1'; |
|
214 | 215 | |
|
215 | --EXT CONNECTOR | |
|
216 | ||
|
217 | 216 |
|
|
218 | 217 | SPW_EN <= '0'; -- 0 => off |
|
219 | 218 | |
@@ -226,6 +225,24 BEGIN -- beh | |||
|
226 | 225 | ADC_CLK <= '0'; |
|
227 | 226 | |
|
228 | 227 | |
|
228 | ----------------------------------------------------------------------------- | |
|
229 | lpp_debug_dma_singleOrBurst_1: lpp_debug_dma_singleOrBurst | |
|
230 | GENERIC MAP ( | |
|
231 | tech => apa3e, | |
|
232 | hindex => 1, | |
|
233 | pindex => 5, | |
|
234 | paddr => 5, | |
|
235 | pmask => 16#fff#) | |
|
236 | PORT MAP ( | |
|
237 | HCLK => clk_25, | |
|
238 | HRESETn => reset , | |
|
239 | ahbmi => ahbi_m_ext , | |
|
240 | ahbmo => ahbo_m_ext(1), | |
|
241 | apbi => apbi_ext, | |
|
242 | apbo => apbo_ext(5)); | |
|
243 | ||
|
244 | ----------------------------------------------------------------------------- | |
|
245 | ||
|
229 | 246 | leon3_soc_1: leon3_soc |
|
230 | 247 | GENERIC MAP ( |
|
231 | 248 | fabtech => apa3e, |
@@ -272,4 +289,4 BEGIN -- beh | |||
|
272 | 289 | ahbi_m_ext => ahbi_m_ext, |
|
273 | 290 | ahbo_m_ext => ahbo_m_ext); |
|
274 | 291 | |
|
275 |
END beh; |
|
|
292 | END beh; No newline at end of file |
@@ -38,4 +38,6 PACKAGE apb_devices_list IS | |||
|
38 | 38 | CONSTANT LPP_BOOTLOADER_TYPE : amba_device_type := 16#18#; |
|
39 | 39 | CONSTANT LPP_LFR : amba_device_type := 16#19#; |
|
40 | 40 | |
|
41 | CONSTANT LPP_DEBUG_DMA : amba_device_type := 16#A0#; | |
|
42 | ||
|
41 | 43 | END; |
|
1 | NO CONTENT: file was removed |
|
1 | NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now