Szerző Téma: Cartridge építés  (Megtekintve 6059 alkalommal)

0 Felhasználó és 1 vendég van a témában

dikdom

  • Newbie
  • *
  • Hozzászólások: 9
  • Karma: +0/-0
    • Profil megtekintése
Cartridge építés
« Dátum: 2017. Augusztus 21. - 16:04:09 »
Sziasztok!

Az az elvetemült ötletem támadt, hogy építenék egy nagyobbacska cartridge modult a TVC 64k+ -hoz és ezzel kapcsolatban szeretnék pár tanácsot kérni. A programmodul úgy lenne kialakítva, hogy a rajta található DIP kapcsolók segítségével a 8 beégetett program közül egyszerre csak egy látszódna a gépnek.
Egy korábbi leírást találtam a 27CXXX EEPROMOKhoz, de azokat +13V -al kell programozni, nekem nincs EEPROM íróm (csak emiatt nem is tervezek beszerezni).
28CXXX modulokban gondolkozom, azokat lényegesen egyszerűbb megírni egy mikrokontrollerrel, oda elég a +5V. Jelenleg a AT28C010 vagy 4db AT28C256 van a porondon (1Mbit összesen mind a kettő megoldás).

Mondjuk a könnyű írás ott elvérzik, hogy nem találok olyan csatlakozót, ami a TVC oldalán van, amibe a programmodult bele kell csúsztatni. Pedig az lenne a legegyszerűbb, ha egy segéd lapba bele tudnám csak csattintani, és ott a már előre felprogramozott ArduinoMega2560 szépen belerakja az EEPROM(-ok)ba a megfelelő byte-okat.
- Kérdés #1: Tudna valaki küldeni egy linket, hogy pontosan milyen csatlakozót keressek?

Időzítés. A 4db EEPROM -ot okosan össze kell hangolni. Én úgy látom, hogy ez egy BCD dekóder és egy quad OR IC segítségével megoldható (most nézem csak a gyári megoldást, az 54LS138-at. Azt még végig kell gondoljam). A nagy EEPROM az gyors, oda nem kell semmi extra! :)
- Kérdés #2: Jól értem, hogy ha 350ns alatt tudom tartani az olvasási időt (28C010 -nél 120ns, 28C256 -nál a kiegészítő logikai ármkörökkel max kb 250ns) akkor már jó vagyok?

Egyelőre az EAGLE -el szenvedek, nem találok benne 32PLCC -aljzatot (a netet még nem olvastam ki hozzá teljesen), de az is nagy gond, hogy nincs meg a pontos geometriája a cartridge-nek.
- Kérdés #3: hol találok ilyen jellegű leírást? Vagy az a legegyszerűbb, hogy ha szétkapom apósomék BRIDZS modulját és leméricskélem? Remélem valahova szépen le van írva, de a kapcsolási és tervezési rajzok között nem találtam meg...

Az eredeti modulokban (a fényképek alapján, meg a már fent említett BRIDZS modulban) van egy pár kondenzátor.
- Kérdés #4: azokra mi szükség van? A programmodul nem azt a +5V tápfeszt kapja, amit a CPU meg minden más, amik miatt már egyébként is ki kellett simítani a tápfeszültséget? Minek oda még kondi?

Előre is köszönöm a segítséget!


Zozosoft

  • Newbie
  • *
  • Hozzászólások: 33
  • Karma: +2/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #1 Dátum: 2017. Augusztus 22. - 22:12:44 »
Miért nem Flash ROM? Azt akár TVC-n is lehetne írni.

dikdom

  • Newbie
  • *
  • Hozzászólások: 9
  • Karma: +0/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #2 Dátum: 2017. Augusztus 23. - 13:18:11 »
Ezt kifejtenéd?
Ha jól értem arra gondolsz, hogy a bővítőbe tenném a ROM-ot (flashrom?)
- TVC -ről írni annyira nem volna jó, mert nem tudom a TVC memóriájába belevarázsolni a 8db cartridge ROM tartalmát
- Bővítőről nem tud bootolni a TVC (ha jól emlékszem)
- Bővítőből csak 8k -t lehet egyszerre belapozni (mondjuk ennek kicsit ellentmond a 32k-s bővítés)

