LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

fpga

Dear Friends,

 I am trying to transfer Single(1 Bit) Data Between Two Time Cycle loop runs on Much.(Same Clock Rate). I tried to use Local and Global Variable but I  found it is lossy. Finally I tried FIFO but found various number of latency between data Write and read  Which is not acceptable in this project and also found Loss of data sometimes. Basically Transferred data (1 bit) is control Signal. System occupy 97.5% of FPGA resource (,Block Ram, Lut,Slice).

I have used many VHDL function block because Ni Labview function doesn't support many Operation (Found more latency) and also found NI Function occupy more resource then function written in VHDL.

Can You please Guide me What is the best way or any other way , is it possible to transfer Single Bit (Boolean) data between Two parallel Loop running on same Clock rate?

(Operation of reading is legging by 3 to 8 clocks then Writing so size of FIFO is accurately Choosen)

I have attached two picture which shows FIFO with name DDR1CLOCK_En. Please Guide me if i have made mistake in FIFO connection. I am new person for Labview FPGA.

I would like to point here, FIFO made up with Block Ram, Size is 21, and I am very much sure it it not getting overflow condition.

 

Many Thanks in Advance.

Download All
0 Kudos
Message 1 of 7
(2,722 Views)

It there any Timing Simulation Tool is available with NI FPGA? Like Xilinx tool with Isim, Mentor Graphics tool with Modelsim ..etc.

0 Kudos
Message 2 of 7
(2,716 Views)

Dear Friends,

 I am trying to transfer Single(1 Bit) Data Between Two Time Cycle loop Running on 80MHz.(Same Clock Rate). I tried to use Local and Global Variable but I  found it is lossy. Finally I tried with FIFO but found various number of latency between data Write and read from FIFO Which is not acceptable in this project and also found Loss of data sometimes. Basically Transferred data (1 bit) is control Signal(Like Handshaking Signal). System occupy 97.5% of FPGA resource (,Block Ram, Lut,Slice).

I have used many VHDL function block because Ni Labview function doesn't support many Operation (Found more latency) and also found NI Function occupy more resource then function written in VHDL.

Can anyone please Guide me What is the best way or any other way ,  to transfer Single Bit (Boolean) data between Two parallel Loop running on same Clock rate?

(Operation of reading is legging by 3 to 8 clocks then Writing so size of FIFO is accurately Choosen)

I have attached two picture which shows FIFO with name DDR1CLOCK_En. Please Guide me if i have made mistake in FIFO connection. I am new person for Labview FPGA.

I would like to point here, FIFO made up with Block Ram, Size is 21, and I am very much sure it it not getting overflow condition.

 

Many Thanks in Advance.

0 Kudos
Message 3 of 7
(2,706 Views)

Hi there FPGAcode,

 

Welcome to the NI Forums!

 

"I tried to use Local and Global Variable but I  found it is lossy."

- Firstly, this depends on what the actual application is doing. For example, if you're discussing the transfer of data across one area of the FPGA from another, then a local variable will not be lossy as it is an explicit circuit connection being made in hardware; the same value will propogate through within one clock cycle. However, the implications of this form of data communication vary depending on the application.

 

Often it is useful to set up a communication buffer if the data that is being passed has lengthy operations performed on it that take multiple clock cycles, such as through the use of a hardware divider. If you are communicating from an FPGA through to a Real Time System, then you are correct in saying that without a Direct Memory Access FIFO communication would be lossy because the rate at which an OS can communicate is at a much lower rate than the FPGA can run; therefore it's important to setup a data communication channel as suitable for your application as possible. If you're finding this channel of communication lossy, I would suggest reading more elements from the FIFO and at a faster rate.

 

"System occupy 97.5% of FPGA resource"

- That's impressive! I've never seen an application which takes up nearly an entire FPGA. I would love to take a look!

 

"I have used many VHDL function block because Ni Labview function doesn't support many Operation (Found more latency) and also found NI Function occupy more resource then function written in VHDL."

- Which functions have you found that are missing? I've done a lot of work in VHDL and I've found that LabVIEW is just as capable for implementing Hardware Description, except it definitely doesn't give me as many headaches!

 

"Can anyone please Guide me What is the best way or any other way ,  to transfer Single Bit (Boolean) data between Two parallel Loop running on same Clock rate?"

- As long as these two parallel While Loops are running on the FPGA, then I'd recommend the use of a Local Variable; promise! A local variable will be a direct route between two areas of circuitry; remember the programs we write are describing hardware, so we need to think differently. Everything we write becomes a hardware based configuration. It can be a little confusing at first, especially if you're used to conventional LabVIEW programming.

 

