Comment choisir un FPGA?

17

J'ai besoin de faire un traitement numérique du signal sur 8 lignes analogiques à 10 kHz. C'est une tâche assez exigeante, et je pensais qu'un FPGA pourrait être la bonne approche. Je regarde actuellement les kits de développement de Xilinx, et comme je n'ai aucune expérience avec FPGA, j'ai du mal à savoir comment choisir la bonne puce. J'ai imaginé utiliser un kit de développement et l'étendre à l'aide des broches d'E / S pour me connecter à une puce A / D à 8 canaux et à une puce D / A à 8 canaux.

Quelles sont les différences entre l'utilisation de Spartan, Virtex, Altera, etc.? Je ne sais même pas comment estimer le nombre de portes dont j'aurai besoin. Y a-t-il des règles générales pour cela? Comment puis-je m'assurer que la vitesse d'horloge sera suffisante (en fonction du nombre d'ajouts et de multiplications). Est-il difficile de faire un traitement en virgule flottante sur un FPGA, dois-je m'en tenir aux mathématiques en virgule fixe? Quelle est la meilleure façon de commencer?

J'ai besoin d'une solution programmable sous Linux. Xilinx fournit cela, mais je ne sais pas quelles sont les limitations.

fpganewbie
la source
5
Il serait très utile de savoir quel type d'algorithmes vous devez mettre en œuvre. Il y a de fortes chances que vous n'ayez pas du tout besoin d'un FPGA, ce qui vous fera gagner beaucoup de temps de développement ;-)
geschema
Je suis d'accord avec geschema; vous n'avez peut-être pas besoin d'un FPGA. Peut-être qu'un DSP est une meilleure solution. Dans tous les cas, ils sont plus faciles à démarrer si vous n'avez qu'une expérience en uC. Les FPGA sont très différents!
stevenvh

Réponses:

13

Je n'utiliserais pas de FPGA.

Vous mentionnez que vous n'avez aucune expérience avec les FPGA, et pourtant vous êtes intéressé à faire du traitement numérique du signal sur un FPGA ... la manipulation numérique + le traitement du signal sont assez difficiles à obtenir directement sur un ordinateur / DSP / microprocesseur, où les outils de programmation sont conventionnels programmation. Il me semble que l'utilisation d'un projet de traitement du signal numérique pour un premier projet FPGA est probablement une recette de frustration.

Si vous voulez apprendre les FPGA, essayez de faire quelque chose de plus adapté aux outils de développement, comme les machines d'état ou le traitement des paquets de communication.

Pour un projet DSP comme celui que vous avez décrit, je recommanderais plutôt un DSP ou un PSOC Cypress ou un microconvertisseur Analog Devices (= microcontrôleur avec ADC + DAC intégré).

(divulgation complète, qui fournit un certain contexte à mes conseils: je n'utilise pas de FPGA moi-même. J'ai utilisé la logique programmable = PLD à de rares occasions. Mon officier utilise fréquemment des FPGA, et j'ai vu suffisamment de code VHDL / Verilog en parcourant son épaule pour savoir qu'il est bien adapté aux manipulations de bits. C'est un ingénieur expérimenté avec beaucoup d'expérience avec les FPGA; dans une récente conversation avec lui où il faisait des calculs assez simples sur des nombres entiers avec différentes largeurs de bits, je lui ai dit qu'il avait besoin faire l'extension du signe sur le nombre de bits le plus court afin de le soustraire correctement, et il a eu ce regard sur son visage, comme "oh mec, je ne veux pas avoir à faire l'extension du signe ..." Ajout et soustraction n'est pas très difficile dans un FPGA. Au-delà de l'addition et de la soustraction, vous avez vraiment besoin de connaître les outils et les bibliothèques.Et le traitement en virgule flottante ??!? !! ??!? !!?)

Jason S
la source
2
MyHDL essaie de résoudre certains de ces problèmes.
Shawn J. Goff
Je ne pense pas que les FPGA soient plus difficiles à utiliser que les micros, ils ont simplement un ensemble différent de mises en garde.
Connor Wolf
10

Ils sont tous assez bons. Vous n'aurez pas besoin de trop de FPGA pour faire quelque chose de simple comme ça, donc tout FPGA débutant (comme la ligne Spartan-3) devrait suffire.

Juste un mot d'avertissement cependant, la programmation d'un FPGA est un LOOOOTTTTTT différent de quelque chose comme C ++, C, perl ... Je suggère de commencer avec verilog parce que c'est probablement le plus facile de passer en ... VHDL est très COBOL mais mais verilog est plus similaire aux langages de programmation modernes.

À propos de la vitesse d'horloge: ne vous en faites pas. L'avantage d'utiliser des FPGA est qu'ils sont massivement parallèles, donc si une horloge à 50 MHz peut sembler ridiculement lente par rapport aux normes d'aujourd'hui, gardez à l'esprit qu'ils peuvent faire des centaines de choses à la fois, alors qu'un CPU "normal" à 3 GHz doit mettre les choses en file d'attente jusqu'à un à la fois. C'est l'avantage d'utiliser FPGA: le parallélisme. Donc, pour quelque chose de spécialisé, vous n'avez pas tellement à vous soucier de la vitesse.

Mais comme l'autre commentaire, c'est un tout autre paradigme. La courbe d'apprentissage est abrupte, mais une fois que vous maîtrisez la langue, tout est logique (assurez-vous simplement de comprendre les éléments constitutifs).

FPGA heureux :)

