Pagination d'une EEPROM avec une GAL V16 / V20 ...

C'est le lieu des discussions diverses et variées, mais toujours en rapport avec le thème général du forum et dans l'esprit de celui-ci.

Modérateurs : Papy.G, fneck, Carl

Avatar du membre
Silou78
Messages : 80
Enregistré le : 11 févr. 2017 15:54
Localisation : Yvelines (78)

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par Silou78 » 13 juin 2017 22:07

6502man a écrit :Concernant A15-A12 ce n'est pas pour adresser l'EEPROM mais uniquement pour servir de mécanisme de pagination et donc restreinte la plage à 8000h - 8FFFh pour éviter d'écrire où il ne faut pas :wink:
Ah ok. Je comprends mieux maintenant.
Ceci-dit, il faut que tu changes les équations rom_Ce et rom_Oe :

Code : Tout sélectionner

field address  = [A15..12] ;
select_rom = address:[4..B] ;  /* Selectionne la ROM pour toutes les adresses de 4000h à BFFFh
rom_Ce = select_rom ;
rom_Oe = select_rom & !memrw ;
Il y a aussi un truc à vérifier : DBIN
Il me semble que cela doit être actif à l'état haut (Write), alors que la variable memrw est prévue dans le script pour être active à l'état bas. Donc peut-être faudra-t-il écrire : PIN 7 = memrw ; (donc en enlevant le ! devant la variable)... à vérifier. :wink:
Sylvain
Les + malins et les + chanceux sont au sommet, les autres grenouillent.
La vie est un éternel combat contre soi-même.

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 05 sept. 2017 16:46

Me voici de retour après 2 mois de dur labeur :roll: :roll:

Donc j'ai recu depuis les PCB de cartouches pour faire mes tests :

ImageImage

J'ai fait un PCB 2 en 1 et prévu pour qu'il soit sécable facilement ;)
Image

Premier test avec un support sur la version "cartouche", les ROMS de 8Ko fonctionnent.
Image

Avec la version TestBoard j'ai pu tester les ROMS de 8 et 16 Ko (24 / 27 des jeux existants sur Pyuuta) :D
Par contre pour les cartouches 32Ko (3 existantes) impossible à utiliser sur le port cartouches car il manque des signaux :lol:
Et après quelques recherche ces 3 cartouches ne peuvent fonctionner qu'avec une extension spécifique :shock:
J'ai bien l'extension mais aucune de ces 3 cartouches, elles sont très rare et atteignent souvent des prix très haut :(

j'ai commencé a faire des essais sur le port d'extension mais j'ai seulement réussi à faire fonctionner les cartouches 8 et 16Ko mais pas les 32Ko.
Les 32Ko qui ont une plage mémoire chevauchant une partie de la ROM interne, et je n'ai pas trouvé les signaux permettant de paginer la ROM ...

les cartouches de 8 et 16 Ko occupent la zone mémoire de 8000h-BFFFh.
Le Bios du Pyuuta occupe la zone 0000h-3FFFh .
le basic occupe la zone 4000h-7FFFh.
Les cartouches 32Ko occupent la zone 4000h-BFFFh.

Le pinout du port cartouche:
Image

Le pinout du port d'extension:


Je vais chercher comment utiliser les 32Ko si d'ici la fin de la semaine je n'y arrive pas je ferais une cartouche avec uniquement les jeux 8 et 16Ko :?

...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Patrick
Messages : 363
Enregistré le : 16 mai 2009 09:30
Localisation : Clermont-Ferrand

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par Patrick » 05 sept. 2017 21:25

Sympa tes PCBs.
Tu peux indiquer le logiciel de conception, le fabricant de PCBs, comment tu réalises la zone sécable ?
Patrick

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 12 sept. 2017 16:18

- Soft: DipTrace (Freeware edition)
- PCB: GojGo
- zone sécable avec DIPTRACE j'ai dessiné un rectangle comme propriété "board cutout" en laissant suffisament en haut et en bas :wink:


Finalement je ne suis pas arrivé à faire démarrer une ROM 32Ko même sur le port d'extension :? :oops:

C'est pas grave comme j'avais prévu le plan B, faire une megarom avec les jeux 8 et 16 Ko (24 des 27 jeux existants), j'espère faire le premier test d'ici ce week end ...
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 17 sept. 2017 10:13

Bon finalement j'ai pas trouvé comment faire fonctionner les ROM 32Ko donc je suis passé au plan B uniquement les ROMS 8 et 16 Ko pour le port cartouche.

Maintenant il me reste un autre problème le programmateur d'EEPROM ne veut pas me programmer correctement les GAL22V10x :twisted:

Ou j'ai rien compris :roll:

J'ai essayé plusieurs GAL22V10D , GAL22V10B , GAL22V10C , mais à chaque fois il grave et à la vérification me retourne une erreur comme ci dessous, J'ai essayé divers paramètres mais toujours le même problème :(

J'utilise un TL866.

Peut être que toutes les GAL que j'ai acheté sont HS ou bien est ce le programmateur (tester sur 2 PC différents) ???

Quelqu'un à déjà programmer ces types de GAL ou à un programmateur compatible ?

Erreur:
erreur GAL 1.jpg
erreur GAL 1.jpg (267.38 Kio) Vu 112 fois
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
irios
Messages : 3059
Enregistré le : 04 nov. 2007 20:47
Localisation : Rochefort du Gard (30)
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par irios » 17 sept. 2017 11:05

Où as-tu acheté les GAL ? :mrgreen:
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

Avatar du membre
Silou78
Messages : 80
Enregistré le : 11 févr. 2017 15:54
Localisation : Yvelines (78)

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par Silou78 » 17 sept. 2017 11:25

Il y en a qui ont le même problème avec le MiniPro > v6.5
S'ils reviennent à la v6.5, ça semble fonctionner.
Problème plus spécifique au 22v10 apparemment.
D'autres qui sur un lot arrivent seulement à passer l'étape du verify que pour 1 gal sur 5 (soupçons d'un mauvais lot ?)
Voir ce topic (où est aussi disponible un lien pour télécharger l'archive .rar du MiniPro v6.5).
Sylvain
Les + malins et les + chanceux sont au sommet, les autres grenouillent.
La vie est un éternel combat contre soi-même.

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 17 sept. 2017 11:35

Où as-tu acheté les GAL ?
Sur Ebay, évidemment le prix était très bas :lol:
S'ils reviennent à la v6.5, ça semble fonctionner.
J'avais justement le V6.5 d'installé comme ça ne fonctionnais pas j'ai upgradé en 6.6 mais idem :?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 17 sept. 2017 11:58

J'en ai recommandé d'un vendeur Français, je serai fixé sur le programmateur ou les GAL :roll:
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 18 sept. 2017 17:08

J'ai adapté le code pour le GAL en fonction des signaux disponibles sur le port cartouche et de ceux nécessaires pour faire la pagination.

Le principe lorsque il y a une écriture à l'adresse 8000 (0000 sur l'Eeprom) on reporte la valeur des bits DATA A0-A4 sur les pins A14-A18, d'après le datasheet du TMS9915 le signal Write est à l'état bas lors d"une écriture.


J'ai prévu d'adapter pour un G16V8 c'est juste suffisant pour le nombre de pins disponibles, mais d'après le simulateur j'ai un comportement différent au départ avec le G22V10 les sorties sont à l'état bas mais pour le G16V8 les sorties sont à l'état haut :roll:

Y a t'il un moyen de fixer un état initial aux sorties du GAL ???



Avec le G22V10 :
G22V10.jpg
G22V10.jpg (145.49 Kio) Vu 73 fois

Avec le G16V8:
G16V8.jpg
G16V8.jpg (160.76 Kio) Vu 73 fois
Datasheet:
Pyuuta_Chronog.jpg
Pyuuta_Chronog.jpg (119.42 Kio) Vu 73 fois
Le code:

Code : Tout sélectionner

Name     EEPROM-Paging ;
PartNo   00 ;
Date     11/06/2017 ;
Revision 02 ;
Designer Silou78_and_6502man ;
Company  Futura ;
Assembly None ;
Location None ;
Device   g22v10 ;


/* ********************************** */
/*      PYUUTA  MEGAROM               */
/*                                    */
/*  EEPROM  AT28C040    512Ko         */
/*                                    */
/*  BANK de 16Ko   A14 - A19          */   
/*                                    */
/*                                    */
/*    AT28C040  READ MODE :           */
/*  CE and OE are low and WE is high  */
/*                    non WE is low   */


