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

Subversion Repositories fpuvhdl

[/] [fpuvhdl/] [trunk/] [fpuvhdl/] [adder/] [fpadd_pipeline.vhd] - Blame information for rev 3

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

Line No. Rev Author Line
1 3 gmarcus
-- VHDL Entity HAVOC.FPadd.symbol
2
--
3
-- Created by
4
-- Guillermo Marcus, gmarcus@ieee.org
5
-- using Mentor Graphics FPGA Advantage tools.
6
--
7
-- Visit "http://fpga.mty.itesm.mx" for more info.
8
--
9
-- 2003-2004. V1.0
10
--
11
 
12
LIBRARY ieee;
13
USE ieee.std_logic_1164.all;
14
USE ieee.std_logic_arith.all;
15
 
16
ENTITY FPadd IS
17
   PORT(
18
      ADD_SUB : IN     std_logic;
19
      FP_A    : IN     std_logic_vector (31 DOWNTO 0);
20
      FP_B    : IN     std_logic_vector (31 DOWNTO 0);
21
      clk     : IN     std_logic;
22
      FP_Z    : OUT    std_logic_vector (31 DOWNTO 0)
23
   );
24
 
25
-- Declarations
26
 
27
END FPadd ;
28
 
29
--
30
-- VHDL Architecture HAVOC.FPadd.pipeline
31
--
32
-- Created by
33
-- Guillermo Marcus, gmarcus@ieee.org
34
-- using Mentor Graphics FPGA Advantage tools.
35
--
36
-- Visit "http://fpga.mty.itesm.mx" for more info.
37
--
38
-- Copyright 2003-2004. V1.0
39
--
40
 
41
 
42
LIBRARY ieee;
43
USE ieee.std_logic_1164.all;
44
USE ieee.std_logic_arith.all;
45
 
46
LIBRARY HAVOC;
47
 
48
ARCHITECTURE pipeline OF FPadd IS
49
 
50
   -- Architecture declarations
51
 
52
   -- Internal signal declarations
53
   SIGNAL ADD_SUB_out      : std_logic;
54
   SIGNAL A_EXP            : std_logic_vector(7 DOWNTO 0);
55
   SIGNAL A_SIGN           : std_logic;
56
   SIGNAL A_SIGN_stage2    : std_logic;
57
   SIGNAL A_SIGN_stage3    : std_logic;
58
   SIGNAL A_align          : std_logic_vector(28 DOWNTO 0);
59
   SIGNAL A_in             : std_logic_vector(28 DOWNTO 0);
60
   SIGNAL A_isINF          : std_logic;
61
   SIGNAL A_isNaN          : std_logic;
62
   SIGNAL A_isZ            : std_logic;
63
   SIGNAL B_EXP            : std_logic_vector(7 DOWNTO 0);
64
   SIGNAL B_XSIGN          : std_logic;
65
   SIGNAL B_XSIGN_stage2   : std_logic;
66
   SIGNAL B_XSIGN_stage3   : std_logic;
67
   SIGNAL B_align          : std_logic_vector(28 DOWNTO 0);
68
   SIGNAL B_in             : std_logic_vector(28 DOWNTO 0);
69
   SIGNAL B_isINF          : std_logic;
70
   SIGNAL B_isNaN          : std_logic;
71
   SIGNAL B_isZ            : std_logic;
72
   SIGNAL EXP_base         : std_logic_vector(7 DOWNTO 0);
73
   SIGNAL EXP_base_stage2  : std_logic_vector(7 DOWNTO 0);
74
   SIGNAL EXP_diff         : std_logic_vector(8 DOWNTO 0);
75
   SIGNAL EXP_norm         : std_logic_vector(7 DOWNTO 0);
76
   SIGNAL OV               : std_logic;
77
   SIGNAL OV_stage4        : std_logic;
78
   SIGNAL SIG_norm         : std_logic_vector(27 DOWNTO 0);
