Console de jeu portable (bras MCU Team) (4 / 6 étapes)

Étape 4: Interface de microcontrôleur - FPGA Xilinx Spartan 6

Nous avons conçu l’interface MCU de façon à être en mesure de partager des données entre le microcontrôleur STM32 et les FPGA 3 Nexys. Afin d’assurer une carte graphique entièrement fonctionnel, les données reçues de la STM32 doivent être dirigées vers le registre correct ou vers le contrôleur DMA sans aucune discontinuité ou les données perdues. Le STM32 devrait également pouvoir lire les données des registres sans mettre en péril le processus d’écriture.

Le protocole d’Interface MCU

Le connecteur LCD utilisé pour connecter le microcontrôleur STM32 le FPGA 3 Nexys est un connecteurs carte à carte de 17 par 2.

Pour utiliser le protocole SRAM asynchrone EFM, nous avons besoin :

  • Un bus de données 16 bits, disponible directement depuis le connecteur LCD (D0 à D15)
  • Les signaux NOE, NWE et NE4, également disponibles sur le connecteur de l’écran LCD (RD, WR et CS)
  • Une bit 26 adresse non disponible sur le connecteur LCD, là seule l’A [0] bit. Ce pourquoi nous avons dû créer notre propre protocole, donc nous pouvons utiliser l’EFM pour transférer les données depuis le microcontrôleur STM32.

Afin de couvrir notamment à l’impossibilité du bus d’adresses de 26 bits, nous avons décidé de diviser une transaction (lecture ou écriture) dans trois opérations successives. Le premier est une opération d’écriture contenant l’adresse du Registre dans que nous voulons lire ou écrire. Le second est une lecture ou une opération d’écriture selon le type d’opération que nous devons faire. Dans le cas d’une opération d’écriture, le bus de données va être contenant les données que nous voulons écrire dans les registres dont l’adresse est spécifiée dans l’opération précédente. Étant donné que les registres GPU sont des registres de 32 bits, il faut deux écrire (ou lire) transaction de 16 bits.

Pour reprendre le protocole, afin d’écrire dans un registre, nous avons besoin de trois transactions d’écriture. Le premier celui qui tient l’adresse et les deux autres contenant les données de 32 bits (LSB puis MSB). Dans le cas où nous voulons lire les données des registres, la première transaction sera une écriture une contenant l’adresse. Les deux autres contiennent les données des registres (LSB puis MSB).

Gestion de bus de données et l’adresse

Le bloc de gestion des données et l’adresse bus
met à jour la mémoire tampon de données 32 bits et le tampon d’adresse de 16 bits. Sur la première transaction de la STM32, les 16 bits de données sont transférées vers le tampon adresse. Les deux opérations suivantes sont transférées dans la mémoire tampon de données 32 bits.

Dans le cas d’un transfert de données DMA contrôleur, il n’y a pas besoin d’une opération de trois écriture puisqu’il n’y a pas d’adresse et le bus de données 16 bits uniquement. Dans ce cas, le bus de données STM32 16 bits sont transférés vers le bus de données DMA. Nous avons utilisé le LSB de bus 26 bits d’adresse de l’EFM, appelé RS, dans un souci d’identification de l’emplacement du transfert de données (contrôleur DMA ou carte Enregistrer).

Données sont transférées depuis les tampons vers le bus disponible selon le type de transfert, détecté à l’aide de la NOE, NWE des signaux de l’EFM, comme indiqué dans la section précédente. Étant donné que ces signaux est asynchrones, nous avons ajouté à l’interface MCU un générateur de signal synchrone qui peut être utilisé pour synchroniser les autres blocs, mais avec un retard de 10 à 20 ns.

Gestion des demandes bus

Dans le cas d’un transfert de données depuis ou vers le bloc de carte inscrit, le bus de données doit être octroyée pour la transaction à être traitées avec succès. Si le bus n’est pas disponible, une demande doit être envoyée à l’onglet et le STM32 doit rester inactif jusqu'à ce que le bus devient disponible.

C’est pourquoi utilisé l’usage général d’entrée/sortie (GPIO), disponible à partir du connecteur LCD, est configurée pour envoyer un signal nommé occupé qui est raconte le STM32 que le FPGA est occupé et ne peut pas poursuivre l’opération jusqu'à ce que le signal d’occupation est remis à « 0 ». Cette procédure très simple garantit que tout transfert vers ou depuis la carte les registres est traité avec succès et sans aucune perte de données. Lorsque le bus est disponible, une activation de la sortie est envoyée aux registres dans le cas d’une opération de lecture. Si il s’agit d’une opération d’écriture, un signal de charge est envoyé aux registres en même temps que le bus d’adresses.

Démo

Dans cette démo, vous verrez comment nous avons réussi à tourner sous et hors tension de la LED sur la carte Nexys 3 de la carte MCU.

Articles Liés

Console de jeu portable Pi framboise 20 $

Console de jeu portable Pi framboise 20 $

