CMOS vs. NMOS ?

Si vous n'avez pas trouvé de catégorie correspondante ci-dessus, regroupe les discussions plus générales et à l'occasion peut aussi abriter un fil sur les vieilles consoles de jeux.

Modérateurs : Carl, Papy.G, fneck

Répondre
hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

CMOS vs. NMOS ?

Message par hlide » 02 avr. 2018 11:18

j'ai acheté quelques puces dont des Z80s, des SRAMs, des buffers et des portes logiques - le tout en CMOS.

Si je regarde le MZ-700, il contient des puces NMOS.

J'ai deux orientations :

1) bricoler une sorte de carte "accélératrice" qui se fichera à la place du Z80 NMOS. L'idée étant qu'un autre µC viendra épauler pour les I/O et les émulations des périphériques ainsi que les roms d'extension pour les piloter (en SRAM ?). Il y a aussi les sockets pour la ROM monitor et la ROM GC. La première est accessible par le bus Z80 et j'aimerais avoir la possibilité de la "modifier" en laissant le µC charger initialement une version en SRAM et laisser la SRAM présenter le contenu à la place de la ROM. Pour la ROM GC, c'est plus chaud car il n'est pas accessible par le bus - il est piloté par la partie sortie vidéo. Neanmoins, j'imagine la possibilité de mettre une SRAM ou un dual-port pour que l'µC puisse modifier les caractères et les rendre donc programmables indirectement par le Z80.

2) si le CMOS pose des difficultés avec le bus du Z80 en raison de la nature NMOS de ce dernier. Je peux alors envisager de "construire" une version standalone qui émulera l'ensemble des MZ, à savoir : MZ-80 K/C, MZ-80 A, MZ-1200 et MZ-700. Il y aura un vrai Z80 et un µC pour émuler le reste en fonction du choix de la machine sélectionnée au boot.

Le cas 1) est jouable malgré la présence des puces d'origine en NMOS ?

Notator
Messages : 461
Enregistré le : 09 août 2015 20:13
Localisation : Lyon

Re: CMOS vs. NMOS ?

Message par Notator » 02 avr. 2018 11:35

Et c'est quoi, la raison de ce projet de bidouille ? :(

Tu trouves que ton MZ700 ne tourne pas assez vite ?

En ce cas, pourquoi ne pas mettre un Z80 A ou B, en augmentant la fréquence d'horloge ?
Mais dans ce cas, les circuits derrière (notamment ceux de RAM et d'EPROM) risquent de ne pas pouvoir suivre... :?

hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

Re: CMOS vs. NMOS ?

Message par hlide » 02 avr. 2018 12:02

Notator a écrit :
02 avr. 2018 11:35
Et c'est quoi, la raison de ce projet de bidouille ? :(
J'ai dit carte "accélératrice" par image avec ceux des Amiga (carte qui s'enfiche sur le bus ou à même le socket du 68K et qui offre des accès à des périphériques comme le CF, etc. pour les A500/500+ par exemple), mais je n'ai jamais dit que je souhaitais overclocker le Z80 !

L'idée est plutôt d'embarquer à l'intérieur du MZ-700 les périphériques d'antan (FD, QD, RAMDISk, cassette) par émulation, avoir la possibilité de personnaliser les ROM pour qu'ils puissent gérer ces périphériques. Et transformer la ROM GC en un système PGC de manière plus ou moins analogue à ce qui a été déjà fait (HAL PGC-700), et dont certains programmes utilisent. Offrir la possibilité de se connecter à un PC, etc. Le tout en étant évidemment réversible.

Et puis, depuis quand on s'intéroge sur la raison des bidouilles ? je veux dire, tout ce que tu pourras faire semblera toujours inutile à autrui. Les Thomsons n'y échappent pas non plus.

Bref, ma question était de savoir si le fait de prendre des CMOS peut poser des problèmes avec le NMOS, pas l'utlité d'une telle bidouille !

