Amor Gignit Amorem Forum
Niet ingelogd [inloggen ]
Ga naar beneden

Printbare versie  
Auteur: onderwerp: Jitter in analoog-digitaal omzetters.
dekkersj
Junior Member
**




Posts: 48
Registreerde: 28-10-2012
lid Is Offline


[*] Gepost op 27-3-2013 op 08:35 PM
Jitter in analoog-digitaal omzetters.


Het idee is om een signaal (bijvoorbeeld een 11025 Hz sinus met daarbij een 229 Hz LSB toggelende sinus) te "verpesten" met jitter. En dan kijken wat het doet in het spectrum. Ik heb daarbij de tijd verjitterd. Op iedere klokslag kan je immers de functiewaarde van die 11025 Hz + 229 Hz sinus uitrekenen en dat wordt dan het rechterkanaal. Het linkerkanaal verschuif ik de tijd volgens een Gaussische verdeling met een zekere variantie. En dan natuurlijk de functiewaarde uitrekenen bij de nieuwe tijd, de verjitterde tijd.

In MatLab ziet dat er zo uit:

Code:
clear; pack; SampleRate = 44100; BitDepth = 24; h = waitbar(0,'Please wait...(until this baby disappears)'); t = 0:1./SampleRate:5; PiekPiekTimeJitter = 100e-9; SigmaKwadraat = PiekPiekTimeJitter; % for n = 1:1:length(t); tJitter(n) = t(n) + random('Normal', 0, SigmaKwadraat); end %f = SampleRate./4; f = 11025; %AdBFS = -60; %A = 10.^(AdBFS./20); A = 0.5; c = A.*sin(2.*pi.*f.*tJitter) + (2.^(-16)).*sin(2.*pi.*(SampleRate./192).*tJitter); c2 = A.*sin(2.*pi.*f.*t) + (2.^(-16)).*sin(2.*pi.*(SampleRate./192).*t); % ft = c; gt = c2; wavwrite([ft' gt'],SampleRate,BitDepth,'xxxx/temp/SingleTone11025Hz_LSBtoggle229_6875Hz'); close(h)

, waarbij ik niet helemaal zeker ben van de waarde die ik moet invullen bij "SigmaKwadraat" in:
random('Normal', 0, SigmaKwadraat)

Hier heb ik 3 waarden voor gekozen:
* 100 ps
* 500 ps
* 100 ns (!)

Het spectrum bij 100e-12 (links is verjitterd en rechts is zuiver):



Het spectrum bij 500e-12 (links is verjitterd en rechts is zuiver):



Het spectrum bij 100e-9 (links is verjitterd en rechts is zuiver):



Wat opvalt is dat de ruisvloer omhoog komt. Dus geen spikes of troep, maar gewoon ruis. Ergens is dat logisch, de intersymbool fouten zijn random en dat zorgt voor ruis. En omdat de tijd Gaussisch verruisd is, is de ruis ongecorreleerd met het signaal. Een vorm van dither eigenlijk...

Het wordt wat interessanter als ik de tijd niet Gaussisch verruis, maar deterministisch. De for-loop wordt dan:

Code:
for n = 1:1:length(t); % tJitter(n) = t(n) + random('Normal', 0, SigmaKwadraat); tJitter(n) = t(n) + SigmaKwadraat.*sin(2.*pi.*(SampleRate./10000).*t(n)); end

De sampletijd is ongeveer 22,7 microseconden en ik kan dus middels de variabele "SigmaKwadraat" de tijd verschuiven. Maximaal 10 microseconden en dan is de klok toch heel goed fout!

Merk op dat ik steeds 24 bits bestanden gebruik, zo kan ik diep kijken en isoleer ik het probleem dat van de klok alleen af komt.

Amplitude = 100 p
Eigenlijk is de tijdjitter dus 200 ps piek-piek, omdat de amplitude 100 p is.

De 11025 Hz wordt in amplitude gedemoduleerd:


Dit is het signaal dat je aan weerszijden van de 11025 Hz zult zien als je het bestand wat hierboven staat in een audio editor laat zien. Mijn plaatje is relatief tov de amplitude van die 11025 Hz.

Amplitude = 500 p
Tijdjitter dus 1 ns piek-piek.

De 11025 Hz in amplitude gedemoduleerd:



Amplitude = 100 n
Tijdjitter dus 200 ns piek-piek.

De 11025 Hz in AM gedemoduleerd:



Hier ook een FM demodulatie:



Amplitude = 1 micro
Tijdjitter dus 2 micros piek-piek.

De 11025 Hz AM gedemoduleerd:



En in FM gedemoduleerd:



Amplitude = 10 micro
Tijdjitter = 20 microseconden piep-piek, bijna een hele klokslag.

De 11025 AM gedemoduleerd:



En FM gedemoduleerd:



Omdat de verjittering in de tijd slechts heel langzaam gebeurt, is er relatief weinig aan de hand. Het enige wat je kunt zeggen is dat het gewenste signaal er uitkomt zoals het hoort en daarbovenop doet zich een modulatie voor met de stoorsignalen, in eerste instantie als AM en als het te gortig wordt ook als FM. In dit voorbeeld is 1 deterministisch signaal gebruikt dat bij uitstek geschikt is voor analyse.

Dit thema zou ik graag verder onderzoeken met meerdere signalen ipv 1 stoorsignaal met 1 frequentie.

Dan nu het hoofdstuk "harmonische vervorming". Deze blijkt niet te ontstaan, dwz als ik een ingangssignaal van fs/12 = 3675 Hz beschouw komen er geen producten op 2*3675 = 7350 Hz en 3*3675 = 11025 Hz etc. Om dit te laten zien heb ik het spectrum bepaald van een fs/12 ingangssignaal dat ik "verjitter" in de tijd met een fs/10000 signaal, de piek-piek tijdjitter = 20 microseconden (!):



Zoals je ziet, geen spoortje vervorming tgv niet-lineariteit te vinden.

Dit is dus bij een stoorsignaal dat relatief laagfrequent is tov de "carrier". 4,41 Hz als stoorsignaal versus 3675 Hz als ingangssignaal. Een collega opperde om een stoorsignaal dichtbij de carrier te kiezen (hij had ook al eens gespeeld met vergelijkbare simulaties...). Dus kies ik in plaats van fs/10000 een stoorsignaal met een frequentie van fs/14 = 3150 Hz. Om direct met de deur in huis te vallen (piek-piek tijdjitter = 20 microseconden (!)):



Waarbij ik wat markers geplaatst heb. Ze zijn allen terug te voeren op 3675 +/- n*3150. Dus componenten op 3675 + 3150 = 6825 Hz, 3675 + 2*3150 = 9975 Hz etc. Maar ook 3675 - 3150 = 525 Hz, 3675 - 2*3150 = -2625 Hz en dit spiegelt naar +2625 Hz. etc etc. Geen harmonischen van de 3675 Hz component te vinden. Op het originele signaal vindt geen harmonische vervorming plaats.

De oplettende kijker zal 2 op het eerste gezicht vreemde frequentiecomponenten opgemerkt hebben, ik zoom in vlak voor de 3675 Hz carrier:


Dit zijn de componenten op 2920.3 Hz en op 3379.7 Hz. Deze komen in principe van hetzelfde proces dat bij de carrier een rol speelt. Ik heb nog een carrier meegestuurd, namelijk een sinus met een frequentie van fs/192 = 229.7 Hz. 229.7 + 3150 = 3379.7 en 229.7 - 3150 = -2920.3 Hz die terugvouwt naar +2920.3 Hz. Daarmee is de cirkel rond.

Merk overigens op dat het proces dat ik gesimuleerd heb veel weg heeft van jitter bij de AD conversie. Hoe het bij DA conversie werkt, weet ik nog niet maar het zal vergelijkbaar zijn.

Er is overigens wel een lineair verband te ontdekken bij de simulaties. Als ik het geval neem van de laagfrequente jitter, kom ik voor de AM modulatie op een overdracht van 8 nV/ps en de FM modulatie heeft een overdracht van 22 pV/ps. Dus een jittersignaal met amplitude A = 100 ps, resulteert in een 800 nV (grelateerd aan 1 V) stoorsignaal tov het uitgangssignaal, ofwel @ -122 dBFS. De FM component zal op 2,2 nV ofwel -173 dBFS zitten. Dit thema wil ik ook nog verder onderzoeken. De gevonden overdracht is geldig voor de frequentie die ik beschouwd heb en ik zou daar meer van willen weten.

Groet,
Jacco
Bekijkt gebruikers profiel Bekijk deze gebruiker zijn posts

  Ga naar boven

Powered by XMB
XMB Forum Software © 2001-2012 De XMB Group
[Tekens: 17] [PHP: 50.8% - SQL: 49.2%]