Il y a des tonnes d'émulateurs jeu rétro Raspberry Pi autour sur l'internet, mais la plupart sont assez cher. Avec le nouveau $5 Raspberry Pi Zero, dans ce Instructable je vais vous montrer comment construire une batterie complètement portable alimen
Raspi Pip-boy, console de jeu Portable / ordinateur

Raspi Pip-boy, console de jeu Portable / ordinateur

Salut, je voudrais présenter mon premier projet de framboise-pi.Un Pip-boy comme ordinateur personnel (si vous êtes un Fan de Fallout, vous voyez ce que je veux dire) ! :Vue d'ensemble :- Framboise-pi modèle B + un écran tactile 2.8 LCD 8bits en para
Console de jeu portable (équipe de GPU)

Console de jeu portable (équipe de GPU)

CadrePour notre projet d'ingénierie, nos tuteurs voulaient nous faire face aux défis de la conception d'un système en temps réel avec des performances relativement élevé des ressources limitées (mémoire, bande passante).Les spécifications exigent une
Console de jeu Portable RetroPie pauvre

Console de jeu Portable RetroPie pauvre

J'aime les jeux vidéo. Je voudrais être capable de les emmener n'importe où que je vais pour jouer eux. Mais, j'ai un problème. Je n'ai pas trop d'argent à dépenser sur les jeux vidéo. C'est pourquoi j'ai pris une des choses que j'aime (jeux vidéo),
Comment faire une poche portable Nintendo 64 N64 console de jeu - iNto64

Comment faire une poche portable Nintendo 64 N64 console de jeu - iNto64

Ever voulais faire votre console de jeu Nintendo 64 (N64) dans un appareil portable portatif pour « sur le pouce » jouer ?Ce système fonctionne sur des batteries Li-ion sont assez puissants pour faire fonctionner le système, qui sont également des pi
Fait maison de Console de jeu Pentium III

Fait maison de Console de jeu Pentium III

Bonjour à tous ! Il y a plusieurs mois, je me suis embarqué sur un projet de construction d'une console de jeu 100 % à partir de zéro, basé sur le processeur Pentium III. Eh bien, tout, sauf la fourniture de CD drive et puissance. Il s'agit d'un trav
Système de jeu portable

Système de jeu portable

récemment, j'ai construit un système de jeu portable qui vous permet de jouer 12 * jeux Namco totalement RADICAL comme Pac Man, Dig Dug et tout ce que de bonnes choses.Maintenant, je tiens à rendre parfaitement clair cinq choses avant de commencer...
Comment faire un système de jeu Portable

Comment faire un système de jeu Portable

jamais pensé être capable de jouer de votre système de jeu préféré n'importe où ? Je suis sûr que vous avez. Suivant ce guide, vous pouvez apprendre à « portablize » la Nintendo Entertainment System.Dans ce Instructable je vais vous apprendre tout ce
Console de jeu matricielle Arduino

Console de jeu matricielle Arduino

Téléphone intelligent & iPad jeu est grand et tout amour Candy Crush & Angry Birds, mais rien ne peut toucher le charme de faire une console de jeu en propre et jouer avec lui. Il a été 2003 quand j'ai eu un portable Nokia 3310, et j'avais l'habit
Faire un système de jeu Portable-dans Photoshop !

Faire un système de jeu Portable-dans Photoshop !

C'est mon premier instructable qui visite l'univers puissant et extraordinaire de photoshop, j'espère que vous aimez !J'ai été surpris qu'il y avait rien de tel sur instructables jusqu'ici, alors j'ai pensé que je voudrais vous montrer tout mon proje
Console de jeu ultime classique manette pour adaptateur USB

Console de jeu ultime classique manette pour adaptateur USB

Cet article décrit comment utiliser un Arduino Leonardo ou Arduino Micro pour mettre à la disposition d'un ordinateur modern (p. ex. Windows PC, Mac ou Linux) jusqu'à trois manettes de console classique (Atari 2600, ColecoVision et éventuellement d'a
Console de jeu ultime Cooler

Console de jeu ultime Cooler

ce Instructable est pour le jeu Console Cooler ultime.  Après avoir ma PS3 et la Xbox 360 envoyé en réparation (plusieurs fois), que j'ai décidé que je devais arriver à une meilleure façon de garder la chaleur vers le bas à ces consoles de jeux cher.
El Jugador : Console de jeu DIY Retro

El Jugador : Console de jeu DIY Retro

sais un peu BASIC ou C ? Vous pouvez faire des jeux avec El Jugador, une console de jeu open source rétro basée sur une hélice de parallaxe.Nouveau!  Nous avons amélioré El Jugador, ça s'appelle Joueur rapide et vous pouvez le vérifier ici.Caractéris
Consoles de jeu vidéo!!!

Consoles de jeu vidéo!!!

S'il vous plaît jeter un oeil à ce que d'autres disent de mon travail comme MTV , PC WORLD , 1UP.COM , FANBOY et CRAZIESTGADGETSMerci de vérifier sur mon entrée.  J'ai fait des consoles de jeu vidéo et de l'électronique personnalisé depuis 04' - 05'.