close
Vážení uživatelé,
16. 8. 2020 budou služby Blog.cz a Galerie.cz ukončeny.
Děkujeme vám za společně strávené roky!
Zjistit více

Vážení uživatelé,
16. 8. 2020 budou služby Blog.cz a Galerie.cz ukončeny.
Děkujeme vám za společně strávené roky!

Vidlákovo elektro 99. kmitočtová syntéza 2.

19. března 2015 v 5:57 | Petr |  Vidlákovo Elektro
Minule jsme došli k tomu, že klasická kmitočtová ústředna na principu PLL má tu bolístku, že ladící krok je roven referenčnímu kmitočtu, takže pokud chctete mít "opravdu dobré" radioamatérské rádio které ladí po 10, 100, 1000, Hz je situace prakticky neřešitelná.

Takže radioamatéři vymysleli fintu - použijí DDS - přímou digitální syntézu. Pro čtenáře, kteří to neznají jenom kratičký úvod co to je. Tedy to je výroba přesných analogových kmitočtů digitálním způsobem


Neboli na obrázku to vidíte - DDS je hardwarový čip - něco jako "vyseknutá sčítačka" z procesoru, který k "fázovému akumulátoru" neustále přičítá "ladici slovo". Fázový akumulátor - je přesně to co název říká - registr, který ukazuje fázi signálu - a protože signály jsou periodické i on občas přeteče - čímž se opět vynuluje. Fázový akumulátor má spoustu bitů - Obvykle třeba 32 a pokud hodiny označené jako system clock jsou třeba 100 MHz pak minimální frekvence, kterou taková DDS zvládne je 100 000 000 / 232 = 0,02328 HZ. Stejná frekvence je tzv "rozlišení DDS" neboli to, čemu jsme u PLL říkali "ladici krok". Při ladícím kroku v setinách Hz je vám jasné, proč konstruktéři radiotechniky mají z DDS orgasmus.

Horních 8-12 bitů fázového akumulátoru se bere do tabulky hodnot Sinus, kde se lineárně narůstajcíí fáze změní v sinusovku a pak se digitální hodnota funkce sinus vede do DA převodníku - takže na výstupu DDS je opravdu analogová sinusovka. Proč nejde do DA převodníku celých 32 bitů ? Dovedete si předsatavit cenu za čip se 4 gigabajty ROM ?


Aby to nebylo tak snadné, tak způsob syntézy v DDS je i zdrojem problémů a to v tom, že sinusovka je poněkud kostrbatá protože jednotlivé hodnoty z DA převodníku nepřicházejí "přesně" ale jenou "statisticky" v době kdy mají. Takže DDS sice produkuje frekvence na tři desetinná místa, ale jenom statisticky a to tím, že občas je perioda o bit delší a občas o bit kratší. To způsobuje obrovský binec v signálu, který se musí filtrovat a i přesto obsahuje spoustu "vyšších harmonických frekvencí".

Proto radioamatéři běžně signál DDS "čistí" tím že ji zapojí do smyčky fázového závěsu, kde sem tam jeden bit navíc nevadí, protože přesně stejně se chovají i děličky PLL s neceločíselným dělícím poměrem.


