Difference between revisions of "FpgaArchitecture"

From ArmadeusWiki
Jump to: navigation, search
(Spécifications de conception du FPGA)
(Spécifications de conception du FPGA)
Line 16: Line 16:
  
 
Pour gagner en temps de développement et pour pouvoir récupérer des fonctionnalités ou IP (Intellectual Property) déjà existantes, le bus Wishbone a été retenu. Ce bus, dont les spécification ont été placées dans le domaine public, a été conçu spécifiquement pour ce genre de configuration et sur le site '''[http://www.opencores.com www.opencores.com]''' plusieurs IP compatibles avec les spécifications Wishbone sont disponibles.
 
Pour gagner en temps de développement et pour pouvoir récupérer des fonctionnalités ou IP (Intellectual Property) déjà existantes, le bus Wishbone a été retenu. Ce bus, dont les spécification ont été placées dans le domaine public, a été conçu spécifiquement pour ce genre de configuration et sur le site '''[http://www.opencores.com www.opencores.com]''' plusieurs IP compatibles avec les spécifications Wishbone sont disponibles.
 +
 +
== Le bus Wishbone ==
 +
 +
La spécification Wishbone décrit un certain nombre de composants de base:
 +
* Des interfaces '''maitres''', ces interfaces sont implantés dans des composants qui seront alors capable d'initier les transferts sur le bus Wishbone
 +
* Des interfaces '''esclaves''', ces interfaces sont implantés dans des composants capables de répondre à des demandes de transferts
 +
* Un composant '''syscon''', ce composant va générer le signal d'horloge qui sera utilisé par tous les composants/interfaces du bus ainsi que le signal de RESET synchrone.
 +
* Un macro composant '''intercon''', ce composant la gérer la connexion de toutes les interfaces maitres et esclaves qui composent le bus interne.
 +
* Un composant '''arbitre''', ce composant va permettre de partager l'accès au bus ou à un composant de type esclave qui est partagé par plusieurs composants de type maitre.
 +
 +
Les spécifications du bus Wishbone permettent de créer différents types de bus:
 +
* '''Point to Point'''': Un composant avec une interface type maitre connecté à un composant avec une interface de type esclave.
 +
* '''Data Flow''': C'est un bus en cascade, à un bout on trouve un composant avec une interface de type maître et à l'autre bout un composant avec une interface de type esclave. Entre les deux composant se trouve une chaine d'un ou plusieurs composants avec une interface de type maitre et de type esclave.
 +
* '''Shared''': C'est un bus sur lequel plusieurs composants sont connectés dessus. Tous les composants se partagent ce bus. Si plusieurs ''maitres'' sont connectés sur ce bus, un seul pourra initier un transfert à un instant donné.
 +
* '''CrossBar''': C'est également un bus de type partagé, par contre dans se cas, on dispose de plusieurs bus. Chaque maitre utilise sont propre bus pour communiquer avec ces esclaves. On peut donc avoir plusieurs transferts en simultané. Le seul cas de blocage/arbitrage est le transfert de plusieurs maitre avec le même esclave.
  
 
== Le lien i.MX <=> FPGA ==
 
== Le lien i.MX <=> FPGA ==
Line 24: Line 39:
 
* le bus d'adresses sur 12 bits (A[12..1])
 
* le bus d'adresses sur 12 bits (A[12..1])
  
Ces signaux sont alors utilisés pour créer une interface Wishbone maitre qui va permettre de communiquer efficacement avec les autres IPs contenus dans le FPGA.
+
Ces signaux sont alors utilisés pour créer une interface Wishbone maitre qui va permettre de communiquer efficacement avec les autres IPs contenus dans le FPGA qui implémenterons une interface wishbone de type esclave.
  
== Le bus Wishbone ==
+
Etant donné les erratas du composant i.MX  concernant le signal DTACK, il n'est pas possible d'implanter une interface Wishbone maitre ''classique''. En effet, la spécification Wishbone prévoit que le transfert sur le bus se termine soit par:
 
