Carte Vidéo
Les réseaux logiques programmables complexes, dont les ATF1508AS que j'ai utilisés sont assez anciens et nécessitent un environnement et un outillage de programmation adaptés.
Bien que datant un peu, la suite wincupl est suffisamment simple et efficace pour gérer ce genre de projet. Son seul problème est qu'elle ne fonctionne que sous un environnement Windows XP 32bits.
WINCUPL
Définition des cellules utilisées:
- PIN = A0; identifie comme A0 une entrée ou une sortie affectée automatiquement sur la puce
- PIN 43 = A1; identifie comme A1 une entrée ou une sortie qui sera affectée, dans la mesure du possible, à la borne 43 de la puce.
- NODE Reset; identifie une ressource interne (Registre) qui n'est pas affecté à une broche externe de la puce.
NOTA: Pour mémoire les ATF1508 possèdent 128 cellules dont au maximum 64 sont interconnectables avec les broches externes.
Il est également possible de déclarer des bus :
- NODE [D7..0]; Déclare les registres internes D0, D1, D2 D3, D4, D5, D6 et D7
- PIN [A3..0] = {2, 3, 6, 12}; Déclare plusieurs entrées ou sortie affectées à des connexions physiques.
Chaque sortie est le résultat des interaction de ces éléments.
- A0 = A1 & Reset ; Ici A0 est une sortie, car le résultat d'une opération logique, A1 une entrée ou une sortie et Reset un registre interne.
Il est possible de "condamné" une sortie en la mettant en "haute impédance", c'est à dire comme déconnectée, avec le suffixe .oe. Si ce dernier est à '0' la sortie est déconnectée, si il est à '1' la sortie électrique recopie la valeur de la variable interne.
- A1.oe = D0; la valeur de A1 est recopiée sur la sortie 43 de la puce avec le niveau électrique correspondant.
Types de cellules:
Les bascules présentes dans les ATF15xx sont des bascules D ou des bascules T. Elles sont associées à chaque cellule de base et sont contrôlée par des signaux définis par des suffixes.
- A0.ar = expression ; Remise à '0' de la cellule A0 de manière asynchrone (immédiate et prioritaire) si l'expression est égale à '1'.
- A0.ap = expression ; Mise à '1' de la cellule A0 de manière asynchrone (immédiate) si l'expression est égale à '1'.
- A0.ck = expression ; Modifie l'état de la bascule D ou T si l'expression passe de l'état '0' à l'état '1', front de déclenchement.
Bascule D:
- A0.d = expression; Valeur que prendra la sortie de la cellule/bascule sur un front de déclenchement
Bascule T:
- A0.t = expression; Si l'expression vaut '1' sur un front de déclenchement, alors la bascule change d'état, sinon elle reste dans le même état.
Les opérations logiques sont les suivantes:
| Opérateur | Exemple | Fonction | Priorité |
| ! | !A | NON | 1 |
| & | A & B | ET | 2 |
| # | A # B | OU | 3 |
| $ | A $ B | OU EXCLUSIF | 4 |
AtmelISP
L'application AtmelSP permet de programmer les puces à l'aide d'une interface ATDH1150PC connectée sur un port parallèle. Elle utilise, pour cela le fichier .jed (JEDEC) produit par la suite WINCUPL lors de la compilation du programme.
Il est possible de programmer plusieurs puces lorque leur port de programmation (JTAG) est chainé.
- Détails