Bruit de quantification pour un échantillonnage cohérent - bruit de phase?

9

Mise à jour: Voir les pensées ajoutées au bas de ce post.


Dans des conditions d'échantillonnage générales non limitées par ce qui est décrit ci-dessous (signal non corrélé à l'horloge d'échantillonnage), le bruit de quantification est souvent estimé comme une distribution uniforme sur un niveau de quantification. Lorsque deux CAN sont combinés avec des trajets I et Q pour créer l'échantillonnage d'un signal complexe, le bruit de quantification a à la fois des composantes de bruit d'amplitude et de phase comme simulé ci-dessous. Comme illustré, ce bruit a une distribution triangulaire lorsque les composantes I et Q contribuent de manière égale à l'amplitude et à la phase, par exemple lorsqu'un signal est à un angle de 45 °, et uniforme lorsque le signal est sur l'axe. Cela est attendu car le bruit de quantification pour chaque I et Q n'est pas corrélé, de sorte que les distributions convolueront lorsqu'elles contribuent toutes deux au résultat de sortie.

La question qui se pose est de savoir si cette distribution du bruit de phase change significativement pour les cas d'échantillonnage cohérent (supposons que l'horloge d'échantillonnage elle-même ait un bruit de phase bien supérieur donc pas un facteur)? Plus précisément, j'essaie de comprendre si un échantillonnage cohérent réduira considérablement le bruit de phase lié à la quantification. Cela serait directement applicable à la génération de signaux d'horloge, où la cohérence serait facilement maintenue.

Considérons à la fois des signaux réels (un ADC) ou des signaux complexes (deux ADC; un pour I et un pour Q décrivant ensemble un seul échantillon complexe). Dans le cas de signaux réels, l'entrée est une onde sinusoïdale pleine échelle et le terme de phase est dérivé du signal analytique; la gigue liée aux changements du passage par zéro d'une tonalité sinusoïdale serait un exemple du bruit de phase résultant pour un signal réel. Dans le cas de signaux complexes, l'entrée est une pleine échelle UNEejωt , où les composantes réelle et imaginaire seraient chacune des ondes sinusoïdales à pleine échelle.

Ceci est lié à cette question où l'échantillonnage cohérent est bien décrit, mais le bruit de phase en particulier n'a pas été mentionné:

Échantillonnage cohérent et distribution du bruit de quantification

Pour décrire plus clairement les composantes du bruit AM et PM induit, j'ai ajouté le graphique ci-dessous pour le cas de la quantification complexe montrant un vecteur complexe en temps continu à un instant d'échantillonnage donné, et l'échantillon quantifié associé sous la forme d'un point rouge, en supposant linéaire distribution uniforme des niveaux de quantification des parties réelles et imaginaires du signal.

entrez la description de l'image ici

Zoom sur l'emplacement où la quantification se produit dans le graphique ci-dessus pour illustrer l'erreur d'amplitude induite et l'erreur de phase:

entrez la description de l'image ici

Ainsi donné un signal arbitraire

s(t)=une(t)ejωt=une(t)cos(ωt)+june(t)péché(ωt)=je(t)+jq(t)

Le signal quantifié est le point de distance le plus proche donné par

sk=jek+jqk

et q k représentent les niveaux I et Q quantifiés, chacun étant cartographié selon:jekqk

Q{X}=ΔXΔ+12

représente la fonction de plancher et Δ représente un niveau de quantification discret.()Δ

jek=Q{je(tk)}qk=Q{q(tk)}

L'erreur d'amplitude est t k est le moment où s ( t ) a été échantillonné pour générer s k .|s(tk)|-|sk|tks(t)sk

L'erreur de phase est où * représente le conjugué complexe.arg{s(tk)}-arg{sk}=arg{s(tk)(sk)}

La question pour ce post est quelle est la nature de la composante de phase lorsque l'horloge d'échantillonnage est proportionnelle (un multiple entier) au signal d'entrée?

