Retourner au sommaire

La Ramcard

Basé sur l'article publié dans Quasar CPC numéro 10, Électronique, par Ram7.

Cet article était l'article de présentation et d'annonce de la Ramcard (que Ram7 venait de finaliser), il est largement rédigé avec cette idée de nouveauté (notamment l'introduction), ça serait à remanier pour le rendre plus intemportel.

Chouette une Ramcard ! Le père Noël en saute de joie ! Ah ! La fin de l'année, les vacances pour certains, les fêtes pour tout le monde, le père Noël dans la cheminée, les cadeaux pour tous… Mais au fait, vous n'avez pas oublié votre cher CPC ? Avez-vous pensé à lui offrir un petit quelque chose ? Il s'ennuie déjà assez comme ça, tout seul dans son coin, il n'a rien à se mettre sous la dent, il est donc temps de lui offrir un cadeau digne de lui.

Je cherche bien au fond de la hotte du père Noël, et j'y trouve une petite extension pour le CPC, une extension ROM pour CPC, j'ai nommé : la Ramcard.

Y s'est planté !

Mais non, mais non, cherchez pas l'erreur, y'en a pas ! Je m'explique, sur CPC il est possible de gérer jusqu'à 256 ROMs d'extension. Chaque ROM possède l'adressage entre &C000-&FFFF et est différenciée par son numéro (NDOffseT : pour plus d'informations vous pouvez aller lire la section consacrée au Gate Array). Les interfaces existantes aujourd'hui utilisent des EPROM (mémoire à lecture seule pouvant être effacée aux UV et programmée sur un programmateur d'EPROM).

Quand on regarde de plus près, qu'est-ce qu'une ROM ? C'est une mémoire qui ne perd jamais ses données, même courant coupé, ses données étant figées. Une EPROM c'est la même chose, elle n'est programmable et effaçable que si elle est retirée de son environnement CPCien. Pour faire des programmes en ROM, bonjour la galère et la gymnastique ! On enlève, on efface, on programme et on recommence… Sans compter que ça prend du temps toutes ces opérations.

Une RAM c'est une mémoire que l'on peut lire et écrire, avec son bus d'adresse (plus ou moins large suivant la capacité mémoire), son bus de données (8 bits), et ses signaux de contrôle :

  • /CS : Chip Select (séléction du boîtier = bouge ton cul, j'ai du boulot pour toi),
  • /OE : Output Enable (validation de sortie = envoie de la sauce, euh non des données),
  • /WE : Write Enable (validation d'écriture = enregistre ce qu'il y a sur le bus de données sur le champ).

Tous ces signaux se retrouvent sur l'EPROM sauf /WE, pas forcément aux même broches, mais qu'importe, il n'y a qu'un pas à franchir pour utiliser une RAM à la place d'une EPROM, et nous allons le franchir…

À quoi ça sert ?

On le joli cadeau qui arrive ! Vous êtes en train de développer un magnifique programme sur ROM, pas de problème, cette interface émule une ROM tant que l'interrupteur “Write” est en position off.

Vous faites vos tests et corrigez le ou les bugs trouvés. On réassemble, mais plus besoin de passer par un programmateur externe, on exécute un petit utilitaire qui permet l'écriture dans la Ramcard, l'interrupteur “Write” basculé sur on et voilà, le tour est joué, la programmation en direct est terminée. Et tout ça à partir du CPC, vous pouvez donc maintenant retourner dans vos tests ; je vous dis pas le gain de temps.

Mais si vous m'avez bien suivi, quelque chose a dû vous sauter aux yeux. Vous ne voyez pas ? Comment fait-on pour émuler une ROM lorsque le CPC est éteint ? Une RAM perd son contenu si elle n'est plus alimentée, il faut donc garder son CPC allumé ? Ça aurait pu être une solution, mais j'ai préféré prévoir une alimentation de secours par pile au lithium 3V.

Voilà qui termine la présentation générale de cette interface. Je vais vous présenter ci-après plus en détail les caractéristiques de l'interface. Attention, ça va être technique !

Mais avant cela, je tiens à remercier Franck Caron (Info Système CPC), pour m'avoir envoyé l'article publié dans Radios Plans, article sur Pokrom qui m'a inspiré l'idée de cette interface (eh oui, on invente rien sur CPC). J'espère qu'on te retrouvera bientôt dans le monde CPC, Francky. Je tiens également à remercier Longshot vu que les photocopies de l'article viennent de lui.

Pour finir, je remercie Offset et la rédaction de Quasar de m'avoir laissé cette rubrique à ma disposition, voilà c'est la minute nostalgie. Allez, il est temps de se tourner vers l'avenir : la Ramcard.

Techniquement

Voici donc le synoptique de la Ramcard qui va nous servir à comprendre le principe de fonctionnement.

Synoptique de la Ramcard de Ram7

On reconnait notre CPC qui communique avec son bus d'adresse et de données, les bits A0 à A13 ainsi que D0-D7 arrivent directement à la RAM pour permettre l'adressage des 16ko d'une ROM d'extension.

Alors... comment ça marche ? La logique de décodage permet d'activer la RAM uniquement si la zone mémoire adressée est celle d'une ROM, pour cela, A14 et A15 doivent être à 1 alors que /MREQ doit être à 0.

La logique de décodage mémorise également le numéro de ROM sous format 8 bits, cette tâche étant confiée à un 74LS374 (latch 8 bits) permettant de gérer jusqu'à 256 numéros de ROM. Les signaux A13, /IORQ et /WR suffisent à déclencher la mémoirisation du numéro de ROM (il s'agit du port &DFxx).

Comme il n'est pas possible de gérer 256 ROM sur une seule interface, une sélection est faite à travers les switchs. Les 5 bits de poids fort sont traités par un comparateur (74LS85) aux valeurs fixées par les switchs. On peut donc ainsi sélectionner la plage des numéros de ROM où la Ramcard offira ses 8 ROM d'extension consécutifs.

Les 3 bits de poids faible viennent jouer le rôle des bits A14, A15 et A16 de la RAM et divisent donc la RAM de 128Ko en 8 portions de 16Ko qui dépendent du numéro de ROM sélectionné.

La cœur de la logique de décodage est constitué par un circuit 74LS138 (démultiplexeur 3 vers 8) qui attaque l'un des 8 interrupteurs chargés de la validation/invalidation individuelle de chaque ROM. Ce circuit n'activera la ROM correspondant aux 3 bits de poids faible du numéro de ROM que si les conditions précédentes sont vraies : /MREQ=0, A15=1, A14=1 et la sortie du comparateur est à 1.

Après passage par l'un des 8 interrupteurs, on active la lecture de la RAM en cas de présence du signal /ROMEN pour distinguer la lecture d'une ROM ou la lecture de la RAM interne du CPC. Le signal d'adressage de la RAM en lecture produit le signal ROMDIS obligatoire pour désactiver la ROM interne du CPC.

La logique de décodage utilise un dernier signal du bus de contrôle du CPC, le signal /WR, permettant de générer le signal d'adressage en écriture de la Ramcard. Ce signal est contrôlé par un dernier switch ce qui permet d'autoriser ou d'inhiber cette fonction. Vous avez deviné, c'est ce switch “magique” qui permet la programmation de la Ramcard et qui la rend si simple et si pratique d'emploi.

Pour finir et afin de combler le gros défaut des RAM (perte des informations en cas de coupure de courant), un gestionnaire d'alimentation permet de commuter les deux tensions présentes sur la carte : le +5V du CPC et le +3V de sauvegarde de la pile au lithium. Un signal de validation de la mémoire est également produit afin de placer la RAM en “stand-by” en cas de coupure d'alim.

Les composant utilisés sont des plus classiques et donc faciles à trouver dans le commerce, 74LS00 (portes NAND), 74LS32 (portes OR), 74LS374 (latch 8 bits), 74LS85 (comparateur), 74LS138 (démultiplexeur), diodes, résistances, condensateurs et un transistor des plus classique. Ce qui posera le plus de difficultés ce sont la pile, son support et surtout la RAM 128Ko qui a elle seule coûte la moitié du prix de l'interface.

La fin de l'article original ne contenait que des informations de prix et de disponibilité et n'a pas été retranscrite ici (obsolète).

Les fichiers

Le manuel

Voici l'excellent manuel de la Ramcard v2.3 (la dernière version à ce jour). Il contient toutes les informations nécessaires à l'utilisation et au montage de la Ramcard. Il inclue également un didactitiel très détaillé sur la façon d'utiliser et de programmer les ROM.

Télécharger le manuel de la Ramcard v2.3 au format PDF.

Les outils

Voici les outils officiels de programmation et de diagnostic de la Ramcard.

  •  RAMCARD.BAS permet de programmer votre Ramcard,
  •  RAMCARD.BIN va avec RAMCARD.BAS,
  •  RAMCARD.SCE est le code source de RAMCARD.BIN,
  •  ROMTEST.BIN permet de tester votre Ramcard (les numéros des Roms actives apparaissent en jaune si protegées en écriture ou en rouge si l'écriture est possible),
  •  ROMTEST.SCE est le code source de ROMTEST.BIN.

Télécharger l'archive LhA contenant les outils de programmation et de diagnostic de la Ramcard.

Le PCB

Voici le PCB de la Ramcard v2.3, il sera utile à ceux qui voudraient de graver eux-même la carte (la liste des composants et le schéma d'implantation étant quant à eux disponibles dans le manuel).

Télécharger le PCB de la Ramcard v2.3 au format PDF.

 
electronique/ramcard.txt · Dernière modification: 2017/10/09 10:04 (édition externe)