packet_receiver_new
Création d'un récepteur de trame.
Namespace: dsp::telecom
Prototype
sptr<PacketReceiver> packet_receiver_new(const PacketReceiverConfig &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.format.entete = code_Barker(13);
// Nombre de bits utiles
ec.format.nbits = 16;
// Facteur de sur-échantillonnage = 8
ec.format.modulation.fsymb = 1;
ec.format.modulation.fe = 8;
// BPSK, avec filtre SRRC (60 % de dépassement)
ec.format.modulation.forme_onde = forme_onde_bpsk(SpecFiltreMiseEnForme::rcs(0.6));
// Instanciation de l'émetteur
soit tx = émetteur_création(ec);
RécepteurConfig rc;
rc.format = ec.format;
soit rx = récepteur_création(rc);
// 16 bits alternés (101010...)
soit data = 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.format.entete.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");
See also
émetteur_création(), détecteur_création()