De lehet, hogy el vagyok kicsit tévedve.

Zozosoft

  • Newbie
  • *
  • Hozzászólások: 33
  • Karma: +2/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #3 Dátum: 2017. Augusztus 23. - 14:31:35 »
A Flash ROM az tovább fejlesztett EEPROM, ami arra van kitalálva, hogy ne kelljen kivenni, külső programozóval programozni, hanem beépítve a rendszerben lehet átprogramozni. Magyarán ráépíted a cartridge-re, bedugod a TVC-be, és azon feltöltöd rá a tartalmat.
Z80-as környezetben minket a 29F, 49F, 29C, 29EE, 39SF sorozatú IC-k érdekelnek. A programozás ezeknél úgy történik, hogy bizonyos kódcímekre be kell írni megadott bájtsorozatot. Le lehet kérdezni az IC típusát, törölni az egész IC vagy egy szektorának tartalmát, valamint beírni egy bájtot. Az írásra ugyanaz vonatkozik, mint az EPROM-oknál: törléskor 1-be állnak a bitek, azaz FFh bájtokkal lesz tele, írásnál 1-es bitet lehet 0-ba írni. Mivel bájtonként megy az írás, nem kell, hogy az össze tartalom egyszerre a TVC memóriájában legyen.

Az egyik fő különbség ami ketté osztja a szóba jöhető IC-k körét, az, hogy milyen kód címeket használnak. Az egyik variációban 16 bites a címzés, x5555h és x2AAAh a címek. A másik pedig 12 bites címzést, xx555h és xx2AAh. Jelen esetben mivel csak korlátozott terület látszik egyszerre az IC-ből ezért a 12 bites csapat használható.

Pl egy bájt beírása így néz ki:
xx555h   AAh   xx2AAh   55h   xx555h   A0h   Address   Data

Ami még fontos a IC típus kiválasztásánál, az a szektor kiosztás, ami rendkívül változatos. Ez abból a szempontból lényeges, hogy a törlés minimum egysége a szektor. Tehát nem lehet csak úgy 8K-t törölni, ha pl 64K-s szektorok vannak. Viszont a már törölt területet nem muszáj egyben írni, lehet külön külön feltölteni rá 8K-s részeket.
De azt is el lehet játszani (kicsit hely pazarlóan), hogy veszel egy 512K-s IC-t, amiben 8x64K szektorok vannak, és a címvezetékek bekötésével úgy kötöd be, hogy mindegyikből csak az első 8K legyen látható, azaz így lesz 8x8K, amiben a szektor törlés csak az adott 8K-t törli.

A címkiválasztó kapcsolókon kívül én még kettőt tennék rá: egy írásvédelmit, és még egy ami letiltja a cartridge elérését (ne induljon el).

