From: Sebastien Bourdeauducq Date: Sun, 1 Jul 2012 19:46:11 +0000 (+0200) Subject: framebuffer: fake DMA for testing (WIP) X-Git-Tag: 24jan2021_ls180~3116 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e2463da7878fbbb2a3c0227835a671aa751e4baa;p=litex.git framebuffer: fake DMA for testing (WIP) --- diff --git a/milkymist/framebuffer/__init__.py b/milkymist/framebuffer/__init__.py index 704e08f0..cc02c4c2 100644 --- a/milkymist/framebuffer/__init__.py +++ b/milkymist/framebuffer/__init__.py @@ -201,6 +201,25 @@ class FIFO(Actor): ], instances=[asfifo]) +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: def __init__(self, address, asmiport): asmi_bits = asmiport.hub.aw @@ -213,7 +232,8 @@ class Framebuffer: adrloop = ActorNode(misc.IntSequence(length_bits)) adrbase = ActorNode(ala.Add(BV(asmi_bits))) adrbuffer = ActorNode(plumbing.Buffer) - dma = ActorNode(dma_asmi.SequentialReader(asmiport)) + #dma = ActorNode(dma_asmi.SequentialReader(asmiport)) + dma = ActorNode(FakeDMA(asmiport)) cast = ActorNode(structuring.Cast(asmiport.hub.dw, packed_pixels)) unpack = ActorNode(structuring.Unpack(pack_factor, _pixel_layout)) vtg = ActorNode(VTG())