Monday, May 4, 2009

M228 1MSPS Aperture A/D (Part 2)

It has been three long months since posting the first in this three part series on the new M228 Aperture A/D M-Module. Those three months have been filled with a lot of hard work on, among other things, improving and finalizing the EM405-8 Scripting Utilities. All the while, I haven't forgot about the M228 and would like to continue the discussion with a description of the unique aperture features of this module.

As I touched upon in the first post of this series, the aperture feature controls the M228's decisions on whether or not to store an A/D sample. The M228 performs an A/D conversion at every tick of the sample clock (up to 1 Mega Samples per Second) but it does not necessarily store every A/D conversion into the 32 Meg Sample FIFO. Of course, using the force store feature, the module can be configured to store every conversion, but if that was the only mode of operation, this article would be over when in fact, we are just getting started. The decision by the hardware of whether or not to store a particular sample is based on the current A/D value (the one which the decision is to be made on), the last stored A/D value, the settings of the aperture window(s) and the aperture mode. As shown in the figure below, using the aperture feature can greatly reduce the amount of data required to be stored, parsed, and transferred across the system bus (note: the image uses aperture mode 0 discussed below).

(click image to zoom in)

The M228 has two aperture windows. Each aperture window has a high and a low value. The meaning of each value and how the values are used in the decision making process depends on the aperture mode. They will be discussed for each mode below. In some aperture modes only one aperture window is used, in other modes both aperture windows are used. I can't describe much else without getting into the various modes...so lets get to them. In order to keep this article a reasonable length, I will refrain from using examples for each mode and let your imagination do the job.

Aperture Mode 0 - “Store if outside selected aperture window”

Aperture Mode 0 allows the user to store data only if it changes more than a specified amount from the last stored value. For instance, if only signal changes greater than 200mV in the positive direction and 100mV in the negative direction are important, the user can specify Aperture Mode 0 and set Aperture High to 200mV and Aperture Low to 100mV. The A/D reading will be stored if the value is greater than the last stored value plus the Aperture High value or it is less than the last stored value minus the Aperture Low value. In this mode, only positive aperture values can be specified. Since the A/D value is always compared against the last stored value, this mode can be visualized as a window that floats with the signal. Each time a value is stored, the window is repositioned to this level. In this mode, aperture high and low setting of zero causes the M228 to store all.

Aperture Mode 1 - “Store once outside selected absolute window A and outside of aperture window B”

Aperture Mode 1 allows the user to start storing data once the signal level is outside of a specified absolute window, in effect setting a trigger level. For example, if the user would like to start storing data if the signal rises above 1V, Aperture High A would be set to 1V and Aperture Low A would be set to a large negative value. Operation begins with Aperture Set A. If the signal level is outside the specified absolute aperture window the logic stores the value and switches to Aperture Set B. Operation continues with Aperture Set B acting exactly like aperture mode 0 until the FIFO is reset.

Aperture Mode 2 - “Store if outside absolute window A and outside of aperture window B”

Aperture Mode 2 allows the user to only store data if the signal level is outside of a specified absolute window and the delta from the last value stored is greater than some amount. The mode is similar to Aperture Mode 1, except data is only stored if it is outside of the absolute window specified by Aperture Set A. In other words, in contrast to Aperture Mode 1, if the signal returns inside the absolute window, storage will cease until it leaves the absolute window again. Outside of the absolute window, Aperture set B is used exactly as in Aperture Mode 0 and 1.

Aperture Mode 3 - “Store once inside selected absolute window A and outside of aperture window B”
Aperture Mode 3 allows the user to start storing data once the signal level falls inside of a specified window. This mode is very similar to Aperture Mode 1, except data storage will begin if the signal falls or rises to be within a specified window.

Aperture Mode 4 - “Store if inside absolute window A and outside of aperture window B”

Aperture Mode 4 allows the user to only store data if the signal level is inside of a specified window level. This mode is very similar to Aperture Mode 2, except data storage is stored only if the signal is inside a specified window.

