dicas personalizadas de design de PCB em FPGA

9

Estou planejando projetar um PCB FPGA personalizado. o PCB conterá sensores. Preciso ler a saída dos sensores e processá-los no processador. Concluí muitos projetos usando FPGA, mas este será meu primeiro design personalizado, onde também preciso considerar a configuração de hardware. Ultimamente tenho pesquisado, mas ainda é difícil começar de um ponto. Portanto, estou pedindo que você ajude a mim e a outras pessoas que desejam criar seu FPGA personalizado, quais são os pontos que eles precisam considerar em cada etapa. Existem livros / recursos online que podem nos ajudar nesse processo? Também farei um documento depois de terminar meu projeto para que as pessoas possam utilizá-lo.

omid
fonte
Talvez você deve mencionar o tamanho físico do FPGA você pretende usar, o número de pinos, tensões de alimentação necessárias, ...
Dzarda
Estes ainda não foram especificados. Talvez minha pergunta não tenha sido esclarecida, mas estou procurando uma orientação.
Omid
Ok, é justo.
Dzarda
Esta questão parece estar fora de tópico
Roh
4
A grande questão é se você deseja usar um pacote BGA ou se deseja se restringir ao subconjunto de ofertas (e desempenho elétrico reduzido) disponíveis em pacotes TQFP fáceis de manusear. Em seguida, você espera que todos os seus suprimentos e sinais sejam encaminhados em duas camadas (difíceis, mas possíveis para objetivos limitados) ou está disposto a usar 4 ou mais? Qual a velocidade dos sinais do seu sensor? A que taxa você esperava controlar a lógica interna? Você tem algum analógico sensível ao ruído? Você já pensou em criar uma placa filha para usar com uma placa FPGA existente?
Chris Stratton

Respostas:

11

Na minha empresa, projetamos anteriormente algumas placas FPGA personalizadas e recentemente começamos a usar placas FPGA comerciais ("COTS") comerciais com placas-filha FMC personalizadas.

Estágio do protótipo

Se você ainda está na fase inicial de definição do projeto, planeje comprar pelo menos uma placa COTS FPGA para prototipagem. Você pode conectar um de seus sensores aos cabeçalhos de E / S e fazer uma rápida prova de conceito. Isso dá uma idéia de como o projeto pode ser executado quando dimensionado para muitos sensores e estimar quantos você pode suportar com um determinado FPGA.

Se o FPGA é muito pequeno ou muito lento ou as ferramentas são inadequadas para o trabalho, é fácil trocar por outro FPGA do COTS nesse estágio. (Bem, não é fácil, mas pelo menos gerenciável ...)

Se o firmware não funcionar nesta fase, é claramente devido a um problema de firmware, não a um erro de design de PCB personalizado. Com firmware personalizado e PCB personalizado, às vezes é difícil dizer de que lado há uma falha em um problema.

Placa FPGA personalizada versus placa FPGA comercial não comercial

Projetar uma placa FPGA personalizada faz sentido se o projeto tiver um ciclo de vida curto, alto volume ou exigir um fator de forma menor do que você pode obter com a placa COTS FPGA e as placas complementares PMOD ou FMC.

Se o ciclo de vida do projeto exceder a vida útil do produto de um chip de memória DDR (alguns anos), o design de uma placa-filha FMC personalizada pode ser uma alternativa melhor.

O custo é um fator nesta decisão. A maioria das placas COTS FPGA é de uso geral, projetada para máxima flexibilidade. Se você está fabricando um produto de alto volume e sensível ao custo, provavelmente vale a pena fazer um design personalizado; mas para volume baixo, provavelmente é melhor você se concentrar em fazer um cartão de filha.

Independentemente de qual abordagem você escolher, existem certas interfaces que requerem documentação clara e mestre: na interface entre os pinos de E / S de nível superior do FPGA e o restante da placa, e na interface do conector entre as placas. Esses são os locais onde os locais dos pinos, nomes internos da rede e nomes externos da rede às vezes são incompatíveis e trocados. Uma tabela é documentação suficiente; certifique-se de manter esta tabela de interface com versão e sob controle de origem. Antes de enviar arquivos PCB para a fabricação, imprima uma cópia desta tabela de interface, uma cópia do esquema e uma cópia do relatório de pinos / blocos FPGA. Arraste um marca-texto pelos papéis para marcar cada conexão de sinal onde deveria.

Para conectores, aprendi da maneira mais difícil de fornecer um "desenho do sistema" mecânico que mostra as placas e os conectores correspondentes em um único desenho dimensionado. Fui queimado pela primeira vez por um sistema de conectores VME em que o pino "A1" em um conector não era mapeado para o pino "A1" no outro conector. Também vi designers esquecerem que um par de conectores em ângulo reto resulta em uma conexão de imagem espelhada (90 graus + 90 graus = 180 graus). Isso foi um problema quando eu era responsável pela placa-mãe e vários outros gerentes de projeto foram responsáveis ​​por várias placas-filha.

Dicas personalizadas da placa FPGA

