Aller au contenu


Photo

X-flash 64 la cartouche de test Multi-Système


  • Veuillez vous connecter pour répondre
16 réponses à ce sujet

#1 X-death

X-death

    Blast Processing

  • 3 391 messages
  • LocalisationBesançon

Posté 25 octobre 2014 - 15:29

Une cartouche de test 100% libre pour les consoles 8 et 16 bits à base de FPGA=- Présentation de la cartouche -=

L’objectif de la X-flash 64 est de permettre rapidement une simulation de composants logique sur des consoles retro 8 et 16 bits.

Elle s’adresse donc aux personnes souhaitant faire des tests ou des recherches et ne voulant pas utiliser des plaques à essais et devoir sortir le fer à souder à chaque fois.
Elle dispose de plusieurs types de mémoire afin d’assurer une grande compatibilité:

-8Mo de mémoire CFI Flash parallèle utilisée pour stocker la Rom.
-32 Ko de Fram parallèle et 4Ko de mémoire Eeprom série pour stocker les sauvegardes des Roms
- 2Mo EPCS Flash Série pour stocker la configuration du FPGA
-32Ko de Ram ( block M3E interne au FPGA) pour servir de mémoire tampon au FPGA

La X-flash 64 ne nécessite pas obligatoirement de programmateur externe pour la programmation de la mémoire Flash 8Mo.

La programmation de cette mémoire peut se faire par l’intermédiaire d’une communication JTAG/USB le FPGA étant alors utilisé comme micro-processeur.

L’utilisateur peut alors se servir de la carte comme d’une cartouche Flash.
Il est également possible de programmer la mémoire de 8Mo en utilisant les BUS I/O.

Afin de réduire les temps de compilation le projet est divisé en deux systèmes différents:

-La partie Flasheur : le FPGA contrôle la programmation de la mémoire
-La partie Système : c’est le bus de la machine cible qui va piloter directement la mémoire

Le FPGA est relié directement au BUS de la console, son rôle est de piloter l’état des I/O avec les différents composants que l’utilisateur aura simulé.

Le code du système peut être modulé et adapté en fonction de la machine cible de l’utilisateur : Sega Megadrive , Super Nintendo , Famicom , Master System etc…

L’utilisateur peut donc analyser précisément toute activité sur chaque pin du Bus, le résultat étant exploitable directement sous forme de Chronogramme.

Plusieurs codes seront fournis en exemples et en fichiers de configuration prêts à être flashés dans le FPGA.

=- Composition de la cartouche -=

Télécharger la pièce-jointe : composition_1.PNG

Télécharger la pièce-jointe : composition_2.PNG

Télécharger la pièce-jointe : composition_3.png

=- Programmation de la mémoire de 8Mo-=

Pour programmer la mémoire Flash directement avec la X-flash 64 le FPGA doit être utilisé comme micro-processeur, une grosse partie de ses cellules logiques sont alors utilisées.

Afin de réduire les temps de compilation j’ai créé deux projets séparés pour que l’utilisateur qui souhaite juste uniquement piloter sa console n’ai pas à s’occuper du principe de programmation de la mémoire.

Le système peut être ramené au synoptique suivant :

Télécharger la pièce-jointe : composition_4.png

Le système de configuration du FPGA est alors composé des éléments suivants :

Télécharger la pièce-jointe : composition_5.png

La communication entre l’ordinateur et le système se fait par l’intermédiaire du connecteur JTAG et d’un câble type USB Blaster.

Télécharger la pièce-jointe : composition_6.jpg

Pour simplifier l’utilisation j’ai créé différents scripts Windows qui permettent d’assurer les interactions classiques avec la mémoire : Lecture , Ecriture , Dump , Clean.

Exemple : Pour flasher une Rom l’utilisateur doit juste placer un fichier rom.bin et exécuter Flash_ROM.bat

Télécharger la pièce-jointe : composition_7.png

L’utilisateur est averti de la progression de l’opération en temps réel et de son bon déroulement.

Télécharger la pièce-jointe : composition_8.png

Une fois la programmation terminée l’utilisateur peut ensuite démarrer sa console.

Télécharger la pièce-jointe : composition_9.jpg

=- Simulation de Système-=

Afin de simuler un système il est nécessaire de décrire l’état et le comportement de chaque PIN du bus.

Le code exemple ci-dessous concerne la Sega Megadrive il peut être modifié ou adapté en fonction d’une autre machine.

Télécharger la pièce-jointe : code.png

A la fin de la programmation le fichier de configuration du FPGA au format.sof est créé.

Il suffit alors de la programmer dans la mémoire EPCS pour tester le comportement du système en temps réel.

Télécharger la pièce-jointe : flash.png

Il est également possible d’analyser l’état de chaque pin en live afin de résoudre d’éventuels problèmes :

Télécharger la pièce-jointe : chrono.png

Une fois le fichier de configuration .sof flasher dans la mémoire EPCS il est conservé même en cas de mise hors tension du FPGA.

Il est donc possible de partager et de conserver plusieurs fichiers sof pour décrire différentes cartouches :

Télécharger la pièce-jointe : release.png

=- Conclusion-=

Comme prévu l'intégralité du code et les schémas de la réalisation de la carte seront rendu public dans les prochains jours.

Je posterai une vidéo de la cartouche qui reprendras les deux parties : flash et système afin de mieux comprendre le principe fonctionnement.

Je suis conscient que le projet paraît complexe après lecture de cet article cependant il est tout à fait possible d'apprendre rapidement à utiliser la cartouche même avec aucune connaissance sur la programmation de système embarqué.

Je reste naturellement ouvert à toutes remarques où suggestions

