• 0
jstefano

Problem with Arty7 HDMI demo

Question

I'm trying to run the HDMI-in and HDMI-out demos on my ARTY Z7 board and I'm having problems building the SDK side of the projects. The problems are the same for both of these projects.
After importing the project in the SDK I get the following error:

09:07:45 ERROR : The Hardware Project referenced by this BSP (hdmi_in_bsp) was not found in this workspace. As a result, this BSP will not build properly. To fix this error, please import the associated hardware project or recreate a new BSP targeting an existing hardware platform.

Upon building the project I get the following errors (sorry for the Polish):

Description	Resource	Path	Location	Type
../config.make: No such file or directory	hdmi_in_bsp		line 38	C/C++ Problem
config.make: No such file or directory	hdmi_in_bsp		line 33	C/C++ Problem
fatal error: xil_types.h: No such file or directory	video_capture.h	/hdmi_in/src/video_capture	line 74	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/axivdma_v6_2/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/coresightps_dcc_v1_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/cpu_cortexa9_v2_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/ddrps_v1_0/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/devcfg_v3_4/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/dmaps_v2_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/emacps_v3_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/gpio_v4_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/gpiops_v3_1/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/iicps_v3_4/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/qspips_v3_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/scugic_v3_5/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/scutimer_v2_1/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/scuwdt_v2_1/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/sdps_v3_1/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/standalone_v6_1/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/uartps_v3_3/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/usbps_v2_4/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/vtc_v7_2/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [ps7_cortexa9_0/libsrc/xadcps_v2_2/src/make.include] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make: *** [src/video_capture/video_capture.o] Błąd 1	hdmi_in		 	C/C++ Problem
make[1]: *** [coresightps_dcc_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [include] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [profile_includes] Błąd 2	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [scugic_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [scutimer_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [scuwdt_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [standalone_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xadcps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xddrps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xdevcfg_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xdmaps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xemacps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xgpiops_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xiicps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xqspips_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xsdps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xuartps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** [xusbps_includes] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[1]: *** Brak reguł do wykonania obiektu `config.make'.	hdmi_in_bsp		 	C/C++ Problem
make[2]: *** [include] Błąd 1	hdmi_in_bsp		 	C/C++ Problem
make[2]: *** Brak reguł do wykonania obiektu `../config.make'.	hdmi_in_bsp		 	C/C++ Problem

While building the project in Vivado I had some other problems which I manged to solve. I described my build below.

I have followed the instructions on Digilent's reference site for the project, that is:

  • I'm using Vivado 2016.4,
  • I've installed the board suport files,
  • I've cloned the demos from the Digilent github repo along with the Vivado library IP-cores
  • I've successfully generated the projects via the tcl script with one warning, which doesn't look critical:
WARNING: [BD 41-1731] Type mismatch between connected pins: /axi_dynclk_0/LOCKED_O(undef) and /rgb2dvi_0/aRst_n(rst)

Next I ran the Generate Bitstream option and got an error that the top module wasn't set. I've set the top module to hdmi_out and went through elaboration and synthesis where I got the following warnings:

[Common 17-55] 'set_property' expects at least one object. ["C:/Users/p1814/Documents/Arty-Z7-demos/Arty-Z7-20-hdmi-in/src/constraints/ArtyZ7_7020Master.xdc":82]
[Common 17-55] 'set_property' expects at least one object. ["C:/Users/p1814/Documents/Arty-Z7-demos/Arty-Z7-20-hdmi-in/src/constraints/ArtyZ7_7020Master.xdc":83]
[Common 17-55] 'get_property' expects at least one object. ["c:/Users/p1814/Documents/Arty-Z7-demos/Arty-Z7-20-hdmi-in/src/bd/hdmi_in/ip/hdmi_in_v_tc_1_0/hdmi_in_v_tc_1_0_clocks.xdc":5]
[Common 17-55] 'get_property' expects at least one object. ["c:/Users/p1814/Documents/Arty-Z7-demos/Arty-Z7-20-hdmi-in/src/bd/hdmi_in/ip/hdmi_in_v_vid_in_axi4s_0_0/hdmi_in_v_vid_in_axi4s_0_0_clocks.xdc":11]
[Vivado 12-259] No clocks specified, please specify clocks using -clock, -fall_clock, -rise_clock options ["c:/Users/p1814/Documents/Arty-Z7-demos/Arty-Z7-20-hdmi-in/src/bd/hdmi_in/ip/hdmi_in_v_tc_1_0/hdmi_in_v_tc_1_0_clocks.xdc":6]
[Vivado 12-4739] set_max_delay:No valid object(s) found for '-to [all_registers -clock [get_clocks -of [get_ports -scoped_to_current_instance clk]]]'. ["c:/Users/p1814/Documents/Arty-Z7-demos/Arty-Z7-20-hdmi-in/src/bd/hdmi_in/ip/hdmi_in_v_tc_1_0/hdmi_in_v_tc_1_0_clocks.xdc":6]
[Pfi 67-13] Hardware Handoff file hdmi_in_processing_system7_0_0.hwdef does not exist for instance processing_system7_0/inst

Finally on bitstream generation I got the following error:

[DRC 23-20] Rule violation (NSTD-1) Unspecified I/O Standard - 6 out of 153 logical ports use I/O standard (IOSTANDARD) value 'DEFAULT', instead of a user assigned specific value. This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all I/O standards. This design will fail to generate a bitstream unless all logical ports have a user specified I/O standard value defined. To allow bitstream creation with unspecified I/O standard values (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks NSTD-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run. Problem ports: DDC_scl_i, DDC_scl_o, DDC_scl_t, DDC_sda_i, DDC_sda_o, DDC_sda_t.

[Vivado 12-1345] Error(s) found during DRC. Bitgen not run.

I've used the fix from https://www.xilinx.com/support/answers/56354.html to ignore these rules and managed to get a bitstream.

Next, following the tutorial, I've exported the hardware along with the bitstream, but the export failed because no Hardware Handoff file was found.

I followed the suggestions from https://forums.xilinx.com/t5/Embedded-Development-Tools/Cannot-Export-Hardware-Hardware-handoff-file-sysdef-does-not/td-p/539953 to manually generate the .sysdef file, and I managed to export the hardware and open the design in the SDK.

I'm suspecting that the problem might be caused by the fact that I'm using Vivado installed by a different Windows user. I tried adding the Vivado and SDK location to the path variable, setting xilinx_sdk and xilinx_vivado variables, running the settings_64.bat scripts etc. but that didn't improve the outputs.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

Thanks for the input @elodg! I managed to get the demo running. I don't understand why but Vivado did not infer that tri-state buffer for the DDC. Because of this 6 DDC ports were not mapped to anything. This resulted in bitstream generation errors (Rule violation (NSTD-1)) that I supressed by lowering their severity levels through a tcl script and got a bitstream, which lacked HDMI DDC support. Without DDC the FPGA board couldn't recognize a video source on the input, but didn't have trouble to generate the test rainbow images on the output.

I didn't know how to make Vivado infer the IO buffer, so I created a top level VHDL file, which instantiates the hdmi_in block diagram wrapper and forwards all ports except for the DDC ports, which were connected to new inout ports through a tristate buffer: 

  DDC_scl_io <= DDC_scl_o when DDC_scl_t = '0' else 'Z';
  DDC_scl_i <= DDC_scl_io;
  
  DDC_sda_io <= DDC_sda_o when DDC_sda_t = '0' else 'Z';
  DDC_sda_i <= DDC_sda_io;

I attached the VHDL source containing the tristate buffer and hdmi_in instantiation.

The problem is solved, and I can finally start processing my video stream :)

hdmi_in_top.vhd

Edited by jstefano

Share this post


Link to post
Share on other sites
  • 0

Hi @jstefano,

I just went through the demo for the Arty-z7-20 HDMI-IN without issue. Currently the HDMI-OUT has an issue in sdk but not the errors you are showing. Issues with path names can cause issues with SDK.  Just to make sure you have the board files installed in the folder shown as in the attached screen shot. You also have the vivado library older as shown below.

cheers,

Jon

Arty_z7_hdmi_in.jpg

Arty_z7_hdmi_in_2.jpg

Share this post


Link to post
Share on other sites
  • 0

I'm certain I've got the vivado library files and board files in the correct places.

I just tried to import the SDK project again, but this time I didn't import hdmi_in_bsp but generated it in the SDK. The build was successful and I'm now enjoying a rainbow pattern on my HDMI display. The only problem is I can't get the input (Apple TV) streamed to the output. Any idea why that might be?

I took a closer look and I noticed that the input capture resolution is invalid (this is what the demo prints through UART):

*Video Capture Resolution:              4060x0   *

Is the Apple TV failing to adjust the resolution to the device? I'll try to find and test a different source and see what happens.

edit:

I fixed the display settings in my source to 720p 60Hz but that didn't solve the problem. Still got 4060x0 in Video Capture Resolution.

Edited by jstefano

Share this post


Link to post
Share on other sites
  • 0

Hi @jstefano,

With multiple tries i have not had any issues with the Arty-Z7 HDMI-IN project. I just tested the Arty-Z7 HDMI-in with no issue. Can you try using a different source? I used the output of my computer. I attached some screen shots and a short video showing the screens and that the mouse is moving on both screens. I was also able to get the HDMI-OUT working by not importing the fsbl and fsbl_bsp. Then in the project create a new application called fsbl and select zynq fsbl on the next page. Hit finish and it should work with out issue. We will be fixing the HDMI-OUT project on Github in the next few day.

cheers,

Jon

 

HDMI-IN_1.zip

HDMI-IN_2.zip

Share this post


Link to post
Share on other sites
  • 0

Thanks Jon, I've tried with my coworker's computer (mine doesn't have an HDMI output) but that didn't work either. I'll try with a different source once I get my hands on one.

 

Share this post


Link to post
Share on other sites
  • 0

I'm still working on getting the hdmi_in demo to run. The HDMI output is working and I can display the rainbow patterns on my monitor, but I'm still having problems with acquiring frames from the input. I tried three different HDMI outputs, but nothing worked. There should be an interrupt once I plug in an input and information about the input signal resolution should be updated. Nothing like that happens, what I get with each menu update is:

*Video Capture Resolution:       !HDMI UNPLUGGED!*

I'm wondering if this is caused by the fact that I'm using the BSP created inside the SDK instead of the one I get importing the projects after bitsteam generation in Vivado. Unfortunately I can't check this because when I build the project with the BSP included in the project files, I get errors (headers from the BSP not found).

Maybe someone is having similiar problems? I'll try to build with that other BSP and see if that changes anything.

Share this post


Link to post
Share on other sites
  • 0

Hi Jon, one more possible solution. I went through the logs and I see that the HDMI DDC IO ports are not configured (not mapped to anything specific in the hardware). I connected DDC_scl_i, DDC_scl_o, DDC_sda_i, DDC_sda_o to M17, U14, M18, U15 (that's what I got from the ARTY7 refference page) but I have no idea how to connect the DDC_scl_t and DDC_sda_t ports. I mapped them to some random pins next to the DDC outputs, but after implementation I still have the same issues with HDMI streaming.

I looked throught the board files for Arty Z7 and couldn't find anything about DDC.

Edited by jstefano

Share this post


Link to post
Share on other sites
  • 0

Make sure the whole DDC bus is connected to the external port directly. The I/O buffer should be automatically inferred and the only external ports you should see are      ddc_scl_io, ddc_sda_io. I edited the table in the reference manual to make it clearer that the pins are grouped by connector. You will need either the Sink or the Source column.

 

Regarding the SDK error messages, try re-creating the hardware platform by importing the hand-off file, and the BSP by creating a new one and overwriting the mss file with the old one.

ddc_external_port.png

Edited by elodg
Added SDK error solution

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now