| Responsible Engineer: | Chau Buu |
| Presenter: | Jon Hamkins |
From the TMOD Telemetry Service System Requirements Document (DTT1298),
the receiver shall have no more than a 0.5 dB loss of symbol SNR due to
carrier tracking, for the following parameters:
| Symbol rate | 4 to 490 symbols/second | |
| Phase noise type | Frequency flicker dominated (i.e., PSD |
|
| Phase noise level |
|
|
For low data rates, the symbol SNR loss is governed by the average value
of
.
Thus, the requirement is virtually the same.
For random processes related by
according Wiener theory, the LMMSE of
given
is given by
where
Since
is real and even, so is
.
Therefore,
When
and
are the 2-sided PSD's,
then
The carrier phase MSE for a filter is given by:
![$\textstyle \parbox{3in}{
Main signal points on BVR:
\begin{eqnarray*}
r[n] & = ...
... T_{HBF} + \hat\theta_{sc}[n])
\delta(\hat\theta_{sc}[n])\\
\end{eqnarray*}}$](img48.gif)
| Signal type: | Residual carrier BPSK with data subcarrier |
|
|
23.01 dB |
|
|
20.00 dB |
|
|
20.00 dB |
| Symbol rate: | 500 sym/sec |
| Modulation index: | 45 deg (0.79 rad) |
| Carrier | |
| Phase noise type: | Frequency-flicker noise |
| PSD (2-sided): | |
| Power at 1 Hz offset: | -20.00 dBrad |
| Phase stored modulo 2 pi: | No |
| Length of phase filter: | 4096 |
| Phase at t=0: | 0 deg (0.00 rad) |
| Subcarrier | |
| Shape: | Square wave |
| Phase stored modulo 2 pi: | No |
| Frequency: | 22.5 kHz |
| Phase at t=0: | 0 deg (0.00 rad) |
| Channel type: | AWGN, with carrier phase noise |
| Sample rate at ADC output: | 160000000 Hz |
| Sample rate after HBF: | 80000000 Hz |
| Carrier update rate: | 2000 Hz |
| Causal | |
| Loop type: | Standard underdamped PLL |
| Order: | 2 |
| PLL loop bandwidth: | 3.26 Hz |
| Predicted tracking performance | |
| MSE: | 0.0326 (AWGN) + 0.0163 (phase noise) = 0.0490 rad |
| Effective loop SNR: | 13.10 dB |
| Symbol SNR loss due to carrier tracking: | 0.0104 dB |
| Noncausal | |
| Loop Type: | Linear smoothing filter |
| Filter shape: | Triangular |
| Filter bandwidth: | 1.03 Hz |
| Filter length: | 1297 |
| Frequency tracking method: | PLL-derived frequencies |
| Predicted performance | |
| MSE: | 0.0103 (AWGN) + 0.0051 (phase noise) = 0.0245 rad |
| Effective loop SNR: | 18.12 dB |
| Gain over causal tracking: | 5.02 dB |
| Symbol SNR loss due to carrier tracking: | 0.0010 dB |
| Subarrier Recovery | |
| Subcarrier update rate: | 500 Hz |
| Loop type: | Standard underdamped PLL |
| Order: | 2 |
| PLL loop bandwidth: | 0.100 Hz |
| Window fraction: | 0.25 |
| Predicted tracking performance | |
| MSE: | 0.0022 rad |
| Squaring loss: | 5.44 dB |
| Loss due to carrier tracking: | 0.11 dB |
| Effective loop SNR: | 26.55 dB |
| Timing Recovery | |
| Timing update rate: | 500 Hz |
| Loop type: | Perfect Recovery assumed |
| Available Debugging Cheats: | |
| Send all zeroes | |
| AWGN turned off | |
| Carrier phase noise turned off | |
| Perfect carrier recovery | |
| Smoother turned off |
main(int argc, char *argv[])
{
process_command_line_arguments(argc,argv); /* see args.c */
initialize_global_variables(); /* e.g., bandwidths, memory allocation */
print_header(); /* info about simulation parameters */
for(k=0; ck<number_of_updates; k++) {
get_ADC_output_sample(); /* output of analog to digital convertor */
get_NCO_mixer_output(); /* output after NCO mixer */
get_HBF_output(); /* output of half-band filter */
get_subcarrier_correction();/* output after subcarrier mixer */
update_accumulators(); /* for car., subc., timing, & smoother */
if (carrier_sample_is_ready()) process_carrier_sample();
if (subcarrier_sample_is_ready()) process_subcarrier_sample();
if (timing_sample_is_ready()) process_timing_sample();
if (smoother_sample_is_ready()) process_smoother_sample();
print_results(); /* print results every so often */
}
}