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

Subversion Repositories astron_multiplier

[/] [astron_multiplier/] [trunk/] [ip_stratixiv_complex_mult.vhd] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 danv
-- megafunction wizard: %ALTMULT_COMPLEX%
2
-- GENERATION: STANDARD
3
-- VERSION: WM1.0
4
-- MODULE: altmult_complex 
5
 
6
-- ============================================================
7
-- File Name: ip_stratixiv_complex_mult.vhd
8
-- Megafunction Name(s):
9
--                      altmult_complex
10
--
11
-- Simulation Library Files(s):
12
--                      altera_mf
13
-- ============================================================
14
-- ************************************************************
15
-- THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
16
--
17
-- 10.0 Build 218 06/27/2010 SJ Full Version
18
-- ************************************************************
19
 
20
 
21
--Copyright (C) 1991-2010 Altera Corporation
22
--Your use of Altera Corporation's design tools, logic functions 
23
--and other software and tools, and its AMPP partner logic 
24
--functions, and any output files from any of the foregoing 
25
--(including device programming or simulation files), and any 
26
--associated documentation or information are expressly subject 
27
--to the terms and conditions of the Altera Program License 
28
--Subscription Agreement, Altera MegaCore Function License 
29
--Agreement, or other applicable license agreement, including, 
30
--without limitation, that your use is for the sole purpose of 
31
--programming logic devices manufactured by Altera and sold by 
32
--Altera or its authorized distributors.  Please refer to the 
33
--applicable agreement for further details.
34
 
35
 
36
--altmult_complex CBX_AUTO_BLACKBOX="ALL" DEVICE_FAMILY="Stratix IV" IMPLEMENTATION_STYLE="AUTO" PIPELINE=3 REPRESENTATION_A="SIGNED" REPRESENTATION_B="SIGNED" WIDTH_A=18 WIDTH_B=18 WIDTH_RESULT=36 aclr clock dataa_imag dataa_real datab_imag datab_real ena result_imag result_real
37
--VERSION_BEGIN 10.0 cbx_alt_ded_mult_y 2010:06:27:21:21:57:SJ cbx_altmult_add 2010:06:27:21:21:57:SJ cbx_altmult_complex 2010:06:27:21:21:57:SJ cbx_cycloneii 2010:06:27:21:21:57:SJ cbx_lpm_add_sub 2010:06:27:21:21:57:SJ cbx_lpm_compare 2010:06:27:21:21:57:SJ cbx_lpm_mult 2010:06:27:21:21:57:SJ cbx_mgl 2010:06:27:21:25:48:SJ cbx_padd 2010:06:27:21:21:57:SJ cbx_parallel_add 2010:06:27:21:21:57:SJ cbx_stratix 2010:06:27:21:21:57:SJ cbx_stratixii 2010:06:27:21:21:57:SJ cbx_stratixv 2010:06:27:21:21:57:SJ cbx_util_mgl 2010:06:27:21:21:57:SJ  VERSION_END
38
 
39
 LIBRARY altera_mf;
40
 USE altera_mf.all;
41
 
42
--synthesis_resources = altmult_add 2 
43
 LIBRARY ieee;
44
 USE ieee.std_logic_1164.all;
45
 
46
 ENTITY  ip_stratixiv_complex_mult_altmult_complex_0vp IS
47
         PORT
48
         (
49
                 aclr   :       IN  STD_LOGIC := '0';
50
                 clock  :       IN  STD_LOGIC := '0';
51
                 dataa_imag     :       IN  STD_LOGIC_VECTOR (17 DOWNTO 0);
52
                 dataa_real     :       IN  STD_LOGIC_VECTOR (17 DOWNTO 0);
53
                 datab_imag     :       IN  STD_LOGIC_VECTOR (17 DOWNTO 0);
54
                 datab_real     :       IN  STD_LOGIC_VECTOR (17 DOWNTO 0);
55
                 ena    :       IN  STD_LOGIC := '1';
56
                 result_imag    :       OUT  STD_LOGIC_VECTOR (35 DOWNTO 0);
57
                 result_real    :       OUT  STD_LOGIC_VECTOR (35 DOWNTO 0)
58
         );
59
 END ip_stratixiv_complex_mult_altmult_complex_0vp;
60
 
61
 ARCHITECTURE RTL OF ip_stratixiv_complex_mult_altmult_complex_0vp IS
62
 
63
         SIGNAL  wire_mult_add1_result  :       STD_LOGIC_VECTOR (35 DOWNTO 0);
64
         SIGNAL  wire_mult_add2_result  :       STD_LOGIC_VECTOR (35 DOWNTO 0);
