costasloop en frequencytracking voor bpsk

Ik ben een andere versie van een bpsk decoder aan het maken, let als de andere in software.
Gezien de enthousiaste reacties op internet voor het gebruik van een costasloop voor bpsk decodering ben ik ook maar met zo'n loop aan de gang
In principe werkt zo'n loop natuurlijk prima, immers, als de fase voor de bpsk PI is, is de cos(PI) -1 en de sin (PI) 0, en als de fase 0 is is de cos (0) = 1 en de sin (0) = 0
Op basis van de afwijking van sin en cos kan eenvoudig een correctiefactor bepaald worden, dus zover geen probleem

Maar, tunen van een amateur bpsk signaal is lastig, ik zit al vaak een paar (tot een 10 of zelfs 20-tal) Hz mis. In de "oude" versie corrigeer ik dat door de FFT continue te bepalen en de frequentie te sturen naar de bin met de maximum amplitude.

Bij costas werkt de frequentie correctie, die zich per sample natuurlijk laat zien als een fasefout, niet goed. Zelfs een frequentieafwijking van een paar hz leidt - gezien over een paar honder samples - tot een zodanige fase fout dat het teken van de cos en/of sin verkeerd is en dus gaat de correctie de mist in.
Dat is ook waar te nemen, bij een samplerate van 5000 en een duration van
de fase periode van ca 150 samples (BPSK is 31.25 baud) en een frequency afwijking van 12 Hz of meer is het in mider dan 2000 samples en puinhoop.

Hoe wordt - en dat is de vraag - in het analoge domein de frequentie gecorrigeerd?

...dus hij lockt blijkbaar niet.

Dat moet gezocht worden in de loopfilter eigenschappen. Een pool en een zero en de gain bepalen de stabiliteit.

https://en.wikipedia.org/wiki/Costas_loop

Ha jansenior,

Ik gebruik een orthogonale mixer ik maak dus een I en Q pad voor de V.C.O. !
Omdat ik nu niet tekenen een stukje uitleg, het binnen komende BPSK signaal,
vermenigvuldig ik met een orthogonaal VCO signaal.
Met andere woorden mijn V.C.O. gaat twee kanten op en in een pad een 90 ° fase draaier.
Ik heb dus een I en Q gemaakt het 0° pad vergelijk ik met het 90 ° pad en via een,
laagdoorlaat filter (loop filter ) stuur ik de V.C.O.
Ik hou altijd zicht op de fase verandering van mijn BPSK signaal ( in lock ).
Misschien enig licht in de duisternis :)

Groet,
Henk.

Everything should be as simple as possible, but not simpler.
Frederick E. Terman

Honourable Member

Mjaa.. de wiki zegt ook zoiets, alleen duidelijker. :)

Ik denk ook dat je naar het lusfilter moet kijken.

/off topic:
Ik las ooit (maar dat was in de jaren '70) een artikel van Collins over DSB-detectie met o.a.de Costas-lus. Om (in vliegtuiggebruik, op VHF) de snelle doppler-frequentievariaties te kunnen volgen zat er in het Q-kanaal nog een tak met een extra differentiator, zodat de regelspanning bij grotere frequentieafwijkingen ook afhankelijk werd van het frequentieverschil. Ik heb wel een aantekening gemaakt in mijn boek Ontvangers, maar was niet zo slim daarbij een bronvermelding te plaatsen. :D

/nog meer off topic:
Toen ik eens een bpsk-detector wilde maken voor 9600 bps packet radio, heb ik het mezelf gemakkelijk gemaakt door het signaal te kwadrateren in een vierkwadrants-vermenigvuldiger. Aan de uitgang stond daardoor o.a. een constante component op tweemaal de ingangsfrequentie. Daaraan kon ik gemakkelijk een PLL hangen, waarvan ik de uitgang weer door twee deelde om een klok voor de detectie te maken.

/PSK31: Martinez (G3PLX) zegt in zijn oorspronkelijke PSK31-artikel hoe hij een sterke 31.25 Hz-component afleidt uit het signaal door het eenvoudig AM te detecteren. Dat verbaasde me een beetje. Door de 'wave shaping' zit er in de header inderdaad wel zo'n modulatie, maar later, gedurende de data-uitzending, veel minder. Toch weet iedereen dat de PSK31-software goed werkt.
Hier zou die verdubbelingstruc trouwens ook prima werken, maar al googelend vind ik daar niets over.

Keramisch, kalibratie, parasitair: woordenlijst.org

Ha Brightnoise,

Ik heb jou commentaar over het hoofd gezien dat is namelijk waar het omgaat maar daar heb ik nu geen tijd voor.
Zelf heb ik heel veel gedaan geen amateur modems of zo maar wel veeeeel sneller !

Waar @Jan mee zit is niet de loop maar de fout op de AFC loop en de fout op de costas loop.
Dat is niet alleen maar toe te schrijven aan de filters zoals jij aangeeft,
maar ook aan de fout detectie.
Dat vertel ik niet in 20 zinnen incl. berekeningen :D
En ik weet wel zeker dat WIKI hier totaal niets over vermeld.......

Groet,
Henk

Everything should be as simple as possible, but not simpler.
Hubie

Special Member

Afstemmen op een BPSK signaal is inderdaad geen sinecure. Een RTTY decoder kun je nog foutloos * op 1 poot laten meelopen (mark only of space only) maar een BPSK signaal is onverbiddelijk,dat moet echt "spot on" zijn.
Mijn SCS modem doet het prima in BPSK modus maar bij 10 Hertz hoger of lager afstemmen krijg ik de bekende middelvinger.. ;-) toedeledokie,ik kap ermee zegt die dan... ;-)

