OpenCores
URL https://opencores.org/ocsvn/raytrac/raytrac/trunk

Subversion Repositories raytrac

[/] [raytrac/] [branches/] [fp_sgdma/] [ap_n_dpc.vhd] - Blame information for rev 237

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 219 jguarin200
--! @file ap_n_dpc.vhd
2 196 jguarin200
--! @brief Decodificador de operacién. Sistema de decodificación de los \kdatapaths, cuyo objetivo es a partir del par´ametro de entrada DCS.\nSon 4 las posibles configuraciones de \kdatapaths que existen. Los valores de los bits DC son los que determinan y decodifican la interconexión entre los componentes aritméticos. El componente S determina el signo de la operación cuando es una suma la que operación se es&eacutea; ejecutando en el momento.  
3 128 jguarin200
--! @author Julián Andrés Guarín Reyes
4 122 jguarin200
--------------------------------------------------------------
5
-- RAYTRAC
6
-- Author Julian Andres Guarin
7 219 jguarin200
-- ap_n_dpc.vhd
8 122 jguarin200
-- This file is part of raytrac.
9
-- 
10
--     raytrac is free software: you can redistribute it and/or modify
11
--     it under the terms of the GNU General Public License as published by
12
--     the Free Software Foundation, either version 3 of the License, or
13
--     (at your option) any later version.
14
-- 
15
--     raytrac is distributed in the hope that it will be useful,
16
--     but WITHOUT ANY WARRANTY; without even the implied warranty of
17
--     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
--     GNU General Public License for more details.
19
-- 
20
--     You should have received a copy of the GNU General Public License
21
--     along with raytrac.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
library ieee;
24
use ieee.std_logic_1164.all;
25 212 jguarin200
use ieee.std_logic_unsigned.all;
26 151 jguarin200
use work.arithpack.all;
27 134 jguarin200
 
28 212 jguarin200
library altera_mf;
29
use altera_mf.altera_mf_components.all;
30 158 jguarin200
 
31 212 jguarin200
 
32 219 jguarin200
entity ap_n_dpc is
33 152 jguarin200
 
34 122 jguarin200
        port (
35 229 jguarin200
 
36 204 jguarin200
                clk                                             : in    std_logic;
37
                rst                                             : in    std_logic;
38
 
39 229 jguarin200
                ax                                              : in    std_logic_vector(31 downto 0);
40
                ay                                              : in    std_logic_vector(31 downto 0);
41
                az                                              : in    std_logic_vector(31 downto 0);
42
                bx                                              : in    std_logic_vector(31 downto 0);
43
                by                                              : in    std_logic_vector(31 downto 0);
44
                bz                                              : in    std_logic_vector(31 downto 0);
45
                vx                                              : out   std_logic_vector(31 downto 0);
46
                vy                                              : out   std_logic_vector(31 downto 0);
47
                vz                                              : out   std_logic_vector(31 downto 0);
48
                sc                                              : out   std_logic_vector(31 downto 0);
49
                ack                                             : in    std_logic;
50
                empty                                   : out   std_logic;
51 204 jguarin200
 
52 229 jguarin200
                 --paraminput                           : in    vectorblock06;  --! Vectores A,B
53 204 jguarin200
 
54 229 jguarin200
                dcs                                             : in    std_logic_vector(2 downto 0);            --! Bit con el identificador del bloque AB vs CD e identificador del sub bloque (A/B) o (C/D). 
55
 
56 212 jguarin200
                sync_chain_1                    : in    std_logic;              --! Se&ntilde;al de dato valido que se va por toda la cadena de sincronizacion.
57 229 jguarin200
                pipeline_pending                : out   std_logic               --! Se&ntilde;al para indicar si hay datos en el pipeline aritm&eacute;tico.    
58 204 jguarin200
 
59 229 jguarin200
 
60
 
61
                --qresult_d                             : out   vectorblock04   --! 4 salidas de resultados, pues lo m&aacute;ximo que podr&aacute; calcularse por cada clock son 2 vectores. 
62
 
63 204 jguarin200
 
64
 
65 122 jguarin200
        );
66 153 jguarin200
end entity;
67 122 jguarin200
 