Vincent P
la source
2
VHDL est en fait basé sur Ada! Leon
Leon Heller
2
De plus, en choisissant Verilog ou VHDL, considérez le langage à la lumière qu'il s'agit d'un investissement dans votre future commercialisation. Aux États-Unis, Verilog est plus populaire dans le développement de circuits intégrés / puces que VHDL, donc connaître Verilog (et sa version améliorée, System Verilog) sera probablement un meilleur investissement à long terme. Il semble également que toutes les grandes sociétés EDA investissent dans le verilog et le système verilog, alors que le VHDL n'attire pas beaucoup d'attention. (témoin de la simulation mixte VCS avec vhdl vs différences de performances du simulateur VCS verilog). (que le flamboyant) Oui, vous pouvez apprendre les deux, mais pourquoi ne pas donner la priorité.
Ross Rogers
Vous pouvez l'écrire dans l'une ou l'autre des langues. Je pense que les outils Xilinx peuvent prendre Verilog et VHDL, même dans le même projet. FWIW, je suis aux États-Unis et je n'ai jamais utilisé Verilog.
ajs410
1
"VHDL est très COBOL". Pas d'un million de kilomètres!
stevenvh
9

Il y a quelque temps, j'ai préparé un tableau de comparaison des cartes FPGA d'entrée de gamme , des deux fournisseurs FPGA Xilinx et Altera. Ce sont les deux principaux acteurs des FPGA, un peu comme PIC vs AVR ou Sony vs Nintendo. Ils offrent le meilleur rapport qualité-prix. Il existe d'autres fournisseurs qui fournissent des fonctionnalités spécifiques, mais vous finissez généralement par payer plus ou perdre des fonctionnalités / puissance de traitement.

Je sais que cela ne répond pas directement à votre question spécifique, mais cela devrait être utile à quiconque cherche à démarrer avec une carte FPGA.

davr
la source
7

Tant de questions; essayons d'essayer d'y répondre dans l'ordre:

  1. Besoins en ressources pour le traitement du signal: Afin de déterminer de quel matériel vous avez besoin pour utiliser / construire, vous avez besoin d'une idée de la quantité de traitement que vous voulez faire sur les signaux en question. 8 canaux à 10 kHz n'est pas un débit de données très élevé, donc à moins que vos besoins ne soient très spéciaux, la plupart des FPGA et DSP devraient être capables de traiter les données.
  2. Comment choisir le bon appareil? En fonction des exigences de votre traitement du signal, vous devriez être en mesure de déterminer le périphérique requis pour votre application. Les points clés sont la mémoire requise, des multiplicateurs durs requis, des considérations d'E / S spéciales, etc. La plupart des fournisseurs de FPGA ont des outils (basés sur le Web) qui vous permettent de rechercher dans leur portefeuille en fonction de ces facteurs.
  3. Comment démarrer avec DSP?Les DSP ne sont que des ordinateurs ordinaires qui ont généralement des instructions SIMD [Single Instruction, Multiple Data] pertinentes pour le traitement du signal. Pour commencer, il vous suffit de comprendre les limites du matériel "embarqué" et d'un compilateur C afin de pouvoir tester votre code sur un PC ordinaire.
  4. Comment démarrer avec les FPGA?Les FPGA sont programmés dans un langage de description matérielle. Celles-ci sont significativement différentes des langages séquentiels tels que C ou Java. Afin de développer pour FPGA, vous devez comprendre la nature concurrente du matériel réel. Les outils dont vous avez besoin pour commencer sont un simulateur HDL tel que Simili (gratuit pour les petits modèles) ou Modelsim. Cela vous permet de simuler votre code sur PC. Après cela, vous avez besoin d'un outil de synthèse spécifique au fournisseur qui compile votre code HDL dans un fichier bit qui est utilisé pour configurer le FPGA. Si vous obtenez un kit de démarrage d'Altera, Actel ou Xilinx, tous les outils dont vous avez besoin font partie du kit.
  5. Prise en charge Linux: les outils FPGA de la plupart des fournisseurs fonctionnent sous Linux, mais dans le domaine DSP, vous êtes généralement obligé d'utiliser des compilations Windows uniquement, à moins que votre DSP ne soit pris en charge par GCC (Blackfin d'Analog et plusieurs modèles de Texas Instruments le sont).