+
* le signal '''ACK''' pour informer de la fin réussi du transfert
La spécification Wishbone décrit un certain nombre de composants de base:
+
* les signaux '''ERR'' et '''RTY''' pour informer de la fin anormale du transfert.
* Des interfaces '''maitres''', ces interfaces sont implantés dans des composants qui seront alors capable d'initier les transferts sur le bus Wishbone
+
* Des interfaces '''esclaves''', ces interfaces sont implantés dans des composants capables de répondre à des demandes de transferts
+
* Un composant '''syscon''', ce composant va générer
+

Revision as of 23:43, 11 December 2006

Spécifications de conception du FPGA

But

Cette page a été créée pour permettre à tous les membres de l'association de discuter de l'architecture qui va être mise en place pour le FPGA présent sur la carte APF9328.

Cette espace doit être vu comme un espace d'échange d'idées. Tout le monde est convié pour y participer. Il est préférable d'avoir quelques connaissances en électronique et sur les langages HDL (VHDL ou Verilog), mais ce n'est pas une obligation.

Bonne lecture et merci pour votre participation.

Les grandes lignes

Le FPGA de la carte APF9328 est là pour offrir le maximum de souplesse au projet Armadeus et permettre d'implanter des fonctionnalités coté matériel qui seraient trop pénalisantes ou impossibles à implanter coté logiciel. Bien entendu, pour que cela soit exploitable, il faut également disposer d'un lien entre le FPGA et le processeur i.MX.

Pour réaliser cela, il faut mettre en place un bus de communication entre le FPGA et l'i.MX. Ce bus de communication va permettre le pilotage des fonctionnalités qui seront implantées dans le FPGA. Bref, il faut recréer à l'intérieur du FPGA un bus tel qu'il existe entre l'i.MX et les différents composants de la carte (RAM, Flash, USB, Ethernet, etc.).

Pour gagner en temps de développement et pour pouvoir récupérer des fonctionnalités ou IP (Intellectual Property) déjà existantes, le bus Wishbone a été retenu. Ce bus, dont les spécification ont été placées dans le domaine public, a été conçu spécifiquement pour ce genre de configuration et sur le site www.opencores.com plusieurs IP compatibles avec les spécifications Wishbone sont disponibles.

Le bus Wishbone

La spécification Wishbone décrit un certain nombre de composants de base:

  • Des interfaces maitres, ces interfaces sont implantés dans des composants qui seront alors capable d'initier les transferts sur le bus Wishbone
  • Des interfaces esclaves, ces interfaces sont implantés dans des composants capables de répondre à des demandes de transferts
  • Un composant syscon, ce composant va générer le signal d'horloge qui sera utilisé par tous les composants/interfaces du bus ainsi que le signal de RESET synchrone.
  • Un macro composant intercon, ce composant la gérer la connexion de toutes les interfaces maitres et esclaves qui composent le bus interne.
  • Un composant arbitre, ce composant va permettre de partager l'accès au bus ou à un composant de type esclave qui est partagé par plusieurs composants de type maitre.

Les spécifications du bus Wishbone permettent de créer différents types de bus:

  • Point to Point': Un composant avec une interface type maitre connecté à un composant avec une interface de type esclave.
  • Data Flow: C'est un bus en cascade, à un bout on trouve un composant avec une interface de type maître et à l'autre bout un composant avec une interface de type esclave. Entre les deux composant se trouve une chaine d'un ou plusieurs composants avec une interface de type maitre et de type esclave.
  • Shared: C'est un bus sur lequel plusieurs composants sont connectés dessus. Tous les composants se partagent ce bus. Si plusieurs maitres sont connectés sur ce bus, un seul pourra initier un transfert à un instant donné.
  • CrossBar: C'est également un bus de type partagé, par contre dans se cas, on dispose de plusieurs bus. Chaque maitre utilise sont propre bus pour communiquer avec ces esclaves. On peut donc avoir plusieurs transferts en simultané. Le seul cas de blocage/arbitrage est le transfert de plusieurs maitre avec le même esclave.

Le lien i.MX <=> FPGA

La communication entre l'i.MX et le FPGA passe par les signaux suivants (à vérifier):

  • des signaux de contrôle: RW_n, OE_n, EB_n[3..2] et CS1_n
  • le bus de données sur 16 bits (D[15..0])
  • le bus d'adresses sur 12 bits (A[12..1])

Ces signaux sont alors utilisés pour créer une interface Wishbone maitre qui va permettre de communiquer efficacement avec les autres IPs contenus dans le FPGA qui implémenterons une interface wishbone de type esclave.

Etant donné les erratas du composant i.MX concernant le signal DTACK, il n'est pas possible d'implanter une interface Wishbone maitre classique. En effet, la spécification Wishbone prévoit que le transfert sur le bus se termine soit par:

  • le signal ACK pour informer de la fin réussi du transfert
  • les signaux ERR et RTY' pour informer de la fin anormale du transfert.