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. chntype
¶
 Type
text
 Allowed values
NO
BEC
BSC
AWGN
RAYLEIGH
RAYLEIGH_USER
OPTICAL
USER
USER_ADD
USER_BEC
USER_BSC
 Default
AWGN
 Examples
chntype AWGN
Select the channel type.
Description of the allowed values:
Value 
Description 


Disable the channel noise: \(Y = X\). 

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

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

Select the Additive White Gaussian Noise (AWGN) channel: \(Y = X + Z \text{ with } Z \sim \mathcal{N}(0,\sigma^2)\). 

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})\). 

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 chnpath parameter). 

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 simpdfpath parameter). 

Select the noised frame from a file: \(Y = Z \text{ with } Z \text{ given by the user}\) (to use with the chnpath parameter). 

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 chnpath parameter). 

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 chnpath parameter). 

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 chnpath 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 simnoiserange, 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 simpdfpath 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 mdmtype parameter).
3.2.7.2. chnimplem
¶
 Type
text
 Allowed values
STD
FAST
GSL
MKL
 Default
STD
 Examples
chnimplem FAST
Select the implementation of the algorithm to generate the noise.
Description of the allowed values:
Value 
Description 


Select the standard implementation based on the C++ standard library. 

Select the fast implementation (handwritten and optimized for SIMD architectures). 

Select an implementation based of the GSL. 

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 [ChnMN98]. The Gaussian distribution \(\mathcal{N}(\mu,\sigma^2)\) is implemented with the BoxMuller method [ChnBM+58] except when using the GSL where the Ziggurat method [ChnMT00] 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 E31270 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 simstats parameter).
3.2.7.3. chnblkfad
¶
 Type
text
 Allowed values
NO
FRAME
ONETAP
 Default
1
 Examples
chngainoccur 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. chngainoccur
¶
 Type
integer
 Default
1
 Examples
chngainoccur 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. chnpath
¶
 Type
file
 Rights
read
 Examples
chnpath 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 chntype 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' floatingpoint values (separated by spaces)
Y_0 Y_1 Y_2 Y_3 Y_4 [...] Y_{F*N1}
In binary mode, \(F\) and \(N\) have to be 32bit unsigned integers. The next \(F \times N\) floatingpoint values can be either in 32bit or in 64bit.
3.2.7.6. References¶
 ChnBM+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.
 ChnMT00
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.
 ChnMN98
M. Matsumoto and T. Nishimura. Mersenne twister: a 623dimensionally equidistributed uniform pseudorandom number generator. ACM Transactions on Modeling and Computer Simulation (TOMACS), 8(1):3–30, 1998. doi:10.1145/272991.272995.