Végezetül itt egy táblázat a szóba jöhető IC-kről (gyártó, típus, kiolvasható gyártó és típuskód, méret, szektor kiosztás:

EON   EN29F512   7Fh/1Ch   21h/21h   64K   4*16K
SGS Thomson   M29F512B   20h   24h   64K   No Sectors
AMD   AM29F010A/B   01h   20h   128K   8*16K
Austin   AS29F010   01h   20h   128K   8*16K
AMIC   A29001T/AT/BT/A290011T/AT/BT   37h   A1h   128K   32K/32K/32K/16K/4K/4K/8K
AMIC   A29001U/AU/BU/A290011U/AU/BU   37h   4Ch   128K   8K/4K/4K/16K/32K/32K/32K
AMIC   A29010/A/B   37h   A4h   128K   32K/32K/32K/32K
EON   EN29F010   7Fh/1Ch   20h/20h   128K   8*16K
SGS Thomson   M29F010B   20h   20h   128K   8*16K
Macronix   MX29F001T   C2h   18H   128K   64K/32K/8K/8K/4K/4K/8K
Macronix   MX29F001B   C2h   19H   128K   8K/4K/4K/8K/8K/32K/64K
PMC   Pm39SF010   9Dh   1Ch   128K   32*4K
Catalist   CAT29F150T   31h   B0h   192K   (64K)/64K/64K/32K/8K/8K/16K
Catalist   CAT29F150B   31h   34H   192K   16K/8K/8K/32K/64K/64K/(64K)
AMD   AM29F002T/NT/BT/NBT   01h   B0h   256K   64K/64K/64K/32K/8K/8K/16K
AMD   AM29F002B/NB/BB/NBB   01h   34H   256K   16K/8K/8K/32K/64K/64K/64K
AMIC   A29002T/A290021T   37h   8Ch   256K   64K/64K/64K/32K/8K/8K/16K
AMIC   A29002U/A290021U   37h   0Dh   256K   16K/8K/8K/32K/64K/64K/64K
Catalist   CAT29F002T   31h   B0h   256K   64K/64K/64K/32K/8K/8K/16K
Catalist   CAT29F002B   31h   34H   256K   16K/8K/8K/32K/64K/64K/64K
emtc   eM29F002AT/ANT   7Fh/29h   00h/01h   256K   64K/64K/64K/32K/8K/8K/16K
emtc   eM29F002AB/ANB   7Fh/29h   00h/02h   256K   16K/8K/8K/32K/64K/64K/64K
EON   EN29F002T/NT/AT/ANT   7Fh/1Ch   7Fh/92h   256K   64K/64K/64K/32K/8K/8K/16K
EON   EN29F002B/NB/AB/ANB   7Fh/1Ch   7Fh/97h   256K   16K/8K/8K/32K/64K/64K/64K
Fujitsu   MBM29F002TC   04h   B0h   256K   64K/64K/64K/32K/8K/8K/16K
Fujitsu   MBM29F002BC   04h   34H   256K   16K/8K/8K/32K/64K/64K/64K
Hynix   HY29F002T   ADh   B0h   256K   64K/64K/64K/32K/8K/8K/16K
Hynix   HY29F002   ADh   34H   256K   16K/8K/8K/32K/64K/64K/64K
PMC   Pm29F002T   9Dh   1Dh   256K   128K/96K/8K/8K/16K
PMC   Pm29F002B   9Dh   2Dh   256K   16K/8K/8K/96K/128K
PMC   Pm39SF020   9Dh   4Dh   256K   64*4K
Texas Instruments   TMS29F002T/RT   01h   B0h   256K   64K/64K/64K/32K/8K/8K/16K
Texas Instruments   TMS29F002B/RB   01h   34h   256K   16K/8K/8K/32K/64K/64K/64K
SGS Thomson   M29F002T/NT   20h   B0h   256K   64K/64K/64K/32K/8K/8K/16K
SGS Thomson   M29F002B   20h   34h   256K   16K/8K/8K/32K/64K/64K/64K
Macronix   MX29F002T/NT   C2h   B0h   256K   64K/64K/64K/32K/8K/8K/16K
Macronix   MX29F002B/NB   C2h   34h   256K   16K/8K/8K/32K/64K/64K/64K
Macronix   MX29F022T/NT   C2h   36h   256K   64K/64K/64K/32K/8K/8K/16K
Macronix   MX29F022B/NB   C2h   37h   256K   16K/8K/8K/32K/64K/64K/64K
AMD   AM29F004T   01h   77h   512K   64K/64K/64K/64K/64K/64K/64K/32K/8K/8K/16K
AMD   AM29F004B   01h   7Bh   512K   16K/8K/8K/32K/64K/64K/64K/64K/64K/64K/64K
Fujitsu   MBM29F004TC   04h   77h   512K   64K/64K/64K/64K/64K/64K/64K/32K/8K/8K/16K
Fujitsu   MBM29F004BC   04h   7Bh   512K   16K/8K/8K/32K/64K/64K/64K/64K/64K/64K/64K
PMC   Pm29F004T   9Dh   1Eh   512K   128K/128K128K/96K/8K/8K/16K
PMC   Pm29F004B   9Dh   2Eh   512K   16K/8K/8K/96K/128K/128K/128K
PMC   Pm39SF040   9Dh   4Eh   512K   128*4K
AMD   AM29F040B   01h   A4h   512K   8*64K
Austin   AS29F040   01h   A4h   512K   8*64K
AMIC   A29040/A/B/C/D   37h   86h   512K   8*64K
EON   EN29F040/A   7Fh/1Ch   04h/04h   512K   8*64K
Force   FT29F040B   01h   A4h   512K   8*64K
Fujitsu   MBM29F040A/C   04h   A4h   512K   8*64K
Hynix   HY29F040A   ADh   A4h   512K   8*64K
SGS Thomson   M29F040B   20h   E2h   512K   8*64K
Macronix   MX29F040/C   C2h   A4h   512K   8*64K
Macronix   MX29F004T   C2h   45h   512K   64K/64K/64K/64K/64K/64K/64K/32K/8K/8K/16K
Macronix   MX29F004B   C2h   46h   512K   16K/8K/8K/32K/64K/64K/64K/64K/64K/64K/64K

dikdom

  • Newbie
  • *
  • Hozzászólások: 9
  • Karma: +0/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #4 Dátum: 2017. Augusztus 23. - 14:44:12 »
Wow. Köszönöm.
Ezzel most elleszek egy darabig.

dikdom

  • Newbie
  • *
  • Hozzászólások: 9
  • Karma: +0/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #5 Dátum: 2017. Augusztus 23. - 15:46:54 »
Ok, megnéztem az egyik IC adatlapját (gondolom a többi is hasonlóképpen írható).
Te ugye nem a cartridge bővítőre gondolsz, mivel ott nincs /BWR kivezetés és +12V? Ezeket a ROM-okat a gép tetején levő bővítővel lehetne íratni.
Az AT28Cxxx IC annyival jobb ezeknél, hogy nem 'kell' törölni a lapokat és elég a +5V. Gyakorlatilag nem felejtő SRAM-ként lehet használni. Ha jól értettem...
Viszont a cartridge slotban továbbra sincs /WE, csak /RD meg /CART, ezért gondoltam az IC-ket külön írni.



Zozosoft

  • Newbie
  • *
  • Hozzászólások: 33
  • Karma: +2/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #6 Dátum: 2017. Augusztus 25. - 10:34:00 »
Nem kell ezeknek se +12V (az a 28F sorozat volt aminek még kellett).
WR jelnek kell lenni cartridge-ben is, hiszen pl az SD interface is oda megy, aminek van RAM-ja, van Flash ROM-ja, no meg az SD-t is lehet írni :-)

