ation and addition, we can express g2 ,(X) = 1+XX=(1+X).(1 = + X). You can see that in this case g1(X) is a factor of g2(X). Whenever this happens, the convolutional code is catastrophic. If it doesn't happen, then your code is okay. Let me elaborate on the cata- strophic code idea with a simple Figure 7.14 Convolutional coder example. Take the coder of Figure illustrating catastrophic code 7.14. If you take a few moments to represent it by a trellis diagram, you'll end up with the diagram shown in Figure 7.15. Using this trellis diagram, con- sider this: you input m = (0000..) which means the channel coder outputs u = (00 00 00 00 ...). The channel makes only 3 bit errors, and you receive V = (11 01 00 00 00 ...). The decoder searches for the path in the trellis closest to this received signal, and it finds that there is a path with no errors through the trellis, as shown in Figure 7.15. Using this path, the convolutional coder outputs m' = (11111.)) Wow-catastrophic. Chapter Seven Sent this path u time O time 1 time 2 time 3 time 4 Receive this path V when only 3 channel errors Figure 7.15 Explaining a catastrophic error in a catastrophic code 7.5 Building Your Own Let's say that you set out to build your own convolutional coder. Here are the criteria to follow to make it a good one (most important criteria first): 1. Make sure it's NOT catastrophic. 2. Make dmin (the smallest distance between the all-zeroes path and any other path starting and ending at node 0) as big as possible. That means your code can correct more errors e. 3. Make sure there is only one path with a distance d min in the trellis. 4. Build the coder SO that the trellis diagram has as few paths as possible with distance dmin+ 1. 5. Build the coder SO that the trellis diagram has as few paths as possible with distance dmin+ 2. Now you're ready to build your own convolutional coder (although, in fairness, you may just end up purchasing a chip with its own ready-to-go channel coders on it, already meeting the above criteria). Channel Coding and