Welcome, Guest. Please login or register.


Author Topic: SID illesztés EP-hez (Read 24502 times)

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #90 on: 2015.June.19. 19:17:41 »
Képeket mikor látunk a cuccról? :-)

No igen... Ezt gonosz módon a végére hagytam. Ugyanis itt fog kiderülni, hogy érdekes-e, vagy totál érdektelen az egész eddigi farigcsálás.

A cucc a "mindenes" elektronikámra került rá. Itt van a kiinduló állapot (ezt régebben már mutattam):



Túl sok hely nincs rajta, de az IDE csatlakozó melletti részt (jobb-alsó sarok) pont erre a feladatra néztem ki. Kell a cím illetve az adat tárolására egy-egy latch, ezekhez meg kell a címdekóder. Ez utóbbit most "nagyvonalúan" elintéztem a CPLD-vel (aminek az erőforrásai ezennel el is fogytak...), de ez azért SSI-kből se egy nagy kaland. A tárolókon kívül felkerült még egy inverter meg egy mikrovezérlő:



Ehhez hozzá jött még pár sallang (a rakás vezetékkel) a túloldalra...



...majd ennyi. :-D A fent is linkelt videóban a hangot ez az egész cucc produkálja. Igen, nincs benne SID csip.

A hangot szoftverből a mikrovezérlő állítja elő. Az emulációt a SwinSID projekt firmware-je csinálja, ami ugyan nem tökéletes, de azért annyira nem is rossz. A µC két 8 bites PWM csatornával állítja elő a 16 bites analóg jelet. A jelenlegi verziómban ebből csak a "nagyobb helyiérték" van megcsinálva, tehát a fenti hangot egy 8 bites D/A állította elő! Ahhoz képest szerintem nem rossz.

Azért nem minden szép, pár szó a negatívumokról:
  • A hangerő regiszter nincs emulálva, jelenleg minden maximális hangerőn szól. (A D/A felbontása gyaníthatóan kevés a megfelelő hanghoz alacsonyabb hangerőn.) Emiatt a hangerőregiszterrel megvalósított digitalizált hanglejátszás nem működhet, viszont itt ez szerintem úgysem lényeges. (Az eredeti SID-es digi-zenék lejátszásához a Z80-on futó szoftveres 6502 emuláció úgysem elég gyors, az ilyen zenét natív Z80-ra kellene "konvertálni". De ha az megvan, akkor a Dave D/A-ja is rendelkezésre áll a digihez, szóval...)
  • A cuccban a µC egy ATmega88. Ez a specifikáció szerint 20 MHz-es órajellel hajtható maximum. Itt egy csöppet óverklokkolva van, 32 MHz-en jár, látszólag teljesen hibátlanul. (És még így sem melegszik!) Azt gondolom, nagyon ezért sem célszerű aggódni, EP-n az overclock-nak amúgy is van hagyománya...
  • Nincs analóg hangbemenet, külső hangforrást nem lehet szűrőzni. Kár érte?
  • A SID olvasható regiszterei egyáltalán nincsenek megvalósítva, de az olvashatóságot már régebben elvetettem, emiatt ennek semmi jelentősége itt.

Viszont van azért pozitívum is:
  • A cuccban nincs már nem gyártott alkatrész! (Gondolom ennek az előnyét nem kell ecsetelni.)
  • Az egész elektronika viszonylag egyszerű, mivel a rendes SID kiszolgálásához ehhez képest azért még kell pár apróság.
  • Nem csak egyszerű, viszonylag olcsó alkatrészek kellenek hozzá, ráadásul van mindenből "kezelhető" tokozású verzió is! (Mint látható...)
  • Az "olcsóság" miatt valójában nem kunszt sztereó verziót csinálni...

Amikor az egész ötlet felmerült bennem, akkor én eleve ebben a verzióban gondolkodtam, de ez lehet hogy most egy kicsit csalódás. :) Van értelme a rendes SID-es verziót megcsinálni? Ahhoz azért még kell pár apróság. (Pl. megfelelő órajel, meg egy logika, ami szinkronizáltan eteti a csipet.) Mindezt azért, hogy nekem legyen egy... :) (Mivel SID-et évtizedek óta csak bontásból lehet beszerezni.)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID illesztés EP-hez
« Reply #91 on: 2015.June.19. 20:15:32 »
Amiket leírtál hiányosságokat, azok eleve a SwinSID hiányosságai?