68 219 jguarin200
architecture ap_n_dpc_arch of ap_n_dpc is
69 228 jguarin200
        --!Constantes de apoyo
70
        constant ssync_chain_max : integer :=27;
71
        constant ssync_chain_min : integer :=2;
72 125 jguarin200
 
73 235 jguarin200
        --! Tunnning delay
74
        constant adder2_delay: integer := 1;
75 236 jguarin200
        constant prod3_delay : integer := 2;
76 228 jguarin200
 
77 161 jguarin200
        --!TBXSTART:FACTORS_N_ADDENDS
78 229 jguarin200
        signal sfactor0         : std_logic_vector(31 downto 0);
79
        signal sfactor1         : std_logic_vector(31 downto 0);
80
        signal sfactor2         : std_logic_vector(31 downto 0);
81
        signal sfactor3         : std_logic_vector(31 downto 0);
82
        signal sfactor4         : std_logic_vector(31 downto 0);
83
        signal sfactor5         : std_logic_vector(31 downto 0);
84
        signal sfactor6         : std_logic_vector(31 downto 0);
85
        signal sfactor7         : std_logic_vector(31 downto 0);
86
        signal sfactor8         : std_logic_vector(31 downto 0);
87
        signal sfactor9         : std_logic_vector(31 downto 0);
88
        signal sfactor10        : std_logic_vector(31 downto 0);
89
        signal sfactor11        : std_logic_vector(31 downto 0);
90
        --signal sfactor                : vectorblock12;
91
 
92
        signal ssumando0        : std_logic_vector(31 downto 0);
93
        signal ssumando1        : std_logic_vector(31 downto 0);
94
        signal ssumando2        : std_logic_vector(31 downto 0);
95
        signal ssumando3        : std_logic_vector(31 downto 0);
96
        signal ssumando4        : std_logic_vector(31 downto 0);
97
        signal ssumando5        : std_logic_vector(31 downto 0);
98
        --signal ssumando               : vectorblock06;
99
 
100
        signal sq0_q            : std_logic_vector(31 downto 0);
101 161 jguarin200
        --!TBXEND
102 163 jguarin200
 
103
 
104
        --!TBXSTART:ARITHMETIC_RESULTS
105 229 jguarin200
 
106
        signal sp0                      : std_logic_vector(31 downto 0);
107
        signal sp1                      : std_logic_vector(31 downto 0);
108
        signal sp2                      : std_logic_vector(31 downto 0);
109
        signal sp3                      : std_logic_vector(31 downto 0);
110
        signal sp4                      : std_logic_vector(31 downto 0);
111
        signal sp5                      : std_logic_vector(31 downto 0);
112
        --signal sprd32blk      : vectorblock06;
113
 
114
        signal sa0                      : std_logic_vector(31 downto 0);
115
        signal sa1                      : std_logic_vector(31 downto 0);
116
        signal sa2                      : std_logic_vector(31 downto 0);
117
 
118
        --signal sadd32blk      : vectorblock03;
119
 
120
        signal ssq32    : std_logic_vector(31 downto 0);
121
        signal sinv32   : std_logic_vector(31 downto 0);
122
 
123
        signal sqx_q            : std_logic_vector(31 downto 0);
124
        signal sqy_q            : std_logic_vector(31 downto 0);
125
        signal sqz_q            : std_logic_vector(31 downto 0);
126
        --signal sqxyz_q                : vectorblock03;
127
 
128
        signal sq1_e            : std_logic;
129 163 jguarin200
        --!TBXEND
130
 
131 160 jguarin200
 
132
        --!TBXSTART:SYNC_CHAIN
133 228 jguarin200
        signal ssync_chain      : std_logic_vector(ssync_chain_max downto ssync_chain_min);
134 171 jguarin200
        --!TBXEND
135 212 jguarin200
 
136 229 jguarin200
        --signal qxyzd          : std_logic_vector(95 downto 0);
137
 
138
        --signal qxyzq          : std_logic_vector(95 downto 0);
139
 
140 228 jguarin200
        signal sq2_d            : std_logic_vector(31 downto 0);
141
        signal sq2_q            : std_logic_vector(31 downto 0);
142
        signal sq2_w            : std_logic;
143
        signal sq2_e            : std_logic;
144 219 jguarin200
 
