由于DisplayPort IP核硬件演示示例设计(版本16.0及更早版本)存在问题,当DisplayPort IP核接收器连接到英特尔®GPU时,可能无法看到图像。虽然RX和TX MSA值可能看起来正确,但显示器上不会显示任何图像。这是由于Intel GPU和DisplayPort IP核心源使用的时钟模式不匹配。英特尔GPU使用同步时钟,而DisplayPort IP核心源使用异步时钟。这会导致硬件演示示例设计出现两个问题。
首先,硬件演示示例设计使用固定的NVID值作为像素时钟恢复(PCR)模块。此设置适用于使用异步时钟的GPU,不适用于Intel GPU。
其次,由于其时钟模式,英特尔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)&0xFFF F ;
tx_misc0 = IORD(btc_dptx_baseaddr(),DPTX0_REG_MSA_MISC0)&0xFFF F ;
至:
rx_misc0 = IORD(btc_dprx_baseaddr(0),DPRX0_REG_MSA_MISC0)&0xFFF E ;
tx_misc0 = IORD(btc_dptx_baseaddr(),DPTX0_REG_MSA_MISC0)&0xFFF E ;
进行这些修改后,运行脚本build_sw.sh以重建软件项目,然后在Quartus®Prime软件中重新编译项目。或者,您可以重新运行脚本runall.tcl ,它将为您执行这两个步骤。
这两个问题都已在Quartus Prime软件v16.1 DisplayPort硬件演示示例设计中得到修复。
没有回复内容