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