Skip to content

Decoding process

Example decoding for N = 2

Simple decoding (lack of BPSK and AWGN)

%%{init: {"flowchart": {"htmlLabels": true}, "securityLevel": "loose"}}%%
flowchart TB
  A((d=0, i=0)) e1@--> B((d=1, i=0))
  A e2@--> C((d=1, i=1))

  e1@{ animate : true }
  e2@{ animate : true }
\[ \begin{cases} x_1 = u_1 + u_2 \\ x_2 = u_2 \end{cases} \]
\[ \begin{cases} u_1 = x_1 + u_2 \\ x_2 = u_2 \end{cases} \]
\[ \begin{cases} u_1 = x_1 + x_2 \\ u_2 = x_2 \end{cases} \]

Nodes info

d - means depth, i - ID of node on given depth

  • (d=0, i=0) \(\quad\vec{x} = \begin{pmatrix} u_{1} + u_{2} & u_{2} \end{pmatrix} = \begin{pmatrix} x_{1} & x_{2} \end{pmatrix}\)
  • (d=1, i=0) \(\quad u_1 = x_1 + x_2\)
  • (d=1, i=1) \(\quad u_2 = x_2\)

LLR (Log-Likehood Ratio) for \(u_1\)

1. Signum

\[ \text{sgn}(a) = \begin{cases} +1, & \text{if } \ a \geq 0 \\ -1, & \text{if } \ a < 0 \end{cases} \]

2. LLR

\[ L(u_1) = \ln\!\Biggl(\frac{\Pr\{u_1=0\mid r_1,r_2\}}{\Pr\{u_1=1\mid r_1,r_2\}}\Biggr) \approx \text{sgn}(r_1) \cdot \text{sgn}(r_2) \cdot \text{min}(|r_1|, |r_2|) \]

3. Hard decision

\[ \hat{u_1} = \begin{cases} 0, & \text{if } \ L(u_1) \geq 0 \\ 1, & \text{if } \ L(u_1) < 0 \end{cases} \]

LLR (Log-Likehood Ratio) for \(u_2\)

1. LLR

\[ L(u_2) = \begin{cases} r_2 + r_1, & \text{if } \ \hat{u_1} = 0 \\ r_2 - r_1, & \text{if } \ \hat{u_1} = 1 \end{cases} \]

2. Hard decision

\[ \hat{u_2} = \begin{cases} 0, & \text{if } \ L(u_2) \geq 0 \\ 1, & \text{if } \ L(u_2) < 0 \end{cases} \]

Decoding steps (with LLR)

Symbols info

  • \(f(r_1, r_2) = \text{sgn}(r_1) \cdot \text{sgn}(r_2) \cdot \text{min}(|r_1|,|r_2|)\)
  • \[ g(r_1, r_2, \hat{u_1}) = r_2 + (1-2 \cdot \hat{u_1}) \cdot r_1 = \begin{cases} r_2 + r_1, & \text{if } \ \hat{u_1} = 0 \\ r_2 - r_1, & \text{if } \ \hat{u_1} = 1 \end{cases} \]

1. First step

%%{init: {"flowchart": {"htmlLabels": true}, "securityLevel": "loose"}}%%
flowchart TB
  A((d=0, i=0)) e1@-->|e1| B((d=1, i=0))
  A ---|e2| C((d=1, i=1))

  e1@{ animate : true }

Nodes and edges info

d - means depth, i - ID of node on given depth

  • (d=0, i=0) \(\quad\vec{r} = \begin{pmatrix} r_1 & r_2 \end{pmatrix}\)
  • e1 \(\quad f(r_1, r_2)\)
  • (d=1, i=0) \(\quad\) hard desicion for \(u_1 \ \rightarrow \ \hat{u_1}\)

2. Second step

%%{init: {"flowchart": {"htmlLabels": true}, "securityLevel": "loose"}}%%
flowchart BT
  B((d=1, i=0)) e1@-->|e1| A((d=0, i=0))
  C((d=1, i=1)) ---|e2| A

  e1@{ animate : true }

Nodes and edges info

d - means depth, i - ID of node on given depth

  • (d=1, i=0) \(\quad\) hard desicion for \(u_1 \ \rightarrow \ \hat{u_1}\)
  • e1 \(\quad \hat{u_1}\)

3. Third step

%%{init: {"flowchart": {"htmlLabels": true}, "securityLevel": "loose"}}%%
flowchart TB
  A((d=0, i=0)) ---|e1| B((d=1, i=0))
  A e2@-->|e2| C((d=1, i=1))


  e2@{ animate : true }

Nodes and edges info

d - means depth, i - ID of node on given depth

  • (d=0, i=0) \(\quad \hat{u_1}\)
  • e2 \(\quad g(r_1, r_2, \hat{u_1})\)
  • (d=1, i=1) \(\quad\) hard desicion for \(u_2 \ \rightarrow \ \hat{u_2}\)

4. Fourth step

%%{init: {"flowchart": {"htmlLabels": true}, "securityLevel": "loose"}}%%
flowchart BT
  B((d=1, i=0)) ---|e1| A((d=0, i=0))
  C((d=1, i=1)) e2@-->|e2| A

  e2@{ animate : true }

Nodes and edges info

d - means depth, i - ID of node on given depth

  • (d=1, i=1) \(\quad\) hard desicion for \(u_2 \ \rightarrow \ \hat{u_2}\)
  • e2 \(\quad \hat{u_2}\)
  • (d=0, i=0) \(\quad \hat{\vec{x}} = \begin{pmatrix} \hat{u_1} + \hat{u_2} & \hat{u_2} \end{pmatrix}\)