This is a communication system that use Orthogonal Frequency Division Multiplexing (OFDM) and On-Off Keying (OOK) (one bit sent on each complex-valued component). An OFDM symbol can be described as
where silence signal is used to differentiate symbols; pilot signal is used to determine the channel's impulse response; and each batch includs symbols for each bit and cyclic prefix.
The input to the encoder is a vector of 0/1. The ouput is a .wav file named tx.wav with sampling frequency equal to 44.1kHz and amplitude resolution of 24 bits per sample. This file is then transmitted through a physical channel to obtain a rx.wav file, from which the receiver will decode the file to get the transmitted data.
The length of the silent signal is 2,151. The length of the silence signal should be at least equal to length of the impulse response, 150 (for the physical channel I tested on), to avoid interference between two OFDM symbols. The silence signal helps us to distinguish two OFDM symbols and to find the starting index of the next OFDM symbol.
The pilot signal is used to learn the physical channel in the decoder. The reason we add pilot signals in front of each OFDM symbol, instead of just sending one pilot signal at the very beginning of the transmission, is because the impulse response of the channel changes throughout the time. For example, intensive communication through the channel could cause the resistors of the RLC filter to heat up, which causes variation of the impulse response of the channel.
We define the pilot signal as
where
and
is a sequence of angle generated with a specific seed of random number generator.
For the cyclic prefix, we use and
since the physical channel must be casual.
The receiver open the rx.wav file and output a vector, which has the same length as the input 0/1 vector, as the decoded 0/1 bit.
A major component of the decoder is to search for the first sample point that is not purely noise. That sample point is the starting point of a OFDM symbol. At high SNR, the instantaneous received power will increase dramatically at the moment the samples begin to capture transmitted ones. We utilized a moving-average of the received power to identify the starting point. Define the moving-average of the instantaneous received power as
The signal S will be near zero until Y begins to register energy from the transmission.
The starting sample point is
where J is the length sample used to calculate the average power, is the power threshold, and
is the “backed-up” constant. For the specific physical channel, I used
Randomly generated a vector of 200,000 bits, the number of incorrect bits is approximately 400.