From fc458a51c90141b52aa52664c659071f5b703e6f Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sun, 1 Jul 2012 21:45:52 +0200 Subject: [PATCH] framebuffer/vtg: fix dataflow control (inc. WA for Migen bug - FIXME) --- milkymist/framebuffer/__init__.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/milkymist/framebuffer/__init__.py b/milkymist/framebuffer/__init__.py index 5800a64f7..704e08f07 100644 --- a/milkymist/framebuffer/__init__.py +++ b/milkymist/framebuffer/__init__.py @@ -119,15 +119,14 @@ class VTG(Actor): self.token("dac").b.eq(self.token("pixels").b[skip:]) ), - generate_en.eq(self.endpoints["timing"].stb & self.endpoints["dac"].ack \ - & (~active | self.endpoints["pixels"].stb)), + generate_en.eq(self.endpoints["timing"].stb & (~active | self.endpoints["pixels"].stb)), self.endpoints["pixels"].ack.eq(self.endpoints["dac"].ack & active), self.endpoints["dac"].stb.eq(generate_en) ] tp = self.token("timing") sync = [ self.endpoints["timing"].ack.eq(0), - If(generate_en, + If(generate_en & self.endpoints["dac"].ack, hcounter.eq(hcounter + 1), If(hcounter == 0, hactive.eq(1)), @@ -138,6 +137,8 @@ class VTG(Actor): hcounter.eq(0), If(vcounter == tp.vscan, vcounter.eq(0) + # FIXME: work around Flow bug + #self.endpoints["timing"].ack.eq(1) ).Else( vcounter.eq(vcounter + 1) ) @@ -146,10 +147,7 @@ class VTG(Actor): If(vcounter == 0, vactive.eq(1)), If(vcounter == tp.vres, vactive.eq(0)), If(vcounter == tp.vsync_start, self.token("dac").vsync.eq(1)), - If(vcounter == tp.vsync_end, - self.token("dac").vsync.eq(0), - self.endpoints["timing"].ack.eq(1) - ) + If(vcounter == tp.vsync_end, self.token("dac").vsync.eq(0)) ) ]