I would like to be able to compute the so-called "free distance" for a TCM with a rate 2/3 convolutional code (two inputs, three outputs) inside that I plan to use for 8PSK. My previous assumption was that I could simply compute distance between the "null sequence" and the next closest sequence because the code is linear. But that does not seem to work because this computation gives me a squared free distance of supposedly 5.17157 for an 8-state code that actually performs worse in AWGN channel simulations than the 8-state recursive Ungerboeck code for which I compute the squared free distance to be 4.58579 (which is correct in this case).
Any pointers on how to compute the free distance for TCM would be greatly appreciated.
The TCM for which my free distance calculation seems to fail is this one:
in1 ----------*---------------*-- out2
| |
| V
in0 -*--------|--------*---->(+)- out1 (+) is a binary plus (xor)
| | |
V V V [D] is a delay element/flip-flop
(+)->[D]-(+)->[D]-(+)->[D]-*- out0
A A | V and A are supposed to be
| | | arrow heads
`-----------------*-------´
symbol mapping:
binary "out2 out1 out0" -> exp(2i*pi*out/8)
where out_k is the k-th bit of out counting from zero as the LSB