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

Subversion Repositories raytrac

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

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 228 jguarin200
 
74
 
75 161 jguarin200
        --!TBXSTART:FACTORS_N_ADDENDS
76 229 jguarin200
        signal sfactor0         : std_logic_vector(31 downto 0);
77
        signal sfactor1         : std_logic_vector(31 downto 0);
78
        signal sfactor2         : std_logic_vector(31 downto 0);
79
        signal sfactor3         : std_logic_vector(31 downto 0);
80
        signal sfactor4         : std_logic_vector(31 downto 0);
81
        signal sfactor5         : std_logic_vector(31 downto 0);
82
        signal sfactor6         : std_logic_vector(31 downto 0);
83
        signal sfactor7         : std_logic_vector(31 downto 0);
84
        signal sfactor8         : std_logic_vector(31 downto 0);
85
        signal sfactor9         : std_logic_vector(31 downto 0);
86
        signal sfactor10        : std_logic_vector(31 downto 0);
87
        signal sfactor11        : std_logic_vector(31 downto 0);
88
        --signal sfactor                : vectorblock12;
89
 
90
        signal ssumando0        : std_logic_vector(31 downto 0);
91
        signal ssumando1        : std_logic_vector(31 downto 0);
92
        signal ssumando2        : std_logic_vector(31 downto 0);
93
        signal ssumando3        : std_logic_vector(31 downto 0);
94
        signal ssumando4        : std_logic_vector(31 downto 0);
95
        signal ssumando5        : std_logic_vector(31 downto 0);
96
        --signal ssumando               : vectorblock06;
97
 
98
        signal sq0_q            : std_logic_vector(31 downto 0);
99 161 jguarin200
        --!TBXEND
100 163 jguarin200
 
101
 
102
        --!TBXSTART:ARITHMETIC_RESULTS
103 229 jguarin200
 
104
        signal sp0                      : std_logic_vector(31 downto 0);
105
        signal sp1                      : std_logic_vector(31 downto 0);
106
        signal sp2                      : std_logic_vector(31 downto 0);
107
        signal sp3                      : std_logic_vector(31 downto 0);
108
        signal sp4                      : std_logic_vector(31 downto 0);
109
        signal sp5                      : std_logic_vector(31 downto 0);
110
        --signal sprd32blk      : vectorblock06;
111
 
112
        signal sa0                      : std_logic_vector(31 downto 0);
113
        signal sa1                      : std_logic_vector(31 downto 0);
114
        signal sa2                      : std_logic_vector(31 downto 0);
115 230 jguarin200
        constant adder2_delay: integer := 2;
116 229 jguarin200
 
117
        --signal sadd32blk      : vectorblock03;
118
 
119
        signal ssq32    : std_logic_vector(31 downto 0);
120
        signal sinv32   : std_logic_vector(31 downto 0);
121
 
122
        signal sqx_q            : std_logic_vector(31 downto 0);
123
        signal sqy_q            : std_logic_vector(31 downto 0);
124
        signal sqz_q            : std_logic_vector(31 downto 0);
125
        --signal sqxyz_q                : vectorblock03;
126
 
127
        signal sq1_e            : std_logic;
128 163 jguarin200
        --!TBXEND
129
 
130 160 jguarin200
 
131
        --!TBXSTART:SYNC_CHAIN
132 228 jguarin200
        signal ssync_chain      : std_logic_vector(ssync_chain_max downto ssync_chain_min);
133 171 jguarin200
        --!TBXEND
134 212 jguarin200
 
135 229 jguarin200
        --signal qxyzd          : std_logic_vector(95 downto 0);
136
 
137
        --signal qxyzq          : std_logic_vector(95 downto 0);
138
 
139 228 jguarin200
        signal sq2_d            : std_logic_vector(31 downto 0);
140
        signal sq2_q            : std_logic_vector(31 downto 0);
141
        signal sq2_w            : std_logic;
142
        signal sq2_e            : std_logic;
143 219 jguarin200
 
144 229 jguarin200
        signal sqr_e            : std_logic;
