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.
fonte
Respostas:
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 ??!? !! ??!? !!?)
fonte
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 :)
fonte
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.
fonte
Tantas perguntas; vamos tentar responder a eles em ordem:
fonte
Um colega chamado Anthony Burch montou uma série descendente de vídeos sobre FPGAs . Um dos gratuitos inclui informações sobre como escolher um FPGA.
fonte
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.
fonte
Dê uma olhada no XMOS
Eles podem ser usados para substituir FPGAs em muitos aplicativos.
fonte
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.
fonte