Avatar du membre
Totor le Butor
Messages : 1507
Enregistré le : 07 sept. 2011 16:14
Localisation : Paris

Re: CMOS vs. NMOS ?

Message par Totor le Butor » 02 avr. 2018 18:04

J'ai trouvé quelques schémas du MZ-700 et je vois plutôt pas mal de TTL classiques.
Dans tous les cas, interfacer du TTL et de la CMOS peut s'avérer problématique. On voit tout de suite dans le tableau ci-dessous qu'un niveau haut en sortie TTL peut être compris entre 2,4 et 5V alors qu'un CMOS classique à besoin d'une tension minimum de 3,5V pour "voir" un niveau 1.
Autrement dit, un TTL va sortir un niveau haut à 3v par exemple et l'entrée CMOS du circuit suivant ne verra qu'un niveau 0 :cry: , ça va beaucoup moins bien marcher comme dirait l'autre :mrgreen: .
Pour faire court,
Sortie d'un TTL vers entrée CMOS = HS
Sortie d'un CMOS vers entrée TTL = OK
Ca c'est la théorie, en pratique, sur mon coin de bureau, je n'ai jamais eu de souci et ai très rarement vu des sorties TTL en bon état à moins de 3,5 V.
niveauhctttlcmos.png
niveauhctttlcmos.png (67.83 Kio) Vu 559 fois
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes .

hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

Re: CMOS vs. NMOS ?

Message par hlide » 02 avr. 2018 18:31

Merci Totor le Butor !

Je me posais la question parce qu'un auteur du projet Z80 à 4$ spécifiait ne prendre que du CMOS pour le Z80 et la SRAM à cause de l'AVR.

Or j'utilise bien un Arduino qui je suppose est aussi du CMOS sans trop de soucis avec le MZ-700.

Avatar du membre
Totor le Butor
Messages : 1507
Enregistré le : 07 sept. 2011 16:14
Localisation : Paris

Re: CMOS vs. NMOS ?

Message par Totor le Butor » 02 avr. 2018 21:04

Le Z80 est compatible TTL ça c'est sûr.
Concernant les Atméga 16, 32, 328... mes quelques bidouilles avec du TTL fonctionnaient correctement mais ce n'est pas une preuve.
La doc de quelques Atmega précise :
atmega Vil.png
atmega Vil.png (44.6 Kio) Vu 544 fois
Si l'on part d'une alim à 5v, le Vil max c'est à dire le niveau maximum d'un niveau Low doit être inférieur à 0,3 x Vcc soit 1,5V maximum pour un niveau 0, ça c'est OK le TTL donne des valeurs low largement inférieures.
Le ViH minimum, c'est à dire le niveau minimum pour un niveau High, doit être 0,6 x Vcc soit 3V hors le niveau minimum de sortie d'un TTL peut être de 2,4 V donc là c'est HS car l'Atméga peut interpréter un niveau 1 à 2,4V d'un TTL comme un niveau 0 ou 1, en fait on est dans la zone d'incertitude.
Dans la pratique, et comme je l'ai dit plus haut, j'ai rarement vu un niveau High d'un TTL en dessous de 3,5V, ce cas de figure peut arriver si l'on charge un peu trop la sortie du TTL ou si l'on monte trop en fréquence.

Dans ton cas, et si ce n'est pas un projet industriel :mrgreen: , je pense qu'il ne faut pas s'en faire et considérer l'Atmega alimenté en 5V comme compatible TTL.
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes .

hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

Re: CMOS vs. NMOS ?

Message par hlide » 02 avr. 2018 21:32

Bien, je doute en effet qu'une production industrielle puisse voir le jour. :)

J'ai un autre ATMega que je pourrais essayer de cabler avec le bus et émuler une ROM d'extension avec. Je verais bien si ça se passe bien.

Notator
Messages : 461
Enregistré le : 09 août 2015 20:13
Localisation : Lyon