145
        signal sqr_w            : std_logic;            --! Salidas de escritura y lectura en las colas de resultados.
146
        signal sqr_dx           : std_logic_vector(31 downto 0);
147
        signal sqr_dy           : std_logic_vector(31 downto 0);
148
        signal sqr_dz           : std_logic_vector(31 downto 0);
149
        signal sqr_dsc          : std_logic_vector(31 downto 0);
150
 
151 219 jguarin200
 
152
 
153 229 jguarin200
        signal sa0o                     : std_logic_vector(31 downto 0);
154
        signal sa1o                     : std_logic_vector(31 downto 0);
155
        signal sa2o                     : std_logic_vector(31 downto 0);
156
        --signal sadd32blko     : vectorblock03;        --! Salidas de los 3 sumadores.
157 163 jguarin200
 
158 229 jguarin200
        signal sp0o                     : std_logic_vector(31 downto 0);
159
        signal sp1o                     : std_logic_vector(31 downto 0);
160
        signal sp2o                     : std_logic_vector(31 downto 0);
161
        signal sp3o                     : std_logic_vector(31 downto 0);
162
        signal sp4o                     : std_logic_vector(31 downto 0);
163
        signal sp5o                     : std_logic_vector(31 downto 0);
164
        --signal sprd32blko     : vectorblock06;        --! Salidas de los 6 multiplicadores.
165
 
166
        signal sinv32o  : std_logic_vector(31 downto 0);         --! Salidas de la raiz cuadradas y el inversor.
167
        signal ssq32o   : std_logic_vector(31 downto 0);         --! Salidas de la raiz cuadradas y el inversor.
168
 
169 219 jguarin200
        --! Bloque Aritmetico de Sumadores y Multiplicadores (madd)
170
        component arithblock
171
        port (
172
 
173
                clk     : in std_logic;
174
                rst : in std_logic;
175
 
176
                sign            : in std_logic;
177 229 jguarin200
 
178
                factor0         : in std_logic_vector(31 downto 0);
179
                factor1         : in std_logic_vector(31 downto 0);
180
                factor2         : in std_logic_vector(31 downto 0);
181
                factor3         : in std_logic_vector(31 downto 0);
182
                factor4         : in std_logic_vector(31 downto 0);
183
                factor5         : in std_logic_vector(31 downto 0);
184
                factor6         : in std_logic_vector(31 downto 0);
185
                factor7         : in std_logic_vector(31 downto 0);
186
                factor8         : in std_logic_vector(31 downto 0);
187
                factor9         : in std_logic_vector(31 downto 0);
188
                factor10        : in std_logic_vector(31 downto 0);
189
                factor11        : in std_logic_vector(31 downto 0);
190
                --prd32blki     : in vectorblock06;
191 219 jguarin200
 
192 229 jguarin200
                sumando0        : in std_logic_vector(31 downto 0);
193
                sumando1        : in std_logic_vector(31 downto 0);
194
                sumando2        : in std_logic_vector(31 downto 0);
195
                sumando3        : in std_logic_vector(31 downto 0);
196
                sumando4        : in std_logic_vector(31 downto 0);
197
                sumando5        : in std_logic_vector(31 downto 0);
198
                --add32blki     : in vectorblock06;
199 219 jguarin200
 
200 229 jguarin200
                a0                      : out std_logic_vector(31 downto 0);
201
                a1                      : out std_logic_vector(31 downto 0);
202
                a2                      : out std_logic_vector(31 downto 0);
203
                --add32blko     : out vectorblock03;
204 219 jguarin200
 
205 229 jguarin200
                p0                      : out std_logic_vector(31 downto 0);
206
                p1                      : out std_logic_vector(31 downto 0);
207
                p2                      : out std_logic_vector(31 downto 0);
208
                p3                      : out std_logic_vector(31 downto 0);
209
                p4                      : out std_logic_vector(31 downto 0);
210
                p5                      : out std_logic_vector(31 downto 0);
211
                --prd32blko     : out vectorblock06;
212
 
213
                sq32o           : out std_logic_vector(31 downto 0);
214
                inv32o          : out std_logic_vector(31 downto 0)
215 219 jguarin200
 
216
        );
