pof
This commit is contained in:
147
composants.typ
147
composants.typ
@ -160,19 +160,26 @@
|
|||||||
(17, 6),
|
(17, 6),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
let darken_ration = 20%
|
||||||
|
|
||||||
for e in edges {
|
for e in edges {
|
||||||
let vp = vpos.at(e.at(0))
|
let vp = vpos.at(e.at(0))
|
||||||
let cp = cpos.at(e.at(1))
|
let cp = cpos.at(e.at(1))
|
||||||
line((vp.at(0), vp.at(1)), (cp.at(0), cp.at(1)), stroke: 0.45pt + rgb("#e0e0e0"))
|
line((vp.at(0), vp.at(1)), (cp.at(0), cp.at(1)), stroke: 0.45pt + rgb("#e0e0e0").darken(darken_ration))
|
||||||
}
|
}
|
||||||
|
|
||||||
for p in vpos {
|
for p in vpos {
|
||||||
circle((p.at(0), p.at(1)), radius: 0.25, fill: white, stroke: 0.8pt + rgb("#cccccc"))
|
circle((p.at(0), p.at(1)), radius: 0.25, fill: white, stroke: 0.8pt + rgb("#cccccc").darken(darken_ration))
|
||||||
}
|
}
|
||||||
|
|
||||||
for p in cpos {
|
for p in cpos {
|
||||||
let (x, y) = p
|
let (x, y) = p
|
||||||
rect((x - 0.25, y - 0.25), (x + 0.25, y + 0.25), fill: white, stroke: 0.8pt + rgb("#cccccc"))
|
rect(
|
||||||
|
(x - 0.25, y - 0.25),
|
||||||
|
(x + 0.25, y + 0.25),
|
||||||
|
fill: white,
|
||||||
|
stroke: 0.8pt + rgb("#cccccc").darken(darken_ration),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -992,6 +999,140 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#let hldpc_triple(row1: 0, row2: 9, row3: 14) = {
|
||||||
|
import cetz.draw
|
||||||
|
let points = (
|
||||||
|
(7, 0),
|
||||||
|
(10, 0),
|
||||||
|
(15, 0),
|
||||||
|
(22, 0),
|
||||||
|
(24, 0),
|
||||||
|
(29, 0),
|
||||||
|
(3, 1),
|
||||||
|
(6, 1),
|
||||||
|
(18, 1),
|
||||||
|
(19, 1),
|
||||||
|
(25, 1),
|
||||||
|
(27, 1),
|
||||||
|
(5, 2),
|
||||||
|
(9, 2),
|
||||||
|
(13, 2),
|
||||||
|
(14, 2),
|
||||||
|
(17, 2),
|
||||||
|
(28, 2),
|
||||||
|
(0, 3),
|
||||||
|
(8, 3),
|
||||||
|
(11, 3),
|
||||||
|
(16, 3),
|
||||||
|
(20, 3),
|
||||||
|
(26, 3),
|
||||||
|
(1, 4),
|
||||||
|
(2, 4),
|
||||||
|
(4, 4),
|
||||||
|
(12, 4),
|
||||||
|
(21, 4),
|
||||||
|
(23, 4),
|
||||||
|
(5, 5),
|
||||||
|
(6, 5),
|
||||||
|
(8, 5),
|
||||||
|
(10, 5),
|
||||||
|
(21, 5),
|
||||||
|
(29, 5),
|
||||||
|
(14, 6),
|
||||||
|
(15, 6),
|
||||||
|
(16, 6),
|
||||||
|
(18, 6),
|
||||||
|
(22, 6),
|
||||||
|
(28, 6),
|
||||||
|
(0, 7),
|
||||||
|
(1, 7),
|
||||||
|
(4, 7),
|
||||||
|
(9, 7),
|
||||||
|
(20, 7),
|
||||||
|
(26, 7),
|
||||||
|
(2, 8),
|
||||||
|
(3, 8),
|
||||||
|
(11, 8),
|
||||||
|
(12, 8),
|
||||||
|
(17, 8),
|
||||||
|
(19, 8),
|
||||||
|
(7, 9),
|
||||||
|
(13, 9),
|
||||||
|
(23, 9),
|
||||||
|
(24, 9),
|
||||||
|
(25, 9),
|
||||||
|
(27, 9), // Ligne 9 contient 24
|
||||||
|
(0, 10),
|
||||||
|
(6, 10),
|
||||||
|
(15, 10),
|
||||||
|
(18, 10),
|
||||||
|
(21, 10),
|
||||||
|
(26, 10),
|
||||||
|
(2, 11),
|
||||||
|
(7, 11),
|
||||||
|
(10, 11),
|
||||||
|
(17, 11),
|
||||||
|
(22, 11),
|
||||||
|
(27, 11),
|
||||||
|
(8, 12),
|
||||||
|
(11, 12),
|
||||||
|
(14, 12),
|
||||||
|
(20, 12),
|
||||||
|
(23, 12),
|
||||||
|
(29, 12),
|
||||||
|
(4, 13),
|
||||||
|
(5, 13),
|
||||||
|
(9, 13),
|
||||||
|
(13, 13),
|
||||||
|
(16, 13),
|
||||||
|
(19, 13),
|
||||||
|
(1, 14),
|
||||||
|
(3, 14),
|
||||||
|
(12, 14),
|
||||||
|
(24, 14),
|
||||||
|
(25, 14),
|
||||||
|
(28, 14), // Ligne 14 contient 24
|
||||||
|
)
|
||||||
|
|
||||||
|
cetz.canvas(length: 0.35cm, {
|
||||||
|
let nx = 30
|
||||||
|
let ny = 15
|
||||||
|
let col_1 = orange
|
||||||
|
let col_2 = green.darken(15%)
|
||||||
|
let col_3 = blue
|
||||||
|
|
||||||
|
draw.content((-3.4, -7.5), text(size: 1.6em)[$H =$])
|
||||||
|
|
||||||
|
// Fonds de lignes (Highlight)
|
||||||
|
draw.rect((0, -row1), (nx, -row1 - 1), fill: col_1.lighten(90%), stroke: none)
|
||||||
|
draw.rect((0, -row2), (nx, -row2 - 1), fill: col_2.lighten(90%), stroke: none)
|
||||||
|
draw.rect((0, -row3), (nx, -row3 - 1), fill: col_3.lighten(90%), stroke: none)
|
||||||
|
|
||||||
|
// Crochets
|
||||||
|
draw.set-style(stroke: (thickness: 1.2pt))
|
||||||
|
draw.line((0.5, 0.3), (0, 0.3), (0, -ny - 0.3), (0.5, -ny - 0.3))
|
||||||
|
draw.line((nx - 0.5, 0.3), (nx, 0.3), (nx, -ny - 0.3), (nx - 0.5, -ny - 0.3))
|
||||||
|
|
||||||
|
for (x, y) in points {
|
||||||
|
let d_col = gray.darken(30%)
|
||||||
|
let r = 0.15
|
||||||
|
|
||||||
|
if y == row1 {
|
||||||
|
d_col = col_1
|
||||||
|
r = 0.22
|
||||||
|
} else if y == row2 {
|
||||||
|
d_col = col_2
|
||||||
|
r = 0.22
|
||||||
|
} else if y == row3 {
|
||||||
|
d_col = col_3
|
||||||
|
r = 0.22
|
||||||
|
}
|
||||||
|
|
||||||
|
draw.circle((x + 0.5, -y - 0.5), radius: r, fill: d_col, stroke: none)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// Données de H partagées (mêmes points que hldpc / hldpc_dual)
|
// Données de H partagées (mêmes points que hldpc / hldpc_dual)
|
||||||
#let _h_pts = (
|
#let _h_pts = (
|
||||||
(7, 0),
|
(7, 0),
|
||||||
|
|||||||
132
main.typ
132
main.typ
@ -35,22 +35,6 @@
|
|||||||
#v(1fr)
|
#v(1fr)
|
||||||
]
|
]
|
||||||
|
|
||||||
#myslide("Plan")[
|
|
||||||
#grid(
|
|
||||||
columns: (auto, 1fr),
|
|
||||||
align: horizon,
|
|
||||||
place(center + horizon, dx: 11.8cm, dy: 0.7cm)[#decor_matrice_etoilee()],
|
|
||||||
design_plan((
|
|
||||||
[Introduction],
|
|
||||||
[Codes linéaires],
|
|
||||||
[LDPC],
|
|
||||||
[Codage],
|
|
||||||
[Décodage],
|
|
||||||
[Analyse],
|
|
||||||
)),
|
|
||||||
)
|
|
||||||
]
|
|
||||||
|
|
||||||
#myslide("Introduction : Communication Numérique")[
|
#myslide("Introduction : Communication Numérique")[
|
||||||
#place(center + horizon, dy: 8cm)[
|
#place(center + horizon, dy: 8cm)[
|
||||||
#canal_shannon_intro()
|
#canal_shannon_intro()
|
||||||
@ -112,6 +96,23 @@
|
|||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
#myslide("Plan")[
|
||||||
|
#grid(
|
||||||
|
columns: (auto, 1fr),
|
||||||
|
align: horizon,
|
||||||
|
place(center + horizon, dx: 11.8cm, dy: 0.7cm)[#decor_matrice_etoilee()],
|
||||||
|
design_plan((
|
||||||
|
[Introduction],
|
||||||
|
[Codes linéaires],
|
||||||
|
[LDPC],
|
||||||
|
[Codage],
|
||||||
|
[Décodage],
|
||||||
|
[Analyse],
|
||||||
|
)),
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
#myslide("Définition : Codes Linéaires en Bloc")[
|
#myslide("Définition : Codes Linéaires en Bloc")[
|
||||||
#definition(titre: [Code $display((n,k) in NN^2)$])[
|
#definition(titre: [Code $display((n,k) in NN^2)$])[
|
||||||
$cal(C)$ sous-espace vectoriel de dimension $k$ de $FF_2^n$
|
$cal(C)$ sous-espace vectoriel de dimension $k$ de $FF_2^n$
|
||||||
@ -411,42 +412,72 @@
|
|||||||
#text(size: 1.1em)[- Si $f_j = 1$, un nombre impair de bits a été inversé par le canal.]
|
#text(size: 1.1em)[- Si $f_j = 1$, un nombre impair de bits a été inversé par le canal.]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
// #myslide("L'Entrelacement des Contraintes")[
|
||||||
|
// #set text(size: 17pt)
|
||||||
|
//
|
||||||
|
// #align(center)[
|
||||||
|
// #move(dx: -1.2cm)[
|
||||||
|
// #scale(115%)[#hldpc_dual(row1: 0, row2: 14)]
|
||||||
|
// ]
|
||||||
|
// ]
|
||||||
|
//
|
||||||
|
// #v(1cm)
|
||||||
|
//
|
||||||
|
// #set text(size: 1.1em)
|
||||||
|
// - Chaque bit $r_i$ participe à $w_c = 3$ équations distinctes
|
||||||
|
//
|
||||||
|
// #v(1cm)
|
||||||
|
//
|
||||||
|
// // --- Étage 2 : Système et Décision ---
|
||||||
|
// #set align(center + horizon)
|
||||||
|
// #scale(115%)[
|
||||||
|
// #block(fill: gray.lighten(95%), inset: 10pt, stroke: 0.5pt + gray, radius: 4pt)[
|
||||||
|
// $
|
||||||
|
// cases(
|
||||||
|
// #text(fill: orange)[$r_7 plus.o r_10 plus.o r_15 plus.o r_22 plus.o bold(r_24) plus.o r_29 &= 0$],
|
||||||
|
// #h(4.5cm) #text(size: 20pt)[$bold(dots.v)$],
|
||||||
|
// #text(fill: blue)[$r_1 plus.o r_3 plus.o r_12 plus.o bold(r_24) plus.o r_25 plus.o r_28 &= 0$]
|
||||||
|
// )
|
||||||
|
// $
|
||||||
|
// ]
|
||||||
|
// ]
|
||||||
|
//
|
||||||
|
// #v(1cm)
|
||||||
|
//
|
||||||
|
// #set align(left)
|
||||||
|
// #set text(size: 1.1em)
|
||||||
|
// - *$r_24$* : Surveillé par #text(fill: orange)[$f_0$] et #text(fill: blue)[$f_14$].
|
||||||
|
// - Si #text(fill: orange)[$f_0 = 1$] et #text(fill: blue)[$f_14 = 1$], $r_24$ est suspect
|
||||||
|
// ]
|
||||||
|
|
||||||
#myslide("L'Entrelacement des Contraintes")[
|
#myslide("L'Entrelacement des Contraintes")[
|
||||||
#set text(size: 17pt)
|
#set text(size: 17pt)
|
||||||
|
|
||||||
#align(center)[
|
#align(center)[
|
||||||
#move(dx: -1.2cm)[
|
#move(dx: -1.2cm)[
|
||||||
#scale(115%)[#hldpc_dual(row1: 0, row2: 14)]
|
#scale(110%)[#hldpc_triple(row1: 0, row2: 7, row3: 14)]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
#v(1cm)
|
#v(0.5cm)
|
||||||
|
- Chaque bit $r_i$ participe à $w_c = 3$ équations distinctes :
|
||||||
|
|
||||||
#set text(size: 1.1em)
|
#v(0.3cm)
|
||||||
- Chaque bit $r_i$ participe à $w_c = 3$ équations distinctes
|
#align(center)[
|
||||||
|
|
||||||
#v(1cm)
|
|
||||||
|
|
||||||
// --- Étage 2 : Système et Décision ---
|
|
||||||
#set align(center + horizon)
|
|
||||||
#scale(115%)[
|
|
||||||
#block(fill: gray.lighten(95%), inset: 10pt, stroke: 0.5pt + gray, radius: 4pt)[
|
#block(fill: gray.lighten(95%), inset: 10pt, stroke: 0.5pt + gray, radius: 4pt)[
|
||||||
$
|
$
|
||||||
cases(
|
cases(
|
||||||
#text(fill: orange)[$r_7 plus.o r_10 plus.o r_15 plus.o r_22 plus.o bold(r_24) plus.o r_29 &= 0$],
|
#text(fill: orange)[$r_7 plus.o r_10 plus.o r_15 plus.o r_22 plus.o bold(r_24) plus.o r_29 &= 0 quad (f_0)$],
|
||||||
#h(4.5cm) #text(size: 20pt)[$bold(dots.v)$],
|
#text(fill: green.darken(20%))[$r_2 plus.o r_8 plus.o r_13 plus.o bold(r_24) plus.o r_26 plus.o r_30 &= 0 quad (f_7)$],
|
||||||
#text(fill: blue)[$r_1 plus.o r_3 plus.o r_12 plus.o bold(r_24) plus.o r_25 plus.o r_28 &= 0$]
|
#text(fill: blue)[$r_1 plus.o r_3 plus.o r_12 plus.o bold(r_24) plus.o r_25 plus.o r_28 &= 0 quad (f_14)$]
|
||||||
)
|
)
|
||||||
$
|
$
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
#v(1cm)
|
#v(0.5cm)
|
||||||
|
- *$r_24$* : Surveillé simultanément par #text(fill: orange)[$f_0$], #text(fill: green.darken(20%))[$f_7$] et #text(fill: blue)[$f_14$].
|
||||||
#set align(left)
|
- Si $forall j in {0, 7, 24}, space f_j = 1$, alors le bit est comme suspect.
|
||||||
#set text(size: 1.1em)
|
|
||||||
- *$r_24$* : Surveillé par #text(fill: orange)[$f_0$] et #text(fill: blue)[$f_14$].
|
|
||||||
- Si #text(fill: orange)[$f_0 = 1$] et #text(fill: blue)[$f_14 = 1$], $r_24$ est suspect
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@ -704,7 +735,7 @@
|
|||||||
// ]
|
// ]
|
||||||
]
|
]
|
||||||
|
|
||||||
#myslide("?")[
|
#myslide("La Contrainte de Somme Nulle")[
|
||||||
#set text(size: 18pt)
|
#set text(size: 18pt)
|
||||||
|
|
||||||
#definition(titre: "Détection d'Erreur", accent: red)[
|
#definition(titre: "Détection d'Erreur", accent: red)[
|
||||||
@ -791,8 +822,11 @@
|
|||||||
|
|
||||||
#myslide("Méthode de génération de H")[
|
#myslide("Méthode de génération de H")[
|
||||||
- Gallager
|
- Gallager
|
||||||
- Mackay
|
- Mackay-Neal
|
||||||
- Progressive Edge-growth
|
- Progressive Edge-growth
|
||||||
|
#align(center + horizon)[
|
||||||
|
#image("src/construction.jpg", width: 50%)
|
||||||
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
#myslide("Encodage LDPC : Calcul de G")[
|
#myslide("Encodage LDPC : Calcul de G")[
|
||||||
@ -1060,7 +1094,7 @@
|
|||||||
|
|
||||||
#myslide("Sum-Product : Belief Propagation")[
|
#myslide("Sum-Product : Belief Propagation")[
|
||||||
#set text(size: 17pt)
|
#set text(size: 17pt)
|
||||||
#v(-0.4em)
|
#v(-0.7em)
|
||||||
|
|
||||||
#definition(titre: "Décodage Optimal")[
|
#definition(titre: "Décodage Optimal")[
|
||||||
Échange itératif de croyances (LLR) entre les nœuds du graphe
|
Échange itératif de croyances (LLR) entre les nœuds du graphe
|
||||||
@ -1079,7 +1113,8 @@
|
|||||||
#set text(size: 1.2em)
|
#set text(size: 1.2em)
|
||||||
*Mise à jour CN* \
|
*Mise à jour CN* \
|
||||||
#set text(size: 1.1em)
|
#set text(size: 1.1em)
|
||||||
$ tanh(m_(c arrow v) / 2) = product_(u != v) tanh(m_(u arrow c) / 2) $
|
// $ tanh(m_(c arrow v) / 2) = product_(u != v) tanh(m_(u arrow c) / 2) $
|
||||||
|
$ m_(c arrow v) = 2 tanh^(-1) ( product_(u in cal(N)(c) \\ {v}) tanh(m_(u arrow c) / 2) ) $
|
||||||
]
|
]
|
||||||
|
|
||||||
#block(
|
#block(
|
||||||
@ -1092,7 +1127,9 @@
|
|||||||
#set text(size: 1.2em)
|
#set text(size: 1.2em)
|
||||||
*Mise à jour VN* \
|
*Mise à jour VN* \
|
||||||
#set text(size: 1.1em)
|
#set text(size: 1.1em)
|
||||||
$ m_(v arrow c) = L_"canal" + sum_(c' != c) m_(c' arrow v) $
|
// $ m_(v arrow c) = L_"canal" + sum_(c' != c) m_(c' arrow v) $
|
||||||
|
// $ m_(v arrow c) = L_v^((0)) + sum_(c' in cal(N)(v) \\ {c}) m_(c' arrow v) $
|
||||||
|
$ m_(v arrow c) = L_(v"canal") + sum_(c' in cal(N)(v) \\ {c}) m_(c' arrow v) $
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -1256,12 +1293,23 @@
|
|||||||
]
|
]
|
||||||
|
|
||||||
#myslide("QC-LDPC")[
|
#myslide("QC-LDPC")[
|
||||||
|
#align(center + horizon)[
|
||||||
|
#image("src/construction.jpg", width: 80%)
|
||||||
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
#myslide("Test réel")[
|
#myslide("Test réel")[
|
||||||
Transmission hackrf, test de diff de debit avec paquets
|
Transmission hackrf, test de diff de debit avec paquets
|
||||||
Test de transmission d'image avec différent ldpc non opti et opti (H diff etc)
|
Test de transmission d'image avec différent ldpc non opti et opti (H diff etc)
|
||||||
|
#align(center + horizon)[
|
||||||
|
#image("src/construction.jpg", width: 80%)
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
#myslide("FPGA")[
|
||||||
|
#align(center + horizon)[
|
||||||
|
#image("src/construction.jpg", width: 80%)
|
||||||
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
#[]<fin>
|
#[]<fin>
|
||||||
@ -1291,7 +1339,7 @@
|
|||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
#myslide("Maths deriere Belief Propagation")[
|
#myslide("Maths derière Belief Propagation")[
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user