Jump to content
  • 0

Can't build DPTI example project for Nexys Video use TCL file.


Zlxt

Question

I'm learing use DPTI interface. But,I could't build the example project. I download it from github

When i run "create_project.tcl",vivado report "ERROR: This script was generated using Vivado <2015.4> and is being run in <2020.2> of Vivado. Please run the script in Vivado <2015.4> then open the design in Vivado <2020.2>. Upgrade the design by running "Tools => Report => Report IP Status...", then run write_bd_tcl to create an updated script.

So,I changed the version number in the TCL file and ran it again.

Unfortunately, many errors will also be reported.

Can anyone provide me with a project, that I just need to run"Report IP Status".

By the way, it would be even better if you could share some information about DPTI. I only find very little relevant information online.

Thanks.😄

 

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

If you are working with the Nexys Video board, I recently posted this tutorial: https://forum.digilent.com/topic/25315-using-ddr-as-a-video-frame-buffer/

I used the VHDL sources ( modified for that demo )  from Digilent's ADEPT SDK for the DPTI implementation. Recently, Digilent has been all in on the IPI/MicroBlaze design flow. Finding good HDL sources in their GIT repositories can be difficult.

Unfortunately, the ADEPT SDK library software is a bit old and can't be compiled on modern versions of Visual Studio without quite a bit of editing. Perhaps the link posted above will help.  The ADEPT SDK has some documentation that's required to use it's features.

For some reason Digilent seems to be unable to create tcl scripts that build their projects across Vivado versions. Their customers expect a better effort....

Edited by zygot
Link to comment
Share on other sites

  • 0

@zygot

Thank you for the tutorial. I tried to run the program following the contents of the document, but failed.

I successfully compiled 'VideoDemo.cpp'. However, when running the command, it appears that the 'NexysVideo' device cannot be found.
'ERROR: unable to open device'

I checked the device manager of Win10 and found that there is indeed no device named 'NexysVideo', only a device named 'Digilent USB Device'.

I have also tried using 'Digitent USB Device' or other names as device name parameters, but the same prompt indicates that the device cannot be found.

I think there is no problem with my board, and it can be recognized by Vivado normally and run the program.

I used Vivado to download the program, and I am not very familiar with Digilent's Adept Utility. Just in case, I downloaded the Adept Utility and tried the 'djtgcfg.exe enum', 'dadutil.exe enum', and 'dsumecfg.exe enum' commands, but it couldn't find the device either.

I am currently unable to confirm what parameters' DmgrOpen() 'requires.The device name, USB ID, or the device name displayed by windows,or something else.

Have you ever encountered the same problem? Is there a problem with my settings?

Thanks.😃

Link to comment
Share on other sites

  • 0
In the context of the VideoDemo.cpp application "device" doesn't refer to a Windows USB enumerated device name, but to an ADEPT 2 DPTI library reference.

Did you install the Digilent ADEPT 2 Software for Windows? Did you install the ADEPT SDK?

I didn't cover the ADEPT part of the demo very well in the project README.txt file. I was figuring that if users were going to have a problem, it would be with -p commandline option.

The Nexys Video Demo tutorial DPTI interface is based on the sources found in the ADEPT SDK 2.4.2 Samples/dpti folder. Currently, all of Digilent's DPTI links point to an AXI-based IPI for MicroBlaze designs, and I don't use either of those. You could try building the basic ADEPT 2.4.2 DPTI hardware and PC application and see if you can get that to work. I can't find a Digilent Git repository that has a project for either the Nexys Video or Genesys2 compatible with the ADEPT SDK sources.

The DPTI library requires the dmgr library in order to work. Edited by zygot
Link to comment
Share on other sites

  • 0

@zygot 

After I installed and set up Digit ADEPT 2, it worked properly.

I think this would rely too heavily on Digilent's software, making it difficult to use on other projects or boards.

I found another project that includes the DPTI interface and it should work .

This is its link. The rs232Comm.exe in the project is implemented through 'FTD2XX_ NET. dll'.

I think it can also be used as a nice reference project.

Thanks.😃

Link to comment
Share on other sites

  • 0
Digilent's boards use FTDI bridge devices for configuration and UART connectivity. The Nexys Video and Genesys2 also support the 245 FIFO mode (8-bit parallel). It's possible to use FTDI drivers instead of Digilent's ADEPT DPTI mode. A long time ago I modified the FT4232 EEPROM on my Nexys Video to do this, so I know that it's possible.

