Skip to content

Commit 94fe8ad

Browse files
committed
cores/lcd/ssd1306: merge FSM states
1 parent 6b1dff6 commit 94fe8ad

File tree

1 file changed

+22
-25
lines changed

1 file changed

+22
-25
lines changed

lambdalib/cores/lcd/ssd1306.py

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)