émetteur_création
Création d'un générateur de trames.
Espace de nom : tsd::telecom
Prototype
sptr<Émetteur> émetteur_création(const ÉmetteurConfig &ec)
Description
La structure de configuration (ÉmetteurConfig) indique le format de la trame, c'est-à-dire :
- L'en-tête de synchronisation,
- Le nombre de bits utiles,
- Les paramètres de la modulation.
Ce bloc va concaténer l'en-tête avec les bits utiles de manière à générer des échantillons I/Q à partir des bits utiles, en s'occupant des éventuels problème de padding (si plusieurs bits / symbole). Par exemple, avec une modulation QPSK (2 bits / symboles), si l'en-tête fait 127 bits, alors un zéro est inséré de manière à former un en-tête de 128 bits.
En fin de trame, le filtre de mise en forme est appliqué un peu plus loin que nécessaire, afin que le signal I/Q revienne proprement à zéro sans discontinuité (voir exemple ci-dessous, dernière courbe).
Notez que la forme d'onde n'est pas forcément identique pour l'en-tête et pour les données utiles, si le champs ÉmetteurConfig::format.fo_entete est renseigné.
Schéma-bloc
- Avertissement
- L'application d'un code correcteur n'est pas encore implémentée.
Exemple
// Configuration de l'émetteur
ÉmetteurConfig ec;
// En-tête de synchonisation (13 bits)
ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format.lien non trouvé : [structtsd_1_1telecom_1_1_trame_format_1a81d8500fe602da6b9589a1d5f7701fa2]entete = code_Barker(13);
// Nombre de bits utiles
ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format.lien non trouvé : [structtsd_1_1telecom_1_1_trame_format_1aab240a66c4b5d7f3fa38c726a0f810fe]nbits = 16;
// Facteur de sur-échantillonnage = 8
ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format.lien non trouvé : [structtsd_1_1telecom_1_1_trame_format_ac7880c92728eeee06e3448dbab3a8381_1ac7880c92728eeee06e3448dbab3a8381]modulation.lien non trouvé : [structtsd_1_1telecom_1_1_mod_config_1a70eb9291612719b24f2ac92996cb9fa4]fsymb = 1;
ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format.lien non trouvé : [structtsd_1_1telecom_1_1_trame_format_ac7880c92728eeee06e3448dbab3a8381_1ac7880c92728eeee06e3448dbab3a8381]modulation.lien non trouvé : [structtsd_1_1telecom_1_1_mod_config_1a27ee82b08ade399e2cb8cd05241e7c11]fe = 8;
// BPSK, avec filtre SRRC (60 % de dépassement)
ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format.lien non trouvé : [structtsd_1_1telecom_1_1_trame_format_ac7880c92728eeee06e3448dbab3a8381_1ac7880c92728eeee06e3448dbab3a8381]modulation.lien non trouvé : [structtsd_1_1telecom_1_1_mod_config_1a7ab39be2bea9353c45ef8bc657fce175]forme_onde = forme_onde_bpsk(lien non trouvé : [structtsd_1_1telecom_1_1_spec_filtre_mise_en_forme_1ade0567b3c8300e63cb0a477dba0a60a1]SpecFiltreMiseEnForme::rcs(0.6));
// Instanciation de l'émetteur
soit tx = émetteur_création(ec);
// 16 bits alternés (101010...)
soit data = lien non trouvé : [classtsd_1_1telecom_1_1_bit_stream_1adc6e6a9b8faa01e1017be415ad5368be]BitStream::altern(16);
// Emission d'une trame
soit iq = tx->step(data);
Figures f;
f.subplot().plot(ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format.lien non trouvé : [structtsd_1_1telecom_1_1_trame_format_1a81d8500fe602da6b9589a1d5f7701fa2]entete.lien non trouvé : [classtsd_1_1telecom_1_1_bit_stream_1ac495fc01f7eddc3294118d570558e541]array(), "|bo" , "En-tête de synchronisation" );
f.subplot().plot(data.array(), "|go" , "Données" );
f.subplot().plot(iq, "-m" );
f.gcf().titre( "Trame modulée (en-tête + données)" );

Voir aussi
récepteur_création(), modulateur_création(), démodulateur_création()