Pour vous aider, voici quelques distributions simulées des erreurs d'amplitude et de phase pour le cas de quantification complexe avec une quantification de 6 bits sur I et Q. Pour ces simulations, on suppose que le "vrai" signal réel est également susceptible d'être n'importe où dans une quantification secteur défini comme la grille illustrée dans le diagramme ci-dessus. Remarquez que lorsque le signal est le long de l'un des quadrants (soit tous les I soit tous les Q), la distribution est uniforme comme prévu dans le cas ADC unique avec des signaux réels. Mais lorsque le signal est le long d'un angle de 45 °, la distribution est triangulaire. Cela a du sens, car dans ces cas, le signal a des contributions égales I et Q qui sont chacune des distributions uniformes non corrélées; de sorte que les deux distributions s'avèrent triangulaires.

45 degrés avec quantification

Zoom avant de 45 degrés avec quantification

histogramme d'angle

histogramme de magnitude

Après avoir tourné le vecteur de signal à 0 °, les histogrammes de magnitude et d'angle sont beaucoup plus uniformes que prévu:

Angle de 0 degré avec quantification

histogramme d'angle à 0 °

histogramme de magnitude à 0 °


Mise à jour: Puisque nous avons encore besoin d'une réponse à la question spécifique (la réponse d'Olli ci-dessous a offert une bonne clarification sur les caractéristiques du bruit qui a conduit à ma mise à jour des densités de bruit triangulaires et uniformes, mais les caractéristiques du bruit de phase sous des conditions d'échantillonnage cohérentes sont encore insaisissables), je propose les réflexions suivantes qui peuvent susciter une réponse réelle ou de nouveaux progrès (notez que ce sont des pensées qui peuvent être erronées, mais dans l'intérêt d'obtenir une réponse que je n'ai pas encore):

Notez que dans des conditions d'échantillonnage cohérentes, la fréquence d'échantillonnage est un multiple entier de la fréquence d'entrée (et également verrouillé en phase). Cela signifie qu'il y aura toujours un nombre entier d'échantillons lorsque nous tournerons une fois dans le plan complexe pour un signal et un échantillonnage complexes, ou un nombre entier d'échantillons d'un cycle d'une sinusoïde pour un signal et un échantillonnage réels (ADC unique).

Et comme décrit, nous supposons le cas où l'horloge d'échantillonnage elle-même est de loin supérieure et n'est donc pas considérée comme une contribution. Par conséquent, les échantillons atterriront exactement au même endroit, à chaque fois.

En considérant le cas du signal réel, si nous ne nous préoccupions que des passages par zéro pour déterminer le bruit de phase, le résultat de l'échantillonnage cohérent ne serait qu'un décalage fixe mais constant du retard (bien que les fronts montant et descendant puissent avoir des retards différents lorsque la cohérence est un entier impair). De toute évidence, dans le cas d'échantillonnage complexe, nous sommes concernés par le bruit de phase à chaque échantillon, et je soupçonne que ce serait la même chose pour le cas réel également (je soupçonne que le retard d'un échantillon à tout instant par rapport à la "vérité" serait le composante de bruit de phase mais je suis confus si je compte deux fois quelle est également la différence d'amplitude ...) Si j'ai le temps, je simulerai cela car toute distorsion apparaîtra aux harmoniques entières du signal d'entrée étant donné la répétition du motif sur un cycle, et le test de la phase par rapport à l'amplitude serait la phase relative des harmoniques par rapport à la fondamentale - ce qui serait intéressant de voir via la simulation ou le calcul est si ces harmoniques (qui pour un signal réel auraient toutes des homologues conjugués complexes) somme à être en quadrature avec le fondamental ou en phase, et ainsi montré comme étant tout bruit de phase, tout bruit d'amplitude ou un composite des deux. (La différence entre un nombre pair d'échantillons et un nombre impair peut éventuellement affecter cela).

