Implémentation d'un ALICE 4K dans un FPGA

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

network
Messages : 23
Enregistré le : 04 mai 2015 07:30

Implémentation d'un ALICE 4K dans un FPGA

Message par network » 12 mai 2015 00:15

Bonjour à tous,

Comme décrit lors de ma présentation, voici le portage du micro-ordinateur ALICE version 4K dans un FPGA.
Le FPGA utilisé est un XC3S500E de chez XILINX de la famille SPARTAN 3E, la carte de développement est le starter kit SPARTAN 3E de chez DIGILENT, et le logiciel de synthétisation est ISE Design Suite 14.1.

Les périphériques mise en œuvre de la carte starter kit sont :
  • Le driver RS232 pour l’émission/réception logiciel, ou le DEBUG,
  • Le port PS2 pour l’interface clavier,
  • Le port VGA pour l’affichage,
  • Une sortie pour la génération du son,
  • Un bus de donnée 8bits bidirectionnel, avec les signaux E, RW et un chip select pour des échanges avec des périphériques extérieurs.
Le projet est entièrement « codé » en VHDL, qui est plutôt un langage de description de matériel. Un des points forts de ce langage est sa portabilité sur tout type de FPGA, sa vitesse d’exécution, etc... mais en contre parti il est aussi très complexe. Pour ceux que sa intéressent, il y a de nombreux articles et autres sur internet traitant le sujet.
Le portage peut donc être réalisé sur un autre FPGA et/ou carte de développement, cependant la contrainte se porte sur le nombre de bits RAM embarqué au sein du FPGA.

Image

Ce qui fonctionne
  • MCU géré à 100%,
  • Les interruptions gérées à 100%,
  • MC6847 tous les modes sont gérés, cependant 2 couleurs sont différentes (« chamois » remplacée par blanc et « orange » remplacé par magenta), cela étant dû au port VGA de la carte de développement.
  • L’UART est Ok, hormis le mode WU (Wake Up), le débit sériel est issu de l’horloge interne de la carte, le mode externe n’est pas implanté. Les débits sériels sont normalisés et indépendant de la fréquence de fonctionne du MCU.
    tableau.png
    tableau.png (2.48 Kio) Vu 2231 fois
  • Le TIMER est géré à 100%,
  • Les ports P1 et P2 sont géré à 100%,
  • Le clavier est géré à 100%,
  • Le son est géré à 100%,
  • L’interface imprimante n’est pas gérée,
  • L’interface cassette est modifiée au profit d’une liaison série. Cependant les instructions de chargement et de sauvegarde sont conservées,
  • La fréquence par défaut est légèrement plus basse que celle d’ALICE.
Les caractéristiques :
  • Outre les caractéristiques de base d’un ALICE 4K, ce dernier est pourvu
  • D’une extension de RAM de 16K,
  • D’une ROM avec un code permettant le DEBUG,
  • D’un registre interne ou bien par le biais de trois touches clavier, il est possible d’accélérer ou de ralentir en temps réel la cadence du système. La fréquence MIN est de 98Khz, la fréquence MAX de 12,5 Mhz, et la fréquence par défaut de 892857,14 Hz (Légèrement plus basse que celle d’ALICE),
  • D’un registre interne ou bien par le biais d’une touche clavier, la possibilité de sélectionner 4 modes d’affichages. Le mode par défaut est le 256X192, puis un mode 512X192, un mode 256X384 et le dernier 512X384.
Le mapping :
mapping.png
mapping.png (13.82 Kio) Vu 2231 fois
Les registres $9200, $9201 sont uniquement en écritures.

Le clavier :

Les touches du clavier sont les mêmes que celles par défaut de l’émulateur DCALICE. La touche + permet d’incrémenter la fréquence, la touche la décrémente, et la touche * remet la fréquence par défaut.
La touche 9 permet de balayer successivement les 4 modes d’affichages.

L’interface série

La liaison série permet le chargement/sauvegarde logiciel, ou bien utilisé pour un mode dit de DEBUG. Deux logiciels distincts sont utilisés pour réaliser les deux modes décrits ci-dessus.
La capture ci-dessous correspond au logiciel de chargement/sauvegarde. Le format des fichiers K7/MC10 sont supportés. Le débit sériel est 9600 bauds pour le chargement d’un programme, et de 115200 bauds pour la sauvegarde.
Lors de chargement de programme, de temps à autre des ?IO ERROR peuvent survenir, ce problème sera ultérieurement résolu.
Image