/* *************** INPUT PINS ***********************************************/
PIN 1        = cpu_clk            ; /* CPU Clock                            */ 
PIN [2..6]   = [d0..4]            ; /* CPU Data Bus                         */ 
PIN 7        = !memrw             ; /* Memory Read/Write (write active low) */ 
PIN [8..11]  = [A10..13]          ; /* CPU Address Bus                      */


/* *************** OUTPUT PINS **********************************************/
PIN [14..18] = [ra14..18]         ; /* EEPROM Address Bus  24 games         */

PIN 19 = test;
 
/*  PIN 12 = GND  PIN 24 = VCC 	*/



/* **** Declarations and Intermediate Variable Definitions ******************/
FIELD address = [A10..13] ;



/* **** Logic Equations *****************************************************/ 
select_page = address:[0000] & !memrw ;

/* Principe de la bascule D pour memoriser le numero de page ROM :          */
/* Quand la selection de page n'est pas activee (select_page = niveau bas), */
/* alors la sortie [ra15..19] conserve son etat precedent (num. page ROM).  */
ra14.D = d0 & !select_page # ra14 & select_page ;
ra15.D = d1 & !select_page # ra15 & select_page ;
ra16.D = d2 & !select_page # ra16 & select_page ;
ra17.D = d3 & !select_page # ra17 & select_page ;
ra18.D = d4 & !select_page # ra18 & select_page ;


