• 0
BenWillis

Configuring dvi2rgb and rgb2dvi IP blocks on PYNQ board

Question

Hello,

I am trying to make an HDMI passthrough application on the PYNQ-Z1 board using the dvi2rgb(1.9) and rgb2dvi (1.4) IP blocks from this  github repo. Here are the technical details of my tools:

Vivado 2018.2

PYNQ-Z1 board (part xc7z020clg400 - 1) (Got the board file I’m using in vivado from this webpage 

Dvi2rgb v1.9

Rgb2dvi v1.4

Here are some images of my project:

Constraints

Constraints.jpg.ec2a66b4c346ac34c9c545c3accf7d34.jpg

Block Diagram

BlockDiagram.thumb.JPG.cd2cf8d628e4cc6d7e6b863ae8e87763.JPG

clock wizard settings

clkwzdsettings1.jpg.605048297b2e8663e3cde6081807ab20.jpg

clkwzdsettings2.thumb.jpg.97be630f7b3704507b2cb8ef05d193db.jpg

dvi2rgb

dvi2rgbsettings.jpg.93ee047154ebcf58c5f07e9f130c4b26.jpg

rgb2dvi

rgb2dvisettings.jpg.28e562d17b3f1dda6e4c212a6173ed10.jpg

Long story short, the application doesn’t work when I use it between my laptop (Lenovo Z710 Ideapad running Windows 8.1) and my TV (Toshiba 49L420U with dimensions 1920x1080)

After consulting a lot of posts on this website, especially this one and this one, I’m still not sure about what the magic formula is to get these IP blocks to work. The posts don't seem to be addressing the problems I'm having with this design, but rather making changes to the specific implementation of the project. They were all older versions of the IP blocks and vivado, and they were using different boards, so those factors may have contributed to why those examples didn't work for me. 

I’ve reduced my critical warnings down to three, which are the following:

1.)    Timing: i get the following timing warnings after running implementation

2.)    Set_property expects at least one object

a.       I get two of these, for the two constraints listed at the very bottom of the constraints I showed in the first image above. How can I write these constrains such that Vivado will recognize them and won't throw a warning? 

I read from the posts I mentioned earlier that timing requirements may throw a critical warning but the design will work anyway, but I haven't had the same fortune. So has anybody here gotten their design to fit timing and create a working project? If so I'd love to know how, and if you failed timing but still got the project to work, what did your timing analysis look like?

As can be seen in the block diagram, I pulled the aPixelClkLockd signal out to an LED, which is an active high signal. But I haven't gotten this signal to be high, so obviously that's a problem. If the clock recovery block in the dvi2rgb IP can't get a lock on the incoming clock signal, does this mean that the project is not properly constrained, or does this mean that the IP block won't work with my laptop?

I read a lot about DDR signals, and I believe that I set those up correctly in my block diagram and constraints file. But I didn't understand what hpd signals did, and I don't know which block diagram they are supposed to come from.

Any help here would be greatly appreciated!

Best,

Ben

Share this post


Link to post
Share on other sites

13 answers to this question

Recommended Posts

  • 0

>> that timing requirements may throw a critical warning but the design will work anyway

This sets off red flags for me. Just speaking for myself, I wouldn't ever assume this.

The problem is that the attempt by P&R to do the impossible may wreak havoc on the rest of the design so it doesn't necessarily "fail soft"

Edited by xc6lx45

Share this post


Link to post
Share on other sites
  • 0

I duplicated the project that @jpeyron linked to. I did my best to duplicate everything in the first response to that post. Here are screenshots of my design.

constraints

constraints-secondproject.thumb.jpg.a7f8779029af6b00cdbdce9613c376ef.jpg

block diagramBd-SecondProject.thumb.jpg.1ef2cac779bf06ce08b35558512c23d7.jpg

dvi2rgb settings

dvi2rgb-secontproject.jpg.0c680e8791a7a0de053f4e06ed04edf4.jpg

rgb2dvi settings

rgb2dvi-seccondproject.jpg.5992601932049a195e9584678fcee140.jpg

clock wizard 1

clkwzd-secontproject1.jpg.1ba29c93bb83c2346c77b49a43ebe9ae.jpg

clock wizard 2

clkwzd-secondproject2.thumb.jpg.775b4e18b12e4b81df18898aa075333b.jpg

Here are the critical warnings and errors I received when synthesizing and implementing the above design

critical warnings

criticalwarnings-secondproject.thumb.jpg.b3ef82ba0c9a3b8e21c3955c595de2b0.jpg

errors

errors-secondproject.thumb.jpg.f1d7ad4c436f231f8a63c8c4658db953.jpg

 

Share this post


Link to post
Share on other sites
  • 0

Hi @BenWillis,

Here is a forum thread dealing with making an HDMI pass through for the Zybo Z7 that should be helpful for your project. I was able to quickly alter their GitHub project  here to work with the pynq board. I used the Arty-Z7-20 board file which has a lot of the same pin out and will work for this situation. I used their GitHub readme for configuring the dvi2grb and the gbr2dvi IP cores along with their vhdl top file and xdc. I have attached them below. I have been working on getting a strickly IP block design working but I'm not quite there. I will share the IP project when it is complete.

cheers,

Jon

pynq.xdc

hdmi_pass_top.vhd

Share this post


Link to post
Share on other sites
  • 0
7 hours ago, kwilber said:

@BenWillis, Is there a reason you are not driving the reset of the clock wizard and the aRst of the rgb2dvi and dvi2rgb blocks?

@kwilber no, no particular reason. The design posted here was advertised to work and didn't include any reset functionality so I left that out. You thing driving the arst ports of the block diagrams is a good idea?

Share this post


Link to post
Share on other sites
  • 0

Hi @BenWillis,

The previously posted project works with the Zybo. The project uses the HDMI as an input and VGA as the output. I have not as of yet gotten a working project using only IP cores and no VHDL for the Pynq board. The most recent project i linked to and attached VHDL and XDC files use the clocking wizard, DVI2RGB and the RGB2DVI IP cores works on the Pynq board. Here is my non-verified project  as it stands know. It generates a bitstream. I will try testing this project next week on Wednesday when I'll be back on the forums.

thank you,

Jon

Share this post


Link to post
Share on other sites
  • 0

@jpeyron

Thank you for all your help sir! This has been a great learning experience. I successfully got the top file project to work with the constraints file to work on my PYNQ board as well. I will not be able to test your project until after the holidays but my project coworker may do so in the next few days. I will post here if the test is successful. Again thank you for your help and you'll hear from me!

Ben

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)

@jpeyron After two weeks of fiddling, my project partner and I got your block diagram project to work! We did so by eliminating any discrepancies we could find between the implemented schematic from your block diagram with the implemented schematic of from the top file.

Specifically we made the following changes:

1.) Used the pynq-z1 board file from here.

2.) I changed the i2c interface you outlined to the one specified in the top file of the project from github. 

The end result was that I got a schematic in the implemented design which exactly matched the schematic generated from the top file.

Thank you for your time and efforts! I'm sure I'll be back with more questions later.

Cheers!

Ben

Edited by BenWillis

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