1 |
2 |
cmagleby |
// ===========================================================================
|
2 |
|
|
// File : scramble8.vri
|
3 |
|
|
// Author : cwinward
|
4 |
|
|
// Date : Mon Dec 3 11:03:46 MST 2007
|
5 |
|
|
// Project : TI PHY design
|
6 |
|
|
//
|
7 |
|
|
// Copyright (c) notice
|
8 |
|
|
// This code adheres to the GNU public license
|
9 |
|
|
//
|
10 |
|
|
// ===========================================================================
|
11 |
|
|
//
|
12 |
|
|
// $Id: scramble8.vri,v 1.1.1.1 2007-12-05 18:37:07 cmagleby Exp $
|
13 |
|
|
//
|
14 |
|
|
// ===========================================================================
|
15 |
|
|
//
|
16 |
|
|
// $Log: not supported by cvs2svn $
|
17 |
|
|
//
|
18 |
|
|
// ===========================================================================
|
19 |
|
|
// Function : This file scrambles the rx lines and descrambles the tx lines.
|
20 |
|
|
//
|
21 |
|
|
// ===========================================================================
|
22 |
|
|
// ===========================================================================
|
23 |
|
|
#include
|
24 |
|
|
|
25 |
|
|
|
26 |
|
|
|
27 |
|
|
task scramble8(bit [7:0] data_in, bit skp_detect, bit com_detect, bit sram_bypass, bit [15:0] lfsr_old, var bit [7:0] scramble_data, var bit [15:0] lfsr) {
|
28 |
|
|
|
29 |
|
|
|
30 |
|
|
if((sram_bypass == 1'b1) | (com_detect == 1'b1)) {
|
31 |
|
|
scramble_data = data_in;
|
32 |
|
|
}
|
33 |
|
|
else {
|
34 |
|
|
scramble_data[0] = lfsr_old[15] ^ data_in[0];
|
35 |
|
|
scramble_data[1] = lfsr_old[14] ^ data_in[1];
|
36 |
|
|
scramble_data[2] = lfsr_old[13] ^ data_in[2];
|
37 |
|
|
scramble_data[3] = lfsr_old[12] ^ data_in[3];
|
38 |
|
|
scramble_data[4] = lfsr_old[11] ^ data_in[4];
|
39 |
|
|
scramble_data[5] = lfsr_old[10] ^ data_in[5];
|
40 |
|
|
scramble_data[6] = lfsr_old[9] ^ data_in[6];
|
41 |
|
|
scramble_data[7] = lfsr_old[8] ^ data_in[7];
|
42 |
|
|
}
|
43 |
|
|
|
44 |
|
|
|
45 |
|
|
if(com_detect == 1'b1) {
|
46 |
|
|
lfsr = 16'hFFFF;
|
47 |
|
|
}
|
48 |
|
|
else if(skp_detect == 1'b0) {
|
49 |
|
|
lfsr[0] = lfsr_old[8];
|
50 |
|
|
lfsr[1] = lfsr_old[9];
|
51 |
|
|
lfsr[2] = lfsr_old[10];
|
52 |
|
|
lfsr[3] = lfsr_old[8] ^ lfsr_old[11];
|
53 |
|
|
lfsr[4] = lfsr_old[8] ^ lfsr_old[9] ^ lfsr_old[12];
|
54 |
|
|
lfsr[5] = lfsr_old[8] ^ lfsr_old[9] ^ lfsr_old[10] ^ lfsr_old[13];
|
55 |
|
|
lfsr[6] = lfsr_old[9] ^ lfsr_old[10] ^ lfsr_old[11] ^ lfsr_old[14];
|
56 |
|
|
lfsr[7] = lfsr_old[10] ^ lfsr_old[11] ^ lfsr_old[12] ^ lfsr_old[15];
|
57 |
|
|
lfsr[8] = lfsr_old[0] ^ lfsr_old[11] ^ lfsr_old[12] ^ lfsr_old[13];
|
58 |
|
|
lfsr[9] = lfsr_old[1] ^ lfsr_old[12] ^ lfsr_old[13] ^ lfsr_old[14];
|
59 |
|
|
lfsr[10] = lfsr_old[2] ^ lfsr_old[13] ^ lfsr_old[14] ^ lfsr_old[15];
|
60 |
|
|
lfsr[11] = lfsr_old[3] ^ lfsr_old[14] ^ lfsr_old[15];
|
61 |
|
|
lfsr[12] = lfsr_old[4] ^ lfsr_old[15];
|
62 |
|
|
lfsr[13] = lfsr_old[5];
|
63 |
|
|
lfsr[14] = lfsr_old[6];
|
64 |
|
|
lfsr[15] = lfsr_old[7];
|
65 |
|
|
}
|
66 |
|
|
else {
|
67 |
|
|
lfsr = lfsr_old;
|
68 |
|
|
}
|
69 |
|
|
|
70 |
|
|
}
|