Aperture Mode 5 - “Store if outside both absolute window A and B”

Aperture Mode 5 allows the user to store all data that is outside of two absolute windows. For example, if data storage is not important when the signal is between -2V and -3V or between +4V and +8V, aperture set A would be set to -2V and -3V and aperture set B would be set to +8V and +4V. Data will be stored on every sample clock that the data level is not within one of the specified windows.

Aperture Mode 6 - “Store if inside either absolute window A and B”

Aperture Mode 6 allows the user to store all data that is inside of either absolute window. This mode is very similar to Aperture Mode 5, except data is stored only if it is inside either window.

Hopefully, from the above aperture mode descriptions, one can draw enough information to realize the advantages of the data extraction techniques of the M228 and imagine their use in a real world application. The M228 is the most powerful instrument in our transient data acquisition offering. You can download a brochure of our transient data acquisition solutions here.

The final part of the M228 series of articles will discuss the analog front end of the module. With a selection of programmable filters and a set of programmable attenuators and amplifiers, the types of signals that can be acquired by the M228 are numerous.

Friday, January 30, 2009

M228 1MSPS Aperture A/D (Part 1)

We are excited about our newest M-Module, the M228 1MSPS Aperture A/D. In fact, we are so excited that I'm planning not just one, but a series of articles about this module, this being part 1. This module has some unique features that position it well in the data acquisition market.

First the basics: The M228 is a 1 Mega-sample per Second (MSPS) 14-bit A/D Converter capable of sampling and storing differential analog signals (up to +/-60V) at a rate up to 1MSPS. All samples can be stored at the specified sample rate or an aperture feature allows real-time selective storage of samples based on software configuration. A 32-bit timestamp is stored along with the data to allow correlation of stored data with real time. The data and the timestamp are together referred to as a time-value pair. The M228 is capable of storing up to 32M time-value pairs in onboard RAM.

The aperture feature will be discussed in detail in part 2 of this series but it merits a brief description here. The basic behavior of the aperture feature is that an aperture window will be configured using aperture high and aperture low settings. When an A/D sample is within this window, the data is discarded. When an A/D sample exceeds this window the sampled data is stored along with its 32-bit timestamp. The aperture windows (there are actually 2 aperture windows) can be configured in many different ways providing a lot of flexibility in how the user configures the M228 to selectively store samples. For example, the aperture window can be fixed to absolute values or can be relative to the last stored value in which case the window will move along with the analog signal whenever it exceeds the current aperture window. Again, the details of the aperture feature will be discussed in part 2.

On a side note, the notion of selectively storing data is a concept that we term data extraction. At a higher level, we classify it as transient data acquisition. In data extraction, the hardware is configured to extract only the data that is of interest to the user thus reducing the amount of data that needs to be stored and reducing the amount of software and processing power needed to analyze the data. In addition, since the hardware knows which data is of interest, it can be programmed to perform other task on events that cause data storage such as generating interrupts and triggers. C&H Technologies has a number of products that fit the descriptions of data extraction and transient data acquisition. An overview of those products can be found here.

Finally, an A/D converter module is only as good as its analog front end. Like the aperture feature, this will be the topic of a future post in this series but it merits a brief description in this post. The M228 has a highly flexible, software-configurable analog front-end including the selection of a programmable Elliptic anti-aliasing filter, a programmable Bessel anti-aliasing filter or a direct (filter bypass) mode. In addition, programmable amplifier and divider circuits allow for sampling of differential analog signals of up to +/-60V. Further, calibration adjustments and a storage EEPROM for calibration values allow system level calibration to ensure precise measurements.

As you can tell, the M228 is a highly capable data acquisition module. With the flexibility of the M-Module format, it can answer many data acquisition challenges, regardless of the environment. Stay tuned for parts 2 and 3 where I will discuss more details about the unique features of this card.

Friday, January 2, 2009

2008 - Year and Review

