mirror of
https://github.com/enjoy-digital/litex.git
synced 2025-01-04 09:52:26 -05:00
framebuffer: use ASMI reader factory
This commit is contained in:
parent
73a58977e4
commit
58d1e8a541
1 changed files with 4 additions and 21 deletions
|
@ -207,24 +207,6 @@ def sim_fifo_gen():
|
||||||
print("H/V:" + str(t.value["hsync"]) + str(t.value["vsync"])
|
print("H/V:" + str(t.value["hsync"]) + str(t.value["vsync"])
|
||||||
+ " " + str(t.value["r"]) + " " + str(t.value["g"]) + " " + str(t.value["b"]))
|
+ " " + str(t.value["r"]) + " " + str(t.value["g"]) + " " + str(t.value["b"]))
|
||||||
|
|
||||||
class FakeDMA(Actor):
|
|
||||||
def __init__(self, port):
|
|
||||||
self.port = port
|
|
||||||
super().__init__(
|
|
||||||
("address", Sink, [("a", BV(self.port.hub.aw))]),
|
|
||||||
("data", Source, [("d", BV(self.port.hub.dw))]))
|
|
||||||
|
|
||||||
def get_fragment(self):
|
|
||||||
pixel = Signal(BV(32))
|
|
||||||
comb = [
|
|
||||||
self.endpoints["address"].ack.eq(1),
|
|
||||||
self.endpoints["data"].stb.eq(1),
|
|
||||||
self.token("data").d.eq(Replicate(pixel, 4))
|
|
||||||
]
|
|
||||||
sync = [
|
|
||||||
If(self.endpoints["data"].ack, pixel.eq(pixel + 1))
|
|
||||||
]
|
|
||||||
return Fragment(comb, sync)
|
|
||||||
|
|
||||||
class Framebuffer:
|
class Framebuffer:
|
||||||
def __init__(self, address, asmiport, simulation=False):
|
def __init__(self, address, asmiport, simulation=False):
|
||||||
|
@ -237,8 +219,8 @@ class Framebuffer:
|
||||||
fi = ActorNode(_FrameInitiator(asmi_bits, length_bits, alignment_bits))
|
fi = ActorNode(_FrameInitiator(asmi_bits, length_bits, alignment_bits))
|
||||||
adrloop = ActorNode(misc.IntSequence(length_bits, asmi_bits))
|
adrloop = ActorNode(misc.IntSequence(length_bits, asmi_bits))
|
||||||
adrbuffer = ActorNode(plumbing.Buffer)
|
adrbuffer = ActorNode(plumbing.Buffer)
|
||||||
#dma = ActorNode(dma_asmi.SequentialReader(asmiport))
|
dma = ActorNode(dma_asmi.Reader(asmiport))
|
||||||
dma = ActorNode(FakeDMA(asmiport))
|
datbuffer = ActorNode(plumbing.Buffer)
|
||||||
cast = ActorNode(structuring.Cast(asmiport.hub.dw, packed_pixels))
|
cast = ActorNode(structuring.Cast(asmiport.hub.dw, packed_pixels))
|
||||||
unpack = ActorNode(structuring.Unpack(pack_factor, _pixel_layout))
|
unpack = ActorNode(structuring.Unpack(pack_factor, _pixel_layout))
|
||||||
vtg = ActorNode(VTG())
|
vtg = ActorNode(VTG())
|
||||||
|
@ -251,7 +233,8 @@ class Framebuffer:
|
||||||
g.add_connection(fi, adrloop, source_subr=["length", "base"])
|
g.add_connection(fi, adrloop, source_subr=["length", "base"])
|
||||||
g.add_connection(adrloop, adrbuffer)
|
g.add_connection(adrloop, adrbuffer)
|
||||||
g.add_connection(adrbuffer, dma)
|
g.add_connection(adrbuffer, dma)
|
||||||
g.add_connection(dma, cast)
|
g.add_connection(dma, datbuffer)
|
||||||
|
g.add_connection(datbuffer, cast)
|
||||||
g.add_connection(cast, unpack)
|
g.add_connection(cast, unpack)
|
||||||
g.add_connection(unpack, vtg, sink_ep="pixels")
|
g.add_connection(unpack, vtg, sink_ep="pixels")
|
||||||
g.add_connection(fi, vtg, sink_ep="timing", source_subr=[
|
g.add_connection(fi, vtg, sink_ep="timing", source_subr=[
|
||||||
|
|
Loading…
Reference in a new issue