Discussion:
setting individual delay for PXI - 6552 channels
(too old to reply)
AshishMaharjan
2008-08-07 18:40:06 UTC
Permalink
I am using Digital Waveform Generator(DWG) to generate an stimulus and response waveform. Three 6552s are used for 60 I/O channels.
Because of timing issue with the signal processing I have to make sure that waveforms sent through certain channels are generated and acquired after certain delay relative to another signal.
For example lets say
Signal-A: 1 0 1 0 1 0 1 0
Signal-B: 1 1 0 0 1 0 1 0
Singal-C: 0 1 1 1 0 1 0 1
 
What can I do if I need Signal-B to be generated 7ns after Signal-A
                             and Signal-C to be generated 13ns after Signal-A
 
By the way, I am using Hardware Compare - Fetch Error records.vi
 
Is there any way to do this in either Labview or DWG?
DJ L.
2008-08-08 18:40:08 UTC
Permalink
Hey AshishMaharjan,
 
Depending on which boards your channels are being used on, and depending on what rate you are running your clock at, you might be able to do this. I would recommend that you use the Data Delay feature of the 655x boards. With Data Delay, you can delay your data to a certain percentage from the clocks rising edge. Here is some information that can be found in the <a href="http://digital.ni.com/manuals.nsf/websearch/28328731D00E483786257361005589B4" target="_blank">NI Digital Waveform Generator/Analyzer Help</a> document:
&nbsp;
"Data and Clock Position --&nbsp; Your NI digital waveform generator/analyzer allows you to configure the subperiod time at which each waveform sample is generated or acquired. This subperiod time selection is referred to as the data position. You can also configure the position of the exported Sample clock (clock position). Configuring data and clock positions allows you to use your NI digital waveform generator analyzer for many common applications including, among others, measuring set-up and hold times, measuring propagation delays, and maximizing the timing margins among high-speed data transfers.
&nbsp;
Delay from Sample clock rising edge?Data is generated/acquired at a specified time (specified in the niHSDIO Configure Data Position Delay VI or the niHSDIO_ConfigureDataPositionDelay function) after the rising edge of the clock driving the operation. The&nbsp;data&nbsp;position delay resolution depends on your clock frequency.&nbsp; Refer to the Acquisition and Generation books for your device for timing diagrams illustrating changing data position."
&nbsp;
You can choose to generate your data on the Rising Edge of your clock, the Falling Edge of your clock, or at a Delay from the rising edge of the clock. This is settable for each channel, but you can only have one Delay value for each board for generation.&nbsp;So channel 0 can be rising edge, ch1 can be delay of 70%, ch2 can be falling edge, ch3 delay of 70%, ch4 rising edge, etc. etc. So if you need two delay values, then you need to have multiple boards. (You can also set up a delay value for all of your Acquisition channels as well, which can be different from your generation value)&nbsp;So if I understand your system setup correctly, you could have all three of your boards TClk'd together so their clocks are synchronized. Then you could have Signal A be off of the rising edge of board one, Signal B could be a Delay of 7 ns (at 100 MHz, which is 10 ns between clock pulses, you can choose a 70% delay from board one, and finally Signal C (13 ns)&nbsp;could be one clock cycle and a 30% from the rising edge. If you are running at 50 MHz (20 ns) then you can do a delay of (7/20)% and (13/20)%. Also, check out the following KnowledgeBase document called <a href="http://digital.ni.com/public.nsf/allkb/53BFD784329FF5BD86257210005D2004?OpenDocument" target="_blank">Handling HSDIO Data Delays Greater Than 100%</a>.
&nbsp;
Now if I misunderstood what you are trying to do, then&nbsp;please clarify in more details. For example maybe you are trying to have a waveform that uses all 60 channels be generated for a certain number of samples, like 1000 samples. Then after waveform A is done generating all 1000 samples, you want to wait 7 ns and then generate waveform B for 100 samples. This is not possible to wait a subset of a sample between 2 waveforms. I don't think this is what you are trying to do, so Data Delay should work for you, but just for reference, I am letting you know about this use case. You can set the number of sample clocks to wait between two waveforms, but not a subset of a sample clock.
&nbsp;
Check out the example programs called Dynamic Generation with Data Delay.VI and Round Trip Delay Elimination.VI. Hopefully these will help you add this functionality to your program. Let me know if you have any questions
AshishMaharjan
2008-08-11 15:10:10 UTC
Permalink
Actually I am using all 60 channels. Around 40 of them will be for input 0s,1s and Zs and around 20 of them will be for output compare H, L and X. Since this is a pattern check, the inputs have to processed and outputs compared immediately. There are more than 30K patterns that I am going to test. There are different delay values for different group of signals. So I need to different channels in the same connector to have different delay values. Can you please help me in doing this.
&nbsp;
Thanks for helps.
DJ L.
2008-08-11 20:10:09 UTC
Permalink
Hey AshishMaharjan,
&nbsp;
All the channels in the session that use delayed sample clock to position data must have the same delay value, on one board. You can have 2 delay values per board, but only one for generation, and one for acquisition Per Board. So unfortunately if you need multiple delays for generation&nbsp;on one board, you will not be able to do it with the built in functionality of the 655x. But there might be ways around it, depending on the flexibility of your application. For example, check out this other user trying to do something similar in this <a href="http://forums.ni.com/ni/board/message?board.id=70&amp;message.id=8954&amp;requireLogin=False" target="_blank">discussion forum post</a>. Depending on what rate you are trying to run the clock at, you have some options. You can use the Rising Edge, Falling Edge, and Delay Value of the clock. Also, you can set up your data to be delayed by a certain number of clock cycles. So for example if you used a 100 MHz clock with 10 ns between rising edges, and then chose 70 percent as your delay, and also delayed your one channel by one sample, you would get 7ns and 14ns, which is close to your 13 ns time. You might be able to slow down the sample clock as well and get some of your times using the falling edge of the sample clock. Also, oversampling and setting up your data to&nbsp;get the times you need might also help you do what you are trying to do.
&nbsp;
So there are some methods that you can try to get different delay values on one board. Since you have 3 boards, you have 3 delay values for generation, and 3 for acquisition, but again, only one per board (connector). I hope this helps. Please let me know if you have any further questions or concerns. Thanks, and have a great day.
&nbsp;
Regards,
DJ L.
AshishMaharjan
2008-08-11 20:10:10 UTC
Permalink
Thanks DJ L. for your quick reply. I will try to find some way around as you suggested.
AshishMaharjan
2008-08-12 18:40:09 UTC
Permalink
I realized that i can create only few delays. In the mean time I was trying to embed delays in the waveform pattern itself. So I am trying to create waveforms with higher frequencies like in 1GHz, so that each time period is 1ns. Then I will put high Zs in front of the signals to meet my delay requirement.
I know&nbsp;PXI-6552 has&nbsp;onboard clock limitation of 100MHz.&nbsp;
Where I am confused at this point is I don't see how this limitation and the rate in my waveform editor (100GHz) are affecting data generation and acquisition.
I am looping back first 10 channels(Ch1 thru Ch10)&nbsp;to remaining 10 channels(Ch11 thru Ch 20). My&nbsp;count up stimulus waveform is at 20MHz rate, count up stimulus waveform is at 1GHz and the sample clock rate in labview dynamic generation and acquistion VI is at 50MHz.
The result is data matches no matter what frequency I put in any of these. (less than 100MHz for sample clock rate)
&nbsp;
Can anyone suggest the role of these frequencies!!
My guess is no matter at what rate I my stimulus and response waveforms are, the VI will take each sample and generate those samples at sample clock frequency(50MHz) and since the clock for acquistion is linked to sample clock, acqusition is also done at 50MHz.
&nbsp;
If this is the case can I use external 1GHz clock source and embed delays as I said before? Suggestions and ideas please.
&nbsp;
Also, any brilliant idea on generating return to zero waveforms?
&nbsp;
&nbsp;Message Edited by AshishMaharjan on 08-12-2008 01:18 PM
Raajit L
2008-08-14 21:10:08 UTC
Permalink
Ashish,&nbsp;The work arounds that DJ mentioned (oversampling to &quot;simulate&quot; data delay) can only be used at lower frequencies.&nbsp; You mentioned a digital signal of 1Ghz.&nbsp; Currently we do not have any products that can generate a signal at that high a frequency.&nbsp; As you already know, we can use a 100 Mhz clock on the 6552 for 100 Mhz signals and on the 656X boards we can use DDR to generate 400Mbps (only LVDS), but that is about the maximum that we can generate.&nbsp;&nbsp;I noticed that you do have three boards that you can use.&nbsp; You can have three different values on all three boards and then use TCLK to synchronize all the boards so that you are expanding your channel count with very tight synchronization.&nbsp; Essentially, what you would be doing is using one board for one waveform.&nbsp; As you mentioned in your first post, you can output wavform A on board 1 and Waveform B on board 2 ... etc.&nbsp; You can then apply a data delay of 1/256 (minimum resolution) on boards 2 and 3 to acheive the data delay that you want. &nbsp;Coming back to oversampling the data though, since this is a 100Mhz clock we can take a 10 Mhz signal and &quot;Data delay&quot; it by 1/10 intervals since we are over sampling it 10 times.&nbsp; So since you have a 20 Mhz&nbsp; clock we can over sample it at 100Mhz and basically have &quot;data delay&quot;s of 1/5 resolutions. &nbsp;&nbsp;As far as your 1Ghz signal, maybe I am misunderstanding something but I do not see how you are trying to output that signal using the current board that you have. &nbsp;I also noticed that you are using the Hardware Compare - Fetch Error Records VI.&nbsp; This VI requires you to synchronize the clock and the trigger values, i.e. connecting DDC clock to STROBE and PFI1 to PFI2.&nbsp; Are you already doing that?&nbsp; If you are doing that some of&nbsp; your data delay might not apply on the acquisition side of things because you are triggering everything.&nbsp; You might need to delay your trigger as well.&nbsp; Let us know exactly how you have modified this example currently, or if you have modified it at all and we can dig a little more into that. &nbsp;Hope some of that helps.&nbsp;Regards, Message Edited by Raajit L on 08-14-2008 03:44 PM
Raajit L
2008-08-14 21:10:09 UTC
Permalink
Ashish,&nbsp;Something else that I wanted to mention is that the Digital Waveform Editor will not restrict your rate to the maximum that your board can handle, which is why you are able to create waveforms which are upto 1Ghz.&nbsp; The reason for this is that you can use the DWE (Digital Waveform Editor) to create and save waveforms which can be used with other devices which might be able to sample at that rate.&nbsp; However, when you are using the 6552 for example, the sampling will still be done at 100Mhz maximum, even though you might have specified 1Ghz in the DWE.&nbsp;Cheers, Message Edited by Raajit L on 08-14-2008 04:04 PM
AshishMaharjan
2008-08-15 18:10:10 UTC
Permalink
Thanks Raajit.Yes, I actually need to delay the acquisiton also. How do I do this in Hardware Compare - Fetch Error Records VI? Where do i keep the dalay tool?
Loading...