Pour le cas complexe, le graphique d'Olli, qui a été réalisé avec un nombre proportionnel d'échantillons, peut ajouter des informations supplémentaires s'il a montré l'emplacement de l'échantillon sur la "vérité" qui est associée à chaque échantillon quantifié montré. Encore une fois, je vois la possibilité d'une différence intéressante s'il y a un nombre impair ou pair d'échantillons (son graphique était pair et j'observe la symétrie qui en résulte, mais je ne vois pas plus loin ce que cela peut faire pour le bruit de phase par rapport au bruit d'amplitude). Ce qui me semble clair cependant, c'est que les composantes de bruit dans les cas réels et complexes n'existeront qu'aux harmoniques entières de la fréquence fondamentale lorsque l'échantillonnage est cohérent. Donc, même si le bruit de phase peut toujours exister comme je le pense, sa localisation aux harmoniques entières est beaucoup plus propice à être éliminée par un filtrage ultérieur.

(Remarque: cela s'applique à la génération de signaux d'horloge de référence de haute pureté spectrale.)

Dan Boschen
la source
2
j'aimerais que vous soyez plus explicite mathématiquement sur la vraie question.
robert bristow-johnson
Fs=NFsjegFsFsjeg
J'accepte de rbj. Qu'entendez-vous par distribution phase-amplitude? Je crois en mathématiques. un modèle sur le problème aidera à le résoudre. En outre, peut être plus précis, comment décomposeriez-vous le bruit de quantification en amplitude et en phase?
Maximilian Matthé
1
S'agit-il de signaux arbitraires auxquels il est fait allusion dans le texte ou de signaux spécifiquement sinusoïdaux comme le suggèrent les descriptions mathématiques? Le cas est grandement simplifié si l'on ne considère que les signaux sinusoïdaux, mais cela peut ne pas refléter le comportement des signaux du monde réel. Dans le cas correspondant aux signaux sinusoïdaux, l'erreur de quantification est périodique et se traduit par une erreur de phase périodique. Ce type de corrélation n'apparaîtrait pas dans un histogramme, mais il est probablement important en termes de description de la "nature de la composante de phase" (vous entendez par là l'erreur de phase, n'est-ce pas?).
houblon
1
J'ai également mis à jour la question pour clarifier que c'est pour la génération de signal d'horloge, au cas où vous voudriez garder votre dernier paragraphe synchronisé (vous avez suggéré que c'était pour la mesure).
Dan Boschen

Réponses:

5

J'ai un doute sur (Edit: cela a été retiré de la question plus tard):

On peut raisonnablement supposer que la distribution de ces composantes de bruit AM et PM est uniforme tant que le signal d'entrée n'est pas corrélé à l'horloge d'échantillonnage

signal(t)=cos(t)+jpéché(t)
quunentjeze_sjegnunel(t)=rond(Ncos(t))N+j×rond(Npéché(t))N

1/NN=5

Trace de signal et sa quantification
N=5unesignal(t)+(1-une)quunentjeze_sjegnunel(t)une=[15,25,35,45].

L'erreur dans la phase due à l'erreur de quantification est:

phunese_error(t)=un bronzage(Je suis(quunentjeze_sjegnunel(t)),(quunentjeze_sjegnunel(t)))-un bronzage(Je suis(signal(t)),(signal(t)))=un bronzage(rond(Npéché(t)),rond(Ncos(t)))-un bronzage(Npéché(t),Ncos(t))=un bronzage(rond(Npéché(t)),rond(Ncos(t)))-mod(t-π,2π)+π

Soustraire des phases encapsulées est risqué mais cela fonctionne dans ce cas.

Erreur de phase
phunese_error(t)N=5

tphunese_error(t),phunese_error(t)

NN,Nles distributions des erreurs I et Q sont uniformes et les erreurs de phase et d'amplitude sont des nombres pseudo-aléatoires provenant de distributions qui dépendent de la phase du signal. La dépendance à la phase est là car la grille de quantification rectangulaire a une orientation.

N,arcsinααα+π/2

[(1/2,1/2),(-1/2,1/2),(-1/2,-1/2),(1/2,-1/2)]

