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 |
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.
Aucun commentaire:
Enregistrer un commentaire