La logique programmable peut être implémentée dans votre widget dans de nombreux spectres différents, de la gravure de quelques portes ou de l'utilisation d'un MUX au dernier FPGA avec microcontrôleur intégré et périphériques d'E / S, sans parler du PrimeCell GPIO d' ARM ou d' autres exemples plus spécifiques . Pour quelles applications les différents niveaux de complexité des dispositifs logiques programmables sont-ils utilisés? Bien que le regroupement semble se fondre près des extrêmes de leurs définitions , je pense que c'est une liste acceptable:
- PAL / PLA / GAL : matrice logique programmable; semblent être répertoriés comme`` Embedded - PLDs ''à Digikey, couvrant les E / S asynchrones 10/8 (ATF16V8C) à 50 MHz, 192 macrocellules (CY7C341B) et sont pour la plupart reprogrammables.
- CPLD : dispositif logique programmable complexe; Digikey les répertorie en tant que tels, disponibles en 7.5ns 10 E / S (ATF750C) à 233 MHz, 428 E / S "CPLD à FPGA Densities" (CY39100V484B).
- FPGA : matrice de portes programmable par l'utilisateur; disponible en 58 E / S (XC2064) à 1023 E / S bêtes BGA (EP1S80F1508C7N).
- FPGA avec MCU dur : c'est quand un MCU est physiquement disposé dans le CI FPGA, non émulé.
Citation de Wikipedia:
La différence entre les FPGA et les CPLD est que les FPGA sont basés en interne sur des tables de consultation (LUT) tandis que les CPLD forment les fonctions logiques avec une mer de portes (par exemple la somme des produits). Les CPLD sont destinés à des conceptions plus simples tandis que les FPGA sont destinés à des conceptions plus complexes. En général, les CPLD sont un bon choix pour les applications logiques combinatoires étendues tandis que les FPGA conviennent mieux aux machines à grand état (c.-à-d. Les microprocesseurs).
Cela n'explique pas la différence entre l'utilisation d' un CPLD à 233 MHz, 400 E / S et un FPGA comparable ; ou entre un PLD 192 macrocellules et un CPLD comparable . Je ne peux pas trouver de directives fiables permettant de restreindre les options de conception. Notez que je n'ai pas actuellement une application spécifique en tête, mais je me suis souvent demandé: "qu'est-ce que j'utiliserais pour faire ça?"
J'ai reçu d'excellents conseils hors site concernant des exigences spécifiques, mais je pense toujours que cette question pourrait bénéficier de quelques exemples montrant une préférence par rapport à une famille de PLD alors qu'une autre peut sembler être également ou plus appropriée.
la source
Réponses:
Il y a deux critères que vous pouvez utiliser pour évaluer un projet numérique qui vous aident à décider quelle partie correspond le mieux à vos critères. Le premier est la taille / complexité de la conception - la quantité de logique impliquée. Le second est les exigences d'entrée et de sortie en termes de nombre de broches. La vitesse peut être prise en compte si vous pouvez estimer votre fonction la plus lente. Les outils du fournisseur (Altera Quartus II, Xilinx ISE, etc.) vous aideront une fois que vous serez dans le bon stade.
PAL / PLA / GAL: Ils sont destinés à remplacer les circuits de petite à moyenne taille que vous pourriez normalement implémenter en tant que puces logiques LSI (séries 7400, 4000). Ceux-ci peuvent offrir de meilleures dispositions de carte en raison du remappage des E / S et de nombreuses fonctions logiques simples. Ces puces contiennent de la mémoire non volatile (ou des fusibles programmables une seule fois) et ne nécessitent aucun temps de configuration de mise sous tension. Ils ne peuvent pas contenir d'éléments de stockage de données.
CPLD: Ce sont des cousins plus grands de l'APL. Les conceptions peuvent être de petites machines d'état, ou même un cœur de microprocesseur très simple. La plupart des puces CPLD que j'ai vues n'ont pas de SRAM sur puce, bien que le grand CPLD Cypress que vous avez lié en ait. Les CPLD sont plus susceptibles d'être reprogrammables avec une mémoire flash et ils ne nécessitent pas non plus de temps de configuration à la mise sous tension.
FPGA: Contrairement au CPLD, les blocs logiques sont basés sur SRAM au lieu de mémoire flash, résultant en des opérations logiques plus rapides. Le principal inconvénient des FPGA est que, puisque la configuration est stockée dans SRAM, à chaque mise sous tension du périphérique, le FPGA doit charger sa programmation dans cette SRAM. Selon la taille de votre conception et la vitesse de votre stockage non volatile, cela peut entraîner un retard notable entre la mise sous tension et le fonctionnement complet. Certains FPGA ont un flash intégré pour stocker leurs données, mais la plupart utilisent des puces de mémoire distinctes. Les FPGA auront souvent des multiplicateurs câblés, des PLL et d'autres fonctions logiques pour améliorer la vitesse de calcul. De grands blocs de RAM sur puce sont également disponibles. Vous pourrez également utiliser des spécifications d'E / S hautes performances telles que LVDS, PCI et PCI-Express.
FPGA avec noyau dur à microprocesseur: je ne les connais pas, mais j'imagine que votre conception serait centrée sur la programmation du microcontrôleur, et le FPGA augmenterait le microcontrôleur. Les pièces que vous avez identifiées donnent l'impression de commencer votre conception avec un microcontrôleur et un FPGA, puis de combiner les deux en une seule puce / boîtier.
Comment décider lequel vous convient le mieux:
La meilleure façon est de terminer votre code (Verilog / VHDL), puis d'utiliser les outils du fournisseur pour essayer de l'adapter dans la plus petite partie possible. Je sais que l'outil d'Altera vous permet de changer assez facilement les cibles de programmation, vous pouvez donc continuer à choisir des FPGA plus petits, puis des CPLD plus petits jusqu'à ce que votre utilisation de conception approche les 75% environ. Si vous avez besoin de performances, essayez de sélectionner des périphériques dotés de fonctionnalités (multiplicateurs rapides) qui réduisent les exigences de vitesse de la logique. Encore une fois, les outils du fournisseur vous aideront à identifier si vous devez effectuer une mise à niveau ou si vous pouvez rétrograder.
Un autre facteur dont la partie à utiliser est la facilité d'utilisation. L'utilisation de la logique PAL / PLA / GAL demande probablement plus d'efforts que la construction de la fonction à l'aide de portes logiques discrètes (74HC *, 4000, etc.). Les CPLD ne nécessitent généralement qu'une seule tension d'alimentation et ne nécessitent pas de circuits supplémentaires. Ils sont effectivement autonomes. Les FPGA commencent à utiliser plusieurs alimentations pour les E / S et le cœur logique, des normes d'E / S complexes, une mémoire de programme séparée, des PCB multicouches (> 2) et des boîtiers BGA.
Les étapes pour réduire vos exigences de conception comprennent:
Identifiez toutes les entrées et sorties de votre FPGA / CPLD. C'est généralement une partie facile de la phase de conception. De cette façon, vous savez quel package vous regardez et à quel point vous pouvez le réduire à cette marge.
Dessinez un schéma de principe de la logique interne. Si vos blocs semblent simples (chaque bloc aurait une poignée de portes logiques et de registres), alors vous pouvez probablement utiliser un CPLD. Si, cependant, vos blocs ont des étiquettes telles que "Ethernet transciever", "PCI-Express x16 interface", "DDR2 Controller" ou "h264 Encode / Decode", alors vous regardez certainement un FPGA et utilisez HDL.
Exemples d'applications CPLD:
Exemples d'applications FPGA pour amateurs:
Pour la plupart des travaux amateurs, vous serez limité à des FPGA relativement petits, sauf si vous souhaitez souder des packages BGA. Je choisirais entre un grand CPLD ou un FPGA bon marché, et les exigences de taille / vitesse dicteraient celui dont j'avais besoin.
la source
Une bonne liste de "règles de base" devrait ressembler à ceci:
la source
Une réponse simple pourrait être qu'il existe deux façons:
1. Vous concevez d'abord votre système sur un niveau d'abstraction élevé (par exemple HDL ou schémas). Ensuite, vous essayez de l'intégrer dans PAL / CPLD / FPGA et choisissez celles qui répondent à vos exigences (nombre de portes / éléments logiques, performances, etc.), puis choisissez la moins chère de celles-ci en fonction de ce que vous définissez le moins cher (coût de développement vs coût de production, etc.).
2. Mais généralement, avant de commencer tout développement de codage ou de schéma HDL, vous pouvez déjà estimer la complexité du système (de combien de portes avez-vous besoin, s'il semble que vous ayez besoin d'un MCU 8 bits ou MCU 32 bits, ou pas de microcontrôleur à tout). Sur cette base, vous pouvez également choisir votre appareil programmable. Ce serait moins précis mais cela permettra de concevoir votre matériel analogique et numérique non programmable en parallèle avec du matériel et des logiciels programmables (le cas échéant).
la source
Le FPGA avec noyau dur est utilisé car il est plus petit qu'un microcontrôleur séparé et plus rapide qu'un microprocesseur à noyau souple. Cependant, le prix est généralement pire qu'un FPGA et un microcontrôleur séparé. En général, un logiciel et donc un microcontrôleur est préférable pour les cas (relativement) lents et rares tels que la configuration des paramètres et la gestion des erreurs; la logique est meilleure pour les processus continus. Par exemple, dans le traitement des paquets, l'écriture dans une mémoire doit être logique; la gestion du délai d'expiration doit rester dans le logiciel.
Dans l'espace FPGA, il y a des pièces bon marché / de faible puissance et des pièces chères / rapides. Généralement, le microcontrôleur n'est que dans le coûteux; cela rend le commerce des coûts par rapport à un MCU discret encore pire pour la solution sur FPGA.
Personne n'utilise les PAL dans de nouveaux designs, au moins pendant plus de 10 ans. Les CPLD ont repris ce créneau.
Au cours des 5 derniers? ans Les CPLD ressemblent à des FPGA à l'intérieur, mais avec de la mémoire pour conserver la configuration sur puce. Étant donné que les FPGA sont maintenant à 100 MHz, la vitesse est beaucoup moins une raison de mettre la logique dans un CPLD qu'il y a 10 à 15 ans. Cependant, les FPGA ont encore d'autres fonctionnalités telles que des multiplicateurs, des sérialiseurs et de nombreuses mémoires qui peuvent forcer une conception en une même si elle n'a pas beaucoup de logique.
la source