Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 SpaceWire Update NASA GSFC November 25, 2002. 2 GSFC SpaceWire Status New Link core with split clock domains complete (Much faster) New Router core.

Similar presentations


Presentation on theme: "1 SpaceWire Update NASA GSFC November 25, 2002. 2 GSFC SpaceWire Status New Link core with split clock domains complete (Much faster) New Router core."— Presentation transcript:

1 1 SpaceWire Update NASA GSFC November 25, 2002

2 2 GSFC SpaceWire Status New Link core with split clock domains complete (Much faster) New Router core (No - Group adaptive routing) is complete and in simulation Currently working Network/Transport layer issues – Initial protocol simulation complete. Still working on commanding and interface to Internet Protocols. Two customers exist: –JWST looking for SpaceWire – May be point to point network but will probably use router in the central instrument computer. Still debating use of transport layer. Network and transport layer need to be “mostly” in hardware to meet JWST speed requirements. –Supporting BAE technology activity to build high speed link/router test part on the same foundry that produces the RAD750. Expecting Mbps 16 link part with router. Will definitely include Link and router. Network and transport need to be solidified before inclusion in this part. Will probably include network processor for future flexibility Looking to make the user interface “similar” to 1553 so programs can use the part without significant redesign. SDO currently planning to use IEEE-1355 Summay: Projects are beginning to baseline SpaceWire network capable interfaces for instrument use. Most of these are Intra-nets one on orbit. Internet environment will probably exist on for ground test only.

3 3 GSFC SpaceWire Network/Transport Work Type 00 Description Destination Address is a Space Wire Logical address Source Address is a Space Wire Logical address Type Bits (2 bits) 00 = type 0 Packet Type 00 = Atomic message – Segment offset is not sent – chan 0 and unreliable messages must be atomic 01 = Segmented message – Segment offset included – must be reliable 10 = ACK packet - Every reliable transmitted packet is acknowledged with its assigned sequence number – No payload is allowed – IE segment offset and payload are not allowed. 11 = Error indicator – Sent when a fatal protocol error occurs – Fatal packet time out. SEQ Bit (4 bit) = 16 possible sequence counts – Max of 8 in use at any one time – Independent set for each dst, src, chan : Not used if Chan ID = 0. IE channel 0 messages are send and wait. Channel ID (8 bits) – Destination address, source address and channel ID identify a unique data stream or connection. Segment offset – only included if Packet type is Segmented – This is the byte offset of the first data element of the payload. The first Segment offset must be zero. The maximum is Payload – limited by MTU 8 bit CRC Destination Address Source Address Channel Control Channel ID Payload If PT = 00 or 01 CRC - 8 … 00 TYPE 0 SEQ Packet Type Segment Offset – only If PT = 01 Always Required Channel Commanded Used If ack packet and chan ID is zero Included if ACK packet: PT=10 and Channel ID is zero Included for Segmented Messages: PT=01 No Payload Allowed for ACK or Error Packets: PT = 10 or 11

4 4 TX sequence allocation example Sequence processing for allocation: –If a sequence number is in the TX window and free it can be allocated and is marked IN_USE otherwise sequence is unavailable. Sequence processing for acknowledge packets: –If a ACK packet is received for a packet in the TX window that is IN_USE it is marked ACK Received. –If the start of the window is in the ACK Received state change to the FREE state and move the Window one position forward. The Max window length is 8 to avoid overlap in RX sequence interpretation and simplify logic F FF F I AA A I II F F FF F Window start TX window max 8 packets F = Free I = IN_USE A = ACK Received Forward

5 5 RX sequence processing and data reordering example Detecting duplicate data –If data is received at sequence number: seq, and Data Available(seq) == Y discard the data. Otherwise store the data and Set the State of Data Available(seq) to Y. Delivering the data in order –While: Data_available(Next to be delivered) == Y and Data_delivered(Next to be delivered) ==N Deliver the data to the user, Set Data_delivered(Next to be delivered) to Y; Move Next to be delivered forward one. Moving the RX window –While seq is outside the window: Set Data_available(Window_start) = N, and Set Data_Delivered(Window_start) = N; Move window one position forward. –IE move the window forward resetting Data_available and Data_delivered until the received seq number is just inside the window. Y YN N Y YN N Window start RX window max 8 packets Y = Yes N = No Forward Y YN N N NN N Data Available Data Delivered Next to be delivered