145 229 jguarin200
        signal sqr_e            : std_logic;
146
        signal sqr_w            : std_logic;            --! Salidas de escritura y lectura en las colas de resultados.
147
        signal sqr_dx           : std_logic_vector(31 downto 0);
148
        signal sqr_dy           : std_logic_vector(31 downto 0);
149
        signal sqr_dz           : std_logic_vector(31 downto 0);
150
        signal sqr_dsc          : std_logic_vector(31 downto 0);
151
 
152 219 jguarin200
 
153
 
154 229 jguarin200
        signal sa0o                     : std_logic_vector(31 downto 0);
155
        signal sa1o                     : std_logic_vector(31 downto 0);
156
        signal sa2o                     : std_logic_vector(31 downto 0);
157
        --signal sadd32blko     : vectorblock03;        --! Salidas de los 3 sumadores.
158 163 jguarin200
 
159 229 jguarin200
        signal sp0o                     : std_logic_vector(31 downto 0);
160
        signal sp1o                     : std_logic_vector(31 downto 0);
161
        signal sp2o                     : std_logic_vector(31 downto 0);
162
        signal sp3o                     : std_logic_vector(31 downto 0);
163
        signal sp4o                     : std_logic_vector(31 downto 0);
164
        signal sp5o                     : std_logic_vector(31 downto 0);
165
        --signal sprd32blko     : vectorblock06;        --! Salidas de los 6 multiplicadores.
166
 
167
        signal sinv32o  : std_logic_vector(31 downto 0);         --! Salidas de la raiz cuadradas y el inversor.
168
        signal ssq32o   : std_logic_vector(31 downto 0);         --! Salidas de la raiz cuadradas y el inversor.
169
 
170 219 jguarin200
        --! Bloque Aritmetico de Sumadores y Multiplicadores (madd)
171
        component arithblock
172
        port (
173
 
174
                clk     : in std_logic;
175
                rst : in std_logic;
176
 
177
                sign            : in std_logic;
178 229 jguarin200
 
179
                factor0         : in std_logic_vector(31 downto 0);
180
                factor1         : in std_logic_vector(31 downto 0);
181
                factor2         : in std_logic_vector(31 downto 0);
182
                factor3         : in std_logic_vector(31 downto 0);
183
                factor4         : in std_logic_vector(31 downto 0);
184
                factor5         : in std_logic_vector(31 downto 0);
185
                factor6         : in std_logic_vector(31 downto 0);
186
                factor7         : in std_logic_vector(31 downto 0);
187
                factor8         : in std_logic_vector(31 downto 0);
188
                factor9         : in std_logic_vector(31 downto 0);
189
                factor10        : in std_logic_vector(31 downto 0);
190
                factor11        : in std_logic_vector(31 downto 0);
191
                --prd32blki     : in vectorblock06;
192 219 jguarin200
 
193 229 jguarin200
                sumando0        : in std_logic_vector(31 downto 0);
194
                sumando1        : in std_logic_vector(31 downto 0);
195
                sumando2        : in std_logic_vector(31 downto 0);
196
                sumando3        : in std_logic_vector(31 downto 0);
197
                sumando4        : in std_logic_vector(31 downto 0);
198
                sumando5        : in std_logic_vector(31 downto 0);
199
                --add32blki     : in vectorblock06;
200 219 jguarin200
 
201 229 jguarin200
                a0                      : out std_logic_vector(31 downto 0);
202
                a1                      : out std_logic_vector(31 downto 0);
203
                a2                      : out std_logic_vector(31 downto 0);
204
                --add32blko     : out vectorblock03;
205 219 jguarin200
 
206 229 jguarin200
                p0                      : out std_logic_vector(31 downto 0);
207
                p1                      : out std_logic_vector(31 downto 0);
208
                p2                      : out std_logic_vector(31 downto 0);
209
                p3                      : out std_logic_vector(31 downto 0);
210
                p4                      : out std_logic_vector(31 downto 0);
211
                p5                      : out std_logic_vector(31 downto 0);
212
                --prd32blko     : out vectorblock06;
213
 
214
                sq32o           : out std_logic_vector(31 downto 0);
215
                inv32o          : out std_logic_vector(31 downto 0)
216 219 jguarin200
 
217
        );
