Skip to content

Commit fd1062f

Browse files
committed
RFC #60: add a member to the peripheral signature.
1 parent 705e307 commit fd1062f

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

text/0060-soc-uart-peripheral.md

+11-5
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ class MySoC(wiring.Component):
4949
uart_phy_rx = AsyncSerialRX(uart_divisor, divisor_bits=16, pins=uart_pins)
5050
uart_phy_tx = AsyncSerialTX(uart_divisor, divisor_bits=16, pins=uart_pins)
5151

52-
m.submodules.uart_phy_rx = uart_phy_rx
53-
m.submodules.uart_phy_tx = uart_phy_tx
52+
m.submodules.uart_phy_rx = ResetInserter(uart.rx.rst)(uart_phy_rx)
53+
m.submodules.uart_phy_tx = ResetInserter(uart.tx.rst)(uart_phy_tx)
5454

5555
m.d.comb += [
5656
uart_phy_rx.divisor.eq(uart.rx.divisor),
@@ -225,6 +225,7 @@ Its members are defined as follows:
225225

226226
```python3
227227
{
228+
"rst": Out(1),
228229
"divisor": Out(unsigned(16)),
229230
"symbol": In(wiring.Signature({
230231
"payload": Out(unsigned(symbol_width)),
@@ -236,6 +237,8 @@ Its members are defined as follows:
236237
}
237238
```
238239

240+
The `rst` port is driven to 1 if `Control.enable` is 0, and 0 if `Control.enable` is 1.
241+
239242
### `amaranth_soc.uart.TransmitterPHYSignature`
240243

241244
The `uart.TransmitterSignature` class is a `wiring.Signature` describing the interface between the UART peripheral and its transmitter PHY, with:
@@ -245,15 +248,18 @@ Its members are defined as follows:
245248

246249
```python3
247250
{
251+
"rst": Out(1),
248252
"divisor": Out(unsigned(16)),
249253
"symbol": Out(wiring.Signature({
250254
"payload": Out(unsigned(symbol_width)),
251-
"valid": Out(unsigned(1)),
252-
"ready": In(unsigned(1)),
255+
"valid": Out(1),
256+
"ready": In(1),
253257
})),
254258
}
255259
```
256260

261+
The `rst` port is driven to 1 if `Control.enable` is 0, and 0 if `Control.enable` is 1.
262+
257263
### `amaranth_soc.uart.ReceiverPeripheral`
258264

259265
The `uart.ReceiverPeripheral` class is a `wiring.Component` implementing the receiver of an UART peripheral, with:
@@ -319,7 +325,7 @@ The `uart.Peripheral` class is a `wiring.Component` implementing an UART periphe
319325
- Decoupling the peripheral from the PHY allows flexibility in implementations. For example, it is easy to add FIFOs between the PHYs and the peripheral.
320326
- A standalone `ReceiverPeripheral` or `TransmitterPeripheral` can be instantiated.
321327

322-
- The choice of a 16-bit divisor with an (otherwise) unspecified encoding gives allows implementation freedom:
328+
- The choice of a 16-bit divisor with an (otherwise) unspecified encoding allows implementation freedom:
323329
* some may not care about a clock divisor at all (e.g. a behavioral model of an UART PHY, interfacing with a pseudo-TTY).
324330
* some may provide their own divisor encoding scheme (e.g. a 13-bit base value with a 3-bit scale, that can cover common frequency/baudrate combinations with a [<1% error rate](https://github.com/amaranth-lang/rfcs/files/14672989/baud.py.txt) (credit: [@whitequark](https://github.com/whitequark))).
325331

0 commit comments

Comments
 (0)