I am getting a little confused between rate matching vs code rate as applied at FEC/Channel coding.
How and when what code rate and rate matching is applied?
Are these independent of each other?
Is the context of your question specific to a particular standard or device? "Rate Matching" may actually mean something different across different contexts, or you may just mean "puncturing", depending. Also, is the question with respect to Turbo Codes or just general convolutional codes?
Generally the "code rate" is just the ratio of information bits over transmitted bits, so an R = 1/2 code transmits two coded bits for every one information bit, and an R = 3/4 code transmits four coded bits for every three information bits.
A "punctured" code deletes (usually coded or redundant) bits in a specific pattern to adjust a code rate up from some lower "mother code" rate. e.g., an R = 3/4 code can be punctured up from an R = 1/2 code by deleting sufficient bits in the coded stream.
"Rate Matching" sometimes refers to an overall adaptive modulation scheme or just configuration scheme where the desired puncture rate is selected.
I am trying to understand the concept better. So, useing any standard (e.g. LTE) is fine.
Is puncturing a part of rate matching scheme?
I assume decisions to use different coding rates depend on the channel condition and then using rate matching adjustment to match available bandwidth is done. Is this correct?
Yes, both are independent of each other.
Code rate refers to the redundancy that is added such that for every k bits input, the FEC encoder outputs n bits ie n>k and the code rate is k/n. Vice-versa happends in FEC decoder ie for every n bits input, it outputs k bits.
Rate matching ensures that the modem baud rate is maintained correctly when FEC block is concatenated to the Modem block. In other words, as long as the FEC block is able to perform such that flow of data is not interrupted while operating in a "pipelined" architecture, rate matching has been achieved.
I assume that code rate is a simple function that can be part of any FEC block (Turbo, LDPC) and just needs FEC to select subset of FEC encoded bits. Probably, rate matching needs a little more involved algorithm ...
I really a simple example which explains these stages ...
Rate matching example: Lets take the case of demodulating of TV signal. In this case, the channel coded ie FEC'd multimedia stream is entering the Modem which after several stages of processing would perform demapping from signal to soft/hard decoded bits/values (generally soft decoded). These bits/values enter the de-FEC block which needs to de-FEC at a rate equal to or, greater than the incoming demapped data thus allowing the incoming streaming signal to produce a streaming multimedia for the TV. Now imagine if the de-FEC block had a latency more than what the demapper is outputting - this would produce jittered multimedia, right? Hence, the process of ensuring that the incoming demapper output stream to de-Fec block produces a stream of information (multimedia in this case) would be termed as rate matching.
I hope this amplifies my previous answer