Décodage d'adresses... je m'y intéresse enfin !

Placez ici vos trucs et astuces, étalez sans retenue votre savoir-faire et votre science qui va nous permettre de redonner une apparence neuve et fonctionnelle à nos bouzes.

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Ouais, pas faux ! :wink:
Avatar de l’utilisateur
Totor le Butor
Messages : 2224
Inscription : 07 sept. 2011 16:14
Localisation : Paris - Mezels

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Totor le Butor »

Dans n'importe quel schéma de carte à microprocesseur on sélectionne d'abord un circuit complexe par sa patte /CS puis on y lit ou écrit par la patte /R ou /WE. Parfois, une 3eme patte /OE permet d'isoler le circuit du bus de données.

Dans des cas simples comme le tien on peut raccorder ensemble les pattes de sélection de boitier et d'action à réaliser ou en valider une en permanence, de préférence le /CS puisque le /OE suffit à isoler complètement le boitier du bus. Le seul inconvénient est la consommation plus élevée du boitier.

Pour le découplage, il faut mettre un condo de 0,1 à 1µF max au plus près du circuit, l'important c'est qu'il puisse réagir vite aux pics de consommation du boitier.
Born to bricole
[Rch] Vieux composants électroniques et circuits intégrés toute époque et vieilles cartes .
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Merci pour vos conseils. :)

Voici ce que ça donne:
310320 schema.png
310320 schema.png (59.22 Kio) Consulté 4283 fois
Notez les deux /CE à la masse et les signaux /CE1 et /CE2 sur chaque /OE.

Capas de découplage sur chaque CI, et deux résistances de tirage.
Xavier_AL

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Xavier_AL »

Merci Falkor pour ton travail.
Cela permet de mettre en lumière les pièges et les astuces de ce genre de circuits.

Totor, nous prenons note.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Surtout merci pour vos conseils qui me permettent de progresser... :P

Le routage se passe bien, je pense que le brochage du nez de carte de la VCS à été pensé pour faciliter le tracé... C'est tout droit, rien ne se croise !
wip.png
wip.png (23.73 Kio) Consulté 4234 fois
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

C'est encore moi... N'ayant pas encore pu reprendre le boulot, je continue de faire de la théorie dans du décodage d'adresses. Je tente cette fois ci de faire un peu plus compliqué. :)

Je souhaite créer une petite carte me permettant de caler 8k de ROM pour le VIC-20, et je souhaite utiliser encore ici des 2716 de 2k.

Je commence par la memory map, qui se présente ainsi (source) :
mmap.png
mmap.png (36.65 Kio) Consulté 4140 fois
Les plages disponibles sont découpées (entre autres) en banques de 8k, chacune ayant son signal d'activation (dispo sur le "expansion port") : /BLK1, 2,3 et 5. (autres signaux existants pour la RAM)

Quelques recherches m'ont indiqué que la banque 5 ($A000 à $BFFF) est "auto-bootable" au lancement de la machine, et est donc très utilisée dans les cartouches de jeux et programmes. Une autre banque utilisable est la 3, mais non auto-bootable. J'ajouterai éventuellement un cavalier pour choisir laquelle, si je souhaite avoir un ensemble bootable ou non.

J'ai donc refait un tableau (j'imagine qu'avec l'expérience on peut faire ça de tête) qui résume le tout. J'ai divisé la plage $A000 à $BFFF en 4 morceaux de 2k, ce qui donne:

-1ere ROM : $A000 à $A7FF
-2eme : $A800 - $AFFF
-3eme : $B000 - $B7FF
-4eme : $B800 - $BFFF

resume.png
resume.png (33.62 Kio) Consulté 4140 fois
A gauche de mon tableau se trouve les mêmes infos représentées en binaire (qui me parle mieux :P). Se pose maintenant la question du décodage. Comme suggéré plus haut, le 74LS138 semble être un bon choix pour faire le boulot.

Voici sa table de vérité :
ls138.png
ls138.png (37.64 Kio) Consulté 4140 fois
En bleu les lignes où le circuit est actif, càd quand les entrées de validation E1 à E3 sont à respectivement 0, 0 et 1.

Si je reviens sur mon tableau, et si j'observe les bits d'adresse A13 à A11, j'en déduit que pour mes quatre plages j'ai :

Code : Tout sélectionner

           A13  A12  A11
ROM 1       1    0    0
ROM 2       1    0    1
ROM 3       1    1    0 
ROM 3       1    1    1
J'en conclue que, si je relie A13 à l'entrée A0 du décodeur, A12 sur A1 et A11 sur A2, la table de vérité m'apprends que :
-ROM 1 est activée par O1 (H L L)
-ROM 2 est activée par O5 (H L H)
-ROM 3 est activée par O3 (H H L)
-ROM 4 est activée par O7 (H H H)

L’ordre des sorties n'est pas croissant mais en regardant la table de vérité du décodeur ça semble normal. J'ai donc juste à relayer les sorties correspondantes aux /CE de mes circuits.

J'en arrive à mes questions :

