J'ai un simple démodulateur BPSK. Très simplement, le signal entre et est divisé en deux branches, une pour I et une pour Q.
- La branche I est mélangée à une onde sinusoïdale du porteur, et la branche Q mélangée à l'onde cosinusoïdale du porteur.
- Ensuite, chacune des sorties est convolutée avec un filtre adapté (dans ce cas, un cosinus surélevé, qui a initialement formé une impulsion sur mes bits transmis).
- Maintenant, si je combine les deux sorties et que je prends la grandeur des deux (I ^ 2 + Q ^ 2), j'obtiens l'enveloppe.
- De là, je cherche des pics, et choisis leurs indices.
- J'utilise ensuite les mêmes indices que ceux que j'ai obtenus de (4), et échantillonne mes I et Q à ces mêmes indices. Maintenant, j'ai des valeurs de softbit complexes, je suis capable de corriger les décalages de phase ou de fréquence et je peux prendre des décisions difficiles à partir de là. (J'ai le luxe de post-traitement btw).
Cette technique fonctionnait bien avec un SNR élevé à moyen. Le problème est qu'avec un SNR plus faible (et peut-être plusieurs trajets), je ne sais pas comment effectuer la puce (4). Le problème est qu'au lieu d'un pic dans les enveloppes correspondant à un bit, j'ai maintenant plusieurs pics, et le "pic picking" ne fonctionnera pas parce qu'il y a tellement de choix ... comment ce problème est-il atténué? Cela semble être un goulot d'étranglement parce que si je ne peux pas dire où est mon «bit», je ne peux pas avancer. Des pensées?
Toute aide est appréciée, les mathématiques sont bonnes, bien que je demande à l'avance que les réponses soient plus pesudo-code / concept. Merci!
Edit: Grâce aux commentaires de Dilip, je dois également ajouter que je peux clairement voir «l'énergie» dans l'enveloppe quand il y a un signal et il n'y en a pas. (c'est-à-dire avant l'arrivée de mon signal), cela m'amène donc à penser que je devrais pouvoir synchroniser / démoder et que ce n'est pas un problème de SNR uniquement ...
Réponses:
J'ai fait quelque chose de similaire dans MATLAB. Dans ma cause, j'ai utilisé une méthode de récupération d'horloge de porte précoce / tardive pour obtenir une estimation du décalage entre la synchronisation des symboles de transmission et de réception. Cette méthode utilise 3 échantillons par symbole - un à l'heure d'échantillonnage optimale, un qui est retardé de 1 échantillon et un qui est avancé d'un échantillon. Cela fonctionne bien pour les signaux d'activation / désactivation, car il n'y a pas de partie négative du signal, mais les méthodes ci-dessous, je pense, fonctionneront mieux pour les signaux bipolaires.
Une autre méthode est l' algorithme Muller et Mueller , qui utilise 1 échantillon par symbole. Cela utilise l'équationen=(ynˆyn−1)−(ynyˆn−1) , où en est l'erreur, yn−1 et yn sont les exemples de symboles précédents et actuels, et ynˆ et yˆn−1 sont les sorties de décision (-1 ou +1 dans votre cas). M&M exige que le transporteur soit d'abord récupéré.
Un troisième algorithme, très similaire à celui ci-dessus, est l' algorithme Gardner . Dans cet algorithme, le signal d'erreur esten=(yn−yn−T)yn−T/2 , où yn−T est l'exemple d'un symbole dans le passé, et yn−T/2 est la moitié d' un symbole dans le passé. Cela nécessite 2 échantillons par symbole, mais n'est pas sensible au support.
Le détecteur M&M examine les pics , tandis que la méthode Gardner examine le pic et le passage par zéro pour obtenir des estimations de synchronisation.
Dans tous les cas, vous prendrez l'estimation de l'erreur, l'introduirez dans un filtre de boucle dont la sortie est ensuite utilisée pour avancer ou retarder l'horloge symbole pour la prochaine estimation de synchronisation. Le filtre en boucle peut être considéré comme un filtre passe-bas, un filtre de lissage ou simplement comme une pondération des estimations plus anciennes que les plus récentes. Le filtre de boucle contrôle a) la vitesse à laquelle la synchronisation converge et b) la quantité de bruit qui affecte les estimations.
Une autre option consiste à utiliser un égaliseur qui supprimera ensuite le retard de synchronisation du signal. Cela peut également aider pour les signaux très bruyants, je crois.
J'ai utilisé ces ressources pour former cette réponse: http://www.comlab.hut.fi/opetus/333/2004_2005_slides/CarrierTimingRecovery.pdf http://mobiledevdesign.com/tutorials/radio_matched_filtering_timing/
Cet article est particulièrement utile: http://rfdesign.com/images/archive/0901Litwin32.pdf Voici un lien vers l'article original de Gardner de 1986: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber= 1096561 & tag = 1
Remarque En général, cette zone est appelée "récupération d'horloge et de données" ou "CDR". Plus précisément, nous avons affaire à la "synchronisation des symboles". Ces termes devraient vous aider dans votre recherche.
la source