test = select_page ;

/* *******  END  ***** */

Code : Tout sélectionner

Name     PYUUTA-G16 ;
PartNo   00 ;
Date     11/06/2017 ;
Revision 02 ;
Designer Silou78_and_6502man ;
Company  Futura ;
Assembly None ;
Location None ;
Device   g16v8 ;


/* ********************************** */
/*      PYUUTA  MEGAROM               */
/*                                    */
/*  EEPROM  AT28C040    512Ko         */
/*                                    */
/*  BANK de 16Ko   A14 - A19          */   
/*                                    */
/*                                    */
/*    AT28C040  READ MODE :           */
/*  CE and OE are low and WE is high  */
/*                    non WE is low   */


/* *************** INPUT PINS ***********************************************/
PIN 1        = cpu_clk            ; /* CPU Clock                            */ 
PIN [2..6]   = [d0..4]            ; /* CPU Data Bus                         */ 
PIN 7        = !memrw             ; /* Memory Read/Write (write active low) */ 
PIN [8..9]   = [A10..11]          ; /* CPU Address Bus                      */
PIN [12..13] = [A12..13]          ; /* CPU Address Bus                      */

/* *************** OUTPUT PINS **********************************************/
PIN [15..19] = [ra14..18]         ; /* EEPROM Address Bus  24 games         */

PIN 14 = test;
 
/*  PIN 12 = GND  PIN 24 = VCC 	*/



/* **** Declarations and Intermediate Variable Definitions ******************/
FIELD address = [A10..13] ;



/* **** Logic Equations *****************************************************/ 
select_page = address:[0000] & !memrw ;