La rotation de ces coordonnées ou leur projection équivalente sur les axes d'erreur de phase proportionnelle et d'erreur de magnitude proportionnelle donne à la fois la même fonction de densité de probabilité linéaire par morceaux à sommet plat avec des nœuds:

[cos(α)2-péché(α)2,cos(α)2+péché(α)2,-cos(α)2+péché(α)2,-cos(α)2-péché(α)2]=[2cos(α+π/4),2péché(α+π/4),-2cos(α+π/4),-2péché(α+π/4)]

Noeuds du PDF
αα{-π,-π/2,0,π/2,π}α{-3π/4,-π/4,π/4,3π/4}N2/22/2arcsin

Aux phases intermédiaires, le PDF ressemble par exemple à ceci:

PDF intermédiaire
α=π/8.

|cos(α)||péché(α)|cos2(α)/12+péché2(α)/12=1/12,α

Il peut y avoir des combinaisons "pseudo-chanceuses" de phase initiale et un rapport de nombre rationnel de la fréquence de la sinusoïde complexe et de la fréquence d'échantillonnage qui ne donnent qu'une petite erreur pour tous les échantillons de la séquence répétée. En raison des symétries des erreurs observées sur la figure 1, dans le sens d'erreur absolue maximale, ces fréquences sont avantageuses pour lesquelles le nombre de points visités sur le cercle est un multiple de 2, car la chance (faible erreur) est nécessaire à seulement la moitié des points. L'erreur sur les autres points est un double de ce qu'ils sont sur les premiers, avec des flips de signe. Au moins les multiples de 6, 4 et 12 ont un avantage encore plus grand. Je ne sais pas quelle est la règle exacte ici, car il ne semble pas s'agir d'être un multiple de quelque chose. Il' s quelque chose sur les symétries de grille combinées avec l'arithmétique modulo. Néanmoins, les erreurs pseudo-aléatoires sont déterministes, donc une recherche exhaustive révèle les meilleurs arrangements. Trouver les meilleures dispositions dans le sens d'erreur absolue de la moyenne quadratique (RMS) est le plus simple:

Erreur absolue RMS dans les arrangements pseudo-chanceuxDétail
N1/6/N,N=2k-1,k+1

12

{(0,±112),(±112,0),(±97,±56),(±56,±97)}112.00297611139371

-91,5

Pour obtenir une erreur de quantification absolue RMS faible, les fréquences n'ont pas à passer par les points dans l'ordre comme dans les phases approximatives [0,1,2,3,4,5,6,7,8,9,dix,11]2π/121/125/12[0,5,dix,3,8,1,6,11,4,9,2,7]2π/12

π/23π/3

Erreur absolue RMS dans les arrangements de pseudo-chance pour une grille rectangulaire non carrée avec coefficient d'échelle sqrt (3)
3

Notamment, pour un oscillateur 8 bits avec 30 points sur le cercle, la plus petite erreur absolue RMS possible est de -51,3 dB sur la grille carrée et de -62,5 dB sur la grille rectangulaire non carrée, où l'erreur absolue RMS la plus faible la séquence pseudolucky a une erreur:

Erreur dans la deuxième séquence
3

Je n'ai aucune expérience pratique des signaux d'horloge IQ, donc je ne suis pas sûr de ce qui compte. Avec la génération de signaux d'horloge, en utilisant un convertisseur numérique-analogique (DAC), je soupçonne qu'à moins que de bons arrangements pseudolucky soient utilisés, il est préférable d'avoir un plancher de bruit blanc plus bas que d'avoir un spectre de bruit harmonique avec un plus haut des pointes qui proviennent d'une séquence répétée d'erreur de quantification (voir Échantillonnage cohérent et distribution du bruit de quantification ). Ces pics spectraux, tout comme le bruit blanc, pourraient fuir via la capacité parasite et avoir des effets indésirables dans d'autres parties du système ou affecter la compatibilité électromagnétique (CEM) de l'appareil. Par analogie, la technologie à spectre étalé améliore la CEM en transformant les pointes spectrales en un plancher de bruit de crête plus faible.

