Table des matières:

6502 Ordinateur minimal (avec Arduino MEGA) Partie 1 : 7 étapes
6502 Ordinateur minimal (avec Arduino MEGA) Partie 1 : 7 étapes

Vidéo: 6502 Ordinateur minimal (avec Arduino MEGA) Partie 1 : 7 étapes

Vidéo: 6502 Ordinateur minimal (avec Arduino MEGA) Partie 1 : 7 étapes
Vidéo: Les bases de l'Arduino ! 2024, Juillet
Anonim
6502 Ordinateur minimal (avec Arduino MEGA) Partie 1
6502 Ordinateur minimal (avec Arduino MEGA) Partie 1

Le microprocesseur 6502 est apparu pour la première fois en 1975 et a été conçu par une petite équipe dirigée par Chuck Peddle pour MOS Technology. À l'époque, il était utilisé dans les consoles vidéo et les ordinateurs personnels, notamment Atari, Apple II, Nintendo Entertainment System, BBC Micro, Commodore VIC20 et 64. À cette époque, il était l'un des moins chers du marché. Il n'a jamais vraiment disparu et il est maintenant utilisé par les amateurs et les professionnels pour de nombreuses applications.

La version que j'utilise est le W65C02S6TPG-14 qui est fabriqué par Western Design Center et utilise dix fois moins d'énergie que l'original. Elle a la particularité de ne pas avoir à fonctionner à 1 MHz comme la puce d'origine. Il peut fonctionner beaucoup plus lentement ou être utilisé pour parcourir un programme en une seule étape et même augmenter jusqu'à 14 MHz. La fiche technique de la puce explique ses capacités. Les autres puces 6502 n'ont pas cette capacité et ne fonctionneront pas de cette façon. Les puces sont actuellement disponibles sur Ebay ainsi que d'autres sources.

Fournitures

Toutes les pièces utilisées sont actuellement disponibles sur Ebay, AliExpress et autres.

Étape 1: Le concept

Je me suis inspiré de Ben Eater qui a produit une série de vidéos sur YouTube sur le 6502 et de nombreux autres aspects de la construction d'ordinateurs et de circuits. Le programme a été écrit par lui à l'origine et j'ai modifié cela et certaines de ses conceptions pour arriver à ce Instructable. Une autre personne qui m'a inspiré était Andrew Jacobs qui a une section sur GitHub où il utilise un micro PIC pour contrôler son 6502.

Comme Ben, j'utilise un Arduino MEGA pour surveiller le 6502. J'utilise également le MEGA pour fournir le signal d'horloge contrairement à Ben. À l'heure actuelle, je n'utilise pas non plus d'EEPROM ou de RAM.

Étape 2: Exigences

Conditions
Conditions

Pour construire cet « ordinateur », une liste d'éléments est la suivante:

1 x Arduino MEGA

1 x Centre de design occidental W65C02S6TPG-14

1 x 74HC00N IC (Quad 2 entrées NAND gate) ou similaire

1 x 74HC373N IC (loquet transparent de type D octal) ou similaire

2 planches à pain 830 trous (1 à la rigueur)

Divers Dupont mâle - fils mâles et fils de liaison

