mirror of
https://github.com/enjoy-digital/litex.git
synced 2025-01-04 09:52:26 -05:00
add MigIo Class
This commit is contained in:
parent
bb6045e279
commit
fc6225273b
1 changed files with 27 additions and 0 deletions
27
migScope/migIo.py
Normal file
27
migScope/migIo.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
from migen.fhdl.structure import *
|
||||
from migen.bus import csr
|
||||
from migen.bank import description, csrgen
|
||||
from migen.bank.description import *
|
||||
|
||||
|
||||
class MigIo:
|
||||
def __init__(self, width, mode = "IO"):
|
||||
self.width = width
|
||||
self.mode = mode
|
||||
self.ireg = description.RegisterField("i", 0, READ_ONLY, WRITE_ONLY)
|
||||
self.oreg = description.RegisterField("o", 0)
|
||||
if "I" in self.mode:
|
||||
self.i = Signal(BV(self.width))
|
||||
self.ireg = description.RegisterField("i", self.width, READ_ONLY, WRITE_ONLY)
|
||||
self.ireg.field.w.name_override = "inputs"
|
||||
if "O" in self.mode:
|
||||
self.o = Signal(BV(self.width))
|
||||
self.oreg = description.RegisterField("o", self.width)
|
||||
self.oreg.field.r.name_override = "ouptuts"
|
||||
self.bank = csrgen.Bank([self.oreg, self.ireg])
|
||||
|
||||
def get_fragment(self):
|
||||
comb = []
|
||||
comb += [self.ireg.field.w.eq(self.i)]
|
||||
comb += [self.o.eq(self.oreg.field.r)]
|
||||
return Fragment(comb=comb) + self.bank.get_fragment()
|
Loading…
Reference in a new issue