UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Explorer
Explorer
2,623 Views
Registered: ‎04-09-2008

What's the easiest way to make small changes to a Xilinx IP Catalog Peripheral?

Hello.

 

I would like to generate a design with a Delta-Sigma DAC module that uses a rolling lookup table instead of a FIFO.  I want to try to generate a sawtooth pattern at the output pin, and I'm finding that the result is far too dependant on the microblaze execution.  Furthermore, since I only need to program one iteration of this pattern, using a FIFO to re-program it every cycle is a bit of a waste.

 

I've tried copying the peripheral files to my own MyProcessorIPLib folder (user logic repository) and making the source changes there.  I was able to successfully impelement.  However, I lost the xps "dsdac" driver assocation.  I would like to continue to use the XDsDac_ driver calls with my own version.  I couldn't figure out how to copy the Xilinx dsdac driver source over to my peripheral repository.  I tried adding my own peripheral version to the xilinx driver's configuration.  I was then able to set the driver of my peripheral to "dsdac" in the Platform Studio.  However, the tcl scripts aren't generating the standalone BSP files properly with the unique IDs.  I can go into the dsdac_g.c file and add the entry myself with the proper base address, but I need to make that change again every time I make a change to the hardware project.

 

Approaching the problem from a different direction, I tried modifying the source for the dsdac in the Xilinx directory directly, to add my functionality.  I coded it as a generic in the vhdl and propagated that all the way up to the top-level which instantiates the PLB Slave interface.  I added the generic as a paramter to the MPD file.  I can instantiate and build the hardware now.  However, when I try to add a PARAMETER line to the system.mhs file, EDK gives me an error, saying it can't find my parameter defininition in the MPD file.  I suspect the Xilinx IP library parameter definitions maybe compiled in, or cached copies being used somewhere.

 

Has anyone had any experience making very small changes to a Xilinx IP library peripheral?  What's the best way to do that?

 

 Thanks.

0 Kudos
1 Reply
Xilinx Employee
Xilinx Employee
2,613 Views
Registered: ‎01-18-2008

Re: What's the easiest way to make small changes to a Xilinx IP Catalog Peripheral?

There are a few options on where to place the modified files:

 

1. Copy the required h/w into your project's pcores folder, and the driver to your projects drivers folder. Both of these folders should be at the top level of your project. If you do this, then these changes will be visible only inside this project.

 

2. The 2nd option is to use your own repository, and this should kind of mirror the directory structure as in the EDK installation. (This is the first approach you list below). Just like you did for the pcores folder, you can place the drivers also in a similar drivers folder inside your repo.

 

Driver -> h/w association:

 

This is present in the driver's MDD file. You are looking for the supported_peripherals field.

 

If I was doing this, I would start by copying only the hardware pcores into my project's pcores folder, make the h/w changes, and get everything working first. As long as you don't change the name of the pcore or its version, things should just work. Once that is done, depending on how reusable you want to make this, you can look at renaming the pcore, or changing its version, placing it in a global repository, etc.