79
   SIGNAL SIG_norm2        : std_logic_vector(27 DOWNTO 0);
80
   SIGNAL Z_EXP            : std_logic_vector(7 DOWNTO 0);
81
   SIGNAL Z_SIGN           : std_logic;
82
   SIGNAL Z_SIGN_stage4    : std_logic;
83
   SIGNAL add_out          : std_logic_vector(28 DOWNTO 0);
84
   SIGNAL cin              : std_logic;
85
   SIGNAL cin_sub          : std_logic;
86
   SIGNAL invert_A         : std_logic;
87
   SIGNAL invert_B         : std_logic;
88
   SIGNAL isINF_tab        : std_logic;
89
   SIGNAL isINF_tab_stage2 : std_logic;
90
   SIGNAL isINF_tab_stage3 : std_logic;
91
   SIGNAL isINF_tab_stage4 : std_logic;
92
   SIGNAL isNaN            : std_logic;
93
   SIGNAL isNaN_stage2     : std_logic;
94
   SIGNAL isNaN_stage3     : std_logic;
95
   SIGNAL isNaN_stage4     : std_logic;
96
   SIGNAL isZ_tab          : std_logic;
97
   SIGNAL isZ_tab_stage2   : std_logic;
98
   SIGNAL isZ_tab_stage3   : std_logic;
99
   SIGNAL isZ_tab_stage4   : std_logic;
100
   SIGNAL zero             : std_logic;
101
   SIGNAL zero_stage4      : std_logic;
102
 
103
 
104
   -- Component Declarations
105
   COMPONENT FPadd_stage1
106
   PORT (
107
      ADD_SUB     : IN     std_logic ;
108
      FP_A        : IN     std_logic_vector (31 DOWNTO 0);
109
      FP_B        : IN     std_logic_vector (31 DOWNTO 0);
110
      clk         : IN     std_logic ;
111
      ADD_SUB_out : OUT    std_logic ;
112
      A_EXP       : OUT    std_logic_vector (7 DOWNTO 0);
113
      A_SIGN      : OUT    std_logic ;
114
      A_in        : OUT    std_logic_vector (28 DOWNTO 0);
115
      A_isINF     : OUT    std_logic ;
116
      A_isNaN     : OUT    std_logic ;
117
      A_isZ       : OUT    std_logic ;
118
      B_EXP       : OUT    std_logic_vector (7 DOWNTO 0);
119
      B_XSIGN     : OUT    std_logic ;
120
      B_in        : OUT    std_logic_vector (28 DOWNTO 0);
121
      B_isINF     : OUT    std_logic ;
122
      B_isNaN     : OUT    std_logic ;
123
      B_isZ       : OUT    std_logic ;
124
      EXP_diff    : OUT    std_logic_vector (8 DOWNTO 0);
125
      cin_sub     : OUT    std_logic
126
   );
127
   END COMPONENT;
128
   COMPONENT FPadd_stage2
129
   PORT (
130
      ADD_SUB_out      : IN     std_logic ;
131
      A_EXP            : IN     std_logic_vector (7 DOWNTO 0);
132
      A_SIGN           : IN     std_logic ;
133
      A_in             : IN     std_logic_vector (28 DOWNTO 0);
134
      A_isINF          : IN     std_logic ;
135
      A_isNaN          : IN     std_logic ;
136
      A_isZ            : IN     std_logic ;
137
      B_EXP            : IN     std_logic_vector (7 DOWNTO 0);
138
      B_XSIGN          : IN     std_logic ;
139
      B_in             : IN     std_logic_vector (28 DOWNTO 0);
140
      B_isINF          : IN     std_logic ;
141
      B_isNaN          : IN     std_logic ;
142
      B_isZ            : IN     std_logic ;
143
      EXP_diff         : IN     std_logic_vector (8 DOWNTO 0);
144
      cin_sub          : IN     std_logic ;
145
      clk              : IN     std_logic ;
146
      A_SIGN_stage2    : OUT    std_logic ;
147
      A_align          : OUT    std_logic_vector (28 DOWNTO 0);
148
      B_XSIGN_stage2   : OUT    std_logic ;
149
      B_align          : OUT    std_logic_vector (28 DOWNTO 0);
150
      EXP_base_stage2  : OUT    std_logic_vector (7 DOWNTO 0);
151
      cin              : OUT    std_logic ;
152
      invert_A         : OUT    std_logic ;
153
      invert_B         : OUT    std_logic ;
154
      isINF_tab_stage2 : OUT    std_logic ;
155
      isNaN_stage2     : OUT    std_logic ;
156
      isZ_tab_stage2   : OUT    std_logic
157
   );
