Skip to content

Commit

Permalink
fixed up header symbols in french version
Browse files Browse the repository at this point in the history
  • Loading branch information
777arc committed Nov 14, 2022
1 parent 2d24f3c commit 4b30872
Show file tree
Hide file tree
Showing 15 changed files with 153 additions and 153 deletions.
4 changes: 2 additions & 2 deletions content-fr/about_author.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. _author-chapter:

##################
####################
A propos de l'auteur
##################
####################

Marc Lichtman est un chercheur en communications sans fil spécialisé dans la radio logicielle, l'apprentissage automatique, le LTE/5G-NR et la détection du spectre. Il est professeur adjoint à l'Université du Maryland, où il a créé et enseigné un cours qui a servi de base à ce manuel. Il s'agissait d'un cours facultatif de dernière année destiné aux étudiants de premier cycle en informatique intéressés par la SDR/DSP. Ce cours l'a amené à mieux comprendre comment rendre un matériel incroyablement lourd accessible et attrayant pour des étudiants qui étaient de grands programmeurs mais qui avaient peu ou pas de connaissances de la couche PHY. Il n'était pas rare de commencer le cours par un mini-hackathon, où les étudiants devaient trouver ou décoder des signaux cachés (transmis par Marc) en utilisant ce qu'ils venaient d'apprendre.

Expand Down
4 changes: 2 additions & 2 deletions content-fr/channel_coding.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ Codage Canal

Dans ce chapitre, nous présentons les bases du codage de canal, c'est-à-dire les codes correcteurs d'erreur (FEC pour *Forward Error Correction* en anglais), la limite de Shannon, les codes de Hamming, les turbo-codes et les codes LDPC. Le codage de canal est un domaine énorme dans les communications sans fil, et est une branche de la "théorie de l'information", qui est l'étude de la quantification, du stockage et de la communication de l'information.

***************************
***********************************************
Pourquoi nous avons besoin du codage des canaux
***************************
***********************************************

Comme nous l'avons appris dans le chapitre :ref:`noise-chapter`, les canaux sans fil sont bruyants, et nos symboles numériques n'atteindront pas parfaitement le récepteur. Si vous avez suivi un cours des réseaux, vous connaissez peut-être déjà les contrôles de redondance cyclique (CRC pour *cyclic redundancy checks* en anglais), qui **détectent** les erreurs au niveau de la réception. L'objectif du codage de canal est de détecter **et de corriger** les erreurs au niveau du récepteur. Si nous laissons une certaine marge d'erreur, nous pouvons transmettre avec un système de modulation d'ordre supérieur par exemple, sans que la liaison soit rompue. À titre d'exemple visuel, considérez les constellations suivantes montrant une QPSK (à gauche) et une 16QAM (à droite) avec la même quantité de bruit. La QPSK fournit 2 bits par symbole, tandis que la 16QAM offre un débit deux fois plus élevé avec 4 bits par symbole. Mais notez comment dans la constellation QPSK, les symboles ont tendance à ne pas dépasse pas les frontières de décision des symboles, ou l'axe des x et l'axe des y, ce qui signifie que les symboles seront reçus correctement. En revanche, dans le tracé de la constellation 16QAM, il y a un chevauchement des groupes de points et, par conséquent, de nombreux symboles seront mal reçus.

Expand Down
22 changes: 11 additions & 11 deletions content-fr/digital_modulation.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. _modulation-chapter:

###################
#####################
Modulation numérique
###################
#####################

Dans ce chapitre, nous aborderons la transmission *réelle de données* à l'aide de la modulation numérique et des symboles sans fil! Nous concevrons des signaux qui transmettent des "informations", par exemple des 1 et des 0, en utilisant des schémas de modulation comme ASK, PSK, QAM et FSK. Nous aborderons également les diagrammes et constellations IQ et terminerons le chapitre par quelques exemples Python.

Expand Down Expand Up @@ -69,9 +69,9 @@ De quelles manières pouvons-nous moduler la porteuse? Autre façon de poser la

Nous pouvons moduler nos données sur une porteuse en modifiant l'un (ou plusieurs) de ces trois éléments.

****************************
***************************************
Modulation par déplacement d'amplitude
****************************
***************************************

