# 3.2.6. Modem parameters¶

AFF3CT comes with a set of predefined modems. A modem transforms a sequence of bits into a suitable form for the transmission on a physical medium. In the AFF3CT “philosophy”, the modem is a module containing three tasks: modulate, filter and demodulate (read the Philosophy section for more information about modules and tasks).

## 3.2.6.1. --mdm-type¶

Type: text BPSK CPM OOK PAM PSK QAM SCMA USER BPSK --mdm-type SCMA

Select the modulation type.

Description of the allowed values:

Value Description
BPSK Select a BPSK modulation.
CPM Select a Continuous Phase Modulation (CPM) [AS81][ARS81].
OOK Select an On-Off Keying (OOK) modulation.
PAM Select a Pulse-Amplitude Modulation (PAM).
PSK Select a Phase-Shift Keying (PSK) modulation.
QAM Select a rectangular Quadrature-Amplitude Modulation (QAM).
SCMA Select a Sparse Code Multiple Access (SCMA) modulation [NB13].
USER Select a user defined constellation (to use with the --mdm-const-path parameter).

## 3.2.6.2. --mdm-implem¶

Type: text FAST STD STD --mdm-implem FAST

Select the modem implementation.

Description of the allowed values:

Value Description
STD Select a standard implementation working for any modem.
FAST Select a fast implementation.

## 3.2.6.3. --mdm-bps¶

Type: integer 1 --mdm-bps 1

Set the number of bits used to generate a symbol (BPS).

This parameter has no effect on the BPSK and OOK modems where the BPS is forced to 1. This is the same for the SCMA modem where the BPS is forced to 3.

Note

For the QAM modem, only even BPS values are supported.

## 3.2.6.4. --mdm-const-path¶

Type: file read/write --mdm-const-path conf/mod/16QAM_ANTI_GRAY.mod

Give the path to the ordered modulation symbols (constellation), to use with the USER modem.

