Rev Author Line No. Line
3641 kaklik 1 library ieee;
2 use ieee.std_logic_1164.all;
3  
4 library fifo_related;
5  
6 entity xilly_userlogiccmp_wrapper is
7 port (
8 i_clk : in std_logic;
9 i_rst : in std_logic;
10  
11 user_r_control_r_rden : in std_logic;
12 user_r_control_r_empty : out std_logic := '1';
13 user_r_control_r_data : out std_logic_vector(31 DOWNTO 0) := ( others => '0' );
14  
15 user_w_control_w_wren : in std_logic;
16 user_w_control_w_full : out std_logic := '0';
17 user_w_control_w_data : in std_logic_vector(31 DOWNTO 0);
18  
19 user_r_data1_r_rden : in std_logic;
20 user_r_data1_r_empty : out std_logic := '1';
21 user_r_data1_r_data : out std_logic_vector(31 DOWNTO 0) := ( others => '0' );
22  
23 user_w_data1_w_wren : in std_logic;
24 user_w_data1_w_full : out std_logic := '0';
25 user_w_data1_w_data : in std_logic_vector(31 DOWNTO 0);
26  
27 user_r_data2_r_rden : in std_logic;
28 user_r_data2_r_empty : out std_logic := '1';
29 user_r_data2_r_data : out std_logic_vector(31 DOWNTO 0) := ( others => '0' );
30  
31 user_w_data2_w_wren : in std_logic;
32 user_w_data2_w_full : out std_logic := '0';
33 user_w_data2_w_data : in std_logic_vector(31 DOWNTO 0)
34 );
35 end entity;
36  
37 architecture behavioral of xilly_userlogiccmp_wrapper is
38  
39 component user_logic_cmp
40 port (
41 i_clk : in std_logic;
42 i_rst : in std_logic;
43  
44 -- data1 interface:
45 i_data1in_data : in std_logic_vector( 31 downto 0 );
46 i_data1in_valid : in std_logic;
47 o_data1in_enable : out std_logic;
48 o_data1out_data : out std_logic_vector( 31 downto 0 );
49 o_data1out_valid : out std_logic;
50 i_data1out_enable : in std_logic;
51  
52 -- data2 interface:
53 i_data2in_data : in std_logic_vector( 31 downto 0 );
54 i_data2in_valid : in std_logic;
55 o_data2in_enable : out std_logic := '1';
56 o_data2out_data : out std_logic_vector( 31 downto 0 );
57 o_data2out_valid : out std_logic := '0';
58 i_data2out_enable : in std_logic;
59  
60 -- control interface:
61 i_controlin_data : in std_logic_vector( 31 downto 0 );
62 i_controlin_valid : in std_logic;
63 o_controlin_enable : out std_logic := '1';
64 o_controlout_data : out std_logic_vector( 31 downto 0 );
65 o_controlout_valid : out std_logic := '0';
66 i_controlout_enable : in std_logic
67 );
68 end component;
69  
70 component fifo_32x512
71 port (
72 clk: IN std_logic;
73 srst: IN std_logic;
74 din: IN std_logic_vector(31 downto 0) := ( others => '0' );
75 wr_en: IN std_logic := '0';
76 rd_en: IN std_logic;
77 dout: OUT std_logic_vector(31 downto 0);
78 valid: OUT std_logic;
79 full: OUT std_logic;
80 empty: OUT std_logic
81 );
82 end component;
83  
84 -- data1 signals
85 signal s_data1_ffin2fte_data : std_logic_vector( 31 downto 0 );
86 signal s_data1_ffin2fte_rden : std_logic;
87 signal s_data1_ffin2fte_empty : std_logic;
88  
89 signal s_data1_fte2ul_data : std_logic_vector( 31 downto 0 );
90 signal s_data1_fte2ul_valid : std_logic;
91 signal s_data1_fte2ul_enable : std_logic;
92  
93 signal s_data1_ul2ffout_data : std_logic_vector( 31 downto 0 );
94 signal s_data1_ul2ffout_valid : std_logic;
95 signal s_data1_ul2ffout_enable : std_logic;
96 signal s_data1_ul2ffout_full : std_logic;
97  
98 -- data2 signals
99 signal s_data2_ffin2fte_data : std_logic_vector( 31 downto 0 );
100 signal s_data2_ffin2fte_rden : std_logic;
101 signal s_data2_ffin2fte_empty : std_logic;
102  
103 signal s_data2_fte2ul_data : std_logic_vector( 31 downto 0 );
104 signal s_data2_fte2ul_valid : std_logic;
105 signal s_data2_fte2ul_enable : std_logic;
106  
107 signal s_data2_ul2ffout_data : std_logic_vector( 31 downto 0 );
108 signal s_data2_ul2ffout_valid : std_logic;
109 signal s_data2_ul2ffout_enable : std_logic;
110 signal s_data2_ul2ffout_full : std_logic;
111  
112 -- control signals
113 signal s_control_ffin2fte_data : std_logic_vector( 31 downto 0 );
114 signal s_control_ffin2fte_rden : std_logic;
115 signal s_control_ffin2fte_empty : std_logic;
116  
117 signal s_control_fte2ul_data : std_logic_vector( 31 downto 0 );
118 signal s_control_fte2ul_valid : std_logic;
119 signal s_control_fte2ul_enable : std_logic;
120  
121 signal s_control_ul2ffout_data : std_logic_vector( 31 downto 0 );
122 signal s_control_ul2ffout_valid : std_logic;
123 signal s_control_ul2ffout_enable : std_logic;
124 signal s_control_ul2ffout_full : std_logic;
125  
126 begin
127  
128 ------------------------------------------------------
129  
130 --data1_gen : if( C_USES_DATA1_INTERFACE = '1' ) generate
131 -- FIFO_IN instantiation:
132 data1_fifo_in_inst : fifo_32x512
133 port map (
134 clk => i_clk, srst => i_rst,
135 din => user_w_data1_w_data, wr_en => user_w_data1_w_wren, full => user_w_data1_w_full,
136 dout => s_data1_ffin2fte_data, rd_en => s_data1_ffin2fte_rden, empty => s_data1_ffin2fte_empty,
137 valid => open );
138  
139 -- FIFO_to_enable instantiation:
140 data1_fifo_to_enable_inst : entity fifo_related.fifo_to_enable
141 port map (
142 clk => i_clk, reset => i_rst,
143 din => s_data1_ffin2fte_data, rden => s_data1_ffin2fte_rden, empty => s_data1_ffin2fte_empty,
144 data => s_data1_fte2ul_data, valid => s_data1_fte2ul_valid, enable => s_data1_fte2ul_enable );
145  
146 -- FIFO_OUT instantiation:
147 data1_fifo_out_inst : fifo_32x512
148 port map (
149 clk => i_clk, srst => i_rst,
150 din => s_data1_ul2ffout_data, wr_en => s_data1_ul2ffout_valid, full => s_data1_ul2ffout_full,
151 dout => user_r_data1_r_data, rd_en => user_r_data1_r_rden, empty => user_r_data1_r_empty,
152 valid => open );
153 s_data1_ul2ffout_enable <= not s_data1_ul2ffout_full;
154  
155 -- generate;
156  
157 ------------------------------------------------------
158  
159 --data2_gen : if( C_USES_DATA2_INTERFACE = '1' ) generate
160 -- FIFO_IN instantiation:
161 data2_fifo_in_inst : fifo_32x512
162 port map (
163 clk => i_clk, srst => i_rst,
164 din => user_w_data2_w_data, wr_en => user_w_data2_w_wren, full => user_w_data2_w_full,
165 dout => s_data2_ffin2fte_data, rd_en => s_data2_ffin2fte_rden, empty => s_data2_ffin2fte_empty,
166 valid => open );
167  
168 -- FIFO_to_enable instantiation:
169 data2_fifo_to_enable_inst : entity fifo_related.fifo_to_enable
170 port map (
171 clk => i_clk, reset => i_rst,
172 din => s_data2_ffin2fte_data, rden => s_data2_ffin2fte_rden, empty => s_data2_ffin2fte_empty,
173 data => s_data2_fte2ul_data, valid => s_data2_fte2ul_valid, enable => s_data2_fte2ul_enable );
174  
175 -- FIFO_OUT instantiation:
176 data2_fifo_out_inst : fifo_32x512
177 port map (
178 clk => i_clk, srst => i_rst,
179 din => s_data2_ul2ffout_data, wr_en => s_data2_ul2ffout_valid, full => s_data2_ul2ffout_full,
180 dout => user_r_data2_r_data, rd_en => user_r_data2_r_rden, empty => user_r_data2_r_empty,
181 valid => open );
182 s_data2_ul2ffout_enable <= not s_data2_ul2ffout_full;
183  
184 --end generate;
185  
186 ----------------------------------------------------------
187  
188 --control_gen : if( C_USES_CONTROL_INTERFACE = '1' ) generate
189 -- FIFO_IN instantiation:
190 control_fifo_in_inst : fifo_32x512
191 port map (
192 clk => i_clk, srst => i_rst,
193 din => user_w_control_w_data, wr_en => user_w_control_w_wren, full => user_w_control_w_full,
194 dout => s_control_ffin2fte_data, rd_en => s_control_ffin2fte_rden, empty => s_control_ffin2fte_empty,
195 valid => open );
196  
197 -- FIFO_to_enable instantiation:
198 control_fifo_to_enable_inst : entity fifo_related.fifo_to_enable
199 port map (
200 clk => i_clk, reset => i_rst,
201 din => s_control_ffin2fte_data, rden => s_control_ffin2fte_rden, empty => s_control_ffin2fte_empty,
202 data => s_control_fte2ul_data, valid => s_control_fte2ul_valid, enable => s_control_fte2ul_enable );
203  
204 -- FIFO_OUT instantiation:
205 control_fifo_out_inst : fifo_32x512
206 port map (
207 clk => i_clk, srst => i_rst,
208 din => s_control_ul2ffout_data, wr_en => s_control_ul2ffout_valid, full => s_control_ul2ffout_full,
209 dout => user_r_control_r_data, rd_en => user_r_control_r_rden, empty => user_r_control_r_empty,
210 valid => open );
211 s_control_ul2ffout_enable <= not s_control_ul2ffout_full;
212  
213 --end generate;
214  
215 --------------------------------------------------------------
216  
217 -- user logic:
218 user_logic_cmp_inst : user_logic_cmp
219 port map (
220 i_clk => i_clk,
221 i_rst => i_rst,
222  
223 -- data1 interface:
224 i_data1in_data => s_data1_fte2ul_data,
225 i_data1in_valid => s_data1_fte2ul_valid,
226 o_data1in_enable => s_data1_fte2ul_enable,
227 o_data1out_data => s_data1_ul2ffout_data,
228 o_data1out_valid => s_data1_ul2ffout_valid,
229 i_data1out_enable => s_data1_ul2ffout_enable,
230  
231 -- data2 interface:
232 i_data2in_data => s_data2_fte2ul_data,
233 i_data2in_valid => s_data2_fte2ul_valid,
234 o_data2in_enable => s_data2_fte2ul_enable,
235 o_data2out_data => s_data2_ul2ffout_data,
236 o_data2out_valid => s_data2_ul2ffout_valid,
237 i_data2out_enable => s_data2_ul2ffout_enable,
238  
239 -- control interface:
240 i_controlin_data => s_control_fte2ul_data,
241 i_controlin_valid => s_control_fte2ul_valid,
242 o_controlin_enable => s_control_fte2ul_enable,
243 o_controlout_data => s_control_ul2ffout_data,
244 o_controlout_valid => s_control_ul2ffout_valid,
245 i_controlout_enable => s_control_ul2ffout_enable
246 );
247  
248 end architecture;