Para que são utilizados os CIs lógicos programáveis ​​de complexidade diferente?

10

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:

  1. 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.
  2. 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).
  3. FPGA : matriz de portas programável em campo; disponível em 58bestas deE / S (XC2064) a 1023 E / S BGA (EP1S80F1508C7N).
  4. 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.

tyblu
fonte
O XC2064 é uma parte antiga. Não sei se ainda são fabricados o CY7C341B e o CY39100V484B. Você deve considerar isso ao fazer qualquer comparação / decisão.
Brian Carlton
2
Para sua informação, com qualquer uma dessas peças, há uma enorme diferença entre a variedade de ofertas que os fabricantes colocam em sua literatura e a variedade muito menor de combinações de contagem de portas / pacote / velocidade e temperatura nas quais você pode realmente esperar por suas mãos pequenas quantidades em menos de meio ano de prazo de entrega. Portanto, ao projetar com eles, verifique primeiro a disponibilidade real. Mesmo que eu saiba que a compra deseja obtê-los da distribuição, prefiro escolher dispositivos nos quais eu sei que um fornecedor mais orientado a protótipos os tem à mão para passar a noite comigo, se necessário.
Chris Stratton
Bons conselhos, @ ChrisStratton. Geralmente, é a primeira coisa que verifico com a maioria das partes, mas ainda é bom saber que é especialmente problemático com os PLDs.
tyblu

Respostas:

7

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:

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

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

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

W5VO
fonte
estendendo sua resposta um pouco, eu estaria inclinado a agrupar PAL / PLA / GAL na mesma cesta que PLD / CPLD por motivo de inicialização instantânea sem tempo de configuração e que os fornecedores estão começando a empurrar CPLDs à frente de PAL / PLA / Dispositivos GAL. Por exemplo, estou trabalhando com alguns dispositivos de treliça e o IC da família CPLD deles é significativamente mais barato e oferece mais portas do que os primos PAL / GAL / PLA. O custo deste último é proibitivo pelo que oferece quando comparado ao primeiro.
Smashtastic
A linha está definitivamente desfocando um pouco. Não achei que os PAL / PLA / GALs tivessem elementos de armazenamento ou os CLPDs tivessem SRAM até procurar as partes tyblu listadas. Parece que os PAL / PLA / GALs são mais como uma fita de pato em um design do que uma parte essencial.
W5VO
3

Uma boa lista de "regras básicas" seria mais ou menos assim:

  • PAL / PLA / GAL: Usado no lugar de portas lógicas discretas de IC em uma PCB
  • CPLD: Usado onde tarefas complexas, não DSP e possivelmente com tempo crítico são necessárias (carregamento do código de inicialização em um FPGA a partir da memória, gerador de ondas senoidais LUT para DAC, etc.)
  • FPGA: Usado quando a capacidade de tempo crítico, multiplicação ou DSP é necessária (filtros FIR, FFTs, etc.)
  • FPGA com MCU rígido: usado quando a funcionalidade FPGA é necessária e os periféricos no FPGA devem ser acessados ​​(sensores de temperatura) ou para permitir que uma tarefa menos sensível ao tempo seja implementada em C em vez de VHDL para simplificar (funcionalidade UART / porta serial, Limpeza de PCB, etc)
Joel B
fonte
Com um CPLD barato com pouca quantia, PAL / PLA / GAL estão praticamente mortos, exceto em aplicativos legados.
Chris Stratton
Eu não vou discutir isso. Eu só conseguia imaginar que, possivelmente, onde pouca energia (bateria) / tamanho pequeno é uma restrição, eles ainda podem ser usados, pois podem ser mais vantajosos que um CPDL, mas eu ainda usaria o menor CPLD / com baixo consumo de energia se fosse o meu Projeto.
Joel B
2

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

Halst
fonte
2

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.

Brian Carlton
fonte
11
Uma razão para manter um CPLD é que os CPLDs de baixo custo atuais ainda estão sendo fabricados em tecnologias de voltagem de fornecimento único, enquanto a maioria dos FPGAs atuais exigem várias voltagens de fornecimento. Portanto, se você não precisar fazer muito mais barato para colocar um cpld no quadro - mas se estiver falando de um CPLD grande, um fpga de baixo custo pode ser mais barato e oferecer mais espaço para aprimoramentos futuros, especialmente se você já possui as fontes de tensão principais disponíveis por algum outro motivo.
Chris Stratton
Obrigado por responder, @BrianCarlton, e pelos comentários, @ChrisStratton. Os exemplos dados e a opinião atual são ótimas informações.
tyblu