Takže nastává čas mých "konstrukčních rozvah" - na obrázku nahoře vidíte jenom překreslenou PLL smyčku z "vánočního přijímače", který jsem nidky nepostavil. Když se nad věcí zamyslíme matematicky tak rovnice pro DDS je
Fout = (M*Fclk) / 2N
kde Fout je výstupní frekvence a Fclk je frekvence hodin DDS (tedy de facto frekvence přičítání k fázovému akumulátoru. M je "ladící slovo" tedy hodnota, která se přičítá. Idylka, ladící slovo pěkně lineárně mění frekvenci, jenomže my to nemáme zapojeno takto, že frekvence DDS je konstatní a výstupní frekvence se mění - u nás naopak PLL závěs udržuje konstatní výstupní frekvenci DDS a frekvence hodin se mění Ergo náš zoreček je
Fclk = (M*Fout) / 2N
ERGO výpočet ladícího slova u naší DDS + PLL, kterou radioamatéři označují jako Reverzní je
M= (Flck * 2N) / Fout
A aby to nebylo tak jednoduché tak po započtení všech děliček a násobiček ve smyčce je reálný vzoreček pro "vánoční rádio" takový :
M = 733007751851 / Fout
ERGO krok ladění je nelineární a navíc je třeba 24 bitovou hodnotu ladícího slova počítat pomocí 48 bitového (reálně asi 64 bitového ) dělení - nic co by zvládalo AVR, které do omrzení updatuje fázový akumulátor. Aby to nebylo tak jednoduché, tak tím, že se mění frekvence procesoru, mění se i frekvence sérové linky, se kterou by se s procesorem komunikovalo a navíc pokud se ve smyčce PLL něco pokazí a VCO se nerozkmitá - nebude procesor mít ani hodinový signál aby zablikal červenou LEDkou.

Takže jsem přemýšlel dále a napadlo mě - pokud DDS zvládá frekvence s přesností 0,02 Hz (statisticky) - proč neudělat smyčku PLL jako v dolní části obrázku ? Ve smyčce PLL není žádný nastavovací prvek a funguje jenom jako "násobič frekvence" 256 *. Naopak procesor si jede ze stabilních krystalových hodin, na stálém kmitočtu - tak jak to hoši v Norském Atmelu zamýšleli.

Spočtěme si jenom velikost ladícího kroku.
Fstep = (Fclk * DIV1) / (224 * DIV2)
Vzoreček je klasický vzoreček pro frekvenci DDS akorát DIV 1 je dělička ve smyčce PLL tedy 256 a DIV2 je kolik taktů potřebuje update fázového akumulátoru (de facto dělička frekvence procesoru). Takže počítáme :

Fstep = (6553600 HZ * 256) / (224 * 10) = 1677721600 / 167772160 = 10Hz

Jediná otázka je jaký je referenční kmitočet pro fázový komparátor ? Pro mé virtuální rádio potřebujeme kmitočet 20-50 MHZ a ten dělime 256 - referenční kmitočet se tedy mění mezi 78- 196 KHz. Ladící krok 10 HZ při referenčním kmitočtu PLL kolem 100 kHz - není ten svět krásný ?

Abych se nemusel patlat s příliš vysokými frekvencemi - jestli mě paní Kubáčová, nebo náš pes nepřivede do hrobu - už pomalu dávám dohromady "pokusné rádio" tohoto typu na dlouhé vlny - to můžu klidně postavit na kontaktním poli a mixér můžu řídit rovnou signálem z AVR - takže vyčkejte a uvidíte ( ten debakl ).

Tím jsem vyslepičil naprosto všechno a zbývá už jenom rada paní Kubáčové novomanželkám. Manžel i pes jsou konec konců oba jenom savci - samci - pokud jsou potichu a někde zalezlí -znamená to že dělají něco nedovoleného.
 

Buď první, kdo ohodnotí tento článek.

Komentáře

1 kolemjdoucí kolemjdoucí | 19. března 2015 v 8:16 | Reagovat

Tipl bych si, že pan Kubáč je Vodnář (a nebo má aspoň ascendent v tomto znamení).

2 Dalio Dalio | 19. března 2015 v 9:45 | Reagovat

Český národní hrdina Jára Zimmerman uvažoval u řešení každého problému o dvou se střídajících fázích:

1- fáze očekávaní
2- fáze zklamání

U Siemensů v padesátých letech minulého století tomu zase říkali:

1- Předprojektové nadšení.
2- Projektové vystřízlivění.
3- Hledání viníků.
4- Potrestání nevinných.
5- Odměna nezůčastněným.

3 m.marianek m.marianek | 19. března 2015 v 10:46 | Reagovat

Mám celkem radost, že jste přešel na "mé" řešení (ne že bych měl na něj patent, ale dospěl jsem k němu podobným myšlenkovým pochodem). Radost mám proto, že jsme ke stejnému řešení došli relativně nezávisle na sobě, což znamená, že by principiálně mělo fungovat. Nepočítejte ale, že to bude rozumně fungovat bez A/D převodníku jen s použitím posledního bitu, rozhodně ne na dlouhých vlnách filtr PLL by musel mít příliš dlouhou konstantu, aby odfiltroval (zprůměroval) fázový šum. To už pak můžete rovnou čítat frekvenci oscilátoru vnitřním čítačem AVRka a korigovat ladicí napětí pomocí PWM výstupu (se slušným LC oscilátorem by to mohlo mít stejné a možná i lepší výsledky). Na druhou stranu by mohlo být zajímavé experimentovat s počtem bitů A/D převodu a délkou časové konstanty PLL a pozorovat při tom čistotu spektra (fázový šum a parazitní modulace). Začít s jedním bitem, pak třeba se čtyřmi, šesti, osmi ...
Mimochodem, nemám sice zkušenost s přijímači s frekvenčními syntézami, ale co jsem měl možnost, tak jsem v ničem takovém neceločíselné děliče neviděl, pokud tedy nemyslíte děliče N/N+1, protože ty bych za neceločíselné nepovažoval, výstupní signál z nich je totiž přísně synchronní se vstupním stejně jako u normálního děliče.
Jo, ještě malý dodatek, ten dělič 1:256 za VCO bych dal programovatelný Sežere to sice jeden port navíc, ale zato to dramaticky zvýší frekvenční rozsah syntézy při zachování úzkého rozmezí referenčního signálu pro fázový detektor.

4 m.marianek m.marianek | 19. března 2015 v 11:02 | Reagovat

[2]: Pana Kubáče se týká pravděpodobně Cimrmanovské pojetí, neb tři poslední body od Siemensů se ho netýkají. Leda že by se do toho zamontovala paní Kubáčová, viník je jasný, potrestání je na místě, jelikož se pan Kubáč ukájí nad AVRkem místo toho, aby se ukájel nad paní Kubáčovou, no a odměnu si nezúčastněná paní Kubáčová vybere až si zklamaný a sexuálně frustrovaný (z nefungující onanie nad AVR) pan Kubáč se sklopenýma ušima a vztyčeným přirozením půjde pokorně lehnout na manželské lože :-). Panu Kubáčovi se omlouvám pokud ho tento nejapný pokus o žert urazil, má možnost použít svá administrátorská práva a příspěvek promptně smazat.