Modulation par déplacement d'amplitude (ou ASK en anglais pour Amplitude Shift Keying) est le premier schéma de modulation numérique que nous allons aborder car la modulation d'amplitude est la plus simple à visualiser parmi les trois propriétés des sinusoïdes. Nous modulons littéralement l' **amplitude** de la porteuse. Voici un exemple de modulation par déplacement d'amplitude à deux niveaux, appelé 2-ASK:

Expand Down Expand Up @@ -109,9 +109,9 @@ Comment créer réellement ce signal numériquement, par le biais d'un code? To

Le graphique du haut montre les échantillons discrets représentés par des points rouges, c'est-à-dire notre signal numérique. Le graphique du bas montre à quoi ressemble le signal modulé résultant, qui pourrait être transmis par voie aérienne. Dans les systèmes réels, la fréquence de la porteuse est généralement beaucoup plus élevée que la vitesse à laquelle les symboles changent. Dans cet exemple, il n'y a que trois cycles de la sinusoïde dans chaque symbole, mais dans la pratique, il peut y en avoir des milliers, en fonction de la hauteur du spectre dans lequel le signal est transmis.

************************
***********************************
Modulation par déplacement de phase
************************
***********************************

Envisageons maintenant de moduler la phase de la même manière que nous l'avons fait pour l'amplitude. La forme la plus simple est la modulation PSK binaire, aussi appelée BPSK, où il y a deux niveaux de phase:

Expand All @@ -132,9 +132,9 @@ Ce n'est pas très amusant de regarder des graphiques comme celui-ci:

Au lieu de cela, nous représentons habituellement la phase dans le plan complexe.

***********************
****************************
Diagrammes IQ/Constellations
***********************
****************************

Vous avez déjà vu des diagrammes IQ dans la sous-section sur les nombres complexes du chapitre :ref:`sampling-chapter`, mais maintenant nous allons les utiliser d'une manière nouvelle et amusante. Pour un symbole donné, nous pouvons montrer l'amplitude et la phase sur un diagramme IQ. Pour l'exemple BPSK, nous avons dit que nous avions des phases de 0 et 180 degrés. Traçons ces deux points sur le diagramme IQ. Nous supposerons que l'amplitude est de 1. Dans la pratique, l'amplitude utilisée n'a pas vraiment d'importance; une valeur plus élevée signifie un signal plus puissant, mais vous pouvez également augmenter le gain de l'amplificateur.

Expand Down Expand Up @@ -216,9 +216,9 @@ Notez que la plupart des schémas de modulation, à l'exception des diverses ASK

Étant donné la difficulté de discerner les schémas de modulation dans le domaine temporel, nous préférons utiliser des diagrammes IQ plutôt que d'afficher le signal dans le domaine temporel. Nous pouvons néanmoins montrer le signal dans le domaine temporel s'il y a une certaine structure de paquets ou si la séquence des symboles est importante.

****************************
****************************************
Modulation par déplacement de fréquence
****************************
****************************************

La dernière sur la liste est la modulation par déplacement de fréquence (ou FSK en anglais pour *Frequency Shift Keying*). La FSK est assez simple à comprendre: nous nous déplaçons simplement entre N fréquences, chaque fréquence représentant un symbole possible. Cependant, comme nous modulons une porteuse, il s'agit en fait de notre fréquence porteuse +/- ces N fréquences. Par exemple, nous pourrions être sur une porteuse de 1.2 GHz et nous déplacer entre ces quatre fréquences :

Expand Down Expand Up @@ -325,4 +325,4 @@ Vous pourriez même combiner le bruit de phase avec l'AWGN pour obtenir l'expér
:align: center
:target: ../_images/phase_jitter_awgn.svg

Nous allons nous arrêter à ce point. Si nous voulions voir à quoi ressemble le signal QPSK dans le domaine temporel, nous devrions générer plusieurs échantillons par symbole (dans cet exercice, nous avons juste fait un échantillon par symbole). Vous apprendrez pourquoi vous devez générer plusieurs échantillons par symbole lorsque nous aborderons la mise en forme des impulsions. L'exercice Python du chapitre :ref:`pulse-shaping-chapter` reprendra là où nous nous sommes arrêtés ici.
Nous allons nous arrêter à ce point. Si nous voulions voir à quoi ressemble le signal QPSK dans le domaine temporel, nous devrions générer plusieurs échantillons par symbole (dans cet exercice, nous avons juste fait un échantillon par symbole). Vous apprendrez pourquoi vous devez générer plusieurs échantillons par symbole lorsque nous aborderons la mise en forme des impulsions. L'exercice Python du chapitre :ref:`pulse-shaping-chapter` reprendra là où nous nous sommes arrêtés ici.
28 changes: 14 additions & 14 deletions content-fr/filters.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ Filtres
Dans ce chapitre, nous nous familiarisons avec les filtres numériques en utilisant Python. Nous couvrons les types de filtres (FIR/IIR et passe-bas/passe-haut/passe-bande/coupe-bande), comment les filtres sont représentés numériquement et comment ils sont conçus. Nous terminons par une introduction aux filtres de mise en forme, que nous approfondissons dans le chapitre :ref:`pulse-shaping-chapter`.


