Comment déterminer où échantillonner pour la démodulation des signaux BPSK?

8

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.

  1. 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.
  2. 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).
  3. Maintenant, si je combine les deux sorties et que je prends la grandeur des deux (I ^ 2 + Q ^ 2), j'obtiens l'enveloppe.
  4. De là, je cherche des pics, et choisis leurs indices.
  5. 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 ...

Spacey
la source
@DilipSarwate Oui dans ce cas, je connais exactement mon Tbps. (Alors oui, le récepteur connaîtra l'espacement exact entre mes bits) - mais comment atteindre ce premier indice de bits? ... BTW, je ne sais pas ce que ça vaut, mais je peux clairement voir «l'énergie» dans l'enveloppe quand il y a un signal et il n'y a pas de signal - et cela me porte à croire que mon SNR n'est pas si mauvais que je ne devrais pas pouvoir synchroniser / démoder ... (Merci pour les informations de balise, j'essaierai d'en ajouter plus).
Spacey
@DilipSarwate Hmm ... Je suis d'accord avec vous sur cette technique - ce que je ne sais pas, c'est où / comment ajuster ma fenêtre de valeur un bit de telle sorte que je puisse ensuite effectuer la technique dont vous parlez. Voyez-vous mon problème? Juste pour être sûr de bien vous comprendre: disons qu'il y a 10 échantillons / bit dans l'enveloppe. Ok, alors dites-vous de prendre toute l'enveloppe, de la diviser en 10 morceaux d'échantillon et de faire la moyenne de tous ceux-ci pour trouver où le pic devrait être?
Spacey
La synchronisation peut être un sujet très complexe. Pourriez-vous mettre un nombre sur les valeurs de SNR avec lesquelles vous testez? Qu'est-ce qui est «élevé», «moyen» et «faible»?
Jason R
@DilipSarwate Ok, nous disons la même chose. Maintenant, je comprends que sur toute cette moyenne, nous parions que nous pouvons atteindre l'indice d'échantillon optimal parce qu'il est en moyenne hors du bruit. Mais en présence de trajets multiples, peut-on compter sur une telle moyenne pour fonctionner? Le pic optimal ne glisserait-il pas avec le temps? Je suppose que c'est pourquoi vous devriez refaire cette technique de temps en temps ...
Spacey
@JasonR Je ne peux pas vous donner de chiffres SNR précis pour le moment, mais je peux essayer de les obtenir bientôt. (Même alors, comme je ne peux pas verrouiller les bits, aimeriez-vous une mesure basée sur l'enveloppe d'une manière ou d'une autre? ...) Pour l'instant, qualitativement, je peux dire que dans mon cas à fort SNR, je peux clairement voir un pic par intervalle de bits dans mes enveloppes sans ambiguïté, mais dans mes autres cas de SNR inférieurs (et éventuellement avec des trajets multiples), je peux voir que l'enveloppe a de nombreux pics pendant une durée d'un bit. (Cela étant dit, je peux clairement distinguer quand mon signal commence à regarder l'enveloppe).
Spacey

Réponses:

7

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^yn1)(yny^n1), où en est l'erreur, yn1 et yn sont les exemples de symboles précédents et actuels, et yn^ et y^n1sont 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=(ynynT)ynT/2, où ynT est l'exemple d'un symbole dans le passé, et ynT/2est 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.

gallamine
la source
Merci beaucoup! J'ai quelques questions de suivi parce que je pense que cela devient un scénario de poulet et d'oeuf: Pour tôt-tard - je ne comprends pas comment je peux utiliser 3 échantillons si je ne trouve pas mon temps d'échantillonnage optimal pour commencer ... J'ai besoin optimal, tôt , et tard - mais comment trouver l'optimal pour commencer? (Juste pour nous assurer que nous sommes sur la même page, nous parlons ici d'échantillonner l'enveloppe correctement?)
Spacey
1
Mohammed, pour ma mise en œuvre, nous avons fait deux choses: 1) nous commençons par une séquence d'entraînement de 1 et de 0 pour aider le tracker à se verrouiller et 2) nous avons fait une première supposition. Votre supposition initiale peut être complètement naïve (0e échantillon) ou vous pouvez établir une corrélation avec la séquence d'entraînement initiale pour obtenir une estimation initiale.
gallamine
De plus, suite de ce qui précède, vous connaissez approximativement le nombre d'échantillons / symbole, de sorte que chaque estimation de synchronisation de symbole suivante sera l'échantillon / symbole +/- le signal d'erreur hors du filtre de boucle.
gallamine
Merci - je vais essayer ça et vous faire savoir comment ça se passe. Pour Early-Late, vous parlez de l' enveloppe bien que correcte? Les échantillons early-ontime-late sont de l'enveloppe du signal? (c'est-à-dire, enveloppe = I ^ 2 + Q ^ 2). Je suis confus quant à ce à quoi ces y_n font exactement référence dans cet exemple - font-ils référence à l'enveloppe, ou font-ils simplement référence au je? Ou l'échantillon complexe (I + Q)?
Spacey
Je ne suis pas tout à fait sûr. Pour les méthodes M&M et Gardner, vous voulez regarder les signaux bipolaires. Donc, pour BPSK, vous ne voudriez pas mettre le signal au carré. Pour le détecteur de porte Early / Late, la mise au carré du signal ne causerait pas de problème, je ne pense pas. De plus, dans la pratique, ne corrigeriez-vous pas d'abord la phase, puis ignoreriez-vous le composant Q pour BPSK?
gallamine