Como escolher um FPGA?


17

Preciso fazer o processamento do sinal digital em 8 linhas analógicas a 10 kHz. Essa é uma tarefa bastante exigente, e eu estava pensando que um FPGA poderia ser a abordagem correta. Atualmente, estou vendo os kits de desenvolvimento da Xilinx e, como não tenho experiência com FPGA, acho realmente difícil saber como escolher o chip certo. Imaginei usar um kit de desenvolvimento e expandi-lo usando os pinos de E / S para conectar-se a um chip A / D de 8 canais e a um chip D / A de 8 canais.

Quais são as diferenças entre o uso de Spartan, Virtex, Altera, etc.? Nem sei como estimar quantos portões vou precisar. Existem regras práticas para isso? Como garantir que a velocidade do relógio seja suficiente (em função do número de adições e multiplicações). É difícil fazer o processamento de ponto flutuante em um FPGA, devo seguir a matemática do ponto fixo? Qual é a melhor maneira de começar?

Eu preciso de uma solução que seja programável usando Linux. O Xilinx fornece isso, mas não tenho certeza de quais são as limitações.


5
Ajudaria muito saber que tipo de algoritmos você precisa implementar. As chances são de que você não precisa de um FPGA em tudo, que você vai economizar muito tempo de desenvolvimento ;-)
geschema

Eu concordo com o geschema; você pode não precisar de um FPGA. Talvez um DSP seja uma solução melhor. De qualquer forma, é mais fácil começar se você tiver experiência em uCs. FPGAs são muito diferentes!
stevenvh

Respostas:


13

Eu não usaria um FPGA.

Você mencionou que não tem experiência com FPGAs e, no entanto, está interessado em processar processamento de sinal digital em um FPGA ... manipulação numérica + processamento de sinal são difíceis o suficiente para serem executados em um computador / DSP / microprocessador, onde as ferramentas de programação são convencionais programação. Parece-me que o uso de um projeto de processamento de sinal digital para um primeiro projeto FPGA provavelmente é uma receita para frustração.

Se você quiser aprender FPGAs, tente fazer algo mais adequado às ferramentas de desenvolvimento, como máquinas de estado ou processamento de pacotes de comunicação.

Para um projeto DSP como o que você descreveu, recomendo um DSP ou um Cypress PSOC ou um Microconversor de Analog Devices (= microcontrolador com ADC + DAC embutido).

(divulgação completa, que fornece algum contexto para o meu conselho: eu mesmo não uso FPGAs. Eu usei lógica programável = PLDs em raras ocasiões. Meu colega de escritório usa FPGAs frequentemente e já vi código VHDL / Verilog suficiente olhando por cima dele. saber que ele é adequado para manipulações de bits.Ele é um engenheiro experiente, com muita experiência com FPGAs; em uma conversa recente com ele, onde estava fazendo algumas contas bastante simples em números inteiros com diferentes larguras de bits, eu disse a ele que precisava para estender sinal no número de largura de bit menor, para subtraí-lo corretamente, e ele ficou com essa expressão no rosto, como "oh cara, eu não quero ter que fazer extensão de sinal ..." Adicionando e subtraindo não é muito difícil em um FPGA. Além da adição e subtração, você realmente precisa conhecer as ferramentas e as bibliotecas.E processamento de ponto flutuante ??!? !! ??!? !!?)


2
O MyHDL tenta corrigir alguns desses problemas.
Shawn J. Goff

Eu não acho que os FPGAs sejam mais difíceis de usar do que os micros, eles simplesmente têm um conjunto diferente de advertências.
Connor Lobo

10

Eles são todos muito bons. Você não precisará muito do FPGA para fazer algo simples assim, portanto qualquer FPGA iniciante (como a linha Spartan-3) deve ser suficiente.

Apenas uma palavra de aviso, porém, programar um FPGA é um LOOOOTTTTTT diferente de algo como C ++, C, perl ... Eu sugiro começar com verilog, porque provavelmente é mais fácil fazer a transição para ... VHDL é muito COBOL, mas O verilog é mais parecido com as linguagens de programação modernas.

