OldComp.cz
https://oldcomp.cz/

SN76489AN - otázky k emulácii
https://oldcomp.cz/viewtopic.php?f=136&t=2486
Stránka 12

Autor:  Milsa [ 21.03.2015, 23:15 ]
Předmět příspěvku:  SN76489AN - otázky k emulácii

Na toto by mi asi najlepšie vedel odpovedať Bohuš.

Ide o to, že nie je problém nasimulovať frekvenciu. Ono je to v podstate to isté ako pri 8253. Akurát, že je tu 16 úrovní hlasitosti, ktoré sa v určitých situáciách dajú využiť ako 4 bitový DA prevodník. Niekde som čítal, že po nastavení hlasitosti sa nastaví výstup na log. 1 a teda sa dá využiť ako DA prevodník. Lenže čo ak je zadaná frekvencia a práve v danej chvíli má byť log. 0? Má to byť teda tak, že po zadaní frekvencie sa začína počítať a výstup sa nastaví na log. 1 a po zmene hlasitosti teda tá log. 1 ostane? Iba treba raz za čas nastaviť frekvenciu?

Mám datasheet, ale musím uznať, že zatiaľ zo všetkých obvodov, ktoré som už začal emulovať, je tento datasheet najslabší. Práve preto mám tieto otázky.

Ďakujem za prípadnú pomoc.

Autor:  nobomi [ 22.03.2015, 12:50 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Milsa píše:
Na toto by mi asi najlepšie vedel odpovedať Bohuš.
No tak napiš rovnou mně 8-)

Pro použití jako DA převodník je dobré nastavit dělicí parametr pro frekvenci na 1. Teoreticky by to mělo začít oscilovat na cca 110kHz, tato vysoká frekvence se odstraní na dolní propusti za obvodem, zůstane jen střední hodnota úměrná nastavené hlasitosti. Pak už se mění jenom hlasitost kanálu a tím výstupní napětí. Celkem takto máme 3 kanály (čtvrtý šumový nelze takto snadno použít) na výstupu paralelně, což umožní ještě zvýšit počet možných hodnot. A je to sakra potřeba, hlasitost se nastavuje v logaritmické škále (po 2dB), dát z toho jakous-takous lineární funkci chce trošku počítání a vytvořit si pro použití v programu přepočítavací tabulku.

Vstupem DA převodníku jsou pak 3x4bity, tedy hlasitosti A,B,C v hodnotách 0 až 15, výstup je
U[V]=0,34*( (10^(-A/10)) + (10^(-B/10)) + (10^(-C/10)) )
kde ^ je mocnina a místo hodnoty 15 je potřeba patřičný člen vypustit

Autor:  Milsa [ 22.03.2015, 14:17 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

nobomi píše:
Milsa píše:
Na toto by mi asi najlepšie vedel odpovedať Bohuš.
No tak napiš rovnou mně 8-)

Dá sa to aj tak, ale je lepšie, keď si to tu potom môže prečítať každý, kto tieto informácie bude hľadať.

