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
|