Reproduction de PAL pour carte DCS

Pinup
ADSP

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.

Carte DCS

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.

Carte DCS

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 :

Analyse PAL

Le PAL est placé sur le support ZIF du testeur de composants :

Analyse PAL

Pour piloter les différentes broches, on se sert du module GENERIC DIP, en choissisant un boitier DIP-24 :

Analyse PAL

Pour identifier rapidement les signaux afféctés sur le PAL, la méthode Post-It collé sur l'écran est très éfficace :

Analyse PAL

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.

Décodage

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.

Décodage

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".

Encodage

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.

Génération JEDEC

La compilation produit directement un fichier JEDEC, que l'on peut visualiser avec n'importe quel éditeur de texte.

Génération JEDEC

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).

Programmation GAL

Il ne reste plus qu'a remettre le GAL sur son support, à sa place dans la carte A-16917.

Dernière mise à jour de cette page: 10 Novembre 2018