é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()