/* Principe de la bascule D pour memoriser le numero de page ROM :          */
/* Quand la selection de page n'est pas activee (select_page = niveau bas), */
/* alors la sortie [ra15..19] conserve son etat precedent (num. page ROM).  */
ra14.D = d0 & !select_page # ra14 & select_page ;
ra15.D = d1 & !select_page # ra15 & select_page ;
ra16.D = d2 & !select_page # ra16 & select_page ;
ra17.D = d3 & !select_page # ra17 & select_page ;
ra18.D = d4 & !select_page # ra18 & select_page ;


test = select_page ;

/* *******  END  ***** */

EDIT: sur le G16V8 il y a une pin I/OE qui n'est pas sur le G20V10, dans le datasheet je ne vois rien de précisé sur cette broche :idea:
Est ce que je dois l'activé pour que le GAL soit actif comme pour une EPROM ou un 74LS ???
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
6502man
Messages : 8347
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par 6502man » 19 sept. 2017 16:01

Hier soir j'ai réussi à programmer 2 GAL une G20V10 et une G16V8 avec mon programmateur d'eeprom.

Premier test soldé par un échec :?

La partie programmation ca c'est facile, même si j'avais jamais programmé pour ce CPU avec des mnémoniques totalement nouveaux, ca reste bien documenté, et le VDP c'est le même que les MSX, Coleco, SC3000, que je connais bien.

La partie hardware, la c'est beaucoup plus compliqué pour moi :lol:

L'EEPROM 2Mbit partitionnée en page de 16Ko.
permière page = Menu
deuxième page = jeu 1
troisième page = jeu 2
....

Le GAL programmé pour paginé si il y une écriture en 8000.
les sorties du GAL connectées a l'EEPROM A14-A18.

Dès l'allumage de la machine les sorties du GAL G20V10 sont au niveau haut et donc impossible d’accéder au menu :(
En forcant les adresses de l'EEPROM aux niveau bas j'accède bien au menu, voir photo ci dessous :D

J'ai connecté une résistance et une led sur une sortie du GAL et dès l'allumage de la machine la led s'allume et clignote en permanence :twisted:

Donc soit j'ai mal formulé les équations pour le GAL, soit j'ai mal étudié les conditions pour la pagination (WR,A13-A10), ou soit la condition n'est suffisamment restrictive :(

Si vous avez une idée ou voyez ou j'ai commis une erreur n'hésitez pas, j'apprends ...

Je pourrais utiliser des composants classiques 74LS, mais je pense que le problème viens peut être de la condition pour la pagination :(

Menu&Gal.jpg
Menu&Gal.jpg (267.77 Kio) Vu 49 fois
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
Silou78
Messages : 80
Enregistré le : 11 févr. 2017 15:54
Localisation : Yvelines (78)

Re: Pagination d'une EEPROM avec une GAL V16 / V20 ...

Message par Silou78 » 21 sept. 2017 00:00

Salut Phil,

Dans l'équation pour obtenir le select_page, je ne vois plus de A15 (ni de A14 d'ailleurs), donc ça va paginer pas uniquement que pour une écriture à l'adresse 8000 mais aussi pour les adresses 0000, 4000 et C000. Donc pas étonnant que la led clignote. Ou bien alors il y a quelque chose que je ne comprends pas dans ton câblage.

Pour le reset des bascules D il te faut dédier une pin d'entrée relié au reset (pas vu sur le connecteur, donc il faut le recréer avec un RC entre le VCC et GND). La pin à récupérer peut être celle de test (quand la select_page sera débuguée, ce ne sera plus utile de la sortir).
Et dans le programme rajouter quelque chose du genre (.AR est le reset asynchrone de la sortie des bascules D) :
[ra15..19].AR = reset

En espérant que ça te donne des pistes pour avancer dans ton projet... :wink:
a+
Sylvain
Les + malins et les + chanceux sont au sommet, les autres grenouillent.
La vie est un éternel combat contre soi-même.

Répondre