Document fait avec Nvu Document made with Nvu



 

Emulateurs graphiques

Windows
Unix (X11, MAC OS X, Linux)

Introduction

Il n'est pas forcément évident de disposer de la carte physiquement pour mettre en oeuvre le noyau FORTH temps réel présenté dans ce site. Etant donné que la plupart des ordinateurs grand public (MAC ou PC) bénéficien d'une puissance de calcul très importante, il es intéressan de l'utiliser pour émuler d'autres machines sans trop de perte de performance.

Le premier émulateur du coeur FORTH a été développé par un virtuose du monde PC, FBROTON, qui a réalisé un programme extrêmemen comple et facile à installer sous Windows. Il a des performances très acceptables lorsqu'il est installé sur un PC avec processeur Pentium III. De plus, l'interface homme machine est très simple d'utilisation ce qui le rend abordable à toute personne pas trop experte en informatique.

Le problème avec cet émulateur, c'est qu'il ne tourne que sur PC sous Windows, ce qui n'est pas trop gênan sachant que c'est le système d'exploitation qui tourne sur la plupart des ordinateurs existants. Par contre, pour une personne comme moi par exemple, qui dispose d'un MAC, il fau utiliser un émulateur de PC pour faire tourner ce émulateur. Ceci ajoute une couche de logiciel qui dégrade énormémen et donc très désagréablement les performances.

Le monde MAC vient d'évoluer considérablemen avec le nouveau système d'exploitation MAC OS X intégran un noyau UNIX. Ceci le rend compatible avec les stations de travail SUN et même avec les PC pour peu qu'ils soien équipés du système d'exploitation LINUX. Comme APPLE a eu la géniale idée de fournir les logiciels de développemen dans son nouveau système d'exploitation, j'ai pu me lancer dans la réalisation d'un émulateur qui, après légère adaptation du script de compilation, s'es révélé opérationnel sur une station SUN et même sur un PC sous LINUX.