I do not recommend that anyone try mucking around with the FTDI bridge device if their FPGA board uses it for programming. The Digilent forum consistently has people asking for help in restoring their board so that they can configure it again ( I notice that you're among those on the walk of shame ). It's fairly well known that some of the contents of the EEPROM that configures FTDI bridge devices are required tor compatibility with certain software applications, like configuration. Nonetheless, you can visit the FTDI website to understand how their (proprietary USB bridge) software libraries work. Just understand that configuring your Digilent boards will require buying a Digilent JTAG cable and using the 14-pin header if you mess up changes that you make. Either way, you are going to be using some sort of proprietary API. Digilent ADEPT DPTI claims to support both synchronous and asynchronous 245 FIFO mode, which according to FTDI documentation requires a change to the EEPROM to accomplish. There are other reasons to stick with the support that your FPGA vendor provides, even if its proprietary.

The Mimas-A7 is a very nice alternative to the Nexys Video, but requires custom software to configure the FPGA and FLASH. I did the EEPROM thing with that board because, not only do I not like using proprietary executables to configure the board, but Vivado debug tools like the ILA don't work with them. Fortunately, that board also has a JTAG header ( not compatible with Digilent JTAG cables ) that allow me to use the board in a way that suits me. But, I mostly know what I'm doing and what I'm getting into.

To sum up, I don't like Digilent's approach to not providing complete hardware schematics and pretending that a clever use of FTDI USB bridge device EEPROM contents represents intellectual property that need to be closely held; but elements, like proprietary software API libraries, is more or less unavoidable.. and making changes to USB bridge EEPROMS likely comes at a price that you may not want to pay. If I had my way Digilent would still be using Cypress Semi USB bridge solutions and put USB 3.0 interfaces on their higher performances boards. But, there are more important things to complain about....

BTW, on the subject of FPGA board PC connectivity have you seen this tutorial? https://forum.digilent.com/topic/24531-debugging-with-the-ftxxxx-mini-modules/
It's a simpler, safer way to get better data transfer using FTDI (proprietary) UART D2XX library API. Edited by zygot
Link to comment
Share on other sites

  • 0
You might find this excellent project interesting: https://forum.digilent.com/topic/17096-busbridge3-high-speed-ftdifpga-interface/

Speaking of PC connectivity between FPGA boards and a PC, I use some of Opal Kelly's boards that have a Cypress USB 3.0 bridge solution. The downside is that their boards are more expensive, Opal Kelly doesn't supply ANY schematics of it's carrier boards ( even turning on/off LEDs is not obvious ), and the PC interface requires pre-built netlists, and of course all PC connection requires proprietary pre-compiled libraries. But in general, once you get used to the weird design flow and not great documentation, it's possible to produce some solid FPGA applications. You aren't going to find an FPGA development board without cumbersome, and possibly onerous, built in "features".

BTW, on the subject of video, the lowly Terasic, Cyclone V GX Starter board has an ADV7513 and they provide a demo doing 640x480 to 1600x1200 all at 60 Hz vertical rates.. selectable on the fly by using a re-programmable PLL to supply a variable pixel clock. The problem with cheap Intel FPGA devices is getting the DDR to work in burst mode without ridiculous enslavement to Qsys IP. Intel is the king of customer lock-in and making them pay for every little thing possible.

Once you add DDR PHYs to a video design, clock generation can get messy. FPGA architecture and clock generating hardware really start differentiating themselves. That's why most video demos for FPGA boards do raster bars instead of anything interesting. Edited by zygot
Link to comment
Share on other sites

  • 0
On 3/27/2023 at 12:27 PM, Zlxt said:

@zygot

Thank you for the tutorial. I tried to run the program following the contents of the document, but failed.

I successfully compiled 'VideoDemo.cpp'. However, when running the command, it appears that the 'NexysVideo' device cannot be found.
'ERROR: unable to open device'

I checked the device manager of Win10 and found that there is indeed no device named 'NexysVideo', only a device named 'Digilent USB Device'.

I have also tried using 'Digitent USB Device' or other names as device name parameters, but the same prompt indicates that the device cannot be found.

I think there is no problem with my board, and it can be recognized by Vivado normally and run the program.

I used Vivado to download the program, and I am not very familiar with Digilent's Adept Utility. Just in case, I downloaded the Adept Utility and tried the 'djtgcfg.exe enum', 'dadutil.exe enum', and 'dsumecfg.exe enum' commands, but it couldn't find the device either.

I am currently unable to confirm what parameters' DmgrOpen() 'requires.The device name, USB ID, or the device name displayed by windows,or something else.

Have you ever encountered the same problem? Is there a problem with my settings?

Thanks.😃

I have encountered the same problem.

The way I have resolved it in my Visual Studio C++ Console Application for Win32 was as follows:

1. I have obtained the number of Digilent devices by DmgrEnumDevices() API function.

2. If number of Digilent devices was 1 (the connected one) then I have obtained the device Info by DmgrGetDvc() API function called with first parameter equal to 0.

3. From obtained Digilent Device Information structure I have used the Device Name "szName" field to open the Device by the DmgrOpen() API function.

The rest of application was like in Tutorial.

Good luck.

 

Link to comment
Share on other sites

  • 0

It would be convenient if any discussion about any of the tutorials or projects that I've posted were on the same thread as the project. This would make it a lot easier for anyone having issues to follow the discussions. The Digilent Forums are great, but not well curated or organized and even with their search tool it's hard to track down topics of interest. If all posts are in the same place this makes it a lot simpler for everyone. Thanks.

And thanks for anyone providing solutions to issues.

Edited by zygot
Link to comment
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
×
×
  • Create New...