Meg lehet csinálni ezt olyan szörnyű sok lábú nélkül is? :oops:

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #92 on: 2015.June.19. 20:34:40 »
Amiket leírtál hiányosságokat, azok eleve a SwinSID hiányosságai?

Igen, azok kizárólag ezen "emu" hiányosságai, nem a többi körítése.

Meg lehet csinálni ezt olyan szörnyű sok lábú nélkül is? :oops:

Kell hozzá majd a 0x08..0x0F címtartományos címdekóder, azon kívül a két tároló + az inverter meg a µC. Ezek egyike se szörnyű sok lábú szerintem. :) Pont az a lényeg, hogy ez simán utánépíthető. Csak a címdekódert most "ellinkeskedtem".

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #93 on: 2015.June.20. 10:21:40 »
Nekem tetszik ez a nem SID-es megvalósítás, egyszer a bontott SID chipek is elfogynak, hacsak valaki nem kezdi el újra gyártani, de gondolom akkora igény meg nincsen rá :)
A leírt negatívumokat én nem látom negatívumnak, vagyis olyanok, amik felett simán el lehet siklani.
Az is tetszik, hogy alig került rá plusz cucc az eredeti kártyára.
Az eredeti kártya az IDE illesztésen kívül mit tudott még?
« Last Edit: 2015.June.20. 10:24:47 by geco »

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #94 on: 2015.June.21. 11:55:00 »
Nekem tetszik ez a nem SID-es megvalósítás, egyszer a bontott SID chipek is elfogynak, hacsak valaki nem kezdi el újra gyártani, de gondolom akkora igény meg nincsen rá :)

Szerintem a bontottak lassan már el is fogytak. :) Az újragyártás eléggé esélytelennek tűnik, ahhoz azért kellene pár feltételnek teljesülnie. Az igazán érdekes az eredeti SID-ben úgyis az, hogy a nagy része egy digitális "alkatrészekből" felépített analóg (!) áramkör. Manapság ilyet... :)

A leírt negatívumokat én nem látom negatívumnak, vagyis olyanok, amik felett simán el lehet siklani.
Az is tetszik, hogy alig került rá plusz cucc az eredeti kártyára.
Az eredeti kártya az IDE illesztésen kívül mit tudott még?

Az egyik nagy előny az, hogy ezt ma is meg lehet építeni. Hiába "szebb" az eredeti csip, ha nincs. :-D (Ezért is kérdéses számomra, hogy érdemes-e megcsinálnom az igazi SID-es változatot.) Ahogy számolom, ha a címdekóderes mókát belepakolnám egy GAL-ba, akkor talán 5 db. IC elég lenne az egészhez. (Sztereó verzióban meg 6!) De a GAL-t is el lehet hagyni, kb. 3 IC-ből ki lehet helyettesíteni, akkor nem kell bele semmilyen programozható logika.

(A kártyám az IDE-n kívül most tartalmaz 512K-nyi ROM helyet, 512K-nyi RAM-ot, meg az ExDOS-hoz tartozó floppy vezérlőt. Ja, rajta van egy slotnyi buszkiterjesztő egység, emiatt itt ugyan elfogyott a hely, de az emeleten lehet folytatni. :) Jelenleg ez a legbonyolultabb egybe megépített ilyen áramköröm, pedig azért forrasztgattam már előtte is egyet 's mást. :) )

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #95 on: 2015.June.21. 17:19:24 »
Ezzel a verzióval össze lehet hasonlítani nagyjából mennyivel lassabb a SID lejátszás az emulált 6510-essel, mint eredeti vason (betettem a keretvillogást, amit mondtál)
A csomag tartalmazza a forrást is.

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #96 on: 2015.June.21. 22:38:56 »
Ezzel a verzióval össze lehet hasonlítani nagyjából mennyivel lassabb a SID lejátszás az emulált 6510-essel, mint eredeti vason (betettem a keretvillogást, amit mondtál)

Teszteltem is vele egyet. Itt egy teszt-felvétel, ennek az elején ugyanaz a zene szól, mint a feljebb már linkelt C64-es verzióban. Láthatóan tovább tart azért EP-n futtatni... :) A videó másik felében egy másik zene szól, ezen meg az látható, amikor nincs elég idő a lejátszó futtatására, de ebben csak néha fogy el az idő, a zenén - érdekes módon - még nemigen hallatszik.

A végén viszont látható egy bug is, aminek az okát nem tudom. Pécén másoltam fel a CF kártyára a zenéket, de a "hosszú fájlnevekkel" nem törődtem. Amikor ilyet próbál a FILE megnyitni, szép fagyi lesz belőle. Ezt mi okozhatja? A lejátszó File Not Found esetén borul? A FILE nem szereti? ExDOS bug? :-D

