récepteur_création
Création d'un récepteur de trame.
Espace de nom : tsd::telecom
Prototype
sptr<Récepteur> récepteur_création(const RécepteurConfig &rc)
Description
Un récepteur est constitué de trois sous-blocs suivant :
Description détaillée du fonctionnement
L'implémentation (src/telecom/recepteur.cc) réalise les opérations suivantes :
- Note
- Dans une future version, les étapes 3a, 3b et 3c seront fusionnées en un seul filtre d'interpolation polyphase, basé sur le filtre de mise en forme.
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);
RécepteurConfig rc;
rc.lien non trouvé : [structtsd_1_1telecom_1_1_r_xC3_xA9cepteur_config_1ad04b1e1a8ecb5d1ef54eb253c328b57a]format = ec.lien non trouvé : [structtsd_1_1telecom_1_1_xC3_x89metteur_config_1ae100290dc28b30ce1876de55c758d0bc]format;
soit rx = récepteur_création(rc);
// 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);
// Note : flush du signal (car le récepteur réagit avec du retard)
soit trames = rx->step(iq | Veccf::zeros(2000));
Figures f;
f.subplot(141).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(142).plot(data.array(), "|go" , "Données envoyées" );
f.subplot(143).plot(iq, "-m" );
f.gcf().titre( "Trame modulée (en-tête + données)" );
si(!trames.empty())
f.subplot(144).plot(trames[0].bs.array(), "|go", "Données décodées");

Voir aussi
émetteur_création(), détecteur_création()