À quoi servent les circuits intégrés logiques programmables de complexité différente?

10

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:

  1. 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.
  2. 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).
  3. FPGA : matrice de portes programmable par l'utilisateur; disponible en 58 E / S (XC2064) à 1023 E / S bêtes BGA (EP1S80F1508C7N).
  4. 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.

tyblu
la source
Le XC2064 est une pièce ancienne. Je ne sais pas si CY7C341B et CY39100V484B sont toujours fabriqués. Vous devez tenir compte de cela lors de toute comparaison / décision.
Brian Carlton
2
Pour votre information, avec l'une de ces pièces, il y a une énorme différence entre la variété des offres que les fabricants mettent dans leur littérature et l'assortiment beaucoup plus petit de combinaisons de comptage de porte / emballage / vitesse et température que vous pouvez réellement vous attendre à mettre la main sur de petites quantités en moins de six mois de délai. Ainsi, lors de la conception avec eux, vérifiez d'abord la disponibilité réelle. Même si je sais que l'achat veut les obtenir de la distribution, je préfère choisir des appareils où je sais qu'un fournisseur plus orienté prototype les a en fait à portée de la main pour moi si nécessaire.
Chris Stratton
Bon conseil, @ChrisStratton. C'est généralement la première chose que je vérifie avec la plupart des pièces, mais il est toujours bon de savoir que c'est particulièrement problématique avec les PLD.
tyblu

Réponses:

7

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:

  1. 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.

  2. 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.

  3. Regardez et voyez si vos interfaces ont des exigences d'E / S spéciales, telles que des tensions spéciales, LVDS, DDR ou SERDES haute vitesse. Il est plus facile d'obtenir une puce qui la prend en charge que d'obtenir une puce de traduction supplémentaire.

Exemples d'applications CPLD:

  • PWM multicanal avec interface SPI
  • Expanseur d'E / S
  • Décodage de l'espace d'adressage du processeur
  • Horloges (chronométrage)
  • Multiplexeurs d'affichage
  • DSP simple
  • Certains programmes simples peuvent être convertis en conception CPLD

Exemples d'applications FPGA pour amateurs:

  • Conceptions de petits systèmes sur puce (SoC)
  • Vidéo
  • Ponts de protocoles complexes
  • Traitement de signal
  • Cryptage / décryptage
  • Émulation de système hérité
  • Analyseur logique / générateur de motifs

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.

W5VO
la source
en étendant légèrement votre réponse, je serais enclin à regrouper PAL / PLA / GAL dans le même panier que PLD / CPLD pour une raison de démarrage instantané sans temps de configuration, et que les fournisseurs commencent à pousser les CPLD devant PAL / PLA / Appareils GAL. Par exemple, je travaille avec certains appareils en réseau et leur circuit intégré de la famille CPLD est nettement moins cher et offre plus de portes que les cousins ​​PAL / GAL / PLA. Le coût de ce dernier est prohibitif pour ce qu'il offre par rapport au premier.
smashtastic
La ligne est définitivement un peu floue. Je ne pensais pas que PAL / PLA / GALs avaient des éléments de stockage, ou CLPD avait SRAM jusqu'à ce que je recherche les pièces listées par Tyblu. Il semble que les PAL / PLA / GAL ressemblent plus à du ruban de canard dans une conception qu'à une partie centrale.
W5VO
3

Une bonne liste de "règles de base" devrait ressembler à ceci:

  • PAL / PLA / GAL: utilisé à la place des portes logiques IC discrètes sur un PCB
  • CPLD: utilisé lorsque des tâches complexes, non DSP et éventuellement critiques sont nécessaires (chargement du code de démarrage sur un FPGA à partir de la mémoire, générateur sinusoïdal LUT pour DAC, etc.)
  • FPGA: utilisé lorsqu'une capacité critique, multiplicative ou DSP est requise (filtres FIR, FFT, etc.)
  • FPGA avec MCU dur: utilisé lorsque la fonctionnalité FPGA est requise et que les périphériques du FPGA doivent être accessibles (capteurs de température) ou pour permettre une tâche moins sensible au temps à implémenter en C plutôt qu'en VHDL pour plus de simplicité (fonctionnalité UART / port série, Nettoyage des PCB, etc.)
Joel B
la source
Avec un CPLD bon marché sous un dollar en petite quantité, PAL / PLA / GAL sont à peu près morts, sauf pour les applications héritées.
Chris Stratton,
Je ne contesterai pas cela. Je ne pouvais qu'imaginer que si une faible puissance (batterie) / petite taille était une contrainte, ils pourraient toujours être utilisés car ils pourraient être plus avantageux qu'un CPDL, mais j'utiliserais toujours le CPLD le plus petit / économe en énergie si c'était mon conception.
Joel B
2

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).

Halst
la source
2

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.

Brian Carlton
la source
1
L'une des raisons de conserver un CPLD est que les CPLD actuels à faible coût sont toujours fabriqués dans des technologies de tension à alimentation unique, tandis que la plupart des FPGA actuels nécessitent plusieurs tensions d'alimentation. Donc, si vous n'avez pas besoin de faire beaucoup moins cher pour mettre un cpld sur la carte - mais si vous parlez d'un grand CPLD, un fpga bas de gamme peut être moins cher et vous donner plus de place pour de futures améliorations, surtout si vous avez déjà les alimentations de tension de base disponibles pour une autre raison.
Chris Stratton,
Merci d'avoir répondu, @BrianCarlton, et les commentaires, @ChrisStratton. Les exemples donnés et l'opinion actuelle sont d'excellentes informations.
tyblu