217
        end component;
218
 
219 123 jguarin200
begin
220 204 jguarin200
 
221 219 jguarin200
        --! Bloque Aritm&eacute;tico
222
        ap : arithblock
223
        port map (
224
                clk             => clk,
225
                rst                     => rst,
226 204 jguarin200
 
227 229 jguarin200
                sign            => dcs(0),
228 219 jguarin200
 
229 229 jguarin200
                factor0 =>sfactor0,
230
                factor1 =>sfactor1,
231
                factor2 =>sfactor2,
232
                factor3 =>sfactor3,
233
                factor4 =>sfactor4,
234
                factor5 =>sfactor5,
235
                factor6 =>sfactor6,
236
                factor7 =>sfactor7,
237
                factor8 =>sfactor8,
238
                factor9 =>sfactor9,
239
                factor10=>sfactor10,
240
                factor11=>sfactor11,
241
                --prd32blki     => sfactor,
242
 
243
                sumando0=>ssumando0,
244
                sumando1=>ssumando1,
245
                sumando2=>ssumando2,
246
                sumando3=>ssumando3,
247
                sumando4=>ssumando4,
248
                sumando5=>ssumando5,
249
                --add32blki     => ssumando,
250 219 jguarin200
 
251 229 jguarin200
                a0=>sa0o,
252
                a1=>sa1o,
253
                a2=>sa2o,
254
                --add32blko     => sadd32blko, 
255 219 jguarin200
 
256 229 jguarin200
                p0=>sp0o,
257
                p1=>sp1o,
258
                p2=>sp2o,
259
                p3=>sp3o,
260
                p4=>sp4o,
261
                p5=>sp5o,
262
                --prd32blko     => sprd32blko,
263
 
264
                sq32o=> ssq32o,
265
                inv32o=> sinv32o
266 219 jguarin200
        );
267 122 jguarin200
 
268 142 jguarin200
        --! Cadena de sincronizaci&oacute;n: 29 posiciones.
269 229 jguarin200
        pipeline_pending <= sync_chain_1 or not(sq2_e) or not(sq1_e) or not(sqr_e);
270
        empty <= sqr_e;
271 140 jguarin200
        sync_chain_proc:
272 212 jguarin200
        process(clk,rst,sync_chain_1)
273 140 jguarin200
        begin
274
                if rst=rstMasterValue then
275 228 jguarin200
                        ssync_chain(ssync_chain_max downto ssync_chain_min) <= (others => '0');
276 230 jguarin200
 
277 229 jguarin200
                elsif clk'event and clk='1' then
278 228 jguarin200
                        for i in ssync_chain_max downto ssync_chain_min+1 loop
279 142 jguarin200
                                ssync_chain(i) <= ssync_chain(i-1);
280 140 jguarin200
                        end loop;
281 228 jguarin200
                        ssync_chain(ssync_chain_min) <= sync_chain_1;
282 140 jguarin200
                end if;
283
        end process sync_chain_proc;
284 144 jguarin200
 
285 163 jguarin200
 
286 158 jguarin200
 
287
 
288 124 jguarin200
 
289 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. 
290
        register_products_outputs:
291
        process (clk)
292
        begin
293
                if clk'event and clk='1' then
294 229 jguarin200
                        sp0 <= sp0o;
295
                        sp1 <= sp1o;
296
                        sp2 <= sp2o;
297
                        sp3 <= sp3o;
298
                        sp4 <= sp4o;
299
                        sp5 <= sp5o;
300
                        sa0 <= sa0o;
301
                        sa1 <= sa1o;
302
                        sa2 <= sa2o;
303
                        sinv32 <= sinv32o;
304
                        ssq32 <= ssq32o;
305 140 jguarin200
                end if;
306
        end process;
307 148 jguarin200
 
308 196 jguarin200
        --! Decodificaci&oacute;n del Datapath.
309 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)
310 196 jguarin200
        begin
311 229 jguarin200
 
312
                case dcs is
313
                        when "011"  =>
314
 
315
                                sq2_w <= '0';
