I have been looking at some implementations of Viterbi decoders and noticed a strange way of calculating the branch metric (1):
"BM is calculated by the product of information codewords c and hamming distance hd with R inputs."
The input to the function that does the forward phase are the input bits c and also the hamming distances hd. My question is, how can the hamming distances be the input when the branch metric should in my understanding be the hamming distance of the input bits and the branch values of the trellis? So why would you calculate it as the product of input bits and hamming distances, when the branch metric should actually be the hamming distance?
Since I didn't get any answers on this topic, and I was stuck on this for a long time, I decided to assume that the author named his variables very inaccurately. I believe he meant the hamming distance to actually be the branch value. What also led me to be more sure about this assumption is the following quote from the same paper:
The hamming distance can in no way be fixed, but the branch value for the trellis structure of a convolutional code is, in fact, fixed.
To conclude, the branch metric for a hard-decision Viterbi decoder IS calculated as the hamming distance of the input code word (for a particular time stage) and the branch value of the transition it is being calculated for. The input to the branch metric calculation function are therefore NOT REALLY the hamming distances, but the fixed branch values.