Affichage des articles dont le libellé est D-Ram Non Volatile. Afficher tous les articles
Affichage des articles dont le libellé est D-Ram Non Volatile. Afficher tous les articles

mercredi 6 février 2019

16 banks of internal 2Kb auto-backuped SRAM.

And now, the equivalent of 16 x 6116 auto-saved memories for your favorite vintage machine like :

  • Alpha Juno 1-2
  • Juno 106
  • JX-3P
  • MKS-30
  • JX-8P
  • JP-6
  • TR707
  • Prophet 600
  • DW6000
  • DW8000

and many others...

On the past, I developed a simple solution that had the disadvantage of only using part of the new memory component:


Very effective solution, for example inside a Roland JX-8P :


But, only 2Kb are used on the 32Kb that contains the new RAM.

So I decided to do a new version with an additionnal connector for the extra addresses selection :


The J1 connector will allow to select the memory bank using an external selection solution.

The other side of the board :


This board will be a little bigger than the previous version but still very closed to the original size of a 6116 SRAM chip :


Once this card will have been tested, it will remain to develop the board of the memory banks selection system.

mercredi 4 février 2015

NVSRAM : Suite...

Pendant que plusieurs sujets avancent 'tranquillement', en voici un qui passe une nouvelle étape : une nouvelle version de la mémoire SRAM non volatile. Dans la première partie du sujet j'évoquais la réalisation de la version 2Ko compatible avec les SRAM standards de type 6116. Aujourd'hui, il s'agit de la version compatible avec les tailles 8Ko et 32Ko. En fait il s'agit uniquement d'un 'composant' de 32Ko de type SRAM 62256, compatible aussi avec les boîtiers à 28 broches des SRAM de 8Ko de type 6264.

A gauche la version 2Ko et à droite celle de 8/32Ko.
La version de 2Ko a déjà été testée avec succès à l'intérieur d'un synthétiseur JX3P. La nouvelle version est en cours de test avec le terminal Télémécanique XBT :

Système bien pratique, équipé d'un processeur de type 80c31.
Ce système possède l'avantage de comporter un support 28 broches, destiné à recevoir un type particulier d'Eprom effaçable électriquement, l'ancêtre de la Flash. Cette mémoire est destinée à recevoir des sortes de 'plugins' téléchargés puis enregistrés dans cette Eprom effaçable. La taille de ce composant étant de 32Ko, il suffit de le remplacer par la mémoire NVRAM de 32Ko et d'écrire un petit programme qui se contente d'écrire et lire les données pour en vérifier l'exactitude. C'est simple et efficace puisqu'il est possible en plus, d'utiliser l'afficheur pour informer de l'état du déroulement des tests.

Le terminal XBT en cours de test de la toute première version de NVRAM à base de FRAM.
A noter que j'ai remplacé le processeur d'origine par une version plus rapide et compatible de la famille Dallas, aujourd'hui propriété de Maxim, pour contrôler les limites des temps d'accès. Cette version de 32Ko de NVRAM est censée en effet,  pouvoir équiper un Prophet VS basé lui, sur un processeur 68000 à 8Mhz.

La prochaine étape consistera donc à modifier la carte mère du Prophet VS pour y intégrer cette mémoire non volatile, permettant ainsi la suppression de la batterie de sauvegarde et donc le potentiel problème de fuite chimique, avec toutes les conséquences néfastes que l'on sait pour le circuit imprimé!

vendredi 28 novembre 2014

NVSRAM : Sauvegarde des mémoires programme des synthétiseurs vintages et autres antiques Breloques électroniques (bis)...

La raison de ce (bis) dans le titre, est que j'ai tenté de répondre à ce problème il y a déjà quelques mois sans vraiment y parvenir du fait d'un choix technologique un tantinet inadapté : tentative. La machine destinataire de cette étude est le JX3P :

Pour ce premier essai, j'avais décidé d'utiliser un circuit mémoire spécial qui conserve ses données même en l'absence de tension d'alimentation : une FRAM.

Le problème est que ces composants ne sont disponibles qu'en tension d'alimentation de 3,3V max, ce qui les rend inutilisables dans les anciennes machines fonctionnant en 5V. Une adaptation importante des signaux doit donc être effectuée. Or, même en ne considérant que le bus de données, on en arrive vite à un circuit difficile à faire tenir sur une empreinte mémoire de type 61256.

Version à composant FRAM.
Et cela, sans même avoir traité la protection en écriture de la mémoire lors de la coupure d'alimentation du système. Dans ces conditions, essayer de produire l'équivalent d'une RAM de 2Ko de style 6116 avec de la FRAM n'est tout simplement pas raisonnable.

