SPADIC-Susibo communication CBMnet

Transcription

SPADIC-Susibo communication CBMnet
SPADIC-Susibo communication using CBMnet
Michael Krieger
SuS Meeting, 26.02.2013
Michael Krieger
SPADIC-Susibo communication using CBMnet
1
Introduction
SPADIC-Susibo communication so far
Limitations:
SPADIC
unreliable (connection breaks
down at high data rates)
register file
cannot read data from group B
cannot read register values
channel group A
“CBMnet”
epoch channels need DLMs
(CBMnet feature)
Susibo needs to
“speak CBMnet”
channel group B
Michael Krieger
SPADIC-Susibo communication using CBMnet
2
Introduction
“CBMnet” in more detail
SPADIC
CBMnet
SERDES
clk,
reset
start/stop,
sync, trigger
RF
4
16
4× LVDS
DLM
data
ctrl
16+2
16+2
group A
group B
16
data
16+2
data
16
“ports”
Michael Krieger
“links”
SPADIC-Susibo communication using CBMnet
3
Introduction
CBMnet routing
Susibo connector
HDMI connector
Michael Krieger
SPADIC-Susibo communication using CBMnet
4
CBMnet Susibo implementation
Susibo point of view
SERDES
clk root
Susibo
CBMnet
clk,
reset
DLM
data
16+2
ctrl
4
16
16+2
16+2
data
16
data
CBMnet block provided
(should be generic
enough)
SERDES block: SP605
implementation
provided—not generic
enough → need to adapt
for Susibo
16
Michael Krieger
SPADIC-Susibo communication using CBMnet
5
CBMnet Susibo implementation
Signal delays
SERDES
SERDES
ensure correct clock/data alignment
?
clk root
on both sides
automatically (independent of
PCB routing, cable length, bitfile,
...)
?
?
Virtex 5 provides
?
IDELAY (variable)
ODELAY (fixed)
SPADIC
Susibo
DCM (variable)
250 MHz bit clk, DDR → 2 ns/bit
Michael Krieger
SPADIC-Susibo communication using CBMnet
6
CBMnet Susibo implementation
SERDES building blocks
receiver module:
control input
control input
20
IBUFDS
IDDR
IDELAY
20
16+2
barrel shifter
deserialiser
8b/10b decoder
word clk
bit clk
Michael Krieger
SPADIC-Susibo communication using CBMnet
7
CBMnet Susibo implementation
SERDES building blocks
transmitter module:
serialiser override
encoder override
20
OBUFDS
ODDR
serialiser
16+2
8b/10b encoder
word clk
bit clk
bit clk
Michael Krieger
SPADIC-Susibo communication using CBMnet
8
CBMnet Susibo implementation
SERDES building blocks
clock root:
phase shift control
200 MHz clk source
IBUFGDS
OBUFDS
to FPGA logic
LVDS
DCM_ADV
DCM_ADV
currently: 200 MHz bit clock, 20 MHz word clock
Michael Krieger
SPADIC-Susibo communication using CBMnet
9
CBMnet Susibo implementation
clock phase shift adjustment
send pattern to SPADIC
is the pattern received?
can we receive the answer?
Susibo
SPADIC
phase shift control
clk root
clk root
serialiser override
RX
send pattern
TX
delay, barrel shifter control
TX A
pattern detected?
TX B
RX A
yes/no/?
RX B
Michael Krieger
SPADIC-Susibo communication using CBMnet
10
CBMnet Susibo implementation
clock phase shift adjustment
target
scan
yes
no
?
scan for yes/no border
go to center
how to stay inside (slope)?
Michael Krieger
SPADIC-Susibo communication using CBMnet
11
CBMnet Susibo implementation
side note: LVDS signal quality
almost 50%
10%
flaw in SPADIC LVDS output buffer
measurement artefact
Michael Krieger
SPADIC-Susibo communication using CBMnet
12
CBMnet Susibo implementation
clock phase shift adjustment
store value
store value
IDELAY wraps around!
relatively simple and fail-safe algorithm:
go right/down until outside “yes”/“no”
independent of slope (no need to even know the slope)
DCM phase shift range only scanned once (does not wrap around →
rewind logic saved)
scan completely → end position known
Michael Krieger
SPADIC-Susibo communication using CBMnet
13
CBMnet Susibo implementation
input delay adjustment
send pattern to SPADIC
the pattern should now be received
can we receive the answer?
SPADIC
Susibo
clk root
clk root
serialiser override
RX
send pattern
TX
delay, barrel shifter control
TX A
pattern detected!
RX A
yes/?
delay, barrel shifter control
TX B
pattern detected!
Michael Krieger
RX B
yes/?
SPADIC-Susibo communication using CBMnet
14
CBMnet Susibo implementation
SERDES handshake
SPADIC
Susibo
clk root
clk root
encoder override
RX
TX A
TX B
ready0, ready1
TX
ready0, ready1
ready0, ready1
RX A
ready0/ready1?
RX B
ready0/ready1?
send ready0 → SPADIC stops sending “yes”/“no”
wait for incoming ready0 characters
send ready1, wait for ready1 → finish
Michael Krieger
SPADIC-Susibo communication using CBMnet
15
CBMnet Susibo implementation
CBMnet initialization
CBMnet
SPADIC
Susibo
SERDES
SERDES
ACK?
CBMnet
“ready”
after SERDES is ready (LED), CBMnet can use it
again handshake
SPADIC-side handshake FSM often stuck in infinite loop: waiting for
“ACK”
Susibo FSM assumed “ACK” was sent, but it wasn’t
handshake specification?
cannot decide if wrong concept or wrong implementation → hack: send
some more “ACK”s. . .
Michael Krieger
SPADIC-Susibo communication using CBMnet
16
CBMnet Susibo implementation
Status
CBMnet
SPADIC
Susibo
SERDES
SERDES
CBMnet
SPADIC signals “CBMnet ready” most of the time (LED)
first experiment: write register file
works almost always (why not always?)
correct control characters are sent (at least they enter the 8b/10b
encoder), but register is not written
ACK01, ACK03 are returned, ACK00, ACK02 not
Michael Krieger
SPADIC-Susibo communication using CBMnet
17

Similar documents