1 <?xml version="1.0" encoding="UTF-8"?>
3 xmlns="http://www.tik.ee.ethz.ch/~shapes/schema/PROCESSNETWORK"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://www.tik.ee.ethz.ch/~shapes/schema/PROCESSNETWORK
6 http://www.tik.ee.ethz.ch/~shapes/schema/processnetwork.xsd" name="AESA_DBF">
8 <variable value="8" name="N_BEAMS"/>
9 <variable value="16" name="N_ANTENNA_ELEMENTS"/>
10 <variable value="16" name="N_OVERLAPPED_BEAMS"/>
11 <variable value="16" name="N_DOPPLER_CHANNELS"/>
13 <variable value="8" name="SIZE_COMPLEX_NUM"/>
14 <variable value="64" name="N_FACTOR"/>
15 <variable value="4" name="N_RANGE_BINS"/>
16 <variable value="32" name="N_FFT"/>
18 <!-- ********************************************************** -->
19 <!-- instantiate processes -->
20 <!-- ********************************************************** -->
22 <!-- Data generator process with N_BEAMS outputs -->
23 <process name="Data_Generator">
24 <iterator variable="i" range="N_BEAMS">
25 <port type="output" name="out">
26 <append function="i"/>
29 <source type="c" location="Data_Generator.c"/>
32 <!-- Weights generator process with N_BEAMS outputs -->
33 <process name="Weight_Generator">
34 <iterator variable="i" range="N_BEAMS">
35 <port type="output" name="out">
36 <append function="i"/>
39 <source type="c" location="Weight_Generator.c"/>
42 <!-- N_BEAMS processes to compute result -->
43 <iterator variable="i" range="N_BEAMS">
44 <process name="Beam_Former">
45 <append function="i"/>
46 <port type="input" name="data_input"/>
47 <port type="input" name="weight_input"/>
48 <port type="output" name="data_output"/>
49 <source type="c" location="Beam_Former.c"/>
53 <!-- Corner Turn With Overlap processes -->
54 <iterator variable="i" range="N_BEAMS">
55 <process name="Corner_Turn_OL">
56 <append function="i"/>
57 <port type="input" name="data_input"/>
58 <port type="output" name="data_output"/>
59 <port type="output" name="data2_output_ol"/>
60 <source type="c" location="Corner_Turn_OL.c"/>
64 <!-- FFT processes to compute doppler channels -->
65 <iterator variable="i" range="2 * N_BEAMS">
66 <process name="FFT_Radix2_DIF">
67 <append function="i"/>
68 <port type="input" name="data_input"/>
69 <port type="output" name="data_output"/>
70 <source type="c" location="FFT_Radix2_DIF.c"/>
74 <!-- Corner Turn processes -->
75 <iterator variable="i" range="2 * N_BEAMS">
76 <process name="Corner_Turn">
77 <append function="i"/>
78 <port type="input" name="data_input"/>
79 <port type="output" name="data_output"/>
80 <source type="c" location="Corner_Turn.c"/>
84 <!-- FIR processes -->
85 <iterator variable="i" range="2 * N_BEAMS">
87 <append function="i"/>
88 <port type="input" name="data_input"/>
89 <port type="output" name="data_output"/>
90 <source type="c" location="FIR.c"/>
94 <!-- Consumer process to collect data -->
95 <process name="Consumer">
96 <iterator variable="i" range=" N_BEAMS">
97 <port type="input" name="data_input">
98 <append function="i"/>
100 <port type="input" name="data2_input_delayed">
101 <append function="i"/>
104 <source type="c" location="Consumer.c"/>
107 <!-- ********************************************************** -->
108 <!-- instantiate channels -->
109 <!-- ********************************************************** -->
111 <!-- sw_channels from data generator to dbf -->
112 <iterator variable="i" range="N_BEAMS">
113 <sw_channel type="fifo" size="N_ANTENNA_ELEMENTS * SIZE_COMPLEX_NUM * N_FACTOR" name="data_to_dbf_chan">
114 <append function="i"/>
115 <port type="input" name="in"/>
116 <port type="output" name="out"/>
120 <!-- sw_channels from weight generator to dbf -->
121 <iterator variable="i" range="N_BEAMS">
122 <sw_channel type="fifo" size="N_ANTENNA_ELEMENTS * SIZE_COMPLEX_NUM * N_FACTOR" name="weight_to_dbf_chan">
123 <append function="i"/>
124 <port type="input" name="in"/>
125 <port type="output" name="out"/>
129 <!-- sw_channels from dbf to corner turn with overlap -->
130 <iterator variable="i" range="N_BEAMS">
131 <sw_channel type="fifo" size="N_RANGE_BINS * SIZE_COMPLEX_NUM * N_FACTOR" name="dbf_to_ct_ol">
132 <append function="i"/>
133 <port type="input" name="in"/>
134 <port type="output" name="out"/>
138 <!-- sw_channels from corner turn to fft -->
139 <iterator variable="i" range="N_BEAMS">
140 <sw_channel type="fifo" size="N_FFT * SIZE_COMPLEX_NUM * N_FACTOR" name="ct_ol_to_fft">
141 <append function="i"/>
142 <port type="input" name="in"/>
143 <port type="output" name="out"/>
147 <!-- sw_channels from corner turn delayed to fft -->
148 <iterator variable="i" range="N_BEAMS">
149 <sw_channel type="fifo" size="N_FFT * SIZE_COMPLEX_NUM * N_FACTOR" name="ct_ol_delayed_to_fft">
150 <append function="i"/>
151 <port type="input" name="in"/>
152 <port type="output" name="out"/>
156 <!-- sw_channels from fft to corner turn -->
157 <iterator variable="i" range="2 * N_BEAMS">
158 <sw_channel type="fifo" size="N_FFT * SIZE_COMPLEX_NUM * N_FACTOR" name="fft_to_corner_turn">
159 <append function="i"/>
160 <port type="input" name="in"/>
161 <port type="output" name="out"/>
165 <!-- sw channels from corner turn to fir -->
166 <iterator variable="i" range="2 * N_BEAMS">
167 <sw_channel type="fifo" size="N_RANGE_BINS * SIZE_COMPLEX_NUM * N_FACTOR" name="corner_turn_to_fir">
168 <append function="i"/>
169 <port type="input" name="in"/>
170 <port type="output" name="out"/>
174 <!-- sw_channels from fir to consumer-->
175 <iterator variable="i" range="2 * N_BEAMS">
176 <sw_channel type="fifo" size="N_RANGE_BINS * SIZE_COMPLEX_NUM * N_FACTOR" name="fir_to_consumer">
177 <append function="i"/>
178 <port type="input" name="in"/>
179 <port type="output" name="out"/>
183 <!-- ********************************************************** -->
184 <!-- instantiate connections -->
185 <!-- ********************************************************** -->
187 <!-- connections from data generator to channels -->
188 <iterator variable="i" range="N_BEAMS">
189 <connection name="Ant_To_Dbf_Chan_Data">
190 <append function="i"/>
191 <origin name="Data_Generator">
193 <append function="i"/>
196 <target name="data_to_dbf_chan">
197 <append function="i"/>
203 <!-- connections from weight generator to channels -->
204 <iterator variable="i" range="N_BEAMS">
205 <connection name="Weight_To_Dbf_Chan_Weight">
206 <append function="i"/>
207 <origin name="Weight_Generator">
209 <append function="i"/>
212 <target name="weight_to_dbf_chan">
213 <append function="i"/>
220 <!-- connections from data channels to DBF processes -->
221 <iterator variable="i" range="N_BEAMS">
222 <connection name="Dbf_Chan_Data_To_Dbf">
223 <append function="i"/>
224 <origin name="data_to_dbf_chan">
225 <append function="i"/>
228 <target name="Beam_Former">
229 <append function="i"/>
230 <port name="data_input"/>
235 <!-- connections from weight channels to DBF processes -->
236 <iterator variable="i" range="N_BEAMS">
237 <connection name="Dbf_Chan_Weight_To_Dbf">
238 <append function="i"/>
239 <origin name="weight_to_dbf_chan">
240 <append function="i"/>
243 <target name="Beam_Former">
244 <append function="i"/>
245 <port name="weight_input"/>
250 <!-- connections from dbf to corner turn with overlap channels -->
251 <iterator variable="i" range="N_BEAMS">
252 <connection name="Dbf_To_Corner_Turn_Overlap_Chan">
253 <append function="i"/>
254 <origin name="Beam_Former">
255 <append function="i"/>
256 <port name="data_output">
259 <target name="dbf_to_ct_ol">
260 <append function="i"/>
266 <!-- connections from dbf channels to CT processes -->
267 <iterator variable="i" range="N_BEAMS">
268 <connection name="Chan1_To_Ct_Ol">
269 <append function="i"/>
270 <origin name="dbf_to_ct_ol">
271 <append function="i"/>
274 <target name="Corner_Turn_OL">
275 <append function="i"/>
276 <port name="data_input"/>
281 <!-- connections from corner turn to FFT channels -->
282 <iterator variable="i" range="N_BEAMS">
283 <connection name="Ct_Ol_To_Chan2">
284 <append function="i"/>
285 <origin name="Corner_Turn_OL">
286 <append function="i"/>
287 <port name="data_output"/>
289 <target name="ct_ol_to_fft">
290 <append function="i"/>
294 <connection name="Ct_Ol_Delay_To_Chan2">
295 <append function="i"/>
296 <origin name="Corner_Turn_OL">
297 <append function="i"/>
298 <port name="data2_output_ol"/>
300 <target name="ct_ol_delayed_to_fft">
301 <append function="i"/>
307 <!-- connections from FFT channels to FFT-->
308 <iterator variable="i" range="N_BEAMS">
309 <connection name="Chan2_To_FFT">
310 <append function="i"/>
311 <origin name="ct_ol_to_fft">
312 <append function="i"/>
315 <target name="FFT_Radix2_DIF">
316 <append function="i"/>
317 <port name="data_input"/>
320 <connection name="Chan2_Delay_To_FFT">
321 <append function="i"/>
322 <origin name="ct_ol_delayed_to_fft">
323 <append function="i"/>
326 <target name="FFT_Radix2_DIF">
327 <append function="i + N_BEAMS"/>
328 <port name="data_input"/>
333 <!-- connections from FFT to Corner Turn channels -->
334 <iterator variable="i" range="2 * N_BEAMS">
335 <connection name="FFT_To_Chan3">
336 <append function="i"/>
337 <origin name="FFT_Radix2_DIF">
338 <append function="i"/>
339 <port name="data_output"/>
341 <target name="fft_to_corner_turn">
342 <append function="i"/>
348 <!-- connections from Corner Turn channels to Corner Turn -->
349 <iterator variable="i" range="2 * N_BEAMS">
350 <connection name="Chan3_To_Corner_Turn">
351 <append function="i"/>
352 <origin name="fft_to_corner_turn">
353 <append function="i"/>
356 <target name="Corner_Turn">
357 <append function="i"/>
358 <port name="data_input"/>
364 <!-- connections from Corner Turn to FIR Channels -->
365 <iterator variable="i" range="2 * N_BEAMS">
366 <connection name="Corner_Turn_To_Chan4">
367 <append function="i"/>
368 <origin name="Corner_Turn">
369 <append function="i"/>
370 <port name="data_output"/>
372 <target name="corner_turn_to_fir">
373 <append function="i"/>
380 <!-- connections from FIR channels to FIR -->
381 <iterator variable="i" range="2 * N_BEAMS">
382 <connection name="Chan4_To_FIR">
383 <append function="i"/>
384 <origin name="corner_turn_to_fir">
385 <append function="i"/>
389 <append function="i"/>
390 <port name="data_input"/>
395 <!-- connection from FIR to FIR channels -->
396 <iterator variable="i" range="2 * N_BEAMS">
397 <connection name="FIR_to_Chan5">
398 <append function="i"/>
400 <append function="i"/>
401 <port name="data_output"/>
403 <target name="fir_to_consumer">
404 <append function="i"/>
410 <!-- connections from FIR to Consumer Channels -->
411 <iterator variable="i" range="N_BEAMS">
412 <connection name="Chan5_To_Consumer">
413 <append function="i"/>
414 <origin name="fir_to_consumer">
415 <append function="i"/>
418 <target name="Consumer">
419 <port name="data_input">
420 <append function="i"/>
424 <connection name="Chan5_To_Consumer_Delayed">
425 <append function="i"/>
426 <origin name="fir_to_consumer">
427 <append function="i + N_BEAMS"/>
430 <target name="Consumer">
431 <port name="data2_input_delayed">
432 <append function="i"/>