O que acontece quando um FPGA é ligado e deixado desconfigurado?


10

Estou tentando obter um entendimento geral sobre o que acontece se você deixar um FPGA não programado por um longo período de tempo.

Suponha que você tenha um FPGA e o deixe sem programação por um longo período de tempo (alguns minutos a horas após a inicialização), ou seja, sem fluxo de bits nele, isso é ruim para o dispositivo? É recomendável ter algum fluxo de bits em um FPGA ligado o tempo todo? Qual é a opinião geral sobre isso?

Os resultados são diferentes em diferentes dispositivos ou fabricantes (Xilinx vs. Altera vs. outros)?


Informação adicional:

Eu tenho uma placa SoC personalizada que usa um FPGA Xilinx Virtex-6. Eu também tenho um Xilinx ML605 que eu uso para fins de referência.

Placa personalizada: eu ligo a placa. Percebo que tenho um curto período de tempo para programá-lo usando o XMD (Xilinx Microprocessor Debugger). Se eu perder a janela de 20 a 30 segundos, preciso desligar e ligar a placa antes de tentar novamente. Isso não acontece com um ML605.

Quando tento programar o quadro personalizado no XMD, recebo algo como:

Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.

Diz-me o que pensas.


11
Você enfatiza em sua pergunta e em sua edição o "longo período de tempo". Realmente importa se são alguns segundos ou algumas horas? Eu não acho que ele faz ..
m.Alin

Estou vendo um fenômeno em uma placa FPGA personalizada, onde recebo uma janela de programação de 20 a 30 segundos. Se eu não programar nesta janela, não consigo programar com êxito. O tema central da minha pergunta não é a duração do tempo, mas para entender o fenômeno.
boffin

Você consegue se conectar ao dispositivo? Ou simplesmente falha quando você tenta programar? Qual é o erro que o programador está dando?
embedded.kyle

11
Você está programando o FPGA diretamente via JTAG ou carrega primeiro o chip Flash e depois permite que o FPGA configure isso?
ajs410

@fpga_boffin, você poderia adicionar esses detalhes à sua pergunta, por favor?
Jon L

Respostas:


7

Esta é uma pergunta interessante. Por experiência pessoal, deixei os FPGAs ligados por horas em um estado não programado enquanto realizava verificações no restante dos circuitos quando uma nova placa entra na casa de montagem. Não notei nenhum efeito prejudicial ao fazê-lo. Mas sinceramente nunca pensei nisso.

Olhei em volta para tentar encontrar uma recomendação de um fabricante de FPGA, mas não consegui encontrar uma. A única declaração que encontrei sobre esse estado é de um white paper do Lattice e diz respeito ao design do próprio FPGA e não como ele deve ser usado:

O consumo de energia estático pré-programado do dispositivo estático é a quantidade de energia consumida pelo FPGA antes do dispositivo ser programado. Para o consumo de energia do dispositivo em repouso, o FPGA está em um estado não programado, mas foi energizado. É importante que o dispositivo não consuma energia significativa durante esse período, pois conceitualmente o dispositivo FPGA pode consumir energia excessiva e potencialmente desligar as fontes de alimentação, impedindo a placa de inicializar com êxito a si mesma e ao sistema.
Portanto, o fornecedor do FPGA deve projetar cuidadosamente os transistores com baixa pegada estática de potência, sem comprometer as áreas onde é necessário desempenho superior (por exemplo, E / S e SERDES).

A Xilinx também menciona qual é a corrente quieta para que você possa projetar sua fonte de alimentação de acordo. Mas não menciona qual é o efeito no dispositivo de deixá-lo em tal estado:

A energia estática ou quieta é dominada principalmente pela corrente de fuga do transistor. Quando essa corrente é listada nas folhas de dados, é listada como ICCINTQ e é a corrente consumida pela fonte VCCINT que alimenta o núcleo do FPGA.

