[SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Modérateurs : Papy.G, fneck, Carl
[SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Après avoir mis en place l'IPL512 (FLASH de 512Ko) qui permet de changer la page de la ROM de 4 Ko à la volé (donc avec la possibilité de faire cohabiter la ROM européenne et japonaise en coupant en deux la capacité du FLASH) et la possibilité de changer la police en version Européenne ou en version Japonaise, il manquait quelque chose pour compléter ce tableau : et si je rendais mon MZ-700 totalement polyvalent avec la possibilité de passer de la version japonaise en version européenne et vice-versa, y compris avec une vraie sortie NTSC et PAL correspondant à la version ?
Le MZ-700 a une horloge principale qui est à la fréquence du PAL (17,73447 MHz) sur la version européenne et NTSC (14,31818 MHz) sur la version japonaise. Par ailleurs, le composant LSI qui est entre autre responsable des signaux vidéos a une broche NP (1 -> NTSC, 0 -> PAL) qui permet de lui dire comment diviser la fréquence principale en une fréquence CPU (1 -> PHI/4, 0 -> PHI/5) et de sélectionner le bon format pour la sortie vidéo.
Donc si je peux fournir la bonne fréquence, la bonne ROM et la bonne police de caractères, je peux reproduire la version japonaise dans ces moindres détails à l'exception du clavier (incrustation de l'alphabet japonais à la place des caractères "graphiques").
J'ai donc commencé le circuit imprimé qui remplacera l'horloge d'origine (DIP14) qui grâce au composant MK2712 me permet de fournir du 14,31818 MHz ou du 17,73447 MHz à partir d'une fréquence source de 27 MHz. J'aurais un signal P/N (1 -> PAL, 0 -> NTSC) qui sera utilisé pour le triplet (ROM, FONT et CLK). Le LSI veut le signal inverse (NP) donc j'ajoute un inverseur pour donner à partir de P/N le signal N/P qui sera utilisé par le LSI.
L'idée est de placer un oscillateur 27 MHz DIP8 ou SMD. J'espère que le circuit est bon.
Sans plus tarder, voici le schéma et les circuits en 2D et 3D :
Le MZ-700 a une horloge principale qui est à la fréquence du PAL (17,73447 MHz) sur la version européenne et NTSC (14,31818 MHz) sur la version japonaise. Par ailleurs, le composant LSI qui est entre autre responsable des signaux vidéos a une broche NP (1 -> NTSC, 0 -> PAL) qui permet de lui dire comment diviser la fréquence principale en une fréquence CPU (1 -> PHI/4, 0 -> PHI/5) et de sélectionner le bon format pour la sortie vidéo.
Donc si je peux fournir la bonne fréquence, la bonne ROM et la bonne police de caractères, je peux reproduire la version japonaise dans ces moindres détails à l'exception du clavier (incrustation de l'alphabet japonais à la place des caractères "graphiques").
J'ai donc commencé le circuit imprimé qui remplacera l'horloge d'origine (DIP14) qui grâce au composant MK2712 me permet de fournir du 14,31818 MHz ou du 17,73447 MHz à partir d'une fréquence source de 27 MHz. J'aurais un signal P/N (1 -> PAL, 0 -> NTSC) qui sera utilisé pour le triplet (ROM, FONT et CLK). Le LSI veut le signal inverse (NP) donc j'ajoute un inverseur pour donner à partir de P/N le signal N/P qui sera utilisé par le LSI.
L'idée est de placer un oscillateur 27 MHz DIP8 ou SMD. J'espère que le circuit est bon.
Sans plus tarder, voici le schéma et les circuits en 2D et 3D :
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Intéressant
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Nouvelle révision : suppression du DIP8 au profit d'un SMD deux fois moins cher et plus fiable. Taille : 13x27mm (0.51x1.05 inches).
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
J'ai commandé 5 à PCBWay. A la base je voulais faire la fabrication et le montage par JLCPCB/LCSC pour profiter des offres basses du moment mais pas moyen d'y arriver clairement. Avec PCBWay, je fais faire l'achat des composants directement par eux : il me restera à faire monter le MK2712 moi-même à la réception des circuits. Certes le prix final est plus que m'aurait pu offrir JLCPCB mais bon on dira que c'est le coût du prototypage.
Vous noterez que j'ai ajouter deux anneaux VCC et GND pour pouvoir alimenter le circuit et le tester. La broche de haut pourra être relié à VCC ou GND pour sélectionner NTSC ou PAL dans l'optique de tester avec un analyseur logique pour vérifier que le signal est bon sans avoir à l'installer sur un MZ-700.
Je ne sais pas s'il existe d'autres machines (non SHARP MZ) qui nécessitent les mêmes fréquences PAL et NTSC.
Vous noterez que j'ai ajouter deux anneaux VCC et GND pour pouvoir alimenter le circuit et le tester. La broche de haut pourra être relié à VCC ou GND pour sélectionner NTSC ou PAL dans l'optique de tester avec un analyseur logique pour vérifier que le signal est bon sans avoir à l'installer sur un MZ-700.
Je ne sais pas s'il existe d'autres machines (non SHARP MZ) qui nécessitent les mêmes fréquences PAL et NTSC.
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
J'ai reçu cinq circuits imprimés plus deux autres sans composants. Pour les 5, il me faut souder le composant principal qui sert de PLL et je pourrais tester avec un analyseur logique pour vérifier le fonctionnement des fréquences en sortie.
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Soudure du composant manquant et ses broches bipent bien où là c'est attendu avec mon multimètre. Prochaine étape : me servir de l'analyseur logique pour alimenter le circuit et lire les fréquences en entrée et sortie pour vérifier qu'elles sont conformes.
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Aujourd'hui j'ai testé le circuit imprimé avec mon analyseur LA1010 ( je rêve d'un LA5016/LA5032 mais le prix ) en me servant de son PMW1 avec un duty à 100% et de son GND pour alimenter le circuit (VCC et GND), de son PMW2 avec un duty à 100% (sélection PAL) ou avec un duty à 0% (sélection NTSC) pour affecter P/N. Par la suite, j'ai pu vérifier que le signal N/P est bien à l'inverse de P/N.
Le LA1010 a une précision de 20 ns, donc il ne faut pas s'attendre à une superbe précision au niveau des périodes des pulsations. C'est pour cette raison que je m'en remets plutôt à "Pulse Measurements" en mettant deux mesures - un sur ICLK, l'autre sur OCLK - pour compter les pulsions hautes sur tout l'enregistrement qui dure 1 seconde. Il suffit alors de diviser leur nombre par 1000000 pour obtenir leur fréquence.
Brochage en question : Vérification pour la fréquence PAL : vérification pour la fréquence NTSC :
Le LA1010 a une précision de 20 ns, donc il ne faut pas s'attendre à une superbe précision au niveau des périodes des pulsations. C'est pour cette raison que je m'en remets plutôt à "Pulse Measurements" en mettant deux mesures - un sur ICLK, l'autre sur OCLK - pour compter les pulsions hautes sur tout l'enregistrement qui dure 1 seconde. Il suffit alors de diviser leur nombre par 1000000 pour obtenir leur fréquence.
Brochage en question : Vérification pour la fréquence PAL : vérification pour la fréquence NTSC :
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Tu as fait réaliser un assemblage partiel par PCBWay ?
A quoi servent les éléments dorés, des supports de vis ?
Et enfin, tu n'as pas un oscilloscope pour mesurer directement la fréquence et la période ?
A quoi servent les éléments dorés, des supports de vis ?
Et enfin, tu n'as pas un oscilloscope pour mesurer directement la fréquence et la période ?
Patrick
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Oui, l'assemblage je voulais faire par JLCPCB au départ car il faisait une offre de montage à 2€. Seulement, je ne suis pas arrivé à utiliser leur offre : ils n'étaient pas très clair sur la procédure, notamment sur l'achat des composants et au final il fallait une taille maximum de 10x10mm. Du coup, je me suis rabattu sur PCBway :
- ils ont directement commandés les composants dont j'ai fourni la BOM avec les références choisies (chose que je n'arrivais pas à faire avec JLCPCB).
- après un devis et une réponse à une question technique, ils ont fait la fabrication et le montage.
Il me restait donc juste à souder les PLL que j'avais déjà acquis et des connecteurs.
J'ai aussi acheté dix sockets DIP14 pour oscillateur. Et pour insérer le circuit dans ce socket, j'ai aussi 2000 de ces trucs dorés dont j'ai placé 4 sur le circuit (ce dont tu parles j'imagine) : J'ai un oscillateur USB mais l'analyseur est plus facile à utiliser et à installer : il aurait fallu que je retrouve le logiciel à installer car je l'avais installé sur un autre PC que je n'ai pas ici.
- ils ont directement commandés les composants dont j'ai fourni la BOM avec les références choisies (chose que je n'arrivais pas à faire avec JLCPCB).
- après un devis et une réponse à une question technique, ils ont fait la fabrication et le montage.
Il me restait donc juste à souder les PLL que j'avais déjà acquis et des connecteurs.
J'ai aussi acheté dix sockets DIP14 pour oscillateur. Et pour insérer le circuit dans ce socket, j'ai aussi 2000 de ces trucs dorés dont j'ai placé 4 sur le circuit (ce dont tu parles j'imagine) : J'ai un oscillateur USB mais l'analyseur est plus facile à utiliser et à installer : il aurait fallu que je retrouve le logiciel à installer car je l'avais installé sur un autre PC que je n'ai pas ici.
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Félicitations
Il te reste plus qu'a tester in situ pour vérifier que la machine fonctionne correctement
Il te reste plus qu'a tester in situ pour vérifier que la machine fonctionne correctement
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Oh ça va attendre... mon IPL512 d'origine (gros PCB vert dont j'ai dû modifier 5 traces suite à une connerie que j'ai faite) m'empêche de fermer le capot. J'ai trop de fils qui volent. Il me faut absolument un PCB CPU pour pouvoir connecter un maximum entre le CPU et l'IPL et supprimer ces fils volants. Le CGROM est peut-être trop haut (mais ce n'est pas ce qui empêche le capot de se fermer pour l'heure). Pareil, des fils volants pour la partie vidéo (je n'ai pas encore fait la conversion propre du TTL en analogique comme il faudrait le faire). Bref, je ne me sens pas d'enlever tout ça avant d'avoir une alternative bien propre et qui n'empêche pas le capot de se fermer avant de commencer à charcuter la carte-mère (pour ce circuit, je n'ai pas la possibilité faire autrement).
J'ai des GAL 16V8D et 20V10D à profusion et je voudrais en utiliser un sur le PCB CPU :
1) intercepter "IN A,($E2)" à la place de "IN A,($FF)", la raison est que sur MZ-700/1500 standard, un "OUT ($E2),A" active la ROM MONITOR en région $0000-$0FFF (un "OUT ($E0),A" l'a désactive au profit de la DRAM). Quoi de plus naturel de réutiliser ce même port pour indiquer la page à lire ? De plus, les PCB CPU et IPL pourraient être utilisés sur MZ-80 K et A moyennant peut-être un adaptateur au niveau de leur socket ROM. Le bit A14 en entrée du port $E2 est directement connecté à l'interrupteur de commutation PAL/NTSC.
2) intercepter "IN A,($E3)" pour paginer $E000-$FFFF. Entre $E800-$FFFF, on trouve souvent des ROM quand on a une extensions QDD ou FDD. Je connais une extension plutôt économique à base d'un Arduino MEGA pour simuler un QDD sur MZ-800 parce que ce dernier à bien la ROM qu'il faut en interne mais pas le MZ-700 sans une extension I/O physique.
3) intercepter "OUT A,($E1)" (active DRAM en $D000-$FFFF) et "OUT A,($E3)" (désactive DRAM en $D000-$FFFF) : idéalement pour conditionner la sortie /CS positionné par 2) seulement lorsque la DRAM est désactivé. J'ignore si cela est faisable avec un GAL mais j'ai l'impression que non.
4) Neutraliser un /WAIT=0 lors d'un accès en VRAM alors que l'on est en /VBLANK=0 : un truc activable pour voir ce que ça donne, je ne sais pas si on peux mixer avec les points 1) à 3) dans un GAL 20V10D.
L'idéal serait un ATF150x en QFP (la hauteur du CPU est très limitée donc la version PLCC posera sans doute un problème - ou pas) mais à part un USB Blaster, je n'ai pas de quoi les programmer.
Voici des images expliquant les problèmes de hauteurs :
J'ai des GAL 16V8D et 20V10D à profusion et je voudrais en utiliser un sur le PCB CPU :
1) intercepter "IN A,($E2)" à la place de "IN A,($FF)", la raison est que sur MZ-700/1500 standard, un "OUT ($E2),A" active la ROM MONITOR en région $0000-$0FFF (un "OUT ($E0),A" l'a désactive au profit de la DRAM). Quoi de plus naturel de réutiliser ce même port pour indiquer la page à lire ? De plus, les PCB CPU et IPL pourraient être utilisés sur MZ-80 K et A moyennant peut-être un adaptateur au niveau de leur socket ROM. Le bit A14 en entrée du port $E2 est directement connecté à l'interrupteur de commutation PAL/NTSC.
2) intercepter "IN A,($E3)" pour paginer $E000-$FFFF. Entre $E800-$FFFF, on trouve souvent des ROM quand on a une extensions QDD ou FDD. Je connais une extension plutôt économique à base d'un Arduino MEGA pour simuler un QDD sur MZ-800 parce que ce dernier à bien la ROM qu'il faut en interne mais pas le MZ-700 sans une extension I/O physique.
3) intercepter "OUT A,($E1)" (active DRAM en $D000-$FFFF) et "OUT A,($E3)" (désactive DRAM en $D000-$FFFF) : idéalement pour conditionner la sortie /CS positionné par 2) seulement lorsque la DRAM est désactivé. J'ignore si cela est faisable avec un GAL mais j'ai l'impression que non.
4) Neutraliser un /WAIT=0 lors d'un accès en VRAM alors que l'on est en /VBLANK=0 : un truc activable pour voir ce que ça donne, je ne sais pas si on peux mixer avec les points 1) à 3) dans un GAL 20V10D.
L'idéal serait un ATF150x en QFP (la hauteur du CPU est très limitée donc la version PLCC posera sans doute un problème - ou pas) mais à part un USB Blaster, je n'ai pas de quoi les programmer.
Voici des images expliquant les problèmes de hauteurs :
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Qu'est ce qui te manque pour programmer ces ATF150x ?
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Je n'ai pas retrouvé ce que tu m'avais offert. Je crois que Frédéric a commencer quelque chose. Et j'ai Dave qui semble intéressé par un kit complet pour son MZ-700 NTSC. Je vais essayer de relancer Dave pour son outil qui permet de reprogrammer ces CPLD - y compris les QFP. Avec Dave, on devrait revoir l'ensemble des circuits cette semaine pour régler la question de la hauteur, et peut-être opter pour plus de SMD.
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Ce que je t'avais envoyé c'était uniquement pour du PLCC !
Je sait qu'i existe des sockets QFP en traversant mais je ne saurait dires si c'est compatible avec les empreintes des socket PLCC .
Je sait qu'i existe des sockets QFP en traversant mais je ne saurait dires si c'est compatible avec les empreintes des socket PLCC .
Re: [SHARP MZ-700] 27MHz CLK -> PAL/NTSC CLK
Oui, mais j'ai surtout du PLCC - cela m'aurait servir à faire joujou avec ce CPLD avant d'aller plus loin avec du QFP. Si seulement je pouvais me souvenir où je l'ai rangé.