National Instruments – Summer 2003
R&D Intern, LabVIEW DSP Group
Software and hardware development for the purpose of integrating DSP technology with National Instruments products.
Reference: Paul Austin
Summer of 2003 I had another opportunity to intern with National Instruments, this time in the LabVIEW Real Time and Embedded Group. It was fantastic. Specifically I worked in the DSP group, a group dedicated to R&D regarding the utilization and support of DSPs in National Instruments products.
G to LASM Cross Compiler
One of my goals for the summer was to create a cross compiler that could convert G to Lego Assembly (LASM). Utilizing ActiveX tools included with Lego Mindstorms, this new created LASM code could be compiled and downloaded to the Lego Robot via the infrared link as part of the development toolchain. This work was coupled with an experimental cross compiler under development by my boss. The goal was to create a cross compiler architecture that processed a VI block diagram into a series of descriptive records describing the node interconnects. Using this generic VI information, a back-end could be created to generate the desired language output. In this case, National Instruments would like to see a Lego Mindstorms programming environment that more closely resembles LabVIEW instead of the current programming architecture within the RoboLab environment. I created a cross compiler back-end that utilized this generic description of VI block diagrams to generate the textual equivalent in Lego Assembly. This is a custom language created by Lego that runs within the multitasking “operating system” running onboard the Lego RCX uC. This sometimes required a good deal of code generation to represent a simple VI because of the limited flexibility of LASM. LASM frequently restricts parameters to constants instead of variables as you would expect in higher-level languages. Thus, the back-end had to compensate for these limitations in the LASM language by creating additional constructs such as if-else, switch, and loops. This project also required the creation the of interactive block diagrams utilizing external nodes. This effort was aimed at making program development in LabVIEW even easier for children through wizards, extensive sue of icons, and intuitive interactive dialog boxes. It also increased user appeal by spicing up the LabVIEW environment for a Lego concept. The wiring terminal of the Lego palette resembled lego pieces and changed colors depending on the data type of the wire connected to it. Furthmore, inputs that had discrete values (enums) can be selected at run time or at design time by double clicking on the icon. Setting the value of a parameter in the dialog box would be evident by a representative icon next to the wire terminal on the block diagram icon. For example, on the motor VI, telling a motor to stop would display a stop sign icon next to the motor action input parameter. This was an extremely fun project and I was lucky to have had the chance to work on it.
2/15/06: LEGO and National Instruments has just announced its cooperative development of the Mindstorm NXT kit, set to release in August 2006. The proof of concept I developed in my internship has since developed into a full-fledge product for National Instruments, a tweaked version of LabVIEW specifically for the Mindstorms NXT robotic kit! I doubt any of my original work is present within the final product, but I am still proud of having been a part of this effort. Read more about it at:
- LabVIEW Toolkit for LEGO MINDSTORMS NXT
- National Instruments Press Release. “LEGO Group and National Instruments Collaborate on Development of Next Generation of LEGO® MINDSTORMS™ Robotics”. January 2006.
- Wired. “Geeks in Toyland”. February 2006.
PXI-7831R DSP Daughter Card
Another project that summer was to prototype a DSP-based daughter card to add floating point capabilities to the PXI-7831R FPGA card. The PXI-7831R is an excellent product that allows engineers to develop FPGA applications using LabVIEW. It also provides 96 DIO, 8 16-bit analog outputs, and 8 16-bit analog inputs. This high speed processing and large I/O capabilities makes it a great device for Hardware In The Loop testing. However, one drawback to this product is that it does not support floating point arithmetic. Therefore, the desire is to add a DSP processor to the PXI-7831R to support complex math operations. However, the trick is to make the integration of this DSP fit seemlessly into the LabVIEW FPGA toolchain. To accomplish this, it was necessary to develop methods of reading and writing to the DSP’s memory and debug capabilities. Host Port Interface and JTAG bus emulators were both created using a PXI-7831R to communicate with a DSP development board. HPI was primarily used for high speed transfer of data such as downloading the DSP portion of the application, while JTAG was used to provide DSP debugging features to the toolchain. However, it was found that it was not possible to access these features without buying an SDK from Texas Instruments. Significant progress was made on this project in a very short period of time, approximately 1.5 months. Combined with a G to C cross compiler under development by my boss, we were able to write a simple DSP application in LabVIEW and download a program to the DSP vis the PXI-7831R acting as an HPI bus emulator. With more effort, applications could be written that ran in parallel and communicated between the FPGA and DSP processors. However, the price of the SDK was too large and the project was not at a high enough priority to pursue further at that time. In addition, I had to start my second project for the summer.
National Instruments – Summer 2000 – PXI Integration Testing System
R&D Intern, Verification & Validation Group
Software and hardware development for the purpose of validating cross-product compatibility of National Instruments devices.
Reference: Byron Radle
This summer I had the wonderful opportunity to have an
internship with National Instruments. I worked in the Verification and Validation group. My project was to create an automated testing system to verify cross-product compatibility
of all National Instruments PXI devices. This project became affectionately named the PITS: PXI Integration Testing System.
Because I came in during the conception of this project, I became a lead figure in guiding this project as it began to take shape. This was an excellent experience to see how individual groups within a company, and even within R&D, interact. In addition to creating the foundation and goals of the project, I began to work on a large portion of the project in detail. This consisted of developing a PCB hardware test fixture and writing test code, both of which was an excellent experience. However, this project is not scheduled for completion till early next year, and unfortunately I was only there for three months. Despite not seeing the completion of the project, it was tremendously rewarding to know that I had a large hand in a rather large project that will
greatly benefit National Instruments. Here are some pictures of one of the boards (unpopulated) that I design at NI.
Advanced Energy Industries – Summer 2001 – Intelligent Test Fixture
R&D Intern, Firmware Group
Software and hardware development to create a test platform for AEI products.
Fort Collins, CO
Reference: Tim Ash
This summer I interned with the Firmware group at Advanced Energy Industries, Inc., in wonderful Fort Collins, Colorado. My project was to create a universal Intelligent Test Fixture (ITF) that could be used to streamline and automate testing of all Advanced Energies products. Advanced Energy develops intelligent power supplies used in the process of semiconductor manufacturing. The intelligence they incorporate into these power supplies help improve yields in
fabs by compensating for fluctuations inside and outside the tool they are powering. Advanced Energy is also moving into convergent technologies by providing a broader range of products such as temperature sensors and mass flow controllers. To safely test the logic boards used in these systems, without working around dangerous voltage levels, test and development engineers work on low power test fixtures that simulate the entire system at a safe voltage level. Simulating these fluxuations seen in the system require manual manipulation of switches and potentiometers to provide external stimulus to the Device Under Test (DUT). By providing an intelligent method of controlling and automating these external stimuli, Advanced Energy can execute more comprehensive and
rigorous test procedures. My project, the ITF, was to create an IP based data acquisition and signal generation device that can replace the need for manual intervention. It uses Dallas Semiconductor’s Tiny InterNet Interface (TINI) to implement a custom Modbus/TCP SocketServer, using the firmware I developed written in Java. This firmware accepts commands to acquire or generate various kinds of signals, and then performs the necessary I/O manipulation to control the peripheral hardware on the custom board I designed. In effect, I designed a low cost, IP based, distributed I/O system. Unfortunately the TINI is not known for speed, the fastest acquisition possible requires 36ms, but the shear amount of I/O capability packed onto the ITF is astounding! It includes 24 digital inputs, 24 digital outputs, 24 onboard relays, 32 16-bit analog inputs, 16 16-bit analog outputs, 16 10-bit digital POTs, 2 channels of Pulse Width
Modulation, 2 channels of Pulse Width Measurement (both with 1us resolution), 2 8-bit write ports and 2 8-bit read ports for additional I/O expansion, and 1 serial port for miscellaneous use. Whew! I also had to write a simple windows
application using Borland C++ Builder to communicate with the ITF so I could develop and test its functionality.
ITF has recently been renamed to REMADI, Remote Ethernet Modbus Analog & Digital Interface. I think its cool because it sounds like an Italian sports car or something. The coolest thing is that REMADI is being integrated into AEI’s engineering test and has already helped locate firmware errors.