Communications
- Implemented a command/response interface under TCP/IP,
allowing a user to telnet into the product and display
status or request control. This, in concert with Python
scripts that ran on the PC, controlled testing of the
target under test via a TCP/IP interface.
- Designed and coded communications software which
implemented token bus communication over an RS-485 line.
|
Machine Control
- Developed a control computer for a computer aided
manufacturing system for making glass
bottles. Flinging molten gobs of glass under
computer control provided challenges both of timing and
safety.
- Was the digital project lead on a bulk mail inspection
device created for the US Post Office.
- Designed and implemented code for a high-speed
document scanner, both in the feeder and overall control
subsystems.
|
Multi-thread/Multi-core/SIMD
- Improved computationally intense mathematical
functionality by implementing in SSE, Intel's Streaming
SIMD Extensions.
- Spread computationally intense processing across cores
to improve performance.
- Provided tuning capability which allowed optimization
of the data used by the code. This improvement was
a result of increased use of each core's cache.
|
System on a Chip (SOC)
- Used Xilinx tools to configure MicroBlaze hardware
and develop applications. This involved crafting VHDL
interfaces as well as use of ISE and EDK.
- Maintained this configuration across versions of the
tools, adding devices as the development required.
|
Kernel/Device Driver
- Wrote a serial driver for SysV Unix that utilized
FIFOs in the UART for reliable high speed operation.
- Configured Xilinx' Xilkernel and wrote driver and
multitasking code using it. Implemented code using both
Xilinx devices as well as devices custom to the project.
- Configured and used TI's DSP/BIOS kernel for a sensor
project.
- Designed and coded an operating system kernel that
featured deferred tasking (with and without delay) and
cancel facilities. Also provided directives for
scheduling high-resolution timers.
- Ported a pty (pseudo-tty) driver to SysV Unix.
- Provided an event driven kernel in which each task was
inherently a finite state machine.
|
Finite State Machine Design
- Helped develop a methodology with which to specify
telephone signaling systems. A finite state machine
method was used to describe the sequencing involved in
various systems. Guided and reviewed signaling systems
descriptions both here and in Europe.
- Designed the user interface for control of industrial
equipment utilizing FSMs. This not only provided a
clean path between requirements and implementation, but
eliminated a plethora of anomalies in the version it
replaced.
- Implemented an industrial communications protocol
utilizing finite state machines both for design and
implementation.
|
Signal Processing
- Wrote code to perform FFTs across cores as part of a
RADAR project.
- Analyzed FIR filters both for accuracy as well as
computational intensity (MIPS required).
- Wrote code that reduced noise (clutter) in the
processing of RADAR images.
|
CUDA
- Successfully completed the proof of concept
implementation of a next generation electronic
counter-measure system which performed the required
signal processing in Nvidia CUDA cores, rather than FPGA
logic.
- This provided increased agility as well as simplified
debug capability.
- The multiple cores provided by the CUDA architecture
allowed throughput results previously achievable only
with FPGA solutions.
|