Por que e como usar FPGAs Efinix para geração de imagens AI/ML Parte 2: Captura e processamento de imagens

By Adam Taylor

Contributed By DigiKey's European Editors

Nota do editor: Novas abordagens às arquiteturas FPGA trazem um controle mais refinado e maior flexibilidade para atender às necessidades de aprendizagem de máquinas (ML) e inteligência artificial (IA). A Parte 1 desta série de duas partes apresenta uma dessas arquiteturas da Efinix e como começar a usá-la em uma placa de desenvolvimento. Aqui, a Parte 2 discute a interface da placa de desenvolvimento com dispositivos externos e periféricos, como uma câmera, e como aproveitar o FPGA para remover gargalos no processamento de imagens.

Os FPGAs desempenham um papel crítico em muitas aplicações, desde o controle e segurança industrial até robótica, aeroespacial e automotiva. Graças à natureza flexível do núcleo lógico programável e aos seus amplos recursos de interface, um caso de uso crescente para FPGAs é o processamento de imagens, no qual o aprendizado de máquina (ML) pode ser implementado. Os FPGAs são ideais para implementar soluções com várias interfaces de câmera de alta velocidade, graças à sua estrutura lógica paralela. Além disso, os FPGAs também permitem o uso de um pipeline de processamento dedicado na lógica, removendo assim os gargalos de recursos compartilhados que estariam associados a soluções baseadas em CPU ou GPU.

Esta segunda olhada nos FPGAs Titanium da Efinix examinará a aplicação de processamento de imagens de referência que acompanha a placa de desenvolvimento Ti180 M484 do FPGA. O objetivo é entender as partes constituintes do projeto e identificar onde a tecnologia FPGA permite a remoção de gargalos ou possibilita outros benefícios para os desenvolvedores.

O projeto de referência baseado no Ti180 M484

Conceitualmente, o projeto de referência (Figura 1) recebe imagens de várias câmeras MIPI (Mobile Industry Processor Interface), executa o buffer de quadros no LPDDR4x e, em seguida, gera as imagens em um display HDMI (Interface multimídia de alta definição). Uma placa de mezanino FPGA (FMC) e quatro interfaces Samtec QSE na placa são usadas para fornecer as entradas da câmera e a saída HDMI.

Imagem do projeto de referência Efinix Ti180 M484Figura 1: Conceitualmente, o projeto de referência Ti180 M484 recebe imagens de várias câmeras MIPI, executa o buffer de quadros no LPDDR4x e, em seguida, gera as imagens em um display HDMI. >(Fonte da imagem: Efinix)

A placa de expansão FMC para QSE é usada em conjunto com a placa filha HDMI para fornecer o caminho do vídeo de saída, enquanto três conectores QSE são usados para fazer a interface com as câmeras MIPI DFRobot SEN0494. Se não houver várias câmeras MIPI disponíveis, uma única câmera poderá ser usada fazendo um ciclo de volta no canal de uma única câmera para simular câmeras adicionais.

Em um nível mais amplo, esta aplicação pode parecer simples. No entanto, receber vários fluxos MIPI de alta definição (HD) em uma alta taxa de quadros é um desafio. É nesse ponto que a tecnologia FPGA é vantajosa, pois permite que os projetistas utilizem vários fluxos MIPI em paralelo.

A arquitetura do projeto de referência aproveita as estruturas de processamento paralelo e sequencial com o FPGA. As estruturas paralelas são usadas para implementar o pipeline de processamento de imagens, enquanto um processador RISC-V fornece o processamento sequencial usado para as tabelas de pesquisa (LUTs) do FPGA.

O pipeline de processamento de imagens pode ser dividido em dois elementos em muitos sistemas de processamento de imagens baseados em FPGA, ou seja, os fluxos de entrada e saída. O fluxo de entrada é conectado à interface da câmera/sensor, e as funções de processamento são aplicadas à saída do sensor. Essas funções podem incluir conversão Bayer, balanço de branco automático e outros aprimoramentos. No fluxo de saída, a imagem é preparada para exibição. Isso inclui a alteração dos espaços de cores (por exemplo, RGB para YUV) e o pós-processamento para o formato de saída desejado, como HDMI.