158
   END COMPONENT;
159
   COMPONENT FPadd_stage3
160
   PORT (
161
      A_SIGN_stage2    : IN     std_logic ;
162
      A_align          : IN     std_logic_vector (28 DOWNTO 0);
163
      B_XSIGN_stage2   : IN     std_logic ;
164
      B_align          : IN     std_logic_vector (28 DOWNTO 0);
165
      EXP_base_stage2  : IN     std_logic_vector (7 DOWNTO 0);
166
      cin              : IN     std_logic ;
167
      clk              : IN     std_logic ;
168
      invert_A         : IN     std_logic ;
169
      invert_B         : IN     std_logic ;
170
      isINF_tab_stage2 : IN     std_logic ;
171
      isNaN_stage2     : IN     std_logic ;
172
      isZ_tab_stage2   : IN     std_logic ;
173
      A_SIGN_stage3    : OUT    std_logic ;
174
      B_XSIGN_stage3   : OUT    std_logic ;
175
      EXP_base         : OUT    std_logic_vector (7 DOWNTO 0);
176
      add_out          : OUT    std_logic_vector (28 DOWNTO 0);
177
      isINF_tab_stage3 : OUT    std_logic ;
178
      isNaN_stage3     : OUT    std_logic ;
179
      isZ_tab_stage3   : OUT    std_logic
180
   );
181
   END COMPONENT;
182
   COMPONENT FPadd_stage4
183
   PORT (
184
      A_SIGN_stage3    : IN     std_logic ;
185
      B_XSIGN_stage3   : IN     std_logic ;
186
      EXP_base         : IN     std_logic_vector (7 DOWNTO 0);
187
      add_out          : IN     std_logic_vector (28 DOWNTO 0);
188
      clk              : IN     std_logic ;
189
      isINF_tab_stage3 : IN     std_logic ;
190
      isNaN_stage3     : IN     std_logic ;
191
      isZ_tab_stage3   : IN     std_logic ;
192
      EXP_norm         : OUT    std_logic_vector (7 DOWNTO 0);
193
      OV_stage4        : OUT    std_logic ;
194
      SIG_norm         : OUT    std_logic_vector (27 DOWNTO 0);
195
      Z_SIGN_stage4    : OUT    std_logic ;
196
      isINF_tab_stage4 : OUT    std_logic ;
197
      isNaN_stage4     : OUT    std_logic ;
198
      isZ_tab_stage4   : OUT    std_logic ;
199
      zero_stage4      : OUT    std_logic
200
   );
201
   END COMPONENT;
202
   COMPONENT FPadd_stage5
203
   PORT (
204
      EXP_norm         : IN     std_logic_vector (7 DOWNTO 0);
205
      OV_stage4        : IN     std_logic ;
206
      SIG_norm         : IN     std_logic_vector (27 DOWNTO 0);
207
      Z_SIGN_stage4    : IN     std_logic ;
208
      clk              : IN     std_logic ;
209
      isINF_tab_stage4 : IN     std_logic ;
210
      isNaN_stage4     : IN     std_logic ;
211
      isZ_tab_stage4   : IN     std_logic ;
212
      zero_stage4      : IN     std_logic ;
213
      OV               : OUT    std_logic ;
214
      SIG_norm2        : OUT    std_logic_vector (27 DOWNTO 0);
215
      Z_EXP            : OUT    std_logic_vector (7 DOWNTO 0);
216
      Z_SIGN           : OUT    std_logic ;
217
      isINF_tab        : OUT    std_logic ;
218
      isNaN            : OUT    std_logic ;
219
      isZ_tab          : OUT    std_logic ;
220
      zero             : OUT    std_logic
221
   );
