Devido a um problema com o design de demonstração de demonstração do núcleo de hardware DisplayPort IP (versão 16.0 e anterior), uma imagem pode não ser vista quando o dissipador de núcleos IP DisplayPort está conectado a uma GPU Intel®. Embora os valores de MSA RX e TX podem parecer corretos, nenhuma imagem será exibida no monitor. Isso ocorre devido a uma incompatibilidade entre os modos de clocking usados pela GPU Intel e a fonte do núcleo Ip DisplayPort. As GPUs Intel usam clock síncrono, enquanto a fonte do núcleo Ip DisplayPort usa clocking assíncrono. Isso causa dois problemas com o design de exemplo de demonstração de hardware.
Primeiro, o design de exemplo de demonstração de hardware usa um valor NVID fixo para o módulo de recuperação de pixel clock (PCR). Esta configuração destina-se a GPUs que usam clocking assíncrono e não funcionarão com uma GPU Intel.
Em segundo lugar, devido aos seus modos de clock, a GPU Intel define bit 0 do registro MSA MISC0 RX para 1, enquanto a fonte do núcleo IP DisplayPort define bit 0 do registro TX MSA MISC0 para 0. Embora a especificação desses bits seja diferente, o software Nios® II (especificamente o código EDID pass through) espera que o RX MSA MISC0 seja exatamente compatível com o TX MSA MISC0, e desabilita a fonte do núcleo DisplayPort IP se houver uma incompatibilidade.
Primeiro, modifique o arquivo Verilog de alto nível para desabilitar usando um valor NVID fixo para o módulo PCR. No diretório principal do projeto, modifique o arquivo a10_dp_demo.v para alterar uma linha,
De:
defparam bitec_clkrec_i.FIXED_NVID = 1;
Para:
defparam bitec_clkrec_i.FIXED_NVID = 0;
Em segundo lugar, modifique o software Nios II para ignorar o bit 0 ao comparar os registros MSA MISC0 RX e TX MSA MISC0. No diretório principal do projeto, modifique o arquivo main.c para alterar duas linhas,
De:
rx_misc0 = IORD(btc_dprx_baseaddr(0), DPRX0_REG_MSA_MISC0) e 0xFFFF;
tx_misc0 = IORD(btc_dptx_baseaddr(), DPTX0_REG_MSA_MISC0) e 0xFFFF;
Para:
rx_misc0 = IORD(btc_dprx_baseaddr(0), DPRX0_REG_MSA_MISC0) e 0xFFFE;
tx_misc0 = IORD(btc_dptx_baseaddr(), DPTX0_REG_MSA_MISC0) e 0xFFFE;
Após fazer essas modificações, execute o script build_sw.sh para reconstruir o projeto de software e, em seguida, recompile o projeto no software Quartus® Prime. Alternadamente, você pode executar o script runall.tcl, que executará ambas essas etapas para você.
Ambos esses problemas foram corrigidos no design de demonstração de demonstração de hardware do software Quartus Prime v16.1 DisplayPort.