一、硬件搭建
此处简单略过一下,在vivado中按照硬件设计进行连线即可。我的vivadoy硬件设计如下:
二、vitis 中的实现
此处使用了AMD赛灵思官方提供的示例程序。具体流程如下:
1、使用vivado中生成的XSA文件,在vitis中建立platform工程,此处不赘述。
2、编译platfor工程后,双击platform.spr文件,在如下图所示的位置,点击board support package。
3、在board support package中,找到psu_dpdma,导入示例工程
4、正常情况下,直接编译示例应用工程,烧入开发板,屏幕上应该显示红色和绿色的横条。
但是这里可能出现两个问题:
问题1:debug模式下,可能程序debug结束,无法与显示器完成所有通信,导致DP无法显示图像。
解决方法: 可以在main函数中写一个while(1)的循环,保证程序不退出,问题就得以解决。
int main()
{int Status;Xil_DCacheDisable();Xil_ICacheDisable();xil_printf("DPDMA Generic Video Example Test \r\n");Status = DpdmaVideoExample(&RunCfg);if (Status != XST_SUCCESS) {xil_printf("DPDMA Video Example Test Failed\r\n");return XST_FAILURE;}while(1){xil_printf("Successfully ran DPDMA Video Example Test\r\n");sleep(2);}return XST_SUCCESS;
}
问题2:有时候,对于某些显示器无法显示图像,可以采取改变输出图像分辨率和帧率的方式,尝试不同的图像分辨率,可能就会正常显示了。可以在下面所示的代码中改变图像分辨率和帧率。
void InitRunConfig(Run_Config *RunCfgPtr)
{/* Initial configuration parameters. */RunCfgPtr->DpPsuPtr = &DpPsu;RunCfgPtr->IntrPtr = &Intr;RunCfgPtr->AVBufPtr = &AVBuf;RunCfgPtr->DpDmaPtr = &DpDma;RunCfgPtr->VideoMode = XVIDC_VM_1920x1080_60_P;RunCfgPtr->Bpc = XVIDC_BPC_8;RunCfgPtr->ColorEncode = XDPPSU_CENC_RGB;RunCfgPtr->UseMaxCfgCaps = 1;RunCfgPtr->LaneCount = LANE_COUNT_2;RunCfgPtr->LinkRate = LINK_RATE_540GBPS;RunCfgPtr->EnSynchClkMode = 0;RunCfgPtr->UseMaxLaneCount = 1;RunCfgPtr->UseMaxLinkRate = 1;
}
三、板上显示结果
DP显示正常。