Comece com o "design de referência" do fornecedor do FPGA e, em seguida, omita as peças que não são necessárias para o seu aplicativo. Não remova nenhum capacitor de desvio do FPGA e não tente usar menos camadas de PCB. Preste atenção à pilha de camadas (geralmente encontrada ao lado do desenho da broca); os componentes de passo fino normalmente usam 0,5 oz de cobre em vez da espessura padrão da folha de cobre de 1 onça.

O pacote BGA é uma dor de se trabalhar. O rendimento nunca é tão bom quanto nos pacotes TQFP ou TQFN, e retrabalhar um BGA é quase impossível. Mesmo a inspeção de problemas de montagem requer um gerador de imagens de raio-X. Certifique-se de usar um provedor de serviços de fabricação por contrato em que confia.

As fontes de alimentação são sempre complicadas ao trabalhar com placas FPGA. Os requisitos reais de energia do FPGA dependem muito fortemente do fluxo de bits da configuração. O Xilinx fornece uma ferramenta "estimador de energia", mas a estimativa é válida apenas se o firmware estiver completo. Há um risco ao fazer uma alteração de firmware de última hora, que os requisitos de energia sejam maiores que o esperado. Planeje deixar alguma margem atual de fornecimento. Se a estimativa inicial de energia indicar que você precisa de 560mA, vá em frente e use um regulador de 1000mA. A corrente de saída extra disponível não causa danos, mas ter corrente de saída insuficiente resultará em um comportamento aberrante do sistema.

Se houver pinos FPGA não confirmados, coloque o máximo possível em um cabeçalho. Quando há um problema, esses pinos não confirmados se tornam um recurso valioso de diagnóstico para a detecção de sinais dentro do FPGA.

MarkU
fonte
11

Projetei mais de uma dúzia de placas baseadas em FPGA que empregavam uma ampla variedade de tipos diferentes de FPGAs, desde Lattice Mach X02s de baixa potência até Virtex 6 de alto desempenho com 24 canais SERDES. Os passos normais que sigo são:

Encontre um quadro de COTs (semelhante ao MarkU) e tenha uma idéia aproximada dos recursos internos do FPGA de que você precisará, em particular presto atenção a:

  • Contagem LUT (tabela de consulta):(o design se encaixa nas LUTs no quadro de referência?) Se você não tiver os recursos ou um método exaustivo para determinar uma estimativa precisa do uso de LUT (<precisão de 1K LUT), porque talvez o design não tenha terminado. Use esta regra de ouro. Se o design estiver quase concluído, pegue o tamanho do projeto (contagem LUT) e encontre um FPGA com pelo menos 30% mais LUTs. se o design não estiver próximo do final, suba para 50% ou 100% mais LUTs. Portanto, se o design se encaixar em 9K LUTs, certifique-se de usar um FPGA com 12K LUTs ou superior. Costumo exagerar e provavelmente chegaria a 25 mil LUTs. Isso salvará dores de cabeça excruciantes mais tarde. Quem quer que esteja contratando esse design de placa deve entender que deve haver mais de uma rotação desse design, para que seja compreensível superdimensionar a primeira versão do FPGA.
  • BRAM (contagem de RAM de bloco):Determine se o seu design exige mais recursos de memória do que o seu FPGA internamente. Isso é facilmente esquecido no início, mas em um design você tende a usar a RAM do bloco por vários motivos (ROMs, FIFOs, etc ...) Fiquei sem memória do bloco em um design e tentei usar a RAM distribuída (usando os LUTs como RAM ) e consumiu todos os meus LUTs muito rápido. É importante determinar se você precisará de memória externa. Isso adiciona muito risco aos projetos, porque, se ele exigir algum nível de desempenho, você poderá '
  • Enumere todos os padrões de sinalização e os possíveis níveis de tensão que você usará: Isso é importante porque alguns dos padrões de sinalização que você deseja usar (LVDS, LVSPEC, LVCMOS) podem ter restrições de tensão. Consulte os guias do usuário e verifique se todos esses padrões são suportados.
  • Requisitos de fonte de alimentação:Simpatizo com todas as queixas anteriores sobre fontes de alimentação subdimensionadas, obter a tensão de núcleo especificada é tuff; ultimamente, tenho usado muitos módulos TI Nano para FPGAs grandes mas de baixo custo (Spartan LX45 (T) - LX75 (T) e Lattice ECP3). Felizmente, você pode reduzir alguns dos riscos ao dimensionar as fontes de alimentação usadas para a E / S. Em particular, se este banco não estiver dirigindo uma fonte desconhecida (conector de expansão), o processo será o seguinte: Encontre todos os componentes aos quais esse banco se conectará, determine a capacitância de entrada para todos esses componentes, descubra a taxa de clock máxima estiver direcionando esses sinais, você poderá calcular o requisito de energia e estimar aproximadamente o requisito de desvio,

