# An Efficient Multi-Lane SpaceFibre Core for Spacecraft Data-Handling Networks
## 3 Architecture of the E-ML-SpFi Core
### Key Technologies  
#### 3.2.1 Hierarchical Error Recovery  
SpaceFibre provides a mechanism of retransmission [27] to achieve fault tolerance. The data retry mechanism without any optimization has high complex logic [24] and area consumption. To simplify the design and implementation of the mechanism, we propose a hierarchical architecture of error recovery, which involves three levels. Details about the architecture are explained in the following paragraphs, focusing on a response control level, a storage control level, and a retry control level. The response control level, which is the first level, employs the lightweight and reliable response control FSM to control the behaviors of other layers. The lightweight FSM shown in Figure 3 has only three states, and the reliability of the FSM is ensured by the storage of the information carried by an ACK or NACK word. If an ACK or NACK word is correctly received and the FSM is not in the Idle state, the last received information from the word will be kept in a register, which can avoid the omission of an ACK or NACK word and overflow in retry buffers. The FSM moves to the Idle state in case the value of the signal. Done from the storage control level is hexadecimal 7. Once the FSM returns to the Idle state and an ACK control word is stored in the register, the FSM enters the ACK Processing state. Similarly, the FSM shall move to the NACK Processing state if an NACK control word is registered. In the ACK Processing state and the NACK Processing state, the signal AnsDeal is updated and transmitted to the storage control level. The second level is the storage control level, as depicted in Figure 4, which utilizes resource-optimized storage architecture to save the increment frames not already acknowledged. The architecture employs a differentiation scheme to store increment frames instead of sharing a mass retry buffer. The scheme stores data frames, broadcast frames, and FCT words in a data retry buffer, a BC retry buffer, and an FCT retry buffer, respectively. In addition, only one word in the data-sending row is stored, which consists of broadcast frames or flow control words. Moreover, an FCT control word only makes a backup of the channel number field and the unsigned sequence number. If the state of the response control FSM in the response control level is the NACK Processing state, the storage control FSMs assert the requests for retransmission and send to the retry control level. After the enable signals are received from the retry control level, the retransmission of the backups in retry buffers starts. The retry control level is responsible for controlling the reuse of framing blocks to reduce circuit consumption, which is the third level. The level is composed of retry control units (RCUs) for data frames, broadcast frames, and flow control words. In the following, we take the RCU for data frames as an example to describe the design of RCUs. When a data frame needs to be sent, the RCU for data frames requests the transmission of data frames, as shown in Figure 5. Once the request is answered, the RCU transfers the corresponding data sources to the data-framing block. The selection of sources is based on the signal ReReqData and the signal ReQData. When the ReReqData is de-asserted and the signal ReQData is true, data words from an output VC buffer are selected. If the signal ReReqData is asserted, the RCU sends the data words from the data retry buffer in the storage control level to the data-framing block. Figure 4: Block diagram of the storage control level. Figure 3: Description of the response control level. The proposed hierarchical architecture is composed of three levels. The first level, called the response control level, controls the entire retransmission process through a lightweight and reliable FSM. The second level is the storage control level, which employs the resource-optimized storage architecture. The retry control level, which is the third level, reuses the framing blocks to improve the utilization of hardware resources.