From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

FPGA compilation results and FPGA size required

Solved!
Go to solution

Hello all,

 

I am currently using an intelligent DAQ card (7853R) to generate modulated AO on five channels at five different rates.  The modulated signal can be either: a sine wave, a square wave, or a user defined waveform that uses a single LUT (40k, 16-bit points).  The card I am currently using is on loan from NI and I am now faced with purchasing my own. I had originally proposed using the7841R as it didn't seem that we would be utilizing any of the larger FPGAs to their full potential.  And for the most part, we are not.  We use approximately 6% of the slice registers and 6% of the slice LUTs.  However, we are using 100% of the LOCed IOBs (which a previous knowledge base says I should not be concerned with) and 96% of RAM36_EXPs.  Unfortunately, I have no documentation on the latter and am having trouble figuring out whether my code will fit onto the  smaller (LX30) FPGA in the 7841R.  If  I was to guess, I would say that I am using 96% of the block RAM on the current FPGA and my code would have trouble fitting onto the smaller FPGA as the block RAM available is < half of that on the larger.  But, I don't think it is that simple.  Does anyone have any thoughts on this?

 

Thanks, Matt

0 Kudos
Message 1 of 5
(3,167 Views)
Solution
Accepted by topic author cirrusio
I am not sure what that is either but you can always just choose the target in LabVIEW and compile the application; you don't need the hardware for this. Try it and then you should be able to make a purchase decision. Ofcourse, somebody from NI should be able to get back to you on the defintion of that attribute; or I would suggest just asking them when you are calling them to buy the product. If you have any questions, please post back.
Adnan Zafar
Certified LabVIEW Architect
Coleman Technologies
0 Kudos
Message 2 of 5
(3,162 Views)

Matt,

 

The LX85 has a total of 96 block RAMs, and the LX30 has only 32 block RAMs.  Given you are using 96% of the LX85's block RAMs, I don't expect your application to fit in a LX30.  If there is not a lot of logic in your design (and it appears this is true) the compiler may also use up extra LUTs and create distributed RAM to make up for this (unless the code explicitly requires block RAMs).  There is also much less logic in the LX30 so there is less to use to create distributed RAM, so it's really hard to say unless you try compiling for the smaller target.

As already suggested, you can try compiling for the 7841R without actually having one.  In your project simply add a new target/device, and instead of detecting automatically, manually add the device.  Add your VI under this target, right click on it, and choose compile.  The compile server results will then let you know the answer.

Message 3 of 5
(3,150 Views)

Do you know how you are using so many BRAM?  Perhaps you could optimize your code or use DMA to reduce the need for FPGA memory?

 

-RB

0 Kudos
Message 4 of 5
(3,132 Views)

RB, The reason I am using so much block RAM is that I have a analog output for which I am trying to generate a 16-bit, user defined waveform with a prespecified period (you can see what I was trying to do here) as well as five sine/square waves with different frequencies.  Obviously, I would like to maximize the number of points used to create the user-defined waveform in order to get the best resolution.  This waveform itself is a chirp which, when analyzed in the frequency domain, is a top-hat centered around 1350 Hz and extending 1 kHz about this frequency.  On the 7853R, I am able to produce the chirp using 40k elements with no problem.  DMA was early on deemed not an option as there were issues with reliably transferring the data at the rates we we requesting (hence our move to FPGA).

 

I have now compiled the code targeting the 7841R and, as expected, it would not fit in it's current state on the chip.  However, I decreased the amount of block RAM that I was requiring by using a single sine/square wave in a loop to produce the five different waves (obviously sacrificing some of the inherent parallelism and thus speed of the FPGA) and have recduced the size of the LUT required for the chirp to about 35k points (still well above the Nyquist frequency of the chirp itself).

 

Thanks all for your comments.

0 Kudos
Message 5 of 5
(3,124 Views)