Sobre a velocidade do relógio: não se preocupe. A vantagem de usar FPGAs é que eles são massivamente paralelos; portanto, embora um relógio de 50MHz possa parecer ridiculamente lento para os padrões atuais, lembre-se de que eles podem fazer centenas de coisas ao mesmo tempo, enquanto uma CPU "normal" em 3GHz precisa enfileirar as coisas um de cada vez. Essa é a vantagem de usar FPGA: paralelismo. Portanto, para algo especializado, você não precisa se preocupar tanto com velocidade.

Mas, como o outro comentário, é um paradigma totalmente diferente. A curva de aprendizado é íngreme, mas depois que você entende o idioma, tudo faz sentido (apenas certifique-se de entender os blocos de construção).

Happy FPGA'ing :)


2
VHDL é realmente baseado em Ada! Leon
Leon Heller

2
Além disso, ao escolher Verilog ou VHDL, considere o idioma à luz de ser um investimento em sua futura comercialização. Nos EUA, o Verilog é mais popular no desenvolvimento de IC / chips do que o VHDL; portanto, conhecer o Verilog (e sua versão aprimorada, System Verilog) provavelmente será um investimento melhor a longo prazo. Parece também que todas as grandes empresas de EDA estão investindo no verilog e no sistema, enquanto o VHDL não está recebendo muita atenção. (testemunha simulação mista do VCS com diferenças de desempenho do simulador vhdl vs VCS verilog). (que o flamejante) Sim, você pode aprender os dois, mas por que não priorizar.
Ross Rogers

Você pode escrever em qualquer idioma. Eu acho que as ferramentas Xilinx podem suportar Verilog e VHDL, mesmo no mesmo projeto. FWIW, estou nos EUA e nunca usei o Verilog.
precisa saber é

1
"VHDL é muito parecido com COBOL". Nem por um milhão de milhas!
stevenvh

9

Há algum tempo, montei um gráfico de comparação de placas FPGA de nível básico , dos dois fornecedores de FPGA Xilinx e Altera. Eles são os dois principais jogadores de FPGAs, como PIC vs AVR ou Sony vs Nintendo. Eles oferecem o melhor custo-benefício. Existem outros fornecedores que fornecem recursos específicos, mas você geralmente acaba pagando mais ou perdendo recursos / poder de processamento.

Sei que isso não responde diretamente a sua pergunta específica, mas deve ser útil para quem deseja iniciar uma placa FPGA.


7

Tantas perguntas; vamos tentar responder a eles em ordem:

  1. Requisito de recurso para processamento de sinal: para determinar qual hardware você precisa usar / construir, você precisa de uma idéia da quantidade de processamento que deseja executar nos sinais em questão. 8 canais a 10 kHz não é uma taxa de dados muito alta; portanto, a menos que seus requisitos sejam muito especiais, a maioria dos FPGAs e DSPs deve poder processar os dados.
  2. Como escolho o dispositivo certo? Com base nos requisitos do seu processamento de sinal, você deve descobrir qual dispositivo é necessário para sua aplicação. Os pontos principais são os requisitos de memória, são necessários multiplicadores rígidos, considerações especiais de IO etc. A maioria dos fornecedores de FPGA possui ferramentas (baseadas na Web) que permitem pesquisar seu portfólio com base nesses fatores.
  3. Como inicio o DSP? Os DSPs são apenas computadores comuns que geralmente possuem instruções SIMD [Instrução Única, Múltiplos Dados] relevantes para o processamento do sinal. Para começar, você só precisa entender as limitações do hardware "incorporado" e de um compilador C para poder testar seu código em um PC comum.
  4. Como inicio os FPGAs? Os FPGAs são programados em uma linguagem de descrição de hardware. Eles são significativamente diferentes das linguagens seqüenciais como C ou Java. Para desenvolver para FPGA, você precisa entender a natureza simultânea do hardware real. As ferramentas que você precisa para começar são um simulador de HDL, como o Simili (gratuito para projetos pequenos) ou o Modelsim. Isso permite simular seu código no PC. Depois disso, você precisa de uma ferramenta de síntese específica do fornecedor que compila o código HDL em um arquivo de bit usado para configurar o FPGA. Se você adquirir um kit inicial da Altera, Actel ou Xilinx, todas as ferramentas necessárias serão parte do kit.
  5. Suporte ao Linux: as ferramentas FPGA da maioria dos fornecedores são executadas no Linux, mas no campo DSP você geralmente é forçado a usar compilações somente para Windows, a menos que seu DSP seja suportado pelo GCC (Blackfin da Analog e vários modelos da Texas Instruments).

