LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How to enter "Z"- tristate in 1DU32 or 2DU32 digital data

When I use niHWS Append Digital Samples.vi, I can use the "Force Z" (tristate) input to fill up the space if one waveform has less signals. And when I look at the digital data indicator on front panel, the binary data section has those "Z" letters. Here is the question: If I need a digital waveform to be generated that needs to have some Z's in there, I can't do it in the Waveform Editor obviously. What format should I use to read the HWS file in and how can I insert/modify a sample with a "Z"?
I tried LabView Data Storage section, found nothing. Please don't tell me to use the niHSDIO Set Tristate.vi. Someone asked similar question about 6 months ago, I don't think it was answered.
In other words, how can you do a DYNAMIC digital generation that has tristate samples?

Another question on PXI-6551, can I acquire on a channel during tristate? It may not make any sense, but I need to know.

I got a support call #667-663 that I was told to have answers from your application engineer TODAY. I am still waiting.

Thanks in advance.
0 Kudos
Message 1 of 7
(3,046 Views)
Hi CT,

We currently do not support dynamic tristate by inserting Z's in the data. For now, the idle state is the way to do this, but it obviously has drawbacks. Also, the Editor does not currently support Z states.

I see how this is frustrating, and I'm working with the HSDIO Product Support Engineer for a viable workaround.

In reference to the second question, the channel will not respond to software commands during tristate, so acquisition is not possible.

Thanks for your patience!

Chad AE
Applications Engineer
0 Kudos
Message 2 of 7
(3,027 Views)


@Chad AE wrote:
Hi CT,

We currently do not support dynamic tristate by inserting Z's in the data. For now, the idle state is the way to do this, but it obviously has drawbacks. Also, the Editor does not currently support Z states.

I see how this is frustrating, and I'm working with the HSDIO Product Support Engineer for a viable workaround.

In reference to the second question, the channel will not respond to software commands during tristate, so acquisition is not possible.

Thanks for your patience!

Chad AE
Applications Engineer




1. I thought the only way to read from a port that is also set up for generation is to put in in tristate mode?

2. I have a 6552, and unfortunately have to turn part of the bus around for a read from our device, while still generating control signals on some of the lines. Related to the above, can I do the following:

- generate part of my sequence in a first waveform
- use the tristate function to tristate the lines I need to read from
- setup my acquisition on the tristated lines, and trigger on a generated control line
- send the second part of my sequence (only to the non-tristated lines) while reading from tristated ones?

The only other solution I can see is to completely initialize a generation session with all of the lines I need to send, then close it, open another one with the smaller subset, while reading from the remaining lines?

Obviously, I can't do what I need by using an idle state, because some of the bus still needs a sequence generated on it. Is there a solution?

Also, can you give me a better explanation of just what the heck the tristate function does, or how it works?

Cheers,
Avner
0 Kudos
Message 3 of 7
(3,008 Views)
Hi Avner,

In response to your questions:

1. I thought the only way to read from a port that is also set up for generation is to put in in tristate mode?

This is true. Tristate mode is another way to say a channel is in a high-impedance state. This is the preferred state for acquisition.

2. I have a 6552, and unfortunately have to turn part of the bus around for a read from our device, while still generating control signals on some of the lines. Related to the above, can I do the following:

- generate part of my sequence in a first waveform
- use the tristate function to tristate the lines I need to read from
- setup my acquisition on the tristated lines, and trigger on a generated control line
- send the second part of my sequence (only to the non-tristated lines) while reading from tristated ones?

This method will work. When you send the second part of your sequence, even if you did write to the tristated lines, they will only change internally. The output of the tristated lines will remain disabled until you call the tristate function and use false as an input.

The only other solution I can see is to completely initialize a generation session with all of the lines I need to send, then close it, open another one with the smaller subset, while reading from the remaining lines?

This would work, though you'll have a little more programming to do.

Obviously, I can't do what I need by using an idle state, because some of the bus still needs a sequence generated on it. Is there a solution?

You stated above a valid method. Using niHSDIO Tristate Channels you can change a number of channels to tristate while leaving the rest enabled.

Also, can you give me a better explanation of just what the heck the tristate function does, or how it works?

You can programmatically set the input impedance of DIO<0..19> and STROBE to be 50 Ω or high-impedance (10 kΩ). The main application of 50 Ω is in matched impedance systems. In these systems the DUT source impedance is 50 Ω and the NI 655X input impedance is 50 Ω. This system has the benefit of no signal reflections, at the cost of one half the signal amplitude.

