GRLIB GRSPW2 Model
The Grspw2 model is part of the GRLIB IP library feature. It is available in the Grspw2 plugin.
Configuration
To work correctly, the device must be connected to an interrupt controller, a memory and another SpaceWire device.
There are several configuration parameters in the GrSpw2 device. These are summarized in the following table:
| Name | Description |
|---|---|
config.infiniteSpeed |
With this set, messages are sent immediately instead of being scheduled for the future based on the message length. This is the default option. |
config.transmitter.frequency |
Specify the SpaceWire transmitter frequency in Hz. Affects transfer speed when infinite speed is disabled. |
config.transmitter.dataRate |
SpaceWire port datarate: 1=single, 2=double, etc. Affects transfer speed when infinite speed is disabled. |
config.dma.rxdescnum |
Specifies the amount of rx description (0=128, 1=256, 2=512, 3=1024). This affect the regs.dmaRxDescTableAddr |
config.dma.txdescnum |
Specifies the amount of tx descriptors (0=64, 1=128, 2=256, 3=512). This affect the regs.dmaTxDescTableAddr |
config.interrupt |
Influences the interrupt that is raised with the IRQ controller (setting this property also updates the APB PnP info). |
config.realCrcCheck |
Set to use real crc check instead of packet crc flags. Real crc costs in terms of performance. |
@Grspw2 Reference
Properties
| Name | Type | Description |
|---|---|---|
Class |
*void |
Class object |
Component |
*void |
Pointer to component object if part of component |
LocalName |
*char |
Local name (in component, if applicable) |
LogMessageFlags |
uint64_t |
Per-object log message suppression flags |
LoggingFlags |
uint64_t |
Flags for logging info |
Name |
*char |
Object name |
ObjectID |
uint64_t |
Unique ObjectID. |
ReplayLoggingFlags |
uint64_t |
Replay-time category logging flags |
TimeSource |
*void |
Time source object |
Grspw2 Reference
Properties
| Name | Type | Description |
|---|---|---|
CLKDIVColdResetValue |
uint32_t |
Clock divisor register |
CLKDIVForcedBits |
uint32_t |
Clock divisor register |
CLKDIVForcedFlippedBits |
uint32_t |
Clock divisor register |
CLKDIVReadMask |
uint32_t |
Clock divisor register |
CLKDIVResetMask |
uint32_t |
Clock divisor register |
CLKDIVResetValue |
uint32_t |
Clock divisor register |
CLKDIVWriteMask |
uint32_t |
Clock divisor register |
CTRLColdResetValue |
uint32_t |
Control register |
CTRLForcedBits |
uint32_t |
Control register |
CTRLForcedFlippedBits |
uint32_t |
Control register |
CTRLReadMask |
uint32_t |
Control register |
CTRLResetMask |
uint32_t |
Control register |
CTRLResetValue |
uint32_t |
Control register |
CTRLWriteMask |
uint32_t |
Control register |
Class |
*void |
Class object |
Component |
*void |
Pointer to component object if part of component |
DEFADDRColdResetValue |
uint32_t |
Node address register |
DEFADDRForcedBits |
uint32_t |
Node address register |
DEFADDRForcedFlippedBits |
uint32_t |
Node address register |
DEFADDRReadMask |
uint32_t |
Node address register |
DEFADDRResetMask |
uint32_t |
Node address register |
DEFADDRResetValue |
uint32_t |
Node address register |
DEFADDRWriteMask |
uint32_t |
Node address register |
DKEYColdResetValue |
uint32_t |
Destination key register |
DKEYForcedBits |
uint32_t |
Destination key register |
DKEYForcedFlippedBits |
uint32_t |
Destination key register |
DKEYReadMask |
uint32_t |
Destination key register |
DKEYResetMask |
uint32_t |
Destination key register |
DKEYResetValue |
uint32_t |
Destination key register |
DKEYWriteMask |
uint32_t |
Destination key register |
LocalName |
*char |
Local name (in component, if applicable) |
LogMessageFlags |
uint64_t |
Per-object log message suppression flags |
LoggingFlags |
uint64_t |
Flags for logging info |
Name |
*char |
Object name |
ObjectID |
uint64_t |
Unique ObjectID. |
ReplayLoggingFlags |
uint64_t |
Replay-time category logging flags |
STSColdResetValue |
uint32_t |
Status / interrupt-source register |
STSForcedBits |
uint32_t |
Status / interrupt-source register |
STSForcedFlippedBits |
uint32_t |
Status / interrupt-source register |
STSReadMask |
uint32_t |
Status / interrupt-source register |
STSResetMask |
uint32_t |
Status / interrupt-source register |
STSResetValue |
uint32_t |
Status / interrupt-source register |
STSWriteMask |
uint32_t |
Status / interrupt-source register |
TCColdResetValue |
uint32_t |
Time register |
TCForcedBits |
uint32_t |
Time register |
TCForcedFlippedBits |
uint32_t |
Time register |
TCReadMask |
uint32_t |
Time register |
TCResetMask |
uint32_t |
Time register |
TCResetValue |
uint32_t |
Time register |
TCWriteMask |
uint32_t |
Time register |
TimeSource |
*void |
Time source object |
config.dma.rxdescnum |
uint8_t |
Number of rx descriptors |
config.dma.txdescnum |
uint8_t |
Number of tx descriptors |
config.infiniteSpeed |
uint8_t |
Set to use infinite speed for transfers. |
config.interrupt |
uint8_t |
The interrupt index |
config.realCrcCheck |
uint8_t |
Set to use real crc check instead of packet crc flags |
config.transmitter.dataRate |
uint8_t |
SpaceWire port datarate: 1=single, 2=double,… |
config.transmitter.frequency |
uint32_t |
SpaceWire transmitter frequency in Hz |
internal.linkState |
int32_t |
Link state |
internal.txCurrChan |
uint8_t |
Channel scheduled for transmission |
internal.txDAddr |
uint32_t |
Data address for the scheduled dma engine transfer |
internal.txDLength |
uint32_t |
Data length for the scheduled dma engine transfer |
internal.txFlags |
uint32_t |
Flags for the scheduled dma engine transfer |
internal.txHAddr |
uint32_t |
Header address for the scheduled dma engine transfer |
internal.txType |
uint8_t |
Scheduled transmission type (dma engine/rmap) |
internal.uplinkNsPerByte |
uint32_t |
Transmitter speed |
irqCtrl |
temu_IfaceRef/ <unknown> |
Irq controller |
memAccess |
temu_IfaceRef/ <unknown> |
Memory used for DMA accesses |
pnp.bar |
uint32_t |
Pnp BAR |
pnp.config |
uint32_t |
Pnp configuration |
regs.clockDiv |
uint32_t |
Clock divisor register |
regs.control |
uint32_t |
Control register |
regs.destKey |
uint32_t |
Destination key register |
regs.dmaAddr |
[uint32_t; 4] |
DMA address register |
regs.dmaControl |
[uint32_t; 4] |
DMA control/status register |
regs.dmaRxDescTableAddr |
[uint32_t; 4] |
DMA receive descriptor table address register |
regs.dmaRxMaxLen |
[uint32_t; 4] |
DMA RX maximum length register |
regs.dmaTxDescTableAddr |
[uint32_t; 4] |
DMA transmit descriptor table address register |
regs.nodeAddress |
uint32_t |
Node address register |
regs.statusIrqSrc |
uint32_t |
Status / interrupt-source register |
regs.time |
uint32_t |
Time register |
spwUplink |
[temu_IfaceRef; 2]/ <unknown> |
SpaceWire devices connected to the port |
Interfaces
| Name | Type | Description |
|---|---|---|
ApbIface |
ApbIface |
Apb interface |
DeviceIface |
DeviceIface |
Device interface |
MemAccessIface |
MemAccessIface |
Memory Access Interface |
RegisterIface |
temu::RegisterIface |
Auto-generated Register Interface Impl. |
ResetIface |
ResetIface |
|
SpwPortIface |
SpwPortIface |
SpaceWire ports interfaces |
Registers
| Register support is currently experimental! |
Register Bank Regs
Register CTRL
- Description
-
Control register
- Reset value
-
0xc8000000
- Warm reset mask
-
0xfc033f7f
| Field | Mask | Reset | Description |
|---|---|---|---|
RA |
|
|
RMAP available |
RX |
|
|
RX unaligned access |
RC |
|
|
RMAP CRC available |
NCH |
|
|
Number of DMA channels minus one |
PO |
|
|
Number of ports minus one |
RD |
|
|
RMAP buffer disable |
RE |
|
|
RMAP enable |
TL |
|
|
Transmitter enable lock control |
TF |
|
|
Time-code control flag filter |
TR |
|
|
Time RX enable |
TT |
|
|
Time TX enable |
LI |
|
|
Link error IRQ |
TQ |
|
|
Tick-out IRQ |
RS |
|
|
Reset |
PM |
|
|
Promiscuous mode |
TI |
|
|
Tick in |
IE |
|
|
Interrupt enable |
AS |
|
|
Autostart |
LS |
|
|
Link start |
LD |
|
|
Link disable |
Register STS
- Description
-
Status / interrupt-source register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0f000000
| Field | Mask | Reset | Description |
|---|---|---|---|
NRXD |
|
|
Number of receive descriptors |
NTXD |
|
|
Number of transmit descriptors |
EE |
|
|
Early EOP/EEP |
IA |
|
|
Invalid address |
PE |
|
|
Parity error |
DE |
|
|
Disconnect error |
ER |
|
|
Escape error |
CE |
|
|
Credit error |
TO |
|
|
Tick out |
Register DEFADDR
- Description
-
Node address register
- Reset value
-
0x000000fe
- Warm reset mask
-
0x0000ffff
| Field | Mask | Reset | Description |
|---|---|---|---|
DEFMASK |
|
|
Default mask |
DEFADDR |
|
|
Default address |
Register CLKDIV
- Description
-
Clock divisor register
- Reset value
-
0x00002727
- Warm reset mask
-
0x0000ffff
| Field | Mask | Reset | Description |
|---|---|---|---|
CLKDIVSTART |
|
|
Clock divisor startup |
CLKDIVRUN |
|
|
Clock divisor run |
Register DKEY
- Description
-
Destination key register
- Reset value
-
0x00000000
- Warm reset mask
-
0x000000ff
| Field | Mask | Reset | Description |
|---|---|---|---|
DESTKEY |
|
|
Destination key |
Register TC
- Description
-
Time register
- Reset value
-
0x00000000
- Warm reset mask
-
0x000000ff
| Field | Mask | Reset | Description |
|---|---|---|---|
TCTRL |
|
|
Time control flags |
TIMECNT |
|
|
Time counter |
Register DMACTRL
- Description
-
DMA control/status register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0001fe1f
| Field | Mask | Reset | Description |
|---|---|---|---|
EP |
|
|
EEP termination |
TR |
|
|
Truncated |
RP |
|
|
Receive packet IRQ |
TP |
|
|
Transmit packet IRQ |
TL |
|
|
Transmitter enable lock |
LE |
|
|
Link error disable |
SP |
|
|
Strip PID |
SA |
|
|
Strip address |
EN |
|
|
Enable address |
NS |
|
|
No spill |
RD |
|
|
RX descriptors available |
RX |
|
|
RX active |
AT |
|
|
Abort TX |
RA |
|
|
RX AHB error |
TA |
|
|
TX AHB error |
PR |
|
|
Packet received |
PS |
|
|
Packet sent |
AI |
|
|
AHB error interrupt |
RI |
|
|
Receive interrupt |
TI |
|
|
Transmit interrupt |
RE |
|
|
Receiver enable |
TE |
|
|
Transmitter enable |
Register DMACTRL
- Description
-
DMA control/status register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0001fe1f
| Field | Mask | Reset | Description |
|---|---|---|---|
EP |
|
|
EEP termination |
TR |
|
|
Truncated |
RP |
|
|
Receive packet IRQ |
TP |
|
|
Transmit packet IRQ |
TL |
|
|
Transmitter enable lock |
LE |
|
|
Link error disable |
SP |
|
|
Strip PID |
SA |
|
|
Strip address |
EN |
|
|
Enable address |
NS |
|
|
No spill |
RD |
|
|
RX descriptors available |
RX |
|
|
RX active |
AT |
|
|
Abort TX |
RA |
|
|
RX AHB error |
TA |
|
|
TX AHB error |
PR |
|
|
Packet received |
PS |
|
|
Packet sent |
AI |
|
|
AHB error interrupt |
RI |
|
|
Receive interrupt |
TI |
|
|
Transmit interrupt |
RE |
|
|
Receiver enable |
TE |
|
|
Transmitter enable |
Register DMACTRL
- Description
-
DMA control/status register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0001fe1f
| Field | Mask | Reset | Description |
|---|---|---|---|
EP |
|
|
EEP termination |
TR |
|
|
Truncated |
RP |
|
|
Receive packet IRQ |
TP |
|
|
Transmit packet IRQ |
TL |
|
|
Transmitter enable lock |
LE |
|
|
Link error disable |
SP |
|
|
Strip PID |
SA |
|
|
Strip address |
EN |
|
|
Enable address |
NS |
|
|
No spill |
RD |
|
|
RX descriptors available |
RX |
|
|
RX active |
AT |
|
|
Abort TX |
RA |
|
|
RX AHB error |
TA |
|
|
TX AHB error |
PR |
|
|
Packet received |
PS |
|
|
Packet sent |
AI |
|
|
AHB error interrupt |
RI |
|
|
Receive interrupt |
TI |
|
|
Transmit interrupt |
RE |
|
|
Receiver enable |
TE |
|
|
Transmitter enable |
Register DMACTRL
- Description
-
DMA control/status register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0001fe1f
| Field | Mask | Reset | Description |
|---|---|---|---|
EP |
|
|
EEP termination |
TR |
|
|
Truncated |
RP |
|
|
Receive packet IRQ |
TP |
|
|
Transmit packet IRQ |
TL |
|
|
Transmitter enable lock |
LE |
|
|
Link error disable |
SP |
|
|
Strip PID |
SA |
|
|
Strip address |
EN |
|
|
Enable address |
NS |
|
|
No spill |
RD |
|
|
RX descriptors available |
RX |
|
|
RX active |
AT |
|
|
Abort TX |
RA |
|
|
RX AHB error |
TA |
|
|
TX AHB error |
PR |
|
|
Packet received |
PS |
|
|
Packet sent |
AI |
|
|
AHB error interrupt |
RI |
|
|
Receive interrupt |
TI |
|
|
Transmit interrupt |
RE |
|
|
Receiver enable |
TE |
|
|
Transmitter enable |
Register DMAMAXLEN
- Description
-
DMA RX maximum length register
- Reset value
-
0x00000000
- Warm reset mask
-
0x01fffffc
| Field | Mask | Reset | Description |
|---|---|---|---|
RXMAXLEN |
|
|
RX maximum length |
Register DMAMAXLEN
- Description
-
DMA RX maximum length register
- Reset value
-
0x00000000
- Warm reset mask
-
0x01fffffc
| Field | Mask | Reset | Description |
|---|---|---|---|
RXMAXLEN |
|
|
RX maximum length |
Register DMAMAXLEN
- Description
-
DMA RX maximum length register
- Reset value
-
0x00000000
- Warm reset mask
-
0x01fffffc
| Field | Mask | Reset | Description |
|---|---|---|---|
RXMAXLEN |
|
|
RX maximum length |
Register DMAMAXLEN
- Description
-
DMA RX maximum length register
- Reset value
-
0x00000000
- Warm reset mask
-
0x01fffffc
| Field | Mask | Reset | Description |
|---|---|---|---|
RXMAXLEN |
|
|
RX maximum length |
Register DMATXDESC
- Description
-
DMA transmit descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff0
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMATXDESC
- Description
-
DMA transmit descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff0
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMATXDESC
- Description
-
DMA transmit descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff0
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMATXDESC
- Description
-
DMA transmit descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff0
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMARXDESC
- Description
-
DMA receive descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff8
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMARXDESC
- Description
-
DMA receive descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff8
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMARXDESC
- Description
-
DMA receive descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff8
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMARXDESC
- Description
-
DMA receive descriptor table address register
- Reset value
-
0x00000000
- Warm reset mask
-
0xfffffff8
| Field | Mask | Reset | Description |
|---|---|---|---|
DESCBASEADDR |
|
|
Descriptor table base address |
DESCSEL |
|
|
Descriptor selector |
Register DMAADDR
- Description
-
DMA address register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0000ffff
| Field | Mask | Reset | Description |
|---|---|---|---|
MASK |
|
|
Mask |
ADDR |
|
|
Address |
Register DMAADDR
- Description
-
DMA address register
- Reset value
-
0x00000000
- Warm reset mask
-
0x0000ffff
| Field | Mask | Reset | Description |
|---|---|---|---|
MASK |
|
|
Mask |
ADDR |
|
|
Address |
Limitations
The following deviations from real hardware are known to exist with this model:
-
The device already provides two ports, dual port is not yet implemented. Let us know if you need this feature implemented.
-
The link interface currently effectively uses only ErrorReset, Ready, Connecting and Run states. These are the only values that will be visible on the status register.
-
RMAPEN and PNPEN signals not available.