Cette catégorie traite de développements récents destinés à nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!
Dans la suite logique après l'implémentation des ALICE voici le VG5000 implémenté 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.7.
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,
Des outils de debug et de mise au point sont disponibles, et les applications sont chargées via une liaison série de type RS232 vers le VG5000 à 115Kbaud.
Voici quelques captures d'écran mais pas de grande qualités
Crois-tu qu'il soit possible de faire tourner cette émulation sur MIST (http://www.lotharek.pl/product.php?pid=96), et ainsi allonger encore plus les systèmes supportés par cette plateforme?
MIST is now supporting many machines:
ST/STE (alos on SCART 15KHz)
Amiga 500/600/1200 ( AGA CORE BETA core)
C64 (partially - still developed)
Atari 8bit ( 96%)
Collecovision
ZX81
Atari 2600
ZX Spectrum with AY, aslo with DIVMMC and ESXDOS
SEGA GENESIS
Apple
MSX
AMSTRAD CPC (BETA)
Une carte de dev fpga je présume. C'est pour ça que je demande si un PFGA déjà packagé dans une boîte pour faire tourner plein de machines pourrait héberger ou non le VG5k.
Le VG5000 tourne sur un FPGA de la famille SPARTAN3E, qui est assez ancienne, et il est très facile de le faire tourner sur un autre FPGA, ou bien une carte comme le MIST. Cependant des modifications seront nécessaires , mais je pense qu'elles seront légères.
Avec une carte de nouvelle génération, il est possible d'y adjoindre une interface avec carte SD, et bien plus ..
Je peux éventuellement fournir les sources pour ceux voulant se lancer dans le portage sur une autre carte, et au passage de leur donner un coup de main.
Le code est en quoi ? Verilog, VHDL, autre chose ? Je ne m'y connais pas trop en fpga (et pas beaucoup plus en programmation plus traditionnelle type C) mais le sujet m'intéresse, et j'ai une carte MiST ainsi que le logiciel Quartus pour la compilation. Je viens d'essayer de compiler par exemple le code gameboy (ici https://github.com/mist-devel/mist-boar ... es/gameboy) en faisant une petite modification et ça fonctionne, aussi ton code m'intéresse. Je t'envoie mon email par message privé.
Le projet est en VHDL, et utilise un FPGA de chez XILINX, et non ALTERA comme pour la carte MIST.
Pour un portage vers cette carte et d'après mes premiers constats, il faudrait :
- Modifier/adapter, les routines spécifiques XILINX --> ALTERA, tel que la gestion des RAM internes, ou les PLL,
- La carte étant dépourvue de port PS2 pour la gestion du clavier, une adaptation via le port USB est à faire,
- La gestion de la RAM statique doit passer par une gestion via SDRAM,
- Puis, modification pour la gestion du son,
je ne m'y connais pas en FPGA, mais j'ai deux petites questions :
existe-t-il des bibliothèques de composant "émulé" tel que les 74xx (y a pas de raison pour les portes mais quid des plus complexe comme les buffers, bascules, compteurs...) les processeurs (Z80, 6502, 68000...), controleur floppy (765 / 179x), les circuits RAM, ROM etc... toutes ces petites briques qui permettent de batir une machine ? Je suppose que pour émuler des machines comme les ST et Amiga le pire c'est de coder les chips spécifique à ces machines (Blitter, Paula..)
L'émulation obtenue à l'aide d'un FPGA est-elle basiquement meilleure que celle obtenu par du soft (C ou... VB ! ) ?
Intuitivement je pense que cela sera plus proche au timing non ?
Quartus peut compiler le VHDL donc ça devrait aller. Pour le clavier ps2, ça ne devrait pas poser de problème, il y a une routine qui peut automatiquement convertir le clavier PS2 en USB, comme indiqué ici : https://github.com/mist-devel/mist-boar ... rtingCores
Reste à voir pour la RAM.
Effectivement, il y a des briques tel que processeurs, chips sonores etc qui peuvent se réutiliser d'un projet à l'autre.
Au niveau de la différence entre emulation et FPGA, j'avais trouvé cette vidéo bien faite (à partir de 2'00"), même si uniquement en anglais : https://m.youtube.com/watch?v=CVq_jzj_u8U
Le timing est souvent meilleur en FPGA. L'émulation permet plus de choses parfois.
Effectivement sur un FPGA l émulation est plus fidèle surtout niveau timing car on est très proche du matériel.
il existe des bibliothèques mais les chips vraiment spécifiques sont à développer.
la mise au point entre FPGA ou émulation logicielle est bien plus coton,car comme souligné toute les taches peuvent tourner en parallèles.
mais le plus complexe sont les temps de propagation entre modules qui peuvent ruiner un projet.
Je serais intéressé par les sources mais plutôt la version Alice s'il te plait.
Au sujet des temps de propagation j'ai quelques soucis sur mon MSX en FPGA.
Tu saurais me mettre sur la voie ?
Par contre je suis sur Altera.
Je vais fournir les sources pour les ALICE et le VG5000, mais avant il faut que je mette à jour les commentaires, c'est une histoire d'une bonne semaine.
Les temps de propagations sont la chose la plus complexe dans la logique câblée, surtout au niveau des FPGA. Car suivant "comment" ton logiciel synthétise le projet, ce dernier peut t’insérer des buffers ou autres portes, causant ainsi des délais supplémentaires. Mais outre le logiciel, il y a aussi le "comment" tu codes en VHDL ou vérilog, et utilises les ressources de ton FPGA.
Suivant l'ampleur du projet, pour déceler des problèmes de timing il te faut utiliser la simulation après routage, et non après synthèse.
Le problème, c'est que cette simulation prend énormément de temps, et pour de gros projet cela devient impossible. Tu peux aussi regarder les fichiers de synthèses en sortie, il y a les chemins temporels les plus critiques, et une évaluation MAX de ta fréquence de fonctionnement.
Quels sont tes soucis pour le MSX ? quel est le modèle de ton FPGA, et sur qu'elle carte est il implanté ?