65
         SIGNAL  mult_add1_inputa :     STD_LOGIC_VECTOR (35 DOWNTO 0);
66
         SIGNAL  mult_add1_inputb :     STD_LOGIC_VECTOR (35 DOWNTO 0);
67
         SIGNAL  mult_add2_inputb :     STD_LOGIC_VECTOR (35 DOWNTO 0);
68
         COMPONENT  altmult_add
69
         GENERIC
70
         (
71
                ACCUM_DIRECTION :       STRING := "ADD";
72
                ACCUM_SLOAD_ACLR        :       STRING := "ACLR0";
73
                ACCUM_SLOAD_PIPELINE_ACLR       :       STRING := "ACLR0";
74
                ACCUM_SLOAD_PIPELINE_REGISTER   :       STRING := "CLOCK0";
75
                ACCUM_SLOAD_REGISTER    :       STRING := "CLOCK0";
76
                ACCUMULATOR     :       STRING := "NO";
77
                ADDER1_ROUNDING :       STRING := "NO";
78
                ADDER3_ROUNDING :       STRING := "NO";
79
                ADDNSUB1_ROUND_ACLR     :       STRING := "ACLR0";
80
                ADDNSUB1_ROUND_PIPELINE_ACLR    :       STRING := "ACLR0";
81
                ADDNSUB1_ROUND_PIPELINE_REGISTER        :       STRING := "CLOCK0";
82
                ADDNSUB1_ROUND_REGISTER :       STRING := "CLOCK0";
83
                ADDNSUB3_ROUND_ACLR     :       STRING := "ACLR0";
84
                ADDNSUB3_ROUND_PIPELINE_ACLR    :       STRING := "ACLR0";
85
                ADDNSUB3_ROUND_PIPELINE_REGISTER        :       STRING := "CLOCK0";
86
                ADDNSUB3_ROUND_REGISTER :       STRING := "CLOCK0";
87
                ADDNSUB_MULTIPLIER_ACLR1        :       STRING := "ACLR0";
88
                ADDNSUB_MULTIPLIER_ACLR3        :       STRING := "ACLR0";
89
                ADDNSUB_MULTIPLIER_PIPELINE_ACLR1       :       STRING := "ACLR0";
90
                ADDNSUB_MULTIPLIER_PIPELINE_ACLR3       :       STRING := "ACLR0";
91
                ADDNSUB_MULTIPLIER_PIPELINE_REGISTER1   :       STRING := "CLOCK0";
92
                ADDNSUB_MULTIPLIER_PIPELINE_REGISTER3   :       STRING := "CLOCK0";
93
                ADDNSUB_MULTIPLIER_REGISTER1    :       STRING := "CLOCK0";
94
                ADDNSUB_MULTIPLIER_REGISTER3    :       STRING := "CLOCK0";
95
                CHAINOUT_ACLR   :       STRING := "ACLR0";
96
                CHAINOUT_ADDER  :       STRING := "NO";
97
                CHAINOUT_REGISTER       :       STRING := "CLOCK0";
98
                CHAINOUT_ROUND_ACLR     :       STRING := "ACLR0";
99
                CHAINOUT_ROUND_OUTPUT_ACLR      :       STRING := "ACLR0";
100
                CHAINOUT_ROUND_OUTPUT_REGISTER  :       STRING := "CLOCK0";
101
                CHAINOUT_ROUND_PIPELINE_ACLR    :       STRING := "ACLR0";
102
                CHAINOUT_ROUND_PIPELINE_REGISTER        :       STRING := "CLOCK0";
103
                CHAINOUT_ROUND_REGISTER :       STRING := "CLOCK0";
104
                CHAINOUT_ROUNDING       :       STRING := "NO";
105
                CHAINOUT_SATURATE_ACLR  :       STRING := "ACLR0";
106
                CHAINOUT_SATURATE_OUTPUT_ACLR   :       STRING := "ACLR0";
107
                CHAINOUT_SATURATE_OUTPUT_REGISTER       :       STRING := "CLOCK0";
108
                CHAINOUT_SATURATE_PIPELINE_ACLR :       STRING := "ACLR0";
109
                CHAINOUT_SATURATE_PIPELINE_REGISTER     :       STRING := "CLOCK0";
110
                CHAINOUT_SATURATE_REGISTER      :       STRING := "CLOCK0";
111
                CHAINOUT_SATURATION     :       STRING := "NO";
112
                COEF0_0 :       NATURAL := 0;
113
                COEF0_1 :       NATURAL := 0;
114
                COEF0_2 :       NATURAL := 0;
115
                COEF0_3 :       NATURAL := 0;
116
                COEF0_4 :       NATURAL := 0;
117
                COEF0_5 :       NATURAL := 0;
118
                COEF0_6 :       NATURAL := 0;
119
                COEF0_7 :       NATURAL := 0;
120
                COEF1_0 :       NATURAL := 0;
121
                COEF1_1 :       NATURAL := 0;
122
                COEF1_2 :       NATURAL := 0;
123
                COEF1_3 :       NATURAL := 0;
124
                COEF1_4 :       NATURAL := 0;
125
                COEF1_5 :       NATURAL := 0;
126
                COEF1_6 :       NATURAL := 0;
127
                COEF1_7 :       NATURAL := 0;
128
                COEF2_0 :       NATURAL := 0;
129
                COEF2_1 :       NATURAL := 0;
130
                COEF2_2 :       NATURAL := 0;
131
                COEF2_3 :       NATURAL := 0;
132
                COEF2_4 :       NATURAL := 0;
133
                COEF2_5 :       NATURAL := 0;
134
                COEF2_6 :       NATURAL := 0;
135
                COEF2_7 :       NATURAL := 0;
136
                COEF3_0 :       NATURAL := 0;
137
                COEF3_1 :       NATURAL := 0;
138
                COEF3_2 :       NATURAL := 0;
139
                COEF3_3 :       NATURAL := 0;
140
                COEF3_4 :       NATURAL := 0;
141
                COEF3_5 :       NATURAL := 0;
142
                COEF3_6 :       NATURAL := 0;
143
                COEF3_7 :       NATURAL := 0;
144
                COEFSEL0_ACLR   :       STRING := "ACLR0";
145
                COEFSEL0_REGISTER       :       STRING := "CLOCK0";
146
                COEFSEL1_ACLR   :       STRING := "ACLR0";
147
                COEFSEL1_REGISTER       :       STRING := "CLOCK0";
148
                COEFSEL2_ACLR   :       STRING := "ACLR0";
149
                COEFSEL2_REGISTER       :       STRING := "CLOCK0";
150
                COEFSEL3_ACLR   :       STRING := "ACLR0";
151
                COEFSEL3_REGISTER       :       STRING := "CLOCK0";
152
                DEDICATED_MULTIPLIER_CIRCUITRY  :       STRING := "AUTO";
153
                DSP_BLOCK_BALANCING     :       STRING := "Auto";
154
                EXTRA_LATENCY   :       NATURAL := 0;
155
                INPUT_ACLR_A0   :       STRING := "ACLR0";
156
                INPUT_ACLR_A1   :       STRING := "ACLR0";
157
                INPUT_ACLR_A2   :       STRING := "ACLR0";
158
                INPUT_ACLR_A3   :       STRING := "ACLR0";
159
                INPUT_ACLR_B0   :       STRING := "ACLR0";
160
                INPUT_ACLR_B1   :       STRING := "ACLR0";
161
                INPUT_ACLR_B2   :       STRING := "ACLR0";
162
                INPUT_ACLR_B3   :       STRING := "ACLR0";
163
                INPUT_ACLR_C0   :       STRING := "ACLR0";
164
                INPUT_REGISTER_A0       :       STRING := "CLOCK0";
165
                INPUT_REGISTER_A1       :       STRING := "CLOCK0";
166
                INPUT_REGISTER_A2       :       STRING := "CLOCK0";
167
                INPUT_REGISTER_A3       :       STRING := "CLOCK0";
168
                INPUT_REGISTER_B0       :       STRING := "CLOCK0";
169
                INPUT_REGISTER_B1       :       STRING := "CLOCK0";
170
                INPUT_REGISTER_B2       :       STRING := "CLOCK0";
171
                INPUT_REGISTER_B3       :       STRING := "CLOCK0";
172
                INPUT_REGISTER_C0       :       STRING := "CLOCK0";
173
                INPUT_SOURCE_A0 :       STRING := "DATAA";
174
                INPUT_SOURCE_A1 :       STRING := "DATAA";
175
                INPUT_SOURCE_A2 :       STRING := "DATAA";
176
                INPUT_SOURCE_A3 :       STRING := "DATAA";
177
                INPUT_SOURCE_B0 :       STRING := "DATAB";
178
                INPUT_SOURCE_B1 :       STRING := "DATAB";
179
                INPUT_SOURCE_B2 :       STRING := "DATAB";
180
                INPUT_SOURCE_B3 :       STRING := "DATAB";
181
                LOADCONST_VALUE :       NATURAL := 64;
182
                MULT01_ROUND_ACLR       :       STRING := "ACLR0";
183
                MULT01_ROUND_REGISTER   :       STRING := "CLOCK0";
184
                MULT01_SATURATION_ACLR  :       STRING := "ACLR1";
185
                MULT01_SATURATION_REGISTER      :       STRING := "CLOCK0";
186
                MULT23_ROUND_ACLR       :       STRING := "ACLR0";
187
                MULT23_ROUND_REGISTER   :       STRING := "CLOCK0";
188
                MULT23_SATURATION_ACLR  :       STRING := "ACLR0";
189
                MULT23_SATURATION_REGISTER      :       STRING := "CLOCK0";
190
                MULTIPLIER01_ROUNDING   :       STRING := "NO";
191
                MULTIPLIER01_SATURATION :       STRING := "NO";
192
                MULTIPLIER1_DIRECTION   :       STRING := "ADD";
193
                MULTIPLIER23_ROUNDING   :       STRING := "NO";
194
                MULTIPLIER23_SATURATION :       STRING := "NO";
195
                MULTIPLIER3_DIRECTION   :       STRING := "ADD";
196
                MULTIPLIER_ACLR0        :       STRING := "ACLR0";
197
                MULTIPLIER_ACLR1        :       STRING := "ACLR0";
198
                MULTIPLIER_ACLR2        :       STRING := "ACLR0";
199
                MULTIPLIER_ACLR3        :       STRING := "ACLR0";
200
                MULTIPLIER_REGISTER0    :       STRING := "CLOCK0";
201
                MULTIPLIER_REGISTER1    :       STRING := "CLOCK0";
202
                MULTIPLIER_REGISTER2    :       STRING := "CLOCK0";
203
                MULTIPLIER_REGISTER3    :       STRING := "CLOCK0";
204
                NUMBER_OF_MULTIPLIERS   :       NATURAL;
205
                OUTPUT_ACLR     :       STRING := "ACLR0";
206
                OUTPUT_REGISTER :       STRING := "CLOCK0";
207
                OUTPUT_ROUND_ACLR       :       STRING := "ACLR0";
208
                OUTPUT_ROUND_PIPELINE_ACLR      :       STRING := "ACLR0";
209
                OUTPUT_ROUND_PIPELINE_REGISTER  :       STRING := "CLOCK0";
210
                OUTPUT_ROUND_REGISTER   :       STRING := "CLOCK0";
211
                OUTPUT_ROUND_TYPE       :       STRING := "NEAREST_INTEGER";
212
                OUTPUT_ROUNDING :       STRING := "NO";
213
                OUTPUT_SATURATE_ACLR    :       STRING := "ACLR0";
214
                OUTPUT_SATURATE_PIPELINE_ACLR   :       STRING := "ACLR0";
215
                OUTPUT_SATURATE_PIPELINE_REGISTER       :       STRING := "CLOCK0";
216
                OUTPUT_SATURATE_REGISTER        :       STRING := "CLOCK0";
217
                OUTPUT_SATURATE_TYPE    :       STRING := "ASYMMETRIC";
218
                OUTPUT_SATURATION       :       STRING := "NO";
219
                port_addnsub1   :       STRING := "PORT_CONNECTIVITY";
220
                port_addnsub3   :       STRING := "PORT_CONNECTIVITY";
221
                PORT_CHAINOUT_SAT_IS_OVERFLOW   :       STRING := "PORT_UNUSED";
222
                PORT_MULT0_IS_SATURATED :       STRING := "UNUSED";
223
                PORT_MULT1_IS_SATURATED :       STRING := "UNUSED";
224
                PORT_MULT2_IS_SATURATED :       STRING := "UNUSED";
225
                PORT_MULT3_IS_SATURATED :       STRING := "UNUSED";
226
                PORT_OUTPUT_IS_OVERFLOW :       STRING := "PORT_UNUSED";
227
                port_signa      :       STRING := "PORT_CONNECTIVITY";
228
                port_signb      :       STRING := "PORT_CONNECTIVITY";
229
                PREADDER_DIRECTION_0    :       STRING := "ADD";
230
                PREADDER_DIRECTION_1    :       STRING := "ADD";
231
                PREADDER_DIRECTION_2    :       STRING := "ADD";
232
                PREADDER_DIRECTION_3    :       STRING := "ADD";
233
                PREADDER_MODE   :       STRING := "SIMPLE";
234
                REPRESENTATION_A        :       STRING := "UNSIGNED";
235
                REPRESENTATION_B        :       STRING := "UNSIGNED";
236
                ROTATE_ACLR     :       STRING := "ACLR0";
237
                ROTATE_OUTPUT_ACLR      :       STRING := "ACLR0";
238
                ROTATE_OUTPUT_REGISTER  :       STRING := "CLOCK0";
239
                ROTATE_PIPELINE_ACLR    :       STRING := "ACLR0";
240
                ROTATE_PIPELINE_REGISTER        :       STRING := "CLOCK0";
241
                ROTATE_REGISTER :       STRING := "CLOCK0";
242
                SCANOUTA_ACLR   :       STRING := "ACLR0";
243
                SCANOUTA_REGISTER       :       STRING := "UNREGISTERED";
244
                SHIFT_MODE      :       STRING := "NO";
245
                SHIFT_RIGHT_ACLR        :       STRING := "ACLR0";
246
                SHIFT_RIGHT_OUTPUT_ACLR :       STRING := "ACLR0";
247
                SHIFT_RIGHT_OUTPUT_REGISTER     :       STRING := "CLOCK0";
248
                SHIFT_RIGHT_PIPELINE_ACLR       :       STRING := "ACLR0";
249
                SHIFT_RIGHT_PIPELINE_REGISTER   :       STRING := "CLOCK0";
250
                SHIFT_RIGHT_REGISTER    :       STRING := "CLOCK0";
251
                SIGNED_ACLR_A   :       STRING := "ACLR0";
252
                SIGNED_ACLR_B   :       STRING := "ACLR0";
253
                SIGNED_PIPELINE_ACLR_A  :       STRING := "ACLR0";
254
                SIGNED_PIPELINE_ACLR_B  :       STRING := "ACLR0";
255
                SIGNED_PIPELINE_REGISTER_A      :       STRING := "CLOCK0";
256
                SIGNED_PIPELINE_REGISTER_B      :       STRING := "CLOCK0";
257
                SIGNED_REGISTER_A       :       STRING := "CLOCK0";
258
                SIGNED_REGISTER_B       :       STRING := "CLOCK0";
259
                SYSTOLIC_ACLR1  :       STRING := "ACLR0";
260
                SYSTOLIC_ACLR3  :       STRING := "ACLR0";
261
                SYSTOLIC_DELAY1 :       STRING := "UNREGISTERED";
262
                SYSTOLIC_DELAY3 :       STRING := "UNREGISTERED";
263
                WIDTH_A :       NATURAL;
264
                WIDTH_B :       NATURAL;
265
                WIDTH_C :       NATURAL := 22;
266
                WIDTH_CHAININ   :       NATURAL := 1;
267
                WIDTH_COEF      :       NATURAL := 18;
268
                WIDTH_MSB       :       NATURAL := 17;
269
                WIDTH_RESULT    :       NATURAL;
270
                WIDTH_SATURATE_SIGN     :       NATURAL := 1;
271
                ZERO_CHAINOUT_OUTPUT_ACLR       :       STRING := "ACLR0";
272
                ZERO_CHAINOUT_OUTPUT_REGISTER   :       STRING := "CLOCK0";
273
                ZERO_LOOPBACK_ACLR      :       STRING := "ACLR0";
274
                ZERO_LOOPBACK_OUTPUT_ACLR       :       STRING := "ACLR0";
275
                ZERO_LOOPBACK_OUTPUT_REGISTER   :       STRING := "CLOCK0";
276
                ZERO_LOOPBACK_PIPELINE_ACLR     :       STRING := "ACLR0";
277
                ZERO_LOOPBACK_PIPELINE_REGISTER :       STRING := "CLOCK0";
278
                ZERO_LOOPBACK_REGISTER  :       STRING := "CLOCK0";
279
                lpm_hint        :       STRING := "UNUSED";
280
                lpm_type        :       STRING := "altmult_add"
281
         );