218
        end component;
219
 
220 123 jguarin200
begin
221 204 jguarin200
 
222 219 jguarin200
        --! Bloque Aritm&eacute;tico
223
        ap : arithblock
224
        port map (
225
                clk             => clk,
226
                rst                     => rst,
227 204 jguarin200
 
228 229 jguarin200
                sign            => dcs(0),
229 219 jguarin200
 
230 229 jguarin200
                factor0 =>sfactor0,
231
                factor1 =>sfactor1,
232
                factor2 =>sfactor2,
233
                factor3 =>sfactor3,
234
                factor4 =>sfactor4,
235
                factor5 =>sfactor5,
236
                factor6 =>sfactor6,
237
                factor7 =>sfactor7,
238
                factor8 =>sfactor8,
239
                factor9 =>sfactor9,
240
                factor10=>sfactor10,
241
                factor11=>sfactor11,
242
                --prd32blki     => sfactor,
243
 
244
                sumando0=>ssumando0,
245
                sumando1=>ssumando1,
246
                sumando2=>ssumando2,
247
                sumando3=>ssumando3,
248
                sumando4=>ssumando4,
249
                sumando5=>ssumando5,
250
                --add32blki     => ssumando,
251 219 jguarin200
 
252 229 jguarin200
                a0=>sa0o,
253
                a1=>sa1o,
254
                a2=>sa2o,
255
                --add32blko     => sadd32blko, 
256 219 jguarin200
 
257 229 jguarin200
                p0=>sp0o,
258
                p1=>sp1o,
259
                p2=>sp2o,
260
                p3=>sp3o,
261
                p4=>sp4o,
262
                p5=>sp5o,
263
                --prd32blko     => sprd32blko,
264
 
265
                sq32o=> ssq32o,
266
                inv32o=> sinv32o
267 219 jguarin200
        );
268 122 jguarin200
 
269 142 jguarin200
        --! Cadena de sincronizaci&oacute;n: 29 posiciones.
270 229 jguarin200
        pipeline_pending <= sync_chain_1 or not(sq2_e) or not(sq1_e) or not(sqr_e);
271
        empty <= sqr_e;
272 140 jguarin200
        sync_chain_proc:
273 212 jguarin200
        process(clk,rst,sync_chain_1)
274 140 jguarin200
        begin
275
                if rst=rstMasterValue then
276 228 jguarin200
                        ssync_chain(ssync_chain_max downto ssync_chain_min) <= (others => '0');
277 230 jguarin200
 
278 229 jguarin200
                elsif clk'event and clk='1' then
279 228 jguarin200
                        for i in ssync_chain_max downto ssync_chain_min+1 loop
280 142 jguarin200
                                ssync_chain(i) <= ssync_chain(i-1);
281 140 jguarin200
                        end loop;
282 228 jguarin200
                        ssync_chain(ssync_chain_min) <= sync_chain_1;
283 140 jguarin200
                end if;
284
        end process sync_chain_proc;
285 144 jguarin200
 
286 163 jguarin200
 
287 158 jguarin200
 
288
 
289 124 jguarin200
 
290 140 jguarin200
        --! El siguiente c&oacute;digo sirve para conectar arreglos a se&ntilde;ales std_logic_1164, son abstracciones de c&oacute;digo tambi&eacute;n, sin embargo se realizan a trav&eacute;s de registros. 
291
        register_products_outputs:
292
        process (clk)
293
        begin
294
                if clk'event and clk='1' then
295 229 jguarin200
                        sp0 <= sp0o;
296
                        sp1 <= sp1o;
297
                        sp2 <= sp2o;
298
                        sp3 <= sp3o;
299
                        sp4 <= sp4o;
300
                        sp5 <= sp5o;
301
                        sa0 <= sa0o;
302
                        sa1 <= sa1o;
303
                        sa2 <= sa2o;
304
                        sinv32 <= sinv32o;
305
                        ssq32 <= ssq32o;
306 140 jguarin200
                end if;
307
        end process;
308 148 jguarin200
 
309 196 jguarin200
        --! Decodificaci&oacute;n del Datapath.