Em geral, a cadeia de processamento da imagem de entrada opera na taxa de clock do pixel do sensor. Isso tem uma temporização diferente da cadeia de saída, que é processada na frequência de exibição de saída.

Um buffer de quadro é usado para conectar a entrada ao pipeline de processamento de saída, que geralmente é armazenado em uma memória externa de alto desempenho, como LPDDR4x. Esse buffer de quadros é desacoplado entre os pipelines de entrada e saída, permitindo o acesso ao buffer de quadros por meio de acesso direto à memória na frequência de clock apropriada.

O projeto de referência do Ti180 usa uma abordagem semelhante aos conceitos descritos acima. O pipeline de processamento das imagens de entrada implementa um núcleo de propriedade intelectual (IP) do receptor MIPI de interface serial da câmera 2 (CSI-2), que é desenvolvido com base na entrada/saída (E/S) compatível com a camada física MIPI (MIPI D-PHY) do FPGA Titanium. MIPI é uma interface desafiadora, pois usa sinalização diferencial e de terminação simples no mesmo par diferencial, além de comunicações de baixa e alta velocidade. A integração do MIPI D-PHY na E/S do FPGA reduz a complexidade do projeto da placa de circuito e, ao mesmo tempo, reduz a lista de materiais (BOM).

Com o fluxo de imagem da câmera recebido, o projeto de referência converte a saída do MIPI CSI-2 RX em um fluxo AXI (Advanced eXtensible Interface). Um fluxo AXI é uma interface unidirecional de alta velocidade que fornece um fluxo de dados de um mestre para um escravo. Os sinais de handshaking para transferência entre um mestre e um escravo são fornecidos (tvalid e tready) junto com sinais de banda lateral. Esses sinais de banda lateral podem ser usados para transmitir informações da temporização da imagem, como o início do quadro e o fim da linha.

O fluxo AXI é ideal para aplicações de processamento de imagens e permite que a Efinix forneça uma variedade de IPs de processamento de imagens que podem ser facilmente integrados à cadeia de processamento, conforme exigido pela aplicação.

Após serem recebidos, os dados de imagem MIPI CSI-2 e os sinais de temporização são convertidos em um fluxo AXI e inseridos em um módulo de acesso direto à memória (DMA), que escreve o quadro de imagem no LPDDR4x e atua como buffer de quadros.

Esse módulo de DMA opera sob o controle do núcleo RISC-V no FPGA dentro de um sistema sobre chip (SoC) Sapphire. Esse SoC fornece controle, como parar e iniciar escritas do DMA, além de fornecer ao canal de escrita do DMA as informações necessárias para escrever corretamente os dados da imagem no LPDDR4x. Isso inclui informações sobre o local da memória e a largura e a altura da imagem definidas em bytes.

O canal de saída no projeto de referência lê as informações de imagem do buffer de quadros no LPDDR4x sob o controle do SoC RISC-V. Os dados são gerados pelo IP do DMA como um fluxo AXI, que é então convertido do formato RAW fornecido pelo sensor para o formato RGB (Figura 2) e preparado para saída pelo transmissor HDMI ADV7511 da Analog Devices na placa.

Imagem das imagens de amostra geradas pelo projeto de referênciaFigura 2: Exemplo de imagens geradas pelo projeto de referência. (Fonte da imagem: Adam Taylor)

O uso do DMA também permite que o RISC-V SoC Sapphire acesse as imagens armazenadas no buffer de quadros, as estatísticas abstratas e as informações da imagem. O SoC Sapphire também é capaz de escrever sobreposições no LPDDR4x para que possam ser mescladas com o fluxo de vídeo de saída.

