Skip to content

Commit 0068aa9

Browse files
committed
wip
1 parent 8a6890f commit 0068aa9

File tree

6 files changed

+16
-59
lines changed

6 files changed

+16
-59
lines changed

chipflow_digital_ip/io/__init__.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from ._gpio import GPIOPeripheral
22
from ._uart import UARTPeripheral
3-
from ._i2c import I2CPeripheral, I2CSignature
4-
from ._spi import SPIPeripheral, SPISignature
3+
from ._i2c import I2CPeripheral
4+
from ._spi import SPIPeripheral
55

6-
__all__ = ['GPIOPeripheral', 'UARTPeripheral', 'I2CPeripheral', 'SPIPeripheral',
7-
'I2CSignature', 'SPISignature']
6+
__all__ = ['GPIOPeripheral', 'UARTPeripheral', 'I2CPeripheral', 'SPIPeripheral']

chipflow_digital_ip/io/_gpio.py

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
1-
from typing import Unpack
21

32
from amaranth import Module, unsigned
43
from amaranth.lib import wiring
54
from amaranth.lib.wiring import In, Out, flipped, connect
65

76
from amaranth_soc import csr, gpio
87

9-
from chipflow_lib.platforms import BidirIOSignature, IOModelOptions
8+
from chipflow_lib.platforms import GPIOSignature
109

1110
__all__ = ["GPIOPeripheral"]
1211

1312

1413
class GPIOPeripheral(wiring.Component):
1514

16-
class Signature(wiring.Signature):
17-
def __init__(self, pin_count=1, **kwargs: Unpack[IOModelOptions]):
18-
if pin_count > 32:
19-
raise ValueError(f"Pin pin_count must be lesser than or equal to 32, not {pin_count}")
20-
self._pin_count = pin_count
21-
super().__init__({
22-
"gpio": Out(BidirIOSignature(pin_count, individual_oe=True, **kwargs))
23-
})
24-
25-
@property
26-
def pin_count(self):
27-
return self._pin_count
28-
2915
"""Wrapper for amaranth_soc gpio with chipflow_lib.IOSignature support
3016
3117
Parameters
@@ -65,7 +51,7 @@ def __init__(self, *, pin_count, addr_width=4, data_width=8, input_stages=2):
6551

6652
super().__init__({
6753
"bus": In(csr.Signature(addr_width=addr_width, data_width=data_width)),
68-
"pins": Out(self.Signature(pin_count)),
54+
"pins": Out(GPIOSignature(pin_count)),
6955
"alt_mode": Out(unsigned(pin_count)),
7056
})
7157
self.bus.memory_map = self._gpio.bus.memory_map

chipflow_digital_ip/io/_i2c.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,10 @@
33
from amaranth.lib.wiring import In, Out, connect, flipped
44

55
from amaranth_soc import csr
6-
from chipflow_lib.platforms import BidirIOSignature
6+
from chipflow_lib.platforms import I2CSignature
77
from ._glasgow_i2c import I2CInitiator
88

9-
__all__ = ["I2CPeripheral", "I2CSignature"]
10-
11-
I2CSignature = wiring.Signature({
12-
"scl": Out(BidirIOSignature(1)),
13-
"sda": Out(BidirIOSignature(1))
14-
})
9+
__all__ = ["I2CPeripheral"]
1510

1611

1712
class I2CPeripheral(wiring.Component):
@@ -61,7 +56,7 @@ def __init__(self):
6156
self._bridge = csr.Bridge(regs.as_memory_map())
6257

6358
super().__init__({
64-
"i2c_pins": Out(I2CSignature),
59+
"i2c_pins": Out(I2CSignature()),
6560
"bus": In(csr.Signature(addr_width=regs.addr_width, data_width=regs.data_width)),
6661
})
6762
self.bus.memory_map = self._bridge.bus.memory_map

chipflow_digital_ip/io/_spi.py

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,14 @@
33
from amaranth.lib.wiring import In, Out, connect, flipped
44

55
from amaranth_soc import csr
6-
from chipflow_lib.platforms import InputIOSignature, OutputIOSignature
6+
from chipflow_lib.platforms import SPISignature
77

8-
__all__ = ["SPISignature", "SPIPeripheral"]
9-
10-
SPISignature = wiring.Signature({
11-
"sck": Out(OutputIOSignature(1)),
12-
"copi": Out(OutputIOSignature(1)),
13-
"cipo": Out(InputIOSignature(1)),
14-
"csn": Out(OutputIOSignature(1)),
15-
})
8+
__all__ = ["SPIPeripheral"]
169

1710
class SPIController(wiring.Component):
1811
def __init__(self):
1912
super().__init__({
20-
"spi": Out(SPISignature),
13+
"spi": Out(SPISignature()),
2114
"sck_idle": In(1),
2215
"sck_edge": In(1),
2316
"cs": In(1),
@@ -157,7 +150,7 @@ def __init__(self):
157150
self._bridge = csr.Bridge(regs.as_memory_map())
158151

159152
super().__init__({
160-
"spi_pins": Out(SPISignature),
153+
"spi_pins": Out(SPISignature()),
161154
"bus": In(csr.Signature(addr_width=regs.addr_width, data_width=regs.data_width)),
162155
})
163156
self.bus.memory_map = self._bridge.bus.memory_map

chipflow_digital_ip/io/_uart.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from amaranth_soc import csr
66
from amaranth_stdio.serial import AsyncSerialRX, AsyncSerialTX
77

8-
from chipflow_lib.platforms import OutputIOSignature, InputIOSignature
8+
from chipflow_lib.platforms import UARTSignature
99

1010
from . import _rfc_uart
1111

@@ -120,14 +120,6 @@ def elaborate(self, platform):
120120

121121
class UARTPeripheral(wiring.Component):
122122

123-
class Signature(wiring.Signature):
124-
def __init__(self):
125-
super().__init__({
126-
"tx": Out(OutputIOSignature(1)),
127-
"rx": Out(InputIOSignature(1)),
128-
})
129-
130-
131123
"""Wrapper for amaranth_soc RFC UART with PHY and chipflow_lib.IOSignature support
132124
133125
Parameters
@@ -159,7 +151,7 @@ def __init__(self, *, addr_width=5, data_width=8, init_divisor=0):
159151

