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
|
from gnuradio import eng_notation
def pick_rx_bitrate(bitrate, bits_per_symbol,
converter_rate, possible_decims):
"""
Given the 4 input parameters, return at configuration that matches
@param bitrate: desired bitrate or None
@type bitrate: number or None
@param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3
@type bits_per_symbol: integer >= 1
@param converter_rate: converter sample rate in Hz
@type converter_rate: number
@param possible_decims: a list of possible rates
@type possible_decims: a list of integers
@returns tuple (bitrate, samples_per_symbol, decim_rate)
"""
rates = list(possible_decims)
rates.sort()
for i in xrange(len(rates)):
if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate):
decim = rates[i]
else:
break
sps = converter_rate / float(bits_per_symbol) / decim / bitrate
br = converter_rate / float(bits_per_symbol) / decim / sps
return (br, sps, int(decim))
def pick_tx_bitrate(bitrate, bits_per_symbol,
converter_rate, possible_interps):
"""
Given the 4 input parameters, return at configuration that matches
@param bitrate: desired bitrate or None
@type bitrate: number or None
@param bits_per_symbol: E.g., BPSK -> 1, QPSK -> 2, 8-PSK -> 3
@type bits_per_symbol: integer >= 1
@param converter_rate: converter sample rate in Hz
@type converter_rate: number
@param possible_interps: a list of possible rates
@type possible_interps: a list of integers
@returns tuple (bitrate, samples_per_symbol, interp_rate)
"""
rates = list(possible_interps)
rates.sort()
for i in xrange(len(rates)):
if((converter_rate / float(bits_per_symbol) / rates[i]) >= 2*bitrate):
interp = rates[i]
else:
break
sps = converter_rate / float(bits_per_symbol) / interp / bitrate
br = converter_rate / float(bits_per_symbol) / interp / sps
return (br, sps, int(interp))
|