* Dat werkt alleen als het signaal een dikke S 9 + is.

Ha Hubie,

Dat is een mooie decoder, heb je daar schema's van ?
Ik denk dat deze digitaal is dan is een uitbereiding lastig.
En de vraag is welke techniek er toegepast is met name de implementatie in de DSP engine.....

In de situatie van @TS als hij een analoge costas dit is een neefje van de PLL zal er een,
correctie uitgevoerd moeten worden.
Dit zijn twee additionele bewerkingen zoals ik aangeef..... 1 de error op de costas loop en 2 een AFC !
De AFC heeft hier de betekenis als automatische frequentie controller en,
niet te verwarren met een soort varicap of zo !
Het is een tweede en derde loop hierdoor heb je niet alleen een stabiele draaggolf regeneratie maar ook een zeer nauwkeurige frequentie positie.....
Als ik jou opmerking / ervaring goed interpreteer zijn de laatste twee niet aanwezig !

Groet,
Henk.

Everything should be as simple as possible, but not simpler.

Ik denk dat mijn probleem veroorzaakt wordt door te licht voorbij te gaan aan de wetten van de wiskunde

cos (x + phi) * cos (x) geeft naast de verschilffequentie ook de somfrequentie en die werd/wordt niet goed weggefilterd bij mij.
Het probleem is natuurlijk de steilheid van het filter, bij een redelijk lage samplefrequentie (ik was van plan 2000 te gebruiken) geeft een filter dat de 2 * x frequentie voldoende onderdrukt een te groot aantal taps.
Ook bij een hogere samplefrequentie, 12000 bijv, zit er nog zoveel vervuiling op de samples dat na een paar duizend samples de frequentieoffset zo groot is dat de zaak ontspoord.

Als test draaide ik de costas loop met gelijke phasestappen voor het inputkanaal en de referentie oscillator en, ja hoor, na een paar duizend samples denkt costas dat er flink gecorrigeerd moet worden

Ik zal e.e.a nog eens (als ik weer tijd heb) proberen met wat IIR filtering

In ieder geval bedankt voor de bijdragen

Ik denk dat mijn probleem veroorzaakt wordt door te licht voorbij te gaan aan de wetten van de wiskunde

cos (x + phi) * cos (x) geeft naast de verschilffequentie ook de somfrequentie, en die werd/wordt niet goed weggefilterd bij mij.
Het probleem is natuurlijk de steilheid van het filter, bij een redelijk lage samplefrequentie (ik was van plan 2000 te gebruiken) geeft een filter dat de 2 * x frequentie voldoende onderdrukt een te groot aantal taps en laat dan ook nog resten na van de hogere frequentie (in de orde van 0.000x)
Ook bij een hogere samplefrequentie, 12000 bijv, zit er nog zoveel vervuiling op de samples dat na een paar duizend samples de frequentieoffset zo groot is dat de zaak ontspoord.

Als test draaide ik de costas loop met gelijke phasestappen voor de inpu samples en de referentie oscillator en, ja hoor, na een paar duizend samples denkt costas dat er flink gecorrigeerd moet worden

Ik zal e.e.a nog eens (als ik weer tijd heb) proberen met wat IIR filtering

In ieder geval bedankt voor de bijdragen

Nog even meer precies gekeken

Bij een samplerate van 5000 en een oscillator (en datastream) frequentie van 2000 - dus met gelijke startfrequentie en startfase voor datastream en oscillator, gebruikmakend van een FIR lowpassfilter met 91 taps en afsnijfrequentie van 10, is - na de eerste 91 samples de filters te laten vullen - de correctie bij de 3-de sample die wordt aangebracht op de oscillator niet meer 0, maar orde 0.001, daarna treedt natuurlijk een versnelling op, na 10 samples is de "correctie" die costas denkt te moeten aanbrengen ca 0.07

Dus, bij de 10-de sample is het verschil in frequentie y=tussen de inputstream en de oscillatorstream al opgelopen tot ca 14 Hz

