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.
la source
Réponses:
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 ??!? !! ??!? !!?)
la source
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 :)
la source
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.
la source
Tant de questions; essayons d'essayer d'y répondre dans l'ordre:
la source
Un homme du nom d'Anthony Burch a monté une série de vidéos sur les FPGA . L'un des gratuits comprend des informations sur la façon de choisir un FPGA.
la source
À 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.
la source
Jetez un oeil à XMOS
Ils peuvent être utilisés pour remplacer les FPGA dans de nombreuses applications.
la source
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.
la source