LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

NI 9262 at 1 MS/sec per Channel in FPGA

I have a CompactRIO with an 9262 module.  I am trying to achieve a 1 MS/sec update rate on multiple channels of the NI 9262 per the datasheet specification.

 

LotsaMotsa_3-1642441425153.png

 

Would someone from NI be able to provide an example of how to generate the Write I/O and Generate I/O Sample Pulse timing in FPGA user logic using the User Controlled I/O nodes?  I need an example of how to interleave the writes with correct timing.

 

LotsaMotsa_0-1642440686823.png

 

Note: Without having cycle-accurate timing via a third-party simulator (i.e. ModelSim) this is difficult for the end user. 

 

I am curious why you advertise this way but not provide adequate documentation/example code for the end user?

 

0 Kudos
Message 1 of 6
(348 Views)

Have you reviewed the shipping examples for this device?


Certified LabVIEW Architect, Certified Professional Instructor
ALE Consultants

Introduction to LabVIEW FPGA for RF, Radar, and Electronic Warfare Applications
0 Kudos
Message 2 of 6
(339 Views)

Yes, there is an example called NI 9262 User-Controlled Sampling (FPGA).  Below is a screenshot of the example

 

LotsaMotsa_0-1642442827395.png

 

 

Not very useful as there is no documentation describing how the Write I/O Node Pulse, Generate Sample Pulse, and Get I/O Write Status are generated and the related timing information.

Do you know where I can find that?

 

In the LabVIEW FPGA training, it said that the AO node takes ~35 ticks. 

How did they achieve this number?

 

LotsaMotsa_1-1642443063575.png

 

 

Also, what is the timing relationship between the AO Write Pulse and the Write Completed status pulse? 

 

In the example code, the Write Completed Pulse controls the Generate I/O Sample Pulse how do you know what the timing looks like?

 

0 Kudos
Message 3 of 6
(326 Views)

Here is the output from the provided example on AO0.  On AO0 6 V is showing up with periodic spikes every 1 us.  From my understanding, the output should be solid 1 V or 1 V pulses from the DAC.  Looks like some of the data from AO5 is coming out on AO0.  This is running the stock example.

 

This is where a cycle-accurate simulation would be very useful.  Otherwise, debugging the FPGA code is a guessing game.

 

Plus, here is an interesting comment on the RT Front Panel

LotsaMotsa_0-1642451943501.png

 

RT Front Panel

LotsaMotsa_0-1642451669420.png

 

Scope (AO0)

LotsaMotsa_1-1642451694979.png

 

RT

LotsaMotsa_2-1642451863108.png

 

FPGA

LotsaMotsa_3-1642451893798.png

 

 

 

 

 

 

0 Kudos
Message 4 of 6
(292 Views)

The RT is sending data every millisecond which matches up to your plot.

 

Do need the signal generation on RT or the FPGA?

 

I hear you on documentation per hardware.

 

See https://www.ni.com/en-us/shop/compactrio/compactrio-developers-guide.html

 

Should give you a good starting point.


Certified LabVIEW Architect, Certified Professional Instructor
ALE Consultants

Introduction to LabVIEW FPGA for RF, Radar, and Electronic Warfare Applications
0 Kudos
Message 5 of 6
(268 Views)

So I'm "simulating" some code using Simulated I/O, trying to get the analog out buffer to preload as described in slide #8 of the powerpoint that I randomly stumbled across on the forum.

 

For some reason during my "simulation", the Write Complete signal never goes high.  How do you make Write Complete go high?

 

There is definitely data getting written to the analog output node in the simulation.  I can see the loop run and the data go into it.  The data changes back and forth between -10 and 10.  There should be a pulse on the Write node.  Why does Write Complete never go high?

 

I assume "Write Complete" is some kind of acknowledge that comes from the C series bus (SPI) that NI didn't document anywhere or have any information on.  Is this correct?

 

This is just me guessing because nothing is written anywhere.

 

LotsaMotsa_1-1642465215131.png

 

 

LotsaMotsa_0-1642465136011.png

 

The reason I assume I need to wait for Write Complete to toggle twice is because that piece of code appears to be in the User Controlled I/O example for the 9262.  The example code checks to see if Write Complete asserts twice.  When Write Complete has asserted twice, Generate Sample Pulse goes high, the loop stops, and Sample Pulses are generated every 1 us.  Is this correct?

LotsaMotsa_2-1642465460317.png

 

LotsaMotsa_3-1642465498522.png

 

So, how would I get this to work in "simulation"?

 

How about since I paid a bunch of money for a cRIO and several modules I get a real simulation environment like every normal person developing FPGA's.

 

 

 

 

0 Kudos
Message 6 of 6
(251 Views)