litex/examples/basic/arrays.py

29 lines
696 B
Python
Raw Normal View History

from migen.fhdl.structure import *
from migen.fhdl.specials import Instance
2013-03-12 11:45:28 -04:00
from migen.fhdl.module import Module
from migen.fhdl import verilog
2013-03-12 11:45:28 -04:00
class Example(Module):
def __init__(self):
dx = 2
dy = 2
2013-03-12 11:45:28 -04:00
x = Signal(max=dx)
y = Signal(max=dy)
out = Signal()
2013-03-12 11:45:28 -04:00
my_2d_array = Array(Array(Signal() for a in range(dx)) for b in range(dy))
self.comb += out.eq(my_2d_array[x][y])
2013-03-12 11:45:28 -04:00
we = Signal()
inp = Signal()
self.sync += If(we,
my_2d_array[x][y].eq(inp)
)
ina = Array(Signal() for a in range(dx))
outa = Array(Signal() for a in range(dy))
self.specials += Instance("test", Instance.Output("O", outa[y]), Instance.Input("I", ina[x]))
2013-03-12 11:45:28 -04:00
print(verilog.convert(Example()))