Existem dois critérios que você pode usar para avaliar um projeto digital que ajuda a decidir qual parte melhor corresponde aos seus critérios. O primeiro é o tamanho / complexidade do projeto - quanta lógica está envolvida. O segundo são os requisitos de entrada e saída em termos de contagem de pinos. A velocidade pode ser levada em consideração se você puder estimar qual seria sua função mais lenta. As ferramentas do fornecedor (Altera Quartus II, Xilinx ISE etc.) o ajudarão quando você chegar ao estádio certo.
PAL / PLA / GAL: Destina-se a substituir circuitos de tamanho pequeno a médio que você normalmente pode implementar como chips lógicos LSI (série 7400, 4000). Eles podem oferecer melhores layouts de placa devido ao remapeamento de E / S e muitas funções lógicas simples. Esses chips contêm memória não volátil (ou fusíveis programáveis uma vez) e não requerem tempo de configuração de inicialização. Eles podem não conter elementos de armazenamento de dados.
CPLD: são primos maiores do PLA. Os projetos podem ser pequenas máquinas de estado ou até um núcleo de microprocessador muito simples. A maioria dos chips de CPLD que eu vi não possui SRAM no chip, embora o grande CPLD Cypress que você vinculou tenha. É mais provável que os CPLDs sejam reprogramados com memória flash e também não exijam tempo de configuração na inicialização.
FPGA: Ao contrário do CPLD, os blocos lógicos são baseados na SRAM em vez de na memória flash, resultando em operações lógicas mais rápidas. A principal desvantagem dos FPGAs é que, como a configuração é armazenada na SRAM, toda vez que o dispositivo é ligado, o FPGA deve carregar sua programação nessa SRAM. Dependendo do tamanho do seu design e da velocidade do seu armazenamento não volátil, isso pode causar um atraso perceptível da inicialização para o pleno funcionamento. Alguns FPGAs têm flash no chip para armazenar seus dados, mas a maioria usa chips de memória separados. Os FPGAs costumam ter multiplicadores conectados por cabo, PLLs e outras funções lógicas para melhorar a velocidade da computação. Grandes blocos de RAM no chip também estão disponíveis. Você também poderá usar especificações de E / S de alto desempenho, como LVDS, PCI e PCI-Express.
FPGA com núcleo rígido do microprocessador: Eu não estou familiarizado com isso, mas imagino que seu design se concentre na programação do microcontrolador, e o FPGA aumentará o microcontrolador. As partes que você identificou fazem com que pareça que você iniciaria seu projeto com um microcontrolador e um FPGA e depois combinaria os dois em um único chip / pacote.
Como decidir o que é certo para você:
A melhor maneira é terminar seu código (Verilog / VHDL) e, em seguida, usar as ferramentas do fornecedor para tentar ajustá-lo na menor parte possível. Eu sei que a ferramenta da Altera permite que você altere os alvos de programação com bastante facilidade, para que você possa escolher FPGAs menores e depois CPLDs menores até que o uso do seu projeto chegue perto dos 75%. Se você precisar de desempenho, tente escolher dispositivos que tenham recursos (multiplicadores rápidos) que diminuam os requisitos de velocidade da lógica. Novamente, as ferramentas do fornecedor ajudarão a identificar se você precisa atualizar ou se pode fazer o downgrade.
Outro fator de qual parte usar é a facilidade de uso. Usar a lógica PAL / PLA / GAL é provavelmente mais esforço do que construir a função usando portas lógicas discretas (74HC *, 4000, etc). Os CPLDs normalmente exigem apenas uma única tensão de alimentação e não requerem circuitos adicionais. Eles são efetivamente independentes. Os FPGAs começam a usar várias fontes de alimentação para E / S e o núcleo lógico, padrões complexos de E / S, memória de programa separada, PCBs com várias camadas (> 2) e pacotes BGA.
As etapas para reduzir os requisitos de design incluem:
Identifique todas as entradas e saídas para o seu FPGA / CPLD. Geralmente, essa é uma parte fácil do estágio de design. Dessa forma, você sabe para qual pacote está olhando e o quão perto pode cortá-lo nessa margem.
Desenhe um diagrama de blocos da lógica interna. Se seus blocos parecerem simples (cada bloco teria uma mão cheia de portas lógicas e registradores), provavelmente você poderá usar um CPLD. Se, no entanto, seus blocos tiverem rótulos como "Ethernet transciever", "PCI-Express x16 interface", "DDR2 Controller" ou "h264 Encode / Decode", então você certamente está olhando para um FPGA e usando HDL.
- Veja e veja se suas interfaces possuem requisitos de E / S especiais, como tensões especiais, LVDS, DDR ou SERDES de alta velocidade. É mais fácil obter um chip compatível com ele do que um chip tradutor adicional.
Aplicações de exemplo de CPLD:
- PWM multicanal com interface SPI
- Expansor de E / S
- Decodificação de espaço de endereço da CPU
- Relógios (Manutenção do tempo)
- Multiplexadores de exibição
- DSP simples
- Alguns programas simples podem ser convertidos em um design de CPLD
Exemplo de aplicações FPGA Hobbyist:
- Projetos pequenos do System-on-Chip (SoC)
- Vídeo
- Pontes de protocolo complexas
- Processamento de sinal
- Criptografia / Descriptografia
- Emulação de sistema legado
- Analisador lógico / gerador de padrões
Para a maioria dos trabalhos amadores, você estará limitado a FPGAs relativamente pequenos, a menos que queira soldar pacotes BGA. Eu escolheria um CPLD grande ou um FPGA barato, e os requisitos de tamanho / velocidade ditariam qual deles eu precisava.