316
                                sq2_d <= ssq32;
317
 
318
                                sfactor0 <= ay;
319
                                sfactor1 <= bz;
320
                                sfactor2 <= az;
321
                                sfactor3 <= by;
322
                                sfactor4 <= az;
323
                                sfactor5 <= bx;
324
                                sfactor6 <= ax;
325
                                sfactor7 <= bz;
326
                                sfactor8 <= ax;
327
                                sfactor9 <= by;
328
                                sfactor10 <= ay;
329
                                sfactor11 <= bx;
330
 
331
                                ssumando0 <= sp0;
332
                                ssumando1 <= sp1;
333
                                ssumando2 <= sp2;
334
                                ssumando3 <= sp3;
335
                                ssumando4 <= sp4;
336
                                ssumando5 <= sp5;
337
 
338
                                sqr_dx <= sa0;
339
                                sqr_dy <= sa1;
340
                                sqr_dz <= sa2;
341
 
342 230 jguarin200
                                sqr_w <= ssync_chain(13+adder2_delay);
343 229 jguarin200
 
344
                        when"000"|"001" =>
345
 
346
                                sq2_w <= '0';
347
                                sq2_d <= ssq32;
348
 
349
                                sfactor0 <= ay;
350
                                sfactor1 <= bz;
351
                                sfactor2 <= az;
352
                                sfactor3 <= by;
353
                                sfactor4 <= az;
354
                                sfactor5 <= bx;
355
                                sfactor6 <= ax;
356
                                sfactor7 <= bz;
357
                                sfactor8 <= ax;
358
                                sfactor9 <= by;
359
                                sfactor10 <= ay;
360
                                sfactor11 <= bx;
361
 
362
 
363
                                ssumando0 <= ax;
364
                                ssumando1 <= bx;
365
                                ssumando2 <= ay;
366
                                ssumando3 <= by;
367
                                ssumando4 <= az;
368
                                ssumando5 <= bz;
369
 
370
                                sqr_dx <= sa0;
371
                                sqr_dy <= sa1;
372
                                sqr_dz <= sa2;
373
 
374 230 jguarin200
                                sqr_w <= ssync_chain(9+adder2_delay);
375 229 jguarin200
 
376
                        when"110" |"100" =>
377
 
378
 
379
 
380
                                sfactor0 <= ax;
381
                                sfactor1 <= bx;
382
                                sfactor2 <= ay;
383
                                sfactor3 <= by;
384
                                sfactor4 <= az;
385
                                sfactor5 <= bz;
386
 
387
                                sfactor6 <= sinv32;
388
                                sfactor7 <= sqx_q;
389
                                sfactor8 <= sinv32;
390
                                sfactor9 <= sqy_q;
391
                                sfactor10 <= sinv32;
392
                                sfactor11 <= sqz_q;
393
 
394
 
395
                                ssumando0 <= sp0;
396
                                ssumando1 <= sp1;
397
                                ssumando2 <= sa0;
398
                                ssumando3 <= sq0_q;
399
                                ssumando4 <= az;
400
                                ssumando5 <= bz;
401
 
402
                                if dcs(1)='1' then
403
                                        sq2_d <= ssq32;
404
                                        sq2_w <= ssync_chain(22);
405
                                else
406
                                        sq2_d <= sa1;
407
                                        sq2_w <= ssync_chain(21);
408
                                end if;
409
 
410
                                sqr_dx <= sp3;
411
                                sqr_dy <= sp4;
412
                                sqr_dz <= sp5;
413
 
414
                                sqr_w <= ssync_chain(27);
415
 
416
                        when others =>
417
 
418
                                sq2_w <= '0';
419
                                sq2_d <= ssq32;
420
 
421
                                sfactor0 <= ax;
422
                                sfactor1 <= bx;
423
                                sfactor2 <= ay;
424
                                sfactor3 <= by;
425
                                sfactor4 <= az;
426
                                sfactor5 <= bz;
427
 
428
                                sfactor6 <= ax;
429
                                sfactor7 <= bx;
430
                                sfactor8 <= ay;
431
                                sfactor9 <= by;
