1 ----------------------------------------------------------------------------------
5 -- Create Date: 10:
12:
42 12/19/2013
7 -- Module Name: serdes5_wrapper - Behavioral
16 -- Revision 0.
01 -
File Created
17 -- Additional Comments:
19 ----------------------------------------------------------------------------------
21 use IEEE.STD_LOGIC_1164.
ALL;
24 -- Uncomment the following library declaration if using
25 -- arithmetic functions with or values
26 --use IEEE.NUMERIC_STD.ALL;
28 -- Uncomment the following library declaration if instantiating
29 -- any Xilinx primitives in this code.
31 use UNISIM.VComponents.
all;
40 data_valid : in (1 downto 0);
41 sfp_rxp : in (1 downto 0);
42 sfp_rxn : in (1 downto 0);
43 txfsmresetdone : out (1 downto 0);
44 rxfsmresetdone : out (1 downto 0);
45 rxcdrlock : out (1 downto 0);
46 rxnotintable : out array2x4;
47 rxmcommaalignen : in (1 downto 0);
48 rxpcommaalignen : in (1 downto 0);
49 rxbyteisaligned : out (1 downto 0);
50 rxbyterealign : out (1 downto 0);
51 rxcommadet : out (1 downto 0);
52 rxchariscomma : out array2x4;
53 rxcharisk : out array2x4;
54 rxresetdone : out (1 downto 0);
55 txresetdone : out (1 downto 0);
56 txcharisk : in array2x4;
57 txdata : in array2x32;
58 rxdata : out array2x32;
59 sfp_txp : out (1 downto 0);
60 sfp_txn : out (1 downto 0));
64 --component serdes5GpdProd_HCALprod_init
67 -- -- Simulation attributes
68 -- EXAMPLE_SIM_GTRESET_SPEEDUP : := "FALSE"; -- Set
to 1 to speed up sim reset
69 -- EXAMPLE_SIMULATION : := 0; -- Set
to 1 for simulation
70 -- STABLE_CLOCK_PERIOD : := 20; --Period
of the stable clock driving this state-machine, unit
is [ns]
71 -- EXAMPLE_USE_CHIPSCOPE : := 0 -- Set
to 1 to use Chipscope
to drive resets
77 -- SOFT_RESET_IN : in ;
78 -- DONT_RESET_ON_DATA_ERROR_IN : in ;
79 -- GT0_TX_FSM_RESET_DONE_OUT : out ;
80 -- GT0_RX_FSM_RESET_DONE_OUT : out ;
81 -- GT0_DATA_VALID_IN : in ;
82 -- GT1_TX_FSM_RESET_DONE_OUT : out ;
83 -- GT1_RX_FSM_RESET_DONE_OUT : out ;
84 -- GT1_DATA_VALID_IN : in ;
86 -- --_________________________________________________________________________
88 -- --____________________________CHANNEL PORTS________________________________
89 -- ---------------------------- Channel - DRP Ports --------------------------
90 -- GT0_DRPADDR_IN : in (8 downto 0);
91 -- GT0_DRPCLK_IN : in ;
92 -- GT0_DRPDI_IN : in (15 downto 0);
93 -- GT0_DRPDO_OUT : out (15 downto 0);
94 -- GT0_DRPEN_IN : in ;
95 -- GT0_DRPRDY_OUT : out ;
96 -- GT0_DRPWE_IN : in ;
97 -- ------------------------------ Power-Down Ports ----------------------------
98 -- GT0_RXPD_IN : in (1 downto 0);
99 -- GT0_TXPD_IN : in (1 downto 0);
100 -- --------------------- RX Initialization and Reset Ports --------------------
101 -- GT0_RXUSERRDY_IN : in ;
102 -- -------------------------- RX Margin Analysis Ports ------------------------
103 -- GT0_EYESCANDATAERROR_OUT : out ;
104 -- ------------------------- Receive Ports - CDR Ports ------------------------
105 -- GT0_RXCDRLOCK_OUT : out ;
106 -- ------------------- Receive Ports - Clock Correction Ports -----------------
107 -- GT0_RXCLKCORCNT_OUT : out (1 downto 0);
108 -- ------------------ Receive Ports - FPGA RX Interface Ports -----------------
109 -- GT0_RXUSRCLK_IN : in ;
110 -- GT0_RXUSRCLK2_IN : in ;
111 -- ------------------ Receive Ports - FPGA RX interface Ports -----------------
112 -- GT0_RXDATA_OUT : out (31 downto 0);
113 -- ------------------ Receive Ports - RX 8B/10B Decoder Ports -----------------
114 -- GT0_RXDISPERR_OUT : out (3 downto 0);
115 -- GT0_RXNOTINTABLE_OUT : out (3 downto 0);
116 -- --------------------------- Receive Ports - RX AFE -------------------------
117 -- GT0_GTXRXP_IN : in ;
118 -- ------------------------ Receive Ports - RX AFE Ports ----------------------
119 -- GT0_GTXRXN_IN : in ;
120 -- ------------------- Receive Ports - RX Buffer Bypass Ports -----------------
121 -- GT0_RXBUFSTATUS_OUT : out (2 downto 0);
122 -- -------------- Receive Ports - RX Byte and Word Alignment Ports ------------
123 -- GT0_RXBYTEISALIGNED_OUT : out ;
124 -- GT0_RXBYTEREALIGN_OUT : out ;
125 -- GT0_RXCOMMADET_OUT : out ;
126 -- GT0_RXMCOMMAALIGNEN_IN : in ;
127 -- GT0_RXPCOMMAALIGNEN_IN : in ;
128 -- ------------- Receive Ports - RX Initialization and Reset Ports ------------
129 -- GT0_GTRXRESET_IN : in ;
130 -- GT0_RXPMARESET_IN : in ;
131 -- ------------------- Receive Ports - RX8B/10B Decoder Ports -----------------
132 -- GT0_RXCHARISCOMMA_OUT : out (3 downto 0);
133 -- GT0_RXCHARISK_OUT : out (3 downto 0);
134 -- -------------- Receive Ports -RX Initialization and Reset Ports ------------
135 -- GT0_RXRESETDONE_OUT : out ;
136 -- --------------------- TX Initialization and Reset Ports --------------------
137 -- GT0_GTTXRESET_IN : in ;
138 -- GT0_TXUSERRDY_IN : in ;
139 -- ------------------ Transmit Ports - FPGA TX Interface Ports ----------------
140 -- GT0_TXUSRCLK_IN : in ;
141 -- GT0_TXUSRCLK2_IN : in ;
142 -- ------------------ Transmit Ports - TX Data Path interface -----------------
143 -- GT0_TXDATA_IN : in (31 downto 0);
144 -- ---------------- Transmit Ports - TX Driver and OOB signaling --------------
145 -- GT0_GTXTXN_OUT : out ;
146 -- GT0_GTXTXP_OUT : out ;
147 -- ----------- Transmit Ports - TX Fabric Clock Output Control Ports ----------
148 -- GT0_TXOUTCLK_OUT : out ;
149 -- GT0_TXOUTCLKFABRIC_OUT : out ;
150 -- GT0_TXOUTCLKPCS_OUT : out ;
151 -- --------------------- Transmit Ports - TX Gearbox Ports --------------------
152 -- GT0_TXCHARISK_IN : in (3 downto 0);
153 -- ------------- Transmit Ports - TX Initialization and Reset Ports -----------
154 -- GT0_TXRESETDONE_OUT : out ;
156 -- --_________________________________________________________________________
158 -- --____________________________CHANNEL PORTS________________________________
159 -- ---------------------------- Channel - DRP Ports --------------------------
160 -- GT1_DRPADDR_IN : in (8 downto 0);
161 -- GT1_DRPCLK_IN : in ;
162 -- GT1_DRPDI_IN : in (15 downto 0);
163 -- GT1_DRPDO_OUT : out (15 downto 0);
164 -- GT1_DRPEN_IN : in ;
165 -- GT1_DRPRDY_OUT : out ;
166 -- GT1_DRPWE_IN : in ;
167 -- ------------------------------ Power-Down Ports ----------------------------
168 -- GT1_RXPD_IN : in (1 downto 0);
169 -- GT1_TXPD_IN : in (1 downto 0);
170 -- --------------------- RX Initialization and Reset Ports --------------------
171 -- GT1_RXUSERRDY_IN : in ;
172 -- -------------------------- RX Margin Analysis Ports ------------------------
173 -- GT1_EYESCANDATAERROR_OUT : out ;
174 -- ------------------------- Receive Ports - CDR Ports ------------------------
175 -- GT1_RXCDRLOCK_OUT : out ;
176 -- ------------------- Receive Ports - Clock Correction Ports -----------------
177 -- GT1_RXCLKCORCNT_OUT : out (1 downto 0);
178 -- ------------------ Receive Ports - FPGA RX Interface Ports -----------------
179 -- GT1_RXUSRCLK_IN : in ;
180 -- GT1_RXUSRCLK2_IN : in ;
181 -- ------------------ Receive Ports - FPGA RX interface Ports -----------------
182 -- GT1_RXDATA_OUT : out (31 downto 0);
183 -- ------------------ Receive Ports - RX 8B/10B Decoder Ports -----------------
184 -- GT1_RXDISPERR_OUT : out (3 downto 0);
185 -- GT1_RXNOTINTABLE_OUT : out (3 downto 0);
186 -- --------------------------- Receive Ports - RX AFE -------------------------
187 -- GT1_GTXRXP_IN : in ;
188 -- ------------------------ Receive Ports - RX AFE Ports ----------------------
189 -- GT1_GTXRXN_IN : in ;
190 -- ------------------- Receive Ports - RX Buffer Bypass Ports -----------------
191 -- GT1_RXBUFSTATUS_OUT : out (2 downto 0);
192 -- -------------- Receive Ports - RX Byte and Word Alignment Ports ------------
193 -- GT1_RXBYTEISALIGNED_OUT : out ;
194 -- GT1_RXBYTEREALIGN_OUT : out ;
195 -- GT1_RXCOMMADET_OUT : out ;
196 -- GT1_RXMCOMMAALIGNEN_IN : in ;
197 -- GT1_RXPCOMMAALIGNEN_IN : in ;
198 -- ------------- Receive Ports - RX Initialization and Reset Ports ------------
199 -- GT1_GTRXRESET_IN : in ;
200 -- GT1_RXPMARESET_IN : in ;
201 -- ------------------- Receive Ports - RX8B/10B Decoder Ports -----------------
202 -- GT1_RXCHARISCOMMA_OUT : out (3 downto 0);
203 -- GT1_RXCHARISK_OUT : out (3 downto 0);
204 -- -------------- Receive Ports -RX Initialization and Reset Ports ------------
205 -- GT1_RXRESETDONE_OUT : out ;
206 -- --------------------- TX Initialization and Reset Ports --------------------
207 -- GT1_GTTXRESET_IN : in ;
208 -- GT1_TXUSERRDY_IN : in ;
209 -- ------------------ Transmit Ports - FPGA TX Interface Ports ----------------
210 -- GT1_TXUSRCLK_IN : in ;
211 -- GT1_TXUSRCLK2_IN : in ;
212 -- ------------------ Transmit Ports - TX Data Path interface -----------------
213 -- GT1_TXDATA_IN : in (31 downto 0);
214 -- ---------------- Transmit Ports - TX Driver and OOB signaling --------------
215 -- GT1_GTXTXN_OUT : out ;
216 -- GT1_GTXTXP_OUT : out ;
217 -- ----------- Transmit Ports - TX Fabric Clock Output Control Ports ----------
218 -- GT1_TXOUTCLK_OUT : out ;
219 -- GT1_TXOUTCLKFABRIC_OUT : out ;
220 -- GT1_TXOUTCLKPCS_OUT : out ;
221 -- --------------------- Transmit Ports - TX Gearbox Ports --------------------
222 -- GT1_TXCHARISK_IN : in (3 downto 0);
223 -- ------------- Transmit Ports - TX Initialization and Reset Ports -----------
224 -- GT1_TXRESETDONE_OUT : out ;
227 -- --____________________________COMMON PORTS________________________________
228 -- ---------------------- Common Block - Ref Clock Ports ---------------------
229 -- GT0_GTREFCLK0_COMMON_IN : in ;
230 -- ------------------------- Common Block - QPLL Ports ------------------------
231 -- GT0_QPLLLOCK_OUT : out ;
232 -- GT0_QPLLLOCKDETCLK_IN : in ;
233 -- GT0_QPLLRESET_IN : in
238 signal txusrclk : := '0';
239 signal gt0_txoutclk : := '0';
241 --signal : (2 downto 0) := (
others => '0');
244 serdes5Gpd_HCALprod_init_i :
entity work.serdes5Gpd_HCALprod_init
247 SYSCLK_IN => DRPclk ,
248 SOFT_RESET_IN => '0',
249 DONT_RESET_ON_DATA_ERROR_IN => '0',
250 GT0_TX_FSM_RESET_DONE_OUT => txfsmresetdone
(0),
251 GT0_RX_FSM_RESET_DONE_OUT => rxfsmresetdone
(0),
252 GT0_DATA_VALID_IN => data_valid
(0),
253 GT1_TX_FSM_RESET_DONE_OUT => txfsmresetdone
(1),
254 GT1_RX_FSM_RESET_DONE_OUT => rxfsmresetdone
(1),
255 GT1_DATA_VALID_IN => data_valid
(1),
257 --_____________________________________________________________________
258 --_____________________________________________________________________
261 ---------------------------- Channel - DRP Ports --------------------------
262 GT0_DRPADDR_IN =>
(others => '0'
),
263 GT0_DRPCLK_IN => DRPclk,
264 GT0_DRPDI_IN =>
(others => '0'
),
265 GT0_DRPDO_OUT =>
open,
267 GT0_DRPRDY_OUT =>
open,
269 ------------------------------ Power-Down Ports ----------------------------
270 GT0_RXPD_IN => sfp_pd
(0),
271 GT0_TXPD_IN => sfp_pd
(0),
272 --------------------- RX Initialization and Reset Ports --------------------
273 GT0_RXUSERRDY_IN => '0',
274 -------------------------- RX Margin Analysis Ports ------------------------
275 GT0_EYESCANDATAERROR_OUT =>
open,
276 ------------------------- Receive Ports - CDR Ports ------------------------
277 GT0_RXCDRLOCK_OUT => rxcdrlock
(0),
278 ------------------- Receive Ports - Clock Correction Ports -----------------
279 GT0_RXCLKCORCNT_OUT =>
open,
280 ------------------ Receive Ports - FPGA RX Interface Ports -----------------
281 GT0_RXUSRCLK_IN => txusrclk,
282 GT0_RXUSRCLK2_IN => txusrclk,
283 ------------------ Receive Ports - FPGA RX interface Ports -----------------
284 GT0_RXDATA_OUT => rxdata
(0),
285 ------------------ Receive Ports - RX 8B/10B Decoder Ports -----------------
286 GT0_RXDISPERR_OUT =>
open,
287 GT0_RXNOTINTABLE_OUT => rxnotintable
(0),
288 --------------------------- Receive Ports - RX AFE -------------------------
289 GT0_GTXRXP_IN => sfp_rxp
(0),
290 ------------------------ Receive Ports - RX AFE Ports ----------------------
291 GT0_GTXRXN_IN => sfp_rxn
(0),
292 ------------------- Receive Ports - RX Buffer Bypass Ports -----------------
293 GT0_RXBUFSTATUS_OUT =>
open,
294 -------------- Receive Ports - RX Byte and Word Alignment Ports ------------
295 GT0_RXBYTEISALIGNED_OUT => rxbyteisaligned
(0),
296 GT0_RXBYTEREALIGN_OUT => rxbyterealign
(0),
297 GT0_RXCOMMADET_OUT => rxcommadet
(0),
298 GT0_RXMCOMMAALIGNEN_IN => rxmcommaalignen
(0),
299 GT0_RXPCOMMAALIGNEN_IN => rxpcommaalignen
(0),
300 ------------- Receive Ports - RX Initialization and Reset Ports ------------
301 GT0_GTRXRESET_IN => gtx_reset,
302 GT0_RXPMARESET_IN => '0',
303 ------------------- Receive Ports - RX8B/10B Decoder Ports -----------------
304 GT0_RXCHARISCOMMA_OUT => rxchariscomma
(0),
305 GT0_RXCHARISK_OUT => rxcharisk
(0),
306 -------------- Receive Ports -RX Initialization and Reset Ports ------------
307 GT0_RXRESETDONE_OUT => rxresetdone
(0),
308 --------------------- TX Initialization and Reset Ports --------------------
309 GT0_GTTXRESET_IN => gtx_reset,
310 GT0_TXUSERRDY_IN => '0',
311 ------------------ Transmit Ports - FPGA TX Interface Ports ----------------
312 GT0_TXUSRCLK_IN => txusrclk,
313 GT0_TXUSRCLK2_IN => txusrclk,
314 ------------------ Transmit Ports - TX Data Path interface -----------------
315 GT0_TXDATA_IN => txdata
(0),
316 ---------------- Transmit Ports - TX Driver and OOB signaling --------------
317 GT0_GTXTXN_OUT => sfp_txn
(0),
318 GT0_GTXTXP_OUT => sfp_txp
(0),
319 ----------- Transmit Ports - TX Fabric Clock Output Control Ports ----------
320 GT0_TXOUTCLK_OUT => gt0_txoutclk ,
321 GT0_TXOUTCLKFABRIC_OUT =>
open,
322 GT0_TXOUTCLKPCS_OUT =>
open,
323 --------------------- Transmit Ports - TX Gearbox Ports --------------------
324 GT0_TXCHARISK_IN => txcharisk
(0),
325 ------------- Transmit Ports - TX Initialization and Reset Ports -----------
326 GT0_TXRESETDONE_OUT => txresetdone
(0),
333 --_____________________________________________________________________
334 --_____________________________________________________________________
337 ---------------------------- Channel - DRP Ports --------------------------
338 GT1_DRPADDR_IN =>
(others => '0'
),
339 GT1_DRPCLK_IN => DRPclk,
340 GT1_DRPDI_IN =>
(others => '0'
),
341 GT1_DRPDO_OUT =>
open,
343 GT1_DRPRDY_OUT =>
open,
345 ------------------------------ Power-Down Ports ----------------------------
346 GT1_RXPD_IN => sfp_pd
(1),
347 GT1_TXPD_IN => sfp_pd
(1),
348 --------------------- RX Initialization and Reset Ports --------------------
349 GT1_RXUSERRDY_IN => '0',
350 -------------------------- RX Margin Analysis Ports ------------------------
351 GT1_EYESCANDATAERROR_OUT =>
open,
352 ------------------------- Receive Ports - CDR Ports ------------------------
353 GT1_RXCDRLOCK_OUT => rxcdrlock
(1),
354 ------------------- Receive Ports - Clock Correction Ports -----------------
355 GT1_RXCLKCORCNT_OUT =>
open,
356 ------------------ Receive Ports - FPGA RX Interface Ports -----------------
357 GT1_RXUSRCLK_IN => txusrclk,
358 GT1_RXUSRCLK2_IN => txusrclk,
359 ------------------ Receive Ports - FPGA RX interface Ports -----------------
360 GT1_RXDATA_OUT => rxdata
(1),
361 ------------------ Receive Ports - RX 8B/10B Decoder Ports -----------------
362 GT1_RXDISPERR_OUT =>
open,
363 GT1_RXNOTINTABLE_OUT => rxnotintable
(1),
364 --------------------------- Receive Ports - RX AFE -------------------------
365 GT1_GTXRXP_IN => sfp_rxp
(1),
366 ------------------------ Receive Ports - RX AFE Ports ----------------------
367 GT1_GTXRXN_IN => sfp_rxn
(1),
368 ------------------- Receive Ports - RX Buffer Bypass Ports -----------------
369 GT1_RXBUFSTATUS_OUT =>
open,
370 -------------- Receive Ports - RX Byte and Word Alignment Ports ------------
371 GT1_RXBYTEISALIGNED_OUT => rxbyteisaligned
(1),
372 GT1_RXBYTEREALIGN_OUT => rxbyterealign
(1),
373 GT1_RXCOMMADET_OUT => rxcommadet
(1),
374 GT1_RXMCOMMAALIGNEN_IN => rxmcommaalignen
(1),
375 GT1_RXPCOMMAALIGNEN_IN => rxpcommaalignen
(1),
376 ------------- Receive Ports - RX Initialization and Reset Ports ------------
377 GT1_GTRXRESET_IN => gtx_reset,
378 GT1_RXPMARESET_IN => '0',
379 ------------------- Receive Ports - RX8B/10B Decoder Ports -----------------
380 GT1_RXCHARISCOMMA_OUT => rxchariscomma
(1),
381 GT1_RXCHARISK_OUT => rxcharisk
(1),
382 -------------- Receive Ports -RX Initialization and Reset Ports ------------
383 GT1_RXRESETDONE_OUT => rxresetdone
(1),
384 --------------------- TX Initialization and Reset Ports --------------------
385 GT1_GTTXRESET_IN => gtx_reset,
386 GT1_TXUSERRDY_IN => '0',
387 ------------------ Transmit Ports - FPGA TX Interface Ports ----------------
388 GT1_TXUSRCLK_IN => txusrclk,
389 GT1_TXUSRCLK2_IN => txusrclk,
390 ------------------ Transmit Ports - TX Data Path interface -----------------
391 GT1_TXDATA_IN => txdata
(1),
392 ---------------- Transmit Ports - TX Driver and OOB signaling --------------
393 GT1_GTXTXN_OUT => sfp_txn
(1),
394 GT1_GTXTXP_OUT => sfp_txp
(1),
395 ----------- Transmit Ports - TX Fabric Clock Output Control Ports ----------
396 GT1_TXOUTCLK_OUT =>
open,
397 GT1_TXOUTCLKFABRIC_OUT =>
open,
398 GT1_TXOUTCLKPCS_OUT =>
open,
399 --------------------- Transmit Ports - TX Gearbox Ports --------------------
400 GT1_TXCHARISK_IN => txcharisk
(1),
401 ------------- Transmit Ports - TX Initialization and Reset Ports -----------
402 GT1_TXRESETDONE_OUT => txresetdone
(1),
405 --____________________________COMMON PORTS________________________________
406 ---------------------- Common Block - Ref Clock Ports ---------------------
407 GT0_GTREFCLK0_COMMON_IN => refclk,
408 ------------------------- Common Block - QPLL Ports ------------------------
409 GT0_QPLLLOCK_OUT => qplllock,
410 GT0_QPLLLOCKDETCLK_IN => DRPclk,
411 GT0_QPLLRESET_IN => '0'
415 i_txusrclk: bufg
port map(i => gt0_txoutclk, o => txusrclk
);
416 txusrclk_out <= txusrclk;