# 3.2.7. Channel parameters¶

The channel represents the physical support such as optical fiber, space, water, air, etc. It is during the passage in the channel that the frames are altered/noised and errors can occur. The channel coding theory has been invented to correct errors induced by the channel (or at least reduce the number of errors to an acceptable rate).

## 3.2.7.1. --chn-type¶

Type: text NO BEC BSC AWGN RAYLEIGH RAYLEIGH_USER OPTICAL USER USER_ADD USER_BEC USER_BSC AWGN --chn-type AWGN

Select the channel type.

Description of the allowed values:

Value Description
NO Disable the channel noise: $$Y = X$$.
BEC Select the Binary Erasure Channel (BEC): $$Y_i = \begin{cases} erased & \text{if } e = 1 \\ X_i & \text{else} \end{cases}, \text{with } P(e = 1) = p_e \text{ and } P(e = 0) = 1 - p_e$$.
BSC Select the Binary Symmetric Channel (BSC): $$Y_i = \begin{cases} !X_i & \text{if } e = 1 \\ X_i & \text{else} \end{cases}, \text{with } P(e = 1) = p_e \text{ and } P(e = 0) = 1 - p_e$$.
AWGN Select the Additive White Gaussian Noise (AWGN) channel: $$Y = X + Z \text{ with } Z \sim \mathcal{N}(0,\sigma^2)$$.
RAYLEIGH Select the Rayleigh fading channel with an AWGN gain: $$Y = X.H + Z \text{ with } Z \sim \mathcal{N}(0,\sigma) \text{ and } H \sim \mathcal{N}(0,\frac{1}{\sqrt 2})$$.
RAYLEIGH_USER Select the Rayleigh fading channel with the gain given in a file: $$Y = X.H + Z \text{ with } Z \sim \mathcal{N}(0,\sigma) \text{ and } H \text{ given by the user}$$ (to use with the --chn-path parameter).
OPTICAL Select the optical channel: $$Y_i = \begin{cases} CDF_0(x) & \text{ when } X_i = 0 \\ CDF_1(x) & \text{ when } X_i = 1 \end{cases}, \text{ with } x \sim \mathcal{U}(0,1)$$, and the $$CDF_0$$ and $$CDF_1$$ are given by the user and selected in function of the current ROP (to use with the --sim-pdf-path parameter).
USER Select the noised frame from a file: $$Y = Z \text{ with } Z \text{ given by the user}$$ (to use with the --chn-path parameter).
USER_ADD Select the noise to add to the frame from a given file: $$Y = X + Z \text{ with } Z \text{ given by the user}$$ (to use with the --chn-path parameter).
USER_BEC Select the event draw of the BEC from a file: $$Y_i = \begin{cases} erased & \text{if } e = 1 \\ X_i & \text{else} \end{cases}, \text{ with } e \text{ given by the user}$$ (to use with the --chn-path parameter).
USER_BSC Select the event draw of the BSC from a file: $$Y_i = \begin{cases} !X_i & \text{if } e = 1 \\ X_i & \text{else} \end{cases}, \text{ with } e \text{ given by the user}$$ (to use with the --chn-path parameter).
Where:
• $$\sigma$$ is the Gaussian noise variance, $$p_e$$ is the event probability and ROP is the Received optical power of the simulated noise points. They are given by the user through the --sim-noise-range, -R argument.
• $$X$$ is the original modulated frame and $$Y$$ the noisy output.
• $$\mathcal{N}(\mu,\sigma^2)$$ is the Normal or Gaussian distribution.
• $$\mathcal{U}(a,b)$$ is the Uniform distribution.

For the OPTICAL channel, the CDF are computed from the given PDF with the --sim-pdf-path argument. This file describes the latter for the different ROP. There must be a PDF for a bit transmitted at 0 and another for a bit transmitted at 1.

Note

The NO, AWGN and RAYLEIGH channels handle complex modulations.

Warning

The BEC, BSC and OPTICAL channels work only with the OOK modulation (see the --mdm-type parameter).

## 3.2.7.2. --chn-implem¶