Usando a equação [P = (1/2) CV ^ 2 * (f)] onde C = capacitância de entrada, f = frequência. da entrada que seu FPGA deve conduzir (para cada sinal!). você pode descobrir a pior estimativa possível de quanta energia é necessária para acionar todos os sinais de saída.

Você também precisará considerar a perda de energia associada aos resistores de terminação internos (com base nos padrões de E / S que você usa)

Também tenho usado a ferramenta TI Webbench cada vez mais ultimamente, com muito sucesso:

TI Webbench (não trabalho para TI)

Esquemas:

  • Configure seu esquema com um idiota em mente Você e todos os designers de HDL voltarão muito a esse esquema. Assim, seja fácil para todos encontrarem o que precisam rapidamente, sem exigir que você ou eles no futuro pesquisem o esquema inteiro para descobrir se o pino 20 é a entrada do relógio. Isso inclui muitas notas sobre o esquema (se possível), descreve a finalidade de um circuito, o resultado esperado e até as preocupações. Como os FPGAs podem ser divididos em bancos, considere dividir o componente FPGA em várias partes e talvez até dedicar uma página esquemática inteira para um banco individual.

  • Coloque enormes notas irritantes no seu esquema de anexar relógios aos pinos corretos: bati minha cabeça contra muitas paredes ao criar minha primeira imagem para o design e recebi o temido 'sinal de relógio roteado em um pino ativado para não-relógio' . Viva com medo dos vários tipos de pinos do relógio no FPGA. Certifique-se de entender que alguns pinos de relógio são destinados ao uso em um quadrante de um FPGA ou então você enfrentará todos dizendo: "Ei, você sabia que existem certos pinos de relógio destinados a serem usados ​​em um quadrante de um FPGA". Leva apenas 15 pessoas dizendo isso para garantir que você nunca faça isso novamente.

  • GANHE MUITO TEMPO NO PROJETO DE CONFIGURAÇÃO DO FPGA: Certifique-se de retirar os pinos JTAG, mesmo que não planeje usá-los. É a diferença entre um erro viável e uma falha fatal.

  • Em caso de dúvida, traga botões de sinais extras, LEDs e interruptores DIP: Eu lidei bastante com o trabalho extra associado ao roteamento de sinais extras para romper os LEDs dos cabeçalhos, interruptores DIP e botões, mas sempre ajudou.

Layout :

  • Comunique-se com a casa Fab mais cedo: especialmente se você precisar de um roteamento controlado por impedância, peça uma pilha de camadas para a contagem de camadas desejada. É muito mais fácil rotear sinais de alta velocidade quando você tem as larguras de traçado definidas primeiro, em vez de descobrir que você poderia ter usado traços de 6 mil em vez de traços de 8 mil para realizar sua impedância de 50 ohm.

  • Comece com limites de desvio: projete o sistema de energia com antecedência. A primeira coisa que faço é começar colocando todas as letras minúsculas embaixo do FPGA ou perto dos pinos. Os maiores fora do FPGA e rotear um circuito inteiro de fonte de alimentação e colocá-lo aproximadamente onde eu esperava. Dessa forma, você não estará lutando contra o quebra-cabeça de roteamento e assumindo compromissos.

  • Sinais de alta velocidade em segundo: esses serão aqueles que você não deseja pular muitas camadas.


Estou sempre aprendendo mais coisas e adoraria outras dicas que outros designers encontraram, então adicione-as.

Dave
fonte
6

Eu acho que um bom ponto de partida para um PCB personalizado equipado com um FPGA serão as placas de design de referência do fornecedor do FPGA. Você pode inspecionar esses projetos, por exemplo, quanto à fonte de alimentação, mas esteja ciente de que as placas de design de referência às vezes são subdimensionadas. Tivemos muitos problemas com as placas Xilinx ML605 que perdiam a configuração por causa de uma fonte de alimentação subdimensionada.

Responda ao comentário de omid:

Um dos meus colegas implementou um algoritmo de computação sistólica em um Virtex-6 LXT240. A entrada de dados foi fornecida pela Gigabit Ethernet. Devido à abordagem sistólica, o FPGA não fez quase nada se não houvesse dados no intervalo de entrada ou principalmente todos os flip-flops do FPGA estavam alternando com 200 MHz se um novo quadro Ethernet chegasse. Esse desequilíbrio na computação fez com que os circuitos de fonte de energia da TI desligassem a placa ML605, que só poderia ser recuperada desse estado com a chave de alimentação principal.

Demos esse projeto ao departamento de engenharia elétrica da nossa universidade e eles descobriram que não há como ajustar os coeficientes do regulador com base nos capacitores instalados.

Sim, pode-se dizer: design ruim ou usar fifos maiores ou ...

A solução de meus colegas foi uma utilização reduzida de FPGA de 80%.

No entanto, uma placa de prototipagem e um design de referência devem ser capazes de lidar com cargas de trabalho extremas, especialmente se essa placa tiver um FPGA que não tenha um uso de energia tão regular quanto uma CPU.

Paebbels
fonte
Você pode explicar o que você quer dizer com "subdimensionado" que eu deveria estar ciente?
omid