Digital Signal Processing Reference
In-Depth Information
constellation. More details of the decoding algorithm are presented elsewhere
[40,41].
Implementation
Build this project as viterbi . The complete C source program and the executable
(.out) files are included on the CD in the folder Viterbi . Several functions are
included in the program to perform convolutional encoding and BPSK modulation,
add white Gaussian noise, and implement the Viterbi decoding algorithm (the more
extensive function).
The following time-domain graphs can be viewed within CCS—input, encoder
output, and decoder output—using the addresses input , enc _ output , and dec _ output ,
respectively. For the graphs, use an acquisition buffer size of 128, a sampling fre-
quency of 8000, a 16-bit signed integer for both input and decoder output, and a 32-
bit float for the encoder output.
Three gel files are used (included on the CD):
1. Input.gel : to select one of the following three input signals: cos 666 (default),
cos 666
+
cos 1500 , and cos 666
+
cos 2200 , where 666 represents a 666-Hz
cosine.
2. Technique.gel : to select between soft decision and basic Viterbi decoding.
3. Noise.gel : to select a suitable standard deviation for AWGN. One of five dif-
ferent values (0, 0.3, 0.4, 2.0, 3.0) of the standard deviation of the AWGN can
be selected.
Results
The following results are obtained:
Case 1:
input
=
cosine 666 Hz, using soft-decision
Case 2:
input
=
cosine 666 Hz, standard deviation
s=
0.4
Case 3:
input
=
cosine 666 Hz, standard deviation
s=
3.0
Case 4:
input
=
cosine (666
+
1500) Hz, using basic Viterbi decoding (noise
level 0)
With the default settings, the encoded output will appear between the
+
1 and
-
1 voltage levels, as shown in Figure 10.46 a . The output of the Viterbi decoder is
shown in Figure 10.46 b ). With an increase in the noise level, slight variations will
be observed around the
1 voltage levels at the encoder output. These
variations will increase with an increase in noise level. It can be observed from
the decoder outputs that it is able to recover the original cosine signal. With
the noise level set at 0, 0.3, or 0.4 using the noise.gel slider, the decoder is still able
to recover the original cosine signal, even though there is some degradation in the
corresponding encoder output, as shown in Figure 10.47. With further increase
+
1 and
-
Search WWH ::




Custom Search