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

Subversion Repositories fpuvhdl

[/] [fpuvhdl/] [trunk/] [fpuvhdl/] [multiplier/] [fpmul_stage1_struct.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.FPmul_stage1.interface
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 FPmul_stage1 IS
17
   PORT(
18
      FP_A            : IN     std_logic_vector (31 DOWNTO 0);
19
      FP_B            : IN     std_logic_vector (31 DOWNTO 0);
20
      clk             : IN     std_logic;
21
      A_EXP           : OUT    std_logic_vector (7 DOWNTO 0);
22
      A_SIG           : OUT    std_logic_vector (31 DOWNTO 0);
23
      B_EXP           : OUT    std_logic_vector (7 DOWNTO 0);
24
      B_SIG           : OUT    std_logic_vector (31 DOWNTO 0);
25
      SIGN_out_stage1 : OUT    std_logic;
26
      isINF_stage1    : OUT    std_logic;
27
      isNaN_stage1    : OUT    std_logic;
28
      isZ_tab_stage1  : OUT    std_logic
29
   );
30
 
31
-- Declarations
32
 
33
END FPmul_stage1 ;
34
 
35
--
36
-- VHDL Architecture HAVOC.FPmul_stage1.struct
37
--
38
-- Created by
39
-- Guillermo Marcus, gmarcus@ieee.org
40
-- using Mentor Graphics FPGA Advantage tools.
41
--
42
-- Visit "http://fpga.mty.itesm.mx" for more info.
43
--
44
-- Copyright 2003-2004. V1.0
45
--
46
 
47
 
48
LIBRARY ieee;
49
USE ieee.std_logic_1164.all;
50
USE ieee.std_logic_arith.all;
51
 
52
LIBRARY HAVOC;
53
 
54
ARCHITECTURE struct OF FPmul_stage1 IS
55
 
56
   -- Architecture declarations
57
      -- Non hierarchical truthtable declarations
58
 
59
 
60
 
61
   -- Internal signal declarations
62
   SIGNAL A_EXP_int    : std_logic_vector(7 DOWNTO 0);
63
   SIGNAL A_SIGN       : std_logic;
64
   SIGNAL A_SIG_int    : std_logic_vector(31 DOWNTO 0);
65
   SIGNAL A_isINF      : std_logic;
66
   SIGNAL A_isNaN      : std_logic;
67
   SIGNAL A_isZ        : std_logic;
68
   SIGNAL B_EXP_int    : std_logic_vector(7 DOWNTO 0);
69
   SIGNAL B_SIGN       : std_logic;
70
   SIGNAL B_SIG_int    : std_logic_vector(31 DOWNTO 0);
71
   SIGNAL B_isINF      : std_logic;
72
   SIGNAL B_isNaN      : std_logic;
73
   SIGNAL B_isZ        : std_logic;
74
   SIGNAL SIGN_out_int : std_logic;
75
   SIGNAL isINF_int    : std_logic;
76
   SIGNAL isNaN_int    : std_logic;
77
   SIGNAL isZ_tab_int  : std_logic;
78
 
79
 
80
   -- Component Declarations
81
   COMPONENT UnpackFP
82
   PORT (
83
      FP    : IN     std_logic_vector (31 DOWNTO 0);
84
      SIG   : OUT    std_logic_vector (31 DOWNTO 0);
85
      EXP   : OUT    std_logic_vector (7 DOWNTO 0);
86
      SIGN  : OUT    std_logic ;
87
      isNaN : OUT    std_logic ;
88
      isINF : OUT    std_logic ;
89
      isZ   : OUT    std_logic ;
90
      isDN  : OUT    std_logic
91
   );
92
   END COMPONENT;
93
 
94
   -- Optional embedded configurations
95
   -- pragma synthesis_off
96
   FOR ALL : UnpackFP USE ENTITY HAVOC.UnpackFP;
97
   -- pragma synthesis_on
98
 
99
 
100
BEGIN
101
   -- Architecture concurrent statements
102
   -- HDL Embedded Text Block 1 latch
103
   -- latch 1
104
 
105
   PROCESS(clk)
106
   BEGIN
107
      IF RISING_EDGE(clk) THEN
108
         SIGN_out_stage1 <= SIGN_out_int;
109
         A_EXP <= A_EXP_int;
110
         A_SIG <= A_SIG_int;
111
         isINF_stage1 <= isINF_int;
112
         isNaN_stage1 <= isNaN_int;
113
         isZ_tab_stage1 <= isZ_tab_int;
114
         B_EXP <= B_EXP_int;
115
         B_SIG <= B_SIG_int;
116
      END IF;
117
   END PROCESS;
118
 
119
   -- HDL Embedded Block 2 exceptions
120
   -- Non hierarchical truthtable
121
   ---------------------------------------------------------------------------
122
   exceptions_truth_process: PROCESS(A_isINF, A_isNaN, A_isZ, B_isINF, B_isNaN, B_isZ)
123
   ---------------------------------------------------------------------------
124
   BEGIN
125
      -- Block 1
126
      IF (A_isINF = '0') AND (A_isNaN = '0') AND (A_isZ = '0') AND (B_isINF = '0') AND (B_isNaN = '0') AND (B_isZ = '0') THEN
127
         isZ_tab_int <= '0';
128
         isINF_int <= '0';
129
         isNaN_int <= '0';
130
      ELSIF (A_isINF = '1') AND (B_isZ = '1') THEN
131
         isZ_tab_int <= '0';
132
         isINF_int <= '0';
133
         isNaN_int <= '1';
134
      ELSIF (A_isZ = '1') AND (B_isINF = '1') THEN
135
         isZ_tab_int <= '0';
136
         isINF_int <= '0';
137
         isNaN_int <= '1';
138
      ELSIF (A_isINF = '1') THEN
139
         isZ_tab_int <= '0';
140
         isINF_int <= '1';
141
         isNaN_int <= '0';
142
      ELSIF (B_isINF = '1') THEN
143
         isZ_tab_int <= '0';
144
         isINF_int <= '1';
145
         isNaN_int <= '0';
146
      ELSIF (A_isNaN = '1') THEN
147
         isZ_tab_int <= '0';
148
         isINF_int <= '0';
149
         isNaN_int <= '1';
150
      ELSIF (B_isNaN = '1') THEN
151
         isZ_tab_int <= '0';
152
         isINF_int <= '0';
153
         isNaN_int <= '1';
154
      ELSIF (A_isZ = '1') THEN
155
         isZ_tab_int <= '1';
156
         isINF_int <= '0';
157
         isNaN_int <= '0';
158
      ELSIF (B_isZ = '1') THEN
159
         isZ_tab_int <= '1';
160
         isINF_int <= '0';
161
         isNaN_int <= '0';
162
      ELSE
163
         isZ_tab_int <= '0';
164
         isINF_int <= '0';
165
         isNaN_int <= '0';
166
      END IF;
167
 
168
   END PROCESS exceptions_truth_process;
169
 
170
   -- Architecture concurrent statements
171
 
172
 
173
 
174
 
175
   -- ModuleWare code(v1.1) for instance 'I3' of 'xor'
176
   SIGN_out_int <= A_SIGN XOR B_SIGN;
177
 
178
   -- Instance port mappings.
179
   I0 : UnpackFP
180
      PORT MAP (
181
         FP    => FP_A,
182
         SIG   => A_SIG_int,
183
         EXP   => A_EXP_int,
184
         SIGN  => A_SIGN,
185
         isNaN => A_isNaN,
186
         isINF => A_isINF,
187
         isZ   => A_isZ,
188
         isDN  => OPEN
189
      );
190
   I1 : UnpackFP
191
      PORT MAP (
192
         FP    => FP_B,
193
         SIG   => B_SIG_int,
194
         EXP   => B_EXP_int,
195
         SIGN  => B_SIGN,
196
         isNaN => B_isNaN,
197
         isINF => B_isINF,
198
         isZ   => B_isZ,
199
         isDN  => OPEN
200
      );
201
 
202
END struct;

powered by: WebSVN 2.1.0

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