I would suggest to benchmark your application, you read the outputs of the Timed Out? terminals of the FIFO nodes in order to accurately confirm whether we're incorrectly reading from the buffer.

 

If our reading and writing process is configured properly, the DMA FIFOs shouldn't be losing any information. I'd recommend looking at the amount of data you're actually writing to these channels and confirming whether we're reading fast enough.

 

I hope this helps!


Alex Thomas, University of Manchester School of EEE LabVIEW Ambassador (CLAD)

0 Kudos
Message 4 of 7
(2,681 Views)

Alex T.
Applications Engineer
National Instruments UK and Ireland

 

Thank you very much for reply. My application is high end of Signal processing algorithm implementation on FPGA, Which force me to use everything of NI 7962R FPGA . Many Signal processing algorithm is not supported efficently by labview and many are not available which is specific design for application Like Sorting Algrithm.,Median Algorithm.Sink Filter. Finally I made up everything.

Now biggest challenging problem is for me FIFO latency. May I know what is the lattency of FIFO for Data Transfer between Two Loops?

I agree with you on Local variable suggestion but My system is very complex and timing is biggest challenge. I am loosing data from Local Variable because data is Wr is faster sometimes then reading process on other loop (Wr and RD lattency on both loop veries according to Signal and data processing function which depen on input data). other side complexity in Data handling With DDR2 (on board), FFT, CORDIC ,FIR,(Need Simulator), I have only one option is FIFO.

I found FIFO Wr and Rd latency varies between 2 to 7 cycles on real time signal on FPGA which really not acceptable.is it true?

Thank you for your suggestion on Time out . I will use in Code and will let you know soon.

 

One more question : is there any simulator is avilable with Labview FPGA work? (my system is very complex in Timing management)

0 Kudos
Message 5 of 7
(2,673 Views)

few more question :

Can FFT work more then 80Mhz in Single Cycle time loop ? When I used more then 80 Mhz it come up with Timing issues/error ?

Can DDR2 on Board memory (NI 7962R FPGA) work more then (or equal) 160Mhz?  When I used more then 120 Mhz is shows timing Error?

 

Many Thanks in Advance.

0 Kudos
Message 6 of 7
(2,657 Views)

Hi FPGAcode!

 

With DMA FIFOs, you would not lose any data if the Read and Write processes were configured so that data was not being read too quickly or too slowly; it is because of DMA FIFOs that we can remove any coupling between deterministic and non-deterministic loops in software.

 

In terms of FIFO 'latency', I can think of the inherent delay of these devices in two ways:

Propogation Logic Delay -  This type of delay is inescapable with FPGAs as it is referred to as the amount of time taken for logic elements to settle in particular states. In this case, this means the amount of time for particular FIFO circuitry to complete their operation. I'm unsure of the exact delay of actual FIFO operation, however it will be in the nanosecond region and should be unnoticeable with respect to the driving clock.

 

Number of Elements Delay - This type of delay occurs with respect to just how many elements need attention in the FIFO before it reaches the element of data which we're benchmarking latency from. This will be the biggest source of any latency that you notice in your application.

 

Have you managed to make use of Front Panel indicators to warn you of any FIFO occurence of overflow?

We could use these to fine tune your FIFO setup to ensure data is propogated effectively without any loss.

 

80MHz SCTL - The maximum clock rate of the Virtex 5 FPGA on board the NI 7962R is 500MHz.This would imply that via the implementation of an SCTL, we would be able to run at a 500MHz rate. However, because you are receiving timing violation errors, I would imagine that this is due to the logic propogation delays inherent in the use of FFT functions due to the size of logic required for implementation; this is entirely dependant on the configuration of the FFT in terms of Bit Width and Word Length. When making use of the FFT Function, you are shown the Configure FFT Window which tells you directly the latency in its operation; you can make use of this information to confirm whether or not it would successfully operate under a particular clock frequency.

 

Signal Simulation - There are no timing diagrams built into LabVIEW FPGA, however even through LabVIEW FPGA we can make use of the standard debugging tools such as Highlight Execution and Probes in order to affirm correct operation of developed hardware code. By knowing how fast particular loops operate, from this we need only look at Front Panel Indicators to see if the data itself is as expected. If you wanted to see the signals produced, you could use a high speed digitizer on the pins.

 

I hope this helps.


Alex Thomas, University of Manchester School of EEE LabVIEW Ambassador (CLAD)

0 Kudos
Message 7 of 7
(2,628 Views)