Aztán még egy "hiba" van, ami valójában csak egy apróság. A lejátszóból a kilépés nem kapcsolja ki a (fake) SID hanggenerátorait. (A Dave-es hang az eredeti lejátszóban ki lett kapcsolva ilyenkor, ezt a ficsőrt ide is be lesz majd célszerű rakni a megfelelő módon.) Viszont a SwinSID nem emulálja a hangerőt, emiatt csak azt 0-ra állítani lehet hogy kevés lesz. A $D404, a $D40B illetve a $D412 regiszter(hez tartozó SID regiszter) kinullázása megoldja ezt a gondot, bár ha az összes regiszter fel van töltve $00-val, az a tuti. :)

A csomag tartalmazza a forrást is.

Ó, szuper! Lehet hogy a hang bekapcsolva maradását én is meg tudom oldani? :) (Majd ránézek.)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: SID illesztés EP-hez
« Reply #97 on: 2015.June.21. 23:00:15 »
A végén viszont látható egy bug is, aminek az okát nem tudom. Pécén másoltam fel a CF kártyára a zenéket, de a "hosszú fájlnevekkel" nem törődtem. Amikor ilyet próbál a FILE megnyitni, szép fagyi lesz belőle. Ezt mi okozhatja? A lejátszó File Not Found esetén borul? A FILE nem szereti? ExDOS bug? :-D
A hullámvonal érvénytelen karakter EXOS fájlnévben.

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #98 on: 2015.June.22. 09:54:54 »
Aztán még egy "hiba" van, ami valójában csak egy apróság. A lejátszóból a kilépés nem kapcsolja ki a (fake) SID hanggenerátorait. (A Dave-es hang az eredeti lejátszóban ki lett kapcsolva ilyenkor, ezt a ficsőrt ide is be lesz majd célszerű rakni a megfelelő módon.) Viszont a SwinSID nem emulálja a hangerőt, emiatt csak azt 0-ra állítani lehet hogy kevés lesz. A $D404, a $D40B illetve a $D412 regiszter(hez tartozó SID regiszter) kinullázása megoldja ezt a gondot, bár ha az összes regiszter fel van töltve $00-val, az a tuti. :)

Ó, szuper! Lehet hogy a hang bekapcsolva maradását én is meg tudom oldani? :) (Majd ránézek.)
Megcsináljam a regiszter nullázást kilépéskor, vagy megcsinálod? :)

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #99 on: 2015.June.23. 15:38:25 »
Megcsináljam a regiszter nullázást kilépéskor, vagy megcsinálod? :)

Ó, köszi a megtiszteltetést, de egyelőre csak "ugatom" a szoftveres részét a témának. Szerintem előbb beleírod + lefordítod + közzéteszed a módosított verziót, mint hogy én egyáltalán megtalálnám a kívánt részt a forráskódban! :-D (De persze ez azért majd változik. ;) ) Amúgy is, egy kapcsolási rajzzal vagyok én adós inkább, úgy sejtem. (Előbb-utóbb meg lesz az is!)

Offline geco

  • EP addict
  • *
  • Posts: 7085
  • Country: hu
    • Támogató Támogató
Re: SID illesztés EP-hez
« Reply #100 on: 2015.June.23. 18:33:27 »
Ó, köszi a megtiszteltetést, de egyelőre csak "ugatom" a szoftveres részét a témának. Szerintem előbb beleírod + lefordítod + közzéteszed a módosított verziót, mint hogy én egyáltalán megtalálnám a kívánt részt a forráskódban! :-D (De persze ez azért majd változik. ;) ) Amúgy is, egy kapcsolási rajzzal vagyok én adós inkább, úgy sejtem. (Előbb-utóbb meg lesz az is!)
Ja, mondjuk az általam összehányt forráskódban néha én is nehezen boldogulok :D , szerencsére a sid.asm nem az enyém, csak módosítottam benne.
A linkelt verzióban benne van a SID 0-ázás, remélem jól működik.

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #101 on: 2015.June.24. 12:48:58 »
A linkelt verzióban benne van a SID 0-ázás, remélem jól működik.

Kipróbáltam, működik kiválóan, köszönöm! :)

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #102 on: 2015.July.05. 22:59:31 »
Amúgy is, egy kapcsolási rajzzal vagyok én adós inkább, úgy sejtem. (Előbb-utóbb meg lesz az is!)

