This example shows a selective-repeat automatic repeat request (ARQ) system. Packets are created, transmitted over a channel and affected by errors with a probability determined by the Forward Channel. This model allows you to visualize the system's behavior and analyze its performance under different conditions.
The model simulates the following processes:
Transmitting frames through the forward channel
Introducing errors to frames
Receiving frames and returning messages through the return channel
For each received frame, the receiver sends an acknowledgment (ACK) or nonacknowledgment (NAK) message back to the transmitter based on a cyclic redundancy code (CRC) check. The transmitter retransmits only the frames corresponding to NAK messages.
This subsystem generates data frames with an exponential intergeneration time. Each frame has a unique sequence number that identifies it. (Note: This example uses the term "frame" in an abstract sense that is unrelated to frame-based signals in Simulink® software.)
The transmitter transmits frames and also retransmits corrupted frames based on ACK and NAK messages from the receiver. An entity whose ack attribute is 1 corresponds to an ACK message, while 0 corresponds to a NAK message. Logic inside a discrete event subsystem controls the retransmission of frames. Flow control is handled through the retransmission queue, which becomes full when the number of unacknowledged frames equals the model's Sliding window size parameter.
The forward and reverse channels represent the propagation delay, assumed to be longer than the delay associated with transmission. That is, the transmitter finishes sending the complete frame before the receiver begins receiving it. Packets are potentially corrupted, but not dropped, during transmission. The reverse channel is assumed to be error-free.
This subsystem corrupts packets with a given probability. The model assumes that the receiver can detect an error via a CRC check but cannot correct the error.
The receiver sends an ACK or NAK message back to the transmitter for each frame and either accepts or rejects the frame according to the CRC check. After rejecting a frame, the receiver buffers subsequent frames until it correctly receives the rejected frame. At that point, the receiver reconstructs the frame sequence using the sequence numbers. The logic for the reconstruction is in the MATLAB® Function block in the Discrete Event Subsystem block in the Sort Frames subsystem.
Scopes show the time and sequence number of four types of frames:
Frames accepted by the receiver
Frames rejected by the receiver
Frames in the reconstructed sequence
An additional scope displays the result of the CRC check for each received frame, where a value of 0 indicates an error.