Lab III - Time-Frequency
• compute spectrograms with w/o windowing
M. Lustig, EECS UC Berkeley
Lab III - Time-Frequency
• Compute with overlapping window
M. Lustig, EECS UC Berkeley
Lab III - Time-Frequency
• Look at temporal/frequency resolution tradeoffs:
M. Lustig, EECS UC Berkeley
SDR Stuff
• Samples you measure from the SDR
are COMPLEX! WHY?
• Aren’t physical signals real??????
M. Lustig, EECS UC Berkeley
Gqrx
M. Lustig, EECS UC Berkeley
SDR Stuff
• Samples you measure from the SDR
are COMPLEX! WHY?
• Aren’t physical signals real??????
93.9
94.1
M. Lustig, EECS UC Berkeley
SDR Stuff
• With the SDR we look at part of the
spectrum
• Example:
>> rtl_sdr -f 94e6 -s 5e5
93.9
94.1
samples represent this freq. band
M. Lustig, EECS UC Berkeley
SDR Stuff
• How is it implemented?
RF
X
LPF
ADC
complex samples
M. Lustig, EECS UC Berkeley
SDR Stuff
• How is it physically implemented?
X
LPF
I[n]
ADC
RF
+
-i
X
LPF
ADC
complex samples
Q[n]
M. Lustig, EECS UC Berkeley
FM Broadcast Radio - KPFA 94.1MHz
M. Lustig, EECS UC Berkeley
FM Modulation
x(t) = (L + R) + 0.1 · cos(2⇡fp t) + (L
| {z } |
{z
} |
mono
pilot
R) cos(2⇡(2fp )t) + 0.05 · RBDS(t) cos(2⇡(3fp )t) +subcarriers sign
{z
} |
{z
}
stereo
digital RBDS
(
(
✓
yc (t) = A cos 2⇡fc t + 2⇡ f
Z t
0
x(⌧ )d⌧
◆
M. Lustig, EECS UC Berkeley
Look at Spectrum of Broadcast FM
• Capture 1/2 second, @fs=960KHz , pick good
sdr.gain not to saturate
• plot spectrogram - pick good dynamic range
(70db below).
KPFA 94.1MHz
M. Lustig, EECS UC Berkeley
Filter Downsample
fs = 960KHz
• h = signal.firwin(128,100000.0,nyq=fs/2,window='hanning')
fs = 240KHz
M. Lustig, EECS UC Berkeley
FM demodulation
• Limiter removes unwanted amplitude
variation
M. Lustig, EECS UC Berkeley
FM demodulation
• Discriminator converts frequency deviations
to amplitude
✓
– Several implementations possible. Here we use
this:
◆
d
yb (t) yb⇤ (t)
dt
Rt
Rt
=
j2⇡ f · x(t) · ej2⇡ f 0 x(⌧ )d⌧ · e j2⇡ f 0 x(⌧ )d⌧
=
j2⇡ f · x(t)
M. Lustig, EECS UC Berkeley
Differentiator
• Use Parks-McClellan algorithm (Remez exchange algorithm)
• Equiripple optimal filter design
• h_diff = signal.remez(31,[0.0,105000.0,120000.0,120000.0],
-120
-105
105
KHz
don’t care
don’t care
[1.05/1.2,0],Hz = 240000.0, type='differentiator')
120
M. Lustig, EECS UC Berkeley
FM Baseband after Demodulation
(
(
M. Lustig, EECS UC Berkeley
Mono (Left + Right Channels)
24KHz
M. Lustig, EECS UC Berkeley
Demodulating Subcarriers
4
http://www.drybonesblog.blogspot.com/ M. Lustig, EECS UC Berkeley
Demodulating Subcarriers
single sided spectrum
4
double sided spectrum
M. Lustig, EECS UC Berkeley
Demodulating Subcarriers
4
24KHz
M. Lustig, EECS UC Berkeley
Demodulating Subcarriers
4
24KHz
M. Lustig, EECS UC Berkeley