@@ -232,22 +232,28 @@ def elaborate(self, platform):
232232 wrapper .sink .last .eq (1 ),
233233 ]
234234 with m .If (display .done & ~ display .source .valid ):
235- # On the first time after initialization
236- # we want to clear the frame buffer to make
237- # sure we do not display crap.
238- with m .If (~ self .ready ):
239- m .next = "CLEAR"
240- with m .Else ():
241- m .next = "FRAMEBUFFER"
242-
243- with m .State ("CLEAR" ):
244- m .d .comb += [
245- wrapper .sink .valid .eq (1 ),
246- wrapper .sink .data .eq (0 ), # Black pixels
247- wrapper .sink .last .eq (cnt == self ._size - 1 ),
248- wrapper .sink .d_cn .eq (1 ), # Framebuffer data
249- ]
250- with m .If (wrapper .sink .ready ):
235+ m .next = "FRAMEBUFFER"
236+
237+ with m .State ("FRAMEBUFFER" ):
238+ # On the first time after initialization
239+ # we want to clear the frame buffer to make
240+ # sure we do not display crap.
241+ with m .If (~ self .ready ):
242+ m .d .comb += [
243+ wrapper .sink .valid .eq (1 ),
244+ wrapper .sink .data .eq (0 ), # Black pixels
245+ wrapper .sink .last .eq ((cnt == self ._size - 1 )),
246+ ]
247+ with m .Else ():
248+ m .d .comb += [
249+ wrapper .sink .valid .eq (sink .valid ),
250+ wrapper .sink .data .eq (sink .data ),
251+ wrapper .sink .last .eq ((cnt == self ._size - 1 ) | sink .last ),
252+ sink .ready .eq (wrapper .sink .ready ),
253+ ]
254+ m .d .comb += wrapper .sink .d_cn .eq (1 ) # Framebuffer data
255+
256+ with m .If (wrapper .sink .valid & wrapper .sink .ready ):
251257 with m .If (~ wrapper .sink .last ):
252258 m .d .sync += cnt .eq (cnt + 1 )
253259 with m .Else ():
@@ -256,13 +262,4 @@ def elaborate(self, platform):
256262 m .d .comb += display .rewind .eq (1 )
257263 m .next = "DISPLAY"
258264
259- with m .State ("FRAMEBUFFER" ):
260- m .d .comb += [
261- sink .connect (wrapper .sink ),
262- wrapper .sink .d_cn .eq (1 ),
263- ]
264- with m .If (sink .valid & sink .ready & sink .last ):
265- m .d .comb += display .rewind .eq (1 )
266- m .next = "DISPLAY"
267-
268265 return m
0 commit comments