Forum Discussion
HDMI Intel FPGA IP as Receive with AXIS fails in Analysis & Synthesis of Quartus 24.3 Pro
- 1 year ago
Hi @M_DK_FPGA ,
I understand your reason to turn off the "support Aux" and "deep colour" with reason to support your custom 24 bit pixel data.
However , turning OFF support Aux and deep colour will make the output in-stable (blank most of the time).
Also, This will only save minor logic utilization. That why we make those two as default to suit most of the use cases.Currently AXI Bridge is setting to 16BPS (16x3 48bits).
If fewer bits are requires, you just need to pad the LSB without disable the AUX and Deep Colour.
Detail about the implementation you may refer to- HDMI user guide 5.1.19. AXI4-Stream to Clocked Video Converter (AXI2CV)
- Intel AXI Streaming Video Protocol Specification: 2.2.10. Packing RGB444 onto an RGB888 Interface
Hope that able to help you to move a step forward, let me know if further clarification is needed.
Regards,
Wincent_Altera
Hi @M_DK_FPGA ,
I was able to generate and perform 100 % compilation by referring your .ip setup and EDID.hex file using AXIS-VVP Full in Arria 10 GX devkit. I attach the .qar here.
Can you please try this, you may copy the .qsf file into your own design.
Regards,
Wincent_Altera
Hi Wincent_Altera,
Thanks for the project file .qar.
I unpacked the files, and looked at the HDMI IP Rx and Tx cores.
Searching for VIDEO_PROTOCOL shows that the setting is "none" for clocked video, and not "vvp_full" for "AXIS-VVP Full"; relevant files are:
- ^/hdmi_0_example_design/rtl/hdmi_rx/hdmi_rx/hdmi_rx.html and .xml
- ^/hdmi_0_example_design/rtl/hdmi_tx/hdmi_tx/hdmi_tx.html and .xml
The design also shows it, since the HDMI IP Rx and Tx PHYs are not used as would require AXIS-VVP Full, but the transceivers for HDMI are made using GXB blocks directly.
May I suggest that you take a look at the original question from December 15 2024, and try to generate the HDMI Core with:
- Direction: Receiver
- Enable Active Video Protocol: AXIS-VVP Full
- Support FRL: Untick (disabled)
The generated design is also attached as a file .qar with the original question.
Simply by code inspection of the generated hdmi_rx_core_altera_hdmi_1975_ozylggi.v file, it is possible to see that there is problem with the design.
The module hdmi_rx_core_altera_hdmi_1975_ozylggi is used in file hdmi_rx_core.vhd at lines 192 forward through a component with configuration as:
...
hdmi_0 : component hdmi_rx_core_altera_hdmi_1975_ozylggi_cmp
generic map (
FAMILY => "Arria 10",
SYMBOLS_PER_CLOCK => 2,
PIXELS_PER_CLOCK => 8,
...
The module in file hdmi_rx_core_altera_hdmi_1975_ozylggi.v has code:
...
wire [SYMBOLS_PER_CLOCK - 1 : 0] cv_vid_de;
...
for (p=0; p<PIXELS_PER_CLOCK; p=p+1) begin: vid_data_p
...
if(cv_vid_de[p] && (vid_valid == 1'b1)) begin
...
So loop variable p is in range 0 to PIXELS_PER_CLOCK - 1 = 8 - 1 = 7, but wire cv_vid_de is only defined with range 0 to SYMBOLS_PER_CLOCK - 1 = 2 - 1 = 1.
During synthesis, Quartus tries to access p[2], that is out of range, thus giving the error meassage:
Error(13224): Verilog HDL or VHDL error at hdmi_rx_core_altera_hdmi_1975_ozylggi.v(771): index 2 is out of range [1:0] for 'cv_vid_de'
This problem can be confirmed by code inspection, thus without any pin placement or other synthesis.
Have you tried to recreate the original problem that I reported, showing the above problem in the code ?
Regards
M_DK_FPGA