222
   END COMPONENT;
223
   COMPONENT FPadd_stage6
224
   PORT (
225
      OV        : IN     std_logic ;
226
      SIG_norm2 : IN     std_logic_vector (27 DOWNTO 0);
227
      Z_EXP     : IN     std_logic_vector (7 DOWNTO 0);
228
      Z_SIGN    : IN     std_logic ;
229
      clk       : IN     std_logic ;
230
      isINF_tab : IN     std_logic ;
231
      isNaN     : IN     std_logic ;
232
      isZ_tab   : IN     std_logic ;
233
      zero      : IN     std_logic ;
234
      FP_Z      : OUT    std_logic_vector (31 DOWNTO 0)
235
   );
236
   END COMPONENT;
237
 
238
   -- Optional embedded configurations
239
   -- pragma synthesis_off
240
   FOR ALL : FPadd_stage1 USE ENTITY HAVOC.FPadd_stage1;
241
   FOR ALL : FPadd_stage2 USE ENTITY HAVOC.FPadd_stage2;
242
   FOR ALL : FPadd_stage3 USE ENTITY HAVOC.FPadd_stage3;
243
   FOR ALL : FPadd_stage4 USE ENTITY HAVOC.FPadd_stage4;
244
   FOR ALL : FPadd_stage5 USE ENTITY HAVOC.FPadd_stage5;
245
   FOR ALL : FPadd_stage6 USE ENTITY HAVOC.FPadd_stage6;
246
   -- pragma synthesis_on
247
 
248
 
249
BEGIN
250
 
251
   -- Instance port mappings.
252
   I1 : FPadd_stage1
253
      PORT MAP (
254
         ADD_SUB     => ADD_SUB,
255
         FP_A        => FP_A,
256
         FP_B        => FP_B,
257
         clk         => clk,
258
         ADD_SUB_out => ADD_SUB_out,
259
         A_EXP       => A_EXP,
260
         A_SIGN      => A_SIGN,
261
         A_in        => A_in,
262
         A_isINF     => A_isINF,
263
         A_isNaN     => A_isNaN,
264
         A_isZ       => A_isZ,
265
         B_EXP       => B_EXP,
266
         B_XSIGN     => B_XSIGN,
267
         B_in        => B_in,
268
         B_isINF     => B_isINF,
269
         B_isNaN     => B_isNaN,
270
         B_isZ       => B_isZ,
271
         EXP_diff    => EXP_diff,
272
         cin_sub     => cin_sub
273
      );
274
   I2 : FPadd_stage2
275
      PORT MAP (
276
         ADD_SUB_out      => ADD_SUB_out,
277
         A_EXP            => A_EXP,
278
         A_SIGN           => A_SIGN,
279
         A_in             => A_in,
280
         A_isINF          => A_isINF,
281
         A_isNaN          => A_isNaN,
282
         A_isZ            => A_isZ,
283
         B_EXP            => B_EXP,
284
         B_XSIGN          => B_XSIGN,
285
         B_in             => B_in,
286
         B_isINF          => B_isINF,
287
         B_isNaN          => B_isNaN,
288
         B_isZ            => B_isZ,
289
         EXP_diff         => EXP_diff,
290
         cin_sub          => cin_sub,
291
         clk              => clk,
292
         A_SIGN_stage2    => A_SIGN_stage2,
293
         A_align          => A_align,
294
         B_XSIGN_stage2   => B_XSIGN_stage2,
295
         B_align          => B_align,
296
         EXP_base_stage2  => EXP_base_stage2,
297
         cin              => cin,
298
         invert_A         => invert_A,
299
         invert_B         => invert_B,
300
         isINF_tab_stage2 => isINF_tab_stage2,
301
         isNaN_stage2     => isNaN_stage2,
302
         isZ_tab_stage2   => isZ_tab_stage2
303
      );