5 petr-kubac petr-kubac | 19. března 2015 v 11:41 | Reagovat

[3]: Nemohu si pomoct, ale cyklus N+1 děličky v PLL mi připadá delší než cyklus N - díky tomu je ladící napětí smyčky "někde mezi" a díky tomu kmitá VCO mimo rastr daný referenčním kmitočtem

Jediný rozdíl proti použití nejvyššího bitu DDS vidím v tom, že u DDS je výrazně hůře predikovatelné, který cyklus bude o 1 takt kratší a který bude delší - parazitní modulace jsou "více rozplizlé" - což může ale nemusí být výhoda

Jinak použítí ring oscilátorů je velice zajímavé - oscilátor s 3 hradly má výrazně větší jiteer než oscilátor s 5 hradly a se 7 a více by to asi bylo zase lepší - proto si myslím, že třeba PLL v procesorech mají ring oscilátor z nějakého velkého lichého počtu hradel a jitter vůbec neřeší

Už mám nakresleno schémátko kde místo LC oscilátoru je ring oscilátor z 5 hradel typu 74AC - se zpoždením 3ns - měl by se chovat výrazně lépe než PLL ze 3 hradel typu 74HC
http://petr-kubac.blog.cz/1404/vidlakovo-elektro-75-kvadraturni-generator
která se ale taky "pod knutou" PLL nechová úplně špatně

6 Dalio Dalio | 19. března 2015 v 12:50 | Reagovat

Zdá se mi, že výšeuvedený siemensácký algoritmus nemilosrdně chodí jak na ring-oscilátor z hradel řízený PLL v kontaktním poli, tak třeba i na fosfolipidy profesora Holého. Je pak už jen naprosto nepodstatné, zdali podle bodu č.5  bakšiš nakonec dostane ostravská GME, a nebo ústav organické chemie z Prahy...

7 m.marianek m.marianek | 19. března 2015 v 13:28 | Reagovat

[5]: Ne ne, cyklus N+1 děličky je pořád v rytmu vstupního signálu, tedy pokud oba myslíme použití dual modulus prescaler

http://en.wikipedia.org/wiki/Dual-modulus_prescaler

Celý vtip je v tom, že při použití předděličky N+1/N se celá PLL tváří jako kdyby tam žádná předdělička nebyla a programovatelný čítač čítal přímo frekvenci VCO. Čítání se ovšem pořád děje přísně v rámci počtů period (rastru) VCO k žádnému neceločíselnému dělení nedochází.