282
         PORT
283
         (
284
                accum_sload     :       IN STD_LOGIC := '0';
285
                aclr0   :       IN STD_LOGIC := '0';
286
                aclr1   :       IN STD_LOGIC := '0';
287
                aclr2   :       IN STD_LOGIC := '0';
288
                aclr3   :       IN STD_LOGIC := '0';
289
                addnsub1        :       IN STD_LOGIC := '1';
290
                addnsub1_round  :       IN STD_LOGIC := '0';
291
                addnsub3        :       IN STD_LOGIC := '1';
292
                addnsub3_round  :       IN STD_LOGIC := '0';
293
                chainin :       IN STD_LOGIC_VECTOR(WIDTH_CHAININ-1 DOWNTO 0) := (OTHERS => '0');
294
                chainout_round  :       IN STD_LOGIC := '0';
295
                chainout_sat_overflow   :       OUT STD_LOGIC;
296
                chainout_saturate       :       IN STD_LOGIC := '0';
297
                clock0  :       IN STD_LOGIC := '1';
298
                clock1  :       IN STD_LOGIC := '1';
299
                clock2  :       IN STD_LOGIC := '1';
300
                clock3  :       IN STD_LOGIC := '1';
301
                coefsel0        :       IN STD_LOGIC_VECTOR(2 DOWNTO 0) := (OTHERS => '0');
302
                coefsel1        :       IN STD_LOGIC_VECTOR(2 DOWNTO 0) := (OTHERS => '0');
303
                coefsel2        :       IN STD_LOGIC_VECTOR(2 DOWNTO 0) := (OTHERS => '0');
304
                coefsel3        :       IN STD_LOGIC_VECTOR(2 DOWNTO 0) := (OTHERS => '0');
305
                dataa   :       IN STD_LOGIC_VECTOR(WIDTH_A*NUMBER_OF_MULTIPLIERS-1 DOWNTO 0) := (OTHERS => '0');
306
                datab   :       IN STD_LOGIC_VECTOR(WIDTH_B*NUMBER_OF_MULTIPLIERS-1 DOWNTO 0) := (OTHERS => '0');
307
                datac   :       IN STD_LOGIC_VECTOR(WIDTH_C-1 DOWNTO 0) := (OTHERS => '0');
308
                ena0    :       IN STD_LOGIC := '1';
309
                ena1    :       IN STD_LOGIC := '1';
310
                ena2    :       IN STD_LOGIC := '1';
311
                ena3    :       IN STD_LOGIC := '1';
312
                mult01_round    :       IN STD_LOGIC := '0';
313
                mult01_saturation       :       IN STD_LOGIC := '0';
314
                mult0_is_saturated      :       OUT STD_LOGIC;
315
                mult1_is_saturated      :       OUT STD_LOGIC;
316
                mult23_round    :       IN STD_LOGIC := '0';
317
                mult23_saturation       :       IN STD_LOGIC := '0';
318
                mult2_is_saturated      :       OUT STD_LOGIC;
319
                mult3_is_saturated      :       OUT STD_LOGIC;
320
                output_round    :       IN STD_LOGIC := '0';
321
                output_saturate :       IN STD_LOGIC := '0';
322
                overflow        :       OUT STD_LOGIC;
323
                result  :       OUT STD_LOGIC_VECTOR(WIDTH_RESULT-1 DOWNTO 0);
324
                rotate  :       IN STD_LOGIC := '0';
325
                scanina :       IN STD_LOGIC_VECTOR(WIDTH_A-1 DOWNTO 0) := (OTHERS => '0');
326
                scaninb :       IN STD_LOGIC_VECTOR(WIDTH_B-1 DOWNTO 0) := (OTHERS => '0');
327
                scanouta        :       OUT STD_LOGIC_VECTOR(WIDTH_A-1 DOWNTO 0);
328
                scanoutb        :       OUT STD_LOGIC_VECTOR(WIDTH_B-1 DOWNTO 0);
329
                shift_right     :       IN STD_LOGIC := '0';
330
                signa   :       IN STD_LOGIC := '0';
331
                signb   :       IN STD_LOGIC := '0';
332
                sourcea :       IN STD_LOGIC_VECTOR(NUMBER_OF_MULTIPLIERS-1 DOWNTO 0) := (OTHERS => '0');
333
                sourceb :       IN STD_LOGIC_VECTOR(NUMBER_OF_MULTIPLIERS-1 DOWNTO 0) := (OTHERS => '0');
334
                zero_chainout   :       IN STD_LOGIC := '0';
335
                zero_loopback   :       IN STD_LOGIC := '0'
336
         );
