📄 systemevaldlg.cpp
字号:
"the two vertical dashed black lines in the Impulse Response (IR) "
"plot.");
QWhatsThis::add(TextWiener, strDopplerDelay);
QWhatsThis::add(ValueWiener, strDopplerDelay);
/* I / O Interface LED */
const QString strLEDIOInterface =
tr("<b>I / O Interface LED:</b> This LED shows the "
"current status of the sound card interface. The yellow light shows "
"that the audio output was corrected. Since the sample rate of the "
"transmitter and local computer are different, from time to time the "
"audio buffers will overflow or under run and a correction is "
"necessary. When a correction occurs, a \"click\" sound can be heard. "
"The red light shows that a buffer was lost in the sound card input "
"stream. This can happen if a thread with a higher priority is at "
"100% and the Dream software cannot read the provided blocks fast "
"enough. In this case, the Dream software will instantly loose the "
"synchronization and has to re-synchronize. Another reason for red "
"light is that the processor is too slow for running the Dream "
"software.");
QWhatsThis::add(TextLabelLEDIOInterface, strLEDIOInterface);
QWhatsThis::add(LEDIOInterface, strLEDIOInterface);
/* Time Sync Acq LED */
const QString strLEDTimeSyncAcq =
tr("<b>Time Sync Acq LED:</b> This LED shows the "
"state of the timing acquisition (search for the beginning of an OFDM "
"symbol). If the acquisition is done, this LED will stay green.");
QWhatsThis::add(TextLabelLEDTimeSyncAcq, strLEDTimeSyncAcq);
QWhatsThis::add(LEDTimeSync, strLEDTimeSyncAcq);
/* Frame Sync LED */
const QString strLEDFrameSync =
tr("<b>Frame Sync LED:</b> The DRM frame "
"synchronization status is shown with this LED. This LED is also only "
"active during acquisition state of the Dream receiver. In tracking "
"mode, this LED is always green.");
QWhatsThis::add(TextLabelLEDFrameSync, strLEDFrameSync);
QWhatsThis::add(LEDFrameSync, strLEDFrameSync);
/* FAC CRC LED */
const QString strLEDFACCRC =
tr("<b>FAC CRC LED:</b> This LED shows the Cyclic "
"Redundancy Check (CRC) of the Fast Access Channel (FAC) of DRM. FAC "
"is one of the three logical channels and is always modulated with a "
"4-QAM. If the FAC CRC check was successful, the receiver changes to "
"tracking mode. The FAC LED is the indication whether the receiver "
"is synchronized to a DRM transmission or not.<br>"
"The bandwidth of the DRM signal, the constellation scheme of MSC and "
"SDC channels and the interleaver depth are some of the parameters "
"which are provided by the FAC.");
QWhatsThis::add(TextLabelLEDFACCRC, strLEDFACCRC);
QWhatsThis::add(LEDFAC, strLEDFACCRC);
/* SDC CRC LED */
const QString strLEDSDCCRC =
tr("<b>SDC CRC LED:</b> This LED shows the CRC "
"check result of the Service Description Channel (SDC) which is one "
"logical channel of the DRM stream. This data is transmitted in "
"approx. 1 second intervals and contains information about station "
"label, audio and data format, etc. The error protection is normally "
"lower than the protection of the FAC. Therefore this LED will turn "
"to red earlier than the FAC LED in general.<br>If the CRC check "
"is ok but errors in the content were detected, the LED turns "
"yellow.");
QWhatsThis::add(TextLabelLEDSDCCRC, strLEDSDCCRC);
QWhatsThis::add(LEDSDC, strLEDSDCCRC);
/* MSC CRC LED */
const QString strLEDMSCCRC =
tr("<b>MSC CRC LED:</b> This LED shows the status "
"of the Main Service Channel (MSC). This channel contains the actual "
"audio and data bits. The LED shows the CRC check of the AAC core "
"decoder. The SBR has a separate CRC, but this status is not shown "
"with this LED. If SBR CRC is wrong but the AAC CRC is ok one can "
"still hear something (of course, the high frequencies are not there "
"in this case). If this LED turns red, interruptions of the audio are "
"heard. The yellow light shows that only one 40 ms audio frame CRC "
"was wrong. This causes usually no hearable artifacts.");
QWhatsThis::add(TextLabelLEDMSCCRC, strLEDMSCCRC);
QWhatsThis::add(LEDMSC, strLEDMSCCRC);
/* MLC, Number of Iterations */
const QString strNumOfIterations =
tr("<b>MLC, Number of Iterations:</b> In DRM, a "
"multilevel channel coder is used. With this code it is possible to "
"iterate the decoding process in the decoder to improve the decoding "
"result. The more iterations are used the better the result will be. "
"But switching to more iterations will increase the CPU load. "
"Simulations showed that the first iteration (number of "
"iterations = 1) gives the most improvement (approx. 1.5 dB at a "
"BER of 10-4 on a Gaussian channel, Mode A, 10 kHz bandwidth). The "
"improvement of the second iteration will be as small as 0.3 dB."
"<br>The recommended number of iterations given in the DRM "
"standard is one iteration (number of iterations = 1).");
QWhatsThis::add(TextNumOfIterations, strNumOfIterations);
QWhatsThis::add(SliderNoOfIterations, strNumOfIterations);
/* Flip Input Spectrum */
QWhatsThis::add(CheckBoxFlipSpec,
tr("<b>Flip Input Spectrum:</b> Checking this box "
"will flip or invert the input spectrum. This is necessary if the "
"mixer in the front-end uses the lower side band."));
/* Mute Audio */
QWhatsThis::add(CheckBoxMuteAudio,
tr("<b>Mute Audio:</b> The audio can be muted by "
"checking this box. The reaction of checking or unchecking this box "
"is delayed by approx. 1 second due to the audio buffers."));
/* Reverberation Effect */
QWhatsThis::add(CheckBoxReverb,
tr("<b>Reverberation Effect:</b> If this check box is checked, a "
"reverberation effect is applied each time an audio drop-out occurs. "
"With this effect it is possible to mask short drop-outs."));
/* Log File */
QWhatsThis::add(CheckBoxWriteLog,
tr("<b>Log File:</b> Checking this box brings the "
"Dream software to write a log file about the current reception. "
"Every minute the average SNR, number of correct decoded FAC and "
"number of correct decoded MSC blocks are logged including some "
"additional information, e.g. the station label and bit-rate. The "
"log mechanism works only for audio services using AAC source coding. "
#ifdef _WIN32
"During the logging no Dream windows "
"should be moved or re-sized. This can lead to incorrect log files "
"(problem with QT timer implementation under Windows). This problem "
"does not exist in the Linux version of Dream."
#endif
"<br>The log file will be "
"written in the directory were the Dream application was started and "
"the name of this file is always DreamLog.txt"));
/* Freq */
QWhatsThis::add(EdtFrequency,
tr("<b>Freq:</b> In this edit control, the current "
"selected frequency on the front-end can be specified. This frequency "
"will be written into the log file."));
/* Wiener */
const QString strWienerChanEst =
tr("<b>Channel Estimation Settings:</b> With these "
"settings, the channel estimation method in time and frequency "
"direction can be selected. The default values use the most powerful "
"algorithms. For more detailed information about the estimation "
"algorithms there are a lot of papers and books available.<br>"
"<b>Wiener:</b> Wiener interpolation method "
"uses estimation of the statistics of the channel to design an optimal "
"filter for noise reduction.");
QWhatsThis::add(RadioButtonFreqWiener, strWienerChanEst);
QWhatsThis::add(RadioButtonTiWiener, strWienerChanEst);
/* Linear */
const QString strLinearChanEst =
tr("<b>Channel Estimation Settings:</b> With these "
"settings, the channel estimation method in time and frequency "
"direction can be selected. The default values use the most powerful "
"algorithms. For more detailed information about the estimation "
"algorithms there are a lot of papers and books available.<br>"
"<b>Linear:</b> Simple linear interpolation "
"method to get the channel estimate. The real and imaginary parts "
"of the estimated channel at the pilot positions are linearly "
"interpolated. This algorithm causes the lowest CPU load but "
"performs much worse than the Wiener interpolation at low SNRs.");
QWhatsThis::add(RadioButtonFreqLinear, strLinearChanEst);
QWhatsThis::add(RadioButtonTiLinear, strLinearChanEst);
/* DFT Zero Pad */
QWhatsThis::add(RadioButtonFreqDFT,
tr("<b>Channel Estimation Settings:</b> With these "
"settings, the channel estimation method in time and frequency "
"direction can be selected. The default values use the most powerful "
"algorithms. For more detailed information about the estimation "
"algorithms there are a lot of papers and books available.<br>"
"<b>DFT Zero Pad:</b> Channel estimation method "
"for the frequency direction using Discrete Fourier Transformation "
"(DFT) to transform the channel estimation at the pilot positions to "
"the time domain. There, a zero padding is applied to get a higher "
"resolution in the frequency domain -> estimates at the data cells. "
"This algorithm is very speed efficient but has problems at the edges "
"of the OFDM spectrum due to the leakage effect."));
/* Guard Energy */
QWhatsThis::add(RadioButtonTiSyncEnergy,
tr("<b>Guard Energy:</b> Time synchronization "
"tracking algorithm utilizes the estimation of the impulse response. "
"This method tries to maximize the energy in the guard-interval to set "
"the correct timing."));
/* First Peak */
QWhatsThis::add(RadioButtonTiSyncFirstPeak,
tr("<b>First Peak:</b> This algorithms searches for "
"the first peak in the estimated impulse response and moves this peak "
"to the beginning of the guard-interval (timing tracking algorithm)."));
/* SNR */
const QString strSNREst =
tr("<b>SNR:</b> Signal to Noise Ratio (SNR) "
"estimation based on FAC cells. Since the FAC cells are only "
"located approximately in the region 0-5 kHz relative to the DRM DC "
"frequency, it may happen that the SNR value is very high "
"although the DRM spectrum on the left side of the DRM DC frequency "
"is heavily distorted or disturbed by an interferer so that the true "
"overall SNR is lower as indicated by the SNR value. Similarly, "
"the SNR value might show a very low value but audio can still be "
"decoded if only the right side of the DRM spectrum is degraded "
"by an interferer.");
QWhatsThis::add(ValueSNR, strSNREst);
QWhatsThis::add(TextSNRText, strSNREst);
/* MSC WMER / MSC MER */
const QString strMERWMEREst =
tr("<b>MSC WMER / MSC MER:</b> Modulation Error Ratio (MER) and "
"weighted MER (WMER) calculated on the MSC cells is shown. The MER is "
"calculated as follows: For each equalized MSC cell (only MSC cells, "
"no FAC cells, no SDC cells, no pilot cells), the error vector from "
"the nearest ideal point of the constellation diagram is measured. The "
"squared magnitude of this error is found, and a mean of the squared "
"errors is calculated (over one frame). The MER is the ratio in [dB] "
"of the mean of the squared magnitudes of the ideal points of the "
"constellation diagram to the mean squared error. This gives an "
"estimate of the ratio of the total signal power to total noise "
"power at the input to the equalizer for channels with flat frequency "
"response.<br> In case of the WMER, the calculations of the means are "
"multiplied by the squared magnitude of the estimated channel "
"response.<br>For more information see ETSI TS 102 349.");
QWhatsThis::add(ValueMERWMER, strMERWMEREst);
QWhatsThis::add(TextMERWMER, strMERWMEREst);
/* DRM Mode / Bandwidth */
const QString strRobustnessMode =
tr("<b>DRM Mode / Bandwidth:</b> In a DRM system, "
"four possible robustness modes are defined to adapt the system to "
"different channel conditions. According to the DRM standard:<ul>"
"<li><i>Mode A:</i> Gaussian channels, with "
"minor fading</li><li><i>Mode B:</i> Time "
"and frequency selective channels, with longer delay spread</li>"
"<li><i>Mode C:</i> As robustness mode B, but "
"with higher Doppler spread</li>"
"<li><i>Mode D:</i> As robustness mode B, but "
"with severe delay and Doppler spread</li></ul>The "
"bandwith is the gross bandwidth of the current DRM signal");
QWhatsThis::add(FACDRMModeBWL, strRobustnessMode);
QWhatsThis::add(FACDRMModeBWV, strRobustnessMode);
/* Interleaver Depth */
const QString strInterleaver =
tr("<b>Interleaver Depth:</b> The symbol "
"interleaver depth can be either short (approx. 400 ms) or long "
"(approx. 2 s). The longer the interleaver the better the channel "
"decoder can correct errors from slow fading signals. But the "
"longer the interleaver length the longer the delay until (after a "
"re-synchronization) audio can be heard.");
QWhatsThis::add(FACInterleaverDepthL, strInterleaver);
QWhatsThis::add(FACInterleaverDepthV, strInterleaver);
/* SDC / MSC Mode */
const QString strSDCMSCMode =
tr("<b>SDC / MSC Mode:</b> Shows the modulation "
"type of the SDC and MSC channel. For the MSC channel, some "
"hierarchical modes are defined which can provide a very strong "
"protected service channel.");
QWhatsThis::add(FACSDCMSCModeL, strSDCMSCMode);
QWhatsThis::add(FACSDCMSCModeV, strSDCMSCMode);
/* Prot. Level (B/A) */
const QString strProtLevel =
tr("<b>Prot. Level (B/A):</b> The error protection "
"level of the channel coder. For 64-QAM, there are four protection "
"levels defined in the DRM standard. Protection level 0 has the "
"highest protection whereas level 3 has the lowest protection. The "
"letters A and B are the names of the higher and lower protected parts "
"of a DRM block when Unequal Error Protection (UEP) is used. If Equal "
"Error Protection (EEP) is used, only the protection level of part B "
"is valid.");
QWhatsThis::add(FACCodeRateL, strProtLevel);
QWhatsThis::add(FACCodeRateV, strProtLevel);
/* Number of Services */
const QString strNumServices =
tr("<b>Number of Services:</b> This shows the "
"number of audio and data services transmitted in the DRM stream. "
"The maximum number of streams is four.");
QWhatsThis::add(FACNumServicesL, strNumServices);
QWhatsThis::add(FACNumServicesV, strNumServices);
/* Received time - date */
const QString strTimeDate =
tr("<b>Received time - date:</b> This label shows "
"the received time and date in UTC. This information is carried in "
"the SDC channel.");
QWhatsThis::add(FACTimeDateL, strTimeDate);
QWhatsThis::add(FACTimeDateV, strTimeDate);
/* Save audio as wave */
QWhatsThis::add(CheckBoxSaveAudioWave,
tr("<b>Save Audio as WAV:</b> Save the audio signal "
"as stereo, 16-bit, 48 kHz sample rate PCM wave file. Checking this "
"box will let the user choose a file name for the recording."));
/* Chart Selector */
QWhatsThis::add(ListViewCharSel,
tr("<b>Chart Selector:</b> With the chart selector "
"different types of graphical display of parameters and receiver "
"states can be chosen. The different plot types are sorted in "
"different groups. To open a group just double-click on the group or "
"click on the plus left of the group name. After clicking on an item "
"it is possible to choose other items by using the up / down arrow "
"keys. With these keys it is also possible to open and close the "
"groups by using the left / right arrow keys.<br>A separate chart "
"window for a selected item can be opened by right click on the item "
"and click on the context menu item."));
/* Interferer Rejection */
const QString strInterfRej =
tr("<b>Interferer Rejection:</b> There are two "
"algorithms available to reject interferers:<ul>"
"<li><b>Bandpass Filter (BP-Filter):</b>"
" The bandpass filter is designed to have the same bandwidth as "
"the DRM signal. If, e.g., a strong signal is close to the border "
"of the actual DRM signal, under some conditions this signal will "
"produce interference in the useful bandwidth of the DRM signal "
"although it is not on the same frequency as the DRM signal. "
"The reason for that behaviour lies in the way the OFDM "
"demodulation is done. Since OFDM demodulation is a block-wise "
"operation, a windowing has to be applied (which is rectangular "
"in case of OFDM). As a result, the spectrum of a signal is "
"convoluted with a Sinc function in the frequency domain. If a "
"sinusoidal signal close to the border of the DRM signal is "
"considered, its spectrum will not be a distinct peak but a "
"shifted Sinc function. So its spectrum is broadened caused by "
"the windowing. Thus, it will spread in the DRM spectrum and "
"act as an in-band interferer.<br>"
"There is a special case if the sinusoidal signal is in a "
"distance of a multiple of the carrier spacing of the DRM signal. "
"Since the Sinc function has zeros at certain positions it happens "
"that in this case the zeros are exactly at the sub-carrier "
"frequencies of the DRM signal. In this case, no interference takes "
"place. If the sinusoidal signal is in a distance of a multiple of "
"the carrier spacing plus half of the carrier spacing away from the "
"DRM signal, the interference reaches its maximum.<br>"
"As a result, if only one DRM signal is present in the 20 kHz "
"bandwidth, bandpass filtering has no effect. Also, if the "
"interferer is far away from the DRM signal, filtering will not "
"give much improvement since the squared magnitude of the spectrum "
"of the Sinc function is approx -15 dB down at 1 1/2 carrier "
"spacing (approx 70 Hz with DRM mode B) and goes down to approx "
"-30 dB at 10 times the carrier spacing plus 1 / 2 of the carrier "
"spacing (approx 525 Hz with DRM mode B). The bandpass filter must "
"have very sharp edges otherwise the gain in performance will be "
"very small.</li>"
"<li><b>Modified Metrics:</b> Based on the "
"information from the SNR versus sub-carrier estimation, the metrics "
"for the Viterbi decoder can be modified so that sub-carriers with "
"high noise are attenuated and do not contribute too much to the "
"decoding result. That can improve reception under bad conditions but "
"may worsen the reception in situations where a lot of fading happens "
"and no interferer are present since the SNR estimation may be "
"not correct.</li></ul>");
QWhatsThis::add(GroupBoxInterfRej, strInterfRej);
QWhatsThis::add(CheckBoxRecFilter, strInterfRej);
QWhatsThis::add(CheckBoxModiMetric, strInterfRej);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -