@@ -0,0 +1,80 | |||||
|
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 : Martin Morlot | |||
|
20 | -- Mail : martin.morlot@lpp.polytechnique.fr | |||
|
21 | ------------------------------------------------------------------------------- | |||
|
22 | library IEEE; | |||
|
23 | use IEEE.numeric_std.all; | |||
|
24 | use IEEE.std_logic_1164.all; | |||
|
25 | ||||
|
26 | entity ReUse_CTRLR is | |||
|
27 | port( | |||
|
28 | clk : in std_logic; | |||
|
29 | reset : in std_logic; | |||
|
30 | ||||
|
31 | SetReUse : in std_logic_vector(4 downto 0); | |||
|
32 | Statu : in std_logic_vector(3 downto 0); | |||
|
33 | ||||
|
34 | ReUse : out std_logic_vector(4 downto 0) | |||
|
35 | ); | |||
|
36 | end entity; | |||
|
37 | ||||
|
38 | ||||
|
39 | architecture ar_ReUse_CTRLR of ReUse_CTRLR is | |||
|
40 | ||||
|
41 | signal ResetReUse : std_logic_vector(4 downto 0); | |||
|
42 | signal MatrixParam : integer; | |||
|
43 | signal MatrixParam_Reg : integer; | |||
|
44 | ||||
|
45 | begin | |||
|
46 | ||||
|
47 | ||||
|
48 | ||||
|
49 | process (clk,reset) | |||
|
50 | -- variable MatrixParam : integer; | |||
|
51 | begin | |||
|
52 | -- MatrixParam := to_integer(unsigned(Statu)); | |||
|
53 | ||||
|
54 | if(reset='0')then | |||
|
55 | ResetReUse <= (others => '1'); | |||
|
56 | MatrixParam_Reg <= 0; | |||
|
57 | ||||
|
58 | ||||
|
59 | elsif(clk' event and clk='1')then | |||
|
60 | MatrixParam_Reg <= MatrixParam; | |||
|
61 | ||||
|
62 | if(MatrixParam_Reg = 7 and MatrixParam = 8)then -- On videra FIFO(B1) a sa derni�re utilisation PARAM = 11 | |||
|
63 | ResetReUse(0) <= '0'; | |||
|
64 | elsif(MatrixParam_Reg = 8 and MatrixParam = 9)then -- On videra FIFO(B2) a sa derni�re utilisation PARAM = 12 | |||
|
65 | ResetReUse(1) <= '0'; | |||
|
66 | elsif(MatrixParam_Reg = 9 and MatrixParam = 10)then -- On videra FIFO(B3) a sa derni�re utilisation PARAM = 13 | |||
|
67 | ResetReUse(2) <= '0'; | |||
|
68 | elsif(MatrixParam_Reg = 10 and MatrixParam = 11)then -- On videra FIFO(E1) a sa derni�re utilisation PARAM = 14 | |||
|
69 | ResetReUse(3) <= '0'; | |||
|
70 | elsif(MatrixParam_Reg = 14 and MatrixParam = 15)then -- On videra FIFO(E2) a sa derni�re utilisation PARAM = 15 | |||
|
71 | ResetReUse(4) <= '0'; | |||
|
72 | end if; | |||
|
73 | ||||
|
74 | end if; | |||
|
75 | end process; | |||
|
76 | ||||
|
77 | MatrixParam <= to_integer(unsigned(Statu)); | |||
|
78 | ReUse <= SetReUse and ResetReUse; | |||
|
79 | ||||
|
80 | end architecture; No newline at end of file |
@@ -22,10 +22,6 | |||||
22 | LIBRARY IEEE; |
|
22 | LIBRARY IEEE; | |
23 | USE IEEE.numeric_std.ALL; |
|
23 | USE IEEE.numeric_std.ALL; | |
24 | USE IEEE.std_logic_1164.ALL; |
|
24 | USE IEEE.std_logic_1164.ALL; | |
25 | LIBRARY lpp; |
|
|||
26 | USE lpp.general_purpose.ALL; |
|
|||
27 |
|
||||
28 |
|
||||
29 |
|
25 | |||
30 | ENTITY Adder IS |
|
26 | ENTITY Adder IS | |
31 | GENERIC( |
|
27 | GENERIC( |
@@ -22,9 +22,6 | |||||
22 | library IEEE; |
|
22 | library IEEE; | |
23 | use IEEE.numeric_std.all; |
|
23 | use IEEE.numeric_std.all; | |
24 | use IEEE.std_logic_1164.all; |
|
24 | use IEEE.std_logic_1164.all; | |
25 | library lpp; |
|
|||
26 | use lpp.general_purpose.all; |
|
|||
27 |
|
||||
28 |
|
25 | |||
29 | --IDLE =00 MAC =01 MULT =10 ADD =11 |
|
26 | --IDLE =00 MAC =01 MULT =10 ADD =11 | |
30 |
|
27 |
@@ -22,10 +22,6 | |||||
22 | library IEEE; |
|
22 | library IEEE; | |
23 | use IEEE.numeric_std.all; |
|
23 | use IEEE.numeric_std.all; | |
24 | use IEEE.std_logic_1164.all; |
|
24 | use IEEE.std_logic_1164.all; | |
25 | library lpp; |
|
|||
26 | use lpp.general_purpose.all; |
|
|||
27 |
|
||||
28 |
|
||||
29 |
|
25 | |||
30 | entity MAC_MUX is |
|
26 | entity MAC_MUX is | |
31 | generic( |
|
27 | generic( |
@@ -22,9 +22,6 | |||||
22 | library IEEE; |
|
22 | library IEEE; | |
23 | use IEEE.numeric_std.all; |
|
23 | use IEEE.numeric_std.all; | |
24 | use IEEE.std_logic_1164.all; |
|
24 | use IEEE.std_logic_1164.all; | |
25 | library lpp; |
|
|||
26 | use lpp.general_purpose.all; |
|
|||
27 |
|
||||
28 |
|
25 | |||
29 |
|
26 | |||
30 | entity MAC_MUX2 is |
|
27 | entity MAC_MUX2 is |
@@ -22,10 +22,6 | |||||
22 | library IEEE; |
|
22 | library IEEE; | |
23 | use IEEE.numeric_std.all; |
|
23 | use IEEE.numeric_std.all; | |
24 | use IEEE.std_logic_1164.all; |
|
24 | use IEEE.std_logic_1164.all; | |
25 | library lpp; |
|
|||
26 | use lpp.general_purpose.all; |
|
|||
27 |
|
||||
28 |
|
||||
29 |
|
25 | |||
30 | entity MAC_REG is |
|
26 | entity MAC_REG is | |
31 | generic(size : integer := 16); |
|
27 | generic(size : integer := 16); |
@@ -23,11 +23,6 library IEEE; | |||||
23 | use IEEE.numeric_std.all; |
|
23 | use IEEE.numeric_std.all; | |
24 | use IEEE.std_logic_1164.all; |
|
24 | use IEEE.std_logic_1164.all; | |
25 |
|
25 | |||
26 | library lpp; |
|
|||
27 | use lpp.general_purpose.all; |
|
|||
28 |
|
||||
29 |
|
||||
30 |
|
||||
31 | entity Multiplier is |
|
26 | entity Multiplier is | |
32 | generic( |
|
27 | generic( | |
33 | Input_SZ_A : integer := 16; |
|
28 | Input_SZ_A : integer := 16; |
@@ -22,7 +22,6 | |||||
22 | library IEEE; |
|
22 | library IEEE; | |
23 | use IEEE.numeric_std.all; |
|
23 | use IEEE.numeric_std.all; | |
24 | use IEEE.std_logic_1164.all; |
|
24 | use IEEE.std_logic_1164.all; | |
25 | library lpp; |
|
|||
26 | use lpp.general_purpose.all; |
|
25 | use lpp.general_purpose.all; | |
27 |
|
26 | |||
28 | --! Driver de l'ALU |
|
27 | --! Driver de l'ALU |
@@ -22,8 +22,8 | |||||
22 | library IEEE; |
|
22 | library IEEE; | |
23 | use IEEE.std_logic_1164.all; |
|
23 | use IEEE.std_logic_1164.all; | |
24 | use IEEE.numeric_std.all; |
|
24 | use IEEE.numeric_std.all; | |
25 | library lpp; |
|
25 | --library lpp; | |
26 | use lpp.lpp_matrix.all; |
|
26 | --use lpp.lpp_matrix.all; | |
27 |
|
27 | |||
28 | entity MatriceSpectrale is |
|
28 | entity MatriceSpectrale is | |
29 | generic( |
|
29 | generic( | |
@@ -34,14 +34,17 entity MatriceSpectrale is | |||||
34 | rstn : in std_logic; |
|
34 | rstn : in std_logic; | |
35 |
|
35 | |||
36 | FifoIN_Full : in std_logic_vector(4 downto 0); |
|
36 | FifoIN_Full : in std_logic_vector(4 downto 0); | |
|
37 | SetReUse : in std_logic_vector(4 downto 0); | |||
37 | FifoOUT_Full : in std_logic_vector(1 downto 0); |
|
38 | FifoOUT_Full : in std_logic_vector(1 downto 0); | |
38 |
Data_IN : in std_logic_vector( |
|
39 | Data_IN : in std_logic_vector((5*Input_SZ)-1 downto 0); | |
39 | ACQ : in std_logic; |
|
40 | ACQ : in std_logic; | |
40 | FlagError : out std_logic; |
|
41 | FlagError : out std_logic; | |
41 | Pong : out std_logic; |
|
42 | Pong : out std_logic; | |
|
43 | Statu : out std_logic_vector(3 downto 0); | |||
42 | Write : out std_logic_vector(1 downto 0); |
|
44 | Write : out std_logic_vector(1 downto 0); | |
43 | Read : out std_logic_vector(4 downto 0); |
|
45 | Read : out std_logic_vector(4 downto 0); | |
44 |
|
|
46 | ReUse : out std_logic_vector(4 downto 0); | |
|
47 | Data_OUT : out std_logic_vector((2*Result_SZ)-1 downto 0) | |||
45 | ); |
|
48 | ); | |
46 | end entity; |
|
49 | end entity; | |
47 |
|
50 | |||
@@ -59,18 +62,23 signal TopSM_Data2 : std_logic_vect | |||||
59 |
|
62 | |||
60 | begin |
|
63 | begin | |
61 |
|
64 | |||
62 | TopSM : TopSpecMatrix |
|
65 | CTRL0 : entity work.ReUse_CTRLR | |
|
66 | port map(clkm,rstn,SetReUse,TopSM_Statu,ReUse); | |||
|
67 | ||||
|
68 | ||||
|
69 | TopSM : entity work.TopSpecMatrix | |||
63 | generic map (Input_SZ) |
|
70 | generic map (Input_SZ) | |
64 | port map(clkm,rstn,Matrix_Write,Matrix_Read,FifoIN_Full,Data_IN,TopSM_Start,Read,TopSM_Statu,TopSM_Data1,TopSM_Data2); |
|
71 | port map(clkm,rstn,Matrix_Write,Matrix_Read,FifoIN_Full,Data_IN,TopSM_Start,Read,TopSM_Statu,TopSM_Data1,TopSM_Data2); | |
65 |
|
72 | |||
66 | SM : SpectralMatrix |
|
73 | SM : entity work.SpectralMatrix | |
67 | generic map (Input_SZ,Result_SZ) |
|
74 | generic map (Input_SZ,Result_SZ) | |
68 | port map(clkm,rstn,TopSM_Start,TopSM_Data1,TopSM_Data2,TopSM_Statu,Matrix_Read,Matrix_Write,Matrix_Result); |
|
75 | port map(clkm,rstn,TopSM_Start,TopSM_Data1,TopSM_Data2,TopSM_Statu,Matrix_Read,Matrix_Write,Matrix_Result); | |
69 |
|
76 | |||
70 | DISP : Dispatch |
|
77 | DISP : entity work.Dispatch | |
71 | generic map(Result_SZ) |
|
78 | generic map(Result_SZ) | |
72 | port map(clkm,rstn,ACQ,Matrix_Result,Matrix_Write,FifoOUT_Full,Data_OUT,Write,Pong,FlagError); |
|
79 | port map(clkm,rstn,ACQ,Matrix_Result,Matrix_Write,FifoOUT_Full,Data_OUT,Write,Pong,FlagError); | |
73 |
|
80 | |||
|
81 | Statu <= TopSM_Statu; | |||
74 |
|
82 | |||
75 | end architecture; |
|
83 | end architecture; | |
76 |
|
84 |
@@ -65,14 +65,17 component MatriceSpectrale is | |||||
65 | rstn : in std_logic; |
|
65 | rstn : in std_logic; | |
66 |
|
66 | |||
67 | FifoIN_Full : in std_logic_vector(4 downto 0); |
|
67 | FifoIN_Full : in std_logic_vector(4 downto 0); | |
|
68 | SetReUse : in std_logic_vector(4 downto 0); | |||
68 | FifoOUT_Full : in std_logic_vector(1 downto 0); |
|
69 | FifoOUT_Full : in std_logic_vector(1 downto 0); | |
69 |
Data_IN : in std_logic_vector( |
|
70 | Data_IN : in std_logic_vector((5*Input_SZ)-1 downto 0); | |
70 | ACQ : in std_logic; |
|
71 | ACQ : in std_logic; | |
71 | FlagError : out std_logic; |
|
72 | FlagError : out std_logic; | |
72 | Pong : out std_logic; |
|
73 | Pong : out std_logic; | |
|
74 | Statu : out std_logic_vector(3 downto 0); | |||
73 | Write : out std_logic_vector(1 downto 0); |
|
75 | Write : out std_logic_vector(1 downto 0); | |
74 | Read : out std_logic_vector(4 downto 0); |
|
76 | Read : out std_logic_vector(4 downto 0); | |
75 |
|
|
77 | ReUse : out std_logic_vector(4 downto 0); | |
|
78 | Data_OUT : out std_logic_vector((2*Result_SZ)-1 downto 0) | |||
76 | ); |
|
79 | ); | |
77 | end component; |
|
80 | end component; | |
78 |
|
81 | |||
@@ -250,4 +253,14 component ALU_Driver is | |||||
250 | ); |
|
253 | ); | |
251 | end component; |
|
254 | end component; | |
252 |
|
255 | |||
|
256 | component ReUse_CTRLR is | |||
|
257 | port( | |||
|
258 | clk : in std_logic; | |||
|
259 | reset : in std_logic; | |||
|
260 | SetReUse : in std_logic_vector(4 downto 0); | |||
|
261 | Statu : in std_logic_vector(3 downto 0); | |||
|
262 | ReUse : out std_logic_vector(4 downto 0) | |||
|
263 | ); | |||
|
264 | end component; | |||
|
265 | ||||
253 | end; No newline at end of file |
|
266 | end; |
@@ -143,7 +143,7 BEGIN | |||||
143 | IIR_CEL_CTRLR_v2_1 : IIR_CEL_CTRLR_v2 |
|
143 | IIR_CEL_CTRLR_v2_1 : IIR_CEL_CTRLR_v2 | |
144 | GENERIC MAP ( |
|
144 | GENERIC MAP ( | |
145 | tech => 0, |
|
145 | tech => 0, | |
146 |
Mem_use => use_ |
|
146 | Mem_use => use_RAM, | |
147 | Sample_SZ => 18, |
|
147 | Sample_SZ => 18, | |
148 | Coef_SZ => Coef_SZ, |
|
148 | Coef_SZ => Coef_SZ, | |
149 | Coef_Nb => 25, -- TODO |
|
149 | Coef_Nb => 25, -- TODO |
General Comments 0
You need to be logged in to leave comments.
Login now