337
         END COMPONENT;
338
 BEGIN
339
 
340
        mult_add1_inputa <= ( dataa_imag(17 DOWNTO 0) & dataa_real(17 DOWNTO 0));
341
        mult_add1_inputb <= ( datab_imag(17 DOWNTO 0) & datab_real(17 DOWNTO 0));
342
        mult_add2_inputb <= ( datab_real(17 DOWNTO 0) & datab_imag(17 DOWNTO 0));
343
        result_imag <= wire_mult_add2_result;
344
        result_real <= wire_mult_add1_result;
345
        mult_add1 :  altmult_add
346
          GENERIC MAP (
347
                INPUT_ACLR_A0 => "ACLR0",
348
                INPUT_ACLR_A1 => "ACLR0",
349
                INPUT_ACLR_B0 => "ACLR0",
350
                INPUT_ACLR_B1 => "ACLR0",
351
                INPUT_REGISTER_A0 => "CLOCK0",
352
                INPUT_REGISTER_A1 => "CLOCK0",
353
                INPUT_REGISTER_B0 => "CLOCK0",
354
                INPUT_REGISTER_B1 => "CLOCK0",
355
                MULTIPLIER1_DIRECTION => "SUB",
356
                MULTIPLIER_ACLR0 => "ACLR0",
357
                MULTIPLIER_ACLR1 => "ACLR0",
358
                MULTIPLIER_REGISTER0 => "CLOCK0",
359
                MULTIPLIER_REGISTER1 => "CLOCK0",
360
                NUMBER_OF_MULTIPLIERS => 2,
361
                OUTPUT_ACLR => "ACLR0",
362
                OUTPUT_REGISTER => "CLOCK0",
363
                port_addnsub1 => "PORT_UNUSED",
364
                port_signa => "PORT_UNUSED",
365
                port_signb => "PORT_UNUSED",
366
                REPRESENTATION_A => "SIGNED",
367
                REPRESENTATION_B => "SIGNED",
368
                WIDTH_A => 18,
369
                WIDTH_B => 18,
370
                WIDTH_RESULT => 36
371
          )