6 6 Send User Packet IDLE NO New User Packet available Is the Packet Reliable Is the packet Plus header <= MTU Queue Multiple Reliable packets Of segmented Message to TX window NO Is the packet Plus header <= MTU NO User Message: no Segmentation Of unreliable packets YES Queue Single Reliable Packet to TX window YES Queue Single Message to TX Queue Is space Available On TX window User Message Try again Drop packet Is space Available On TX Queue User Message: Try again Drop packet YES NO

7 7 TX window processing IDLE New packet available Is Sequence Number Available? No Yes Init Send count Is a packet waiting for seq number? Seq number freed No Packet Timed out Is it the final timeout Delete Packet from window Free seq num Increment Times sent Counter Copy Packet To TX queue Is it a chan 0 packet Yes User Message: Packet Timeout Yes No Is it a chan 0 packet No Yes No

8 8 TX State Machine – Bottom half driver IDLE TX Queue Empty Send Packet Reliable packet on Snd Queue Unreliable packet on TX Queue Update Send Time ACK Packet on TX Queue Send Packet

9 9 TX Check and Allocate seq number Is the Seq Number in The window Is the Seq Number Free Yes OK Return Yes Mark Seq Number As IN USE Return No Enter No

10 10 TX Free Sequence Number Is the Seq Number in Use Mark Seq Number as ACK_REC Yes OK Return Set index to Window_start Enter No Is the Seq Number ACK_REC Set Seq number To FREE Move rx_window Start one position forward Move index one Position forward Yes No

11 11 RX Filter State Machine TEST DST Addr. Send Packet Directly to user buffer IDLE Packet available SpaceWire Networking Disabled DROP Packet from RX buffer Not For Me TEST SRC Addr. ELSE TEST Chan ELSE Not allowed ACK Packet User Message: Chan Error ACK Packet Processing ERROR Packet TEST Packet Type Segmented or Un-segmented Packet Processing Segmented or Un- segmented Data Packet

12 12 RX ACK Packet Processing Check Packet CRC IS the Chan ID Zero Failed OK Yes Lookup Chan Error OK Mark as Received In TX window Read Cmd Channel Signal CMD Processor CMD: ACK Mark as Received In TX window Free seq number Drop Packet from RX Buffer Lookup Chan No Return Enter Is Channel Reliable Error Yes OK Notify User

13 13 Segmented or Un-segmented Data/command Packet Processing Is the Chan ID Zero Check Packet CRC OK Yes OK Queue ACK packet Error Process Cmd packet Signal CMD Processor CMD: ACK Is CRC enabled Process User Data Lookup Chan No Return Enter No Failed Check Packet CRC OK Error DROP Packet from RX Buffer YES Queue ACK packet

14 14 Process User Data Is the channel Reliable? OK No Is ACK Enabled for channel Process Reliable User Data Queue ACK Packet Return Enter Yes Failed Queue ACK packet Deliver Packet To User With Seq Num No YES

15 15 RX Process Reliable User data Has the seq id Been received before Yes Return False Set index to Next to be delivered Enter With chan index And seq number received No Is the indexed window buffer available and not delivered At index Deliver data To user Mark data as delivered Move Next To be delivered Forward One Move index one Forward Are we Past the window? Yes No Mark it as Being received Put data in the Buffer mark the seq number As data available No Yes Is the seq Number Received Outside The window Set buffer status Of window start To not received Set Deliver status Of window start To not delivered Move the RX Window start one Position forward Return False Yes No


Download ppt "1 SpaceWire Update NASA GSFC November 25, 2002. 2 GSFC SpaceWire Status New Link core with split clock domains complete (Much faster) New Router core."

Similar presentations


Ads by Google