+1 para "8 canais a 10 kHz não é uma taxa de dados muito alta" - não acredito que ninguém tenha dito isso ainda.
Kevin Vermeer

Não, se ele está fazendo FFT 8 canais ...
ajs410

Os DSPs geralmente são unidades de processamento paralelo de thread único, cada uma capaz de executar uma instrução diferente (diferente do SIMD, onde todas as unidades compartilham a mesma instrução).
Ben Voigt


4

Praticamente qualquer fornecedor de FPGA fará. É como Intel vs AMD ... há diferenças entre Xilinx e Altera, mas são notavelmente semelhantes em termos de funcionalidade. Compre qualquer kit de desenvolvimento que esteja na sua faixa de preço - gostei pessoalmente do Spartan 3 da Xilinx - e corra com ele.

Em relação à contagem de portas, o kit de desenvolvimento normalmente será muito grande, provavelmente muito maior do que você precisa. Quando você estiver pronto para mudar para o seu próprio PCB, as ferramentas de síntese estimarão para você quantos portões seu projeto exige. Você pode usar isso para selecionar um FPGA menor, embora descubra que as restrições de pacote (QFP vs BGA) também desempenham um papel importante.

Com técnicas de design adequadas, a velocidade do relógio não será um problema. De fato, você geralmente pode usar um cristal de velocidade relativamente baixa, como 12 MHz, e o FPGA pode sintetizar um relógio muito mais rápido (ou muitos relógios mais rápidos!) Se você está realmente preocupado com multiplicações, sei que a série Virtex4 possui fatias DSP dedicadas que podem acelerar esses cálculos. Mas os FPGAs são massivamente paralelos, então você não precisa de muitos MHz para fazer uma tonelada de trabalho.

Eu definitivamente ficaria com o ponto fixo, se puder. É possível fazer ponto flutuante, e o Xilinx ainda possui um Core Generator que fornecerá um núcleo de ponto flutuante, mas o ponto fixo será muito, muito mais rápido e exigirá muito menos portas. Outra vantagem é que você pode fazer algum ponto fixo ímpar; você pode usar quantos bits desejar, não precisa ser uma contagem de potência de 2 bits e / ou pode usar pontos fixos maiores para estágios intermediários.

A melhor maneira de começar a usar FPGAs? Encontre uma aula, um seminário ou algo assim. Se você não estiver familiarizado com a tecnologia, as ferramentas de desenvolvimento serão muito confusas, porque há muita coisa que pode dar errado. As ferramentas para MCUs são muito mais tolerantes e exigem menos intimidade com a arquitetura subjacente.

Ah, e você deve ler a folha de dados do FPGA, da frente para trás.


0

Dê uma olhada no XMOS

Eles podem ser usados ​​para substituir FPGAs em muitos aplicativos.


0

Se você deseja estimar a contagem de portas, ainda não precisa comprar hardware - os principais fabricantes de FPGA têm software livre, e muitos terão notas de aplicação ao fazer dsp. Você pode projetar e simular coisas sem hardware, e o software informará quais recursos são usados. No entanto, para o processamento do sinal, um dsp normalmente seria a primeira etapa e o FPGA somente se você ficar sem energia de processamento.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.