From 35988b2dba431bcfb619230ce6932dedc5b4e94c Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Tue, 30 Jun 2015 17:50:35 +0200 Subject: [PATCH] axi_hdmi_rx: Fix packed 422 mode Currently the hdmi_de_int signal is asserted one clock cycle too early in packed 422 mode. As a result the EAV sequence ends up in the first pixel and every other pixel is off by one. Signed-off-by: Lars-Peter Clausen --- library/axi_hdmi_rx/axi_hdmi_rx_core.v | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/library/axi_hdmi_rx/axi_hdmi_rx_core.v b/library/axi_hdmi_rx/axi_hdmi_rx_core.v index 657d38244..f4484b35d 100644 --- a/library/axi_hdmi_rx/axi_hdmi_rx_core.v +++ b/library/axi_hdmi_rx/axi_hdmi_rx_core.v @@ -99,6 +99,7 @@ module axi_hdmi_rx_core ( reg [31:0] hdmi_dma_data_int = 'd0; reg hdmi_sof_422 = 'd0; reg hdmi_de_422 = 'd0; + reg hdmi_de_422_cnt = 'd0; reg [15:0] hdmi_data_422 = 'd0; reg hdmi_sof_444 = 'd0; reg hdmi_de_444 = 'd0; @@ -171,6 +172,7 @@ module axi_hdmi_rx_core ( hdmi_dma_sof_int <= 1'd0; hdmi_dma_de_int <= 1'd0; hdmi_dma_data_int <= 32'd0; + hdmi_de_422_cnt <= 1'b0; end else if (hdmi_csc_bypass == 1'b1) begin if (hdmi_packed == 1'b0) begin hdmi_dma_sof_int <= hdmi_sof_422; @@ -178,8 +180,11 @@ module axi_hdmi_rx_core ( hdmi_dma_data_int <= {16'd0, hdmi_data_422}; end else begin hdmi_dma_sof_int <= hdmi_sof_422; - hdmi_dma_de_int <= ~hdmi_dma_de_int & hdmi_de_422; - hdmi_dma_data_int <= {hdmi_data_422, hdmi_dma_data_int[31:16]}; + hdmi_dma_de_int <= hdmi_de_422_cnt && hdmi_de_422; + if (hdmi_de_422) begin + hdmi_de_422_cnt <= hdmi_de_422_cnt + 1'b1; + hdmi_dma_data_int <= {hdmi_data_422, hdmi_dma_data_int[31:16]}; + end end end else begin if (hdmi_packed == 1'b0) begin