372
          PORT MAP (
373
                aclr0 => aclr,
374
                clock0 => clock,
375
                dataa => mult_add1_inputa,
376
                datab => mult_add1_inputb,
377
                ena0 => ena,
378
                result => wire_mult_add1_result
379
          );
380
        mult_add2 :  altmult_add
381
          GENERIC MAP (
382
                INPUT_ACLR_A0 => "ACLR0",
383
                INPUT_ACLR_A1 => "ACLR0",
384
                INPUT_ACLR_B0 => "ACLR0",
385
                INPUT_ACLR_B1 => "ACLR0",
386
                INPUT_REGISTER_A0 => "CLOCK0",
387
                INPUT_REGISTER_A1 => "CLOCK0",
388
                INPUT_REGISTER_B0 => "CLOCK0",
389
                INPUT_REGISTER_B1 => "CLOCK0",
390
                MULTIPLIER1_DIRECTION => "ADD",
391
                MULTIPLIER_ACLR0 => "ACLR0",
392
                MULTIPLIER_ACLR1 => "ACLR0",
393
                MULTIPLIER_REGISTER0 => "CLOCK0",
394
                MULTIPLIER_REGISTER1 => "CLOCK0",
395
                NUMBER_OF_MULTIPLIERS => 2,
396
                OUTPUT_ACLR => "ACLR0",
397
                OUTPUT_REGISTER => "CLOCK0",
398
                port_addnsub1 => "PORT_UNUSED",
399
                port_signa => "PORT_UNUSED",
400
                port_signb => "PORT_UNUSED",
401
                REPRESENTATION_A => "SIGNED",
402
                REPRESENTATION_B => "SIGNED",
403
                WIDTH_A => 18,
404
                WIDTH_B => 18,
405
                WIDTH_RESULT => 36
406
          )
