You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 21 Next »

  • SUGOI = SLAC Ultimate Gateway Operational Interface
  • 凄い (or すごい or Sugoi) is a word that's typically used when you're left awestruck out of excitement or feel overwhelmed

Requirements

  • Targeted for ASIC register communication and timing/trigger synchronization
  • point-to-point communication
  • Serial Encoding: 8B10B
    • DC balanced
    • Targeting FPGA/ASIC communication to over fiber optic or long copper cables
  • Serial Rate: Same as reference clock sent to ASIC
  • Supports fixed latency communication

Control Codes

The IDLE code is sent when no data frame and no trigger code is being sent.  Trigger codes can be sent at any time, independent of the state of the data transport.  There are 8 trigger codes that are mapped to a 8-bit trigger operation code bus.  The GR is used to send a "global reset" to all the ASIC digital logic.  The SOF code is used to indicate the start of a data payload transport. After the SOF either the data payload (or trigger code) is sent.  After the last data payload byte, the EOF code is sent. 

IDLEK28.5
SOF (Start of Frame) K28.0
EOF (End of Frame)K28.1
Trigger Code[BIT=0]K28.2
Trigger Code[BIT=1]K28.3
Trigger Code[BIT=2]K28.4
Trigger Code[BIT=3]K28.6
Trigger Code[BIT=4]K28.7
Trigger Code[BIT=5]K23.7
Trigger Code[BIT=6]K27.7
Trigger Code[BIT=7]K29.7
GR (Global Reset)K30.7

Data Frame Format for Register Access

The FPGA sends request messages to the ASIC in the serial protocol data payload tranport (in-between SOF and EOF). The ASIC processes the message and responds back to the FPGA.  Only 1 message is in flight at any time to remove the requirement of back pressuring the link.   Both the request message and responds message are the same size (13 bytes).

ASIC Inbound (FPGA Outbound) Request Format

Byte OffsetNameDescriptionNote
0Version[7:0]Version number Must be 0x1
1OpCode[7:0]Operation Code
  • 0x0=Non-Posted Read
  • 0x1=Non-Posted Write
  • 0x2=Posted Write
  • 0x3=NULL
  • 0x4 ~ 0xFF (unused)
2TID[7:0]Transaction IDUsed for debugging
3DevAddr[7:0]Device Address
  • Used in daisy chain mode only
  • 0xFF is a broadcast for all device
4RegAddr[31:24]Register AddressIn units of bytes
5RegAddr[23:16]
6RegAddr[15:8]
7RegAddr[7:0]
8WriteData[31:24]Write DataOnly used for write operations
9WriteData[23:16]
10WriteData[15:8]
11WriteData[7:0]
12Respond[7:0]Responds  Value
  • Used in daisy chain mode only
  • bitwise OR of all responds in the chain

ASIC Outbound (FPGA Inbound) Response Format


Byte OffsetNameDescriptionNote
0Version[7:0]Version numberEchoed back
1OpCode[7:0]Operation CodeEchoed back
2TID[7:0]Transaction IDEchoed back
3DevAddr[7:0]Device AddressEchoed back
4RegAddr[31:24]Register AddressEchoed back
5RegAddr[23:16]
6RegAddr[15:8]
7RegAddr[7:0]
8MemData[31:24]Memory Data
  • Only used for non-posted operations
  • Either read or write data depending on OP-code value


9MemData[23:16]
10MemData[15:8]
11MemData[7:0]
12Respond[7:0]Responds  Value

Only used for non-posted operations.  non-zero if error

  • BIT0 = Memory Transaction Responds
  • BIT1 = Version Mismatch Error
  • BIT2 = non 32-bit address alignment
  • BIT3 = Framing Error
  • BIT[7:4] = 0x0


  • No labels