@@ -32,26 +32,26 @@ module Tcp
32
32
output reg gapped = 0
33
33
);
34
34
35
- parameter [6 :0 ] sIDLE = 6'd000 ;
36
- parameter [6 :0 ] sETH_MACD0 = 6'd002 ;
37
- parameter [6 :0 ] sETH_MACD1 = 6'd003 ;
38
- parameter [6 :0 ] sETH_MACD2 = 6'd004 ;
39
- parameter [6 :0 ] sETH_MACD3 = 6'd005 ;
40
- parameter [6 :0 ] sETH_MACD4 = 6'd006 ;
41
- parameter [6 :0 ] sETH_MACD5 = 6'd007 ;
42
- parameter [6 :0 ] sETH_MACS0 = 6'd008 ;
43
- parameter [6 :0 ] sETH_MACS1 = 6'd009 ;
44
- parameter [6 :0 ] sETH_MACS2 = 6'd010 ;
45
- parameter [6 :0 ] sETH_MACS3 = 6'd011 ;
46
- parameter [6 :0 ] sETH_MACS4 = 6'd012 ;
47
- parameter [6 :0 ] sETH_MACS5 = 6'd013 ;
48
- parameter [6 :0 ] sETH_BADMAC= 6'd014 ;
49
- parameter [6 :0 ] sETH_TYPE0 = 6'd015 ; // type or -> 802.1Q header (TPID)
50
- parameter [6 :0 ] sETH_TYPE1 = 6'd016 ; // type
51
-
52
- parameter [6 :0 ] sETH_802Q1 = 6'd017 ; // 802.1Q header (TPID)
53
- parameter [6 :0 ] sETH_802Q2 = 6'd018 ; // vlan (TCI)
54
- parameter [6 :0 ] sETH_802Q3 = 6'd019 ; // vlan (TCI) => sETH_TYPE0
35
+ localparam [6 :0 ] sIDLE = 6'd000 ;
36
+ localparam [6 :0 ] sETH_MACD0 = 6'd002 ;
37
+ localparam [6 :0 ] sETH_MACD1 = 6'd003 ;
38
+ localparam [6 :0 ] sETH_MACD2 = 6'd004 ;
39
+ localparam [6 :0 ] sETH_MACD3 = 6'd005 ;
40
+ localparam [6 :0 ] sETH_MACD4 = 6'd006 ;
41
+ localparam [6 :0 ] sETH_MACD5 = 6'd007 ;
42
+ localparam [6 :0 ] sETH_MACS0 = 6'd008 ;
43
+ localparam [6 :0 ] sETH_MACS1 = 6'd009 ;
44
+ localparam [6 :0 ] sETH_MACS2 = 6'd010 ;
45
+ localparam [6 :0 ] sETH_MACS3 = 6'd011 ;
46
+ localparam [6 :0 ] sETH_MACS4 = 6'd012 ;
47
+ localparam [6 :0 ] sETH_MACS5 = 6'd013 ;
48
+ localparam [6 :0 ] sETH_BADMAC= 6'd014 ;
49
+ localparam [6 :0 ] sETH_TYPE0 = 6'd015 ; // type or -> 802.1Q header (TPID)
50
+ localparam [6 :0 ] sETH_TYPE1 = 6'd016 ; // type
51
+
52
+ localparam [6 :0 ] sETH_802Q1 = 6'd017 ; // 802.1Q header (TPID)
53
+ localparam [6 :0 ] sETH_802Q2 = 6'd018 ; // vlan (TCI)
54
+ localparam [6 :0 ] sETH_802Q3 = 6'd019 ; // vlan (TCI) => sETH_TYPE0
55
55
56
56
// ethertypes
57
57
// 0x0800 IPv4
@@ -60,83 +60,83 @@ module Tcp
60
60
// 0x86DD IPV6
61
61
//
62
62
// error/counter states
63
- parameter [6 :0 ] sETH_TYPE_IPV6 = 6'd019 ;
64
- parameter [6 :0 ] sETH_TYPE_ERR = 6'd020 ;
65
- parameter [6 :0 ] sETH_TYPE_ARP_0 = 6'd021 ;
66
-
63
+ localparam [6 :0 ] sETH_TYPE_ERR = 6'd020 ;
64
+ localparam [6 :0 ] sETH_TYPE_ARP_0 = 6'd021 ;
65
+ localparam [6 :0 ] sETH_TYPE_IPV6 = 6'd022 ;
66
+
67
67
// IPV4 handing
68
- parameter [6 :0 ] sIPV4_VER_SZ = 6'd030 ;
69
- parameter [6 :0 ] sIPV4_DSCP = 6'd031 ;
70
- parameter [6 :0 ] sIPV4_LEN0 = 6'd032 ;
71
- parameter [6 :0 ] sIPV4_LEN1 = 6'd033 ;
72
- parameter [6 :0 ] sIPV4_ID0 = 6'd034 ;
73
- parameter [6 :0 ] sIPV4_ID1 = 6'd035 ;
74
- parameter [6 :0 ] sIPV4_FRAG0 = 6'd036 ;
75
- parameter [6 :0 ] sIPV4_FRAG1 = 6'd037 ;
76
- parameter [6 :0 ] sIPV4_TTL = 6'd038 ;
77
- parameter [6 :0 ] sIPV4_PCOL = 6'd039 ;
78
- parameter [6 :0 ] sIPV4_CHK0 = 6'd040 ;
79
- parameter [6 :0 ] sIPV4_CHK1 = 6'd041 ;
80
- parameter [6 :0 ] sIPV4_IPSRC0 = 6'd042 ;
81
- parameter [6 :0 ] sIPV4_IPSRC1 = 6'd043 ;
82
- parameter [6 :0 ] sIPV4_IPSRC2 = 6'd044 ;
83
- parameter [6 :0 ] sIPV4_IPSRC3 = 6'd045 ;
84
- parameter [6 :0 ] sIPV4_IPDST0 = 6'd046 ;
85
- parameter [6 :0 ] sIPV4_IPDST1 = 6'd047 ;
86
- parameter [6 :0 ] sIPV4_IPDST2 = 6'd048 ;
87
- parameter [6 :0 ] sIPV4_IPDST3 = 6'd049 ;
88
- parameter [6 :0 ] sIPV4_OPTION0 = 6'd050 ; // ipv4 options repeat 4bytes
89
- parameter [6 :0 ] sIPV4_OPTION1 = 6'd051 ;
90
- parameter [6 :0 ] sIPV4_OPTION2 = 6'd052 ;
91
- parameter [6 :0 ] sIPV4_OPTION3 = 6'd053 ;
68
+ localparam [6 :0 ] sIPV4_VER_SZ = 6'd030 ;
69
+ localparam [6 :0 ] sIPV4_DSCP = 6'd031 ;
70
+ localparam [6 :0 ] sIPV4_LEN0 = 6'd032 ;
71
+ localparam [6 :0 ] sIPV4_LEN1 = 6'd033 ;
72
+ localparam [6 :0 ] sIPV4_ID0 = 6'd034 ;
73
+ localparam [6 :0 ] sIPV4_ID1 = 6'd035 ;
74
+ localparam [6 :0 ] sIPV4_FRAG0 = 6'd036 ;
75
+ localparam [6 :0 ] sIPV4_FRAG1 = 6'd037 ;
76
+ localparam [6 :0 ] sIPV4_TTL = 6'd038 ;
77
+ localparam [6 :0 ] sIPV4_PCOL = 6'd039 ;
78
+ localparam [6 :0 ] sIPV4_CHK0 = 6'd040 ;
79
+ localparam [6 :0 ] sIPV4_CHK1 = 6'd041 ;
80
+ localparam [6 :0 ] sIPV4_IPSRC0 = 6'd042 ;
81
+ localparam [6 :0 ] sIPV4_IPSRC1 = 6'd043 ;
82
+ localparam [6 :0 ] sIPV4_IPSRC2 = 6'd044 ;
83
+ localparam [6 :0 ] sIPV4_IPSRC3 = 6'd045 ;
84
+ localparam [6 :0 ] sIPV4_IPDST0 = 6'd046 ;
85
+ localparam [6 :0 ] sIPV4_IPDST1 = 6'd047 ;
86
+ localparam [6 :0 ] sIPV4_IPDST2 = 6'd048 ;
87
+ localparam [6 :0 ] sIPV4_IPDST3 = 6'd049 ;
88
+ localparam [6 :0 ] sIPV4_OPTION0 = 6'd050 ; // ipv4 options repeat 4bytes
89
+ localparam [6 :0 ] sIPV4_OPTION1 = 6'd051 ;
90
+ localparam [6 :0 ] sIPV4_OPTION2 = 6'd052 ;
91
+ localparam [6 :0 ] sIPV4_OPTION3 = 6'd053 ;
92
92
93
93
// IPV4 protocol types
94
- parameter [7 :0 ] IPV4_PCOL_ICMP = 8'h01 ; // ICMP
95
- parameter [7 :0 ] IPV4_PCOL_IGMP = 8'h02 ; // IGMP
96
- parameter [7 :0 ] IPV4_PCOL_TCP = 8'h06 ; // TCP
97
- parameter [7 :0 ] IPV4_PCOL_UDP = 8'h11 ; // UDP
98
- parameter [7 :0 ] IPV4_PCOL_ENCAP = 8'h62 ; // ENCAP
99
- parameter [7 :0 ] IPV4_PCOL_OSPF = 8'h59 ; // OSPF
94
+ localparam [7 :0 ] IPV4_PCOL_ICMP = 8'h01 ; // ICMP
95
+ localparam [7 :0 ] IPV4_PCOL_IGMP = 8'h02 ; // IGMP
96
+ localparam [7 :0 ] IPV4_PCOL_TCP = 8'h06 ; // TCP
97
+ localparam [7 :0 ] IPV4_PCOL_UDP = 8'h11 ; // UDP
98
+ localparam [7 :0 ] IPV4_PCOL_ENCAP = 8'h62 ; // ENCAP
99
+ localparam [7 :0 ] IPV4_PCOL_OSPF = 8'h59 ; // OSPF
100
100
101
101
// states to handle
102
- parameter [6 :0 ] sICMP0 = 6'd055 ;
103
- parameter [6 :0 ] sIGMP0 = 6'd056 ;
104
- parameter [6 :0 ] sUDP0 = 6'd057 ;
105
- parameter [6 :0 ] sIPV4_TYPE_ERR = 6'd058 ;
106
- parameter [6 :0 ] sENCAP0 = 6'd059 ;
107
- parameter [6 :0 ] sOSPF = 6'd060 ;
108
- parameter [6 :0 ] sARP0 = 6'd061 ;
109
-
110
- parameter [6 :0 ] sTCP_SRCP0 = 7'd070 ;
111
- parameter [6 :0 ] sTCP_SRCP1 = 7'd071 ;
112
- parameter [6 :0 ] sTCP_DSTP0 = 7'd072 ;
113
- parameter [6 :0 ] sTCP_DSTP1 = 7'd073 ;
114
- parameter [6 :0 ] sTCP_SEQ0 = 7'd074 ;
115
- parameter [6 :0 ] sTCP_SEQ1 = 7'd075 ;
116
- parameter [6 :0 ] sTCP_SEQ2 = 7'd076 ;
117
- parameter [6 :0 ] sTCP_SEQ3 = 7'd077 ;
118
- parameter [6 :0 ] sTCP_ACK0 = 7'd078 ;
119
- parameter [6 :0 ] sTCP_ACK1 = 7'd079 ;
120
- parameter [6 :0 ] sTCP_ACK2 = 7'd080 ;
121
- parameter [6 :0 ] sTCP_ACK3 = 7'd081 ;
122
- parameter [6 :0 ] sTCP_DATAOFF = 7'd082 ;
123
- parameter [6 :0 ] sTCP_FLAGS = 7'd083 ;
124
- parameter [6 :0 ] sTCP_WINSZ0 = 7'd084 ;
125
- parameter [6 :0 ] sTCP_WINSZ1 = 7'd085 ;
126
- parameter [6 :0 ] sTCP_CHK0 = 7'd086 ;
127
- parameter [6 :0 ] sTCP_CHK1 = 7'd087 ;
128
- parameter [6 :0 ] sTCP_URG0 = 7'd088 ;
129
- parameter [6 :0 ] sTCP_URG1 = 7'd089 ;
130
- parameter [6 :0 ] sTCP_OPT0 = 7'd090 ;
131
- parameter [6 :0 ] sTCP_OPT1 = 7'd091 ;
132
- parameter [6 :0 ] sTCP_OPT2 = 7'd092 ;
133
- parameter [6 :0 ] sTCP_OPT3 = 7'd093 ;
134
-
135
- parameter [6 :0 ] sTCP_DATA = 7'd095 ;
102
+ localparam [6 :0 ] sICMP0 = 6'd055 ;
103
+ localparam [6 :0 ] sIGMP0 = 6'd056 ;
104
+ localparam [6 :0 ] sUDP0 = 6'd057 ;
105
+ localparam [6 :0 ] sIPV4_TYPE_ERR = 6'd058 ;
106
+ localparam [6 :0 ] sENCAP0 = 6'd059 ;
107
+ localparam [6 :0 ] sOSPF = 6'd060 ;
108
+ localparam [6 :0 ] sARP0 = 6'd061 ;
109
+
110
+ localparam [6 :0 ] sTCP_SRCP0 = 7'd070 ;
111
+ localparam [6 :0 ] sTCP_SRCP1 = 7'd071 ;
112
+ localparam [6 :0 ] sTCP_DSTP0 = 7'd072 ;
113
+ localparam [6 :0 ] sTCP_DSTP1 = 7'd073 ;
114
+ localparam [6 :0 ] sTCP_SEQ0 = 7'd074 ;
115
+ localparam [6 :0 ] sTCP_SEQ1 = 7'd075 ;
116
+ localparam [6 :0 ] sTCP_SEQ2 = 7'd076 ;
117
+ localparam [6 :0 ] sTCP_SEQ3 = 7'd077 ;
118
+ localparam [6 :0 ] sTCP_ACK0 = 7'd078 ;
119
+ localparam [6 :0 ] sTCP_ACK1 = 7'd079 ;
120
+ localparam [6 :0 ] sTCP_ACK2 = 7'd080 ;
121
+ localparam [6 :0 ] sTCP_ACK3 = 7'd081 ;
122
+ localparam [6 :0 ] sTCP_DATAOFF = 7'd082 ;
123
+ localparam [6 :0 ] sTCP_FLAGS = 7'd083 ;
124
+ localparam [6 :0 ] sTCP_WINSZ0 = 7'd084 ;
125
+ localparam [6 :0 ] sTCP_WINSZ1 = 7'd085 ;
126
+ localparam [6 :0 ] sTCP_CHK0 = 7'd086 ;
127
+ localparam [6 :0 ] sTCP_CHK1 = 7'd087 ;
128
+ localparam [6 :0 ] sTCP_URG0 = 7'd088 ;
129
+ localparam [6 :0 ] sTCP_URG1 = 7'd089 ;
130
+ localparam [6 :0 ] sTCP_OPT0 = 7'd090 ;
131
+ localparam [6 :0 ] sTCP_OPT1 = 7'd091 ;
132
+ localparam [6 :0 ] sTCP_OPT2 = 7'd092 ;
133
+ localparam [6 :0 ] sTCP_OPT3 = 7'd093 ;
134
+
135
+ localparam [6 :0 ] sTCP_DATA = 7'd095 ;
136
136
137
137
138
138
// fixed size of an IP header (20) and TCP header (20) without any optional headers
139
- parameter [15 :0 ] SZ_IP_TCP_NOOPTIONS = 16'd20 + 16'd20 ;
139
+ localparam [15 :0 ] SZ_IP_TCP_NOOPTIONS = 16'd20 + 16'd20 ;
140
140
141
141
// hot state
142
142
reg [7 :0 ] pos = 0 ;
0 commit comments