407
          PORT MAP (
408
                aclr0 => aclr,
409
                clock0 => clock,
410
                dataa => mult_add1_inputa,
411
                datab => mult_add2_inputb,
412
                ena0 => ena,
413
                result => wire_mult_add2_result
414
          );
415
 
416
 END RTL; --ip_stratixiv_complex_mult_altmult_complex_0vp
417
--VALID FILE
418
 
419
 
420
LIBRARY ieee;
421
USE ieee.std_logic_1164.all;
422
 
423
ENTITY ip_stratixiv_complex_mult IS
424
        PORT
425
        (
426
                aclr            : IN STD_LOGIC ;
427
                clock           : IN STD_LOGIC ;
428
                dataa_imag              : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
429
                dataa_real              : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
430
                datab_imag              : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
431
                datab_real              : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
432
                ena             : IN STD_LOGIC ;
433
                result_imag             : OUT STD_LOGIC_VECTOR (35 DOWNTO 0);
434
                result_real             : OUT STD_LOGIC_VECTOR (35 DOWNTO 0)
435
        );
436
END ip_stratixiv_complex_mult;
437
 
438
 
439
ARCHITECTURE RTL OF ip_stratixiv_complex_mult IS
440
 
441
        SIGNAL sub_wire0        : STD_LOGIC_VECTOR (35 DOWNTO 0);
