# 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

Allowed values

NO BEC BSC AWGN RAYLEIGH RAYLEIGH_USER OPTICAL USER USER_ADD USER_BEC USER_BSC

Default

AWGN

Examples

--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

Allowed values

STD FAST GSL MKL

Default

STD

Examples

--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 [Chn-MN98]. The Gaussian distribution $$\mathcal{N}(\mu,\sigma^2)$$ is implemented with the Box-Muller method except when using the GSL where the Ziggurat method [Chn-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

Allowed values

NO FRAME ONETAP

Default

1

Examples

--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

Default

1

Examples

--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

Rights

Examples

--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.

## 3.2.7.6. References¶

Chn-BM+58

G. E. P. Box, M. E. Muller, and others. A note on the generation of random normal deviates. The Annals of Mathematical Statistics, 29(2):610–611, 1958. doi:10.1214/aoms/1177706645.

Chn-MT00

G. Marsaglia and W. W. Tsang. The ziggurat method for generating random variables. Journal of Statistical Software, 5(8):1–7, 2000. doi:10.18637/jss.v005.i08.

Chn-MN98

M. Matsumoto and T. Nishimura. Mersenne twister: a 623-dimensionally equidistributed uniform pseudo-random number generator. ACM Transactions on Modeling and Computer Simulation (TOMACS), 8(1):3–30, 1998. doi:10.1145/272991.272995.