Uživatelské nástroje

Nástroje pro tento web


cs:clkgen
no way to compare when less than two revisions

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


Předchozí verze
Následující verze
cs:clkgen [2017/06/12 14:08] – [Generátor digitálních hodin CLKGEN02A] kaklik
Řádek 1: Řádek 1:
 +====== 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.
 +
 +===== 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 ===
 +
 +
 +<WRAP info >
 +
 +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. 
 +
 +</WRAP>
 +
 +==== 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 
 +        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 
 +        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 ======
 +
 +Tento generátor by měl poskytovat více výstupních frekvencí odvozených z jednoho frekvenčního normálu. Hlavním účelem tohoto řešení je, aby byla homogenní distribuce chyb v celém systému. 
 +Například 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 [[http://www.silabs.com/products/timing/oscillators/dspll|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|Si5340]]
 +  * [[http://www.silabs.com/documents/public/data-sheets/Si5347-46.pdf|Si5346]]
 +
 +Výstup z generátoru by opět měl být na SATA konektory. 
 +
 +
 +
  
cs/clkgen.txt · Poslední úprava: 2017/06/22 11:27 (upraveno mimo DokuWiki)