[Numérique] Développement d'une solution PCI Express sur cible FPGA
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

Développement d'une solution PCI Express sur cible FPGA



  1. #1
    inviteefe58ca3

    Développement d'une solution PCI Express sur cible FPGA


    ------

    Bonjour à tous les membres du forum,

    Je suis actuellement rattaché en tant que stagiaire ingénieur à un projet pour le développement d’une solution PCI Express « host » sur une cible FPGA Arria 10.
    Après quelques jours d’investigations, de recherches sur internet et plusieurs passées le nez dans les bouquins, je me suis familiarisé avec les spécifications de la norme PCI Express.
    Ces mêmes recherches m’ont permis de me faire une vue d’ensemble sur ce qui se fait en matière de solution PCI Express sur une cible FPGA.
    La topologie traditionnelle, ou tout du moins celle qui est la plus mise en avant dans la littérature, est simplifiée comme suit :

    FPGA Device -> PCI Express bloc -> Connecteur PCI Express -> Bus PCI Express -> Connecteur PCI Express -> Carte mère ordinateur -> CPU host

    Dans sa finalité, ma mission consiste à substituer la carte mère d’ordinateur ainsi que le CPU déporté par une solution implémentée directement sur une cible FPGA Arria 10.
    Après m’être renseigné sur les caractéristiques techniques de ce FPGA, je me suis appuyé sur le bloc PCI Express Hard-IP présent dans ses couches de silicium ainsi que sur son processeur embarqué.

    Il y a encore plusieurs notions qui me paraissent floues et qui demande une mise au point, notamment en ce qui concerne l’architecture nécessaire à l’implémentation d’une telle solution (On-Chip memory, DMA, MSI etc …).

    Cette piste parait-elle faisable ? Auriez vous des conseils à me transmettre en ce qui concerne les périphériques indispensables pour la mise en place d’une solution PCI Express ?

    Je vous remercie,

    -----

  2. #2
    albanxiii
    Modérateur

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    J'ai sans doute mal compris ce que vous voulez faire, mais à quoi vous sert le bloc PCI Express si vous voulez vous passer de la carte mère ?
    Not only is it not right, it's not even wrong!

  3. #3
    inviteefe58ca3

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    En effet il m'est un peu compliqué d'explicité mon sujet tout en essayant de ne pas me perdre en détails inutiles.

    Actuellement nous développons nos propres cartes électroniques qui embarquent chacune une cible FPGA. Celles-ci sont utilisées en "endpoint" et disposent d'un connecteurs PCI Express.
    Traditionnellement, si deux cartes veulent communiquer ensemble par le bais du bus PCI Express, elles doivent être être physiquement branchées sur la même carte mère d'ordinateur et utiliser les performances du CPU de la machine.

    L'idée est ici de se passer de la carte mère et du CPU de la machine, en développant une architecture "root complex" complète sur une des deux cibles FPGA afin de substituer leurs rôles. Ainsi, les deux cartes pourront dialoguer entre elles via le bus PCI Express sans avoir à passer par le duo carte mère + CPU de la machine.

    Afin d'imager un peu plus mon propos :

    Nous avons actuellement une topologie de la forme :

    FPGA Device A (endpoint) --> PCI Express Hard Bloc --> PCI Edge Connector --> Bus PCI Express --> PCI Edge Connector --> Computer Mother Baord --> CPU (host) --> PCI Edge Connector --> Bus PCI Express --> FPGA Device B (endpoint)

    Et dans la finalité du projet nous voudrions obtenir une hypothétique topologie de la forme :

    FPGA Device A (host) --> PCI Express Hard Bloc --> PCI Edge Connector --> Bus PCI Express --> PCI Edge Connector --> FPGA Device B (endpoint)

  4. #4
    jiherve

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,
    il faudra donc un processeur embarqué aux deux bout, un suffirait mais par soucis de symétrie deux c'est plus élégant et souple, ensuite il faudra sans doute un controleur DMA et une interface mémoire type DDR2+ en plus d'une interface vers de la flash . Le processeur devra avoir un cache pour garantir un minimum de performance compatible d'un bus PCI express.
    Au total il y a du boulot car même en utilisant les IP cela demandera qqs mois de développement surtout à un debutant.
    question : les FPGA sont ils sur des cartes d'évaluation ou bien des cartes propriétaires ?

    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura
  6. #5
    inviteefe58ca3

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    En ce qui concerne les cibles FPGA, celles-ci sont des Intel Arria 10 SoC montées sur des cartes propriétaires avec des connecteurs PCI Express vers l'extérieur.

    En effet, suite à mes recherches préliminaires concernant la faisabilité d'un tel système, il a souvent été fait mention de DMA, mémoire interne ainsi que d'autres termes propres à la norme PCI Express. Comme je vous ai dit, je suis un novice en ce qui concerne la norme.
    Par la même occasion, pourriez vous m'éclairer sur le rôle de ces périphériques mémoires ? Bien que cela soit explicité de manière plus ou moins claire dans les documentations qui j'ai eu l’occasion de consulter, cela reste encore assez flou.

    Jusqu'à présent je pensais utiliser le Hard Processor System (HPS) embarqué de l'Arria 10 ainsi que son bloc hardware PCI Express Hard IP et de combiner ces deux partie via une interface Avalon-MM (décrite comme simple d'utilisation et offrant des performances suffisante pour mes besoins à première vue selon la documentation Altera).

    Je vous remercie,

  7. #6
    jiherve

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonsoir,
    le bus Avalon n'est pas un foudre de guerre mais si tu penses qu'il suffit why not.
    La mémoire interne RAM est tout de même petite sera t elle suffisante pour ton application je n'en sais rien mais elle se déclare au moyen de l'outil de configuration du processeur ou du bus.
    Le bloc DMA permettra de découpler l'activité du bloc PCI express de celle du processeur qui n'aura alors qu'a initialiser le PCI et le DMA ensuite les deux font leur petites affaires dans leur coin.
    JR
    l'électronique c'est pas du vaudou!

  8. #7
    inviteefe58ca3

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    Je vous remercie pour votre réponse.

    En effet, pour une première ébauche, il m'est conseillé de privilégier le bus Avalon, dans sa forme Mapped Memory (Avalon-MM) qui offre une simplicité d'utilisation supplémentaire comparée aux version ST et MM-DMA du bus.

    En ce qui concerne les exigences en matière d'espace mémoire etc, je suis encore sur une phase d'apprentissage des différentes spécifications du monde du PCI Express. Ces points n'ont pas encore été traités.

    je vois très souvent des architectures utilisant un le bus Avalon pour connecter une couche applicative (processeur embarqué ou architecture logique) à une DMA, une mémoire interne ainsi que le bloc PCI Express. Autant le rôle du bloc PCI Express est tout de même assez explicite, autant les rôles des deux parties mémoires me semblent encore un peu flous. Pourriez vous me donner plus de détails à leurs sujets (J'ai actuellement le nez dans les documentations Altera et la norme PCI Express et malgré tout je trouve les informations peu explicatives) ?

    Je vous remercie,

    Cotton

  9. #8
    jiherve

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,
    DMA signifie Direct Access to Memory c'est donc un mécanisme qui permet a un périphérique d'accéder à la mémoire (vive en général mais pas que) sans passer par le processeur.
    Cela évite donc ce genre de soft qui ne présente aucune valeur ajoutée et consomme inutilement les ressource du CPU:
    load @titi (titi est un registre du périphérique)
    store @tutu (tutu est une case mémoire)
    Le Contrôleur DMA est donc un automate dédié qui reçoit les requêtes issues du périphérique (ici ton PCI e) et va assurer le transfert des données entre ce périphérique et la mémoire, pour ce faire il aura été configuré par le processeur celui lui ayant par exemple indiqué que les donnée reçues de l’extérieur seront stockées à partir de @Receive et sur une profondeur de xx bytes et que les données à transmettre seront disponibles dans un buffer commençant à @Transmit.
    cette initialisation faite les transferts mémoire nécessaires au échanges du bus PCIe se feront me manière quasi transparente pour le µC embarqué; quasi transparente car bien souvent les transferts utilisent le bus commun de la machine et donc bien sur y créent de l'activité qui perturbera un peu le µC, mais ce n'est pas obligatoire car il peut exister un bus dédié entre le controleur DMA et les périphériques ou bien on peut disposer d'un bus machine très performant qui pallie ce désagrément (bus AMBA AXI).
    JR
    l'électronique c'est pas du vaudou!

  10. #9
    inviteefe58ca3

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    Si je synthétise vos explications et les transpose dans ma situation, la DMA est une mémoire qui, contrairement à d'autres types de mémoire, offre la possibilité d'effectuer des transactions de données avec un périphérique quelconque sans avoir à transiter par le processeur (ou couche applicative dans un cadre plus général) et ce par l'intermédiaire du bus Avalon-MM.
    Ainsi, le processeur peut accéder aux données issues du bus PCI Express (ou tout du moins la "data" utile des TLPs) directement dans la DMA.
    L'implémentation d'une DMA a donc pour vocation d'alléger la charge du processeur.
    A l'initialisation du système, la couche applicative configure les allocations mémoires des périphériques dans la DMA (alloue un certain nombre de case mémoire avec une certaine taille pour le périphériques PCI Express). Si le bus PCI Express est configuré pour transmettre des données de 32 bits par exemple, la DMA devra allouer des espaces mémoires de 32 bits.

    Si mon résumé est correct, je n'arrive pas à comprendre dans quelle circonstances cet élément semble indispensable pour l'implémentation d'un root complex PCI Express sur une cible FPGA. Et non plus pourquoi systématiquement la littérature instancie une DMA (ou tout du moins assez régulièrement) en plus d'une mémoire On-Chip.
    De plus j'ai encore un peu de mal à interpréter le rôle que peut jouer le processeur dans une telle architecture. j'ai parfaitement assimilé le fait que le processeur joue un rôle essentiel durant la phase d'initialisation surtout en ce qui concerne l'allocation mémoire des périphériques présents sur le bus et leur énumération, mais je ne pense pas avoir compris toute sa subtilité.

  11. #10
    jiherve

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonsoir,
    Non le DMA n'est pas une mémoire c'est un automate qui connecte périphérique et mémoire sans ou presque intervention du processeur pour simplifier c'est un "processeur" bas de gamme qui ne sait faire que lire et écrire. Comme dejà ecrit les transferts utilisent le bus (Avalon en occurrence) sauf implémentation particulière.
    comme je n'ai sans doute pas été assez didactique:https://en.wikipedia.org/wiki/Direct_memory_access
    Pour le moment ignorer la cohérence de cache c'est pour le dessert!
    JR
    l'électronique c'est pas du vaudou!

  12. #11
    inviteefe58ca3

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    Je vous remercie pour cet apport d'informations concernant les spécifications d'un contrôleur DMA.
    Avec des recherches supplémentaires et une documentation approfondie, je commence à deviner avec plus de précisions l'architecture "host" que je souhaite concevoir. Une représentation est donnée ci-dessous : Nom : Image3.jpg
Affichages : 128
Taille : 89,2 Ko
    Bien sur, celle-ci est très succincte. Selon vous, celle-ci est-elle viable ?

    Je vous remercie,

    Cordialement

  13. #12
    jiherve

    Re : Développement d'une solution PCI Express sur cible FPGA

    bonjour,
    vu comme çà, à hauteur de manager, c'est bon.
    JR
    l'électronique c'est pas du vaudou!

  14. #13
    inviteefe58ca3

    Re : Développement d'une solution PCI Express sur cible FPGA

    Bonjour,

    Votre message me conforte dans ma démarche.

    Si j'ai parfaitement assimilé les principes fondamentaux :
    Le bloc matériel HPS initialise les paramètres du bus PCI Express (PAYLOAD, BARs etc)
    Le DMA gère le flux des paquets de données entre le bus PCI Express (le bloc IP PCI Express) et la lmémoire On-Chip du système ?

  15. #14
    jiherve

    Re : Développement d'une solution PCI Express sur cible FPGA

    Re
    Yes !
    par contre il faut s'assurer que la RAM interne sera suffisante (taille/BP) tant pour les besoins du processeur que ceux du PCIe.
    JR
    l'électronique c'est pas du vaudou!

Discussions similaires

  1. Acquisition d'une carte de développement FPGA
    Par invite352bbdac dans le forum Électronique
    Réponses: 18
    Dernier message: 26/09/2014, 17h49
  2. Kit développement FPGA
    Par invitef7ebd2a1 dans le forum Électronique
    Réponses: 3
    Dernier message: 02/12/2013, 12h32
  3. Développement d'un flow de programmation FPGA
    Par invite020df6fd dans le forum Électronique
    Réponses: 0
    Dernier message: 29/11/2012, 17h35
  4. FPGA Kit de développement
    Par dr4gon993 dans le forum Électronique
    Réponses: 1
    Dernier message: 24/07/2012, 14h54
  5. Outils de développement pour FPGA Altera
    Par invite359f3846 dans le forum Électronique
    Réponses: 6
    Dernier message: 03/07/2008, 22h49
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...