pof
This commit is contained in:
147
composants.typ
147
composants.typ
@ -160,19 +160,26 @@
|
||||
(17, 6),
|
||||
)
|
||||
|
||||
let darken_ration = 20%
|
||||
|
||||
for e in edges {
|
||||
let vp = vpos.at(e.at(0))
|
||||
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 {
|
||||
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 {
|
||||
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)
|
||||
#let _h_pts = (
|
||||
(7, 0),
|
||||
|
||||
132
main.typ
132
main.typ
@ -35,22 +35,6 @@
|
||||
#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")[
|
||||
#place(center + horizon, dy: 8cm)[
|
||||
#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")[
|
||||
#definition(titre: [Code $display((n,k) in NN^2)$])[
|
||||
$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.]
|
||||
]
|
||||
|
||||
// #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")[
|
||||
#set text(size: 17pt)
|
||||
|
||||
#align(center)[
|
||||
#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)
|
||||
- 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%)[
|
||||
#v(0.3cm)
|
||||
#align(center)[
|
||||
#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$]
|
||||
#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)$],
|
||||
#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 quad (f_14)$]
|
||||
)
|
||||
$
|
||||
]
|
||||
]
|
||||
|
||||
#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
|
||||
#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$].
|
||||
- Si $forall j in {0, 7, 24}, space f_j = 1$, alors le bit est comme suspect.
|
||||
]
|
||||
|
||||
|
||||
@ -704,7 +735,7 @@
|
||||
// ]
|
||||
]
|
||||
|
||||
#myslide("?")[
|
||||
#myslide("La Contrainte de Somme Nulle")[
|
||||
#set text(size: 18pt)
|
||||
|
||||
#definition(titre: "Détection d'Erreur", accent: red)[
|
||||
@ -791,8 +822,11 @@
|
||||
|
||||
#myslide("Méthode de génération de H")[
|
||||
- Gallager
|
||||
- Mackay
|
||||
- Mackay-Neal
|
||||
- Progressive Edge-growth
|
||||
#align(center + horizon)[
|
||||
#image("src/construction.jpg", width: 50%)
|
||||
]
|
||||
]
|
||||
|
||||
#myslide("Encodage LDPC : Calcul de G")[
|
||||
@ -1060,7 +1094,7 @@
|
||||
|
||||
#myslide("Sum-Product : Belief Propagation")[
|
||||
#set text(size: 17pt)
|
||||
#v(-0.4em)
|
||||
#v(-0.7em)
|
||||
|
||||
#definition(titre: "Décodage Optimal")[
|
||||
Échange itératif de croyances (LLR) entre les nœuds du graphe
|
||||
@ -1079,7 +1113,8 @@
|
||||
#set text(size: 1.2em)
|
||||
*Mise à jour CN* \
|
||||
#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(
|
||||
@ -1092,7 +1127,9 @@
|
||||
#set text(size: 1.2em)
|
||||
*Mise à jour VN* \
|
||||
#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")[
|
||||
|
||||
#align(center + horizon)[
|
||||
#image("src/construction.jpg", width: 80%)
|
||||
]
|
||||
]
|
||||
|
||||
#myslide("Test réel")[
|
||||
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)
|
||||
#align(center + horizon)[
|
||||
#image("src/construction.jpg", width: 80%)
|
||||
]
|
||||
]
|
||||
|
||||
#myslide("FPGA")[
|
||||
#align(center + horizon)[
|
||||
#image("src/construction.jpg", width: 80%)
|
||||
]
|
||||
]
|
||||
|
||||
#[]<fin>
|
||||
@ -1291,7 +1339,7 @@
|
||||
|
||||
]
|
||||
|
||||
#myslide("Maths deriere Belief Propagation")[
|
||||
#myslide("Maths derière Belief Propagation")[
|
||||
|
||||
]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user