Az AT28C-nél ott lehet gond, ha véletlenül van ROM területre írás az adott programban. Egyrészt mert így felülíródhat, másrészt meg mivel az írás érzékelésekor bekapcsol DATA Polling, (akkor is ha a SDP be van kapcsolva!), így ezen idő alatt nem a valódi adat olvasható ki az adott területről.
Vagyis itt mindenképpen kell WE jumper, amit csak a programozás idejére szabad engedélyezni.
(A hasonlóan működő Atmel/Winbond 29C/29EE sorozatokkal EP-n már belefutottunk ebbe a problémába.)

dikdom

  • Newbie
  • *
  • Hozzászólások: 9
  • Karma: +0/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #7 Dátum: 2017. Augusztus 27. - 08:54:46 »
Bocs, a +11-13V a lezáráshoz, firmware kód olvasáshoz, eeprom teljes törléshez kell, normál működéshez tényleg nem. Ezt benéztem.
A WR jel vezetéket (illetve erősített, negált, azaz /BWR jelet) én nem találtam meg a kapcsolási rajzon, se a cartidge-ekén (http://tvc.homeserver.hu/html/pic/cartridge/hbr_tvc.gif), se a HBA rajzon (http://tvc.homeserver.hu/doc/tervrajzok/TVC_HBA2_rajzok.pdf - utolsó oldal, középen fölül látható a cartridge kimenet, ha jól értelmezem). Rossz helyen keresem? Ránéznél te is?

A WR jelet a kártyán felhúznám +5V -ra és akkor nincs írás, de mondom: cartridgeban én nem találtam meg egyébként sem a WR-t.

dikdom

  • Newbie
  • *
  • Hozzászólások: 9
  • Karma: +0/-0
    • Profil megtekintése
Re:Cartridge építés
« Válasz #8 Dátum: 2017. Augusztus 28. - 21:56:32 »
Egy 'instant get' érzést követve megrendeltem a AM29F040B IC-t. Ezt jóval macerásabb beprogramozni mint a 28C256 -t... (viszont nincsenek 'véletlen' prograzások és a kapacitása is 8x -os, ebayen fajlagosan sokkal olcsóbb volt).