-mon analyse est-elle jusque ici bonne :?:
-le bus d'adresse dispo sur le port d'extension ne va que jusqu'à A13, je n'ai donc pas de bits A15 et A14 à disposition. Comment alors prendre en compte la banque active ? Je pensais prendre /BLK5, l'inverser, et caler ce signal sur "E3" du décodeur, avec /E1 et /E2 à LOW. Mais ça m'oblige à ajouter un inverseur. Possibilité de faire plus simple ? J'ai pensé caler /BLK5 sur le A0 du décodeur (au lieu de A13), ce qui pourrait m'activer d'autres sorties... C'est peut-être le plus simple ? Pas d'inversion à prévoir... (Sorties respectivement 0, 4, 2 et 6). J'imagine qu'il y a plein de solutions qui peuvent marcher.

Merci pour votre aide. :)
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par hlide »

Si tu associes A11 à A0, A12 à A1 et A13 à A2, ça donnera respectivement /O4 (HLL - ROM1), /O5 (HLH - ROM2), /O6 (HHL -ROM3) et /O7 (HHH - ROM4) - en correspondance directe avec ta plage - sans devoir recourir à cette table de vérité pour éviter la gymnastique mentale entre les /Ox. Après si le choix est dicté par le placement des broches, on peut combiner comme tu l'as fait.

Pour les entrées /E1, /E2 et E3 je ne vois pas à quoi tu les connectes. Aux autres Ax ? si ça avait été un Z80, j'aurais connecté /MREQ à /E1, A14 à /E2 et A15 à E3. Pour le 6502, je te renvois à ce lien car je n'avoue pas trop bien comprendre comment fonctionne l'accès mémoire avec ses signaux.

EDIT: ok, c'est /BLK5 . Donc le connecter à la fois sur /E1 et /E2. +5 V sur E3.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Ok merci. L'ordre des sorties du 138 m'importe peu, je n'ai pas de contraintes à ce niveau là.

Je suis en train de dessiner le schéma, ça sera plus parlant que mes tableaux. :wink:
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Ok voici la synthèse :

-Je suis resté sur ma config d'origine sur les sorties du décodeur (sorties 1, 3, 5 et 7)
-/E1 et /E2 sont reliés à !BLK5 (ou !BLK3, avec cavalier) et E3 au 5v
-/OE de mes ROMS à la masse

140520 schema.png
140520 schema.png (41.9 Kio) Consulté 4095 fois
Je cale une résistance de tirage haut sur le /CE de mes ROMS ?
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par hlide »

je ne pense pas que ce soit nécessaire vu que leur état est haut par défaut (ils ne sont à l'état bas que si G1 = 1, G2A = 0 et G2B = 0)
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Ok.

Le reste de mon analyse te semble bon sinon ?

J'ai tenté de chercher des outils de simulation de ce genre de circuits pour faire mes vérifs, mais rien trouvé en gratuit.... (Proteus semble bien mais bon)
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par hlide »

Essaye donc celui-là : https://github.com/hneemann/Digital. Je ne l'ai pas entièrement testé toutefois. On peut le télécharger d'ici.

Je te dirais que ça me semble bien. Après je ne suis pas un électronicien à la base. Je suppose que si personne d'autre se manifeste, c'est qu'il ne doit pas y avoir de soucis.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Merci à vous pour les conseils, j'attaque le routage. :)


Tant que j'y suis, comment aborder le cas des circuits à interfacer ne comportant qu'un seul octet de "mémoire" ? Je pense par exemple au SN76489 dont on parle dans un autre post.

Le décodage consiste ici à faire en sorte que le circuit réagisse à une seule adresse. Quelles sont concrètement les solutions pour faire réagir un circuit à une seule combinaison d'adresse ? Je pensais à un 74LS30 (8-INPUT NAND GATE) qui possède 12 entrées, qu'on peut associer à des portes NON pour se créer la combinaison d'adresses souhaitée. Mais dans le cas d'un bus d'adresse plus large, il existe peut-être des solutions plus simples ?
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Daniel »

Falkor a écrit : 17 mai 2020 13:28 Je pensais à un 74LS30 (8-INPUT NAND GATE) qui possède 12 entrées
Le 74LS30 ne possède pas 12 entrées, seulement 8.
Après il y a le 74LS133 avec 13 entrées, comme dans le synthétiseur Nathan pour Thomson .
Parfois les constructeurs utilisaient des GAL, comme dans l'extension nanoréseau Léanord, par exemple.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Falkor
Messages : 1701
Inscription : 28 juin 2010 12:09
Localisation : Cluny, Saône et Loire

Re: Décodage d'adresses... je m'y intéresse enfin !

Message par Falkor »

Oups oui pardon, j'ai lu le symbole un peu trop rapidement :
ls30.png
ls30.png (2.27 Kio) Consulté 3952 fois
Du coup deux circuits permettraient associés à une porte ET d'isoler l'adresse souhaitée. Ou bien utiliser un 13 entrées quitte a réserver un emplacement mémoire plus grand...
Répondre