A lógica programável pode ser implementada no seu widget em muitos espectros diferentes, desde a queima de alguns portões ou o uso de um MUX até o FPGA mais recente com microcontrolador e periféricos IO integrados, sem mencionar o PrimeCell GPIO da ARM ou outros exemplos mais específicos . Para quais aplicativos os vários níveis de complexidade programável do dispositivo lógico são usados? Embora o agrupamento pareça se misturar próximo aos extremos de suas definições , acho que essa é uma lista aceitável:
- PAL / PLA / GAL : matriz lógica programável; parecem estar listados como'Embedded - PLDs'na Digikey, cobrindo 10/8 I / O assíncronas (ATF16V8C) a 50MHz, macrocélula 192 (CY7C341B) e são na maioria das vezes reprogramáveis.
- CPLD : dispositivo lógico programável complexo; O Digikey os lista como tal, disponível em 7,5ns 10 E / S (ATF750C) a 233 MHz, 428 E / S "CPLDs em FPGA Densities" (CY39100V484B).
- FPGA : matriz de portas programável em campo; disponível em 58bestas deE / S (XC2064) a 1023 E / S BGA (EP1S80F1508C7N).
- FPGA com MCU rígido : é quando um MCU é fisicamente disposto no IC do FPGA, não emulado.
Citação da Wikipedia:
A diferença entre FPGAs e CPLDs é que os FPGAs são baseados internamente em tabelas de consulta (LUTs), enquanto os CPLDs formam as funções lógicas com portos (por exemplo, soma de produtos). Os CPLDs destinam-se a projetos mais simples, enquanto os FPGAs destinam-se a projetos mais complexos. Em geral, os CPLDs são uma boa opção para amplas aplicações lógicas combinacionais, enquanto os FPGAs são mais adequados para grandes máquinas de estado (por exemplo, microprocessadores).
Isso não explica a diferença entre o uso de um CPLD de 233 MHz, 400 E / S e um FPGA comparável ; ou entre um PLD de 192 macrocélulas e um CPLD comparável . Não posso cumprir diretrizes confiáveis para restringir as opções de design. Observe que atualmente não tenho uma aplicação específica em mente, mas sempre me perguntei: "o que eu usaria para fazer isso?"
Recebi excelentes conselhos fora do local em relação a requisitos específicos, mas ainda acho que essa pergunta pode se beneficiar de alguns exemplos que mostram preferência por uma família de PLDs, quando outra pode parecer ser igualmente ou mais adequada.
fonte
Respostas:
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.
Aplicações de exemplo de CPLD:
Exemplo de aplicações FPGA Hobbyist:
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.
fonte
Uma boa lista de "regras básicas" seria mais ou menos assim:
fonte
Uma resposta simples pode ser que existem duas maneiras:
1. Primeiro você projeta seu sistema em alto nível de abstração (por exemplo, HDL ou esquemas). Em seguida, tente ajustá-lo ao PAL / CPLD / FPGA e escolha aqueles que atendam aos seus requisitos (número de portas / elementos lógicos, desempenho etc.) e escolha o mais barato, dependendo do que você define mais barato (custo de desenvolvimento vs. custo de produção, etc).
2. Mas geralmente antes de iniciar qualquer codificação HDL ou desenvolvimento esquemático, você já pode estimar a complexidade do sistema (de quantos portões você precisa, se parecer que você precisa de um MCU de 8 bits ou de MCU de 32 bits ou nenhum microcontrolador em tudo). Com base nisso, você também pode escolher seu dispositivo programável. Isso seria menos preciso, mas permitirá projetar seu hardware analógico e digital não programável em paralelo com o hardware e o software programáveis (se houver).
fonte
O FPGA com núcleo rígido é usado, pois é menos área que um microcontrolador separado e mais rápido que um microprocessador de núcleo macio. No entanto, o preço geralmente é pior do que um FPGA e um microcontrolador separado. Em geral, software e, portanto, um microcontrolador é melhor para casos (relativamente) lentos e raros, como configuração de parâmetros e tratamento de erros; lógica é melhor para processos contínuos. Por exemplo, no processamento de pacotes, a gravação em uma memória deve estar na lógica; lidar com o tempo limite de vida útil deve permanecer no software.
Dentro do espaço FPGA, existem peças baratas / de baixa potência e peças caras / rápidas. Geralmente o microcontrolador é apenas o caro; isso torna o custo de negociação vs. um MCU discreto ainda pior para a solução on-FPGA.
Ninguém usa PALs em novos designs, pelo menos por mais de 10 anos. CPLDs assumiram esse nicho.
Nos últimos 5? anos Os CPLDs são do tipo FPGA por dentro, mas com memória para manter a configuração no chip. Como os FPGAs agora possuem 100 MHz de velocidade, a velocidade é muito menos um motivo para colocar lógica em um CPLD do que há 10 a 15 anos atrás. No entanto, os FPGAs ainda têm outros recursos, como multiplicadores, serializadores e muitas memórias que podem forçar um design a um, mesmo que não possua muita lógica.
fonte