Channel analyzer NG: set RRC filter rollof factor range from 0.1 to 0.7. Updated documentation
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 22 KiB |
BIN
doc/img/ChAnalyzerNG_plugin_tetra.png
Normal file
After Width: | Height: | Size: 89 KiB |
BIN
doc/img/ChAnalyzerNG_plugin_tetra.xcf
Normal file
@ -108,6 +108,12 @@ void ChannelAnalyzerNGGUI::displaySettings()
|
|||||||
ui->useRationalDownsampler->setChecked(m_settings.m_downSample);
|
ui->useRationalDownsampler->setChecked(m_settings.m_downSample);
|
||||||
ui->channelSampleRate->setValue(m_settings.m_downSampleRate);
|
ui->channelSampleRate->setValue(m_settings.m_downSampleRate);
|
||||||
setNewFinalRate();
|
setNewFinalRate();
|
||||||
|
if (m_settings.m_ssb) {
|
||||||
|
ui->BWLabel->setText("LP");
|
||||||
|
} else {
|
||||||
|
ui->BWLabel->setText("BP");
|
||||||
|
}
|
||||||
|
ui->ssb->setChecked(m_settings.m_ssb);
|
||||||
ui->BW->setValue(m_settings.m_bandwidth/100);
|
ui->BW->setValue(m_settings.m_bandwidth/100);
|
||||||
ui->lowCut->setValue(m_settings.m_lowCutoff/100);
|
ui->lowCut->setValue(m_settings.m_lowCutoff/100);
|
||||||
ui->deltaFrequency->setValue(m_settings.m_frequency);
|
ui->deltaFrequency->setValue(m_settings.m_frequency);
|
||||||
@ -338,6 +344,11 @@ void ChannelAnalyzerNGGUI::on_spanLog2_currentIndexChanged(int index)
|
|||||||
void ChannelAnalyzerNGGUI::on_ssb_toggled(bool checked)
|
void ChannelAnalyzerNGGUI::on_ssb_toggled(bool checked)
|
||||||
{
|
{
|
||||||
m_settings.m_ssb = checked;
|
m_settings.m_ssb = checked;
|
||||||
|
if (checked) {
|
||||||
|
ui->BWLabel->setText("LP");
|
||||||
|
} else {
|
||||||
|
ui->BWLabel->setText("BP");
|
||||||
|
}
|
||||||
setFiltersUIBoundaries();
|
setFiltersUIBoundaries();
|
||||||
applySettings();
|
applySettings();
|
||||||
}
|
}
|
||||||
@ -396,7 +407,6 @@ ChannelAnalyzerNGGUI::ChannelAnalyzerNGGUI(PluginAPI* pluginAPI, DeviceUISet *de
|
|||||||
ui->glSpectrum->setDisplayMaxHold(true);
|
ui->glSpectrum->setDisplayMaxHold(true);
|
||||||
ui->glSpectrum->setSsbSpectrum(false);
|
ui->glSpectrum->setSsbSpectrum(false);
|
||||||
ui->glSpectrum->setLsbDisplay(false);
|
ui->glSpectrum->setLsbDisplay(false);
|
||||||
ui->BWLabel->setText("BP");
|
|
||||||
|
|
||||||
ui->glSpectrum->connectTimer(MainWindow::getInstance()->getMasterTimer());
|
ui->glSpectrum->connectTimer(MainWindow::getInstance()->getMasterTimer());
|
||||||
ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer());
|
ui->glScope->connectTimer(MainWindow::getInstance()->getMasterTimer());
|
||||||
|
@ -451,13 +451,13 @@
|
|||||||
<number>10</number>
|
<number>10</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximum">
|
<property name="maximum">
|
||||||
<number>50</number>
|
<number>70</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="pageStep">
|
<property name="pageStep">
|
||||||
<number>1</number>
|
<number>1</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="value">
|
<property name="value">
|
||||||
<number>30</number>
|
<number>35</number>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -41,7 +41,7 @@ void ChannelAnalyzerNGSettings::resetToDefaults()
|
|||||||
m_pll = false;
|
m_pll = false;
|
||||||
m_fll = false;
|
m_fll = false;
|
||||||
m_rrc = false;
|
m_rrc = false;
|
||||||
m_rrcRolloff = 30; // 0.3
|
m_rrcRolloff = 35; // 0.35
|
||||||
m_pllPskOrder = 1;
|
m_pllPskOrder = 1;
|
||||||
m_inputType = InputSignal;
|
m_inputType = InputSignal;
|
||||||
m_rgbColor = QColor(128, 128, 128).rgb();
|
m_rgbColor = QColor(128, 128, 128).rgb();
|
||||||
@ -115,7 +115,7 @@ bool ChannelAnalyzerNGSettings::deserialize(const QByteArray& data)
|
|||||||
m_inputType = (InputType) tmp;
|
m_inputType = (InputType) tmp;
|
||||||
d.readString(15, &m_title, "Channel Analyzer NG");
|
d.readString(15, &m_title, "Channel Analyzer NG");
|
||||||
d.readBool(16, &m_rrc, false);
|
d.readBool(16, &m_rrc, false);
|
||||||
d.readU32(17, &m_rrcRolloff, 30);
|
d.readU32(17, &m_rrcRolloff, 35);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -84,31 +84,39 @@ Use this combo to select which (complex) signal to use as the display source:
|
|||||||
|
|
||||||
Average total power in dB relative to a +/- 1.0 amplitude signal received in the pass band.
|
Average total power in dB relative to a +/- 1.0 amplitude signal received in the pass band.
|
||||||
|
|
||||||
<h3>10. Select lowpass filter cut-off frequency</h3>
|
<h3>10. Toggle root raised cosine filter</h3>
|
||||||
|
|
||||||
|
Use this toggle button to activate or de-activate the root raised cosine (RRC) filter. When active the bnadpass boxcar filter is replaced by a RRC filter. This takes effect only in normal (DSB) mode (see control 14).
|
||||||
|
|
||||||
|
<h3>11. Tune RRC filter rolloff factor</h3>
|
||||||
|
|
||||||
|
This button tunes the rolloff factor (a.k.a alpha) of the RRC filter in 0.01 steps between 0.1 and 0.7. Default is 0.35.
|
||||||
|
|
||||||
|
<h3>12. Select lowpass filter cut-off frequency</h3>
|
||||||
|
|
||||||
In SSB mode this filter is a complex filter that can lowpass on either side of the center frequency. It is therefore labeled as "LP". For negative frequencies (LSB) the cut-off frequency is therefore negative. In fact setting a negative frequency in SSB mode automatically turns on the LSB mode processing and the spectrum is reversed.
|
In SSB mode this filter is a complex filter that can lowpass on either side of the center frequency. It is therefore labeled as "LP". For negative frequencies (LSB) the cut-off frequency is therefore negative. In fact setting a negative frequency in SSB mode automatically turns on the LSB mode processing and the spectrum is reversed.
|
||||||
|
|
||||||
In normal (DSB) mode this filter is a real filter that lowpass on both sides of the zero (center) frequency symmetrically. Therefore it acts as a bandpass filter centered on the zero frequency and therefore it is labeled as "BP". The value displayed in (9) is the full bandwidth of the filter.
|
In normal (DSB) mode this filter is a real filter that lowpass on both sides of the zero (center) frequency symmetrically. Therefore it acts as a bandpass filter centered on the zero frequency and therefore it is labeled as "BP". The value displayed in (9) is the full bandwidth of the filter.
|
||||||
|
|
||||||
<h3>11. Lowpass filter cut-off frequency</h3>
|
<h3>13. Lowpass filter cut-off frequency</h3>
|
||||||
|
|
||||||
In SSB mode this is the complex cut-off frequency and is negative for LSB.
|
In SSB mode this is the complex cut-off frequency and is negative for LSB.
|
||||||
|
|
||||||
In normal (DSB) mode this is the full bandwidth of the real lowpass filter centered around zero frequency.
|
In normal (DSB) mode this is the full bandwidth of the real lowpass filter centered around zero frequency.
|
||||||
|
|
||||||
<h3>12. SSB filtering</h3>
|
<h3>14. SSB filtering</h3>
|
||||||
|
|
||||||
When this toggle is engaged the signal is filtered either above (USB) or below (LSB) the channel center frequency. The sideband is selected according to the sign of the lowpass filter cut-off frequency (8): if positive the USB is selected else the LSB. In LSB mode the spectrum is reversed.
|
When this toggle is engaged the signal is filtered either above (USB) or below (LSB) the channel center frequency. The sideband is selected according to the sign of the lowpass filter cut-off frequency (8): if positive the USB is selected else the LSB. In LSB mode the spectrum is reversed.
|
||||||
|
|
||||||
When SSB is off the lowpass filter is actually a bandpass filter around the channel center frequency.
|
When SSB is off the lowpass filter is actually a bandpass filter around the channel center frequency.
|
||||||
|
|
||||||
<h3>13. Select highpass filter cut-off frequency</h3>
|
<h3>15. Select highpass filter cut-off frequency</h3>
|
||||||
|
|
||||||
In SSB mode this controls the cut-off frequency of the complex highpass filter which is the filter closest to the zero frequency. This cut-off frequency is always at least 0.1 kHz in absolute value below the lowpass filter cut-off frequency (8).
|
In SSB mode this controls the cut-off frequency of the complex highpass filter which is the filter closest to the zero frequency. This cut-off frequency is always at least 0.1 kHz in absolute value below the lowpass filter cut-off frequency (8).
|
||||||
|
|
||||||
In normal (DSB) mode this filter is not active.
|
In normal (DSB) mode this filter is not active.
|
||||||
|
|
||||||
<h3>14. Highpass filter cut-off frequency</h3>
|
<h3>16. Highpass filter cut-off frequency</h3>
|
||||||
|
|
||||||
This is the cut-off frequency of the highpass filter in kHz. It is zero or negative in LSB mode.
|
This is the cut-off frequency of the highpass filter in kHz. It is zero or negative in LSB mode.
|
||||||
|
|
||||||
@ -148,27 +156,31 @@ This button selects the display of "X" and "Yn" traces on top of each other with
|
|||||||
|
|
||||||
This button selects the display of all traces on the left side of the screen and the polar display of the "Yn" traces using the "X" trace as the x coordinates.
|
This button selects the display of all traces on the left side of the screen and the polar display of the "Yn" traces using the "X" trace as the x coordinates.
|
||||||
|
|
||||||
<h3>6. Select trace intensity</h3>
|
<h3>6. Line or points only display on the 2D XY display (right)</h3>
|
||||||
|
|
||||||
|
Use this button to toggle points display (on) or line display (off) for the 2D XY display on the right. The points display may yield a more visible graph when the distinct artifact is an aggregation of points.
|
||||||
|
|
||||||
|
<h3>7. Select trace intensity</h3>
|
||||||
|
|
||||||
This button lets you adjust the traces intensity. The value in percent of the maximum intensity appears as a tooltip
|
This button lets you adjust the traces intensity. The value in percent of the maximum intensity appears as a tooltip
|
||||||
|
|
||||||
<h3>7. Select grid intensity</h3>
|
<h3>8. Select grid intensity</h3>
|
||||||
|
|
||||||
This button lets you adjust the grid intensity. The value in percent of the maximum intensity appears as a tooltip
|
This button lets you adjust the grid intensity. The value in percent of the maximum intensity appears as a tooltip
|
||||||
|
|
||||||
<h3>8. Displayed trace length</h3>
|
<h3>9. Displayed trace length</h3>
|
||||||
|
|
||||||
This slider lets you adjust the length of the traces on display. Each step further divides the length of the full trace controlled by (10). The duration of the full length shown on display appears on the left of the slider and the corresponding number of samples appears as a tooltip.
|
This slider lets you adjust the length of the traces on display. Each step further divides the length of the full trace controlled by (10). The duration of the full length shown on display appears on the left of the slider and the corresponding number of samples appears as a tooltip.
|
||||||
|
|
||||||
<h3>9. Trace offset</h3>
|
<h3>10. Trace offset</h3>
|
||||||
|
|
||||||
This slider lets you move the start of traces on display. Each step moves the trace by an amount of time corresponding to 1/100 of the length of the full trace controlled by (10). The time offset from the start of the traces appears on the left of the slider and the corresponding number of samples appears as a tooltip.
|
This slider lets you move the start of traces on display. Each step moves the trace by an amount of time corresponding to 1/100 of the length of the full trace controlled by (10). The time offset from the start of the traces appears on the left of the slider and the corresponding number of samples appears as a tooltip.
|
||||||
|
|
||||||
<h3>10. Trace length</h3>
|
<h3>11. Trace length</h3>
|
||||||
|
|
||||||
This slider lets you control the full length of the trace. Each step increases the corresponding amount of samples by 4800 samples with a minimum of 4800 samples and a maximum of 20*4800 = 96000 samples. The duration of a full trace appears on the left of the slider and he corresponding number of samples appears as a tooltip.
|
This slider lets you control the full length of the trace. Each step increases the corresponding amount of samples by 4800 samples with a minimum of 4800 samples and a maximum of 20*4800 = 96000 samples. The duration of a full trace appears on the left of the slider and he corresponding number of samples appears as a tooltip.
|
||||||
|
|
||||||
<h3>11. Trace sample rate</h3>
|
<h3>12. Trace sample rate</h3>
|
||||||
|
|
||||||
This is the sample rate used by the scope and corresponds to the final sample rate after the whole decimation chain. It should be the same amount as the one displayed on the plugin control (C.6)
|
This is the sample rate used by the scope and corresponds to the final sample rate after the whole decimation chain. It should be the same amount as the one displayed on the plugin control (C.6)
|
||||||
|
|
||||||
@ -202,8 +214,52 @@ To construct a trace which represents real values the incoming complex signal mu
|
|||||||
- MagDB: calculate power in log representation as 10*log10(x) or decibel (dB) representation. This is the squared module of the complex sample expressed in decibels
|
- MagDB: calculate power in log representation as 10*log10(x) or decibel (dB) representation. This is the squared module of the complex sample expressed in decibels
|
||||||
- Phi: instantaneous phase. This is the argument of the complex sample.
|
- Phi: instantaneous phase. This is the argument of the complex sample.
|
||||||
- dPhi: instantaneous derivative of the phase. This is the difference of arguments between successive samples thus represents the instantaneous frequency.
|
- dPhi: instantaneous derivative of the phase. This is the difference of arguments between successive samples thus represents the instantaneous frequency.
|
||||||
|
- BPSK: maps -π to π phase into two π wide sectors centered on 0 and π on the -1 to +1 range (sector is 1.0 wide):
|
||||||
|
- 0 → 0.5,
|
||||||
|
- π → -0.5
|
||||||
|
- QPSK: maps -π to π phase into four π/2 wide sectors centered on 0, π/2, π, -π/2 on the -1 to +1 range (sector is 0.5 wide):
|
||||||
|
- 0 → 0.25
|
||||||
|
- π/2 → 0.75
|
||||||
|
- π → -0.75
|
||||||
|
- -π/2 → -0.25
|
||||||
|
- 8PSK: maps -π to π phase into eight π/4 wide sectors centered on 0, π/4, π/2, 3π/4, π, -3π/4, -π/2, -π/4 on the -1 to +1 range (sector is 0.25 wide):
|
||||||
|
- 0 → 0.125
|
||||||
|
- π/4 → 0.375
|
||||||
|
- π/2 → 0.625
|
||||||
|
- 3π/4 → 0.875
|
||||||
|
- π → -0.875
|
||||||
|
- -3π/4 → -0.625
|
||||||
|
- -π/2 → -0.375
|
||||||
|
- -π/4 → -0.125
|
||||||
|
- 16PSK: maps -π to π phase into sixteen π/8 wide sectors centered on 0, π/8, π/4, 3π/8, π/2, 5π/8, 3π/4, 7π/8, π, -7π/8, -3π/4, -5π/8, -π/2, -3π/8, -π/4, -π/8 on the -1 to +1 range (sector is 0.125 wide):
|
||||||
|
- 0 → 0.0625
|
||||||
|
- π/8 → 0.1875
|
||||||
|
- π/4 → 0.3125
|
||||||
|
- 3π/8 → 0.4375
|
||||||
|
- π/2 → 0.5625
|
||||||
|
- 5π/8 → 0.6875
|
||||||
|
- 3π/4 → 0.8125
|
||||||
|
- 7π/8 → 0.9375
|
||||||
|
- π → -0.9375
|
||||||
|
- -7π/8 → -0.8125
|
||||||
|
- -3π/4 → -0.6875
|
||||||
|
- -5π/8 → -0.5625
|
||||||
|
- -π/2 → -0.4375
|
||||||
|
- -3π/8 → -0.3125
|
||||||
|
- -π/4 → -0.1875
|
||||||
|
- -π/8 → -0.0625
|
||||||
|
|
||||||
|
**Note1**: example of QPSK projection on a synchronized Tetra signal:
|
||||||
|
|
||||||
in the MagDB mode when the trace is selected (1) the display overlay on the top right of the trace shows 3 figures. From left to right: peak power in dB, average power in dB and peak to average difference in dB.
|
![Channel Analyzer NG plugin tetra example](../../../doc/img/ChAnalyzerNG_plugin_tetra.png)
|
||||||
|
|
||||||
|
The signal is synchronized with the PLL in 4 phase mode (locker icon is green).
|
||||||
|
- A Tetra signal is QPSK modulated at 18 kSym/s therefore the sample rate is set at 90 kS/s thus we have an integer number of samples per symbol (5 samples per symbol). See green square.
|
||||||
|
- We have set two traces (X and Y1) with QPSK projection. The Y1 trace is delayed by two symbols (10 samples) which makes a 111.11 μs delay. See blue square
|
||||||
|
- In XY mode on the XY display (right) we can see an accumulation of points around the 16 possible symbol transitions. In two places the same symbol is repeated several times which results in a stronger aggregation. One is with the symbol at 0 (see red circle and square) and the other is with the symbol at π (see yellow circle and square).
|
||||||
|
- On the left panel of the XY mode display we can see that the 4 possible symbols mark 4 vertical stronger areas centered on 0.25, 0.75, -0.25 and -0.75.
|
||||||
|
|
||||||
|
**Note2**: in the MagDB mode when the trace is selected (1) the display overlay on the top right of the trace shows 3 figures. From left to right: peak power in dB, average power in dB and peak to average difference in dB.
|
||||||
|
|
||||||
![Channel Analyzer NG plugin scope1 controls](../../../doc/img/ChAnalyzerNG_plugin_overlay_dB.png)
|
![Channel Analyzer NG plugin scope1 controls](../../../doc/img/ChAnalyzerNG_plugin_overlay_dB.png)
|
||||||
|
|
||||||
|