432
                                sfactor10 <= az;
433
                                sfactor11 <= bz;
434
 
435
                                ssumando0 <= sp0;
436
                                ssumando1 <= sp1;
437
                                ssumando2 <= sa0;
438
                                ssumando3 <= sq0_q;
439
                                ssumando4 <= az;
440
                                ssumando5 <= bz;
441
 
442
                                sqr_dx <= sp3;
443
                                sqr_dy <= sp4;
444
                                sqr_dz <= sp5;
445
 
446
                                sqr_w <= ssync_chain(5);
447
 
448
                end case;
449
 
450
 
451
 
452
 
453 123 jguarin200
        end process;
454
 
455 204 jguarin200
        --! Colas internas de producto punto, ubicada en el pipe line aritm&eacute;co. Paralelo a los sumadores a0 y a2.  
456
        q0 : scfifo --! Debe ir registrada la salida.
457
        generic map (
458 212 jguarin200
                allow_rwcycle_when_full => "ON",
459 229 jguarin200
                lpm_widthu                              => 4,
460
                lpm_numwords                    => 16,
461 204 jguarin200
                lpm_showahead                   => "ON",
462
                lpm_width                               => 32,
463
                overflow_checking               => "ON",
464
                underflow_checking              => "ON",
465 228 jguarin200
                use_eab                                 => "ON"
466 204 jguarin200
        )
467
        port    map (
468 212 jguarin200
                sclr            => '0',
469
                clock           => clk,
470 228 jguarin200
                rdreq           => ssync_chain(13),
471 204 jguarin200
                wrreq           => ssync_chain(5),
472 229 jguarin200
                data            => sp2,
473
                q                       => sq0_q
474 204 jguarin200
        );
475 212 jguarin200
        --! Colas internas de producto punto, ubicada en el pipe line aritm&eacute;co. Paralelo a los sumadores a0 y a2.  
476 228 jguarin200
        q2 : scfifo --! Debe ir registrada la salida.
477 212 jguarin200
        generic map (
478
                allow_rwcycle_when_full => "ON",
479 229 jguarin200
                lpm_widthu                              => 4,
480
                lpm_numwords                    => 16,
481 212 jguarin200
                lpm_showahead                   => "ON",
482
                lpm_type                                => "SCIFIFO",
483
                lpm_width                               => 32,
484
                overflow_checking               => "ON",
485
                underflow_checking              => "ON",
486 228 jguarin200
                use_eab                                 => "ON"
487 212 jguarin200
        )
488
        port map (
489 228 jguarin200
                rdreq           => ssync_chain(27),
490 212 jguarin200
                sclr            => '0',
491
                clock           => clk,
492 228 jguarin200
                empty           => sq2_e,
493 229 jguarin200
                q                       => sqr_dsc,
494 228 jguarin200
                wrreq           => sq2_w,
495
                data            => sq2_d
496 212 jguarin200
        );
497 123 jguarin200
 
498 204 jguarin200
        --! Cola interna de normalizaci&oacute;n de vectores, ubicada entre el pipeline aritm&eacute;tico
499 229 jguarin200
        qx : scfifo
500 204 jguarin200
        generic map (
501 212 jguarin200
                allow_rwcycle_when_full => "ON",
502
                lpm_widthu                              => 5,
503 204 jguarin200
                lpm_numwords                    => 32,
504 212 jguarin200
                lpm_showahead                   => "ON",
505 229 jguarin200
                lpm_width                               => 32,
506 204 jguarin200
                overflow_checking               => "ON",
507
                underflow_checking              => "ON",
508
                use_eab                                 => "ON"
509
        )
510
        port    map (
511
                aclr            => '0',
512
                clock           => clk,
513 229 jguarin200
                empty           => sq1_e,
514 228 jguarin200
                rdreq           => ssync_chain(23),
515 212 jguarin200
                wrreq           => sync_chain_1,
516 229 jguarin200
                data            => ax,
517
                q                       => sqx_q
518 204 jguarin200
        );
519 229 jguarin200
        qy : scfifo
