Sida 2 av 2

Re: Generera frekvenser med hög upplösning?

Postat: 4 april 2016, 21:46:57
av YD1150
En AD9850 DDS-modul som klockar en 8-bit räknare (ex 74HC393) som får dela DDS:en utsignal med 256.
DDS:en ger utsignal på 12,8 - 25,6MHz ( de med 125MHz klocka ger typ 0,029Hz min stegstorlek i "naket tillstånd")
Dela 0,029Hz med 256 så blir det riktigt små steg :)
På köpet så förbättras fasbruset.

Re: Generera frekvenser med hög upplösning?

Postat: 4 april 2016, 21:53:30
av Micke_s
STM32 kanske inte räcker hela vägen, men det är en rätt så billig lösning för få 6ns upplösning.....

Vad ska fyrkansvågen användas till?

Re: Generera frekvenser med hög upplösning?

Postat: 4 april 2016, 22:01:21
av lillahuset
Hmmm, jag kanske tänkte lite fel där... Får fundera lite till. :oops:

Men det det handlar om är väl hur mycket jitter du kan leva med? Jag vet inte vad du ska driva men du har förmodligen jitter i resten av elektroniken som är mer än 6ns. Speciellt om din maxfrekvens är 100kHz. Det är mer än en faktor 1000 lägre än klockan. Att uppnå ditt krav på GENOMSNITTLIG upplösning bör inte vara något problem.

Vad är det du vill göra?

Re: Generera frekvenser med hög upplösning?

Postat: 4 april 2016, 22:52:50
av kodar-holger
När jag kör en timer, så blir det väl effektivt att jag bara delar ner klockfrekvensen.
Ja. Fast DDS är inte som att köra med timer. Du kan dela med 1679.52315456234, typ, och inte bara med 1679. Eller snarare är det väl så att du delar med 1679 ibland och 1680 ibland.

Om du tar ut fyrkantvåg direkt får du jitter. Men om du genererar sinus som du med analoga kretsar gör om till fyrkant (komparator) blir det bättre.

Exempel:
DDS bygger på att du har en fasaccumulator som man adderar värden till periodiskt.

Anta att din accumulator är 16 bitar lång, och att du var 100e nanosekund adderar 500. Då kommer du efter 100ns att ha värdet 500, efter 200 blir det 1000 o.s.v. till efter 13,2 us när du har värdet 36! Det här är viktigt. Vi har snurrat runt accumulatorn ett varv men inte kommit till 0. Det skulle man teoretiskt passerat efter 13,1072us. = 76293,9453125 ggr per sekund. I medeltal.
Hade vi adderat 501 istället hade den teoretiska periodtiden varit 65536/501*1E-7 = 13,081037924151696606786427145709 us = 76446,533203125 varv/sekund.

Tar man ut att accumulatorn wrappat som utsignal får man en växling varje gång man wrappat.

Med 16 bitar fasaccumulator får du alltså "bara" ca 150Hz upplösning i detta fall, men med 32-bitsaccumulator får du 0,002Hz. Räcker det?

För att generera sinus istället tar man lämpligt antal mest signifikanta bitar från accumulatorn till en sinustabell och matar detta i sin tur till en D/A. Lämpligt lågpassfilter på det.

Jag har gjort detta med en PIC för inte så länge sen men för betydligt lägre frekvenser. Koden bifogas, men om den kan vara till någon som helst vägledning för någon att förstå är väl tveksamt...
main.zip

Re: Generera frekvenser med hög upplösning?

Postat: 4 april 2016, 23:08:18
av RoPa
Hej Klas-Kenny,
en klocksignal på säg 50-100 kHz, med 6-7 siffrors upplösning.
som du skrev i första inlägget är INTE samma sak som i ditt senaste
en frekvens på 100 kHz har en periodtid på 10 µs. Jag vill kunna justera 1/100 000 av detta, alltså nere på 100 ps.
Det två helt olika saker.

Det första du skrev var att du ville ha en frekvens som 100.00,00Hz = 100kHz med sju värdesiffror.
Med en kristall på 20ppm får du på 100kHz med en variation på 2Hz, ska du ner till 7 siffror behöver du en noggranhet på 0,1ppm vilket är mellan stratum 3 och 2 (stratum 3 är 4,6ppm och stratum 2 är 0,016ppm)
Med andra ord så kommer du inte dit utan en kristallugn och en god kallibrering

Det andra du skrev handlar inte om noggrannhet utan om upplösning, vilket i sig är meningslöst utan noggrannhet om man inte anger över vilken tid som medelvärdet ska vara inom angiven gräns. Låt oss utgå från 1 sekund. = 5 siffror och vi är hemma med en vanlig kristall på 20ppm.
om du vill kunna ställa frekvensen med 1/100 000 del av en hertz på 100 000 Hz är det en upplösning på 0,000001Hz
Om du skulle ha nytta av detta behöver du ha samma noggrannhet och detskulle det kräva 1x10-10 och kräva en stratum 1 clocka med 1x10-11 (stratum 2 är som sagt "bara" 1,6x10-8).

Jag tror att du nu förstår att dina två krav inte är rimliga och inte heller förenliga.

Så vilken noggrannhet är det du egentligen vill ha och/eller behöver?
När du vet det kan vi hjälpas åt att hitta en lösning som ger det.