Everyone else is doing it so why shouldn't we. There is a reason everyone takes this time to review the events, accomplishments and failures of the previous year. It is therapeutic, motivational and healthy to start anew by looking at where you've been. So without further ado, here is C&H's year in review:
  • M215 Signal Conditioning M-Module- In January, we introduced the M215 which provides special purpose signal conditioning for low speed signals. It has two debounce channels designed to cleanup noisy switch contact closure signals and a very versatile quad window comparator function for monitoring voltage, current, or resistance.
  • VX402C-64 High Power Option - In May, we released two new versions of the VX402C-64 VME64 carrier that provide increased +5V and +3.3V power to the VME card. These new versions provide up to 34W of +5V power and up to 21W of +3.3V power. Previous versions (which are still available under an ordering option) provided 34W total for the combined +5V and +3.3V power supplies.
  • MA209 ( reference disciplining improvements) - In June, we introduced an upgrade to the MA209 100MHz Pulse Generator M-Module providing enhanced reference disciplining functionality. This logic allows the MA209 to discipline its internal clock to a highly stable external clock source such as a M213 GPS Timing Receiver. This functionality greatly improve the frequency stability of the MA209 pule output. See the related blog for more details.
  • VXI Linux Development Kit - In July, we completed and introduced a Linux Development Kit for our VXI Intelligent Carriers. This kit includes hardware, software and documentation that allows the customer to easily develop embedded applications running on our VX406C, VX407C and VX411C VXI intelligent carriers using the Linux operating system.
  • M227 Programmable Clock/Counter/Timer M-Module - In August, we introduced the M227. This M-Module is a highly flexible timer, counter and clock source module. It's flexibility allows for it to perform standard counter/timer tasks as well as unique time based functions. See the related blog for more details.
  • EM405-8 Mass Storage Option - In October, we announced a new Mass Storage Option for the EM405-8 LXI M-Module Bridge. This options provides 16 Gigabytes of non-volatile storage internal to the unit allowing a large amount of collected data to be captured and stored without overloading the Ethernet network.
  • M228 1MSPS Aperture A/D - In December, we introduced the M228 M-Module. The M228 is a 1MSPS A/D M-module capable of selectively storing A/D values based off a set of programmable aperture values. It contains 32 Megasamples of onboard memory and includes highly programmable front-end analog logic. Stay tuned for a future blog post discussing this module in detail.
  • EM405-8 Scripting Utilities - Also in late December, we introduced the addition of scripting utilities to the EM405-8 LXI M-Module Bridge. Scripting allows the user to develop on-board embedded software to control the EM405-8 and associated M-Modules. This provides vast performance improvements and allows the user to further customize his/her application. Like the M228, this upgrade will be the topic of an upcoming blog post.
A couple other notable events:
  • C&H staff contributed to the August Evaluation Engineering Instrumentation Test Report with an article about M-Modules. Evaluation Engineering's Instrumentation Test Report is a feature of their electronic media. The article can be read online here.
  • The EM405-8 was one of the featured products and C&H's Vice President and CTO, Gary Guilbeaux provided comments in the January 2009 Evaluation Engineering magazine. The article can be read online here.

Sunday, November 16, 2008

M227 Programmable Clock/Counter/Timer M-Module

The newest module in our quiver of M-modules is the M227 Programmable Clock/Counter/Timer M-Module. Newly released, this module is extremely flexible and, thus, provides a large number of possible timing functions. The module has three 32-bit counters capable of running up to 50MHz, two programmable front panel inputs, three programmable front panel outputs and two backplane trigger lines.

The inputs can be used to synchronize and control the three 32-bit counters. The inputs can start/stop a counter, gate a counter, clock a counter, latch a counter value, and reset a counter. The two inputs and the two backplane triggers can be routed to any of the three counters and the two front panel inputs have a programmable threshold, level sensitivity and input impedance.

