Proxy of C++ gr::digital::constellation class
Proxy of C++ gr::digital::lfsr class
Proxy of C++ gr::digital::mpsk_snr_est class
alias of make
Hierarchical block for RRC-filtered BPSK modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for RRC-filtered BPSK demodulation.
The input is the complex modulated signal at baseband and the output is a stream of bits packed 1 bit per byte (LSB)
Parameters: |
|
---|
Hierarchical block for RRC-filtered DBPSK modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for RRC-filtered DBPSK demodulation.
The input is the complex modulated signal at baseband and the output is a stream of bits packed 1 bit per byte (LSB)
Parameters: |
|
---|
crc32(std::string const buf) -> unsigned int
update_crc32(unsigned int crc, std::string const buf) -> unsigned int
Uses the a basis constellation provided (e.g., from psk_constellation.psk_4()) and the the k and permutation index (pi) to generate a new Gray-coded symbol map to the constellation points provided in the basis.
The basis_cpoints are the constellation points of the basis constellation, and basis_symbols are the symbols that correspond to the constellation points.
The selection of k and pi will provide an automorphism the hyperoctahedral group of the basis constellation.
This function returns a tuple of (constellation_points, symbol_map). The constellation_points is a list of the constellation points in complex space and the symbol_map is a list of the log2(M)-bit symbols for the constellation points (i.e., symbol_map[i] are the bits associated with constellation_points[i]).
Hierarchical block for Continuous Phase modulation.
The input is a byte stream (unsigned char) representing packed bits and the output is the complex modulated signal at baseband.
See Proakis for definition of generic CPM signals: s(t)=exp(j phi(t)) phi(t)= 2 pi h int_0^t f(t’) dt’ f(t)=sum_k a_k g(t-kT) (normalizing assumption: int_0^infty g(t) dt = 1/2)
Parameters: |
|
---|
Hierarchical block for RRC-filtered differential generic modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for RRC-filtered differential generic demodulation.
The input is the complex modulated signal at baseband. The output is a stream of bits packed 1 bit per byte (LSB)
Parameters: |
|
---|
Hierarchical block for Gaussian Minimum Shift Key (GMSK) modulation.
The input is a byte stream (unsigned char with packed bits) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for Gaussian Minimum Shift Key (GMSK) demodulation.
The input is the complex modulated signal at baseband. The output is a stream of bits packed 1 bit per byte (the LSB)
Parameters: |
|
---|
Given a function, a list of excluded arguments and the result of parsing command line options, create a dictionary of key word arguments suitable for passing to the function. The dictionary will be populated with key/value pairs where the keys are those that are common to the function’s argument list (minus the excluded_args) and the attributes in options. The values are the corresponding values from options unless that value is None. In that case, the corresponding dictionary entry is not populated.
(This allows different modulations that have the same parameter names, but different default values to coexist. The downside is that –help in the option parser will list the default as None, but in that case the default provided in the __init__ argument list will be used since there is no kwargs entry.)
Parameters: |
|
---|
Given command line options, create dictionary suitable for passing to __init__
‘¯’ –> ‘10101111’
‘10101111’ -> (‘¯’, False)
Basically the inverse of conv_packed_binary_string_to_1_0_string, but also returns a flag indicating if we had to pad with leading zeros to get to a multiple of 8.
Build a packet, given access code, payload, and whitener offset
Parameters: |
|
---|
Packet will have access code at the beginning, followed by length, payload and finally CRC-32.
Return (ok, payload)
Parameters: |
|
---|
Modulates an OFDM stream. Based on the options fft_length, occupied_tones, and cp_length, this block creates OFDM symbols using a specified modulation option.
Send packets by calling send_pkt
Demodulates a received OFDM stream. Based on the options fft_length, occupied_tones, and cp_length, this block performs synchronization, FFT, and demodulation of incoming OFDM symbols and passes packets up the a higher layer.
The input is complex baseband. When packets are demodulated, they are passed to the app via the callback.
Performs receiver synchronization on OFDM symbols.
The receiver performs channel filtering as well as symbol, frequency, and phase synchronization. The synchronization routines are available in three flavors: preamble correlator (Schmidl and Cox), modifid preamble correlator with autocorrelation (not yet working), and cyclic prefix correlator (Van de Beeks).
Hierarchical block for OFDM modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Hierarchical block for OFDM demodulation.
The input is a complex baseband signal (e.g. from a UHD source). The detected packets are output as a stream of packed bits on the output.
‘¯’ –> ‘10101111’
‘10101111’ -> (‘¯’, False)
Basically the inverse of conv_packed_binary_string_to_1_0_string, but also returns a flag indicating if we had to pad with leading zeros to get to a multiple of 8.
Build a packet, given access code, payload, and whitener offset
Parameters: |
|
---|
Packet will have access code at the beginning, followed by length, payload and finally CRC-32.
Return (ok, payload)
Parameters: |
|
---|
Wrap an arbitrary digital modulator in our packet handling framework.
Send packets by calling send_pkt
Wrap an arbitrary digital demodulator in our packet handling framework.
The input is complex baseband. When packets are demodulated, they are passed to the app via the callback.
0 | 1
1 | 0
0 | 1
1 | 0
Creates a PSK constellation object.
Hierarchical block for RRC-filtered PSK modulation.
The input is a byte stream (unsigned char), treated as a series of packed symbols. Symbols are grouped from MSB to LSB.
The output is the complex modulated signal at baseband, with a given number of samples per symbol.
If “Samples/Symbol” is 2, and “Number of Constellation Points” is 4, a single byte contains four symbols, and will produce eight samples.
Parameters: |
|
---|
Hierarchical block for RRC-filtered PSK modulation.
The input is a complex modulated signal at baseband.
The output is a stream of bytes, each representing a recovered bit. The most significant bit is reported first.
Parameters: |
|
---|
Create a constellation with m possible symbols where m must be a power of 4.
Points are laid out in a square grid.
Bits referring to the quadrant are differentilly encoded, remaining bits are gray coded.
Creates a QAM constellation object.
If large_ampls_to_corners=True then sectors that are probably occupied due to a phase offset, are not mapped to the closest constellation point. Rather we take into account the fact that a phase offset is probably the problem and map them to the closest corner point. It’s a bit hackish but it seems to improve frequency locking.
Hierarchical block for RRC-filtered QAM modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for RRC-filtered QAM modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Creates a QPSK constellation.
Hierarchical block for RRC-filtered QPSK modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for RRC-filtered QPSK demodulation.
The input is the complex modulated signal at baseband and the output is a stream of bits packed 1 bit per byte (LSB)
Parameters: |
|
---|
Hierarchical block for RRC-filtered DQPSK modulation.
The input is a byte stream (unsigned char) and the output is the complex modulated signal at baseband.
Parameters: |
|
---|
Hierarchical block for RRC-filtered DQPSK demodulation.
The input is the complex modulated signal at baseband and the output is a stream of bits packed 1 bit per byte (LSB)
Parameters: |
|
---|
Similar in nature to soft_dec_table_generator above. Instead, this takes in the constellation and symbol points along with the noise power estimate and uses calc_soft_dec (below) to generate the LUT.
Instead of assuming that the constellation is normalied (e.g., all points are between -1 and 1), this function calculates the min/max of both the real and imaginary axes and uses those when constructing the LUT. So when using this version of the LUT, the samples and the constellations must be working on the same magnitudes.
Because this uses the calc_soft_dec function, it can be quite a bit more expensive to generate the LUT, though it should be one-time work.
Takes in a complex sample and converts it from the coordinates (-1,-1) to (1,1) into an index value. The index value points to a location in the provided LUT ‘table’ and returns the soft decisions tuple at that index.
sample: the complex sample to calculate the soft decisions from.
table: the LUT.
prec: the precision used when generating the LUT.
Es: the energy per symbol. This is passed to the function to provide the bounds when calling the generator function since they don’t know how the constellation was normalized. Using the (maximum) energy per symbol for constellation allows us to provide any scaling of the constellation (normalized to sum to 1, normalized so the outside points sit on +/-1, etc.) but still calculate the soft decisions as we would given the full constellation.
This function takes in any consteallation and symbol symbol set (where symbols[i] is the set of bits at constellation point constel[i] and an estimate of the noise power and produces the soft decisions for the given sample.
If known, the noise power of the received sample may be passed in to this function as npwr.
This is an incredibly costly algorthm because it must calculate the Euclidean distance between the sample and all points in the constellation to build up its probability calculations. Conversely, it should work for any given constellation/symbol map.
The function returns a vector of k soft decisions. Decisions less than 0 are more likely to indicate a ‘0’ bit and decisions greater than 0 are more likely to indicate a ‘1’ bit.