From d2c4afe66ce01ff4458b554ec5f934557daf715c Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Sun, 1 Apr 2012 23:24:24 +0200 Subject: [PATCH] asmicon: various fixes. Now produces convincing refresh/read sequences. --- milkymist/asmicon/bankmachine.py | 6 ++++-- milkymist/asmicon/multiplexer.py | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/milkymist/asmicon/bankmachine.py b/milkymist/asmicon/bankmachine.py index f0b8ac5c..12022b23 100644 --- a/milkymist/asmicon/bankmachine.py +++ b/milkymist/asmicon/bankmachine.py @@ -119,11 +119,13 @@ class _Selector: for slot in self.slots] comb += multimux(rr.grant, mux_inputs, mux_outputs) comb += [ - self.stb.eq(state == SLOT_PENDING), + self.stb.eq( + (self.slicer.bank(self.adr) == self.bankn) \ + & (state == SLOT_PENDING)), rr.ce.eq(self.ack), self.tag.eq(rr.grant) ] - comb += [slot.process.eq((rr.grant == i) & self.stb & self.ack) + comb += [If((rr.grant == i) & self.stb & self.ack, slot.process.eq(1)) for i, slot in enumerate(self.slots)] return Fragment(comb, sync) + rr.get_fragment() diff --git a/milkymist/asmicon/multiplexer.py b/milkymist/asmicon/multiplexer.py index da1818b5..6b459262 100644 --- a/milkymist/asmicon/multiplexer.py +++ b/milkymist/asmicon/multiplexer.py @@ -53,11 +53,11 @@ class _CommandChooser: outputs_filtered = [self.cmd.cas_n, self.cmd.ras_n, self.cmd.we_n] ms = multimux(rr.grant, inputs_filtered, outputs_filtered) comb += [ - self.cmd.stb.eq(stb & ((self.cmd.is_read == self.want_reads) | (self.cmd.is_write == self.want_writes))), + self.cmd.stb.eq(stb & (self.cmd.is_read == self.want_reads) & (self.cmd.is_write == self.want_writes)), If(self.cmd.stb, *ms) ] - comb += [req.ack.eq(self.cmd.stb & self.cmd.ack & rr.grant == i) + comb += [If(self.cmd.stb & self.cmd.ack & (rr.grant == i), req.ack.eq(1)) for i, req in enumerate(self.requests)] comb.append(rr.ce.eq(self.cmd.ack)) -- 2.30.2