Como utilizar a porta HDMI no FPGA (básico)

8

Duas questões.

Eu tenho um FPGA Xilinx Spartan 6 que só tem entradas e saídas HDMI. Existe algum tipo de guia ou código pré-escrito que eu possa usar para começar a enviar imagens para a tela? Não tenho ideia de como começar e não consegui encontrar recursos.

Segundo, a razão pela qual estou fazendo isso é porque quero usar e modificar o código Atari 2600 que um cara implementou em um Spartan 3E com VGA. É possível adaptar facilmente o aspecto de vídeo do meu projeto?

Qualquer ajuda, recursos ou conselhos seria muito apreciada!

ballaw
fonte
Este é um conselho de desenvolvimento comercial? se sim, qual modelo e verifique os designs de referência que acompanham o produto.
Davidd 11/03/12
Este é o quadro: digilentinc.com/Products/… Não veio com nada.
ballaw
@ ballaw - Os produtos Digilent vêm com um suporte muito bom. Role até a parte inferior da página à qual você acabou de vincular e você verá toda uma documentação e exemplos de projetos on-line: i.stack.imgur.com/F0TgY.png . Online agora conta como "vem com ele". Você também pode procurar as folhas de dados de outras partes no quadro, como o buffer HDMI XC6SLX45 FPGA e TMDS141RHAR HDMI, que estão em outras partes da Internet.
Kevin Vermeer

Respostas:

12

A placa Atlys usa entradas TDMS, portanto, você precisará de um decodificador HDMI que aceite essas entradas e produz VSYNC, HSYNC, DE e DATA. O Xilinx detalha o processo de codificação e decodificação DVI em algumas notas de aplicação. Cada um deles vem com um código de exemplo, é necessário o login xilinx:

O código de exemplo está no verilog, embora converter o nível superior em VHDL, se você preferir, seja um exercício relativamente trivial.

Aqui está uma figura tirada da primeira nota de aplicação mostrando a premissa básica do receptor:

da nota do aplicativo Xilinx

Como o Spartan 6 possui hardware SERDES embutido, eles podem ser usados ​​como parte do processo de desserialização. Há um processo de sincronização que recupera o relógio e garante que todos os canais estejam sincronizados. Finalmente, a decodificação 8b / 10b é aplicada para produzir os dados do canal RGB.

Depois que os sinais de vídeo forem recuperados, você poderá encaminhar esses sinais para o processamento que deseja fazer ou para um codificador que os enviará novamente pelas portas HDMI.

Se você possui a tela TFTMOD, encaminhar os dados para a tela é tão simples quanto conectar os sinais DE e DATA aos pinos FPGA apropriados. O manual de referência da placa TFT é útil para informações de tempo sobre a tela, embora eu tenha achado que o tempo de saída do desserializador estava bom.

Você pode usar o arquivo UCF deste projeto , para as restrições para o HDMI e este projeto para as restrições MODTFT, se estiver usando essa placa.

A única coisa a observar é que o exemplo do Xilinx não trata das informações EDID. Se você estiver apenas usando o quadro para encaminhar dados, poderá encaminhar as linhas EDID diretamente e chamá-lo por dia. Outros cenários podem exigir o manuseio dos dados EDID no FPGA. Basicamente, é apenas I2C. A interface I2C opencores é bastante sólida, ou você pode codificar sua própria. Tanto quanto eu sei, a tabela da Wikipedia sobre o formato de dados para o EDID 1.3 é precisa.

Stanri
fonte
4

Apenas para complementar o que uma resposta anterior explicou:

Um transmissor DVI / HDMI pode ser um bom ponto de partida, pois você pode obter um vídeo direto.

A transmissão de vídeo HDMI / DVI através do link TMDS é logicamente dividida em estágios, como mostra a Figura 1: Projeto do transmissor TMDS de implementação de uma interface de vídeo TMDS no Spartan-6 FPGA

insira a descrição da imagem aqui

  1. Codificadores TMDS: converte dados de pixel de uma fonte de vídeo, dados auxiliares / áudio HDMI e HSYNC e VSYNC em três fluxos de símbolos de 10 bits

  2. Os serializadores (10: 5 Gear Box e OSERDES2 5: 1 Convert) executam em dois estágios uma conversão paralela de serial de 10 bits nos três fluxos e os enviam para três canais de pares de saída diferencial (buffers TMDS).

Ambos os estágios requerem um circuito de relógio para gerar (PLL) e distribuir (BUFPLL, BUFG) os sinais do relógio (com frequências do relógio de referência de pixel e seus múltiplos) adequadamente.

Obviamente, o núcleo do transmissor é o bloco Encoders. Você pode começar com o codificador DVI devido à sua simplicidade em comparação com o HDMI. Tanto o HDMI quanto o DVI têm muitos aspectos em comum, incluindo o link físico do TMDS, o algoritmo de codificação de vídeo ativo e as definições dos tokens de controle.

A nota de aplicação também fornece 2 modelos. Um simples, mas bom para começar, é a "Geração de barras de cores SMPTE HD com tempo de vídeo programável". Ele envia um vídeo do gerador de barra de cores através de vários modos de tela que podem ser selecionados pelas chaves deslizantes. Esse design é útil porque podemos alterar o gerador de barra de cores por outra fonte de vídeo e ainda assim conseguir vídeo mantendo o bloco transmissor original.

Eu espero que isso ajude!

L30nardo SV.
fonte
2
As respostas apenas ao link são desencorajadas, porque se o Xilinx reorganizar seu site no futuro e o link ficar inoperante, não será de nenhuma ajuda para futuros visitantes. Talvez você possa adicionar alguns detalhes extras da abordagem geral descrita na nota de aplicação?
PeterJ
Obrigado, você está completamente certo. Eu adicionei mais alguns detalhes sobre isso.
L30nardo SV.
3

Aqui está o texto de um design de referência que você pode baixar na página do quadro ao qual você vinculou:

DSD-0000326 13/12/11 Este arquivo zip contém um projeto de demonstração EDK que demonstra o uso de HDMI na placa Genesys. Ele aceita uma entrada HDMI, armazena os quadros de entrada na memória e envia o buffer para outra porta HDMI. Isso é implementado usando o barramento PLB. Baixar

Você também pode ver os modelos de referência que acompanham o kit de processamento de vídeo industrial Xilinx spartan 6. http://www.em.avnet.com/en-us/design/drc/Pages/Xilinx-Spartan-6-FPGA-Industrial-Video-Processing-Kit.aspx (clique no link dos arquivos de suporte, é necessário fazer login na avnet )

Provavelmente existem mais modelos de referência para diferentes fpgas.

Além disso, a menos que você esteja implementando o áudio ou criptografia, o HDMI é basicamente o mesmo que o dvi.

Davidd
fonte
Obrigado. Eu vi isso, mas não tenho muita certeza de como usá-lo, pois ele usa o EDK, que eu não tenho porque não é gratuito. Seria uma simples questão de usar os arquivos VHD nele? Duvido, porque há muitas outras coisas no download, a maioria das quais não tenho idéia do que são.
ballaw