1M100

// Compile with g++ -O3 -std-c++11

#include <stdio.h>
#include <math.h>
#include <complex>
#include <float.h>
#include <algorithm>

// N = circle size in quantization steps
const int maxN = 127;
// M = number of points on the circle
const int minM = 1; 
const int maxM = 100;
const int stepM = 1;
// k = floor(log2(N))
const int mink = 2;
const double IScale = 1; // 1 or larger please, sqrt(3) is very lucky, and 1 means a square grid

typedef std::complex<double> cplx;

struct Arrangement {
  int initialI;
  int initialQ;
  cplx fundamentalIQ;
  double fundamentalIQNorm;
  double cost;
};

int main() {
  cplx rotation[maxM+1];
  cplx fourierCoef[maxM+1];
  double invSlope[maxM+1];
  Arrangement bestArrangements[(maxM+1)*(int)(floor(log2(maxN))+1)];
  const double maxk(floor(log2(maxN)));
  const double IScaleInv = 1/IScale;
  for (int M = minM; M <= maxM; M++) {
    rotation[M] = cplx(cos(2*M_PI/M), sin(2*M_PI/M));
    invSlope[M] = tan(M_PI/2 - 2*M_PI/M)*IScaleInv;
    for (int k = 0; k <= maxk; k++) {
      bestArrangements[M+(maxM+1)*k].cost = DBL_MAX;
      bestArrangements[M+(maxM+1)*k].fundamentalIQNorm = 1;
    }
  }
  for (int M = minM; M <= maxM; M += stepM) {
    for (int m = 0; m < M; m++) {
      fourierCoef[m] = cplx(cos(2*M_PI*m/M), -sin(2*M_PI*m/M))/(double)M;
    }
    for (int initialQ = 0; initialQ <= maxN; initialQ++) {
      int initialI(IScale == 1? initialQ : 0);
      initialI = std::max(initialI, (int)floor(invSlope[M]*initialQ));
      if (initialQ == 0 && initialI == 0) {
    initialI = 1;
      }
      for (; initialI*(int_least64_t)initialI  <= (2*maxN + 1)*(int_least64_t)(2*maxN + 1)/4 - initialQ*(int_least64_t)initialQ; initialI++) {
    cplx IQ(initialI*IScale, initialQ);
    cplx roundedIQ(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
        cplx fundamentalIQ(roundedIQ*fourierCoef[0].real());
    for (int m = 1; m < M; m++) {
      IQ *= rotation[M];
      roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
          fundamentalIQ += roundedIQ*fourierCoef[m];
    }
    IQ = fundamentalIQ;
    roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
    double cost = norm(roundedIQ-IQ);
    for (int m = 1; m < M; m++) {
      IQ *= rotation[M];
      roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
      cost += norm(roundedIQ-IQ);
    }
    double fundamentalIQNorm = norm(fundamentalIQ);
    int k = std::max(floor(log2(initialI)), floor(log2(initialQ)));
    //  printf("(%d,%d)",k,initialI);
    if (cost*bestArrangements[M+(maxM+1)*k].fundamentalIQNorm < bestArrangements[M+(maxM+1)*k].cost*fundamentalIQNorm) {
      bestArrangements[M+(maxM+1)*k] = {initialI, initialQ, fundamentalIQ, fundamentalIQNorm, cost};
    }
      }
    }
  }
  printf("N");
  for (int k = mink; k <= maxk; k++) {
    printf(",%d-bit", k+2);
  }
  printf("\n");
  for (int M = minM; M <= maxM; M += stepM) {
    printf("%d", M);
    for (int k = mink; k <= maxk; k++) {
      printf(",%.13f", sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
    }
    printf("\n");
  }

  printf("bits,M,N,fundamentalI,fundamentalQ,I,Q,rms\n");
  for (int M = minM; M <= maxM; M += stepM) {
    for (int k = mink; k <= maxk; k++) {
      printf("%d,%d,%.13f,%.13f,%.13f,%d,%d,%.13f\n", k+2, M, sqrt(bestArrangements[M+(maxM+1)*k].fundamentalIQNorm), real(bestArrangements[M+(maxM+1)*k].fundamentalIQ), imag(bestArrangements[M+(maxM+1)*k].fundamentalIQ), bestArrangements[M+(maxM+1)*k].initialI, bestArrangements[M+(maxM+1)*k].initialQ, sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
    }
  }
}

Exemple de sortie décrivant le premier exemple de séquence trouvé avec IScale = 1:

bits,M,N,fundamentalI,fundamentalQ,I,Q,rms
8,12,112.0029761113937,112.0029761113937,0.0000000000000,112,0,0.0000265717171

Exemple de sortie décrivant le deuxième exemple de séquence trouvé avec IScale = sqrt(3):

8,30,200.2597744568315,199.1627304588310,20.9328464782995,115,21,0.0007529202390

Code d'octave pour tester le premier exemple de séquence:

x = [112+0i, 97+56i, 56+97i, 0+112i, -56+97i, -97+56i, -112+0i, -97-56i, -56-97i, 0-112i, 56-97i, 97-56i];
abs(fft(x))
20*log10(abs(fft(x)(6)))-20*log10(abs(fft(x)(2)))

Code d'octave pour tester le deuxième exemple de séquence:

x = exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i);
y = real(x)/sqrt(3)+imag(x)*i;
z = (round(real(y))*sqrt(3)+round(imag(y))*i)/200.2597744568315;
#Error on IQ plane
star = z-exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i)/200.2597744568315;
scatter(real(star), imag(star));
#Magnitude of discrete Fourier transform
scatter((0:length(z)-1)*2*pi/30, 20*log10(abs(fft(z))/abs(fft(z)(2)))); ylim([-120, 0]);
#RMS error:
10*log10((sum(fft(z).*conj(fft(z)))-(fft(z)(2).*conj(fft(z)(2))))/(fft(z)(2).*conj(fft(z)(2))))
Olli Niemitalo
la source
Très agréable. Chaque axe I et Q de magnitude est bien approché comme uniforme; Je me demande si nous voyons une convolution de deux distributions uniformes - avez-vous essayé de prendre un histogramme de votre résultat? Je suppose aussi avec cette logique non vérifiée que j'utilise que la distribution d'amplitude pour le signal complexe peut également être triangulaire? Avez-vous une idée de ce qui peut arriver lorsque l'horloge d'échantillonnage est proportionnée?
Dan Boschen
Je mettrai cependant à jour la question pour ne pas suggérer qu'elle soit uniforme!
Dan Boschen
voir ma mise à jour - J'ai simulé et confirmé mes soupçons avec des distributions triangulaires. Il me semble que la distribution variera entre uniforme et triangulaire selon l'angle (voir ma mise à jour pour l'explication); donc si notre angle est uniformément distribué, nous devons nous retrouver avec une distribution arrondie globale.
Dan Boschen
1
@OlloNiemitalo Très cool. Avez-vous une meilleure idée de ce qui se passerait (en particulier pour les composantes d'erreur de phase) si nous limitons les emplacements sur le cercle unitaire à un échantillonnage proportionné; ce qui signifie un multiple fixe de la vitesse de rotation d'un seul ton complexe? À mesure que le taux d'échantillonnage augmente, cela se rapproche de ce que vous avez montré. Mais comment pourrions-nous décrire mathématiquement les composantes de la phase par rapport à ce taux lorsque nous limitons les choix à la mesure?
Dan Boschen
1
Merci d'avoir mâché cela et d'avoir donné des indications sur la réponse. Remarquez que si le rapport est un multiple entier pair, le motif se répétera deux fois par cycle, puis se multipliera plus rapidement pour des multiples divisibles par une puissance plus élevée de 2. Ce modèle, tel que déterminé à partir de la théorie des nombres modulo, est là où la réponse peut en effet être
Dan Boschen