Toch maar iets anders proberen dan

Frederick E. Terman

Honourable Member

Het is misschien wel grappig te weten dat het Costas zelf en zijn technicus William Jones eerst óók niet lukte de lus te laten locken. Ze hadden over het hoofd gezien dat de VCO zich, wat de fase betreft, zélf ook als integrator gedraagt en dus een extra 6 dB per octaaf geeft, wat een 'garantie' is voor een instabiele lus.
Ook de fasedetectors komen in het verhaal voor.

Jones schrijft:

We hebben wat tijd besteed aan het oscillatorcircuit. John [Costas] deed een complete analyse van elk circuit dat we overwogen. De Colpitts was volgens hem de beste oscillator.
De moeilijkste schakeling was de fasedetector. John had de fasedetector oorspronkelijk behandeld als een eenvoudig niet-lineair apparaat, en als zodanig verschenen de ingangsaudiosignalen van elk kanaal samen met de fase-informatie aan de uitgang van de fasedetector. Het scheiden van de audio- en fase-informatie gebeurde met een laagdoorlaatfilter. Het bleek dat we te veel audio-informatie bij de fase-informatie kregen, uiteraard als een kwestie van signaal/ruis. Er was een zware laagdoorlaatfiltering nodig om de audio van de fase-informatie te verwijderen.

Ik ontwierp een enkelgebalanceerde fasedetector die de in-fase audio gebruikte voor de gebalanceerde ingang en dat leverde een veel mooiere fasedetectoruitgang op. Het systeem vergrendelde nog steeds niet. Het maakte echter wel duidelijk dat we een dubbelgebalanceerde fasedetector nodig hadden en een nieuw chassis moesten bouwen. De dubbelgebalanceerde fasedetector gaf een mooi uitziend fasesignaal en vereiste veel minder filtering op de fasedetectoruitgang. Dit gaf ons natuurlijk een grotere bandbreedte voor de fasevergrendelingslus, maar opnieuw werkte het systeem niet.
John liet me vrijwel alleen met het werk aan de fasedetector - ik geloof dat hij het druk had met het schrijven van zijn gebruikelijke maandelijkse rapport. Sommige van zijn rapporten waren vrij lang, en hadden zonder veiligheidsoverwegingen een publicatiestuk kunnen zijn. Zijn contract met de luchtmacht was geheim.

We hadden erg mooie testapparatuur - een geweldige Marconi signaalgenerator en de nieuwste Tektronix scopes. De scoop had een X- en Y-ingang en die gebruikte ik voor de in-fase en kwadratuur audiosignalen. Dit gaf een scoopweergave van een roterende rechte lijn. Als je de frequentie van het inkomende signaal aanpaste, was het mogelijk de rotatie van de rechte lijn te vertragen en de lijn bijna te laten stoppen als de stabiliteit van de oscillatoren goed was. Het systeem vergrendelde dan nog steeds niet.

Om een of andere reden zette ik een potentiometer op de uitgang van de fasedetector en gebruikte de loper als ingang voor de reactantiebuis. Dit was eigenlijk een regeling voor de systeemversterking. Ik probeerde het systeem te vergrendelen met de regelaar in verschillende standen, te beginnen met volledige versterking en dan geleidelijk de versterking te verlagen. Ik kreeg de versterking bijna op nul en het systeem vergrendelde! Het Q geluid was nul en het in-fase geluid maximaal. Een rechte lijn zonder rotatie, maar vanwege de oscillatorstabiliteit zou dat niet lang duren met zo'n lage lusversterking.

De lusversterking was het probleem. Wij behandelden het systeem als een eerste orde servosysteem, wat een systeem is met slechts een daling van zes dB per octaaf in de lusversterking. We namen aan dat het systeem was zoals een automatische versterkingsregeling op gewone radio's.

Ik was nogal opgewonden toen ik zag dat het systeem vergrendelde, en rende naar binnen om John te halen! Ik liet John zien wat ik deed, en dat het systeem zou vergrendelen als de lusversterking erg laag was. John was dolblij en wist natuurlijk meteen wat het probleem was: een instabiele servo. Hij begreep niet meteen waarom de servo instabiel was, maar ik denk dat hij een sterk vermoeden had van wat er mis zou kunnen zijn.
John had een vriend bij TV-engineering die zijn proefschrift over phase lock loops had gedaan. Hij belde zijn vriend en we gingen naar de TV-afdeling om met hem te praten en zijn proefschrift te lezen. We kwamen terug in het laboratorium en John ging met mij zitten, en nam de grondprincipes van elke fasevergrendelingslus erbij, en leidde de voorwaarden voor vergrendeling af. Dit duurde ongeveer een uur doordat hij me uitlegde wat hij deed. Het blijkt dat een oscillator met frequentieregeling eigenlijk een integrator is, en dus een zes dB per octaaf 'gain drop' heeft.
Het concept van een oscillator met reactantregeling met zo'n respons leek John een probleem te geven, en hij overdacht de integrator een dag of wat voordat hij zich op zijn gemak voelde met het concept. Ik deed er veel langer over om met het concept vertrouwd te raken.

