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

Subversion Repositories fpuvhdl

[/] [fpuvhdl/] [trunk/] [fpuvhdl/] [multiplier/] [fpmul_stage1_struct.vhd] - Blame information for rev 5

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
 
53
ARCHITECTURE struct OF FPmul_stage1 IS
54
 
55
   -- Architecture declarations
56
      -- Non hierarchical truthtable declarations
57
 
58
 
59
 
60
   -- Internal signal declarations
61
   SIGNAL A_EXP_int    : std_logic_vector(7 DOWNTO 0);
62
   SIGNAL A_SIGN       : std_logic;
63
   SIGNAL A_SIG_int    : std_logic_vector(31 DOWNTO 0);
64
   SIGNAL A_isINF      : std_logic;
65
   SIGNAL A_isNaN      : std_logic;
66
   SIGNAL A_isZ        : std_logic;
67
   SIGNAL B_EXP_int    : std_logic_vector(7 DOWNTO 0);
68
   SIGNAL B_SIGN       : std_logic;
69
   SIGNAL B_SIG_int    : std_logic_vector(31 DOWNTO 0);
70
   SIGNAL B_isINF      : std_logic;
71
   SIGNAL B_isNaN      : std_logic;
72
   SIGNAL B_isZ        : std_logic;
73
   SIGNAL SIGN_out_int : std_logic;
74
   SIGNAL isINF_int    : std_logic;
75
   SIGNAL isNaN_int    : std_logic;
76
   SIGNAL isZ_tab_int  : std_logic;
77
 
78
 
79
   -- Component Declarations
80
   COMPONENT UnpackFP
81
   PORT (
82
      FP    : IN     std_logic_vector (31 DOWNTO 0);
83
      SIG   : OUT    std_logic_vector (31 DOWNTO 0);
84
      EXP   : OUT    std_logic_vector (7 DOWNTO 0);
85
      SIGN  : OUT    std_logic ;
86
      isNaN : OUT    std_logic ;
87
      isINF : OUT    std_logic ;
88
      isZ   : OUT    std_logic ;
89
      isDN  : OUT    std_logic
90
   );
91
   END COMPONENT;
92
 
93
   -- Optional embedded configurations
94
   -- pragma synthesis_off
95 4 gmarcus
   FOR ALL : UnpackFP USE ENTITY work.UnpackFP;
96 3 gmarcus
   -- pragma synthesis_on
97
 
98
 
99
BEGIN
100
   -- Architecture concurrent statements
101
   -- HDL Embedded Text Block 1 latch
102
   -- latch 1
103
 
104
   PROCESS(clk)
105
   BEGIN
106
      IF RISING_EDGE(clk) THEN
107
         SIGN_out_stage1 <= SIGN_out_int;
108
         A_EXP <= A_EXP_int;
109
         A_SIG <= A_SIG_int;
110
         isINF_stage1 <= isINF_int;
111
         isNaN_stage1 <= isNaN_int;
112
         isZ_tab_stage1 <= isZ_tab_int;
113
         B_EXP <= B_EXP_int;
114
         B_SIG <= B_SIG_int;
115
      END IF;
116
   END PROCESS;
117
 
118
   -- HDL Embedded Block 2 exceptions
119
   -- Non hierarchical truthtable
120
   ---------------------------------------------------------------------------
121
   exceptions_truth_process: PROCESS(A_isINF, A_isNaN, A_isZ, B_isINF, B_isNaN, B_isZ)
122
   ---------------------------------------------------------------------------
123
   BEGIN
124
      -- Block 1
125
      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
126
         isZ_tab_int <= '0';
127
         isINF_int <= '0';
128
         isNaN_int <= '0';
129
      ELSIF (A_isINF = '1') AND (B_isZ = '1') THEN
130
         isZ_tab_int <= '0';
131
         isINF_int <= '0';
132
         isNaN_int <= '1';
133
      ELSIF (A_isZ = '1') AND (B_isINF = '1') THEN
134
         isZ_tab_int <= '0';
135
         isINF_int <= '0';
136
         isNaN_int <= '1';
137
      ELSIF (A_isINF = '1') THEN
138
         isZ_tab_int <= '0';
139
         isINF_int <= '1';
140
         isNaN_int <= '0';
141
      ELSIF (B_isINF = '1') THEN
142
         isZ_tab_int <= '0';
143
         isINF_int <= '1';
144
         isNaN_int <= '0';
145
      ELSIF (A_isNaN = '1') THEN
146
         isZ_tab_int <= '0';
147
         isINF_int <= '0';
148
         isNaN_int <= '1';
149
      ELSIF (B_isNaN = '1') THEN
150
         isZ_tab_int <= '0';
151
         isINF_int <= '0';
152
         isNaN_int <= '1';
153
      ELSIF (A_isZ = '1') THEN
154
         isZ_tab_int <= '1';
155
         isINF_int <= '0';
156
         isNaN_int <= '0';
157
      ELSIF (B_isZ = '1') THEN
158
         isZ_tab_int <= '1';
159
         isINF_int <= '0';
160
         isNaN_int <= '0';
161
      ELSE
162
         isZ_tab_int <= '0';
163
         isINF_int <= '0';
164
         isNaN_int <= '0';
165
      END IF;
166
 
167
   END PROCESS exceptions_truth_process;
168
 
169
   -- Architecture concurrent statements
170
 
171
 
172
 
173
 
174
   -- ModuleWare code(v1.1) for instance 'I3' of 'xor'
175
   SIGN_out_int <= A_SIGN XOR B_SIGN;
176
 
177
   -- Instance port mappings.
178
   I0 : UnpackFP
179
      PORT MAP (
180
         FP    => FP_A,
181
         SIG   => A_SIG_int,
182
         EXP   => A_EXP_int,
183
         SIGN  => A_SIGN,
184
         isNaN => A_isNaN,
185
         isINF => A_isINF,
186
         isZ   => A_isZ,
187
         isDN  => OPEN
188
      );
189
   I1 : UnpackFP
190
      PORT MAP (
191
         FP    => FP_B,
192
         SIG   => B_SIG_int,
193
         EXP   => B_EXP_int,
194
         SIGN  => B_SIGN,
195
         isNaN => B_isNaN,
196
         isINF => B_isINF,
197
         isZ   => B_isZ,
198
         isDN  => OPEN
199
      );
200
 
201
END struct;

powered by: WebSVN 2.1.0

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