Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SLAC Register Protocol (SRP)

Pretty Good Protocol (PGP)

ASIC Protocols

Line Codes

Slac Streaming Protocol (SSP)

Packetizers & Chunkers

Network Protocols

Misc. Protocols

SRP Version 0

Incoming Request

Word#BITSNameDescriptionNote
0[31:0]TID[31:0]Transaction ID(echoed back)
1[29:0]Address[31:2]Start AddressAlways 32-bit aligned
1[31:30]OP-CodeOperation Code

0x0=Read, 0x1=Write,

0x2=Set, 0x3=Clear

2[31:0]WriteData[31:0] or ReadCount[8:0]First Write or Read request counterUp to 2^9 words per transactions
............ 
N-1[31:0]WriteData[31:0]Last Write 
N[31:0]Don't CareDon't Care 

Outgoing Response

Word#BITSNameDescriptionNote
0[31:0]TID[31:0]Transaction ID(echoed back)
1[29:0]Address[31:2]Start AddressAlways 32-bit aligned
1[31:30]OP-CodeOperation Code

0x0=Read, 0x1=Write,

0x2=Set, 0x3=Clear

2[31:0]WriteData[31:0] or ReadData[31:0]First Write or First Read 
............ 
N-1[31:0]WriteData[31:0] or ReadData[31:0]Last  Write or Last Read 
N[0]Fail FlagRegister transaction Error(response data)
N[1]Timeout FlagTimeout Error(response data)
N[31:2]ReservedReserved (0x0)Reserved for Future Use

Note: "set" and "clear" were defined but never implemented in the software and firmware.

SRP Version 1 

Contact Till Straumann <strauman@slac.stanford.edu> for SRP version 1 definition

SRP Version 2 

Contact Till Straumann <strauman@slac.stanford.edu> for SRP version 2 definition

Memory Access Protocol (MAP)  ¯\_(ツ)_/¯

Incoming Request

Word#BITSNameDescriptionNote
0[31:0]TID[31:0]Transaction ID(echoed back)
0[31:0]TID[63:32]Transaction ID(echoed back)
1[29:0]SizeNumber of 32-bit words to transfer 
1[31:30]Unused  
2[30:0]Address[33:2]Starting word address of transferBits 1:0 are always 0
2[31]RNWOpCode0=Read, 1=Write

Outgoing Response

Word#BITSNameDescriptionNote
0[31:0]TID[31:0]Transaction ID(echoed back)
0[31:0]TID[63:32]Transaction ID(echoed back)
1[29:0]SizeNumber of 32-bit words to transfer 
1[31:30]Unused  
2[30:0]Address[33:2]Starting word address of transferBits 1:0 are always 0
2[31]RNWOpCode0=Read, 1=Write
3+N DataRead data word N 
3+N+Size[0]ErrorAn error occured 
3+N+Size[2:1]ErrorValueAXI Return code 

SRP Version 3

Requirements

  • Support an AXI4-Lite and AXI4 firmware modules
    • SrpV3AxiLite.vhd will only support 32-bit transactions and 32-bit alignment
    • For applications that need non 32-bit transactions or non 32-bit alignment for AXI-Lite, we can achieve this by bridging the SrpV3Axi.vhd with the AxiToAxiLite.vhd
  • Echos back the AXI stream's TDEST
  • Header will include:
    • SRP Version number: (8-bits)
      • Always echo backs the local version
    • OP-Code: Non-Posted Read, Non-Posted Write, Posted Write, NULL (2-bit)
    • Spare (6-bit)
    • Retry counter (8-bit)
    • Timeout counter (8-bit)
      • In units of 100 ms
      • If 0x0, no time out
    • Transaction ID: (32-bits)
    • Base Address of bursting (64-bits)
    • Request Size  (32-bit)
      • In units of bytes
      • Max. read size is 232
      • Max. write size is 212
  • Header will be echoed except for:
    • SRP Verson number
  • Footer will be 32-bit, zero on success, and will include:
    • Memory Bus response (8-bit)
      • success == 0x0
      • failed != 0x0
    • Timeout flag (1-bit)
    • Request's EOFE (1-bit)
    • Version Mismatch (1-bit)
    • Invalid request size (1-bit)
    • All other bits must be 0x0
  • 32-bit data register transactions
    • Byte aligned access
    • Read and Write transactions supported
    • Set and Clear transactions NOT supported
    • Read Modify Write NOT supported
  • 64-bit address space
    • 64-bit required for >4 GB DDR memory
  • Support single and bursting transactions
    • Support up to 232 byte read burst transactions
    • Support up to 212 byte write burst transactions
    • Only support contiguous bursting
  • If inbound request (non-posted) is received and EOFE, the SRP firmware will not perform read/write transaction and respond back.
    • Requires caching up the transaction (Set AxiStreamFifo's VALID_THOLD_G = 0)
    • While caching: If the FIFO is full and no request frame detected (SOF + EOF), then the SRP firmware will drain the FIFO
  • If inbound request is received with version number not equal to the protocol, the SRP firmware will not perform read/write transaction and respond back

Incoming Request

Word#BITSNameDescriptionNote
0[7:0]Version[7:0]SRP Version number 
0[9:8]OpCode[1:0]Operation Code
  • 0x0=Non-Posted Read
  • 0x1=Non-Posted Write
  • 0x2=Posted Write
  • 0x3=NULL
0[15:10]SPARE[5:0]Unused, spare bits 
0[23:16]RetryCnt[7:0]Retry Counter 
0[31:24]TimeoutCnt[7:0]Timeout Counter
  • If 0x00, then no timeout
  • In units of 100 ms
1[31:0]TID[31:0]Transaction ID 
2[31:0]Addr[31:0]Register AddressIn units of bytes
3[31:0]Addr[63:32]Register AddressIn units of bytes
4[31:0]ReqSize[31:0]Request Size
  • In units of bytes
  • Counting from zero
  • ReqSize = 0x0 is 1 byte request
5[31:0]WriteData[31:0]Write DataOnly used for write operations
............Only used for write operations
4+CEIL((ReqSize+1)/4)[31:0]WriteData[31:0]Write DataOnly used for write operations

Outgoing Response

...

  • if MemResp == 0, then success
  • if MemResp != 0, then failed

...