30.10.2014 Views

Router Configuration port access/configuration ... - SpaceWire

Router Configuration port access/configuration ... - SpaceWire

Router Configuration port access/configuration ... - SpaceWire

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>SpaceWire</strong> <strong>Router</strong><br />

<strong>Configuration</strong> Protocol<br />

<strong>SpaceWire</strong> Working Group<br />

Steve Parkes,<br />

Chris McClements,<br />

Martin Dunstan,<br />

University of Dundee


Contents<br />

! <strong>SpaceWire</strong> <strong>Router</strong><br />

! <strong>Configuration</strong> Protocol<br />

– Read Register<br />

– Write Register<br />

! FEIC<br />

– Protocol Extensions<br />

! Requirements


<strong>SpaceWire</strong> Network<br />

MEMORY<br />

1<br />

SENSOR 1<br />

2<br />

1<br />

3 4<br />

ROUTER<br />

1<br />

5<br />

6<br />

7<br />

8<br />

P 1 P 2<br />

SENSOR 2<br />

1<br />

2<br />

ROUTER<br />

2<br />

3 4<br />

MEMORY<br />

2<br />

8<br />

7<br />

6<br />

5<br />

P 3 P 4<br />

Processor Array


<strong>SpaceWire</strong> Network<br />

MEMORY<br />

1<br />

SENSOR 1<br />

RR<br />

RR<br />

RR<br />

P 1 P 2<br />

SENSOR 2<br />

RR<br />

RR<br />

MEMORY<br />

2<br />

RR<br />

P 3 P 4<br />

Processor Array


<strong>SpaceWire</strong><br />

Interfaces<br />

<strong>SpaceWire</strong><br />

Port 1<br />

<strong>SpaceWire</strong><br />

Port 2<br />

<strong>SpaceWire</strong><br />

Port 3<br />

<strong>SpaceWire</strong><br />

Port 4<br />

<strong>SpaceWire</strong><br />

Port 5<br />

<strong>SpaceWire</strong><br />

Port 6<br />

<strong>SpaceWire</strong><br />

Port 7<br />

<strong>SpaceWire</strong><br />

Port 8<br />

Control<br />

Logic<br />

Non-blocking<br />

Crossbar<br />

Switch<br />

Routing<br />

Table<br />

Status/Error<br />

Registers<br />

Control<br />

Registers<br />

<strong>Configuration</strong><br />

Port<br />

Status<br />

Outputs<br />

External<br />

Input/Output<br />

External<br />

Input/Output<br />

Input FIFO<br />

Output FIFO<br />

External Port<br />

Input FIFO<br />

Output FIFO<br />

External Port<br />

Tick<br />

Counter<br />

Time-Code<br />

Inputs/Outputs


<strong>Configuration</strong> Port and Registers<br />

CONTROL<br />

REGISTERS<br />

CONFIGURATION<br />

PORT<br />

CONFIGURATION BUS<br />

LINK<br />

REGISTER LINK<br />

REGISTER LINK<br />

REGISTER<br />

ROUTING<br />

TABLE<br />

ROUTING<br />

(224<br />

TABLE<br />

ADDR) ROUTING<br />

TABLE


<strong>Configuration</strong> Packet Formats<br />

<strong>Configuration</strong> write packets:<br />

PATH<br />

ADDR<br />

PRCOL<br />

RETURN<br />

ADDR<br />

CMD<br />

REG<br />

ADDR<br />

DATA CHKSUM EOP<br />

<strong>Configuration</strong> read packets:<br />

PATH<br />

ADDR<br />

PRCOL<br />

RETURN<br />

ADDR<br />

CMD<br />

REG<br />

ADDR<br />

CHKSUM EOP<br />

<strong>Configuration</strong> write and read reply packets:<br />

PATH<br />

ADDR<br />

CMD<br />

REG<br />

ADDR<br />

ACK/<br />

DATA CHKSUM EOP<br />

NACK


<strong>Configuration</strong> Packet Formats<br />

The <strong>configuration</strong> commands have the following format:<br />

7<br />

0<br />

1 RSV RSV RSV RSV A8 RD WR<br />

WR is the write flag, when set the command is a write command.<br />

RD is the read flag, when set the command is a read command.<br />

A8 is the most significant bit of the 9-bit <strong>configuration</strong> register address.<br />

RSV represents reserved bits.


Checksum Coverage<br />

PATH<br />

ADDR PRCOL RET<br />

CMD REG<br />

ADDR<br />

ADDR<br />

DATA<br />

CHK<br />

SUM<br />

EOP<br />

CHECKSUM COVERAGE


Write<br />

Command<br />

<strong>Configuration</strong> Port<br />

Destination Address<br />

Protocol<br />

Write Address<br />

Write Command<br />

Return Address<br />

Write Data<br />

Checksum<br />

COMMAND<br />

6<br />

2<br />

0<br />

32<br />

3<br />

8<br />

WR<br />

ADR DA0<br />

DA1 DA2 DA3 CHKEOP<br />

REPLY<br />

5<br />

3<br />

8<br />

WR<br />

ADR DA0<br />

DA1 DA2 DA3 ACKCHK<br />

EOP<br />

Return Port<br />

Return Address<br />

Copy Write Command<br />

Copy Write Address<br />

Copy Write Data<br />

ACK/NACK<br />

New Checksum


Read<br />

Command<br />

<strong>Configuration</strong> Port<br />

Destination Address<br />

Protocol<br />

Checksum<br />

Write Address<br />

Read Command<br />

Return Address<br />

COMMAND<br />

6<br />

2<br />

0<br />

32<br />

3<br />

8<br />

RD<br />

ADR CHKEOP<br />

REPLY<br />

5 3 8 RD ADR DA0 DA1 DA2 DA3 ACKCHK<br />

