Placa FPGA para Raspberry Pi


Há algum tempo, o painel do Raspberry Pi3 apareceu à minha disposição. Suas capacidades são realmente impressionantes: um processador quad-core rápido e codecs / decodificadores de hardware embutidos de áudio / vídeo / jpeg, Ethernet / WIFI, USB2, HDMI ... É um computador real. É muito bacana o fato de haver um conector GPIO, que permite que diferentes artesãos conectem algo que não seja padrão e especial. Há um grande número de placas de expansão diferentes instaladas neste conector: monitores, telas de LED, adaptadores para motores, placas ADC ...

Gostaria de falar um pouco sobre a placa FPGA do Mars Rover 2RPI, que, como outras placas de expansão, se conecta ao slot GPIO da baga e adiciona propriedades completamente novas ao nosso microcomputador.

A taxa é bem simples. Instalado nele:

  1. FPGA Cyclone IV EP4CE6E22C8
    • elementos lógicos 6272;
    • memória incorporada 270Kbps;
    • Multiplicadores 15 (18x18);
    • PLL 2;
  2. Quatro LEDs
  3. Três botões
  4. Oscilador de cristal de 100MHz;
  5. Possibilidade de instalar um chip EPCS4 (caso a placa seja usada de forma autônoma);
  6. Conector JTAG (caso a placa seja usada de forma autônoma);
  7. Dois conectores de 40 pinos em cada um dos 28 conectores GPIO do usuário compatíveis com Raspberry;
  8. Um conector de 40 pinos para conectar ao Raspbery, no qual você pode usar 24 ou 20 GPIOs (dependendo se o chip EPCS4 está instalado ou não).

A placa rover2RPI da Mars não é instalada acima da placa Raspberry Pi, mas de lado, através de um adaptador especial. Isso é feito intencionalmente. O Raspberry Pi3 já está bastante quente ao carregar 4 núcleos; cobrir a placa de cima não parece muito humano em termos de refrigeração.

Então você pode conectar a placa Raspberry Pi2 / Pi3:



E aqui está o Pi-zero:



É possível (mas isso não é exato), a mesma placa de expansão pode ser usada com o OrangePi.

A primeira aplicação desta placa que vem à mente é dobrar o número de sinais GPIO: havia um conector e dois. Você só precisa criar e enviar o projeto desejado para o FPGA, bem, você terá que gerenciar as entradas e saídas de alguma maneira especial, existem muitas opções: porta serial, SPI, GPIO, você pode usar DMA ...

É possível fazer o download do FPGA da placa Mars rover2RPI diretamente do Raspberry por meio de sinais JTAG, que, é claro, são exibidos no GPIO

  • tck → GPIO7
  • tms → GPIO0
  • tdi → GPIO11
  • tdo ← GPIO1

Existe um projeto de código-fonte aberto OpenOCD, depurador e depurador, que permite usar o Raspberry como programador JTAG. O OpenOCD é um servidor, você pode iniciá-lo e, em seguida, conectar-se a ele remotamente por telnet e, usando o comando “svf”, você pode carregar a imagem do projeto compilado no FPGA. Saiba mais sobre o OpenOCD no raspberry pi .

Aqui está apenas uma demonstração em vídeo:



O primeiro projeto de "teste" da placa rover2RPI da Mars já está pronto, embora ainda não seja muito impressionante em sua funcionalidade. O primeiro projeto para FPGAs geralmente é sempre "piscando um LED", como um "olá mundo!" mundo do microcontrolador e FPGA.
Sua fonte pode ser acessada no github: github.com/marsohod4you/m2rpi_first

Mas aqui, mesmo neste caso simples, já existe uma interação entre o FPGA e o microcomputador. No raspberry, você pode enviar bytes pela porta serial para o FPGA que altera a velocidade do LED. Além disso, o primeiro "projeto de teste" FPGA aceita bytes da porta serial, modifica (adiciona um) e envia de volta. Claro, bastante primitivo, mas já a interação dos dois sistemas FPGA e do processador.

Demonstração em vídeo:



Esta é a minha primeira experiência de acesso ao Raspberry FPGA. Eu acho que seria interessante tentar fazer projetos realmente complexos, como capturar quadros de uma câmera de vídeo em framboesa e transferi-los via DMA para o FPGA para processamento. Eu acho que pode haver muitos projetos interessantes com essa placa de expansão.

Source: https://habr.com/ru/post/pt408645/


All Articles