Som lillahuset skrev "vad är det du vill göra?"

Re: Generera frekvenser med hög upplösning?

Postat: 4 april 2016, 23:29:15
av Johan.o
Det verkar som att lösningen med DSS och dess fasaccumulator, som Kodar-holger förklarar är det som trådskaparen är ute efter.. tror jag.

Re: Generera frekvenser med hög upplösning?

Postat: 5 april 2016, 00:07:07
av RoPa
Tro jag inte, även om kodar-holgers DDs ger ett medelvärde som matematisk är inom
med 32-bitsaccumulator får du 0,002Hz
så kommer frekvensen att variera lika mycket som kristallens noggrannhet och 0,002Hz på 100.000Hz är 0,02ppm -> stratum 2

Med en kristall på 20ppm kommer det bli en frekvens med ett medelvärde som varierar med 2Hz vilket inte är förenligt med en noggrannhet på 0,002Hz.
Som att justera ett skjutmått på en gungande båt för att mäta avstånd till land, typ... skjutmåttet mäter på millimetern men "världen" rör sig med flera meter...

Re: Generera frekvenser med hög upplösning?

Postat: 5 april 2016, 07:13:16
av Klas-Kenny
>Vad ska du göra?
Okej. Jag har en videosignal för VGA-gränssnitt. Jag har dock inte tillgång till dess tillhörande klockor (och de är omöjliga att få tag på inom ramarna jag har att jobba med idag). Jag vill nu återskapa dessa klockor, och den svåra är då linjefrekvensen som ligger kring nämnda frekvenser.

Om denna frekvens då felar bara lite, så börjar bilden att driva i sidled, oönskat.
Jag har idag en funktionsgenerator med jag tror 8 siffror inställning som gör jobbet utmärkt, men ämnar ersätta denna.
Eftersom att generatorn av bildsignalen inte är perfekt så vet man aldrig exakt vilken frekvens som är den rätta. Därför är den absoluta exaktheten inte så intressant, jag är inte intresserad av vilken frekvens jag faktiskt får ut (mer än på ett ungefär) så länge jag kan skruva på den tills bilden står stilla. Stabiliteten är av samma anledning inte jättekritisk. Bildsignalen driver lite i frekvens så om min klocka också gör det så är det inte hela världen, behöver ändå justera den då och då.

Men vill kunna justera i dessa små steg, för att få bilden att stå helt stilla åtminstone en stund.

Det borde räcka gott med att medelvärdet av frekvensen stämmer bra. Är jittret allt för stort misstänker jag att bilden kommer att bli en aning förvrängd. Men så länge det inte är att varannan klockpuls är mycket större än den förra eller något åt det hållet så borde det vara ganska lugnt.

Tycker att DDS (färdig eller i mjukvara) låter som att det borde kunna göra jobbet, får kolla närmare på detta.

Re: Generera frekvenser med hög upplösning?

Postat: 5 april 2016, 08:43:35
av YD1150
Finns det tillgång till VGA-signalens synkpulser? De finns på separata pinnar i en VGA-kontakt.
Det går i så fall att låsa en PLL på synkpulserna och därigenom få fram pixelklockan (t.ex. 25.175MHz)

Re: Generera frekvenser med hög upplösning?

Postat: 5 april 2016, 08:52:00
av Icecap
När det finns tillgång till VGA-signalen är det självklart att det finns tillgång till synk-pulserna.

Detta betyder ju att det blir enkelt att använda en PLL varför TS har angripit problemet alldeles fel till att börja med.

Re: Generera frekvenser med hög upplösning?

Postat: 5 april 2016, 11:59:52
av RoPa
Se där ja!

Det behovet är lätt att uppfylla, som tidigare två inlägg påpekat.
Varje bildskärm löser det problemet på sin VGA ingång så det finns otaliga sätt och mycket lämpliga kretsar.

Frågan var: Hur återskapa en faslåst linjefrekvens från en VGA signal?

Re: Generera frekvenser med hög upplösning?

Postat: 6 april 2016, 07:40:28
av Klas-Kenny
Nej, jag har inte tillgång till någon av VGA-signalens klockor, enbart videosignalen, som jag skrev.

Videosignalen innehåller ju förvisso dock lite blankning med linjefrekvensen, så kanske skulle det gå att få en PLL till att låsa vid den. Min videosignal är dock utav mycket dålig kvalité med en hel massa brus, men kanske går det ändå.
Får undersöka detta.

Re: Generera frekvenser med hög upplösning?

Postat: 6 april 2016, 11:23:57
av RoPa
Ok, du har alltså inte tillgång till VGA signalen (den är Hs, Vs, R, G, B) utan tillgång till en (eller alla tre) av R, G, B.
Dessutom i brusig version.

Om signalen du har är tillräcklig för att titta på är den tillräckligt för att faslåsa mot.

Blir dock lite funderande kring hur du tänker utvinna vertikalsynken? Utan den går det inte att bygga upp en bild...
Vertikalsynk kan skapas från frame blanking (traceback svepen).
Horisontalsynken utvinns med vertikal blanking.
Båda dessa funktioner finns i synkdetektorer, blir dock svårt om bilden har svarta partier...
Med composit video är synken negativ och enkel att skilja ut även vid "svart" bild.

Det är möjligen inte så att du försker bygga en VGA avlyssnare?
Kan du berätta mer om applikationen?