2 x LED (j'ai utilisé 5mm bleu car vous pouvez vous en sortir sans résistances)

Commutateur à bouton-poussoir tactile momentané 1 x 12 mm monté sur carte SPST ou similaire

1 résistance 1K

2 condensateurs céramiques 0,1 uF

1 x 8 Way Water Light Marquee 5mm LED rouge (comme ci-dessus) ou 8 LED et résistances

REMARQUE: Si vous obtenez le kit dessoudé, vous pouvez insérer les LED dans le mauvais sens afin qu'elles soient à cathode commune. J'attache un fil volant (au lieu de la broche) afin qu'il puisse facilement se connecter ailleurs. VCC devient maintenant Ground. Vous pouvez bien sûr retourner les LED (sur un élément assemblé) et les ressouder, mais c'est beaucoup de bêtises ! Les kits sont actuellement disponibles sur AliExpress.

Étape 3: Assembler

Mettre ensemble
Mettre ensemble
Mettre ensemble
Mettre ensemble

J'ai trouvé plus facile d'utiliser de nouveaux fils DuPont qui n'avaient pas été séparés de leur ruban pour les bus d'adresse et de données.

Connectez la broche 9 (A0) du 6502 à la broche 52 du MEGA, broche 10 (A1) du 6502 à broche 50 etc …

jusqu'à

Connectez la broche 25 (A15) du 6502 à la broche 22 du MEGA.

16 connexions à ce jour.

de même

Connectez la broche 26 (D7) du 6502 à la broche 39 du MEGA, broche 27 (D6) du 6502 à broche 41 etc …

jusqu'à

Connectez la broche 33 (D0) du 6502 à la broche 53 du MEGA.

8 connexions supplémentaires.

Connectez la broche 8 (VDD) à 5v sur le MEGA.

Un condensateur de 0,1 uF connecté de la broche 8 à Gnd de la planche à pain peut être utile ici mais pas nécessaire.

Connectez la broche 21 (VSS) à Gnd sur le MEGA.

Les broches 2, 4, 6, 36 et 38 peuvent être reliées à 5v

Connectez la broche 37 (Horloge) à la broche 2 et à la broche 7 du MEGA.

Connectez la broche 34 (RWB) à la broche 3 du MEGA.

Connectez la broche 40 (Reset) comme le schéma ci-dessus.

Étape 4: Test du circuit

Test du circuit
Test du circuit

A ce stade, le 6502 fonctionnera et program1 peut être utilisé. Si vous utilisez le chapiteau à 8 voies (comme ci-dessus), il peut être inséré directement dans la planche à pain et le fil volant connecté à la terre, ou vous pouvez utiliser 8 LED et résistances. Les LEDS indiqueront ce qui se trouve sur le bus de données.

A ce stade, il serait aussi bien de régler les délais dans la Loop() à 500 ou plus, pour suivre ce qui se passe.

Vous devriez obtenir une sortie similaire sur le moniteur série comme celle ci-dessus. Lorsque l'on appuie sur Reset, le processeur effectue 7 cycles, puis il recherche le début du programme aux emplacements $FFFC et $FFFD. Comme il n'y a pas d'adresses physiques à lire pour le 6502, nous devons les fournir depuis le MEGA.

Dans la sortie ci-dessus, le 6502 lit $FFFC et $FFFD et obtient $00 et $10 (Low byte, High byte) qui est le début du programme à $1000. Le processeur commence alors à exécuter le programme à l'emplacement $1000 (comme ci-dessus). Dans ce cas, il lit $A9 et $55, c'est-à-dire LDA#$55 (Charger 85 dans l'accumulateur). Encore une fois, comme il n'y a pas d'emplacement mémoire physique, le MEGA simule ce qui est lu à partir du bus de données.

55 $ (85) donne le modèle binaire 01010101 et lorsqu'il est tourné, 1 bit à gauche donne $AA (170) 10101010.

Le programme montre que le processeur fonctionne correctement mais devient vite un peu ennuyeux, ainsi de suite à la partie suivante.

Étape 5: Étape suivante

L'étape suivante
L'étape suivante
L'étape suivante
L'étape suivante

Le "tas de spaghetti" ci-dessus est probablement quelque chose comme ce que vous aurez après cette étape.

Ensuite, vous devez ajouter les circuits intégrés 74HC373N et 74HC00N à la maquette.

Malheureusement, les broches du 373 ne sont pas alignées avec le bus de données, elles devront donc être connectées avec des fils.

Connectez 5v à la broche 20.

Connectez la masse à la broche 10.

Connectez la broche 33 (D0) du 6502 à la broche 3 (D0) du 74HC373N

et de même avec les broches D1 à D7.

Q0 à Q7 sont les sorties et celles-ci devront être connectées au chapiteau LED ou aux LED et résistances individuelles.

Avec le 74HC00 seulement 2 de ses portes sont nécessaires

Connectez 5v à la broche 14.

Connectez la masse à la broche 7.

Connectez la broche 17 (A8) du 6502 à la broche 1 (1A) du 74HC00

Connectez la broche 25 (A15) du 6502 à la broche 2 (1B) du 74HC00

Connectez la broche 34 (R/W) du 6502 à la broche 5 (2B) du 74HC00

Connectez la broche 3 (1Y) du 74HC00 à la broche 4 (2A) du 74HC00

Connectez la broche 6 (2Y) du 74HC00 à la broche 11 (LE) du 74HC373N

Connectez la broche 11 (LE) du 74HC373N à la broche 1 (OE) du 74HC373N

Vous pouvez connecter une LED bleue à 1Y et à la terre ainsi qu'à 2Y à la terre, cela indiquera quand la porte est active.

Enfin, changez la ligne dans la procédure onClock de program1 à program2

setDataPins(program2[offset]);

Étape 6: Le programme

Le programme
Le programme
Le programme
Le programme

Le programme 6502-Monitor contient les deux routines 6502 décrites ci-dessus.

Le programme est encore en cours de développement et est un peu désordonné.

Lors de l'exécution de program2, les retards dans la boucle() peuvent être de 50 ou moins et même complètement supprimés. La mise en commentaire des lignes Serial.print() accélère également l'exécution du 6502. La déconnexion de la broche 1 (OE) du 373 de la broche 11 (LE) produit des résultats différents. La déconnexion des broches 1 et 11 du 373 des portes NAND vous permet de voir ce qui se trouve sur le bus de données à chaque cycle d'horloge.

Vous devrez peut-être lier OE à la terre plutôt que de le laisser flottant car les 8 lignes de sortie sont désactivées si cette broche devient haute. Lorsque la broche LE est haute, les broches de sortie sont les mêmes que les entrées. Prendre la broche LE bas verrouille les sorties, c'est-à-dire que si les broches d'entrée changent, les sorties restent les mêmes.

J'ai essayé de garder le programme aussi simple que possible pour le rendre plus facile à comprendre.

Expérimenter les temporisations vous permet de suivre exactement ce que fait le 6502.

Vous trouverez ci-dessous les deux programmes (tous deux exécutés à l'adresse 1000 000) dans 6502 Assembler:

programme1

LDA#$55

NON

ROL

STA$1010

JMP$1000

Le ROL fait pivoter le contenu de l'accumulateur d'un bit vers la gauche, ce qui signifie que le 55 $ devient maintenant $AA.

En code machine (hex): A9 55 EA 2A 8D 10 10 4C 00 10

programme2

LDA#$01

STA$8100

ADC#$03

STA$8100

JMP 1005 $

En code machine (hex): A9 01 8D 00 81 69 03 8D 00 81 4C 05 10

Dans program2 il y a maintenant une adresse physique $8100 qui est l'endroit où le 74HC373 est situé sur le bus d'adresse.

c'est-à-dire que A15 du 6502 est 32768 ($8000) et A8 est 256 ($0100) = 33024 ($8100).

Ainsi, lorsque le 6502 écrit à 8100 $ (8100 $ STA, le R/W du 6502 est bas et les données sur le bus de données 6502 sont verrouillées lorsque le 373 LE devient bas. En raison de la porte NAND 74HC00, les signaux sont inversés.

Dans l'impression d'écran ci-dessus, la deuxième écriture a augmenté de 3 (ADC#$03) - est passée de $7F à $82.

En réalité, plus de 2 lignes du bus d'adresses seraient utilisées pour l'emplacement spécifique du 373. Comme il s'agit de la seule adresse physique sur les 65536 possibles, cela montre comment fonctionne le bus d'adresses. Vous pouvez expérimenter avec différentes broches d'adresse et les placer à un autre endroit. Bien sûr, vous devrez changer les opérandes STA vers le nouvel emplacement. par exemple. Si vous utilisiez les lignes d'adresse A15 et A9, l'adresse serait de 8200 $ (32768 + 512).

Étape 7: Conclusion

Conclusion
Conclusion

J'ai essayé de démontrer à quel point il est facile de faire fonctionner un 6502.

Je ne suis pas un expert dans ce domaine, donc je serais heureux de recevoir des commentaires ou des informations constructives.

Vous êtes invités à développer cela davantage et je serais intéressé par ce que vous avez fait.

J'ai l'intention d'ajouter une EEPROM, une SRAM et un 6522 au projet ainsi que de le mettre sur une carte à bande à l'avenir.

Conseillé: