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 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.
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.
- 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.
- 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.
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.
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
Ecran d’accueil mode 256X192
Capture d'écran de quelques jeux dans différents modes
Jeux pinball
mode 256X192
mode 256X384
mode 512X192
mode 512X384
Jeux space assault 512X384
Jeux Flagonbird 512X384
Jeux pacman 256X192
Pour finir ce premier jet, voici le fichier MCS nécessaire pour l'implémentation de l'ALICE.