RDS Receiver
Decodes RDS from the 57 kHz subcarrier of a broadcast FM station.
- Author Marc
- Category RDS
- Blocks 25
- Connections 22
- File
rds/rds_receiver.grc
Blocks used
| Block | Module | Used |
|---|---|---|
| Null Sink | GNU Radio | 3 |
| Variable | GNU Radio | 3 |
| AGC | GNU Radio | 1 |
| Constellation Receiver | GNU Radio | 1 |
| Delay | GNU Radio | 1 |
| Differential Decoder | GNU Radio | 1 |
| Float To Complex | GNU Radio | 1 |
| GR World Recording | GNU Radio | 1 |
| Low Pass Filter | GNU Radio | 1 |
| Multiply | GNU Radio | 1 |
| QT GUI Constellation Sink | GNU Radio | 1 |
| Quadrature Demod | GNU Radio | 1 |
| Rational Resampler | GNU Radio | 1 |
| RDS Decoder | gr-rds | 1 |
| RDS Panel | gr-rds | 1 |
| RDS Parser | gr-rds | 1 |
| Root Raised Cosine Filter | GNU Radio | 1 |
| Signal Source | GNU Radio | 1 |
| Subtract | GNU Radio | 1 |
| Symbol Sync | GNU Radio | 1 |
| Throttle | GNU Radio | 1 |
Flowgraph source
rds/rds_receiver.grc
options:
parameters:
author: Marc
copyright: ''
description: Decodes RDS from the 57 kHz subcarrier of a broadcast FM station.
generate_options: qt_gui
id: RDS_Receiver
title: RDS Receiver
states:
coordinate: [10, 10]
rotation: 0
state: enabled
blocks:
- name: rds_carrier
id: variable
parameters:
comment: ''
value: '57000'
states:
coordinate: [590, 10]
rotation: 0
state: enabled
- name: rds_samp_rate
id: variable
parameters:
comment: ''
value: '19000'
states:
coordinate: [760, 10]
rotation: 0
state: enabled
- name: samp_rate
id: variable
parameters:
comment: ''
value: '250000'
states:
coordinate: [960, 10]
rotation: 0
state: enabled
- name: agc
id: analog_agc_xx
parameters:
affinity: ''
alias: ''
comment: ''
gain: '53'
max_gain: '1000'
maxoutbuf: '0'
minoutbuf: '0'
rate: '0.002'
reference: '0.585'
type: complex
states:
coordinate: [80, 820]
rotation: 0
state: enabled
- name: biphase_delay
id: blocks_delay
parameters:
affinity: ''
alias: ''
comment: ''
delay: '8'
maxoutbuf: '0'
minoutbuf: '0'
type: complex
states:
coordinate: [1080, 560]
rotation: 0
state: enabled
- name: biphase_sub
id: blocks_sub_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: complex
vlen: '1'
states:
coordinate: [1350, 560]
rotation: 0
state: enabled
- name: constellation_receiver
id: digital_constellation_receiver_cb
parameters:
affinity: ''
alias: ''
comment: ''
constellation: digital.constellation_bpsk().base()
fmax: '0.002'
fmin: '-0.002'
loop_bw: 2*math.pi/100
maxoutbuf: '0'
minoutbuf: '0'
showports: 'False'
states:
coordinate: [1010, 740]
rotation: 0
state: enabled
- name: constellation_sink
id: qtgui_const_sink_x
parameters:
affinity: ''
alias: ''
alpha1: '1'
autoscale: 'False'
axislabels: 'True'
color1: '"blue"'
comment: ''
grid: 'False'
label1: ''
legend: 'True'
marker1: '0'
name: RDS BPSK
size: '1024'
style1: '0'
tr_chan: '0'
tr_level: '0'
tr_mode: qtgui.TRIG_MODE_FREE
tr_slope: qtgui.TRIG_SLOPE_POS
tr_tag: ''
update_time: '0.1'
width1: '1'
xmax: '2'
xmin: '-2'
ymax: '2'
ymin: '-2'
states:
coordinate: [80, 1160]
rotation: 0
state: enabled
- name: diff_decoder
id: digital_diff_decoder_bb
parameters:
affinity: ''
alias: ''
coding: digital.DIFF_DIFFERENTIAL
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
modulus: '2'
states:
coordinate: [80, 1060]
rotation: 0
state: enabled
- name: discard_error
id: blocks_null_sink
parameters:
affinity: ''
alias: ''
comment: ''
type: float
states:
coordinate: [80, 1300]
rotation: 0
state: enabled
- name: discard_freq
id: blocks_null_sink
parameters:
affinity: ''
alias: ''
comment: ''
type: float
states:
coordinate: [80, 1400]
rotation: 0
state: enabled
- name: discard_phase
id: blocks_null_sink
parameters:
affinity: ''
alias: ''
comment: ''
type: float
states:
coordinate: [80, 1500]
rotation: 0
state: enabled
- name: mpx_to_complex
id: blocks_float_to_complex
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
states:
coordinate: [1050, 220]
rotation: 0
state: enabled
- name: quad_demod
id: analog_quadrature_demod_cf
parameters:
affinity: ''
alias: ''
comment: ''
gain: samp_rate/(2*math.pi*75e3)
maxoutbuf: '0'
minoutbuf: '0'
states:
coordinate: [700, 220]
rotation: 0
state: enabled
- name: rds_decoder
id: rds_decoder
parameters:
affinity: ''
alias: ''
comment: ''
debug: 'False'
log: 'False'
maxoutbuf: '0'
minoutbuf: '0'
states:
coordinate: [460, 1060]
rotation: 0
state: enabled
- name: rds_lo
id: analog_sig_source_x
parameters:
affinity: ''
alias: ''
amplitude: '1'
comment: ''
frequency: -rds_carrier
maxoutbuf: '0'
minoutbuf: '0'
samp_rate: samp_rate
type: complex
waveform: analog.GR_COS_WAVE
states:
coordinate: [1050, 340]
rotation: 0
state: enabled
- name: rds_lpf
id: low_pass_filter
parameters:
affinity: ''
alias: ''
beta: '6.76'
comment: ''
cutoff_freq: '3000'
decim: '5'
gain: '1'
interp: '1'
maxoutbuf: '0'
minoutbuf: '0'
samp_rate: samp_rate
type: fir_filter_ccf
width: '2000'
win: window.WIN_HAMMING
states:
coordinate: [80, 500]
rotation: 0
state: enabled
- name: rds_mixer
id: blocks_multiply_xx
parameters:
affinity: ''
alias: ''
comment: ''
maxoutbuf: '0'
minoutbuf: '0'
num_inputs: '2'
type: complex
vlen: '1'
states:
coordinate: [1350, 230]
rotation: 0
state: enabled
- name: rds_panel
id: rds_panel
parameters:
affinity: ''
alias: ''
comment: ''
freq: '100000000'
gui_hint: ''
states:
coordinate: [960, 1060]
rotation: 0
state: enabled
- name: rds_parser
id: rds_parser
parameters:
affinity: ''
alias: ''
comment: ''
debug: 'False'
log: 'False'
maxoutbuf: '0'
minoutbuf: '0'
pty_locale: '0'
reset: '0'
states:
coordinate: [710, 1050]
rotation: 0
state: enabled
- name: recording
id: wasm_gr_world_recording
parameters:
affinity: ''
alias: ''
comment: ''
length: '0'
maxoutbuf: '0'
minoutbuf: '0'
offset: '0'
recording: fm_rds_250k_1Msamples
repeat: 'True'
type: complex
states:
coordinate: [10, 190]
rotation: 0
state: enabled
- name: resample_19k
id: rational_resampler_xxx
parameters:
affinity: ''
alias: ''
comment: ''
decim: '50'
fbw: '0'
interp: '19'
maxoutbuf: '0'
minoutbuf: '0'
taps: '[]'
type: ccc
states:
coordinate: [380, 540]
rotation: 0
state: enabled
- name: rrc_filter
id: root_raised_cosine_filter
parameters:
affinity: ''
alias: ''
alpha: '1'
comment: ''
decim: '1'
gain: '1'
interp: '1'
maxoutbuf: '0'
minoutbuf: '0'
ntaps: '151'
samp_rate: rds_samp_rate
sym_rate: rds_samp_rate/8
type: fir_filter_ccf
states:
coordinate: [700, 510]
rotation: 0
state: enabled
- name: symbol_sync
id: digital_symbol_sync_xx
parameters:
affinity: ''
alias: ''
comment: ''
constellation: digital.constellation_bpsk().base()
damping: '1'
loop_bw: '0.01'
max_dev: '0.1'
maxoutbuf: '0'
minoutbuf: '0'
nfilters: '128'
osps: '1'
pfb_mf_taps: '[]'
resamp_type: digital.IR_MMSE_8TAP
sps: '16'
ted_gain: '1'
ted_type: digital.TED_ZERO_CROSSING
type: cc
states:
coordinate: [350, 750]
rotation: 0
state: enabled
- name: throttle
id: blocks_throttle2
parameters:
affinity: ''
alias: ''
comment: ''
ignoretag: 'True'
limit: auto
maximum: '0.1'
maxoutbuf: '0'
minoutbuf: '0'
samples_per_second: samp_rate
type: complex
vlen: '1'
states:
coordinate: [370, 200]
rotation: 0
state: enabled
connections:
- [agc, '0', symbol_sync, '0']
- [biphase_delay, '0', biphase_sub, '0']
- [biphase_sub, '0', agc, '0']
- [constellation_receiver, '0', diff_decoder, '0']
- [constellation_receiver, '1', discard_error, '0']
- [constellation_receiver, '2', discard_phase, '0']
- [constellation_receiver, '3', discard_freq, '0']
- [constellation_receiver, '4', constellation_sink, '0']
- [diff_decoder, '0', rds_decoder, '0']
- [mpx_to_complex, '0', rds_mixer, '0']
- [quad_demod, '0', mpx_to_complex, '0']
- src_blk_id: rds_decoder
src_port_id: out
snk_blk_id: rds_parser
snk_port_id: in
- [rds_lo, '0', rds_mixer, '1']
- [rds_lpf, '0', resample_19k, '0']
- [rds_mixer, '0', rds_lpf, '0']
- src_blk_id: rds_parser
src_port_id: out
snk_blk_id: rds_panel
snk_port_id: in
- [recording, '0', throttle, '0']
- [resample_19k, '0', rrc_filter, '0']
- [rrc_filter, '0', biphase_delay, '0']
- [rrc_filter, '0', biphase_sub, '1']
- [symbol_sync, '0', constellation_receiver, '0']
- [throttle, '0', quad_demod, '0']
metadata:
file_format: 2
grc_version: 3.11.0.0