J'ai donc tenté de trouver une solution plus adéquate à mon problème. Et vous l'avez bien compris, si j'écris ce billet, c'est que j'ai trouvé. Effectivement, une mémoire capable de se comporter comme une SRAM standard, de fonctionner en 5V et qui gère sa protection en écriture, ça existe.

En fait, il s'agit d'un composant possédant deux mémoires dans le même boîtier. Une SRAM standard et une mémoire non volatile de même taille. On perçoit de suite le fonctionnement : il suffit de recopier la SRAM dans la partie non volatile et le tour est joué. Effectivement! Le plus fort, c'est que c'est le composant lui-même qui se charge de cette opération. Il le fait dès qu'il détecte une chute de tension de son alimentation. Dans ce cas, un condensateur de sauvegarde lui laisse le temps d'effectuer la copie. Cette opération ne s'exécute pas de façon séquentielle, mais cellule par cellule, simultanément. Le condensateur est donc nécessaire, non seulement pour permettre à la mémoire d'avoir le temps d'effectuer sa sauvegarde, mais surtout pour fournir l'énergie réclamée lors de cette opération consistant à copier simultanément des milliers de cellules EEPROM ou FLASH, peu importe la technologie non volatile employée. L'utilisation d'un tel composant permet une simplification très appréciable du circuit de substitution de SRAM conventionnelle :

Abstract :  Since a long time, I wanted to find a solution to replace the SRAM with the backup battery present in a lot of gears like many old synthesizers of the 80s, to store the internals patchs. Until now, there were a component that could done the job, the FRAM memories. But at this time, this type of memories do not accept a power voltage greater than 3,3V, that is not compatible with the 5V power supply of this old gears.

So, I tried to make a board to convert all the signals needed by the FRAM memories, from the synthesizer I wanted to equiped with. But finally, it appears to be to difficult to realize this task on a board that fit exactly à SRAM 6116 footprint. Recently I founded a component that operates at 5V and can backup its datas without any external special operation. In fact, this type of memorie contains two pages of memories : on page is a standard SRAM, the other is a NON-VOLATILE memorie intended to backup automaticly the SRAM portion of the circuit. And the best : This circuit operates at 5V!
I juste made an adaptator board that contains all the necessary componants for this new SRAM to work corectly at the original place of the 6116 SRAM.
And it works fine! I removed the backup battery, I loaded the free patchs bank with my saved patchs and the JX works as usual, but without battery : Fantastic...
I have to do this job for a 8 or 32K SRAM, that is just the same type of component, and put two of them into my Prophet VS synthesizer.
Many others machines should be able to continue their job, équiped with this new solution, but without the risque of damages caused by the leak of battery...

Version à composant spécial à double banc mémoire.
Le condensateur de 100µF fournit l'énergie nécessaire lors de la coupure d'alimentation pour effectuer la copie des donnée en mémoire non volatile. Sur l'autre face du circuit imprimé, une simple résistance de 10K Ohms permet de protéger l'entrée d'écriture du circuit. Et tout cela tient aisément sur l'emplacement d'une SRAM de type 6116.

Et dans la vraie vie? Cette fois, je n'ai même pas jugé bon d'effectuer des tests sur mon terminal télémécanique, j'ai opéré directement sur la carte mère du JX3P. Pour se faire, j'ai ôté la SRAM de type 6116 de la carte, puis placé un support de circuit intégré de type tulipe. Puis enfin, inséré la SRAM non volatile dans ce support :

Tada... Cette fois, j'y ai droit!










J'ai d'abord effectué les tests de fonctionnement en ayant laissé la pile de sauvegarde en place. Cette fois, le synthétiseur s'est correctement initialisé. La demande des patchs utilisateurs se traduisant par aucun son : normal.

J'ai donc rechargé la machine avec mes patchs précédemment sauvegardés. Tout à correctement fonctionné. Le JX3P ne présentant aucune différence de fonctionnement par rapport à précédemment, j'ai donc retiré la pile de sauvegarde.
Au rallumage du JX, les patchs utilisateurs étaient toujours présents. Par la suite, j'ai effectué des modifications de patchs et ai pu valider quelles étaient correctement sauvegardées à l'extinction de la machine.

Pour finir, j'ai du adapter quelque peu le remontage de la carte mère du JX. En effet, le 'sandwich' constitué du support de circuit intégré et de ma nouvelle SRAM non volatile ne passait plus sous les touches du clavier. J'ai donc changé tous les supports en plastic blanc de la carte du JX par des modèles plus étroits tout en vérifiant que la face 'soudure' de cette carte n'entrait pas en conctact avec la feuille métallique collée sur la caisse du synthé. Et voilà!