Re: CMOS vs. NMOS ?

Message par Notator » 02 avr. 2018 23:17

hlide a écrit :
02 avr. 2018 12:02
Notator a écrit :
02 avr. 2018 11:35
Et c'est quoi, la raison de ce projet de bidouille ? :(
Et puis, depuis quand on s'interroge sur la raison des bidouilles ? je veux dire, tout ce que tu pourras faire semblera toujours inutile à autrui. Les Thomsons n'y échappent pas non plus.

Bref, ma question était de savoir si le fait de prendre des CMOS peut poser des problèmes avec le NMOS, pas l'utilité d'une telle bidouille !
Mais la question n'est pas là ! Ce n'est pas mon problème si ta bidouille est utile ou pas, c'est le tien !

Seulement, tu poses une question, et j'ai besoin de savoir pour quelle finalité (pas pour quelle raison !) tu veux faire cela, afin de pouvoir te répondre dans le sens du but que tu cherches à atteindre (c'est plus clair comme cela ?).

Comment veux-tu que je te réponde sur la pertinence Cmos/nmos si je ne sais pas ce que tu veux en faire ???

Maintenant, Totor t'a répondu brillamment, alors je n'ai plus rien à ajouter. :)

hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

Re: CMOS vs. NMOS ?

Message par hlide » 03 avr. 2018 01:32

Notator a écrit :
02 avr. 2018 23:17
Mais la question n'est pas là ! Ce n'est pas mon problème si ta bidouille est utile ou pas, c'est le tien !
Ben, tu conviendras qu'utiliser le mot "bidouille" suivi d'un smiley "non content/triste", ce n'est pas sympa pour la personne qui aurait préféré une réponse neutre à sa question.

Notator
Messages : 461
Enregistré le : 09 août 2015 20:13
Localisation : Lyon

Re: CMOS vs. NMOS ?

Message par Notator » 03 avr. 2018 09:20

Pour moi, le mot 'bidouille' n'a absolument rien de péjoratif ; je le considère comme équivalent de 'montage personnel'.
Quant au smiley, on ne dispose pas dans le choix restreint proposé de celui avec des points d'interrogation au-dessus de la tête ; j'ai donc choisi celui qui a l'air pensif, et de se poser des questions...

Après, s'il y a eu malentendu, ce n'est pas bien grave, ce sont des choses qui arrivent...

hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

Re: CMOS vs. NMOS ?

Message par hlide » 03 avr. 2018 13:12

Malentendu bien entendu :D

hlide
Messages : 810
Enregistré le : 29 nov. 2017 10:23

Re: CMOS vs. NMOS ?

Message par hlide » 10 juil. 2019 13:23

Je reprend ce vieux post car j'aimerais approfondir sur l'aspect carte accélératrice.

Mais avant, je dois signaler que j'ai remplacé le Z80 d'origine par une version CMOS à 20 MHz (qui ne tourne évidemment pas à cette vitesse). Je ne suis pas à l'abri que cette version CMOS ne soit pas une vraie mais j'ai pu constater une petite différence : quand j'utilise le transfert rapide (environ 20000 baud) avec mon projet MZ-SD²CMT, l'écran affiche de la neige bien plus fortement avec ce processeur qu'avec l'original. Bref, je n'ai pas contacté de dysfonctionnement avec et l'Arduino embarqué dans MZ-SD²CMT semble bien s'accommoder avec le circuit NMOS du MZ-700.

Vu que j'ai trois MZ-700, je souhaiterais transformer un avec un mode turbo. Et pourquoi pas quelque chose qui s'apparenterait à transformer un MSX2 en MSX TURBO-R (le MSX1 étant le MZ-80 K dont le MZ-700 est rétrocompatible).

Je songe à deux possibilités :

1) garder un Z80 mais en prenant le CMOS à 20 MHz.
2) utiliser un Z180 à la place (comme le R800 du MSX TURBO-R) qui peut monter à 33 MHz et a un MMU et autre goodies (DMA, USI, etc.)