Le mode DEBUG est tout simplement un outil permettant de venir modifier ou lire l’intégralité de l’espace adressable du système. Un EXEC36864 permet de lancer la routine de la ROM et de dialoguer avec le deuxième logiciel. Ci-dessous la lecture de la zone mémoire $0000..$0160
Image

Ecran d’accueil mode 256X192
Image

Capture d'écran de quelques jeux dans différents modes

Jeux pinball
Image
mode 256X192

Image
mode 256X384

Image
mode 512X192

Image
mode 512X384

Jeux space assault 512X384
Image

Jeux Flagonbird 512X384
Image

Jeux pacman 256X192
Image

Pour finir ce premier jet, voici le fichier MCS nécessaire pour l'implémentation de l'ALICE.
ALICE4K.rar
(114.13 Kio) Téléchargé 176 fois

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par Daniel » 12 mai 2015 08:47

Je suis admiratif. L'émulation sur PC simplifie un peu les problèmes en n'émulant pas toujours au niveau du matériel, mais dans un FGPA il faut être beaucoup plus précis. Je suppose qu'on peut récupérer des modules tout prêts, par exemple pour le 6803, sinon c'est un énorme travail de tout reconstituer. C'était un beau challenge, bravo d'être arrivé au bout.

Si j'ai bien compris la prochaine étape sera les Alice 32 et 90, avec le fameux EF9345. Ca ne sera pas si facile que le 6847 :wink:
Bon courage !
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
Fabf
Messages : 48
Enregistré le : 11 déc. 2014 20:50
Localisation : Vienne(38)

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par Fabf » 12 mai 2015 21:56

Super projet.
N'étant pas programmeur, je trouve le VHDL vraiment fascinant.

Si je peux me permettre une remarque, je trouve un peu dommage, et cela est valable pour tous les développeurs FPGA, d'utiliser une si grosse carte de développement pour un si "petit" ordinateur :(
Cela ne facilite pas l'éventuelle réédition de la machine.

L'essentiel est quand même là, une description fidèle de la machine + quelques bonus. :wink:
En plus tu as conservé le port extension, c'est top. :D

HS :
J'ai un problème avec l'interface clavier en VHDL de mon projet, j'arrive pas à utiliser les codes étendus, je peux te contacter ?

Avatar du membre
6502man
Messages : 8798
Enregistré le : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par 6502man » 13 mai 2015 10:44

Superbe projet :D

Félicitations pour le résultat, et merci pour tout les détails :D

Est ce que l'on peut facilement interfacer avec ce kit un vrai clavier d'Alice ?

Tu peut même intégrer une carte SD pour pouvoir lire et ecrire directement les fichiers .K7 :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.

Avatar du membre
irios
Messages : 3130
Enregistré le : 04 nov. 2007 19:47
Localisation : Rochefort du Gard (30)
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par irios » 13 mai 2015 22:25

Pour ceux qui veulent s'intéresser aux FPGA et implémentations des microprocesseurs : http://members.optushome.com.au/jekent/ ... ection5.12
http://irioslabs.over-blog.com/

La connaissance ne vaut que si elle est partagée par tout le monde.
I2C

Avatar du membre
farvardin
Messages : 355
Enregistré le : 27 déc. 2014 16:07
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par farvardin » 14 mai 2015 00:11

hmm, ça veut dire peut-être bientôt de l'Alice dans le MiST ? Ça utilise du VHDL aussi alors tout est possible :)

Bravo en tout cas !

network
Messages : 23
Enregistré le : 04 mai 2015 07:30

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par network » 14 mai 2015 12:06

Bonjour,

Pour répondre aux questions,

Mon prochain challenge est effectivement l'EF9345, j'ai commencé à me cogner la doc, et les divers post d'ici. Son implémentation va être compliqué, mais cela devrait aller, je reste optimiste.

En ce qui concerne les modules VHDL, j'ai tout développé de A à Z, cependant pour le CPU je me suis inspiré d'un module existant, que j'ai adapté, et déboguée. Mais cela a été la partie la plus compliqué à mettre en oeuvre car c'est très fastidieux le débogage en VHDL.

