
Editing the
Transfer Function
- Definition:
The transfer function matrix is a matrix of filter equations that
has as many rows as there are message word bits and as many columns as there are codeword
bits. It specifies how to generate the codeword from the message word and it's past
values. Currently, you can only enter finite impulse response(FIR) filter equations in the matrix. (This is a caveat
of the Workshop since in real applications, infinite impulse response(IIR) filters are often also used. The ability to use
IIR filters is planned as a future addition to this program. However, for now, using FIR
filters is sufficient to demonstrate the operation of the Viterbi algorithm. The algorithm
works exactly the same for both FIR and IIR transfer functions.
- Usage:
Enter FIR filter expressions as defined below in each of the
elements of the transfer function matrix then press "OK". Changes to the matrix
can be nullified by pressing the "Cancel" button. Also, remember, as with all
the simulation settings, changes do not affect the running simulation until you press Restart to generate a new simulation. Note that message bits that
have no delay elements on them will produce a state diagram and trellis that will have
multiple branches between states. There will be exactly 2^(number of such message bits)
branches between each valid state transition pair. Some codes work better than others at
correcting errors, try a few to see the difference in how well the Viterbi algorithm can
perform on them.
- Valid Input:
Each element of the transfer function
matrix must be a valid FIR filter. In terms of syntax, it must follow the following
format: An FIR filter
expression is a sum of taps.
- A valid tap expression
is one of the following: 0, 1, D, or D^# where the pound sign, #, is an integer between 1
and 4. Note that D is the same as D^1, and lower case d's may be used also.
- Multiple taps must be
separated by plus, '+', signs.
- White space is ignored.
- Note, if a tap is added
twice it effectively cancels itself out due to binary addition.
If a matrix element is left
blank or with only a zero in it, then the input bit of that row has no contribution to the
output bit of that column.
No delay taps may have negative exponents, as this would produce a non-causal filter.
Additionally, no more than 4 total delay elements in the matrix are allowed. The reason
for this is that codes with 32 or more states will make for very cluttered and thus
useless trellis diagrams. The program will also run painfully slow. The number of states
in a code is 2^(total number of delay elements in the transfer function matrix). This
means that the largest delay element in any expression for one message bit cannot be
greater than D^4. Likewise, the largest delays on each bit of a multiple bit message
cannot sum to more than 4.
Examples of Valid FIR Filter
Expressions:
0
1+D^2
1+D+d^3
d + 1 + 0 + D^4