*************************
******************************
Principes de Base des Filtres
*************************
******************************

Les filtres sont utilisés dans de nombreuses disciplines. Par exemple, le traitement des images fait un usage intensif des filtres 2D, où l'entrée et la sortie sont des images. Vous utilisez peut-être un filtre chaque matin pour faire votre café, qui filtre les solides du liquide. En DSP, les filtres sont principalement utilisés pour :

Expand Down Expand Up @@ -47,9 +47,9 @@ Chaque filtre permet à certaines fréquences de rester dans un signal tout en b

Ne confondez pas ces types de filtrage avec la mise en œuvre algorithmique du filtre (par exemple, IIR vs FIR). Le type le plus courant est de loin le filtre passe-bas (LPF pour *Low Pass Filter* en anglais) car nous représentons souvent des signaux en bande de base. Le LPF nous permet de filtrer tout ce qui se trouve "autour" de notre signal, en éliminant le bruit excessif et les autres signaux.

*************************
***************************
Représentation des Filtres
*************************
***************************

Pour la plupart des filtres que nous verrons (connus sous le nom de filtres FIR, pour *Finite Impulse Response* en anglais, ou *filtres à réponse impulsionnelle finie* en français), nous pouvons représenter le filtre lui-même avec un seul tableau de flottants. Pour les filtres symétriques dans le domaine fréquentiel, ces flottants seront réels (par opposition à complexes), et leur nombre tend à être impair. Nous appelons ce tableau de flottants *les coéfficients* du filtre ou usuellement *taps* en anglais. Nous utilisons souvent :math:`h` comme symbole pour les taps du filtre. Voici un exemple d'un ensemble de taps qui définissent un filtre :

Expand All @@ -70,7 +70,7 @@ Pour la plupart des filtres que nous verrons (connus sous le nom de filtres FIR,
1.08410297e-03 9.92977939e-04]
Exemple de cas d'utilisation
########################
#############################

Pour comprendre comment les filtres sont utilisés, prenons un exemple où nous accordons notre radio logicielle sur la fréquence d'un signal existant, et nous voulons l'isoler des autres signaux. Rappelez-vous que nous indiquons à notre SDR la fréquence à laquelle il doit s'accorder, mais que les échantillons capturés par le SDR sont en bande de base, ce qui signifie que le signal s'affichera comme centré autour de 0 Hz. Nous devrons garder la trace de la fréquence sur laquelle nous avons demandé au SDR de s'accorder. Voici ce que nous pourrions recevoir :

Expand Down Expand Up @@ -187,7 +187,7 @@ Et voici le code qui a été utilisé pour produire la réponse fréquentielle,
plt.show()
Filtres Réels et Complexes
########################
###########################

Le filtre que je vous ai montré avait des taps réelles, mais les taps peuvent aussi être complexes. Le fait que les taps soient réelles ou complexes ne doit pas nécessairement correspondre au signal que vous faites passer par le filtre, c'est-à-dire que vous pouvez faire passer un signal complexe par un filtre avec des taps réelles et vice versa. Lorsque les taps sont réelles, la réponse en fréquence du filtre sera symétrique autour du DC (0 Hz). En général, nous utilisons des prises complexes lorsque nous avons besoin d'asymétrie, ce qui arrive très rarement.

Expand Down Expand Up @@ -240,9 +240,9 @@ Comme notre filtre n'est pas symétrique autour de 0 Hz, il doit utiliser des ta

Si cette sous-section a ajouté à la confusion, ne vous inquiétez pas, dans 99% des cas, vous aurez affaire à de simples filtres passe-bas avec des taps réelles de toute façon.

*************************
***************************
Implémentation des Filtres
*************************
***************************