Os sensores de imagem CMOS (CISs) modernos têm vários modos de operação e podem ser configurados para fornecer processamento no chip, além de vários formatos de saída e esquemas de clock diferentes. Normalmente, essa configuração é fornecida por meio de uma interface I²C. No projeto de referência da Efinix, essa comunicação I²C com as câmeras MIPI é fornecida pelo processador RISC-V SoC Sapphire.

A integração do processador RISC-V no FPGA Titanium reduz o tamanho geral da solução final, pois elimina a necessidade de implementar máquinas de estado complexas no FPGA, que aumentam o risco do projeto, bem como processadores externos que aumentam a lista de materiais.

A inclusão do processador também permite o suporte com IP adicional para comunicação com o cartão MicroSD. Isso permite aplicações práticas em que pode ser necessário armazenar imagens para análise posterior.

Em geral, a arquitetura do projeto de referência Ti180 é otimizada para permitir uma solução compacta, de baixo custo e de alto desempenho, que permite aos desenvolvedores reduzir o custo da lista de materiais por meio da integração do sistema.

Um dos principais benefícios dos projetos de referência é que eles podem ser usados para dar o pontapé inicial no desenvolvimento de aplicações em hardware personalizado, permitindo que os desenvolvedores utilizem elementos essenciais do projeto e o desenvolvam com as personalizações necessárias. Isso inclui a capacidade de usar o fluxo TinyML da Efinix para implementar aplicações TinyML baseadas em visão executadas no FPGA. Isso pode aproveitar tanto a natureza paralela da lógica do FPGA quanto a capacidade de adicionar facilmente instruções personalizadas aos processadores RISC-V, permitindo a criação de aceleradores dentro da lógica do FPGA.

Implementação

Conforme discutido na Parte 1, a arquitetura Efinix é única, pois usa células XLR (eXchangeable Logic and Routing) para fornecer funcionalidade de roteamento e lógica. Um sistema de vídeo, como o projeto de referência, é um sistema misto, com muita lógica e roteamento: é necessária uma lógica extensa para implementar os recursos de processamento de imagem e um roteamento extenso para conectar as células IP nas frequências exigidas.

O projeto de referência usa aproximadamente 42% das células XLR dentro do dispositivo, deixando amplo espaço para acréscimos, incluindo aplicações personalizadas, como ML na borda.

O uso da RAM de bloco e dos blocos de processamento de sinal digital (DSP) também é muito eficiente, usando apenas 4 dos 640 blocos de DSP e 40% dos blocos de memória (Figura 3).

Recursos do núcleo
Entradas 1264 / 3706
Saídas 1725 / 4655
XLRs 73587 / 172800
Blocos de memória 508 / 1280
Blocos DSP 4 / 640

Figura 3: A alocação de recursos na arquitetura Efinix mostra que apenas 42% das células XLR são usadas, deixando amplo espaço para processos adicionais. (Fonte da imagem: Adam Taylor)

Na E/S do dispositivo, a interface DDR para o LPDDR4x é usada para fornecer a memória da aplicação para o SoC Sapphire e os buffers de quadros da imagem. Todos os recursos MIPI dedicados ao dispositivo são utilizados juntamente com 50% das malhas de captura de fase (Figura 4).

Recurso periférico
DDR 1 / 1
GPIO 22 / 27
HSIO 20,0 / 59
TAP de usuário JTAG 1 / 4
MIPI RX 4 / 4
MIPI TX 4 / 4
Oscilador 0 / 1
PLL 4 / 8

Figura 4: Registro da interface e dos recursos de E/S usados. (Fonte da imagem: Adam Taylor)

A E/S de uso geral (GPIO) é usada para fornecer comunicações I²C juntamente com várias interfaces conectadas ao SoC Sapphire, incluindo NOR FLASH, USB UART e cartão SD. O HSIO é usado para fornecer a saída de vídeo de alta velocidade para o transmissor HDMI do ADC7511.