Ceci fut la première étape de mon émulateur qui ne tournait alors qu'en mode terminal. Pour l'interface graphique, une solution UNIX existe: OpenGL ( http://www.opengl.org/ ). Cette norme perme de disposer de routines graphiques très puissantes sur toute machine UNIX comme une extension du langage C. Ce qui m'a permis d'enrichir mon émulateur d'une émulation de l'interface VGA intégrée dans le FPGA du coeur FORTH.

L'émulateur sous UNIX est maintenant bruyant grâce à OpenAL ( http://www.openal.org/ ).


Windows

Découvrez le superbe émulateur du coeur FORTH pour PC sous Windows réalisé par FBROTON. Vous trouverez une documentation complète qui vous permettra d'utiliser au mieux toutes les possibilités offertes.


Unix (X11, MAC OS X, Linux)

Voici enfin une version de l'émulateur du coeur FORTH pour le monde UNIX. Les registres additionnels spécifiques à l'émulateur sont les mêmes que ceux de l'émulateur de FBROTON afin de conserver une certaine compatibilité.

ATTENTION : ces logiciels son libres de droit et ne peuvent en aucun cas être vendus.
 Syst. d'exploitation
/Ordinateur
 Logiciel

Commentaires

OS X/MAC
 CoeurFORTH.dmg
Application MAC OS X version 5.00.
(Universal Binary pour PPC et X86 à partir de MAC OS 10.4).
Référencé sur
LINUX/PC
 CoeurFORTH.zip
Version 5.00. Il n'est pas nécessaire d'installer Linux sur votre PC. Vous devez télécharger le CDROM KNOPPIX ou UBUNTU, décompresser le fichier, aller dans le répertoire "CoeurFORTH" puis lancer "CoeurFORTH" dans un terminal.

Testé avec CD UBUNTU 10.10.

Voici une représentation graphique de ce que l'on obtient sous MAC OS X:


Description des différentes interfaces simulées:

Fenêtre Registres d'extension associés

Contrôle


Non applicable

Cette fenêtre contient un terminal VT100 et une partie contrôle permettant de configurer le FPGA e l'accès aux fonctions de l'émulateur:

- choix entre instruction mulu ou addc à l'initialisation,
- choix entre coeur 16 ou 32 bits,
- choix entre ROM interne et FLASH externe à l'initialisation,
- poussoir d'initialisation (RESET),
- réglage des performances du coeur,
- réglage de la résolution de l'écran graphique,
- réglage du niveau de la sortie son,
- affichage des performances du coeur,
- affichage des performances graphiques,
- affichage du niveau du son,
- indication du respect du temps réel,
- affichage du taux d'occupation du processeur hôte,
- accès aux autres fonctions de l'émulateur.

Entrées sorties discrètes


272 (0x110) PORT_A
273 (0x111) PORT_B

écriture: valeur[15..0]
lecture: (valeur&entrée)[15..0]

voyant allumé si valeur&entrée=1

Voir la page technique correspondante (avec une vidéo).

Entrée sortie analogique


274 (0x112) échantillonnage
275 (0x113) entrée/sortie analogique

si écriture échantillonnage = 0
-lecture et écriture analogique directe
-lecture échantillonnage = 1
sinon
-FIFO 2048 échantillons 10 us (1) à 8 échantillons 2,55 ms (255)
-lecture échantillonnage = nombre d'échantillons disponibles

Les valeurs analogiques doivent être comprises entre -128 e +127

Voir la page technique correspondante (avec une vidéo).

Moteurs pas à pas


276 (0x114):

bits[15..7] = 0xFF8 si angle 0 (en haut)
0x000 sinon (lecture seule)
bit[6] = 1 pour piloter l'index
(lecture/écriture)
bit[5] = 1 pour piloter la grande aiguille (lecture/écriture)
bit[4] = 1 pour piloter la petite aiguille (lecture/écriture)
bits[3..0] = phase4,phase3,phase2,phase1
(lecture/écriture)

1 tour = 120 pas (3°/pas)

Voir la page technique correspondante (avec une vidéo).
Barre graphe


277 (0x115):

écriture: valeur[15..0]
le bit 0 correspond au voyant vert à gauche
le bit 15 correspond au voyant rouge à droite

voyant allumé si valeur=1

Voir la page technique correspondante (avec une vidéo).

Petit clavier


278 (0x116) lecture seule:

bits[15..4] = 0xFFF si touche enfoncée
0x000 sinon
bits[3,2] = numéro de la ligne (0 en haut)
bits[1,0] = numéro de la colonne (0 à gauche)

les bits[3..0] sont mémorisés lorsque la touche est relachée

Voir la page technique correspondante (avec une vidéo).

Afficheurs 7 segments


280 (0x118) afficheur 0 (à gauche)
281 (0x119) afficheur 1
...
287 (0x11F) afficheur 7 (à droite)

lecture/écriture:
bits[15..8] = 0x00
bits[7..0] = a,b,c,d,e,f,g,dp

segment allumé si 1

Voir la page technique correspondante (avec une vidéo).
Afficheurs matriciels


290 (0x122) colonne 0 (à gauche)
291 (0x123) colonne 1
...
299 (0x12B) colonne 9 (à droite)

lecture/écriture:
bits[15..8] = 0x00
bits[7..0] = 0, point en bas, ..., point en haut

point allumé si 1

Voir la page technique correspondante (avec une vidéo).
Connexions UART


257 (0x101) UARTA_BAUD
258 !0x102) UARTA_CTRL
259 (0x102) UARTA_DATA
260 (0x103) UARTB_BAUD
261 !0x104) UARTB_CTRL
262 (0x105) UARTB_DATA

chaque UART peut être connectée au TERMINAL de la fenêtre de contrôle, à un des 7 SOCKETs vers un autre émulateur ou bien à une véritable liaison RS232 de l'ordinateur hôte
Interfaces CAN


Jusqu'à 8 émulateurs peuvent être connectés sur 2 bus CAN pouvant être reliés.

Voir la page technique correspondante (avec une vidéo).