The outputs can be configured to be any of the various clocks running onboard the M227, a counter carry signal, or counter match signal. It is also possible to route the outputs to an input of one or more of the counters so that the counters can be daisy chained or so that the state of one counter can control the state of another counter. The four divider networks, the clock prescaler and the three counters allow the M227 to generate clock/timing signals of just about any frequency up to 50MHz.

In addition to the high level of flexibility in the counters and the I/O, the M227 has clock disciplining logic that allows it to discipline it's internal clock to a highly accurate clock such as from an ovenized oscillator like the M207 or to the 1PPS/100PPS signal of a GPS timing module like the M213.

It is impossible to imagine all the possible functions that can be created with the M227. It's flexibility makes it a great solution to most standard counter/timer application as well as to many applications where the counter/timer function is less ordinary. Hopefully the brief description in this article helps you wrap your mind around the possibilities.

On a side note, the M227 was designed to include all the same functionality of the VX491C Counter/Timer VXI module. Two M227's on a VXI carrier can replace one VX491C, leaving room for other functionality (up to 4 more M-Modules) in the same VXI slot. Or the functionality can be moved to a different platform such as PXI and LXI.




Wednesday, August 27, 2008

Busy, busy, busy...

I have been slacking lately when it comes to writing this blog but I promise that the engineering team at C&H has not been slacking when it comes to development. Let me try to update you as to what has been going on.
I personally have spent a significant portion of time over the last couple months completing our Linux Development Kit for C&H's VXI Intelligent Carriers. We have supported Linux for a couple years now and we have several customers that have had great success developing applications utilizing Linux on our intelligent carriers. Up to this point however, our documentation and support has been rudimentary requiring the developer to have advanced knowledge of embedded Linux development. The Linux development kit includes documentation, hardware and software that accelerate Linux development on C&H's intelligent carriers and greatly lowers the bar for developing an application.
In my last post I discussed reference disciplining. That post was a conclusion of an effort to upgrade the reference disciplining feature our MA209 100MHz Pulse Generator. The new reference disciplining features greatly improve the functionality of the MA209 and deliver greater frequency stability of pulse waveforms.
In addition to those two items, we have been hard at work completing our latest M-Module, a 3-Channel Counter/Timer module with immense flexibility that can provide both source and measurement functions. This new product will be featured soon on our website and will be a topic on this blog as soon as the product release is official. We also have in the works, an exciting update to the EM405-8 LXI M-Module Carrier and a new Data Acquisition M-Module, both to be completed by the end of the year.
Finally, in just over a week, we'll be off to Autotestcon in Salt Lake City. This gives us a chance to catch up with what the rest of the industry is doing, to collaborate with peers and colleagues from other companies and to showcase our products at one of the ATE industries' largest trade shows.
It has been a quick and busy year so far. If you follow this blog you may get the impression that not much has been going on at C&H over the last few months. In reality, the lack of activity on the blog is indicative of just the opposite. Between now and the end of the year, I should have a lot to write about as most of our recent work comes to fruition.

Thursday, July 3, 2008

Reference Disciplining

Time-based measurements and periodic signal sources are only as accurate as the frequency reference that is driving the measurement or signal. Oscillators used to provide the reference can vary greatly in type and frequency precision. In addition to the physical type of the oscillator, environmental conditions, such as temperature, can effect both long term and short term frequency stability.

Reference disciplining is a technique of using a highly stable frequency standard to adjust the frequency of the internal oscillator of an instrument to near (typically within one decade) that of the external reference. Using reference disciplining, the long term stability and accuracy of the internal oscillator and thus the accuracy of the measurement or signal source can be greatly improved.

For example, C&H’s MA209 100MHz Pulse Generator has a typical frequency stability specification of 50 parts per million (ppm). However, with external reference disciplining, the frequency stability can be improved to 0.01ppm.

