Post Go back to editing

ADV7511 - HPD is always LOW

Category: Hardware
Product Number: ADV7511


Hi,

I'm trying to replicate the no-os example project available here on a zedboard. My goal is simpler than the no-os project linked before, what I want to do is to show an RGB pattern on an HDMI display using a my own hw design.
Image below shows the diagram I'm using:


After setting all the peripherals needed to run my project (e.g. IIC, TTC and GIC) and configuring clocking wizard ip-core to gain the proper pixel clock and sync signals (these are right, tested by oscilloscope) I set the HDMI-TX ip-core as follow in order to gain a resolution of 640x480:


	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x400), ((hdmiVideoParam->hLineActive << 16)|hdmiVideoParam->hLineWidth));
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x404), hdmiVideoParam->hSyncWidth);
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x408), ((hdmiVideoParam->hEnableMax << 16) | hdmiVideoParam->hEnableMin));
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x440), ((hdmiVideoParam->vFrameActive) << 16) | hdmiVideoParam->vFrameWidth);
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x444), hdmiVideoParam->vSyncWidth);
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x448), (hdmiVideoParam->vEnableMax << 16) | hdmiVideoParam->vEnableMin);
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x040), 0x1);
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x04C), 0xF800);

	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x048), 0x0);
	Xil_Out32((XPAR_AXI_HDMI_TX_0_BASEADDR + 0x048), 0x3);



I add the TX library apis as the no-os project does, fixing the transmitter parameters properly:
	LastDetMode							= MODE_INVALID;
	TransmitterParm.Changed				= TRUE;
	TransmitterParm.Mode				= MODE_NONE;
	TransmitterParm.ReqOutputMode		= OUT_MODE_HDMI;
	TransmitterParm.InPixelBitsPerColor = 8;
	TransmitterParm.InPixelFormat 		= SDR_422_SEP_SYNC;
	TransmitterParm.InPixelStyle 		= 2;
	TransmitterParm.InPixelAlignment 	= ALIGN_RIGHT;
	TransmitterParm.OutPixelEncFormat 	= OUT_ENC_RGB_444;
	TransmitterParm.InColorSpace 		= TX_CS_RGB;  //modificato da TX_CS_YUV_601
	TransmitterParm.OutColorSpace 		= TX_CS_RGB;  //modificato da TX_CS_YUV_601
	TransmitterParm.AudInterface		= TX_I2S_STD; //modificato da TX_SPDIF
	TransmitterParm.DebugControl		= 1;
	MuteState							= MUTE_ENABLE;


After that my while(1) code is:
	while(1) {
		if ((ATV_GetElapsedMs(start_count, NULL)) >= HDMI_CALL_INTERVAL_MS) {
			start_count = HAL_GetCurrentMsCount();
			if (app_driver_enabled())
				ADIAPI_TransmitterMain();
		}
	}



I have no image displayed on screen and on uart output I got

Mute Audio and Video
APP: Driver Enabled
HPD changed to LOW
MSEN changed to LOW
Mute Audio and Video.


Any clues about the issue ? Can anybody helps me ?

thank you in advance,
Vincenzo



moved & edited thread
[edited by: emassa at 1:20 PM (GMT -4) on 15 Mar 2023]

I am not familiar with the zedboard.  However HPD is controlled by the sink that uses DDC +5V pin to source the HPD pin on the TX connector.  HPD can be overridden with the HPD Control register bit 0xD6[7] set to 1.  Check out paragraph 4.2.1 in the programming guide for more information on HPD and monitor sense bits