If you're curious why you have to sacrifice one half the signal amplitude, you must remember the impedance systems are matched. You have a 50 Ω source impedance, a 50 Ω input impedance, and 50 Ω termination. The voltage measured at the input of the 6552 is the following:

VI/O = VSource(RTerm/(RTerm + RSource)) = VSource(1/2)

where

VI/O is the voltage seen at the NI 655X connector
VSource is the voltage driven by the source
RTerm is the input impedance
RSource is the source impedance

Now, if you're willing to tolerate minor reflections, using high-impedance (10 kΩ) will eliminate this loss.

VI/O = VSource(RTerm/(RTerm + RSource)) = VSource(10,000/10,050) = VSource(.995)

niHSDIO Tristate Channels forces a number of channels into this high-impedance state. The channels remain tristated until the tristate function is called again with a false input. Then you once again will be able to control the channels normally.

Other tidbits->
Channels stay tristated while the session remains open. Closing the session does not affect the high-impedance state of the channels, but future sessions will be able to control the channels.

Let me know if you have further questions or if this does not resolve your issue!

Chad AE
Applications Engineer
Message 4 of 7
(2,991 Views)
I have a follow-on question: I'm using the CB-2162 breakout board and only connect some of the data channels to my DUT. Should I tri-state the unconnected data channels on the software side of things? Should I terminate them on the breakout board? If so, what resistance value should I use?

Thank you in advance for your help!
Regards,
Michelle
0 Kudos
Message 5 of 7
(2,968 Views)
Hi Michelle,

In response to your follow-up questions:

Should I tri-state the unconnected data channels on the software side of things?

The tristate implementation is used with digital acquisition so the voltage at the input of your board is the same as, or very close to, the voltage sourced from your DUT. In your case, because they are not connected, there is no purpose in tristating these channels, unless you want to know they are at a high-impedance state.

Should I terminate [the unconnected data channels] on the breakout board? If so, what resistance value should I use?

Proper termination allows users to maximize signal quality and minimize the effects of signal reflections in high-speed acquisitions and generations. Because they are not connected, there is no purpose in terminating these channels.

For your connected data channels, it is your decision whether or not to terminate the channels.

Unterminated Generation: A common configuration for your NI 655X is to connect the output terminals of your NI device directly to your device under test (DUT). Most digital logic inputs have an input impedance of 1–10 KΩ. Since your NI 6552 was designed to be used in a 50 Ω environment, connecting the NI device output terminals directly to the input of your DUT effectively creates an unterminated load configuration. While this unterminated configuration does not provide the absolute highest level of signal quality, there are advantages to an unterminated configuration, such as (1) unterminated configuration allows you to directly wire to your DUT without the need for additional termination resistors, and (2) very good signal levels are still possible if you ensure that you have the cleanest possible 50 Ω characteristic impedance transmission line. For a DUT with an input impedance of 1 kΩ, programming a generation voltage level of 3.3 V at the NI 655X source produces a 3.3 V * (1000/1050) = 3.14 V swing.

Terminated Generation: For applications requiring the highest levels of signal integrity and timing accuracy, NI strongly recommends carefully controlling the termination impedance at the end of the transmission line. To control the termination impedance, add a parallel termination resistor to ground as close as possible to the digital input pin of the device under test (DUT). In this configuration, the transmission line is terminated at both ends of the transmission line, which produces the highest possible signal integrity. For a DUT with an input impedance of 50Ω, programming a generation voltage level of 3.3 V at the NI 655X source produces a 3.3 V * (50/100) = 1.65 V swing.

NOTE: Though signal integrity and timing accuracy is preserved - there are no reflections - notice the voltage is halved. This must be taken in account, and you may consider using unterminated generation to preserve the largest possible voltage swings at the DUT.

Acquisition: The NI 6552 has input impedance settings of 50Ω and 10 kΩ. Using an input impedance of 50Ω will maximize signal quality and minimize the effects of signal reflections when the signal originates from a 50Ω source and is carried across a transmission line with a characteristic impedance of 50Ω. The 10 kΩ high-impedance load configuration is easy for a source to drive, since it does not present a significant DC load to the source, and preserves the signal amplitude.

Let me know if you have further questions or if this does not resolve your issue!

Chad AE
Applications Engineer
Message 6 of 7
(2,947 Views)
Thanks for your help! I think I can be up and running soon...
0 Kudos
Message 7 of 7
(2,922 Views)