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.
fonte
Respostas:
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:
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:
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.
fonte
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.
fonte
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
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.
fonte