Site de G. Laroche |
codeur
stereo digital
|
Sommaire
La transmission stéréo pour une radio FM consiste à encoder le signal "L-R" (Canal Gauche - Canal Droit) à l'aide d'une sous porteuse de 38KHz, cette sous porteuse est ensuite supprimée.
Une fréquence pilote 19KHz est ajoutée au signal pour indiquer
la présence d'une émission stereo, elle est aussi utilisée
en fréquence de référence pour la sous porteuse 38KHz
.
Afin de conserver la compatibilité avec les émissions mono,
le signal "L+R" est ajouté aux 2 signaux précédents.
Le spectre du signal obtenu est décrit en détail dans la page décrivant le principe du RDS (cliquez sur l'image pour plus d'info):
Dans un codeur stéréo numérique les signaux "L+R" et "L-R" peuvent être modélisés par la modélisation suivante :
Vout = L(1+sin(Phase38K))/2
+ R(1-sin(Phase38K))/2
avec Phase38K correspondant à la phase de la sous porteuse
38KHz.
La fréquence d'échantillonnage du codeur doit être au minimum 8 fois supérieure à la fréquence la plus élevée (38KHz), soit une fréquence d'échantillonnage minimum de 8*38000 = 304 KHz
Le principe du codeur stéréo numérique utilise un switch rapide ADG201HSKN, découpant alternativement les signaux "L" et "R" à la fréquence d'échantillonnage. Un réseau de résistance permet de pondérer ces signaux afin de se rapprocher de la modélisation théorique ci dessus.
TODO schéma principe général + commentaires quartz 2.432 (multiple 304K).
Afin d'assurer une synchronisation parfaite entre la
fréquence pilote 19KHz et la sous porteuse 38KHz, le 19KHz est généré
numériquement avec un Convertisseur Numérique/Analogique
4 bits
Un réseau de résistance "R/2R" est utilisé
pour réaliser le CNA
TODO schéma principe R/2R.
La fréquence d'échantillonnage de 304KHz permet d'obtenir 16 echantillons pour le signal pilote 19KHz (304000/16=19000).
En choisissant les valeurs programmées sur le CNA pour être les plus proches possibles d'une sinusoide, avec un réseau de résistance R=1Kohms (10Kohms pour b0, 24Kohms pour b1, 50Kohms pour b2 et 120Kohms pour b3) on obtient les valeurs suivantes :
N°
|
b3
(455mV) |
b2
(200mV |
b1
(97mV) |
b0
(41mV) |
Vout19K
(mV) |
0
|
0
|
1
|
1
|
1
|
326
|
1
|
1
|
0
|
0
|
0
|
451
|
2
|
1
|
0
|
1
|
1
|
556
|
3
|
1
|
1
|
0
|
0
|
627
|
4
|
1
|
1
|
0
|
1
|
652
|
5
|
1
|
1
|
0
|
0
|
627
|
6
|
1
|
0
|
1
|
1
|
556
|
7
|
1
|
0
|
0
|
0
|
451
|
8
|
0
|
1
|
1
|
1
|
326
|
9
|
0
|
1
|
0
|
0
|
201
|
10
|
0
|
0
|
1
|
0
|
95
|
11
|
0
|
0
|
0
|
1
|
25
|
12
|
0
|
0
|
0
|
0
|
0
|
13
|
0
|
0
|
0
|
1
|
25
|
14
|
0
|
0
|
1
|
0
|
95
|
15
|
0
|
1
|
0
|
0
|
201
|
Le langage utilisé est le langage C pour l'initialisation puis l'assembleur pour la fonction d'échantillonnage.
Le code binaire et les fichiers sources sont disponibles en cliquant sur les liens suivants :
Le code binaire et les fichiers sources sont disponibles sous license GNU General Public License (GPL) :
fichier code binaire
".hex"
|
fichiers sources
|