Reproduction de PAL pour carte DCS
Extraction de la PAL
Etude et analyse d'une carte audio DCS et remplacement du PAL par un GAL.
Création d'un GAL de substitution par reverse-engineering.
Présentation
A partir de 1993, Midway (Bally/Williams) a équipé ses flippers d'une carte audio DCS A-16917. Cette carte est construite autour d'un processeur DSP (ADSP-2105) et un PAL (PAL 20L8) est utilisé pour simplifier l'électronique.
Les PAL sont des composants qui malheureusement, peuvent s'éffacer avec le temps et provoquer ainsi une panne de la carte. Sur la carte A-16917, le PAL est monté sur support ce qui va faciliter son remplacement.
Le PAL étant protégé, il est impossible de relire son contenu pour pouvoir ensuite le dupliquer, comme on peut le faire avec les EPROM. Le risque d'éffacement est bien réel, puisque ces cartes datent de 1984 et que la durée de rétention annoncée par le fabricant est d'une vingtaine d'années. Le seul moyen pour les préserver, va être d'analyser le fonctionnement du PAL afin d'être en mesure de reprogrammer un composant équivalent.
Analyse
Pour réaliser celle-ci, nous avons utilisé notre banc de test universel. Grâce à lui et au module testeur de composants, nous pouvons piloter à gré toutes les broches du PAL, sans avoir à brancher un seul fil. Inutile de sortir la planche à câbler, on connecte juste notre valise sur un PC :
Le PAL est placé sur le support ZIF du testeur de composants :
Pour piloter les différentes broches, on se sert du module GENERIC DIP, en choissisant un boitier DIP-24 :
Pour identifier rapidement les signaux afféctés sur le PAL, la méthode Post-It collé sur l'écran est très éfficace :
Décodage & Encodage
En faisant varier les entrées et en regardant le comportement des sorties, on arrive à établir les régles de fonctionnement du circuit. Bien sûr, on procéde par tatonnements, mais ici l'expérience et la connaissance des composants jouent un rôle primordial. L'intuition et l'expertise permettent d'éviter de tester des combinaisons inutiles.
L'exercice se complique quand certains signaux agissent en tant que bascules, autrement dit en logique "séquentielle" et non plus en logique "combinatoire". C'est le cas ici, car bien que le PAL 20L8 soit de type "simple" (et non "registered" comme les 20R8), il est tout à fait possible d'avoir un comportement complexe, séquencé.
Mais avec un peu de logique et beaucoup de pratique, on s'en sort. Au final, on écrit sur papier les équations logiques et séquentielles.
Par exemple, pour le signal ROMCS (ROM Chip Select), on arrive à déterminer assez facilement qu'il dépend des signaux BMS (Boot Memory Select), DMS (Data Memory Select) et des adresses A13/A12.
On encode cette équation en langage CUPL et pour simplifier la compréhension, on travaille en logique positive. L'inversion des signaux sera définie lors de l'affectation des broches. Ici on comprend facilement que le signal ROMCS est actif quand BMS est actif, ou que DMS est actif avec une adresse A13/A12 à "10".
Génération du fichier JEDEC
On encode l'ensemble des équations avec le logiciel WINCUPL. Ce "vieux" programme est toujours parfaitement adapté pour le codage des PAL/GAL. Il est gratuit, écrit à l'origine par ATMEL on le trouve désormais dans les archives chez MICROCHIP. On utilisera la simulation avec WINSIM (fourni avec WINCUPL) pour vérifier le bon comportement du GAL avant programmation.
La compilation produit directement un fichier JEDEC, que l'on peut visualiser avec n'importe quel éditeur de texte.
On générera non pas un, mais deux fichiers JEDEC. En effet, le PAL 20L8 pourra être remplacé par deux modèles de GAL:
- soit un GAL 20V8
- soit un GAL 22V10
Ces deux composants ont un brochage très proche et le même boitier 24 broches. Au niveau des équations et de la définition des broches, il n'y a aucune différence, on change juste une option de compilation. Bien sûr le fichier JEDEC généré sera légérement différent, puisqu'il y a plus de "fusibles" dans un GAL 22V10 que dans un GAL 20V8.
Programmation du GAL
C'est la partie la plus facile ! Une fois le fichier JEDEC obtenu, il suffit de le charger dans un programmateur adéquat (nous utilisons pour cela, soit le TOP 3100, soit le TL866CS).
Il ne reste plus qu'a remettre le GAL sur son support, à sa place dans la carte A-16917.