Type: text STD FAST GSL MKL STD --chn-implem FAST

Select the implementation of the algorithm to generate the noise.

Description of the allowed values:

Value Description
STD Select the standard implementation based on the C++ standard library.
FAST Select the fast implementation (handwritten and optimized for SIMD architectures).
GSL Select an implementation based of the GSL.
MKL Select an implementation based of the MKL (only available for x86 architectures).

Note

All the proposed implementations are based on the MT 19937 PRNG algorithm [MN98]. The Gaussian distribution $$\mathcal{N}(\mu,\sigma^2)$$ is implemented with the Box-Muller method [BM+58] except when using the GSL where the Ziggurat method [MT00] is used instead.

Attention

To enable the GSL or the MKL implementations, you need to have those libraries installed on your system and to turn on specific CMake Options.

The Table 3.5, Table 3.6 and Table 3.7 present the throughputs of the different channel implementations depending on the frame size. The testbed for the experiments is an Intel(R) Xeon(R) CPU E3-1270 v5 @ 3.60GHz 8 threads CPU.

 Frame size STD FAST MKL GSL 16 31,80 99,12 29,80 41,39 32 30,05 134,94 53,72 46,76 64 30,78 165,92 93,80 52,79 128 31,24 188,06 148,31 54,77 256 31,41 199,14 204,53 55,38 512 31,52 199,43 267,74 55,49 1024 31,79 199,71 331,71 56,15 2048 31,61 200,16 342,06 56,32 4096 31,88 198,88 343,40 57,42 8192 30,43 195,78 342,59 56,92
 Frame size STD FAST MKL GSL 16 36,18 114,87 104,1 58,92 32 40,28 170,64 184,99 69,14 64 42,84 223,78 319,65 77,26 128 43,28 252,41 474,18 87,78 256 43,42 272,82 624,92 93,71 512 43,51 273,22 738,72 95,36 1024 43,64 275,41 865,25 97,84 2048 43,63 272,78 996,88 97,25 4096 42,78 274,71 1109,13 97,65 8192 43,67 272,71 1116,41 98,47
 Frame size STD FAST MKL GSL 16 6,69 7,56 6,71 6,53 32 9,89 10,98 10,28 9,56 64 12,67 14,30 14,05 12,15 128 14,40 16,33 16,33 13,88 256 15,82 17,74 18,22 15,07 512 16,52 18,46 18,29 15,79 1024 17,18 19,14 19,31 16,19 2048 16,96 18,76 20,30 16,42 4096 17,19 18,65 20,29 16,47 8192 17,26 18,98 20,58 16,63

Note

The reported values are the average throughputs given by the simulator integrated statistics tool (see the --sim-stats parameter).

## 3.2.7.3. --chn-blk-fad¶

Type: text NO FRAME ONETAP 1 --chn-gain-occur 10

Set the block fading policy for the Rayleigh channel.

Note

At this time the FRAME and ONETAP block fading are not implemented.

## 3.2.7.4. --chn-gain-occur¶

Type: integer 1 --chn-gain-occur 10

Give the number of times a gain is used on consecutive symbols. It is used in the RAYLEIGH_USER channel while applying gains read from the given file.

## 3.2.7.5. --chn-path¶

Type: file read --chn-path example/path/to/the/right/file

Give the path to a file containing the noise.

The expected type of noise vary depending of the channel type (see the --chn-type parameter for more details):

• USER: the file must contain frame with the noise applied on it,
• USER_ADD: the file must contain only the noise $$Z$$,
• RAYLEIGH_USER: the file must contain the gain values $$H$$.

The expected file format is either ASCII or binary (the format is automatically detected). Here is the file structure expected in ASCII:

 # 'F' has to be replaced by the number of contained frames.
F

# 'N' has to be replaced by the frame size.
N

# a sequence of 'F * N' floating-point values (separated by spaces)
Y_0 Y_1 Y_2 Y_3 Y_4 [...] Y_{F*N-1}


In binary mode, $$F$$ and $$N$$ have to be 32-bit unsigned integers. The next $$F \times N$$ floating-point values can be either in 32-bit or in 64-bit.