wishbone: add read/write simulation methods

This commit is contained in:
Sebastien Bourdeauducq 2015-11-03 10:37:31 +08:00
parent c9d203ab7f
commit 2520ab480b
1 changed files with 24 additions and 0 deletions

View File

@ -33,6 +33,30 @@ class Interface(Record):
data_width=data_width,
sel_width=data_width//8))
def _do_transaction(self):
yield self.cyc.eq(1)
yield self.stb.eq(1)
yield
while not (yield self.ack):
yield
yield self.cyc.eq(0)
yield self.stb.eq(0)
def write(self, adr, dat, sel=None):
if sel is None:
sel = 2**len(self.sel) - 1
yield self.adr.eq(adr)
yield self.dat_w.eq(dat)
yield self.sel.eq(sel)
yield self.we.eq(1)
yield from self._do_transaction()
def read(self, adr):
yield self.adr.eq(adr)
yield self.we.eq(0)
yield from self._do_transaction()
return (yield self.dat_r)
class InterconnectPointToPoint(Module):
def __init__(self, master, slave):