Chronicles MicroZed: Controlador DisplayPort – Parte Um

Adam Taylor Segue 17 de jul · 5 min ler

Muitos dos projetos em que trabalho para clientes são baseados em aplicativos de processamento de imagem e visão incorporados. Uma das coisas que eu gosto nesses projetos é ver os resultados, visivelmente, e espero que isso melhore à medida que o projeto amadurece.

Quando se trata de exibir a imagem, existem vários padrões potenciais que podem ser usados. No entanto, se eu estiver usando um dispositivo Zynq MPSoC, muitas vezes tento usar o controlador DisplayPort no PS, pois é muito poderoso e conveniente.

Diagrama de blocos concluído

Se você não se deparou com o Controlador DisplayPort antes, como veremos, ele é muito capaz e suporta resoluções de até ultra-alta definição em até 30 quadros por segundo. Embora neste exemplo, vamos ser limitados pelas resoluções suportadas do meu Monitor DisplayPort.

Quando se trata de trabalhar com o controlador DisplayPort, o vídeo de saída pode ser gerado a partir da memória PS DDR ou da lógica programável (PL). Na terminologia MPSoC DisplayPort, eles são chamados de feeds de imagem ao vivo e não vivo, respectivamente. Um exemplo simples de um vídeo não ao vivo seria um Linux gerando um desktop, enquanto um exemplo de vídeo ao vivo poderia resultar de uma cadeia de processamento de imagem no PL.

O controlador DisplayPort é capaz de suportar até seis fontes não-ativas da memória PS DDR. Também é capaz de suportar vídeo e gráficos ao vivo do PL, é claro, também podemos misturar os feeds de vídeo ao vivo e não ao vivo.

Para poder suportar uma ampla gama de aplicações, o Controlador DisplayPort suporta 6, 8, 10 ou 12 bits por componente, além de suportar uma variedade de espaços de cores, incluindo RGB, YCrCb 4: 2: 2, YCrCb 4: 4: 4 e YCrCb 4: 2: 0.

O que é realmente interessante são os recursos adicionais fornecidos pelo controlador DisplayPort:

  • Amostragem de croma e subamostra
  • Conversão de espaço de cor
  • Mistura Alfa
  • Mixer de áudio

Tanto o vídeo final combinado quanto o áudio estão opcionalmente disponíveis para a lógica programável, se desejado.

Arquitetura do controlador DisplayPort (?: UG1085)

Fisicamente dentro do Zynq MPSoC, o controlador DisplayPort está localizado no sistema de processamento (PS).

Flexibilidade é a chave em soluções de processamento de imagem e o Controlador DisplayPort nos permite mover dados em quatro direções possíveis – memória para caminho de dados, PL para caminho de dados, PL para PL e memória para PL.

A forma como configuramos o DisplayPort Controller para esses modos será examinada quando olharmos para a criação do SW.

Para este exemplo, vamos gerar um padrão de teste no PL e enviá-lo usando o DisplayPort Controller.

Isso significa que precisamos disponibilizar a entrada de alimentação ao vivo do Controlador DisplayPort para o projeto no PL.

Fazemos isso re-customizando o MPSoC e sob a configuração do PS-PL -> Geral -> Outros e configurando o Vídeo ao vivo

Ativando a entrada de vídeo ao vivo no MPSoC

Para este exemplo, estou usando o Ultra 96 V2, assim a saída DisplayPort deve ser configurada como mostrado abaixo.

Configuração de saída Ultra96 DisplayPort

Para gerar a saída de vídeo, usaremos os seguintes blocos IP do catálogo Vivado IP.

  • Test Pattern Generator – Gerará o padrão de teste a ser produzido. Vamos controlar isso usando o software que executamos no sistema de processamento na interface do AXI Lite.
  • Controlador de Sincronismo de Vídeo – Isto irá gerar a temporização do vídeo de saída, será configurável usando SW através da Interface AXI Lite
  • AXI Stream to Video Out – Transformará o padrão de teste recebido como um fluxo AXI em um sinal de vídeo com tempo apropriado, graças ao Controlador de Sincronismo de Vídeo. Para garantir que a largura do pixel esteja alinhada com o controlador DisplayPort, defina isso para 12 bits por pixel.
  • ILA – Dois analisadores lógicos integrados estão presentes para garantir que o padrão de teste Generator gere corretamente a imagem de teste e o fluxo AXI para saída de vídeo, bloqueia corretamente.
  • Clock Wizard – Gera a frequência de clock de pixel de 74.250 MHz, que é o clock de pixel para 1280 por 720 a 60 Hz.

Como mencionado no fluxo AXI para o ponto de saída de vídeo acima, precisamos garantir o alinhamento correto do vídeo com a entrada de vídeo ao vivo do controlador DisplayPort.

A tabela abaixo mostra o formato de pixel para cada espaço de cores suportado.

Formato de pixel vs. espaço de cor

Quando juntei tudo isso, o diagrama de blocos abaixo foi criado para implementação. Com exceção das configurações e conexões do Pixel Clock, todas foram interconectadas usando os assistentes de automação de conexão e automação de bloco.

Diagrama de blocos concluído

A implementação deste design mostra que usamos apenas uma pegada lógica muito pequena, o que é ideal, pois significa que podemos usar o restante para implementar o pipeline de processamento de imagem.

Agora que temos o design do hardware, analisaremos da próxima vez a estrutura de software necessária para colocar isso em funcionamento e exibir uma imagem na tela.