====== Generátor digitálních hodin CLKGEN01B ====== V současnosti je modul v produkční fázi. A lze jej zakoupit v [[http://www.ust.cz/shop/product_info.php?products_id=90|e-shopu UST]]. Nastavení kmitočtu se provádí přes sběrnici [[cs:i2c|I²C]]. Výstup digitálního signálu je vyvedený diferenčně na SATA konektor. {{:cs:modules:clock:clkgen01b_top_big.jpg?600|}} ===== Nastavení výstupní frekvence ===== ==== Emulace zařízení DG8SAQ ==== DG8SAQ vyvinul konstrukci, která je velmi často využívána hlavně radioamatéry, neboť kromě ovládání samotného oscilátoru poskytuje ještě další funkce, jako je přepínání banky filtrů, nebo klíčování radiostanice. Vzhledem k velké rozšířenosti této konstrukce, je implementována jak na architektuře PIC, tak i na AVR. === Microchip PIC === V tomto případě je modul připojen na sběrnici USB pomocí modulu [[cs:pic18f4550v|PIC18F4550v01A]] do kterého je nahrán firmware umístěný v MLAB SVN. Podrobnější popis této konstrukce je možné nalézt v odděleném dokumentu [[http://www.mlab.cz/Modules/Clock/CLKGEN01B/DOC/DG8SAQ_emulator.cs.pdf|Kmitočtový syntezátor s Si570 laditelný přes USB]] === Atmel AVR === Společným problémem obou těchto konstrukcí je právě USB. Které způsobuje, že zařízení nefunguje zaručeně na všech počítačích, případně dochází k zatuhnutí oscilátoru na jedné frekvenci a nebo ke ztrátě kalibrace. ==== Přímé ovládání přes I²C ==== V tomto případě se pro komunikaci využito přímo ovládání přes rozhraní [[cs:i2c|I²C]] čipu Si570. Proto jde o nejspolehlivější a aktuálně nejlepší způsob ovládání tohoto modulu v zařízení. Samotný elektrický způsob připojení modulu se v tomto případě liší podle použitého I²C master zařízení. Jako programové knihovny lze použít například [[https://github.com/MLAB-project/MLAB-I2c-modules|MLAB Python I2C]], nebo přímo [[https://github.com/MLAB-project/si570|kernelovský modul]] pro Linux. === Přímý I²C master === Pokud máme na počítač s vyvedeným rozhraním [[cs:i2c|I2C]] je vhodné připojit modul přímo k němu, neboť se tím vyhneme problémům s přechody mezi jednotlivými vrstvami protokolů. Jedním ze zařízení, které má přímo rozhraní I2C je ARM počítač [[cs:odroid-x2|ODROID-X2]]. K tomuto počítači je však nutné připojovat [[cs:clkgen|CLKGEN01B]] opatrně, neboť jeho pracovní napětí je na IO rozhraních je pouze 1.8 V. Tento problém lze ale bezpečně řešit zařazením modulu [[cs:i2chub|I2CHUB01A]], který kromě převodu napěťových úrovní funguje zároveň i jako rozbočovač, na jehož porty lze připojovat další I²C zařízení. Samotné připojení oscilátoru k ODROIDu provedeme podle návodu v sekcí [[cs:odroid-x2#pripojeni_i_c|O připojení I2C]]. Podrobný popis způsobu zacházení s I²C je pak na stránce [[cs:i2c|I²C a MLAB]]. Ve stručnosti je ale modul správně připojen pokud jej vidíme na sběrnicí. To lze zjistit tímto postupem: Zkontrolujeme, že na sběrnici vidíme modul [[cs:i2chub|I2CHUB02A]]. V tomto příkladu je vidět a má adresu 0x70 linaro@linaro-ubuntu-desktop:~/repos/MLAB-I2c-modules/examples$ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- -- linaro@linaro-ubuntu-desktop:~/repos/MLAB-I2c-modules/examples$ Na něm je nyní potřeba aktivovat kanál ke kterému je připojen modul [[cs:clkgen|CLKGEN01B]], protože na nemáme připojeného nic jiného. tak si můžeme dovolit aktivovat všechny kanály volbou //0xff// linaro@linaro-ubuntu-desktop:~/repos/MLAB-I2c-modules/examples$ sudo ./i2chub02_example.py 1 0x70 0xff Get initial I2CHUB setup: I2CHUB channel setup: 0b0 Setup I2CHUB to channel configuration: 0b11111111 final I2C hub channel status: 0b11111111 linaro@linaro-ubuntu-desktop:~/repos/MLAB-I2c-modules/examples$ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- 55 -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: 70 -- -- -- -- -- -- -- linaro@linaro-ubuntu-desktop:~/repos/MLAB-I2c-modules/examples$ Nyní vidíme i připojený modul [[cs:clkgen|CLKGEN01B]] se kterým můžeme komunikovat a ladit jej například kernolovským modulem pro [[https://github.com/MLAB-project/si570/wiki/Install|Si570]]. Je třeba dodat, že bez změny implicitních nastavení je potřeba mít nezapojenou žádnou volbu na jumperu 'SLAVES' na modulu I2CHUB, neboť to způsobí přípojení dalších pull-up rezistorů, které už obsahuje modul CLKGEN. A sběrnice I2C pak v takovém případě nemusí fungovat správně. === USB - I²C bridge === Počítače, které nemají vyvedenou sběrnici I²C, ale USB lze připojit modulem [[cs:usbi2c|Převodník USB na I²C USBI2C01A]] {{:cs:modules:clkgen01b_connection_big.jpg?300|Ukázka použití modulu CLKGEN a USBI2C01A}} ====== CLKGEN01A ====== Je prototypem modulu, který byl vyroben v jednom exempláři. Při návrhu tohoto modulu byly zohledněny následující konstrukční požadavky: * Modul by měl umět generovat digitální hodinové signály s vysokou fázovou přesností. * Primárním účelem tohoto obvodu by mělo být vytváření hodin pro rychlé AD převodníky, kde jsou vysoké nároky na fázový šum a obecně na kvalitu signálu. ===== Alternativní obvody ===== * [[http://www.exar.com/communications/timing/universal-clocks/xr81112/|XR81112]] ====== Generátor digitálních hodin CLKGEN02A ====== Generátor by měl poskytovat více výstupních frekvencí odvozených z jednoho frekvenčního normálu. Hlavním účelem takového řešení je, aby se frekvenční chyba distribuovala proporcionálně v celém systému. V případě použití generátoru hodin v SDR přijímači je výhodné, aby lokální oscilátor pro směšovač byl odvozený ze stejné kmitočtové základny jako ADC. Neboť korekce frekvence je pak společná pro všechny části systému a není třeba je frekvenčně korigovat jednotlivě. Pro tento účel existují kmitočtové syntezátory využívající technologii DSPLL, která umožňuje generování téměř libovolných frekvencí z referenčního oscilátoru. Použitelné obvody jsou například tyto: * [[http://www.silabs.com/documents/public/data-sheets/Si5341-40-D-DataSheet.pdf|Si5341]] * [[http://www.silabs.com/documents/public/data-sheets/Si5345-44-42-D-DataSheet.pdf|Si5345]] Výstup z generátoru by měl být LVDS na SATA konektory na PCB. ====== Potřebné parametry kmitočtové základny ====== ===== Parametry kmitočtové syntézy ===== * Minimální aditivní fázový šum/jitter * Možnost spojitého přelaďování v celém frekvenčním rozsahu. * Minimálně dva nezávislé frekvenční výstupy (pro vzorkovací hodiny ADC a pro směšovač) * Frekvenční rozsah vzorkovacích hodin by měl být alespoň 5-25MHz * Frekvenční rozsah signálu pro směšovač by měl být alespoň 10-900 MHz * Pro výstup vzorkovacích hodin minimálně dva diferenční kanály. * Pro výstup frekvenčního signálu pro směšovač minimálně 4 differenční kanály ===== Parametry referenčního oscilátoru ===== * Minimální fázový šum/jitter * Není nutná vysoká frekvenční stabilita (oscilátor bude umístěn v relativně stabilních stacionárních podmínkách) * Oscilátor bude volně běžící pro minimalizaci nespojitostí a šumu. (Nebude korigován jako VCO, jeho chyby budou kompenzovány změnou konfigurace kmitočtové syntézy) Těmto požadavkům vyhovují oba navrhované obvody. Z důvodu optimalizace vývojových prostředků a zkrácený doby vývoje bych ale navrhoval použití Si5345A-D-GM v kombinaci se externím krystalem ve standardním pouzdru HC-49S. (optimální frekvence krystalu pro minimalizaci jitteru je podle datasheetu 50 MHz). V případě, že by se ukázalo, že jednoduchý křemenný krystal nemá dostatečně stabilní parametry, tak lze frekvenční referenci nahradit externím připojením [[http://www.abracon.com/products.php?search=osc&type=XO&subtype=Ultra-Low%20Jitter|externího rezonátoru]], který může být i [[http://www.abracon.com/products.php?search=osc&type=TCXO/VCTCXO&sortBy=[7,%27asc%27]|teplotně kompenzovaný]]. Modul kmitočtové syntézy ale musí být připravený na připojení různých dalších typů referenčních oscilátorů, což lze nejsnadněji zařídit osazením SATA konektorů na differenční stupy kmitočtové reference.