File tree Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Expand file tree Collapse file tree 2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -312,6 +312,7 @@ def __init__(self, platform):
312
312
#pv := PipeValid([('data', 128)]),
313
313
#Converter(128, 8),
314
314
tpiu .TPIUDemux (),
315
+ cobs .ChecksumAppender (),
315
316
cobs .COBSEncoder (),
316
317
cobs .DelimiterAppender (),
317
318
cobs .SuperFramer (7500000 , 65536 ),
Original file line number Diff line number Diff line change @@ -116,6 +116,38 @@ def __init__(self, delimiter = 0):
116
116
self .group_combiner .source .connect (self .source ),
117
117
]
118
118
119
+ class ChecksumAppender (Module ):
120
+ def __init__ (self ):
121
+ self .sink = stream .Endpoint ([('data' , 8 )])
122
+ self .source = stream .Endpoint ([('data' , 8 )])
123
+
124
+ self .submodules .fsm = fsm = FSM ()
125
+
126
+ checksum = Signal (8 )
127
+
128
+ fsm .act ('DATA' ,
129
+ self .sink .connect (self .source , omit = {'last' }),
130
+
131
+ If (self .sink .valid & self .sink .ready ,
132
+ NextValue (checksum , checksum - self .sink .data ),
133
+ ),
134
+
135
+ If (self .sink .valid & self .sink .ready & self .sink .last ,
136
+ NextState ('CHECKSUM' ),
137
+ ),
138
+ )
139
+
140
+ fsm .act ('CHECKSUM' ,
141
+ self .source .data .eq (checksum ),
142
+ self .source .last .eq (1 ),
143
+ self .source .valid .eq (1 ),
144
+
145
+ If (self .source .ready ,
146
+ NextState ('DATA' ),
147
+ NextValue (checksum , 0 ),
148
+ ),
149
+ )
150
+
119
151
class DelimiterAppender (Module ):
120
152
def __init__ (self , delimiter = 0 ):
121
153
self .sink = stream .Endpoint ([('data' , 8 )])
You can’t perform that action at this time.
0 commit comments