Eljött az előbb-utóbb ideje. Összedobtam egy rajzot, ami elsőre egy kicsit horrornak tűnhet, de azért szerintem nem az:



(Itt van róla egy pdf is, az legalább vektoros.) Pár megjegyzés:

  • Az rajz jelenleg csak egy vázlat, még NINCS KIPRÓBÁLVA! Bármilyen bugriportot szívesen veszek!
  • Az #1-es számmal jelölt körbekeretezett részt egy darab GAL16V8-cal ki lehetne helyettesíteni (3 db. IC helyett 1), de első körben nem akartam népharagot, (megint) egy programozható logikával. :)
  • A #2-es számmal jelzett részen található két jumper, a default beállítás bejelölve. Ezeket átrakva a másik pozícióra egy második kártya is kapcsolható a géphez. Az alapbeállítás a 0x0C..0x0F tartományt választja ki, a másik a 0x08..0x0B-t. Az U5-ös buszmeghajtó ezzel a felépítéssel az egész címtartomány (0x08..0x0F) I/O elérésekor engedélyeződik, de ez nem okoz két kártya esetén sem problémát, mert olvasáskor nem hajt a gép felé. (A kártyát olvasni továbbra sem lehet. Ebbe a címdekódolásba egy kissé sikerült belekavarodnom, de azért remélem a legjobbakat... :) )
  • A kártya jelenlegi verziója sztereó felépítésű, két µC van rajta a két külön csatornához. Ha elég csak a monó verzió, a #3-mal jelzett, bekeretezett részt kell elhagyni. (A µC, meg mellette pár apró sallang.) Ebben az esetben a #4-gyel jelölt jumpert össze kell kötni, így az egy szem fake-SID mindkét csatornán szól.
  • A két fake-SID-nek közös a cím + adattárolója, de ez csak annyiból érdekes itt, hogy az "egyik" cím beállításával beáll a "másik" is. Tehát úgy kell használni, hogy:
    • "Egyik" cím beállít
    • "Egyik" adat beír
    • "Másik" cím beállít
    • "Másik" adat beír
    Összekeverni nem érdemes. :)
  • Az #5-ös "csatlakozó" a µC programozására van, ha az "külsőleg" történik, akkor akár el is hagyható. A második µC ezen lábai (#6) a rajzon nincsenek bekötve; sztereó verzió esetén is elég csak az egyik, mivel a programozás idejére a csatlakozóhoz tartozó IC foglalatba bele lehet rakni a másik csipet is. :)
  • A 100nF-os "hidegítő" kondenzátorokból kb. annyi van, ahány IC tápláb összesen. Értelemszerűen mindegyikhez kell egy-egy. (Az SSI-k táp-lábai külön nincsenek jelölve, de azokat értelemszerűen be kell kötni.)

Azt hiszem kb. ennyi. Egyelőre alkatrészek híján összerakni nem tudom, de előbb-utóbb arra is sor fog kerülni. Amúgy igen "izgi" a megoldás; utoljára PLD nélkül nem is tudom mikor terveztem ilyesmit... :razz:

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: SID illesztés EP-hez
« Reply #103 on: 2015.July.07. 00:29:34 »
Hat ez nekem horror, de gratulalok hozza, en nem tudtam volna persze igy - se :) Tudom, ne okoskodjak, mert volt kerdes errol, de nem lett volna ... megis ... egyszerubb jelen esetben a 16 bites cimzessel? Ugy meg lehetne sporolni par dolgot ...

Offline balagesz

  • EP user
  • *
  • Posts: 277
  • Country: hu
Re: SID illesztés EP-hez
« Reply #104 on: 2015.July.08. 15:23:05 »
de nem lett volna ... megis ... egyszerubb jelen esetben a 16 bites cimzessel? Ugy meg lehetne sporolni par dolgot ...

Valójában "túl sok" alkatrészt nem lehetne vele spórolni. Az egyik alap "szabály" az volt, hogy minden EP-s jelet maximum egy bemenettel terheljen az áramkör. Ha 16 bites címzés lenne, akkor a címtároló nem az adatvonalakról kapná a bemenetét, emiatt arra alapból is csak egy bemenet kapcsolódna. Ekkor az U5-ös buszmeghajtót el lehetne hagyni. A címdekóder sokkal egyszerűbb nem lenne... Vagy lehetne "spórolni" akkor, ha sima monó verzió lenne alapból, ott a +µC meg talán a 74HCT02 lenne elhagyható. De igazából nem olyan vészes ám ez! :-D