Autor:  Milsa [ 22.03.2015, 16:40 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Takže ďakujem za osvetlenie.

Nemáš v tom vzorci náhodou chybu? Nemá tam byť pri každom písmene ešte 2*?

A ešte by som sa chcel spýtať, že ako naemulovať dolnú priepusť? Je mi jasné, že nemôžem si len tak zvoliť frekvenciu, po ktorú dám strednú hodnotu a potom už H, L, lebo dolná priepusť sa správa inak, pri určitej frekvencii sa začne ukazovať malá amplitúda, ktorá klesajúcou frekvenciou stúpa.

Teoreticky by som to tak mohol naemulovať, ale nenaruším tak iné "skryté" vlastnosti?

No a ešte jedna otázka: Biely šum je celé spektrum frekvencií. Ako sa môže hovoriť pri tomto obvode o bielom šume s určitou frekvenciou? Ako tento šum emulovať?

Autor:  zz_indigo [ 22.03.2015, 19:32 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

nobomi píše:
...A je to sakra potřeba, hlasitost se nastavuje v logaritmické škále (po 2dB), dát z toho jakous-takous lineární funkci chce trošku počítání a vytvořit si pro použití v programu přepočítavací tabulku.


No tu logaritmicku zavyslost by som bral skor az vyhodu. Ludsky sluch tiez pracuje logaritmicky.

Autor:  zz_indigo [ 22.03.2015, 19:46 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Milsa píše:
A ešte by som sa chcel spýtať, že ako naemulovať dolnú priepusť? Je mi jasné, že nemôžem si len tak zvoliť frekvenciu, po ktorú dám strednú hodnotu a potom už H, L, lebo dolná priepusť sa správa inak, pri určitej frekvencii sa začne ukazovať malá amplitúda, ktorá klesajúcou frekvenciou stúpa.


no naemulovat to mozes cez nejake FIR/IIR atmel ma na to aj appnote. Ale potrebujes vediet aj strmost filtra. (vecsinou to byva nasobok 3db) a cut-off frekvencie je ta ktora je na vystupe filtra znizana o 3db (50%)

Autor:  Milsa [ 22.03.2015, 23:53 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Takže naemuloval som zatiaľ bez podpory dolnej priepuste. Zvuk je otrasný, ešte si to pýta vyladiť, ale ide to. Paráda.

Autor:  Busy [ 23.03.2015, 08:09 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

zz_indigo píše:
nobomi píše:
...A je to sakra potřeba, hlasitost se nastavuje v logaritmické škále (po 2dB), dát z toho jakous-takous lineární funkci chce trošku počítání a vytvořit si pro použití v programu přepočítavací tabulku.
No tu logaritmicku zavyslost by som bral skor az vyhodu. Ludsky sluch tiez pracuje logaritmicky.
Evidentne si nepochopil o com je toto vlakno ... :poke: :bang:

Autor:  zz_indigo [ 23.03.2015, 10:57 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Busy píše:
zz_indigo píše:
nobomi píše:
...A je to sakra potřeba, hlasitost se nastavuje v logaritmické škále (po 2dB), dát z toho jakous-takous lineární funkci chce trošku počítání a vytvořit si pro použití v programu přepočítavací tabulku.
No tu logaritmicku zavyslost by som bral skor az vyhodu. Ludsky sluch tiez pracuje logaritmicky.
Evidentne si nepochopil o com je toto vlakno ... :poke: :bang:


Ale pochopil. To bolo len konstatovanie. Len som zabudol spomenut ze preto bi asi by bolo dobre skusit to napisat cele v logaritmickou matematikou.

Autor:  nobomi [ 23.03.2015, 14:32 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

zz_indigo> bohužel to takhle použít nejde, je to sice logaritmická škála, ale jen s jedním znaménkem, komplech chybí záporné hodnoty, není to symetrické :(

A teď zpět k emulaci analogové části. Na výstupu MZ800 je RC článek, který tvoří dolní propust prvního řádu s dělící frekvencí někde kolem 400 až 700Hz (záleží na poloze potenciometru). Vzhledem k použitému reproduktoru, který je spíš výškový, zdůrazňuje výšky a tak realná dělící frekvence je poslechově vyšší, dejme tomu 1000Hz, aby to v emulaci znělo podobně.

Já používám v emulaci nejjednodušší IIR filtr prvního řádu, přepis, kde IN[i] je původní výstup, OUT[i] filtrovaný:
OUT[i+1]=OUT[i]+(IN[i+1]-OUT[i])/x
kde x = vzorkovací_frekvence/(2*pi*dělící_frekvence)

Pokud to i tak zní divně, můžou za to zrcadlové frekvence vyšších harmonických, pak bude potřeba přikročit k dalším opatřením jako oversampling, decimace, FIR či IIR vyšších řádů, daly by se o tom (a mnozí už začali) psát mnohasetstránková skripta. Já používám v emulaci oversampling na cca 221kHz (synchronně se vstupem SN76489), pak IIR dolní propust prvního řádu volitelně 500-2000Hz, pak horní propust cca 50Hz, pak osmipólový IIR antialiasing filtr, nakonec downsampling decimací a interpolací na 44100Hz nebo dithering do 10bitů při emulaci na ARMovi, aby to znělo v rámci možností dobře a věrně vedle originálu. Většina emulátorů to nedělá a hlavně na vyšších tónech je to bolestně poznat.

A ještě k dotazům, chyba ve vzorci není, už jsem to rovnou pokrátil ( -A/10 je -2*A/20 ). A "bílý šum" je teoretické zbožné přání, je to jinak MLS (maximum length sequence) tedy posloupnost pseudonáhodných bitů, které musejí mít nějaké ty hodiny, které určují kdy se vygeneruje další bit, odtud "frekvence bílého šumu", je to frekvence hodin na vstupu generátoru. Pěkný popis generování šumu je například zde, ale bacha třeba v popisu použití jako DA jsou chyby v návodu.

Autor:  Milsa [ 23.03.2015, 20:52 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Prejdem na body:
1. Vzorcu už konečne asi začínam rozumieť. Ak správne rozumiem, tak i+1 je nasledujúca vzorka, keďže sa pracuje s frekvenciou a jedným vstupom a výstupom by sme nevystačili.
2. Ak teda nie je chyba vo vzorci, tak útlm na 1/10 je o 20 dB, nie o 10 dB ako to je zvyčajne (nie vždy). Správne?

Autor:  zz_indigo [ 23.03.2015, 21:23 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Milsa píše:
1. Vzorcu už konečne asi začínam rozumieť. Ak správne rozumiem, tak i+1 je nasledujúca vzorka, keďže sa pracuje s frekvenciou a jedným vstupom a výstupom by sme nevystačili.


Ano. A cim ma byt filter vyssieho radu tym treba vediet viac hodnot. (Iked ja si ten vzorec pamatam z predchadzajucou vzorkou predsalen vies co uz si dostal ale nie co dostanes ;-) )

Milsa píše:
2. Ak teda nie je chyba vo vzorci, tak útlm na 1/10 je o 20 dB, nie o 10 dB ako to je zvyčajne (nie vždy). Správne?


1/10 v pripade napetia/prudu je to 20db v pripade vykonu 10db. napr tu: http://elnika.sweb.cz/mereni/decibely.htm

Autor:  Milsa [ 23.03.2015, 21:41 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

S tou predchádzajúcou vzorkou máš pravdu, ale pochopili sme sa.

A tých 20 dB máš tiež pravdu. Kde sú tie časy, keď som ešte z rádia na kazety nahrával. Vtedy som si pamätal aj to, že 6 dB bolo 0,5. Predvčerom som si túto vedomosť oprášil.

Autor:  Milsa [ 23.03.2015, 22:09 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

V emulácii mám akýsi brum. Počuť to ale iba v BASICu, čo to môže spôsobovať? Odhadujem frekvenciu okolo 30-40 Hz.

Doplnené: Zatiaľ sa jedná samozrejme iba o čistú emuláciu bez úprav cez rôzne filtre.

Autor:  zz_indigo [ 24.03.2015, 08:09 ]
Předmět příspěvku:  Re: SN76489AN - otázky k emulácii

Milsa píše:
S tou predchádzajúcou vzorkou máš pravdu, ale pochopili sme sa.

A tých 20 dB máš tiež pravdu. Kde sú tie časy, keď som ešte z rádia na kazety nahrával. Vtedy som si pamätal aj to, že 6 dB bolo 0,5. Predvčerom som si túto vedomosť oprášil.


:-D tak toto nepocujem ani v tedy ked sa nieco po par neuspesnich pokusoch konecne spravy po mojom

Stránka 12 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/