PGP version
Gen 1 hardware implements PGP version 1.
VHDL sources
PGP basics
Instantiation on RCEs
Petacache RCEs have four PGP cores named A through D while ATLAS TDAQ RCEs have three named A through C.
Core device control registers
Each PGP core has four Device Control Registers. The register base addresses are:
PGP core |
First DCR addr |
---|---|
A |
0x2e0 |
B |
0x2e4 |
C |
0x2e8 |
D (petacache only) |
0x2ec |
The individual registers for each core:
Offset |
Name |
Description |
---|---|---|
0 |
Control |
Selects and displays the mode of operation. |
1 |
Status |
Summarizes the current status of the link. |
2 |
Count0 |
A set of 4-bit counters. |
3 |
Count1 |
More 4-bit counters. |
PIC block assignments
The actual PGP data transfers are scheduled and tracked through Plugin Interface Core (PIC) firmware blocks. There are at most 16 of any type of block and within each type the blocks are assigned numbers starting at zero. Each PGP core needs the use of a Pending Export Block (PEB) for the scheduling of transmissions, an Export Completion Block (ECB) to track the completion of transmissions, a Free List Block to track available buffers for reception and a Pending Import Block (PEB) to track buffers that have data from reception. Each core has its own PEB and PIB but share a common ECB and FLB. The lowest-numbered PIC blocks of each type are used for ethernet ports; one port on Petacache RCEs and two on ATLAS RCEs.
An additional PIC block called the Interrupt Summary Block tracks the state of the fault and event flags for all the other PIC blocks in the RCE.
ATLAS TDAQ RCE:
Core |
ECB |
FLB |
PEB |
PIB |
---|---|---|---|---|
A |
1 |
1 |
2 |
2 |
B |
|
|
3 |
3 |
C |
|
|
4 |
4 |
Petacahe RCE:
Core |
ECB |
FLB |
PEB |
PIB |
---|---|---|---|---|
A |
1 |
1 |
1 |
1 |
B |
|
|
2 |
2 |
C |
|
|
3 |
3 |
D |
|
|
4 |
4 |
PIC DCR addresses
Each PIC block is assigned four consecutive DCR addresses in order by block number within type:
Block type |
DCR addresses |
---|---|
ISB fault flags |
0x2fc-0x2fd |
ISB event flags |
0x2fe-0x2ff |
PEB |
0x300-0x33f |
ECB |
0x340-0x37f |
FLB |
0x380-0x3bf |
PIB |
0x3c0-0x3ff |
Software port numbers
For convenience, library and application software often refer to PGP "ports" where core A corresponds to port 0, etc. This port number is the same as the type sequence number assigned to PGP plugins by class PortList.