U použití jednoho bitu DDS mám velké obavy z "aliasingu" budou totiž existovat frekvence, u kterých se okamžik překlopení nejvyššího bitu DDS bude jen pomalu pohybovat oproti rastru VCO a PLL pak bude "dýchat" v rytmu tohoto aliasingu. I kdyby ale byl jitter DDS náhodný pořád je odstup šumu ladicího napětí daný poměrem časové konstanty filtru ke kvantování DDS a pokud je to např. 100ms/1,53us, bude šum ladicího napětí řádově v desítkách uV, což při citlivosti VCO řádově 10MHz/V způsobí parazitní modulaci se zdvihem ve stovkách Hz a to je na úzkopásmových provozech určitě slyšet, když jsou šířky kanálů v desítkách kHz.

Ring oscilátor s více hradly bude mít menší jitter pravděpodobně kvůli nižžší frekvenci a tím delší době na ustálení stavu hradla. Hradlo se pak překlápí z lépe definovaného stavu a není tak citlivé na vnější vlivy a šumy. Rozhodně je lepší použít více rychlých hradel, než menší počet pomalých. Celkem zajímavá je i synchronizace ring oscilátoru s krystalem, když se oscilátor vtáhne do synchronizace, má celkem dobrou stabilitu a lze přelaďovat až ve třetím řádu, chová se to jako lepší LC oscilátor.

8 petr-kubac petr-kubac | 20. března 2015 v 9:25 | Reagovat

[7]: Zdá se že můj "myšlenkový model byl špatný" - nicmnéně jsem narazil na aplikační poznámku od TI o frakčních - neceločíselných PLL - jakoby opisovali ode mně (nebo já od nich) - první level je dual modulus dělič, jehož dělící poměr mezi N a N+1 přepíná fázový akumulátor ve stylu DDS ;-)
Aby kompenzovali parazitní modulace tak "fázové zbytky" po přetečení fázového akumulátoru cpou do ladícího napětí VCO - zajímavá idea zavánějící škrábáním levou rukou za pravým uchem.

Jo - a nepřítomnost neceločíselných PLL ve vaší realitě ? Máte v kapse mobil ? ;-))

9 m.marianek m.marianek | 20. března 2015 v 21:46 | Reagovat

[8]: Myslím, že váš myšlenkový model až tak špatný nebyl, jen trpí stejnými neduhy jako frakční PLL, hlavně co se týče rušivých spektrálních čar v oblasti propustnosti PLL filtru (to co jsem nazval "aliasingem"). Tenhle nedostatek se dá opravit buď vygenerovaným analogovým signálem v protifázi rušivých složek (frakční PLL druhého řádu), nebo pomocí sigma-delta modulátoru (frakční PLL třetího řádu).
Váš nápad s DDS bez A/D převodníku by šel za cenu dalšího strojového času (prodloužení smyčky DDS) doplnit o softwarovou sigma-delta modulaci (bohužel asi jen prvního řádu), čímž by mohlo dojít k částečné redukci rušivých složek. Otázka je, jestli to stojí za vynechání jednoho A/D převodníku, který by se dal postavit i z odporové sítě pověšené na port AVR (kdysi osobně vyzkoušeno na LPT portu a i s obyčejnými odpory je chyba pod půl LSB). I když s A/D převodníkem dojde k razantnímu zlepšení, přeci jen i v DDS jsou přítomny rušivé šumy, 8 bitů je málo, většinou se používají 10 a více bitové převodníky, ale pořád je 8 bitů víc než jeden. No a 24 stejných odporů na osmibitovou síť R2R snad mají i ve vidlákově. Taky jsem kdysi uvažoval o TDA1545A pověšené na SPI rozhraní, zvůádá až 192ksamplů, takže by řekněme 20kHz referenční signál pro PLL zvládla a 16 bitů už je slušných. TDA1545 bývala v každé CD mechanice, kterých se ve sberných dvorech musí válet vagony.

10 Dalio Dalio | 21. března 2015 v 12:59 | Reagovat

Ten TDA1545 se zdá být konečně jakýsi přínos...

Nový komentář

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.
 

Aktuální články

Reklama