520
        generic map (
521
                allow_rwcycle_when_full => "ON",
522
                lpm_widthu                              => 5,
523
                lpm_numwords                    => 32,
524
                lpm_showahead                   => "ON",
525
                lpm_width                               => 32,
526
                overflow_checking               => "ON",
527
                underflow_checking              => "ON",
528
                use_eab                                 => "ON"
529
        )
530
        port    map (
531
                aclr            => '0',
532
                clock           => clk,
533
                rdreq           => ssync_chain(23),
534
                wrreq           => sync_chain_1,
535
                data            => ay,
536
                q                       => sqy_q
537
        );
538
        qz : scfifo
539
        generic map (
540
                allow_rwcycle_when_full => "ON",
541
                lpm_widthu                              => 5,
542
                lpm_numwords                    => 32,
543
                lpm_showahead                   => "ON",
544
                lpm_width                               => 32,
545
                overflow_checking               => "ON",
546
                underflow_checking              => "ON",
547
                use_eab                                 => "ON"
548
        )
549
        port    map (
550
                aclr            => '0',
551
                clock           => clk,
552
                rdreq           => ssync_chain(23),
553
                wrreq           => sync_chain_1,
554
                data            => az,
555
                q                       => sqz_q
556
        );
557
--!***********************************************************************************************************
558
--!Q RESULT
559
--!***********************************************************************************************************
560 196 jguarin200
 
561 229 jguarin200
        --Colas de resultados
562
        rx : scfifo
563
        generic map (
564
                allow_rwcycle_when_full => "ON",
565
                lpm_widthu                              => 5,
566
                lpm_numwords                    => 32,
567
                lpm_showahead                   => "ON",
568
                lpm_width                               => 32,
569
                overflow_checking               => "ON",
570
                underflow_checking              => "ON",
571
                use_eab                                 => "ON"
572
        )
573
        port    map (
574
                aclr            => '0',
575
                clock           => clk,
576
                empty           => sqr_e,
577
                rdreq           => ack,
578
                wrreq           => sqr_w,
579
                data            => sqr_dx,
580
                q                       => vx
581
        );
582
        ry : scfifo
583
        generic map (
584
                allow_rwcycle_when_full => "ON",
585
                lpm_widthu                              => 5,
586
                lpm_numwords                    => 32,
587
                lpm_showahead                   => "ON",
588
                lpm_width                               => 32,
589
                overflow_checking               => "ON",
590
                underflow_checking              => "ON",
591
                use_eab                                 => "ON"
592
        )
593
        port    map (
594
                aclr            => '0',
595
                clock           => clk,
596
                rdreq           => ack,
597
                wrreq           => sqr_w,
598
                data            => sqr_dy,
599
                q                       => vy
600
        );
601
        rz : scfifo
602
        generic map (
603
                allow_rwcycle_when_full => "ON",
604
                lpm_widthu                              => 5,
605
                lpm_numwords                    => 32,
606
                lpm_showahead                   => "ON",
607
                lpm_width                               => 32,
608
                overflow_checking               => "ON",
609
                underflow_checking              => "ON",
610
                use_eab                                 => "ON"
611
        )
612
        port    map (
613
                aclr            => '0',
614
                clock           => clk,
615
                rdreq           => ack,
616
                wrreq           => sqr_w,
617
                data            => sqr_dz,
618
                q                       => vz
619
        );
620
        rsc : scfifo
621
        generic map (
622
                allow_rwcycle_when_full => "ON",
623
                lpm_widthu                              => 5,
624
                lpm_numwords                    => 32,
625
                lpm_showahead                   => "ON",
626
                lpm_width                               => 32,
627
                overflow_checking               => "ON",
628
                underflow_checking              => "ON",
629
                use_eab                                 => "ON"
630
        )
631
        port    map (
632
                aclr            => '0',
633
                clock           => clk,
634
                rdreq           => ack,
635
                wrreq           => sqr_w,
636
                data            => sqr_dsc,
637
                q                       => sc
638
        );
639 204 jguarin200
 
640
 
641 153 jguarin200
end architecture;

powered by: WebSVN 2.1.0

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