Eu ficaria muito interessado em saber se alguém sofreu danos em um dispositivo por deixá-lo em um estado inativo. Mas acho que, desde que a fonte de alimentação seja adequada ao dispositivo, não haverá problema.


6

Estou referenciando o folha de dados Spartan 3 , pois esse é o FPGA com o qual estou mais familiarizado.

Se você observar o capítulo 2 (Descrição funcional), a seção "Configuração" possui alguns diagramas de fluxo. A Figura 27 (página 50) mostra o diagrama de fluxo para carregar do Flash. A Figura 28 mostra o diagrama de fluxo JTAG.

Aqui está um breve resumo.

1) Aguarde Vccint, Vccaux e Vcco atingir os níveis necessários.

2) Limpar travas de configuração

3) Aguarde INIT_B subir alto. INIT_B é uma saída de dreno aberto que um mestre externo pode manter baixo para atrasar a configuração.

4) Pinos do modo de amostra. Isso determina se você deseja carregar via JTAG ou Flash, e se o Flash, se o FPGA ou o Flash é o Master.

5) Carregar quadros de dados de configuração.

6) Verifique se o CRC para os quadros de dados está correto. Se NÃO estiver correto, o FPGA reduzirá INIT_B baixo para indicar um erro de CRC e interromperá a inicialização.

Provavelmente, a etapa 5 é onde está sua pergunta real - o que acontece se não houver nada para carregar? Bem, você não deve chegar à Etapa 5 se estiver fazendo as coisas certas. O chip Flash manterá o INIT_B baixo até que esteja pronto para fornecer dados ao FPGA. Se você estiver usando JTAG, não tenho certeza se o seu programador JTAG manterá o INIT_B baixo, mas quando foi programar o FPGA, ele certamente afirmaria PROG_B (diminuindo), o que faz com que o FPGA volte para o passo 2.

Se eu fosse você, selecionaria o sinal INIT_B durante a inicialização para ver o que está acontecendo. Se começar baixo, subir alto e voltar a descer novamente, o FPGA interrompeu a sequência de inicialização e você provavelmente precisará confirmar PROG_B para redefinir o FPGA.


Sua resposta não diz nada sobre o estado interno do FPGA antes da etapa 5, que é o que o OP deseja saber.
stevenvh

Etapa 2. Limpe as travas de configuração. Etapa 3, aguardando INIT_B. Também discuto que tipo de decisão o FPGA pode tomar sempre que encontrar que não há dados de configuração a serem carregados (INIT_B ficando baixo para indicar um erro de CRC).
ajs410

11
Minhas desculpas, a folha de dados que eu estava referenciando era por volta de 2005 e foi atualizada em 2009. No entanto, se você tivesse lido meu comentário completamente, seria possível encontrá-lo. Capítulo 2, Descrição Funcional, sob o cabeçalho Configuração. O link foi atualizado para apontar para a folha de dados mais recente, bem como os novos números de página.
ajs410

0

A configuração padrão foi projetada para ser o mais passiva possível, a fim de tornar o dispositivo universalmente utilizável.

Para a série Altera Cyclone (com a qual tenho mais experiência), isso significa

  • os pinos de E / S são levemente puxados para o VCCIO (para manter os ICs com linhas ativas de chip com baixo ativo fora do barramento),
  • a saída CONF_DONE está baixa (você pode conectá-lo ao pino de redefinição de outros ICs para mantê-los redefinidos até que uma configuração seja carregada, além de restaurá-los ao estado conhecido ao reconfigurar) e
  • as entradas do relógio não são encaminhadas para as redes do relógio.

Outros tipos de FPGA devem ser igualmente inativos e fornecer saídas não invertidas e invertidas, indicando o status da configuração para o restante da placa.

Deixar o dispositivo nesse estado é inofensivo, pois o núcleo está bastante isolado do mundo exterior e apenas as flexões podem ter uma pequena corrente através deles.

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.