EOP<br />

Return Port<br />

Return Address<br />

Copy Read Command<br />

Copy Read Address<br />

Read Data<br />

ACK/NACK<br />

New Checksum


Autonomous Planetary Landers<br />

Position<br />

Initialisation<br />

Surface<br />

Relative<br />

Navigation<br />

Hazard<br />

Detection<br />

Touch-down


Feature Tracking<br />

“Landmark”<br />

Tracking<br />

Target<br />

Landing<br />

Site


Feature Extraction IC<br />

Camera Control<br />

<strong>SpaceWire</strong><br />

Mini-<strong>Router</strong><br />

Image<br />

Memory<br />

Feature<br />

Detection<br />

Local<br />

Maximum<br />

Feature<br />

Tracking<br />

Selection<br />

Feature<br />

List<br />

Manage<br />

FEIC


FEIC Video


Feature Extraction IC<br />

Camera Control<br />

Download Test Image (DMA)<br />

<strong>SpaceWire</strong><br />

Mini-<strong>Router</strong><br />

Signal Event<br />

Transfer Feature List<br />

Read/Write Control/<strong>Configuration</strong> Registers<br />

Image<br />

Memory<br />

Feature<br />

Detection<br />

Local<br />

Maximum<br />

Feature<br />

Tracking<br />

Selection<br />

Feature<br />

List<br />

Manage<br />

FEIC


FEIC Requirements<br />

! Needed to extend the set of <strong>configuration</strong><br />

commands<br />

! Write data block to consecutive registers<br />

! Write data block to one register (DMA)<br />

! Signal event from FEIC


Controlling the FEIC<br />

! All interaction is via registers:<br />

– executable command registers<br />

– write-only <strong>configuration</strong> registers<br />

– read-only status/information registers<br />

– read-write <strong>configuration</strong> registers<br />

! Example: reading LN list of new points:<br />

– write to the “send-LN<br />

LN-list” register<br />

– FEIC will send the data later (but ASAP)


<strong>SpaceWire</strong> Interface<br />

! Use router <strong>configuration</strong> packet format:<br />

! Each packet defines a register operation:<br />

– read/write from/to one 32-bit register<br />

– write to consecutive 32-bit registers<br />

! improve throughput for burst writes<br />

– write multiple to one register (e.g.(<br />

DMA)


Command Byte (1)<br />

1 F1 F0 C2 A9 A8 C1 C0<br />

C2<br />

C1<br />

C0<br />

Description<br />

0<br />

0<br />

0<br />

Not valid<br />

0<br />

0<br />

1<br />

Write single 32-bit register<br />

0<br />

1<br />

0<br />

Read single 32-bit register<br />

0<br />

1<br />

1<br />

Read-modify<br />

modify-write (not used in FEIC)<br />

1<br />

0<br />

0<br />

Write multiple to one register (DMA)<br />

1<br />

0<br />

1<br />

Write multiple to consecutive registers<br />

1<br />

1<br />

0<br />

List/event packet from FEIC<br />

1<br />

1<br />

1<br />

Not valid


Command Byte (2)<br />

1 F1 F0 C2 A9 A8 C1 C0<br />

! The F0/F1 bits are for fill bytes:<br />

– indicate the number of padding bytes<br />

– padding is between payload and checksum<br />

– helps RISC CPUs (memory alignment)<br />

! The A8/A9 bits are register address bits:<br />

– FEIC has a 10-bit address space<br />

– register address byte contains bits 0-70<br />

– command byte has bits 8 and 9


Command Packets (to FEIC)<br />

Checksum coverage<br />

Target<br />

Address<br />

Protocol<br />

Return<br />

Address<br />

Command<br />

Register<br />

Address<br />

Checksum EOP<br />

Target<br />

Address<br />

Return<br />

Address<br />

Data<br />

Data<br />

Data<br />

Data


Data Packets from FEIC<br />

Checksum coverage<br />

Leading<br />

zeros<br />

are<br />

dropped<br />

by<br />

FEIC<br />

Target<br />

Address<br />

Target<br />

Address<br />

Target<br />

Address<br />

Target<br />

Address<br />

Command<br />

(0x92)<br />

Payload<br />

Type<br />

Payload<br />

Payload<br />

Payload<br />

Payload<br />

Checksum EOP<br />

Payload


Write Multiple<br />

Command<br />

<strong>Configuration</strong> Port<br />

Destination Address<br />

Protocol<br />

Write Address<br />

Write Command<br />

Return Address<br />

Write Data<br />

Checksum<br />

CMD<br />

DA1<br />

REPLY<br />

RP<br />

DA2<br />

RA1<br />

DP<br />

RA2<br />

PI<br />

WR<br />

RA1 RA2<br />

ADR D0<br />

WR ADR D0<br />

D1 D2 D3<br />

D1 …. DN-1<br />

ACKCHK<br />

EOP<br />

FILLCHKEOP<br />

Return Port<br />

Return Address<br />

Copy Write Command<br />

Copy Write Address<br />

Copy Write Data<br />

ACK/NACK<br />

New Checksum


Requirements<br />

! Read/Write Register (32-bit register)<br />

! Read/Modify/Write Register<br />

! Write to block of registers (start address, length?)<br />

! Read from block of registers (start address, length)<br />

! DMA Write Block of Data (start address, length?)<br />

! DMA Read Block of Data (start address, length)<br />

! Signal Event<br />

! Send Data Block on Event<br />

! For single register commands<br />

– can buffer and check checksum before actually writing data<br />

! When transferring large blocks<br />

– cannot buffer and check first,<br />

– just flag error at end of transfer<br />

– if there was an error.<br />

– Use of intermediate checksums?<br />

! CRC or checksum?

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!