trondd
la source
+1 pour "8 canaux à 10 kHz n'est pas un débit de données très élevé" - je ne peux pas croire que personne ne l'ait encore dit.
Kevin Vermeer
Pas s'il fait de la FFT à 8 canaux ...
ajs410
Les DSP sont souvent des unités de traitement parallèles à un seul thread capables chacune d'exécuter une instruction différente (contrairement à SIMD où toutes les unités partagent la même instruction).
Ben Voigt
4

À peu près n'importe quel fournisseur de FPGA fera l'affaire. C'est comme Intel vs AMD ... il y a des différences entre Xilinx et Altera, mais elles sont remarquablement similaires en termes de fonctionnalités. Achetez n'importe quel kit de développement dans votre gamme de prix - j'ai personnellement aimé les Spartan 3 de Xilinx - et exécutez-le.

En ce qui concerne le nombre de portes, le kit de développement sera généralement très volumineux, espérons-le beaucoup plus grand que ce dont vous avez besoin. Lorsque vous vous préparez à passer à votre propre PCB, les outils de synthèse estimeront pour vous combien de portes votre conception nécessite. Vous pouvez l'utiliser pour sélectionner un FPGA plus petit, bien que vous puissiez découvrir que les contraintes de package (QFP vs BGA) jouent également un rôle important.

Avec des techniques de conception appropriées, la vitesse d'horloge ne sera pas un problème. En fait, vous pouvez généralement utiliser un cristal à vitesse relativement faible, comme 12 MHz, et le FPGA peut synthétiser une horloge beaucoup plus rapide (ou de nombreuses horloges plus rapides!) Si vous êtes vraiment inquiet à propos des multiplications, je sais que la série Virtex4 a des tranches DSP dédiées qui peuvent accélérer ces calculs. Mais les FPGA sont massivement parallèles, vous n'avez donc pas besoin de trop de MHz pour faire une tonne de travail.

Je resterais définitivement avec un point fixe si vous le pouvez. Il est possible de faire de la virgule flottante, et Xilinx a même un générateur de noyau qui vous fournira un noyau en virgule flottante, mais le point fixe sera beaucoup, beaucoup plus rapide et nécessitera beaucoup moins de portes. Un autre avantage est que vous pouvez faire un point fixe impair; vous pouvez utiliser autant de bits que vous le souhaitez, cela ne doit pas nécessairement être un nombre de bits de puissance de 2, et / ou vous pouvez utiliser des points fixes plus grands pour les étapes intermédiaires.

La meilleure façon de commencer avec les FPGA? Trouvez une classe ou un séminaire ou quelque chose. Si vous n'êtes pas familier avec la technologie, les outils de développement seront très déroutants, car il y a beaucoup de choses qui peuvent mal tourner. Les outils pour MCU sont beaucoup plus tolérants et nécessitent moins d'intimité avec l'architecture sous-jacente.

Oh, et vous devriez lire la fiche technique du FPGA, d'avant en arrière.

ajs410
la source
0

Jetez un oeil à XMOS

Ils peuvent être utilisés pour remplacer les FPGA dans de nombreuses applications.

Leon Heller
la source
0

Si vous voulez estimer le nombre de portes, vous n'avez pas encore besoin d'acheter de matériel - les principaux fabricants de FPGA ont un logiciel gratuit, et beaucoup auront des notes sur la façon de faire du dsp. Vous pouvez concevoir et simuler des éléments sans matériel, et le logiciel vous dira quelles ressources sont utilisées. Cependant pour le traitement du signal, un dsp serait normalement la première étape, et FPGA seulement si vous manquez de puissance de traitement.

mikeselectricstuff
la source