310 229 jguarin200
        datapathproc:process(dcs,ax,bx,ay,by,az,bz,sinv32,sp0,sp1,sp2,sp3,sp4,sp5,sa0,sa1,sa2,sq0_q,sqx_q,sqy_q,sqz_q,ssync_chain,ssq32,sq2_q)
311 196 jguarin200
        begin
312 229 jguarin200
 
313
                case dcs is
314
                        when "011"  =>
315
 
316
                                sq2_w <= '0';
317
                                sq2_d <= ssq32;
318
 
319
                                sfactor0 <= ay;
320
                                sfactor1 <= bz;
321
                                sfactor2 <= az;
322
                                sfactor3 <= by;
323
                                sfactor4 <= az;
324
                                sfactor5 <= bx;
325
                                sfactor6 <= ax;
326
                                sfactor7 <= bz;
327
                                sfactor8 <= ax;
328
                                sfactor9 <= by;
329
                                sfactor10 <= ay;
330
                                sfactor11 <= bx;
331
 
332
                                ssumando0 <= sp0;
333
                                ssumando1 <= sp1;
334
                                ssumando2 <= sp2;
335
                                ssumando3 <= sp3;
336
                                ssumando4 <= sp4;
337
                                ssumando5 <= sp5;
338
 
339
                                sqr_dx <= sa0;
340
                                sqr_dy <= sa1;
341
                                sqr_dz <= sa2;
342
 
343 230 jguarin200
                                sqr_w <= ssync_chain(13+adder2_delay);
344 229 jguarin200
 
345
                        when"000"|"001" =>
346
 
347
                                sq2_w <= '0';
348
                                sq2_d <= ssq32;
349
 
350
                                sfactor0 <= ay;
351
                                sfactor1 <= bz;
352
                                sfactor2 <= az;
353
                                sfactor3 <= by;
354
                                sfactor4 <= az;
355
                                sfactor5 <= bx;
356
                                sfactor6 <= ax;
357
                                sfactor7 <= bz;
358
                                sfactor8 <= ax;
359
                                sfactor9 <= by;
360
                                sfactor10 <= ay;
361
                                sfactor11 <= bx;
362
 
363
 
364
                                ssumando0 <= ax;
365
                                ssumando1 <= bx;
366
                                ssumando2 <= ay;
367
                                ssumando3 <= by;
368
                                ssumando4 <= az;
369
                                ssumando5 <= bz;
370
 
371
                                sqr_dx <= sa0;
372
                                sqr_dy <= sa1;
373
                                sqr_dz <= sa2;
374
 
375 230 jguarin200
                                sqr_w <= ssync_chain(9+adder2_delay);
376 229 jguarin200
 
377
                        when"110" |"100" =>
378
 
379
 
380
 
381
                                sfactor0 <= ax;
382
                                sfactor1 <= bx;
383
                                sfactor2 <= ay;
384
                                sfactor3 <= by;
385
                                sfactor4 <= az;
386
                                sfactor5 <= bz;
387
 
388
                                sfactor6 <= sinv32;
389
                                sfactor7 <= sqx_q;
390
                                sfactor8 <= sinv32;
391
                                sfactor9 <= sqy_q;
392
                                sfactor10 <= sinv32;
393
                                sfactor11 <= sqz_q;
394
 
395
 
396
                                ssumando0 <= sp0;
397
                                ssumando1 <= sp1;
398
                                ssumando2 <= sa0;
399
                                ssumando3 <= sq0_q;
400
                                ssumando4 <= az;
401
                                ssumando5 <= bz;
402
 
403
                                if dcs(1)='1' then
404
                                        sq2_d <= ssq32;
405
                                        sq2_w <= ssync_chain(22);
406
                                else
407
                                        sq2_d <= sa1;
408
                                        sq2_w <= ssync_chain(21);
409
                                end if;
410
 
411
                                sqr_dx <= sp3;
412
                                sqr_dy <= sp4;
413
                                sqr_dz <= sp5;
414
 
415
                                sqr_w <= ssync_chain(27);
416
 
417
                        when others =>
418
 
419
                                sq2_w <= '0';
420
                                sq2_d <= ssq32;
421
 
422
                                sfactor0 <= ax;
423
                                sfactor1 <= bx;
424
                                sfactor2 <= ay;
