Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | // ========== Copyright Header Begin ========================================== |
2 | // | |
3 | // OpenSPARC T2 Processor File: pcs_tx_disparity.v | |
4 | // Copyright (C) 1995-2007 Sun Microsystems, Inc. All Rights Reserved | |
5 | // 4150 Network Circle, Santa Clara, California 95054, U.S.A. | |
6 | // | |
7 | // * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | |
8 | // | |
9 | // This program is free software; you can redistribute it and/or modify | |
10 | // it under the terms of the GNU General Public License as published by | |
11 | // the Free Software Foundation; version 2 of the License. | |
12 | // | |
13 | // This program is distributed in the hope that it will be useful, | |
14 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | // GNU General Public License for more details. | |
17 | // | |
18 | // You should have received a copy of the GNU General Public License | |
19 | // along with this program; if not, write to the Free Software | |
20 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
21 | // | |
22 | // For the avoidance of doubt, and except that if any non-GPL license | |
23 | // choice is available it will apply instead, Sun elects to use only | |
24 | // the General Public License version 2 (GPLv2) at this time for any | |
25 | // software where a choice of GPL license versions is made | |
26 | // available with the language indicating that GPLv2 or any later version | |
27 | // may be used, or where a choice of which version of the GPL is applied is | |
28 | // otherwise unspecified. | |
29 | // | |
30 | // Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, | |
31 | // CA 95054 USA or visit www.sun.com if you need additional information or | |
32 | // have any questions. | |
33 | // | |
34 | // ========== Copyright Header End ============================================ | |
35 | // @(#)pcs_tx_disparity.v 1.1G | |
36 | /**********************************************************************/ | |
37 | /* Project Name : CASSINI */ | |
38 | /* Module Name : PCS Tx Running Disparity Calculator */ | |
39 | /* Description : Calculates new running disparity based on */ | |
40 | /* disparity and incoming data for use by encoder. */ | |
41 | /* */ | |
42 | /* Assumptions : none. */ | |
43 | /* */ | |
44 | /* Parent module : pcs_decoder.v */ | |
45 | /* Child modules : none. */ | |
46 | /* Author Name : Linda Chen */ | |
47 | /* Date Created : 10/21/96 */ | |
48 | /* */ | |
49 | /* Copyright (c) 1994, Sun Microsystems, Inc. */ | |
50 | /* Sun Proprietary and Confidential */ | |
51 | /* */ | |
52 | /* Modifications : none yet */ | |
53 | /* Synthesis Notes : none yet */ | |
54 | /**********************************************************************/ | |
55 | ||
56 | `include "pcs_define.h" | |
57 | ||
58 | module pcs_tx_disparity (reset_tx, txclk,special_char, tx_enc_sel,// inputs | |
59 | data, RDreg, | |
60 | ||
61 | RD); // outputs | |
62 | ||
63 | input reset_tx; // reset to initial RD to neg | |
64 | input txclk; // 125 MHz Tx clk | |
65 | input special_char; // special char indication | |
66 | input [3:0] tx_enc_sel; // encoder control | |
67 | input [7:0] data; // non-encoded data | |
68 | input RDreg; // running disparity calculated | |
69 | ||
70 | output RD; // running disparity final | |
71 | ||
72 | wire rst_reg; // delayed reset by one clock to init rundisp | |
73 | ||
74 | assign RD = rst_reg ? 1'b0 : rd_fn (special_char,tx_enc_sel,data,RDreg); | |
75 | ||
76 | REG #(1) r_rstreg( .din(reset_tx), .clk(txclk), .qout(rst_reg) ); | |
77 | ||
78 | function rd_fn; | |
79 | ||
80 | input special_char; | |
81 | input [3:0] tx_enc_sel; | |
82 | input [7:0] data; | |
83 | input RDreg; | |
84 | if (!special_char) | |
85 | case (data[7:0]) //synopsys parallel_case full_case | |
86 | ||
87 | 8'h00: rd_fn = RDreg; | |
88 | 8'h01: rd_fn = RDreg; | |
89 | 8'h02: rd_fn = RDreg; | |
90 | 8'h03: rd_fn = ~RDreg; | |
91 | ||
92 | 8'h04: rd_fn = RDreg; | |
93 | 8'h05: rd_fn = ~RDreg; | |
94 | 8'h06: rd_fn = ~RDreg; | |
95 | 8'h07: rd_fn = ~RDreg; | |
96 | ||
97 | 8'h08: rd_fn = RDreg; | |
98 | 8'h09: rd_fn = ~RDreg; | |
99 | 8'h0a: rd_fn = ~RDreg; | |
100 | 8'h0b: rd_fn = ~RDreg; | |
101 | ||
102 | 8'h0c: rd_fn = ~RDreg; | |
103 | 8'h0d: rd_fn = ~RDreg; | |
104 | 8'h0e: rd_fn = ~RDreg; | |
105 | 8'h0f: rd_fn = RDreg; | |
106 | ||
107 | 8'h10: rd_fn = RDreg; | |
108 | 8'h11: rd_fn = ~RDreg; | |
109 | 8'h12: rd_fn = ~RDreg; | |
110 | 8'h13: rd_fn = ~RDreg; | |
111 | ||
112 | 8'h14: rd_fn = ~RDreg; | |
113 | 8'h15: rd_fn = ~RDreg; | |
114 | 8'h16: rd_fn = ~RDreg; | |
115 | 8'h17: rd_fn = RDreg; | |
116 | ||
117 | 8'h18: rd_fn = RDreg; | |
118 | 8'h19: rd_fn = ~RDreg; | |
119 | 8'h1a: rd_fn = ~RDreg; | |
120 | 8'h1b: rd_fn = RDreg; | |
121 | ||
122 | 8'h1c: rd_fn = ~RDreg; | |
123 | 8'h1d: rd_fn = RDreg; | |
124 | 8'h1e: rd_fn = RDreg; | |
125 | 8'h1f: rd_fn = RDreg; | |
126 | ||
127 | 8'h20: rd_fn = ~RDreg; | |
128 | 8'h21: rd_fn = ~RDreg; | |
129 | 8'h22: rd_fn = ~RDreg; | |
130 | 8'h23: rd_fn = RDreg; | |
131 | ||
132 | 8'h24: rd_fn = ~RDreg; | |
133 | 8'h25: rd_fn = RDreg; | |
134 | 8'h26: rd_fn = RDreg; | |
135 | 8'h27: rd_fn = RDreg; | |
136 | ||
137 | 8'h28: rd_fn = ~RDreg; | |
138 | 8'h29: rd_fn = RDreg; | |
139 | 8'h2a: rd_fn = RDreg; | |
140 | 8'h2b: rd_fn = RDreg; | |
141 | ||
142 | 8'h2c: rd_fn = RDreg; | |
143 | 8'h2d: rd_fn = RDreg; | |
144 | 8'h2e: rd_fn = RDreg; | |
145 | 8'h2f: rd_fn = ~RDreg; | |
146 | ||
147 | 8'h30: rd_fn = ~RDreg; | |
148 | 8'h31: rd_fn = RDreg; | |
149 | 8'h32: rd_fn = RDreg; | |
150 | 8'h33: rd_fn = RDreg; | |
151 | ||
152 | 8'h34: rd_fn = RDreg; | |
153 | 8'h35: rd_fn = RDreg; | |
154 | 8'h36: rd_fn = RDreg; | |
155 | 8'h37: rd_fn = ~RDreg; | |
156 | ||
157 | 8'h38: rd_fn = ~RDreg; | |
158 | 8'h39: rd_fn = RDreg; | |
159 | 8'h3a: rd_fn = RDreg; | |
160 | 8'h3b: rd_fn = ~RDreg; | |
161 | ||
162 | 8'h3c: rd_fn = RDreg; | |
163 | 8'h3d: rd_fn = ~RDreg; | |
164 | 8'h3e: rd_fn = ~RDreg; | |
165 | 8'h3f: rd_fn = ~RDreg; | |
166 | ||
167 | 8'h40: rd_fn = ~RDreg; | |
168 | 8'h41: rd_fn = ~RDreg; | |
169 | 8'h42: rd_fn = ~RDreg; | |
170 | 8'h43: rd_fn = RDreg; | |
171 | ||
172 | 8'h44: rd_fn = ~RDreg; | |
173 | 8'h45: rd_fn = RDreg; | |
174 | 8'h46: rd_fn = RDreg; | |
175 | 8'h47: rd_fn = RDreg; | |
176 | ||
177 | 8'h48: rd_fn = ~RDreg; | |
178 | 8'h49: rd_fn = RDreg; | |
179 | 8'h4a: rd_fn = RDreg; | |
180 | 8'h4b: rd_fn = RDreg; | |
181 | ||
182 | 8'h4c: rd_fn = RDreg; | |
183 | 8'h4d: rd_fn = RDreg; | |
184 | 8'h4e: rd_fn = RDreg; | |
185 | 8'h4f: rd_fn = ~RDreg; | |
186 | ||
187 | 8'h50: rd_fn = ~RDreg; | |
188 | 8'h51: rd_fn = RDreg; | |
189 | 8'h52: rd_fn = RDreg; | |
190 | 8'h53: rd_fn = RDreg; | |
191 | ||
192 | 8'h54: rd_fn = RDreg; | |
193 | 8'h55: rd_fn = RDreg; | |
194 | 8'h56: rd_fn = RDreg; | |
195 | 8'h57: rd_fn = ~RDreg; | |
196 | ||
197 | 8'h58: rd_fn = ~RDreg; | |
198 | 8'h59: rd_fn = RDreg; | |
199 | 8'h5a: rd_fn = RDreg; | |
200 | 8'h5b: rd_fn = ~RDreg; | |
201 | ||
202 | 8'h5c: rd_fn = RDreg; | |
203 | 8'h5d: rd_fn = ~RDreg; | |
204 | 8'h5e: rd_fn = ~RDreg; | |
205 | 8'h5f: rd_fn = ~RDreg; | |
206 | ||
207 | 8'h60: rd_fn = ~RDreg; | |
208 | 8'h61: rd_fn = ~RDreg; | |
209 | 8'h62: rd_fn = ~RDreg; | |
210 | 8'h63: rd_fn = RDreg; | |
211 | ||
212 | 8'h64: rd_fn = ~RDreg; | |
213 | 8'h65: rd_fn = RDreg; | |
214 | 8'h66: rd_fn = RDreg; | |
215 | 8'h67: rd_fn = RDreg; | |
216 | ||
217 | 8'h68: rd_fn = ~RDreg; | |
218 | 8'h69: rd_fn = RDreg; | |
219 | 8'h6a: rd_fn = RDreg; | |
220 | 8'h6b: rd_fn = RDreg; | |
221 | ||
222 | 8'h6c: rd_fn = RDreg; | |
223 | 8'h6d: rd_fn = RDreg; | |
224 | 8'h6e: rd_fn = RDreg; | |
225 | 8'h6f: rd_fn = ~RDreg; | |
226 | ||
227 | 8'h70: rd_fn = ~RDreg; | |
228 | 8'h71: rd_fn = RDreg; | |
229 | 8'h72: rd_fn = RDreg; | |
230 | 8'h73: rd_fn = RDreg; | |
231 | ||
232 | 8'h74: rd_fn = RDreg; | |
233 | 8'h75: rd_fn = RDreg; | |
234 | 8'h76: rd_fn = RDreg; | |
235 | 8'h77: rd_fn = ~RDreg; | |
236 | ||
237 | 8'h78: rd_fn = ~RDreg; | |
238 | 8'h79: rd_fn = RDreg; | |
239 | 8'h7a: rd_fn = RDreg; | |
240 | 8'h7b: rd_fn = ~RDreg; | |
241 | ||
242 | 8'h7c: rd_fn = RDreg; | |
243 | 8'h7d: rd_fn = ~RDreg; | |
244 | 8'h7e: rd_fn = ~RDreg; | |
245 | 8'h7f: rd_fn = ~RDreg; | |
246 | ||
247 | 8'h80: rd_fn = RDreg; | |
248 | 8'h81: rd_fn = RDreg; | |
249 | 8'h82: rd_fn = RDreg; | |
250 | 8'h83: rd_fn = ~RDreg; | |
251 | ||
252 | 8'h84: rd_fn = RDreg; | |
253 | 8'h85: rd_fn = ~RDreg; | |
254 | 8'h86: rd_fn = ~RDreg; | |
255 | 8'h87: rd_fn = ~RDreg; | |
256 | ||
257 | 8'h88: rd_fn = RDreg; | |
258 | 8'h89: rd_fn = ~RDreg; | |
259 | 8'h8a: rd_fn = ~RDreg; | |
260 | 8'h8b: rd_fn = ~RDreg; | |
261 | ||
262 | 8'h8c: rd_fn = ~RDreg; | |
263 | 8'h8d: rd_fn = ~RDreg; | |
264 | 8'h8e: rd_fn = ~RDreg; | |
265 | 8'h8f: rd_fn = RDreg; | |
266 | ||
267 | 8'h90: rd_fn = RDreg; | |
268 | 8'h91: rd_fn = ~RDreg; | |
269 | 8'h92: rd_fn = ~RDreg; | |
270 | 8'h93: rd_fn = ~RDreg; | |
271 | ||
272 | 8'h94: rd_fn = ~RDreg; | |
273 | 8'h95: rd_fn = ~RDreg; | |
274 | 8'h96: rd_fn = ~RDreg; | |
275 | 8'h97: rd_fn = RDreg; | |
276 | ||
277 | 8'h98: rd_fn = RDreg; | |
278 | 8'h99: rd_fn = ~RDreg; | |
279 | 8'h9a: rd_fn = ~RDreg; | |
280 | 8'h9b: rd_fn = RDreg; | |
281 | ||
282 | 8'h9c: rd_fn = ~RDreg; | |
283 | 8'h9d: rd_fn = RDreg; | |
284 | 8'h9e: rd_fn = RDreg; | |
285 | 8'h9f: rd_fn = RDreg; | |
286 | ||
287 | 8'ha0: rd_fn = ~RDreg; | |
288 | 8'ha1: rd_fn = ~RDreg; | |
289 | 8'ha2: rd_fn = ~RDreg; | |
290 | 8'ha3: rd_fn = RDreg; | |
291 | ||
292 | 8'ha4: rd_fn = ~RDreg; | |
293 | 8'ha5: rd_fn = RDreg; | |
294 | 8'ha6: rd_fn = RDreg; | |
295 | 8'ha7: rd_fn = RDreg; | |
296 | ||
297 | 8'ha8: rd_fn = ~RDreg; | |
298 | 8'ha9: rd_fn = RDreg; | |
299 | 8'haa: rd_fn = RDreg; | |
300 | 8'hab: rd_fn = RDreg; | |
301 | ||
302 | 8'hac: rd_fn = RDreg; | |
303 | 8'had: rd_fn = RDreg; | |
304 | 8'hae: rd_fn = RDreg; | |
305 | 8'haf: rd_fn = ~RDreg; | |
306 | ||
307 | 8'hb0: rd_fn = ~RDreg; | |
308 | 8'hb1: rd_fn = RDreg; | |
309 | 8'hb2: rd_fn = RDreg; | |
310 | 8'hb3: rd_fn = RDreg; | |
311 | ||
312 | 8'hb4: rd_fn = RDreg; | |
313 | 8'hb5: rd_fn = RDreg; | |
314 | 8'hb6: rd_fn = RDreg; | |
315 | 8'hb7: rd_fn = ~RDreg; | |
316 | ||
317 | 8'hb8: rd_fn = ~RDreg; | |
318 | 8'hb9: rd_fn = RDreg; | |
319 | 8'hba: rd_fn = RDreg; | |
320 | 8'hbb: rd_fn = ~RDreg; | |
321 | ||
322 | 8'hbc: rd_fn = RDreg; | |
323 | 8'hbd: rd_fn = ~RDreg; | |
324 | 8'hbe: rd_fn = ~RDreg; | |
325 | 8'hbf: rd_fn = ~RDreg; | |
326 | ||
327 | 8'hc0: rd_fn = ~RDreg; | |
328 | 8'hc1: rd_fn = ~RDreg; | |
329 | 8'hc2: rd_fn = ~RDreg; | |
330 | 8'hc3: rd_fn = RDreg; | |
331 | ||
332 | 8'hc4: rd_fn = ~RDreg; | |
333 | 8'hc5: rd_fn = RDreg; | |
334 | 8'hc6: rd_fn = RDreg; | |
335 | 8'hc7: rd_fn = RDreg; | |
336 | ||
337 | 8'hc8: rd_fn = ~RDreg; | |
338 | 8'hc9: rd_fn = RDreg; | |
339 | 8'hca: rd_fn = RDreg; | |
340 | 8'hcb: rd_fn = RDreg; | |
341 | ||
342 | 8'hcc: rd_fn = RDreg; | |
343 | 8'hcd: rd_fn = RDreg; | |
344 | 8'hce: rd_fn = RDreg; | |
345 | 8'hcf: rd_fn = ~RDreg; | |
346 | ||
347 | 8'hd0: rd_fn = ~RDreg; | |
348 | 8'hd1: rd_fn = RDreg; | |
349 | 8'hd2: rd_fn = RDreg; | |
350 | 8'hd3: rd_fn = RDreg; | |
351 | ||
352 | 8'hd4: rd_fn = RDreg; | |
353 | 8'hd5: rd_fn = RDreg; | |
354 | 8'hd6: rd_fn = RDreg; | |
355 | 8'hd7: rd_fn = ~RDreg; | |
356 | ||
357 | 8'hd8: rd_fn = ~RDreg; | |
358 | 8'hd9: rd_fn = RDreg; | |
359 | 8'hda: rd_fn = RDreg; | |
360 | 8'hdb: rd_fn = ~RDreg; | |
361 | ||
362 | 8'hdc: rd_fn = RDreg; | |
363 | 8'hdd: rd_fn = ~RDreg; | |
364 | 8'hde: rd_fn = ~RDreg; | |
365 | 8'hdf: rd_fn = ~RDreg; | |
366 | ||
367 | 8'he0: rd_fn = RDreg; | |
368 | 8'he1: rd_fn = RDreg; | |
369 | 8'he2: rd_fn = RDreg; | |
370 | 8'he3: rd_fn = ~RDreg; | |
371 | ||
372 | 8'he4: rd_fn = RDreg; | |
373 | 8'he5: rd_fn = ~RDreg; | |
374 | 8'he6: rd_fn = ~RDreg; | |
375 | 8'he7: rd_fn = ~RDreg; | |
376 | ||
377 | 8'he8: rd_fn = RDreg; | |
378 | 8'he9: rd_fn = ~RDreg; | |
379 | 8'hea: rd_fn = ~RDreg; | |
380 | 8'heb: rd_fn = ~RDreg; | |
381 | ||
382 | 8'hec: rd_fn = ~RDreg; | |
383 | 8'hed: rd_fn = ~RDreg; | |
384 | 8'hee: rd_fn = ~RDreg; | |
385 | 8'hef: rd_fn = RDreg; | |
386 | ||
387 | 8'hf0: rd_fn = RDreg; | |
388 | 8'hf1: rd_fn = ~RDreg; | |
389 | 8'hf2: rd_fn = ~RDreg; | |
390 | 8'hf3: rd_fn = ~RDreg; | |
391 | ||
392 | 8'hf4: rd_fn = ~RDreg; | |
393 | 8'hf5: rd_fn = ~RDreg; | |
394 | 8'hf6: rd_fn = ~RDreg; | |
395 | 8'hf7: rd_fn = RDreg; | |
396 | ||
397 | 8'hf8: rd_fn = RDreg; | |
398 | 8'hf9: rd_fn = ~RDreg; | |
399 | 8'hfa: rd_fn = ~RDreg; | |
400 | 8'hfb: rd_fn = RDreg; | |
401 | ||
402 | 8'hfc: rd_fn = ~RDreg; | |
403 | 8'hfd: rd_fn = RDreg; | |
404 | 8'hfe: rd_fn = RDreg; | |
405 | 8'hff: rd_fn = RDreg; | |
406 | ||
407 | endcase | |
408 | ||
409 | else | |
410 | case (tx_enc_sel) // synopsys parallel_case full_case | |
411 | `PCS_ENC_K285 : // 4'h0 - K28.5 | |
412 | rd_fn = ~RDreg; | |
413 | `PCS_ENC_IDLE2 : // 4'h1 - D16.2 | |
414 | rd_fn = ~RDreg; | |
415 | `PCS_ENC_SOP : // 4'h2 - K27.7 | |
416 | rd_fn = RDreg; | |
417 | `PCS_ENC_T_CHAR : // 4'h4 - K29.7 | |
418 | rd_fn = RDreg; | |
419 | `PCS_ENC_R_CHAR : // 4'h5 - K23.7 | |
420 | rd_fn = RDreg; | |
421 | `PCS_ENC_IDLE1 : // 4'h6 - D5.6 | |
422 | rd_fn = RDreg; | |
423 | `PCS_ENC_H_CHAR : // 4'h7 - K30.7 | |
424 | rd_fn = RDreg; | |
425 | `PCS_ENC_LINK_CONFA : // 4'h8 - D21.5 | |
426 | rd_fn = RDreg; | |
427 | `PCS_ENC_LINK_CONFB : // 4'h9 - D2.2 | |
428 | rd_fn = ~RDreg; | |
429 | endcase | |
430 | ||
431 | endfunction | |
432 | ||
433 | endmodule |