= FlexWaves Project = This project maintains waveforms and components for the [wiki:ALOE ALOE Project]. The license of the components source code may change from one to another, even from one file to another thus, we encourage the reader to read in each source file the specific license before using and distributing it. Some of the waveforms and/or objects under this folder have been developed by graduate and under-graduate students. This means that the level of optimization and compliance with the standards is not guaranteed. However, they may be useful for testing purposes or evaluating the performance of the algorithms under different situations or platforms. '''NOTE:''' Waveforms are now being distributed with the ALOE packages. They are already preconfigured and ready to be used. You will find the latest ALOE release in the QuickStartGuide page. This page just describes the applications and some important notes about them. == ALOEWaveforms == The following waveforms are available: * [wiki:FlexWaves#Modem BPSK audio modem] * [wiki:FlexWaves#ChannelAnalyzer Audio channel analyzer] * [wiki:FlexWaves#UTRAN UTRAN transmitter/receiver] * [wiki:FlexWaves#UTRANTDEC UTRAN Turbo encoder/decoder only] * [wiki:FlexWaves#WiMAX WiMAX transmitter/receiver (with convolutional code)] * [wiki:FlexWaves#WiMAXLDPC WiMAX LDPC encoder/decoder only] == ALOE Signal Processing Components == The following table summarizes the available components. || '''Module Name''' || '''Description''' || || gen_cconv/gen_viterbi || Generic convolutional coder and decoder, customizable polynomial and constraint length|| || gen_addpreamble/gen_detectpreamble || Adds and detects a BAKER-13 preamble for frame synchronization || || gen_agc || Automatic Gain Control || || gen_amdet || Amplitude detector (for AM demodulation) || || gen_channel_annalyze || Transmit and receive annalyzer || || gen_fir || General FIR filter. Generates (root)-raisedcosine coefficients or reads constants from fdacoefs.h file || || gen_mult || Signal multiplier || || gen_pll || Phase-Locked Loop filter || || gen_rateconverter || N:M sample rate converter || || gen_symbolmapper/demapper || BPSK, QPSK, QAM4, QAM16 and QAM64 symbol mapper/demapper || || gen_source/gen_binsource || Generic bitstream or signal source || || gen_chmux || Generic N:M signal multiplexer || || gen_timemux || Generic time serial multiplexer || || gen_channel_gauss || AWGN generator || || gen_crc || 8, 12, 16, 24 bit cyclic redundancy check, supporting a generic polynomial || || gen_punct/gen_depunc || Generic Puncturing and de-Puncturing module || || utran_turbocoder || UMTS turbocoder || || utran_turbodecoder || UMTS turbodecoder || || utran_ratem || UMTS Rate Matching || || wimax_channel || WiMAX SUI channel || || wimax_ldpc || WiMAX LDPC encoder/decoder || || wimax_interleaver || WiMAX interleaver/deinterleaver || || wimax_rsalomon || WiMAX Red-Salomon encoder/decoder || || wimax_symbolmap || WiMAX Symbol mapper/demapper || || wimax_rando || WiMAX Randomizer/deRandomizer || === Modem === This waveform is a simple BPSK digital modem that uses the PC soundcard codecs to interface an speaker and a microfone. The former is used as transmitter antenna (medium is sound) whereas the latter is the receiver antenna. It contains a symbol synchronizer, preamble detector and uses turbo coding. Before using the soundcard, we need to start the JACK server. Refer to the jack website for more information. The application can be loaded launching the following command on the runph command prompt: {{{ runph$: phload modem_dac }}} or it can be launched without the soundcard using: {{{ runph$: phload modem }}} [wiki:FlexWaves#ALOEWaveforms Back to Waveforms] [[BR]] === !ChannelAnalyzer === This waveform is a channel analyzer. It gives the channel gain and phase for a defined interval of sequences. Bandwidth can be selected through the parameters files under statsman/channel_annalyze directory, in the annalyzer_rx.params and annalyzer_tx.params. Before using the soundcard, we need to start the JACK server. Refer to the jack website for more information. The application can be loaded launching the following command on the runph command prompt: {{{ runph$: phload channel_annalyze }}} [wiki:FlexWaves#ALOEWaveforms Back to Waveforms] [[BR]] === UTRAN === This waveform partially implements the bit-level processing of a UTRAN transmitter and receiver. The transmitter part consist on the following modules: binsource(*) -> crc(*) -> coder(*) -> ratematching(*) -> interleaving(*) -> timemux(*) -> trchmux -> interleaving -> channel Where (*) indicates that two transport channels transmit in parallel. The receiver chain implements the same modules in the opposite direction. - The coder is a UMTS Turbo Coder for the data channel and a Convolutional Coder for control . - The ratematching component is specifically designed for the UMTS chain and can not be configured to operate in another context. The waveform must operate at a period of 10ms, so this is the time-slot that should be fixed (see /usr/local/etc/platforms.conf). All components of each transport channel can operate at higher periods (20, 40, 80 ms). The component 'timemux' performs a time (de)-multiplexing of data frames and delivers 1 packet every 10ms to the channel. The application can be loaded launching the following command on the runph command prompt: {{{ runph$: phload utran }}} The waveform can be configured using initialization parameters (at load) or using statistics (at runtime). * Initialization configuration: In the $ALOE/example-repository/statsman/utran directory, you can edit the following parameters: * uectrl_tx.params: ''reference_mode'' Set the UTRAN reference transmission mode: 0=64kbps, 1=144kbps, 2=384kbps * channelGauss.params: ''!EbNo'' Set the channel generated noise level. If 100 dB is selected, no noise computations are performed. * turbodecoder.params: ''max_iterations'' Set the turbo decoder maximum number of iterations * turbodecoder.params: ''dynHalt'' Set the turbo decoder dynamic halt threshold (stopping criteria) '''Note''': The rest of parameters should not be changed. * Run-time Statistics configuration: * ''reference_mode'' variable at the uectrl_tx component. * ''!EbNo'' variable at the channelGauss component. * ''dynHalt'' variable at the turbodecoder component. * ''max_iterations'' variable at the turbodecoder component. For instance, change the maximum number of decoder iterations with the following command: {{{ runph$: statset utran turbodecoder max_iterations 8 }}} And the following variables can be captured from the GUI (or reported to a file from the command prompt): * Object: ''channelGauss'' variable: ''Signal_Amplitude'' captures 128 samples of the BPSK signal with added noise * Object: ''turbodecoder'' variable: ''realHalt'' minimum log-likelihood value of the last iteration * Object: ''turbodecoder'' variable: ''iterations'' number of performed iterations [wiki:FlexWaves#ALOEWaveforms Back to Waveforms] [[BR]] === UTRANTDEC === This simple waveform just consists on a data binary generator, Turbo encoder and decoder and a gaussian channel simulator. The application can be loaded launching the following command on the runph command prompt: {{{ runph$: phload utrantdec }}} The waveform can be configured using initialization parameters (at load) or using statistics (at runtime). * Initialization configuration: In the $ALOE/example-repository/statsman/utran directory, you can edit the following parameters: * channelGauss.params: ''!EbNo'' Set the channel generated noise level. If 100 dB is selected, no noise computations are performed. * turbodecoder.params: ''max_iterations'' Set the turbo decoder maximum number of iterations * turbodecoder.params: ''dynHalt'' Set the turbo decoder dynamic halt threshold (stopping criteria) '''Note''': The rest of parameters should not be changed. * Run-time Statistics configuration: * ''!EbNo'' variable at the channelGauss component. * ''dynHalt'' variable at the turbodecoder component. * ''max_iterations'' variable at the turbodecoder component. For instance, change the maximum number of decoder iterations with the following command: {{{ runph$: statset utrantdec turbodecoder max_iterations 8 }}} And the following variables can be captured from the GUI (or reported to a file from the command prompt): * Object: ''channelGauss'' variable: ''Signal_Amplitude'' captures 128 samples of the BPSK signal with added noise * Object: ''turbodecoder'' variable: ''realHalt'' minimum log-likelihood value of the last iteration * Object: ''turbodecoder'' variable: ''iterations'' number of performed iterations [wiki:FlexWaves#ALOEWaveforms Back to Waveforms] [[BR]] === WiMAX === This waveform partially implements the bit-level processing of a WiMAX transmitter and receiver using the convolutional code (LDPC will be integrated soon). The transmitter part consist on the following modules: datasource -> Randomizer -> Redsalomon -> Convcoder -> Puncturing -> Interleaver -> Symbolmapper -> channelSUI - The transmitter reads a file ($ALOE/example-repository/data/rfc793.txt), sends it and stops. The receiver computes bit error rate and prints it. The waveform must operate at a period of 10ms, so this is the time-slot that should be fixed (see /usr/local/etc/platforms.conf). The application can be loaded launching the following command on the runph command prompt: {{{ runph$: phload wimaxbitlevel }}} [wiki:FlexWaves#ALOEWaveforms Back to Waveforms] [[BR]] === WiMAXLDPC === This simple waveform just consists on a data binary generator, LDPC encoder and decoder and bit error rate computation sink component. The application can be loaded launching the following command on the runph command prompt: {{{ runph$: phload wimaxldpc }}} [wiki:FlexWaves#ALOEWaveforms Back to Waveforms] [[BR]] [[BR]] [.. Back to Main Page]