Teoricamente, seria possível para um FPGA gravar uma imagem de configuração em uma memória externa e carregar a imagem de configuração da memória para se reconfigurar. Isso seria reconfiguração "não dinâmica".
Os FPGAs têm a capacidade de religar dinamicamente sua estrutura lógica? De fato, embora os flip-flops possam ter seu valor modificado, não ouvi falar da reconfiguração dinâmica das tabelas de consulta e das conexões internas que compõem a estrutura lógica.
A lógica interna do FPGA (exceto memórias) pode ser modificada dinamicamente? Se não, por que não?
Respostas:
Sim, eu sei que pelo menos o Xilinx tem peças que oferecem suporte à reconfiguração dinâmica, e os outros principais fornecedores provavelmente também.
Porém, é uma tarefa importante fazer isso, então você realmente precisa ter certeza de que precisa. Você precisa particionar fisicamente o chip em duas ou mais áreas, pelo menos uma delas não reconfigurável, e "fixar" fisicamente todas as interfaces internas entre as áreas, para que as ferramentas de síntese possam fazer todas as conexões corretas.
fonte
Existem duas abordagens gerais que podemos usar. Muitos tipos de FPGA mantêm sua configuração em travas que são buscadas de um dispositivo externo (normalmente uma EEPROM) na inicialização; o dispositivo externo não é necessário pelo FPGA após a leitura. Alterações na EEPROM durante a operação do dispositivo não terão efeito até que o FPGA seja instruído a recarregar seu conteúdo. Assim, é possível para um dispositivo que seria completamente inoperável sem um FPGA reprogramar esse FPGA durante a operação; se algo der errado durante a gravação da EEPROM, no entanto, o dispositivo poderá ficar inoperante, a menos ou até que possa ser reescrito por um dispositivo externo (um estado às vezes chamado de "empedrado").
Uma abordagem alternativa, que geralmente é útil com CPLDs cujas células EEPROM "controlam" diretamente sua funcionalidade (em vez de serem copiadas para travas) é ter um sistema que possa operar com funcionalidade limitada, mesmo quando o dispositivo programável estiver em um estado inútil. Se essa funcionalidade limitada for suficiente para reprogramar o CPLD, o dispositivo poderá estar imune a 'tijolos'. Por exemplo, um dispositivo sem fio pode usar um CPLD para controlar sua funcionalidade sem fio e outros recursos. O método normal de reprogramar o CPLD pode ser o de receber uma imagem na RAM via link sem fio e, em seguida, usar essa imagem para reprogramar o CPLD. Se estiver programando arquivos, o link sem fio poderá ser inutilizado até que o CPLD seja reprogramado. Para permitir a recuperação do sistema, no entanto, o processador pode conter um "padrão"
fonte