L'adaptation d'un clavier d'alice n'est pas compliqué, il faut seulement sortir les ports 1 et 2, et modifier le module de gestion. Pour l'interface de la carte SD, c'est aussi faisable et assez facilement.

Pourquoi utiliser de gros FPGA, le problème c'est que toutes les cartes du commerce sont fournies avec. Financièrement, ce genre de carte est plus abordable, que d'en développer une. La deuxième raison est le nombre de cellules RAM intégrés, il est bien plus simple de gérer des bloc ram internes que de sortir un bus externe et y câbler des mémoires.

Fabf, pas de problème, tu peux me contacter si tu veux un coup de main

Avatar du membre
Carl
Modérateur
Messages : 9932
Enregistré le : 08 avr. 2007 13:21
Localisation : http://www.doledujura.fr
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par Carl » 15 mai 2015 11:40

Bravo network....!

Bientôt peut être un VG5000 dans un FPGA :wink:

Carl

Avatar du membre
PcKid
Messages : 485
Enregistré le : 17 sept. 2011 19:00

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par PcKid » 25 août 2015 12:16

Vraiment chouette bravo !

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *


Avatar du membre
PcKid
Messages : 485
Enregistré le : 17 sept. 2011 19:00

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par PcKid » 02 sept. 2015 19:28

Salut Network

Darren , le créateur de l'interface mc 10 et alice , parle de toi sur le forum mc 10 : us.

Edit :

c'est par ici : mais le forum yahoo est horriblement pas convivial.

https://groups.yahoo.com/neo/groups/TRS ... sages/5761

@+
Modifié en dernier par PcKid le 02 sept. 2015 19:51, modifié 1 fois.

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *


Avatar du membre
fneck
Site Admin
Messages : 11906
Enregistré le : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par fneck » 02 sept. 2015 19:45

Si tu mets le lien, ça sera plus facile pour tout le monde d'aller éventuellement lire le sujet.

network
Messages : 23
Enregistré le : 04 mai 2015 07:30

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par network » 03 sept. 2015 07:45

Salut à tous,

Pckid, ok, j'irais faire un tour sur le site.

Pour info, j'ai pratiquement fini le portage de l'alice32/90 dans le même FPGA, et tout fonctionne parfaitement bien, cependant il me reste à régler encore un problème sur la taille d'affichage entre le mode40 et 80 caractères. Hormis ce soucis, l'EF9345 est correctement émulé, j'ai volontairement fait un portage que des commandes les plus vitaux, j'ai donc implanté les celles se trouvant dans dcefF9345.c du projet DCALICE, qui doit bien représenter un bon 80% d'émulation.

Avatar du membre
PcKid
Messages : 485
Enregistré le : 17 sept. 2011 19:00

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par PcKid » 03 sept. 2015 07:59

C est vraiment super ,

Petite question : Il y a t il l éditeur assembleur d émule ?
Car sur le clavier ordi avec l émulateur dc , c est pas facile car ce sont les touches Alice qui sont mappées.
Et je cherche un moyen de taper librement le code pour exécuter des programmes sans me dire mince ou se trouve
La touche du contrôle Alice mais garder le clavier pc simplement.

Merci

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *


Avatar du membre
fneck
Site Admin
Messages : 11906
Enregistré le : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par fneck » 03 sept. 2015 22:47

@PcKid, un petit effort sur la présentation de tes messages serait apprécié, accents, ponctuation , majuscules... c'est un exemple de clarté ton message ci-dessus. Merci.

Avatar du membre
PcKid
Messages : 485
Enregistré le : 17 sept. 2011 19:00

Re: Implémentation d'un ALICE 4K dans un FPGA

Message par PcKid » 03 sept. 2015 22:55

Fabien,

On est pas tous sur un ordinateur, et les forums PhpBB, très lourd en html, et javascript
mettent un temps fou sur le téléphone portable, et en plus il ne met pas les accents.

Donc désolé, je fais au mieux, peut être qu'une mise du site, afin d'avoir une version mobile compatible, serait mieux pour l'utilisation ?

Recherche : Jeux et livres pour Alice Matra
* * * * * * Contactez - moi !* * * * * * *


Répondre