Aufgrund eines Problems mit dem DisplayPort IP-Core Hardware-Demo-Beispieldesign (Version 16.0 und früher) wird möglicherweise kein Image angezeigt, wenn der DisplayPort IP-Core-Sink mit einer Intel® GPU verbunden ist. Während die RX- und TX-MSA-Werte möglicherweise korrekt aussehen, wird auf dem Monitor kein Bild angezeigt. Dies ist auf ein Missverhältnis zwischen den taktenden Modi zurückzuführen, die von der Intel GPU und der DisplayPort IP-Kernquelle verwendet werden. Intel GPUs verwenden synchrones Clocking, während die DisplayPort IP-Kernquelle das Clocking verwendet. Dies verursacht zwei Probleme mit dem Hardware-Demo-Beispieldesign.
Zunächst verwendet das Hardware-Demo-Beispieldesign einen festen NVID-Wert für das Pixel-Takt-Wiederherstellungsmodul (PCR). Diese Einstellung ist für GPUs gedacht, die Clocking verwenden und nicht mit einer Intel GPU funktionieren.
Zweitens setzt die Intel GPU aufgrund ihrer Taktungsmodi Bit 0 des RX MSA MISC0-Registers auf 1, während die DisplayPort IP-Kernquelle Bit 0 des TX MSA MISC0-Registers auf 0 setzt. Während es innerhalb der Spezifikation liegt, dass sich diese Bits unterscheiden, erwartet die Nios® II Software (insbesondere der EDID-Pass-through-Code), dass RX MSA MISC0 genau mit TX MSA MISC0 übereinstimmt, und deaktiviert die DisplayPort IP-Kernquelle, falls eine Diskrepanz vorliegt.
Ändern Sie zunächst die Verilog-Datei der obersten Ebene, um die Deaktivierung mit einem festen NVID-Wert für das PCR-Modul zu erreichen. Ändern Sie im Hauptprojektverzeichnis die Datei a10_dp_demo.v , um eine Zeile zu ändern.
Von:
defparam bitec_clkrec_i.FIXED_NVID = 1;
An:
defparam bitec_clkrec_i.FIXED_NVID = 0;
Zweitens ändern Sie die Nios II-Software, um Bit 0 zu ignorieren, wenn Sie die RX MSA MISC0- und TX MSA MISC0-Register vergleichen. Ändern Sie im Hauptprojektverzeichnis die Datei main.c , um zwei Zeilen zu ändern,
Von:
rx_misc0 = IORD (btc_dprx_baseaddr(0), DPRX0_REG_MSA_MISC0) und 0xFFF F;
tx_misc0 = IORD(btc_dptx_baseaddr(), DPTX0_REG_MSA_MISC0) & 0xFFF F;
An:
rx_misc0 = IORD (btc_dprx_baseaddr(0), DPRX0_REG_MSA_MISC0) und 0xFFF E;
tx_misc0 = IORD (btc_dptx_baseaddr(), DPTX0_REG_MSA_MISC0) und 0xFFF E;
Nachdem Sie diese Änderungen vorgenommen haben, führen Sie das Skript build_sw.sh aus, um das Softwareprojekt neu zu erstellen, und kompilieren Sie das Projekt dann in der Quartus® Prime Software. Alternativ können Sie das Skript runall.tcl erneut ausführen, wodurch beide dieser Schritte für Sie ausgeführt werden.
Beide Probleme wurden im Quartus Prime Software v16.1 DisplayPort Hardware-Demo-Beispieldesign behoben.