442
        SIGNAL sub_wire1        : STD_LOGIC_VECTOR (35 DOWNTO 0);
443
 
444
 
445
 
446
        COMPONENT ip_stratixiv_complex_mult_altmult_complex_0vp
447
        PORT (
448
                        clock   : IN STD_LOGIC ;
449
                        dataa_imag      : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
450
                        ena     : IN STD_LOGIC ;
451
                        result_imag     : OUT STD_LOGIC_VECTOR (35 DOWNTO 0);
452
                        datab_imag      : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
453
                        datab_real      : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
454
                        aclr    : IN STD_LOGIC ;
455
                        dataa_real      : IN STD_LOGIC_VECTOR (17 DOWNTO 0);
456
                        result_real     : OUT STD_LOGIC_VECTOR (35 DOWNTO 0)
457
        );
458
        END COMPONENT;
459
 
460
BEGIN
461
        result_imag    <= sub_wire0(35 DOWNTO 0);
462
        result_real    <= sub_wire1(35 DOWNTO 0);
463
 
464
        ip_stratixiv_complex_mult_altmult_complex_0vp_component : ip_stratixiv_complex_mult_altmult_complex_0vp
465
        PORT MAP (
466
                clock => clock,
467
                dataa_imag => dataa_imag,
468
                ena => ena,
469
                datab_imag => datab_imag,
470
                datab_real => datab_real,
471
                aclr => aclr,
472
                dataa_real => dataa_real,
473
                result_imag => sub_wire0,
474
                result_real => sub_wire1
475
        );