Um dos elementos cruciais ao projetar com FPGAs não é apenas a implementação e o ajuste do projeto no FPGA, mas também a capacidade de posicionar o projeto lógico no FPGA e obter o desempenho de temporização necessário quando roteado.

Já se foram os dias dos projetos de FPGA com domínio de clock único. Há vários clocks diferentes, todos executados em altas frequências no projeto de referência do Ti180. A tabela de temporização final mostra as frequências máximas alcançadas para os clocks no sistema. É nesse ponto que o desempenho de temporização solicitado também pode ser visto nas restrições (Figura 5), que têm uma frequência de clock máxima de 148,5 megahertz (MHz) para o clock de saída HDMI.

Imagem das restrições de clock para o projeto de referênciaFigura 5: Restrições de clock para o projeto de referência. (Fonte da imagem: Adam Taylor)

A implementação da temporização em relação às restrições mostra o potencial da estrutura XLR do FPGA Titanium, pois reduz o possível atraso de roteamento, aumentando assim o desempenho do projeto (Figura 6).

Temporização
Pior folga negativa (WNS) 0,182 ns
Pior folga de retenção (WHS) 0,026 ns
i_pixel_clk 211,909 MHz
tx_escclk 261,370 MHz
i_pixel_clk_tx 210,881 MHz
i_sys_clk 755,858 MHz
i_axi0_mem_clk 130,429 MHz
i_sys_clk_25mhz 234,577 MHz
i_soc_clk 187,231 MHz
i_hdmi_clk 233,918 MHz
mipi_dphy_rx_inst1_WORD_CLKOUT_HS 273,973 MHz
mipi_dphy_rx_inst2_WORD_CLKOUT_HS 262,881 MHz
mipi_dphy_rx_inst3_WORD_CLKOUT_HS 204,290 MHz
mipi_dphy_rx_inst4_WORD_CLKOUT_HS 207,598 MHz
mipi_dphy_tx_inst1_SLOWCLK 201,979 MHz
mipi_dphy_tx_inst2_SLOWCLK 191,865 MHz
mipi_dphy_tx_inst3_SLOWCLK 165,235 MHz
mipi_dphy_tx_inst4_SLOWCLK 160,823 MHz
jtag_inst1_TCK 180,505 MHz

Figura 6: A implementação da temporização em relação às restrições mostra o potencial da estrutura XLR do FPGA Titanium para reduzir o possível atraso de roteamento, aumentando assim o desempenho do projeto. (Fonte da imagem: Adam Taylor)

Conclusão

O projeto de referência Ti180 M484 demonstra claramente os recursos dos FPGAs da Efinix e do Ti180 em particular. O design aproveita várias das estruturas de E/S exclusivas para implementar um caminho de processamento de imagem complexo que suporta vários fluxos MIPI de entrada. Esse sistema de processamento de imagens opera sob o controle de um SoC Sapphire de núcleo leve, que implementa os elementos de processamento sequencial necessários da aplicação.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Adam Taylor

Adam Taylor

Adam Taylor is a world-recognized expert in the design and development of embedded systems and FPGAs for several end applications. Throughout his career, Adam has used FPGAs to implement a wide variety of solutions, from RADAR to safety critical control systems (SIL4) and satellite systems. He also had interesting stops in image processing and cryptography along the way.

Adam is a Chartered Engineer, Senior Member of the IEEE, Fellow of the Institute of Engineering and Technology, Arm Innovator, and Edge Impulse Ambassador. He is also the owner of the engineering and consultancy company Adiuvo Engineering and Training which develops embedded solutions for high-reliability, mission-critical, and space applications. Current projects include ESA Plato, Lunar Gateway, Generic Space Imager, UKSA TreeView, and several other clients across the world.

FPGAs are Adam’s first love: he is the author of numerous articles and papers on electronic design and FPGA design, including over 440 blogs and 30 million plus views on how to use the Zynq and Zynq MPSoC for Xilinx.

About this publisher

DigiKey's European Editors