304
   I3 : FPadd_stage3
305
      PORT MAP (
306
         A_SIGN_stage2    => A_SIGN_stage2,
307
         A_align          => A_align,
308
         B_XSIGN_stage2   => B_XSIGN_stage2,
309
         B_align          => B_align,
310
         EXP_base_stage2  => EXP_base_stage2,
311
         cin              => cin,
312
         clk              => clk,
313
         invert_A         => invert_A,
314
         invert_B         => invert_B,
315
         isINF_tab_stage2 => isINF_tab_stage2,
316
         isNaN_stage2     => isNaN_stage2,
317
         isZ_tab_stage2   => isZ_tab_stage2,
318
         A_SIGN_stage3    => A_SIGN_stage3,
319
         B_XSIGN_stage3   => B_XSIGN_stage3,
320
         EXP_base         => EXP_base,
321
         add_out          => add_out,
322
         isINF_tab_stage3 => isINF_tab_stage3,
323
         isNaN_stage3     => isNaN_stage3,
324
         isZ_tab_stage3   => isZ_tab_stage3
325
      );
326
   I4 : FPadd_stage4
327
      PORT MAP (
328
         A_SIGN_stage3    => A_SIGN_stage3,
329
         B_XSIGN_stage3   => B_XSIGN_stage3,
330
         EXP_base         => EXP_base,
331
         add_out          => add_out,
332
         clk              => clk,
333
         isINF_tab_stage3 => isINF_tab_stage3,
334
         isNaN_stage3     => isNaN_stage3,
335
         isZ_tab_stage3   => isZ_tab_stage3,
336
         EXP_norm         => EXP_norm,
337
         OV_stage4        => OV_stage4,
338
         SIG_norm         => SIG_norm,
339
         Z_SIGN_stage4    => Z_SIGN_stage4,
340
         isINF_tab_stage4 => isINF_tab_stage4,
341
         isNaN_stage4     => isNaN_stage4,
342
         isZ_tab_stage4   => isZ_tab_stage4,
343
         zero_stage4      => zero_stage4
344
      );
345
   I5 : FPadd_stage5
346
      PORT MAP (
347
         EXP_norm         => EXP_norm,
348
         OV_stage4        => OV_stage4,
349
         SIG_norm         => SIG_norm,
350
         Z_SIGN_stage4    => Z_SIGN_stage4,
351
         clk              => clk,
352
         isINF_tab_stage4 => isINF_tab_stage4,
353
         isNaN_stage4     => isNaN_stage4,
354
         isZ_tab_stage4   => isZ_tab_stage4,
355
         zero_stage4      => zero_stage4,
356
         OV               => OV,
357
         SIG_norm2        => SIG_norm2,
358
         Z_EXP            => Z_EXP,
359
         Z_SIGN           => Z_SIGN,
360
         isINF_tab        => isINF_tab,
361
         isNaN            => isNaN,
362
         isZ_tab          => isZ_tab,
363
         zero             => zero
364
      );
365
   I6 : FPadd_stage6
366
      PORT MAP (
367
         OV        => OV,
368
         SIG_norm2 => SIG_norm2,
369
         Z_EXP     => Z_EXP,
370
         Z_SIGN    => Z_SIGN,
371
         clk       => clk,
372
         isINF_tab => isINF_tab,
373
         isNaN     => isNaN,
374
         isZ_tab   => isZ_tab,
375
         zero      => zero,
376
         FP_Z      => FP_Z
377
      );
378
 
379
END pipeline;

powered by: WebSVN 2.1.0

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