With the MA209, an external 1 Pulse Per Second (PPS), 100PPS, or 10MHz signal can be used to discipline the internal clock. The 1PPS or 100PPS can come from a GPS timing receiver such as C&H’s M213. The 10MHz can come from an ovenized oscillator such as the M207, from a Rubidium frequency standard or from one of many other precision 10MHz frequency sources on the market. The MA209 requires an initial 10 minute module warm-up period, after which the internal clock will discipline, in typically 30 seconds, to within one decade of the external reference, up to the specified stability.

It is important to distinguish reference disciplining from the more complex technique of phase locking which is typically performed with a phase lock loop (PLL). The same results can certainly be achieved with a PLL and a PLL can provided further benefits; however, we typically do not desire the added complexity nor need the added benefits. In contrast, reference disciplining is a straightforward solution that uses the short term stability of a common voltage controlled oscillator and the long term stability of an external reference to create highly stable frequency source.

Reference disciplining is incorporated into a number of C&H’s M-Module instruments including the MA204, MA208, MA209 and the forthcoming M227. In any instrument where the stability of the frequency source is important, reference disciplining is key to achieving the most accurate and precise measurements.

Friday, May 2, 2008

Feel the Power

I'm feeling very powerful these days. It has to be the PowerPC, the ARM processor, Embedded Linux, M-Modules, ANSI-C drivers, APIS, PXI Modules, PMC Modules, the VX406C, the VX407C, the VX411C, and the EM405-8 or, in other words, C&H's Intelligent Carriers. The marriage of an embedded processor with the power of open source Linux and the countless number of instruments in the M-module, PMC and PXI formats creates a very powerful product line with limitless possibilities.

I recently wrote a simple demo application for a customer utilizing the VX406C running Embedded Linux and the M395 16-Channel DAC M-Module. This embedded application creates 4 custom VXI Word Serial Commands: “volt” – sets the DAC output, “volt?” – queries the DAC output, “sweep” – sweeps the voltage from 0 to 5 volts, and “clearirq” – clears a pending interrupt. The commands “volt” and “volt?” are self explanatory. The command “sweep” starts a sweep of the DAC output from 0 to 5 volts in 1-bit increments dwelling for 1ms at each point. When the sweep completes, the application generates a VXI interrupt. The command “clearirq” clears the generated VXI interrupt. The host software consists of a small GUI allowing the user to interactively send the commands. When the “sweep” command is sent, the host software starts a counter and continuously updates the counter illustrating that the sweep, indeed, runs asynchronously on the PowerPC residing on the VX406C. When VX406C completes the sweep and generates the VXI interrupt, the host software receives the interrupt and handles it appropriately stopping the counter and going back to normal.

Yes this is a very simple example, but it illustrates the power of the intelligent carriers and opens the mind to the possibilities available with this architecture. Even more important is that the application, utilizing the M395 ANSI-C driver, the VX406C Linux APIS Platform Support Module, and the standard Linux toolset, took less than half an hour to write (the source code can be viewed here). It goes to show that it is extremely simple to create a basic application that can be expanded upon to add features and functionality.

A more complex example is an antenna tuner utilizing the VX407C, a PXI Arbitrary Waveform Generator (ARB) and a PXI digitizer. In this application, the ARB output and the digitizer inputs were connected to a separate device that performed attenuation, amplification and coupling to/from the antenna. The digitizer received a reference signal from the ARB and a reflected signal from the antenna. As in the above example, a sweep command was created. When the sweep command was received, the embedded application would step the ARB through a range of frequencies. At each frequency, the embedded application would digitize both the reference and reflected waveforms, would perform an FFT on each digitized waveform and would use the FFT results to calculate a Voltage Standing Wave Ratio (VSWR). The host software would only retrieve an array of VSWR measurements. Imagine the VXI or PXI traffic and the processing power required to perform this in a standard setup. By dedicating an embedded processor to this task the host is free to manage its other responsibilities.

The above examples are just a taste of what can be created with C&H's intelligent carrier architecture. With well over 100 different M-modules and countless PMC and PXI modules, you can just envision the possibilities. With the addition of Linux and the vast array of open source tools that come along with it, this platform becomes very, very powerful.

m395_demo.c