03-26-2006 09:27 PM - edited 03-26-2006 09:27 PM
I'm trying to use the HDL interface node in LV8 FPGA with a PCI-5640R and had the "timing constraint" error when compiling my VI, however, the same VI was successfully compiled on a CRIO-9104, it seems the FPGA on PCI-5640R is not good as the one on CRIO-9104, or I'm not using it right. could you please kindly help me out?
I tested it with the sample code downloaded from NI website
( http://zone.ni.com/devzone/conceptd.nsf/webmain/456722DDDE17986A86256E7B0065EE6F ) which demonstrates using an IP core for a filter. To simplify it, I only keep the HDL Interface Node and the While Loop (see "UsingFilterCore.vi" in attached zip file), and then I created 2 projects including this VI (1 for CRIO-9104, in sub folder "CRIO-9104", the other for PCI-5640R, in sub folder "IFRIO 5640"). When opening the 2 projects separately in LV8.0 and selecting the VI for compile, the one for 9104 passed and the other failed. Here I attach the source code, error message screenshot and the NIReport from MAX, hope you can reduplicate the problem.
Can you help me out? Thanks very much !
Message Edited by Jerry_L on 03-26-2006 09:28 PM
Message Edited by Jerry_L on 03-26-2006 09:29 PM
03-26-2006 09:36 PM - edited 03-26-2006 09:36 PM
It appears that the Xilinx Filter uses a synchronous reset in its design. There are 2 things you need to do to make this design work.
1) The core gen component in the dev zone article is for the FPGA on the cRIO and R series platform. This is different than the FPGA on IF-RIO. You need to recreate the Core for the FPGA on IF-RIO (xc2vp30-ff896-5). I already did this using the coefficients from the Dev Zone article. Use attached edn file.
2) You need to remove the RST from the design. Go to the code tab of the HDL node. Under architecture delete the line RST: In std_logic;. Under begin remove the line RST => reset,.
This will remove the reset from the filter design. According to the filter IP Core documentation this reset is a synchronous reset that does not do what we thought it originally did.
Message Edited by Jerry_L on 03-26-2006 09:40 PM
04-29-2008 10:03 AM
Hi Jerry,
I'm just tried to make all these steps by myself (http://zone.ni.com/devzone/cda/tut/p/id/3516). I have generated FIR filter using Xilinx ISE and got *.VHD file which was going to use in HDL Node.
Next, switch to the Code tab. Notice that your parameters now appear in the entity section. To complete the next two sections of code, you will need to refer to the filt.vhd file that you generated earlier and interface the filter core to the LabVIEW FPGA execution system.
1. The first problem I met was integrating VHDL code from earlier generated *.VHD file to CODE tab in properties of HDL Node. Content of entity section in *.VHD is not the same that in your attached file. Please check it in attached files. I'm sure this is the main reasen of problem.
Next, switch to the External Files tab. Click the Add File button and select the filt.edn file that you created earlier. This is the EDIF netlist file that you generated earlier.
2. I have no idea where can I get it and when during filter generation using Xilinx ISE it was generated too. How can I get it? I had to use your attached file filt.edn.
3. After that I have made the same schematics like you have in your VI FPGA and try to run. But I've got two error messages:
HDL Interfave node: enable chain not handled. Details: Refer to the documentation for the correct assignments for the enable_out output from your HDL code.
HDL Interfave node: output not handled. Details: Right-click the node, select Configure to open the Configure HDL Interface Node dialog box, and use the Code tab to handle all output parameters.
Actually I need to model FIR filter:
Bandwidth 200-600 Hz
Sampling 8 KHz
Attenuation 80 dB
That's why I tried to follow all these steps by myself to understand how does it work.
Thanks a lot.
Nikita
04-29-2008 11:29 AM
05-07-2008 11:51 AM
Hi Nikita,
LabVIEW uses dataflow paradigm, hence you will need to enforce the dataflow from the upstream data to the HDL node and the downstream data from the HDL node. The enable signals (enable_in and enable_out) allow you define when all the inputs to the HDL node are valid to begin execution and when the outputs are valid for the next block diagram node.
The enable signals must be defined to prevent any code generation error. The LabVIEW FPGA Help provides information on enable chain signals and controlling execution of HDL node within and outside a Single Cycle Timed Loop (SCTL).
Tunde A
05-08-2008 03:10 AM