Nous n'allons pas nous plonger trop profondément dans l'implémentation des filtres. Je me concentre plutôt sur la conception des filtres (de toute façon, vous pouvez trouver des implémentations prêtes à l'emploi dans n'importe quel langage de programmation). Pour l'instant, voici ce qu'il faut retenir: pour filtrer un signal avec un filtre FIR, il suffit de convoluer la réponse impulsionnelle (le vecteur de taps) avec le signal d'entrée. (Ne vous inquiétez pas, une section ultérieure explique la convolution.) Dans le monde discret, nous utilisons une convolution discrète (exemple ci-dessous). Les triangles labelisés par des *b* sont les taps. Dans le schéma, les carrés labelisés :math:`z^{-1}` au-dessus des triangles signifient qu'il faut retarder d'un pas de temps.

Expand Down Expand Up @@ -291,9 +291,9 @@ Maintenant, un exemple de filtre IIR. L'un d'entre vous a-t-il déjà fait ceci

où les 0,99 et 0,01 représentent la vitesse de mise à jour de la valeur (ou le taux de décroissance, même chose). C'est un moyen pratique de mettre à jour lentement une variable sans avoir à se souvenir des dernières valeurs. Il s'agit en fait d'une forme de filtre IIR passe-bas. Avec un peu de chance, vous avez compris pourquoi les filtres IIR sont moins stables que les filtres FIR: les valeurs ne disparaissent jamais complètement !

*************************
*********************************
Outils de conception de filtres
*************************
*********************************

En pratique, la plupart des gens utiliseront un outil de conception de filtre ou une fonction dans le code qui conçoit le filtre. Il existe de nombreux outils différents, mais pour les étudiants, je recommande cette application Web facile à utiliser de Peter Isza qui vous montrera la réponse impulsionnelle et fréquencielle : http://t-filter.engineerjs.com. En utilisant les valeurs par défaut, du moins au moment de l'écriture de ce document, l'application est configurée pour concevoir un filtre passe-bas avec une bande passante de 0 à 400 Hz et une bande rejetée à partir de 500 Hz. La fréquence d'échantillonnage est de 2 kHz, donc la fréquence maximale que nous pouvons "voir" est de 1 kHz.

Expand Down Expand Up @@ -377,9 +377,9 @@ Maintenant que nous commençons à comprendre la convolution, je vais vous prés
Dans l'expression ci-dessus, :math:`g(t)` est le signal ou l'entrée qui est inversée et glisse sur :math:`f(t)`, mais :math:`g(t)` et :math:`f(t)` peuvent être intervertis et il s'agit toujours de la même expression. En général, le vecteur le plus court sera utilisé comme :math:`g(t)`. La convolution est égale à une corrélation croisée, définie comme :math:`\int f(\tau) g(t+\tau)`, lorsque :math:`g(t)` est symétrique, c'est-à-dire qu'il ne change pas lorsqu'il est retourné autour de l'origine.

*************************
********************************
Conception de Filtres en Python
*************************
********************************

Nous allons maintenant étudier une façon de concevoir nous-mêmes un filtre FIR en Python. Bien qu'il existe de nombreuses approches de la conception de filtres, nous utiliserons la méthode consistant à commencer dans le domaine fréquentiel et à revenir en arrière pour trouver la réponse impulsionnelle. Car en fin de compte, c'est ainsi que notre filtre est représenté (par ses taps).

Expand Down Expand Up @@ -481,9 +481,9 @@ Voyez comment la réponse en fréquence n'est pas très droite... elle ne corres
Les deux options ont fonctionné. Laquelle choisiriez-vous? La deuxième méthode a permis d'obtenir plus de prises, mais la première méthode a permis d'obtenir une réponse en fréquence qui n'était pas très nette et dont le front descendant n'était pas très raide. Il existe de nombreuses façons de concevoir un filtre, chacune ayant ses propres compromis. Beaucoup considèrent la conception de filtres comme un art.


*************************
*********************************
Introduction à la Mise en Forme
*************************
*********************************

Nous allons présenter brièvement un sujet très intéressant au sein de la DSP: la mise en forme. Nous l'étudierons plus tard en profondeur dans son propre chapitre, voir :ref:`pulse-shaping-chapter`. Il est intéressant de le mentionner en même temps que le filtrage, car la mise en forme est finalement un type de filtre, utilisé dans un but spécifique, avec des propriétés spéciales.

Expand Down
Loading

0 comments on commit 4b30872

Please sign in to comment.