Fini les risques de fuite de pile de sauvegarde et de perte de données : tout simplement!

La suite? Une version 6264 de type 8Ko, qui sera en fait une 61256 de 32Ko. J'ai un Prophet VS qui n'attend que ça!

samedi 13 septembre 2014

Sauvegarde des mémoires programme des synthétiseurs vintages et autres antiques Breloques électroniques...

Bien que le non de ce blog puisse le suggérer, force est de constater que je n'ai pas vraiment publié de sujet sur les synthétiseurs jusqu'à maintenant, mis à part ce billet de juin : Prophet VS et CEM5530

L'occasion donc d'évoquer ici un sujet récurent qui ne laissera, j'en suis (quasi) certain, pas grand monde indifférent.

Mise en situation : aux presque débuts de l'histoire des synthétiseurs, je fais ici référence à la période ou est apparu sur terre le règne des micro-processeurs dans les années mi-soixante-dix, ces machines et par extension beaucoup d'appareils électroniques se sont vus affublées du vocable 'programmable' ou 'full memories' ou que sais-je d'autre pour indiquer la merveilleuse nouvelle possibilité de sauvegarde des configurations. En d'autres termes, le progrès permettaient non seulement de programmer le son sur un synthétiseur mais aussi et surtout d'en conserver les paramètres même lors de son extinction.

Impossible de ne pas faire mention d'un des tout premiers synthétiseurs de ce type, le Prophet-5 de Séquential Circuit :

Image honteusement 'pompée' du web!

A cette époque, pas d'EEPROMs, flashs, SD-Cards clés USB, disques durs etc etc... Non, la plupart du temps il s'agissait d'une RAM statique communément appelée SRAM qui, alimentée par une source de tension de secours, conservait les précieuses données. Une SRAM étant statique, elle conserve d'elle-même ses données sans nécessité de rafraîchissement comme les DRAM (dynamique RAM), du moins tant qu'elle reste alimentée. La 6116 de 2K octets en est la digne et vénérable représentante :

Image honteusement 'pompée' du web! Mais estampillée MHS quand même!

Et alors me direz-vous. Et bien ces SRAM, même si elles requièrent une très faible puissance pour retenir leur contenu, réclament tout de même une sauvegarde par pile ou batterie à même de palier l'arrêt d'alimentation générale. Et c'est la que se pose le vrai gros problème. Quand la pile ou la batterie est déchargée, outre le fait qu'à ce moment précis la SRAM et vous par la même occasion avez perdu toutes vos informations, elle a tendance à fuire, à couler et à oxyder les pattes des composants alentours ainsi que des pistes du circuit imprimé. Inutile de préciser qu'à ce petit jeux, il arrive un moment ou le synthétiseur peut présenter comme un léger dysfonctionnement. Un bon exemple provenant du site http://www.digplanet.com :

Joli travail!

Ne pourrais-t-on pas se passer de ces piles ou accus pour éviter ces problèmes?
Si, évidemment, on pourrait. Mais ça n'est pas si simple. Même s'il existe aujourd'hui d'autres composants capables de retenir l'information sans alimentation, ils requièrent tous un traitement algorithmique particulier pour mener à bien leur mission. Or, dans le cas qui nous intéresse, le circuit de remplacement doit fonctionner DE LA MÊME FAÇON que la SRAM d'origine. Ou en tout cas, en simuler parfaitement le comportement.

Il existe une solution viable : la FRAM. Initialement fabriqués par Ramtron, ces composants le sont depuis quelques mois par Cypress qui à apparemment acquis Ramtron. A noter que Cypress propose une autre solution de SRAM non volatile basée sur un autre principe : la sauvegarde pure et simple du contenu d'une SRAM classique dans une mémoire non volatile. L'opération s'effectuant sans la moindre intervention extérieur, à l'occasion de la disparition de la tension d'alimentation du composant.

Ces circuits FRAM se comportent exactement comme les SRAM mais, de technologie ferro-magnétique, ils ne perdent pas leur données même en cas de perte d'alimentation.
Et personne n'y a déjà pensé? Si, bien-sûr :

Ça se trouve ici : http://pinforge.com/6116.html
Tout va bien alors! Oui, c'est parfait, sauf que ce circuit FM1608 est obsolète (tiens j'aurais encore pu caser 'obsolescence programmée' dans le titre de ce billet) et de toute façon fonctionne (fonctionnait) en 5V.

Mais, Ramtron (Cypress) propose ce même type de circuit en technologie moderne, donc fonctionnant en 3,3V. Et la, ça ne va plus du tout. Inutile de tenter la connection d'un tel composant en environnement 5V, norme de toutes les machines dont il est question dans ce billet. Cela risque fort de ne pas plaire à la FRAM, pas plus qu'à Denis Bodor (des éditions Diamond).

