examples: clean up oudated code.
[nmigen.git] / examples / basic / gpio.py
1 from nmigen import *
2 from nmigen.cli import main
3
4
5 class GPIO(Elaboratable):
6 def __init__(self, pins, bus):
7 self.pins = pins
8 self.bus = bus
9
10 def elaborate(self, platform):
11 m = Module()
12 m.d.comb += self.bus.r_data.eq(self.pins[self.bus.addr])
13 with m.If(self.bus.we):
14 m.d.sync += self.pins[self.bus.addr].eq(self.bus.w_data)
15 return m
16
17
18 if __name__ == "__main__":
19 bus = Record([
20 ("addr", 3),
21 ("r_data", 1),
22 ("w_data", 1),
23 ("we", 1),
24 ])
25 pins = Signal(8)
26 gpio = GPIO(Array(pins), bus)
27 main(gpio, ports=[pins, bus.addr, bus.r_data, bus.w_data, bus.we])