As well as forwarding SpaceWire packets towards their destinations, a SpaceWire router also broadcasts time-codes. Time-codes and the way in which they are broadcast by a SpaceWire router are described in the section “Time-Codes“.
Each router contains a time-code register (also called a time-code counter). When a time-code arrives on a port its value (6-bits carried in the data character of the time-code, see the section “SpaceWire Characters“) is compared to that of the time-code register. If it is one more than the time-code register, the time-code is valid and is forwarded out of all of the physical ports of the router, except the configuration port and the port that the time-code arrived on. This broadcasts the time-code over the network. The time-code register is then updated with the value of the received time-code. If the time-code is not one more than the time-code register, the value of the time-code is loaded into the time-code register, but the time-code is not forwarded. This prevents time-codes repeatedly circulating around a network that contains a loop via one or more routers. It also provides a method for recovering from time-codes that go missing, for whatever reason.
There is normally one time-code register in a router. Some implementations have, however, provided four time-code registers in the router with the top two-bits of the time-code data character being used to determine which of the four time-code registers to use. This permits up to four sets of time-codes to be broadcast simultaneously across the network. Strictly this violates the SpaceWire standard as the standard reserves the top two-bits of the time-code. These two-bits are likely to be used for other purposes in future, including interrupt signalling.