예제 #1
0
def main():
    my_set = {
        'active_subcarriers': 110,
        'frame_symbols': 4096,
        'fft_len': 128,
        'frame_time_symbols': 38,
        'cp_len': 6
    }
    n_subcarriers = my_set['fft_len']
    n_timeslots = my_set['frame_time_symbols']
    overlap = 2
    taps = np.array([
        1,
    ] * n_timeslots * overlap, dtype=np.complex)
    kernel = gfdm.py_modulator_kernel_cc(n_timeslots, n_subcarriers, overlap,
                                         taps)
    print(kernel.block_size())
    syms = map_to_waveform_resources(
        get_random_qpsk(my_set['frame_symbols']),
        np.arange(my_set['active_subcarriers']) + 9,
        my_set['active_subcarriers'], my_set['fft_len'])

    frame = kernel.modulate(syms)

    plot_waterfall(frame, 128)
    plt.show()
예제 #2
0
def modulator_test():
    fft_len = 128
    timeslots = 205
    overlap = 2
    taps = get_frequency_domain_filter('rrc', .5, timeslots, fft_len, overlap)
    kernel = cgfdm.py_modulator_kernel_cc(timeslots, fft_len, overlap, taps)

    N = 10
    for i in range(N):
        data = np.random.randn(2, fft_len * timeslots)
        data = data[0] + 1j * data[1]
        data = data.astype(dtype=np.complex64)
        kernel.modulate(data)
예제 #3
0
def modulator_test():
    fft_len = 128
    timeslots = 205
    overlap = 2
    taps = get_frequency_domain_filter('rrc', .5, timeslots, fft_len, overlap)
    kernel = cgfdm.py_modulator_kernel_cc(timeslots, fft_len, overlap, taps)

    N = 10
    for i in range(N):
        data = np.random.randn(2, fft_len * timeslots)
        data = data[0] + 1j * data[1]
        data = data.astype(dtype=np.complex64)
        kernel.modulate(data)
예제 #4
0
def modulate_gfdm_frame(tx_symbols, params):
    mapper = cgfdm.py_resource_mapper_kernel_cc(params['timeslots'], params['fft_len'], params['active_subcarriers'],
                                               params['subcarrier_map'])
    taps = get_frequency_domain_filter(params['prototype_type'], params['prototype_alpha'], params['timeslots'],
                                       params['fft_len'], params['overlap'])
    kernel = cgfdm.py_modulator_kernel_cc(params['timeslots'], params['fft_len'], params['overlap'], taps)
    win_filt = get_raised_cosine_ramp(params['filter_len'], params['timeslots'] * params['fft_len'] + params['cp_len'])
    cpler = cgfdm.py_add_cyclic_prefix_cc(params['timeslots'] * params['fft_len'], params['cp_len'], params['filter_len'],
                                         win_filt)

    syms = mapper.map_to_resources(tx_symbols)
    frame = kernel.modulate(syms.flatten())
    frame = cpler.add_cyclic_prefix(frame)
    return frame
예제 #5
0
def modulate_gfdm_frame(tx_symbols, params):
    mapper = cgfdm.py_resource_mapper_kernel_cc(params['timeslots'], params['fft_len'], params['active_subcarriers'],
                                               params['subcarrier_map'])
    taps = get_frequency_domain_filter(params['prototype_type'], params['prototype_alpha'], params['timeslots'],
                                       params['fft_len'], params['overlap'])
    kernel = cgfdm.py_modulator_kernel_cc(params['timeslots'], params['fft_len'], params['overlap'], taps)
    win_filt = get_raised_cosine_ramp(params['filter_len'], params['timeslots'] * params['fft_len'] + params['cp_len'])
    cpler = cgfdm.py_add_cyclic_prefix_cc(params['timeslots'] * params['fft_len'], params['cp_len'], params['filter_len'],
                                         win_filt)

    syms = mapper.map_to_resources(tx_symbols)
    frame = kernel.modulate(syms.flatten())
    frame = cpler.add_cyclic_prefix(frame)
    return frame
예제 #6
0
def main():
    my_set = {'active_subcarriers': 110, 'frame_symbols': 4096, 'fft_len': 128, 'frame_time_symbols': 38, 'cp_len': 6}
    n_subcarriers = my_set['fft_len']
    n_timeslots = my_set['frame_time_symbols']
    overlap = 2
    taps = np.array([1, ] * n_timeslots * overlap, dtype=np.complex)
    kernel = gfdm.py_modulator_kernel_cc(n_timeslots, n_subcarriers, overlap, taps)
    print(kernel.block_size())
    syms = map_to_waveform_resources(get_random_qpsk(my_set['frame_symbols']), np.arange(my_set['active_subcarriers']) + 9, my_set['active_subcarriers'], my_set['fft_len'])

    frame = kernel.modulate(syms)

    plot_waterfall(frame, 128)
    plt.show()