Merci de votre lecture et bonne Journée

X-death

Cliquer ici pour voir le/la/l' article
  • 0

#2 Guest_baby_*

Guest_baby_*

Posté 26 octobre 2014 - 09:46

merci x-death pour ton boulot ;)

 

Comme je t'ai dis, il te faudra peut être développer chaque partie indépendamment, avec des exemples concrets .


  • 0

#3 Ours1011

Ours1011

    Eeuuuhhhh !!!

  • 967 messages
  • LocalisationSuper Aleste

Posté 26 octobre 2014 - 11:29

Merci !

 

C'est beaucoup plus clair déjà :)


  • 0

#4 Guest_baby_*

Guest_baby_*

Posté 02 novembre 2014 - 12:17

j'ai reçu le fpga ^^ reste a voir le modif sur la carte pour pas la cramer x-death  ;)


  • 0

#5 X-death

X-death

    Blast Processing

  • 3 391 messages
  • LocalisationBesançon

Posté 02 novembre 2014 - 13:36

JE t'ai envoyé un MP avec la redirection à faire.

Je suis désoler je ne comprends toujours pas comment une telle erreur à pu passer à l'autoroutage....

 

Bon sinon c'est cool tu a reçu le FPGA rapidement.

Est-ce que tu a également le câble Byte Blaster ?

 

Tu me diras quand tu aura soudé ta carte et si tu veut on tente de se capter un coup par chat pour l'insatllation/config du projet Quartus II ?


  • 0

#6 Ichigo

Ichigo

    SMS lover ^^

  • 8 270 messages
  • Localisation49

Posté 02 novembre 2014 - 14:36

Je l'ai déjà dit à baby, mais l'auto-routage c'est de la mer** !

Demandez à Akira ou à Furrtek si ils font les routages à la main...

vous pouvez chercher partout sur le net, meme les "vrais" pros font les routages à la main (via des softs + souple que eagle quand même, car eagle est pas super réputé pour ca) et ca n'empeche pas qu'il faille également un placement ±judicieux des composants en amont, histoire de faciliter ledit routage.

 

Alors oui c'est forcément mois rapide que 3 clics, mais au moins y'a pas de merde à l'arrivée (sinon ca vient de la schématique) , c'est -normalement- optimisé et quand même bcp plus propre.

 

sinon pour le souci, je suppose que c'est une piste coupée (ou oubliée par l'auto routeur), normalement pour les pistes oubliées sur eagle y'a un pourcentage d'écrit vis-à-vis du total. Il faut parfois le relancer plusieurs fois. Et il faut definir des zones ou l'auto-routeur n'a pas le droit d'aller, surtout si on a une série de connecteurs comme un port cartouche, car l'auto-routeur va passer n'importe comment dedans. Et même parfois sortir des limites de la cartes si tout ne loge pas.


  • 0

#7 X-death

X-death

    Blast Processing

  • 3 391 messages
  • LocalisationBesançon

Posté 02 novembre 2014 - 15:07

De la merde j'irait pas jusque la quand même.

Je suis franchement impressionné par l'autorouteur gratuit et Open Source de Kicad.

Deplus je me voyait pas faire le routage de la cartouche à la main.

 

Après c'est sur que le routage fait main et souvent mieux et donne un résultat plus propre.

Je pense que ça va surtout dépendre de ce que tu cherche à faire, pour un petit proto il vaut mieux router à la main.


  • 0

#8 Guest_baby_*

Guest_baby_*

Posté 02 novembre 2014 - 15:17

j'ai trouver un soft qui fais bien le travail ;)

 

http://www.freerouting.net/

 

c'est bluffant !!!


  • 0

#9 Guest_baby_*

Guest_baby_*

Posté 02 novembre 2014 - 15:30

x_death passe le fichier en mp pour voir sous freerouter ce que cela donne ;)

 

si tu veut bien entendu ;)


  • 0

#10 X-death

X-death

    Blast Processing

  • 3 391 messages
  • LocalisationBesançon

Posté 02 novembre 2014 - 15:43

Freerouting c est celui la qui est intégré a Kicad ;)

c'est ce truc que j'ai utilisé pour routé la X-flash 64 :)


  • 0

#11 Guest_baby_*

Guest_baby_*

Posté 02 novembre 2014 - 15:53

bha alors tu as du oublier un routage sur ton schéma car il est au top se routage auto ;)


  • 0

#12 X-death

X-death

    Blast Processing

  • 3 391 messages
  • LocalisationBesançon

Posté 02 novembre 2014 - 16:57

Oui c'est fort possible que l'erreur vienne de moi :mrgreen:


  • 0

#13 Guest_baby_*

Guest_baby_*

Posté 02 novembre 2014 - 17:53

C'est pas une critique hein, vu le nombre de connections que cela représente soit pas mR green ^^


  • 0

#14 SFC

SFC

    Vectorator

  • 1 721 messages
  • LocalisationZozO

Posté 02 novembre 2014 - 19:16

Je comprend mieux la ^_^

Bravo c'est propre!


  • 0

#15 Guest_baby_*

Guest_baby_*

Posté 03 novembre 2014 - 11:40

le freerouter est ici:

 

https://github.com/n...pht/FreeRouting


  • 0

#16 solidis

solidis

    Débutant

  • 11 messages
  • Localisationalgerie

Posté 03 décembre 2014 - 21:35

bien détailler 


  • 0

#17 RIYADO

RIYADO

    Débutant

  • 25 messages
  • LocalisationAlger

Posté 25 janvier 2015 - 19:14

je suis nouveau mais je trouve que c'est prométteur


  • 0