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!
Respostas:
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:
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.
fonte
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
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
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!
fonte
Aqui está o texto de um design de referência que você pode baixar na página do quadro ao qual você vinculou:
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.
fonte
O tutorial a seguir, usando um miniSpartan6, é muito detalhado e vale a pena dar uma olhada: http://zerocharactersleft.blogspot.com/2015/04/diy-fpga-based-hdmi-ambient-lighting.html
fonte