FPGA - Programação DIY

9

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!

Blake Lucas
fonte
Por "bitmap" você quer dizer fluxo de bits?
Eugene Sh.
Esta questão tem ser solicitado em uma encarnação diferente antes
Tensão Pico
11
No seu primeiro projeto de placa FPGA, sugiro fornecer 2 métodos de programação de dispositivos (mais o cabeçalho JTAG do fornecedor). Coloque os locais dos jumpers para permitir a troca dos pinos MODE conforme necessário. É muito fácil estragar tudo e é bom ter planos de backup. Certifique-se também de fornecer pontos de teste para INIT e DONE (ou o que o Lattice usa para indicar o estado da programação).
O Photon
2
O controle de processo necessário para montar os BGAs, especialmente os de alta contagem de pinos, é mais rígido do que algo como um QFP. O fato de haver mais bolas significa que há uma maior probabilidade de ponte ou conexões ruins e, uma vez que estão ocultas, você não poderá detectar problemas (a menos que tenha um raio-X) antes de executar o procedimento para verificar se possui quaisquer problemas. E se você remontar o componente, precisará revolvê-lo, o que exige mais equipamentos. FPGAs também são chips caros que você não deseja danificar. Os BGAs grandes são onde são necessários itens como pré-aquecedores de PCB.
DKNguyen 10/04/19
11
Eu costumava trabalhar em um local onde os técnicos não faziam nada além de retrabalhar o dia inteiro e tinham estações de ar quente (controle de temperatura mais rígido e mais confiável que a pistola de calor) e não conseguiam entregar os BGAs de solda com confiabilidade. Eu não acho que eles tinham um pré-aquecedor, por isso, se você quiser experimentá-lo, compre um pré-aquecedor e use um chip barato (talvez até um pacote BGA fictício em cadeia para que você possa verificar suas conexões eletricamente até acertá-lo antes de fazer o coisa real).
DKNguyen

Respostas:

12

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.

Dave Tweed
fonte
11
E alguns, como o Lattice Mach X02, têm o flash integrado, então você só precisa de alguns resistores e um conector 5x2 para conectar ao pod de programação do Lattice.
Spehro Pefhany
Eu sabia que você pode programar o flash diretamente via JTAG a partir de ferramentas como Vivado / Quartus, o que eu esperava era poder fazê-lo sem a necessidade de comprar um cabo específico do fornecedor - basta usar um FT2232H e escrever o fluxo de bits (não bitmap?). Porém, não acho que o chip seja suportado pelo Quartus e não seja abertamente suportado pelo Vivado (mesmo que eles o usem nas placas Nexys e Basys).
Blake Lucas
11
Sim, você pode programar o flash com o arquivo bit usando outros meios. Um de seus programadores para suas MCUs provavelmente pode fazê-lo. Eu sei que meu Segger J-link certamente pode.
DKNguyen 10/04/19
@Toor: Na verdade, esse não é um cabo específico do fornecedor, mas ainda possui suporte codificado nas ferramentas do fornecedor, e o Segger é um pouco mais caro que o FT2232H.
Ben Voigt
2
Praticamente todos os principais fornecedores fornecem documentação de engenharia para permitir o fluxo de bits de upload determinado para suas partes (FPGA e flashes de configuração personalizados) com ferramentas personalizadas, porque às vezes é desejável em sistemas integrados ou plataformas de teste. Pode ser mais simples usar o equipamento suportado pelo fornecedor (especialmente no início), mas eu implementei alternativas para projetos específicos várias vezes ao longo dos anos. A parte mais difícil de um projeto original da placa FPGA pode ser todo o suporte que a FPGA precisa na placa - muitos pares de potência para rotear e desviar, geralmente para várias tensões distintas.
22719 Chris Stratton
3

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.

Ben Voigt
fonte
1

Um FPGA funcionaria se eu ... conectasse a memória flash aos pinos SPI de um FPGA (com a configuração MODE definida corretamente)?

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.

Martin Rosenau
fonte
Obviamente, um cartão SD não funcionará, pois nenhum FPGA (que eu saiba) suporta SD / MMC como um protocolo de configuração. A maioria dos FPGAs segue o AT24 / AT26 / AT45.
Dmitry Grigoryev
1

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.

Dmitry Grigoryev
fonte