Wiskundig is het vrij eenvoudig en voor de hand liggend. Het is wat moeilijker om het fysiek uit te leggen. Het betekent natuurlijk gewoon dat wanneer je een sinusvormige input toepast op een frequentiegeregelde oscillator, de totale frequentie- (fase)afwijking steeds groter wordt naarmate je de frequentie verlaagt. Bij een lage frequentie heeft hij meer tijd om te veranderen. Bij een hoge frequentie heeft hij minder tijd om te veranderen. Als je de frequentie verhoogt, daalt de totale faseafwijking, en wel met zes dB per octaaf.

De manier waarop we de lus behandelden gaf ons een versterkingsafval van twaalf dB per octaaf totaal, en dit zou een instabiele lus garanderen. De enige manier om de lus te sluiten was met de lusversterking in de buurt van één.
John had de versterking van de lus berekend en zo ingesteld dat de fasefout slechts enkele graden zou bedragen. John was enigszins bekend met servo's, en gebruikte het Bode-model voor lusstabiliteit. Het was alleen nodig een lead-lag netwerk in te bouwen om een stabiele lus te krijgen. We bleven bij de dubbelgebalanceerde fasedetector die een grotere bandbreedte van de lus mogelijk maakte.

Ik was verbaasd toen het tot me doordrong dat ik de eerste persoon was die een synchroon ontvangersysteem zag vergrendelen. Ik realiseerde me dat pas bij het schrijven van dit artikel. Hoewel Dr. Costas het systeem uitvond, was hij pas de tweede die het zag vergrendelen. Ik geloof niet dat het ooit bij een van ons is opgekomen. Pas jaren na mijn pensionering besefte ik dat ik de eerste was die zo'n systeem zag werken.

Keramisch, kalibratie, parasitair: woordenlijst.org
Hubie

Special Member

Op 30 januari 2023 06:54:50 schreef electron920:
Ha Hubie,

Dat is een mooie decoder, heb je daar schema's van ?
Ik denk dat deze digitaal is dan is een uitbereiding lastig.
En de vraag is welke techniek er toegepast is met name de implementatie in de DSP engine.....

In de situatie van @TS als hij een analoge costas dit is een neefje van de PLL zal er een,
correctie uitgevoerd moeten worden.
Dit zijn twee additionele bewerkingen zoals ik aangeef..... 1 de error op de costas loop en 2 een AFC !
De AFC heeft hier de betekenis als automatische frequentie controller en,
niet te verwarren met een soort varicap of zo !
Het is een tweede en derde loop hierdoor heb je niet alleen een stabiele draaggolf regeneratie maar ook een zeer nauwkeurige frequentie positie.....
Als ik jou opmerking / ervaring goed interpreteer zijn de laatste twee niet aanwezig !

Groet,
Henk.

Hoi Henk,
Schema's(openbaar) ervan zijn er volgens mij niet.
Het zijn nogal dure modems maar je krijgt dan wel het hele scala:BPSK,RTTY,FAX,SSTV,AMTOR CW en PACTOR.
Mijn modem is inmiddels 15 jaar oud en doet ook pactor 3.0.maar er is nu ook een pactor 4.0 modem verkrijgbaar.Nog sneller,betere datacompressie en voor HF een ongekende snelheid.

https://www.rys.nl/SCS-P4Dragon-DR-7800-Pactor-4-modem

Ha Hubie,

Dat is inderdaad nog al wat, ik kan bijna alles decoderen via software daar niet van maar een mooi stuk techniek.
Ik denk dat @TS het probleem opgelost heeft, maar dat was software matig.
Even op het verkeerde been gezet door de laatste opmerking,
daardoor was ik in de veronderstelling dat het om een hardware probleem ging.....
In de authentieke costas zitten nog al wat losse einden vandaar !
Ontvang je nog wel veel data op de kortegolf ?

Groet,
Henk.

Everything should be as simple as possible, but not simpler.
Hubie

Special Member

Ha Henk,de kortegolf zit vol met datasignalen maar je moet dan wel een frequentiegids hebben om te weten waar je moet luisteren.

https://www.klingenfuss.org/utility.htm

Het SCS HF modem wat ik gebruik is vooral populair in de zeilvaart.Ze hebben dan alles in 1 doosje voor sailmail,weerkaartenfax,GRIB files en RTTY.Dat is een stuk goedkoper dan een inmarsat abonnement.

https://sailmail.com/