Phil Ruston před nějakou dobou připravil pro svůj počítač V6Z80P+ (můj starší článek zde) malou destičku s oscilátory 28 a 28.375 MHz. S námětem něco takového udělat přišel Alessandro Dorigatti, který chtěl díky přesnějšímu a jednodušeji dostupnému časování vylepšit svůj, již tak časováním velmi přesný, ZX Spectrum Emulator pro V6Z80P+. Pendulum už mám doma nějaký čas, ale až teď jsem se dostal k tomu jej otestovat. No a jak to tak už chodí, nic není tak jednoduché, jak se na první pohled zdá.
Phil chtěl Pendulum udělat velmi jednoduché a levné, aby si ho mohl pořídit každý, proto zkonstruoval oba oscilátory velmi jednoduše s použitím dvou invertorů 74HC04, krystalu, dvou odporů a dvou kondenzátorů. Bohužel, toto zapojení se pro oscilátory 28.000 MHz a 38.375 MHz ukázalo, jako nepříliš spolehlivé. Nejen, že je citlivé na typy použitých integrovaných obvodů a chová se jinak s IO od Texas Instruments nebo On Semiconductor, ale i poměrně hodně záleží na kapacitě použitých kondenzátorů.
Phil připravil i speciální firmware pro FPGA na kontrolu a změření frekvencí Pendulum. Po prvním zapojení jsem získal následující údaje:
GCLK2DLL: 52.8xxxxx MHz
GCLK3DLL: 56.75432x MHz
Interně se frekvence pro další použití násobí dvěma. Vypadalo to tedy, že oscilátor 28.375 MHz je OK, zatímco 28.000 MHz kmitá pomalu a ještě celkem kolísá. To jsem si ověřil i po připojení osciloskopu a čítače.
Začal jsem tady „ladit“ obvod oscilátoru 28.000 MHz. Obvykle oscilátor kmitá výše a Philovo doporučení bylo zkusit kondenzátory 47 pF místo 22 pF. Ovšem můj oscilátor naopak kmital níž, takže toto logicky nepomohlo. Místo toho jsem zjistil, že kmitá poměrně slušně i bez kondíků jen trochu výš. Nakonec jsem použil 15 pF, protože jsem menší 0805 ani 0603 kondenzátory doma neměl. S 15 pF kondenzátory je frekvence skoro OK. Aktuální měření vypadají takto:
GCLK2DLL: 55.9995XX
Změřeno čítačem: 27.99776 => 55.99552
GCLK3DLL: 56.7543XX
Změřeno čítačem: 28.37510 => 56.75020
Ještě to není úplně super, ale prozatím OK. Zkusím koupit ještě menší kondíky, ale moc se mi takovéto „ladění“ oscilátoru nelíbí. Nicméně jsem vyzkoušel aktuální verzi Alessandrova emulátoru pro Pendulum a musím říct, že patřím k těm šťastným, kterým vše šlape, jak má. Zkoušel jsem různé testy, dema, přepínal jsem časování na 2x i 4x a emulátor byl stabilní a vše se chovalo, jak má.
Philovi také vše chodí, ale bohužel zrovna Alessandro se potýká s potížemi a nestabilitou. Trable samozřejmě hlásí více lidí. To je taky asi důvod, proč Alessandro zatím na vylepšení emulátoru nepokračuje. Doufejme, že se podaří Philovi něco vymyslet a získat spolehlivé a stabilní hodiny, aby mohl Alessandro emulátor dotáhnout.
Ještě je nutné podotknout, že i bez použití Pendulum, je časování Alessandrova emulátoru asi nejlepší ze všech FPGA implementací co znám a samozřejmě i se zapojeným modulem Pendulum je možné snadno přepínat emulační jádra a používat všechny.