Il faut donc adapter les signaux! Avant de présenter mon prototype sur la question, je tiens à préciser qu'il s'agit d'un prototype et que c'est en pleine conscience et possession de mes moyens que j'ai adopté les solutions présentées ici :

Tada!

Pour adapter les signaux du bus d'adresse, j'ai implémenté sur la face cachée du circuit ci-dessus, un ensemble de ponts diviseurs réalisés à partir de résistances cms en boîtier 603. Pour déterminer les valeurs des résistances, j'ai considéré la charge CMOS que cela pouvait présenter aux sorties du processeur, ainsi que la fréquence de coupure et donc la fréquence maximale atteignable par ce système en considérant la capacité d'entrée des signaux de la FRAM. Le tout pour obtenir quand même un rapport de division me permettant d'obtenir les 3,3V à partir du 5V. Petit jeux amusant mais digne du parfait hérétique!
Pour le bus de données, j'ai adopté un convertisseur standard de bus 3,3V <-> 5V.

La raison profonde de ce choix, en vrai, est qu'après avoir tenté la mise en place sur un circuit imprimé si petit, de composants logiques me permettant d'effectuer l'adaptation voulue de tous les signaux, je me retrouvais avec des caractéristiques de circuit imprimé difficilement réalisable par les fournisseurs standards, ou en tout cas, à un prix pas vraiment amateur!

J'ai donc tenté ma chance d'une autre façon. J'ai considéré que la plupart des synthétiseurs, enfin ceux que je possède, ne sont équipés que d'une très petite partie processeur. En général une RAM, une ROM et très peu de buffers de bus. D'autre part, ces systèmes fonctionnent à très faible vitesse et n'accèdent pas aux circuits à moins de 100ns. Ma solution devait donc convenir tant en terme de charge sur le bus d'adresses qu'en terme de fréquence de fonctionnement.

Et revoici le terminal Télémécanique XBT, dont j'ai en partie décodé le fonctionnement pour l'adapter à mes besoins, en l’occurrence tester mon prototype de FRAM. Ce terminal XBT ressemble très fortement à beaucoup de parties processeur des synthétiseurs 'de la belle époque', ça tombait bien...

La FRAM juste sous l'émulateur d'EPROM.

Le résultat est très probant. J'ai programmé le terminal pour écrire les 32K octets de la FRAM alternativement avec le code 0xAA et 0x55 avec lecture totale de la mémoire avant changement de code, et vérification de la donnée lue. Le tout en boucle continue. Cela fait quelques jours maintenant que le système fonctionne en permanence.

Je me contente d'afficher que le test est effectué lorsque je ne trouve aucune erreur à la suite d'une boucle complète d'écriture/lecture. Sinon, un message plus...laconique apparaît! Pour l'instant, j'obtiens plutôt ceci :

Avec un film plastique devant l'écran pour en améliorer le contraste.

Perspectives : je laisse le système fonctionner de la sorte encore quelques jours et si tout se passe bien, je l'implémenterai dans un des synthétiseurs à ma disposition. Puis, si le fonctionnement s'avère concluant, j'étudierai un système plus 'orthodoxe' avec adaptateur de bus adéquate.

Update 18/10/2014

Les tests effectués à l'intérieur d'un JX3P n'ont pas été concluants. Après avoir retiré la RAM de la carte mère du synthétiseur, j'ai placé sur le circuit imprimé un support de circuit intégré pour y insérer le montage à FRAM, non sans avoir effectué les quelques adaptations de câblage nécessaires. La ram d'origine est une 6116 (ou équivalente) alors que le montage à FRAM possède le brochage d'une 62256. A la mise sous tension, le synthétiseur s'initialise correctement. Cependant par la suite, il ne réagit plus.

Testés à l'oscilloscope, les signaux de la carte mère semblent corrects mais pas obligatoirement aux bons niveaux. Comme le JX3P possède des bus d'adresses et de données plus étendus, avec beaucoup plus de composants que sur ma carte de test, la chute d'impédance du bus généré par les diviseurs de tension du montage FRAM perturbe la partie processeur.

C'est ce que je craignais. Je n'ai pas été déçu!
Une étude avec adaptation complète du bus d'adresse s'impose donc!

Pour la sauvegarde et la restauration des paramètres sonores de la machine, j'ai utilisé un enregistreur DAT portable Sony TCD-D8. Une fois les niveaux sonores réglés, le fonctionnement est parfait!

Update 04/02/2015

Nouvelle version fonctionnelle du projet NVSRAM.