425
                                sfactor3 <= by;
426
                                sfactor4 <= az;
427
                                sfactor5 <= bz;
428
 
429
                                sfactor6 <= ax;
430
                                sfactor7 <= bx;
431
                                sfactor8 <= ay;
432
                                sfactor9 <= by;
433
                                sfactor10 <= az;
434
                                sfactor11 <= bz;
435
 
436
                                ssumando0 <= sp0;
437
                                ssumando1 <= sp1;
438
                                ssumando2 <= sa0;
439
                                ssumando3 <= sq0_q;
440
                                ssumando4 <= az;
441
                                ssumando5 <= bz;
442
 
443
                                sqr_dx <= sp3;
444
                                sqr_dy <= sp4;
445
                                sqr_dz <= sp5;
446
 
447
                                sqr_w <= ssync_chain(5);
448
 
449
                end case;
450
 
451
 
452
 
453
 
454 123 jguarin200
        end process;
455
 
456 204 jguarin200
        --! Colas internas de producto punto, ubicada en el pipe line aritm&eacute;co. Paralelo a los sumadores a0 y a2.  
457
        q0 : scfifo --! Debe ir registrada la salida.
458
        generic map (
459 212 jguarin200
                allow_rwcycle_when_full => "ON",
460 229 jguarin200
                lpm_widthu                              => 4,
461
                lpm_numwords                    => 16,
462 204 jguarin200
                lpm_showahead                   => "ON",
463
                lpm_width                               => 32,
464
                overflow_checking               => "ON",
465
                underflow_checking              => "ON",
466 228 jguarin200
                use_eab                                 => "ON"
467 204 jguarin200
        )
468
        port    map (
469 212 jguarin200
                sclr            => '0',
470
                clock           => clk,
471 228 jguarin200
                rdreq           => ssync_chain(13),
472 235 jguarin200
                wrreq           => ssync_chain(5+adder2_delay),
473 229 jguarin200
                data            => sp2,
474
                q                       => sq0_q
475 204 jguarin200
        );
476 212 jguarin200
        --! Colas internas de producto punto, ubicada en el pipe line aritm&eacute;co. Paralelo a los sumadores a0 y a2.  
477 228 jguarin200
        q2 : scfifo --! Debe ir registrada la salida.
478 212 jguarin200
        generic map (
479
                allow_rwcycle_when_full => "ON",
480 229 jguarin200
                lpm_widthu                              => 4,
481
                lpm_numwords                    => 16,
482 212 jguarin200
                lpm_showahead                   => "ON",
483
                lpm_type                                => "SCIFIFO",
484
                lpm_width                               => 32,
485
                overflow_checking               => "ON",
486
                underflow_checking              => "ON",
487 228 jguarin200
                use_eab                                 => "ON"
488 212 jguarin200
        )
489
        port map (
490 228 jguarin200
                rdreq           => ssync_chain(27),
491 212 jguarin200
                sclr            => '0',
492
                clock           => clk,
493 228 jguarin200
                empty           => sq2_e,
494 229 jguarin200
                q                       => sqr_dsc,
495 228 jguarin200
                wrreq           => sq2_w,
496
                data            => sq2_d
497 212 jguarin200
        );
498 123 jguarin200
 
499 204 jguarin200
        --! Cola interna de normalizaci&oacute;n de vectores, ubicada entre el pipeline aritm&eacute;tico
500 229 jguarin200
        qx : scfifo
501 204 jguarin200
        generic map (
502 212 jguarin200
                allow_rwcycle_when_full => "ON",
503
                lpm_widthu                              => 5,
504 204 jguarin200
                lpm_numwords                    => 32,
505 212 jguarin200
                lpm_showahead                   => "ON",
506 229 jguarin200
                lpm_width                               => 32,
507 204 jguarin200
                overflow_checking               => "ON",
508
                underflow_checking              => "ON",
509
                use_eab                                 => "ON"
510
        )
511
        port    map (
512
                aclr            => '0',
513
                clock           => clk,
514 229 jguarin200
                empty           => sq1_e,
515 228 jguarin200
                rdreq           => ssync_chain(23),
516 212 jguarin200
                wrreq           => sync_chain_1,
517 229 jguarin200
                data            => ax,
518
                q                       => sqx_q
519 204 jguarin200
        );
