由於 DisplayPort IP 核心硬體示範範例設計(版本 16.0 及更早版本)的問題,在 DisplayPort IP 核心信槽連接到 Intel® GPU 時,可能看不到影像。雖然 RX 和 TX MSA 值看起來可能正確,但監視器上不會顯示任何影像。這是因為 Intel GPU 與 DisplayPort IP 核心來源使用的計時模式之間不匹配。Intel GPU 使用同步計時,而 DisplayPort IP 核心來源則使用非同步計時。這會導致硬體示範範例設計的兩個問題。
首先,硬體示範範例設計使用固定的 NVID 值來進行圖元頻率復原 (PCR) 模組。此設定適用于使用非同步計時且無法與 Intel GPU 搭配使用的 GPU。
其次,由於其計時模式,Intel GPU 將 RX MSA MISC0 註冊器的位 0 設定為 1,而 DisplayPort IP 核心來源則將 TX MSA MISC0 註冊的位 0 設定為 0。雖然這些位在規格範圍內有差異,但Nios® II軟體(特別是 EDID 傳遞代碼)期望 RX MSA MISC0 與 TX MSA MISC0 完全吻合,如果不匹配,則停用 DisplayPort IP 核心來源。
首先,修改頂層 Verilog 檔案以使用 PCR 模組的固定 NVID 值停用。在主要專案目錄中,修改 檔案 a10_dp_demo.v 變更一行,
從:
defparam bitec_clkrec_i.FIXED_NVID = 1;
自:
defparam bitec_clkrec_i.FIXED_NVID = 0;
其次,在比較 RX MSA MISC0 和 TX MSA MISC0 收銀台時,修改Nios II軟體以忽略位 0。在主要專案目錄中,修改檔案 main.c 以變更兩行,
從:
rx_misc0 = IORD(btc_dprx_baseaddr(0)、DPRX0_REG_MSA_MISC0)與 F0xFFF;
tx_misc0 = IORD(btc_dptx_baseaddr()、DPTX0_REG_MSA_MISC0)與 F0xFFF;
自:
rx_misc0 = IORD(btc_dprx_baseaddr(0)、DPRX0_REG_MSA_MISC0)與 E0xFFF;
tx_misc0 = IORD(btc_dptx_baseaddr()、DPTX0_REG_MSA_MISC0)與E 0xFFF;
進行這些修改後, build_sw.sh 執行腳本以重建軟體專案,然後在 Quartus® Prime 軟體中重新電腦專案。或者,您可以重新執行腳本 runall.tcl,這將為您執行這兩個步驟。
這兩個問題都在 Quartus Prime 軟體 v16.1 DisplayPort 硬體示範範例設計中得到解決。