476
 
477
 
478
 
479
END RTL;
480
 
481
-- ============================================================
482
-- CNX file retrieval info
483
-- ============================================================
484
-- Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Stratix IV"
485
-- Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
486
-- Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
487
-- Retrieval info: CONSTANT: IMPLEMENTATION_STYLE STRING "AUTO"
488
-- Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Stratix IV"
489
-- Retrieval info: CONSTANT: PIPELINE NUMERIC "3"
490
-- Retrieval info: CONSTANT: REPRESENTATION_A STRING "SIGNED"
491
-- Retrieval info: CONSTANT: REPRESENTATION_B STRING "SIGNED"
492
-- Retrieval info: CONSTANT: WIDTH_A NUMERIC "18"
493
-- Retrieval info: CONSTANT: WIDTH_B NUMERIC "18"
494
-- Retrieval info: CONSTANT: WIDTH_RESULT NUMERIC "36"
495
-- Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT NODEFVAL "aclr"
496
-- Retrieval info: USED_PORT: clock 0 0 0 0 INPUT NODEFVAL "clock"
497
-- Retrieval info: USED_PORT: dataa_imag 0 0 18 0 INPUT NODEFVAL "dataa_imag[17..0]"
498
-- Retrieval info: USED_PORT: dataa_real 0 0 18 0 INPUT NODEFVAL "dataa_real[17..0]"
499
-- Retrieval info: USED_PORT: datab_imag 0 0 18 0 INPUT NODEFVAL "datab_imag[17..0]"
500
-- Retrieval info: USED_PORT: datab_real 0 0 18 0 INPUT NODEFVAL "datab_real[17..0]"
501
-- Retrieval info: USED_PORT: ena 0 0 0 0 INPUT NODEFVAL "ena"
502
-- Retrieval info: USED_PORT: result_imag 0 0 36 0 OUTPUT NODEFVAL "result_imag[35..0]"
503
-- Retrieval info: USED_PORT: result_real 0 0 36 0 OUTPUT NODEFVAL "result_real[35..0]"
504
-- Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0
505
-- Retrieval info: CONNECT: @clock 0 0 0 0 clock 0 0 0 0
506
-- Retrieval info: CONNECT: @dataa_imag 0 0 18 0 dataa_imag 0 0 18 0
507
-- Retrieval info: CONNECT: @dataa_real 0 0 18 0 dataa_real 0 0 18 0
508
-- Retrieval info: CONNECT: @datab_imag 0 0 18 0 datab_imag 0 0 18 0
509
-- Retrieval info: CONNECT: @datab_real 0 0 18 0 datab_real 0 0 18 0
510
-- Retrieval info: CONNECT: @ena 0 0 0 0 ena 0 0 0 0
511
-- Retrieval info: CONNECT: result_imag 0 0 36 0 @result_imag 0 0 36 0
512
-- Retrieval info: CONNECT: result_real 0 0 36 0 @result_real 0 0 36 0
513
-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_stratixiv_complex_mult.vhd TRUE
514
-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_stratixiv_complex_mult.inc FALSE
515
-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_stratixiv_complex_mult.cmp TRUE
516
-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_stratixiv_complex_mult.bsf FALSE
517
-- Retrieval info: GEN_FILE: TYPE_NORMAL ip_stratixiv_complex_mult_inst.vhd FALSE
518
-- Retrieval info: LIB_FILE: altera_mf

powered by: WebSVN 2.1.0

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