520 229 jguarin200
        qy : scfifo
521
        generic map (
522
                allow_rwcycle_when_full => "ON",
523
                lpm_widthu                              => 5,
524
                lpm_numwords                    => 32,
525
                lpm_showahead                   => "ON",
526
                lpm_width                               => 32,
527
                overflow_checking               => "ON",
528
                underflow_checking              => "ON",
529
                use_eab                                 => "ON"
530
        )
531
        port    map (
532
                aclr            => '0',
533
                clock           => clk,
534
                rdreq           => ssync_chain(23),
535
                wrreq           => sync_chain_1,
536
                data            => ay,
537
                q                       => sqy_q
538
        );
539
        qz : scfifo
540
        generic map (
541
                allow_rwcycle_when_full => "ON",
542
                lpm_widthu                              => 5,
543
                lpm_numwords                    => 32,
544
                lpm_showahead                   => "ON",
545
                lpm_width                               => 32,
546
                overflow_checking               => "ON",
547
                underflow_checking              => "ON",
548
                use_eab                                 => "ON"
549
        )
550
        port    map (
551
                aclr            => '0',
552
                clock           => clk,
553
                rdreq           => ssync_chain(23),
554
                wrreq           => sync_chain_1,
555
                data            => az,
556
                q                       => sqz_q
557
        );
558
--!***********************************************************************************************************
559
--!Q RESULT
560
--!***********************************************************************************************************
561 196 jguarin200
 
562 229 jguarin200
        --Colas de resultados
563
        rx : scfifo
564
        generic map (
565
                allow_rwcycle_when_full => "ON",
566
                lpm_widthu                              => 5,
567
                lpm_numwords                    => 32,
568
                lpm_showahead                   => "ON",
569
                lpm_width                               => 32,
570
                overflow_checking               => "ON",
571
                underflow_checking              => "ON",
572
                use_eab                                 => "ON"
573
        )
574
        port    map (
575
                aclr            => '0',
576
                clock           => clk,
577
                empty           => sqr_e,
578
                rdreq           => ack,
579
                wrreq           => sqr_w,
580
                data            => sqr_dx,
581
                q                       => vx
582
        );
583
        ry : scfifo
584
        generic map (
585
                allow_rwcycle_when_full => "ON",
586
                lpm_widthu                              => 5,
587
                lpm_numwords                    => 32,
588
                lpm_showahead                   => "ON",
589
                lpm_width                               => 32,
590
                overflow_checking               => "ON",
591
                underflow_checking              => "ON",
592
                use_eab                                 => "ON"
593
        )
594
        port    map (
595
                aclr            => '0',
596
                clock           => clk,
597
                rdreq           => ack,
598
                wrreq           => sqr_w,
599
                data            => sqr_dy,
600
                q                       => vy
601
        );
602
        rz : scfifo
603
        generic map (
604
                allow_rwcycle_when_full => "ON",
605
                lpm_widthu                              => 5,
606
                lpm_numwords                    => 32,
607
                lpm_showahead                   => "ON",
608
                lpm_width                               => 32,
609
                overflow_checking               => "ON",
610
                underflow_checking              => "ON",
611
                use_eab                                 => "ON"
612
        )
613
        port    map (
614
                aclr            => '0',
615
                clock           => clk,
616
                rdreq           => ack,
617
                wrreq           => sqr_w,
618
                data            => sqr_dz,
619
                q                       => vz
620
        );
621
        rsc : scfifo
622
        generic map (
623
                allow_rwcycle_when_full => "ON",
624
                lpm_widthu                              => 5,
625
                lpm_numwords                    => 32,
626
                lpm_showahead                   => "ON",
627
                lpm_width                               => 32,
628
                overflow_checking               => "ON",
629
                underflow_checking              => "ON",
630
                use_eab                                 => "ON"
631
        )
632
        port    map (
633
                aclr            => '0',
634
                clock           => clk,
635
                rdreq           => ack,
636
                wrreq           => sqr_w,
637
                data            => sqr_dsc,
638
                q                       => sc
639
        );
640 204 jguarin200
 
641
 
642 153 jguarin200
end architecture;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.