Je vais me concentrer sur le 1) pour la suite car le 2) est plus difficile à évaluer dans sa faisabilité.

Le MZ-700 en version PAL a une fréquence de 17.734475 MHz que le M60719 (un ASIC équivalent au GATE ARRAY d'autre ordinateur qui génère des fréquences pour le CPU et la vidéo, gère les décodages d'adresse, etc) prend en entrée et divise en 5 pour fournir une fréquence CPU de 3.546875 MHz.

Pour le turbo, j'envisageais le passage à 17.734475 MHz avec un retour en 3.546875 MHz sous certaine condition :
- accès mémoire non RAM : ROM, VRAM d'orgine ou via l'extension de bus mémoire,
- accès port I/O.

J'imagine quelque chose qui pourrait s'apparenter à ça (schéma pour un MZ-80 K 2 <-> 4 MHz) :
2_4mhz_01.gif
2_4mhz_01.gif (9.08 Kio) Vu 43 fois
Avec des différences toutefois :
- pour le MZ-80 K, le circuit peut fonctionner en 4 MHz à l'exception des ROM. Ce mod s'assure que si une instruction est récupérée depuis une ROM elle est effectué en 2 MHz.
- pour le MZ-700, on veut remplacer le 4 MHz par du 17,7 MHz. Le circuit général ne pourra pas suivre. Il faut donc s'assurer qu'un accès aux port I/O ou a de la mémoire originelle (VRAM, ROM, bus extérieur) se fasse en 3,5 MHz (qui remplace le 2 MHz).

La fréquence fournie au CPU est le JP8 à droite du schéma. Les signaux à gauche sont les signaux qui vont conditionner la sortie.

A noter que je me demandais si on ne pouvait pas jouer uniquement sur le signal /WAIT pour laisser le temps à l'extérieur de lire/écrire les données.

Mais pourquoi la DRAM est-elle exclue ? en temps normal, le programme s'exécute en DRAM. Si je devais observer la même règle, j'aurais un sérieux problème de performance. Pour éviter ça, je prévois de rajouter une RAM plus rapide qui court-circuiterait l'originale : cette RAM serait sur la carte accélératrice et serait activée à la place. Ce qui veut dire qu'il faut un décodeur d'adresse pour que les accès RAM ne soient pas communiquées vers la carte mère (de sorte que le RAM originale ne soit pas sollicitée).

Sauf que ça se complique un peu plus : je vous parlais du M60719.

Ben j'ai ça :
memmap1.png
memmap1.png (3.05 Kio) Vu 43 fois
memmap2.png
memmap2.png (82.28 Kio) Vu 43 fois
NOTE 1 : ignorez la partie MZ-1500.
NOTE 2 : $E5 s'appelle LOCK sur le MZ-700 et permet à un circuit extérieur de mapper son propre espace sans conflit d'accès. $E6 s'appelle UNLOCK et permet de revenir à un espace interne (DRAM ou VRAM/KEY/TIMER).

Oui, il y a le bank switching pour arriver à mapper 64 Ko de RAM qui ajoute à la complexité.

Les ports I/O $E0-$E6 permettent de choisir le mapping de la DRAM sur deux zones contenant normalement autre chose. Et il faut donc en être averti. Le problème, c'est que le M60719 les gèrent en interne (INH1, INH2 et INH3) :
m60719.png
m60719.png (105.24 Kio) Vu 43 fois
Donc du coup, en plus du décodage d'adresse pour discriminer l'accès mémoire ou pas en RAM, je dois aussi surveiller ces ports pour déterminer les états des INH1-3 et les faire entrer dans l'équation pour discriminer correctement l'accès mémoire en RAM.

Voilà à peu près les difficultés. Si vous des avis, des conseils, des solutions, je suis preneur.

Si vous voulez des informations précises, je tâcherais de vous les donner.

Répondre