1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
id: digital_symbol_sync_xx
label: Symbol Sync
category: '[Core]/Synchronizers'
parameters:
- id: type
label: I/O Type
dtype: enum
options: [cc, ff]
option_labels: [Complex, Float]
option_attributes:
input: [complex, float]
output: [complex, float]
hide: part
- id: ted_type
label: Timing Error Detector
dtype: enum
options: [digital.TED_MUELLER_AND_MULLER, digital.TED_MOD_MUELLER_AND_MULLER,
digital.TED_ZERO_CROSSING, digital.TED_GARDNER, digital.TED_EARLY_LATE, digital.TED_DANDREA_AND_MENGALI_GEN_MSK,
digital.TED_MENGALI_AND_DANDREA_GMSK, digital.TED_SIGNAL_TIMES_SLOPE_ML, digital.TED_SIGNUM_TIMES_SLOPE_ML]
option_labels: ["Mueller and M\xFCller", "Modified Mueller and M\xFCller", Zero
Crossing, Gardner, Early-Late, D'Andrea and Mengali Gen MSK, Mengali and
D'Andrea GMSK, 'y[n]y''[n] Maximum Likelyhood', 'sgn(y[n])y''[n] Maximum
Likelyhood']
option_attributes:
hide_constellation: [part, part, part, all, all, all, all, all, all]
- id: constellation
label: TED Slicer Constellation
dtype: raw
default: digital.constellation_bpsk().base()
hide: ${ ted_type.hide_constellation }
- id: sps
label: Samples per Symbol
dtype: real
default: sps
- id: ted_gain
label: Expected TED Gain
dtype: real
default: '1.0'
- id: loop_bw
label: Loop Bandwidth
dtype: real
default: '0.045'
- id: damping
label: Damping Factor
dtype: real
default: '1.0'
- id: max_dev
label: Maximum Deviation
dtype: real
default: '1.5'
- id: osps
label: Output Samples/Symbol
dtype: int
default: '1'
- id: resamp_type
label: Interpolating Resampler
dtype: enum
options: [digital.IR_MMSE_8TAP, digital.IR_PFB_NO_MF, digital.IR_PFB_MF]
option_labels: ['MMSE, 8 tap FIR', 'Polyphase Filterbank, MMSE', 'Polyphase Filterbank,
MF']
option_attributes:
hide_nfilters: [all, '', '']
hide_pfb_mf_taps: [all, all, '']
- id: nfilters
label: Filterbank Arms
dtype: int
default: '128'
hide: ${ resamp_type.hide_nfilters }
- id: pfb_mf_taps
label: PFB MF Taps
dtype: real_vector
default: '[]'
hide: ${ resamp_type.hide_pfb_mf_taps }
inputs:
- domain: stream
dtype: ${ type.input }
outputs:
- domain: stream
dtype: ${ type.output }
- label: error
domain: stream
dtype: float
optional: true
- label: T_inst
domain: stream
dtype: float
optional: true
- label: T_avg
domain: stream
dtype: float
optional: true
templates:
imports: |-
from gnuradio import digital
from gnuradio import filter
make: digital.symbol_sync_${type}(${ted_type}, ${sps}, ${loop_bw}, ${damping},
${ted_gain}, ${max_dev}, ${osps}, ${constellation}, ${resamp_type}, ${nfilters},
${pfb_mf_taps})
callbacks:
- set_loop_bandwidth(${loop_bw})
- set_damping_factor(${damping})
- set_ted_gain(${ted_gain})
file_format: 1
|