Estou programando microcontroladores há alguns anos e acabei de descobrir os FPGAs depois de fazer uma aula de design digital. Depois de fazer algumas pesquisas sobre diferentes FPGAs, placas de desenvolvimento etc., ainda hesito em comprá-las porque não sei como criar minha própria versão do "produto" final. Coloquei PICs, SAMs, AVRs etc. em PCBs personalizadas sem problemas, por isso não estou preocupado com isso - minha principal preocupação é programar um FPGA sem a placa do fabricante.
Minha pergunta específica: Um FPGA funcionaria se eu pegasse o arquivo de bitmap gerado pelo Quartus, Vivado, iCEcube, etc, o escrevesse em um chip de memória flash SPI começando no endereço 0 (por exemplo, através de um FT2232H) e conectasse a memória flash ao os pinos SPI de um FPGA (com a configuração MODE configurada corretamente)?
Peço desculpas pelo hipotético parcial; Tenho certeza de que é tudo o que o Diamond Programmer da Lattice faz, mas me perguntei se essa abordagem funcionaria para FPGAs de diferentes fabricantes ou se, digamos, a Quartus adicionou "revestimentos de janelas" ou cabeçalhos adicionais à memória durante a gravação.
Deixe-me saber se há algo que eu possa fazer para melhorar / esclarecer a pergunta ou se estou perdendo um grande ponto no processo de programação do FPGA. Obrigado!
fonte
Respostas:
Sim, funcionaria muito bem.
Na verdade, as ferramentas de desenvolvimento para a maioria dos FPGAs permitem programar o flash externo diretamente através da própria conexão JTAG do FPGA, eliminando a necessidade de uma interface de programação separada para o flash.
fonte
Quando você diz "o arquivo de bitmap [sic] [sic] gerado por", a resposta é Sim, desde que você escolha o correto - você cometeu um pequeno erro usando o artigo definido, pois não há apenas um arquivo gerado .
Por exemplo, o Quartus pode produzir arquivos SOF, POF e JIC. O último é o que você usa para programação indireta via FPGA JTAG. Não seria útil escrever isso no flash SPI. O SOF é para carregar sobre o JTAG para executar seu design no FPGA transitoriamente. POF é o que você precisa carregar no chip flash.
Consulte FPGA: arquivo de objeto Bitstream vs. SRAM para obter muitas informações úteis sobre o significado dos diferentes arquivos para cada um dos diferentes fornecedores.
fonte
Se eu entendi sua pergunta corretamente, você deseja gravar a configuração do FPGA (por exemplo, seu modelo HDL compilado) em uma EIPROM SPI ou SPI Flash e deseja que o FPGA se programe usando os dados no SPI IC.
(Se eu entendi a resposta de Dave Tweed corretamente, ele entendeu sua pergunta de uma maneira diferente.)
Pelo menos muitos dispositivos de memória Flash SPI NÃO funcionariam porque os ICs da memória Flash SPI exigem que uma determinada forma de onda (por exemplo, o endereço a ser lido) seja enviada para que os dados sejam lidos no IC.
Essa forma de onda não é a mesma para todos os dispositivos de memória Flash. Mesmo ao olhar apenas para os cartões de memória SD (que também podem ser usados como memória Flash SPI), encontramos duas variantes que exigem que uma forma de onda diferente seja enviada ao cartão antes que o cartão leia os dados.
Ao definir os pinos de modo do FPGA corretamente, o FPGA enviará alguma forma de onda que instrui algum dispositivo de memória serial a enviar os dados. No entanto, como ICs diferentes exigem formas de onda diferentes, a forma de onda não será compreendida por todos os ICs Flash, mas apenas por certos tipos.
Eu sei que a Altera produz ICs especiais de Flash ou EEPROM que são compatíveis com seus FPGAs.
fonte
Se você deseja gravar um fluxo de bits FPGA no flash sem as ferramentas de programação oficiais FPGA, provavelmente converterá o arquivo bitstream em um formato binário aberto que possa ser facilmente lido, como binário bruto, Intel HEX ou Motorola SREC ( exemplo ). Isso removerá quaisquer cabeçalhos proprietários que um fluxo de bits FPGA possa conter.
Dessa forma, você poderá programar o flash usando as ferramentas do fabricante (ou suas próprias ferramentas) ou até mesmo pedir os chips de flash pré-programados com o fluxo de bits FPGA.
fonte