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 [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 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: read 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¶
[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. |
[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. |
[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. |