An ASCII file is expected, for instance here is the definition of a 16-QAM with an anti-Gray mapping (the lines starting with a # are ignored):

# 0000
3  3
# 0001
-3 -3
# 0010
-1  3
# 0011
1 -3
# 0100
-3  1
# 0101
3 -1
# 0110
1  1
# 0111
-1 -1
# 1000
1 -1
# 1001
-1  1
# 1010
-3 -1
# 1011
3  1
# 1100
-1 -3
# 1101
1  3
# 1110
3 -3
# 1111
-3  3


Note

The number of bits per symbol is automatically computed from the number of given symbols. The latter has to be a power of 2.

## 3.2.6.5. --mdm-max¶

Type: text MAXS MAXSS MAXL MAX --mdm-max MAX

Select the approximation of the $$\max^*$$ operator used in the PAM, QAM, PSK, CPM and user demodulators.

Description of the allowed values:

Value Description
MAXS $$\max^*(a,b) = \max(a,b) + \log(1 + \exp(-|a - b|))$$.
MAXSS $$\max^*(a,b) \approx \max(a,b) + d$$ with $$d = \begin{cases} 0 & \text{if } d >= 37\\ \exp(-|a - b|) & \text{if } 9 <= d < 37 \\ \log(1 + \exp(-|a - b|)) & \text{else} \end{cases}$$.
MAXL $$\max^*(a,b) \approx \max(a,b) + \max(0, 0.301 - (0.5 |a - b|))$$.
MAX $$\max^*(a,b) \approx \max(a,b)$$.

MAXS for Max Star is the exact $$\max^*$$ operator. MAXSS for Max Star Safe allows to avoid numeric instabilities due the exponential operation and the limited precision of the floating-point representation. MAXL for Max Linear is a linear approximation of the $$\max^*$$ function. MAX for Max is the simplest $$\max^*$$ approximation with only a $$\max$$ function.

## 3.2.6.6. --mdm-no-sig2¶

Turn off the division by $$\sigma^2$$ in the demodulator where $$\sigma$$ is the Gaussian noise variance.

## 3.2.6.7. --mdm-cpm-k¶

Type: integer 1 --mdm-cpm-k 1

Set the CPM index numerator.

## 3.2.6.8. --mdm-cpm-p¶

Type: integer 2 --mdm-cpm-p 1

Set the CPM index denominator.

## 3.2.6.9. --mdm-cpm-L¶

Type: integer 2 --mdm-cpm-L 1

Set the CPM pulse width (also called memory depth).

## 3.2.6.10. --mdm-cpm-upf¶

Type: integer 1 --mdm-cpm-upf 1

Select the symbol upsampling factor in the CPM.

## 3.2.6.11. --mdm-cpm-map¶

Type: text GRAY NATURAL NATURAL --mdm-cpm-map GRAY

Select the CPM symbols mapping layout.

Description of the allowed values:

Value Description
GRAY Gray code switching only one bit at a time from a symbol to the following.
NATURAL The natural binary code incrementing the value from a symbol to the next one.

## 3.2.6.12. --mdm-cpm-ws¶

Type: text GMSK RCOS REC GMSK --mdm-cpm-ws GMSK

Select the CPM wave shape.

Description of the allowed values:

Value Description
GMSK Gaussian Minimum Shift Keying.
RCOS Raised COSinus.
REC RECtangular.

## 3.2.6.13. --mdm-cpm-std¶

Type: text GSM --mdm-cpm-std GSM

Set the CPM parameters according to a standard.

Description of the allowed values:

Value Parameter Value Description
GSM
1
5
1
2
3
NATURAL
GMSK
Bit per symbol.
Upsampling factor.
Modulation index numerator.
Modulation index denominator.
Memory depth.
Mapping layout.
Wave shape.

Note

When this parameter is used, if you set any of the other modem parameters, it will override the configuration from the standard.

## 3.2.6.14. --mdm-ite¶

Type: integer 1 --mdm-ite 5

Set the number of iterations in the SCMA demodulator.

## 3.2.6.15. --mdm-psi¶

Type: text PSI0 PSI1 PSI2 PSI3 --mdm-psi PSI0

Select the $$\psi$$ function used in the SCMA demodulator.

Description of the allowed values:

Value Description
PSI0 $$\psi_0 = \exp\left(-\frac{|d|}{n_0}\right)$$
PSI1 $$\psi_1 \approx \psi_0 \approx \frac{1}{|d| + n_0}$$
PSI2 $$\psi_2 \approx \psi_0 \approx \frac{1}{8. |d|^2 + n_0}$$
PSI3 $$\psi_3 \approx \psi_0 \approx \frac{1}{4. |d|^2 + n_0}$$

Where $$n_0 = \begin{cases} 1 & \text{if } \sigma^2 \text{ is disabled}\\ 4 \sigma^2 & \text{else} \end{cases}$$.

See the --mdm-no-sig2 parameter to disable the division by $$\sigma^2$$.

## 3.2.6.16. --mdm-cb-path¶

Type: file read/write --mdm-cb-path conf/mod/SCMA/CS1.cb

Give the path to the codebook, to use with the SCMA modem.

Note

Only 3 BPS codebook symbols are supported at this time.

Codebook format

A codebook is designed for a number_of_users $$V$$, a number_of_orthogonal_resources $$K$$ and codebook_size $$M$$.

The codebook file then looks as a table of $$V \times K$$ rows and $$2.M$$ columns (real and imaginary parts):

V K M

Re(User 1, Resource 1, Code 1)    Im(User 1, Resource 1, Code 1)    ...    Re(User 1, Resource 1, Code M)    Im(User 1, Resource 1, Code M)
...                               ...                               ...    ...                               ...
Re(User 1, Resource K, Code 1)    Im(User 1, Resource K, Code 1)    ...    Re(User 1, Resource K, Code M)    Im(User 1, Resource K, Code M)
Re(User 2, Resource 1, Code 1)    Im(User 2, Resource 1, Code 1)    ...    Re(User 2, Resource 1, Code M)    Im(User 2, Resource 1, Code M)
...                               ...                               ...    ...                               ...
Re(User 2, Resource K, Code 1)    Im(User 2, Resource K, Code 1)    ...    Re(User 2, Resource K, Code M)    Im(User 2, Resource K, Code M)
...                               ...                               ...    ...                               ...
Re(User V, Resource 1, Code 1)    Im(User V, Resource 1, Code 1)    ...    Re(User V, Resource 1, Code M)    Im(User V, Resource 1, Code M)
...                               ...                               ...    ...                               ...
Re(User V, Resource K, Code 1)    Im(User V, Resource K, Code 1)    ...    Re(User V, Resource K, Code M)    Im(User V, Resource K, Code M)


Descriptions of the codebooks of the configuration files

Codebooks are normalized, so the average power of signal will be equal to 1.

Codebook Set Description
CS1 From [Pro]
CS2 LDS based on QPSK constellation
CS3 Based on [CWC15] and own optimization for AWGN channel
CS4 From [ZXX+16]
CS5 From [SWC17]
CS6 From [KS17]
CS7 From [KS17]
CS8 From [WZC15]

The simulation results for CS1-CS7 (AWGN and Rayleigh fading channels) can be found in [KS17]. The simulation results for CS8 can be found in [KS16] (defined as CS2 in the paper).

## 3.2.6.17. --mdm-rop-est¶

Type: integer 0 --mdm-rop-est 256

Set the number of known bits for the ROP estimation in the OOK demodulator on an optical channel.

The estimation is done from a known set of bits that is the output of the modulation. If left to 0, the demodulation is done with the exact applied ROP in the channel.

## 3.2.6.18. References¶

 [ARS81] T. Aulin, N. Rydbeck, and C. -. Sundberg. Continuous phase modulation - part ii: partial response signaling. IEEE Transactions on Communications (TCOM), 29(3):210–225, March 1981. doi:10.1109/TCOM.1981.1094985.
 [AS81] T. Aulin and C. Sundberg. Continuous phase modulation - part i: full response signaling. IEEE Transactions on Communications (TCOM), 29(3):196–209, March 1981. doi:10.1109/TCOM.1981.1095001.
 [NB13] H. Nikopour and H. Baligh. Sparse Code Multiple Access. In International Symposium on Personal, Indoor, and Mobile Radio Communications (PIMRC), volume, 332–336. Sept 2013. doi:10.1109/PIMRC.2013.6666156.

 [CWC15] M. Cheng, Y. Wu, and Y. Chen. Capacity analysis for non-orthogonal overloading transmissions under constellation constraints. In International Conference on Wireless Communications Signal Processing (WCSP), 1–5. Oct 2015. doi:10.1109/WCSP.2015.7341294.
 [KS16] V. P. Klimentyev and A. B. Sergienko. Detection of scma signal with channel estimation error. In Conference of Open Innovations Association and Seminar on Information Security and Protection of Information Technology (FRUCT-ISPIT), 106–112. April 2016. doi:10.1109/FRUCT-ISPIT.2016.7561515.
 [KS17] (1, 2, 3) V. P. Klimentyev and A. B. Sergienko. Scma codebooks optimization based on genetic algorithm. In European Wireless Conference, 1–6. May 2017. doi:.
 [Pro] Altera University Program. The 1st 5g algorithm innovation competition-scma.
 [SWC17] G. Song, X. Wang, and J. Cheng. Signature design of sparsely spread code division multiple access based on superposed constellation distance analysis. IEEE Access, 5:23809–23821, 2017. doi:10.1109/ACCESS.2017.2765346.
 [WZC15] Y. Wu, S. Zhang, and Y. Chen. Iterative multiuser receiver in sparse code multiple access systems. In IEEE International Conference on Communications (ICC), 2918–2923. June 2015. doi:10.1109/ICC.2015.7248770.
 [ZXX+16] S. Zhang, K. Xiao, B. Xiao, Z. Chen, B. Xia, D. Chen, and S. Ma. A capacity-based codebook design method for sparse code multiple access systems. In International Conference on Wireless Communications Signal Processing (WCSP), 1–5. Oct 2016. doi:10.1109/WCSP.2016.7752620.