|
1 |
| -from amaranth import Module, Mux, Signal |
| 1 | +from amaranth import ClockSignal, Module, Mux, Signal |
2 | 2 | from amaranth.build import Attrs, Pins, PinsN, Resource, Subsignal
|
3 | 3 | from amaranth.lib import wiring
|
4 | 4 | from amaranth.lib.cdc import FFSynchronizer
|
|
16 | 16 | __all__ = ["Top"]
|
17 | 17 |
|
18 | 18 |
|
19 |
| -icebreaker_spi_lcd = Resource( |
20 |
| - "spi_lcd", |
21 |
| - 0, |
22 |
| - Subsignal( |
23 |
| - "clk", Pins("3", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS") |
24 |
| - ), |
25 |
| - Subsignal( |
26 |
| - "copi", Pins("4", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS") |
27 |
| - ), |
28 |
| - Subsignal( |
29 |
| - "res", PinsN("7", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS") |
30 |
| - ), |
31 |
| - Subsignal( |
32 |
| - "dc", PinsN("8", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS") |
33 |
| - ), |
34 |
| - Subsignal( |
35 |
| - "blk", Pins("9", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS") |
36 |
| - ), |
37 |
| - Subsignal( |
38 |
| - "cipo", Pins("10", dir="i", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS") |
39 |
| - ), |
| 19 | +icebreaker_spi_lcd = Resource("spi_lcd", 0, |
| 20 | + Subsignal("clk", Pins("3", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
| 21 | + Subsignal("copi", Pins("4", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
| 22 | + Subsignal("res", PinsN("7", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
| 23 | + Subsignal("dc", PinsN("8", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
| 24 | + Subsignal("blk", Pins("9", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
| 25 | + Subsignal("cipo", Pins("10", dir="i", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
40 | 26 | )
|
41 | 27 |
|
42 | 28 |
|
43 | 29 | class Top(wiring.Component):
|
44 | 30 | def __init__(self, platform):
|
45 | 31 | if isinstance(platform, cxxrtl):
|
46 |
| - super().__init__( |
47 |
| - { |
48 |
| - "lcd": Out(Lcd.PinSignature), |
49 |
| - "lcd_res": Out(1), |
50 |
| - "uart_rx": In(1), |
51 |
| - "uart_tx": Out(1), |
52 |
| - } |
53 |
| - ) |
| 32 | + super().__init__({ |
| 33 | + "lcd": Out(Lcd.PinSignature), |
| 34 | + "lcd_res": Out(1), |
| 35 | + "uart_rx": In(1), |
| 36 | + "uart_tx": Out(1), |
| 37 | + }) |
54 | 38 | else:
|
55 | 39 | super().__init__({})
|
56 | 40 |
|
@@ -102,7 +86,8 @@ def elaborate(self, platform):
|
102 | 86 | "\n", ""
|
103 | 87 | )
|
104 | 88 |
|
105 |
| - m.submodules.now_cells = now_cells = Memory(shape=1, depth=GOL_CELLCNT, init=[c != "." for c in start]) |
| 89 | + m.submodules.now_cells = now_cells = \ |
| 90 | + Memory(shape=1, depth=GOL_CELLCNT, init=[c != "." for c in start]) |
106 | 91 | now_cells_rd = now_cells.read_port()
|
107 | 92 | now_cells_wr = now_cells.write_port()
|
108 | 93 | now_cells_addr = Signal.like(now_cells_rd.addr)
|
@@ -305,6 +290,11 @@ def cell_ix_at(x, y):
|
305 | 290 | ili.cipo.eq(plat_spi.cipo.i),
|
306 | 291 | ]
|
307 | 292 |
|
| 293 | + platform.add_resources([Resource("pmod_clk_out", 0, |
| 294 | + Subsignal("clk", Pins("1", dir="o", conn=("pmod", 0)), Attrs(IO_STANDARD="SB_LVCMOS")), |
| 295 | + )]) |
| 296 | + m.d.comb += platform.request("pmod_clk_out").clk.o.eq(ClockSignal("sync")) |
| 297 | + |
308 | 298 | plat_uart = platform.request("uart")
|
309 | 299 | m.d.comb += plat_uart.tx.o.eq(serial.tx.o)
|
310 | 300 | m.submodules += FFSynchronizer(plat_uart.rx.i, serial.rx.i, init=1)
|
|
0 commit comments