160152
super().__init__({
161153
"bus": In(csr.Signature(addr_width=addr_width, data_width=data_width)),
162-
"pins": Out(self.Signature()),
154+
"pins": Out(UARTSignature()),
163155
})
164156
self.bus.memory_map = self._uart.bus.memory_map
165157
self._phy = UARTPhy(ports=self.pins, init_divisor=init_divisor)

chipflow_digital_ip/memory/_qspi_flash.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from ..io._glasgow_iostream import PortGroup
1010
from ..memory._glasgow_qspi import QSPIMode, QSPIController
1111

12-
from chipflow_lib.platforms import BidirIOSignature, OutputIOSignature
12+
from chipflow_lib.platforms import QSPIFlashSignature
1313

1414

1515
class QSPIFlashCommand(enum.Enum, shape=8):
@@ -248,17 +248,9 @@ def elaborate(self, platform):
248248
return m
249249

250250
class QSPIFlash(wiring.Component):
251-
class Signature(wiring.Signature):
252-
def __init__(self):
253-
super().__init__({
254-
"clk": Out(OutputIOSignature(1)),
255-
"csn": Out(OutputIOSignature(1)),
256-
"d": Out(BidirIOSignature(4, individual_oe=True)),
257-
})
258-
259251
def __init__(self, *, addr_width, data_width):
260252
super().__init__({
261-
"pins": Out(self.Signature()),
253+
"pins": Out(QSPIFlashSignature()),
262254
"csr_bus": In(csr.Signature(addr_width=4, data_width=8)),
263255
"wb_bus": In(wishbone.Signature(addr_width=addr_width, data_width=data_width, granularity=8)),
264256
})

0 commit comments

Comments
 (0)