The simulation codes package provides the implementation of an ARQ system with chase combining.
ARQ with chase combining using maximum ratio combining is designed in most communication systems in such a way to keep retransmitting the same data packet as long as CRC detects an error in the received packet (i.e. CRC output is one) and the current retransmission round index is less than (L) set by ARQ protocol. This process allows for implicit rate adaptation to the instantaneous Bob’s channel quality because Bob stops asking for retransmission once his channel conditions experienced by a packet are good enough to allow for successful decoding. In fact, there are different combination methods that can be performed at different signal processing levels such as before demodulation, or after demodulation and before decoding, or even after decoding. However, in our case, since we are using the same modulation, coding, and power in each retransmission round, the combination process at the receiver is performed before demodulation. Each version of the received packet at each round is multiplied by the corresponding estimated channel conjugate. The output of this process is saved in a buffer so that it can be combined with the forthcoming retransmission versions of the same packet. The combined received packet is then jointly demodulated, and then CRC is used to detect if there are any bit errors in the received packet or not. According to the output of CRC, the receiver decides whether to ask for retransmission (i.e. send NACK message) or stop the process of retransmitting the same packet by sending an ACK message.