Bradford J. Rodriguez, Ph.D.

Specializing in embedded and distributed control systems -- contract design and development of microprocessor hardware and software, particularly when maximum performance is required from limited resources, or when a blend of hardware and software expertise is needed.
 

CONSULTING PROJECTS

2013

ALN11 Controller: Created a single-board ARM computer to replace a discontinued 8051 board. Tasks included completion of an interim hardware design (by others), PCB layout, prototype testing, and conversion of I/O drivers. The new board uses the Philips LPC2138 (ARM7 family); software is written using the Rowley C compiler.

2013

Wireless Anemometer: Wrote software in GCC for a micropower 915 MHz wireless anemometer, using the Texas Instruments MSP430G2553 MCU, and either the Texas Instruments CC1150 SPI transmitter or an Abacom direct-drive transmitter. The device operates on accumulated wind energy, monitored and managed by the MCU.

2013

Wireless Anemometer Receiver: Wrote software to receive the signal from a 915 MHz wireless anemometer, using the Texas Instruments MSP430G2553 MCU and an Abacom receiver. The unit decodes the Manchester encoded signal, computes speed, and drives an LCD display and an RS-232 serial output. Developed in CamelForth.

2012

WindVane: Wrote software for an electronic "wind vane", using relative position sensors and an HMC6352 I2C compass to give true direction. Developed in CamelForth for MSP430G2553.

2012

Ultrasonic Bolt Meter: Wrote new software to provide added capability and communications for an existing test instrument. Devised a novel file system for serial Flash and EEPROM devices, that uses less than 512 bytes of RAM. Development for H8S/2148 in C using Renesas Embedded Workshop.

2011

DT12 Controller: Designed a single-board computer as a drop-in replacement for a discontinued OEM board, for a low-power battery operated test instrument. Tasks included processor selection, circuit design, PCB layout, prototype outsourcing, testing, and software conversion from 6303 PolyForth to MC9S12X SwiftX Forth.

2011

D7 Software Conversion: Adapted "ZPC" software for the D7 processor board. The Forth language program employs C language USB MIDI drivers (written by others) using FreeRTOS as the interface. Development for the Renesas H8S using Forth and GCC.

2011- present

MiniPods: Developed software for a family of devices to log work hours, travel distance, fuel dispensing, and operator inspections. The devices report remotely via cellular modem or direct 2.4 GHz radio link, and can also collect and store data from other 2.4 GHz loggers (RF hour meters). Implemented in Forth using MC9S12, MC13202 transceiver, and Multi-Tech SocketModem.

2010

RF Hour Meters: Developed software for a family of 2.4 GHz wireless logging devices, to record elapsed time, accumulated distance (from serial GPS), and motion (from MMA7660FC accelerometer), using I2C EEPROM. Development for Freescale MC9S08 and MC13202 transceiver, using C and CodeWarrior.

2009- 2011

USB OSBDM Linux drivers: Wrote software to control an Open Source BDM device from a Linux desktop via USB. OSBDM uses the Freescale Background Debug Mode to program and debug 9S08, 9S12, and 9S12X microcontrollers. This software allows programming, verification, and specialized configuration like clock frequency trimming, to be automated using the Linux factory computers. Linux USB master software was written in gForth, using libusb.

2009

MIDI-to-Playstation interface: Built a converter for the "Ztar" MIDI guitar to control the "Guitar Hero" game on a Sony Playstation 3. The converter uses a Freescale 9S08 to receive MIDI and appear as a USB control device, and required reverse-engineering the "Guitar Hero" USB protocol.

2009- present

GPRS/CDMA Tracker: continued support of the "GPRS Tracker" project using new generations of Multi-Tech SocketModems, including CDMA SocketModem.

2009

RF ID Cube: Developed software for a 2.4 GHz identification device using the Freescale MC9S08 processor and MC13202 transceiver. The battery-operated device consumes less than 1 uA in standby mode. Development in C using CodeWarrior.

2006-
present

D6 ZPC: Ongoing development and maintenance of the "ZPC" software on the "D6" hardware, in Forth and H8 assembler. New and improved features include expanded and multitrack MIDI recording, remote control, arpeggiator, ribbon and chording features, field upgrade capability, 12- and 24-string options, dual menus, "small" LCD and encoder operation, and iPod control, plus various performance improvements.

2008

D7 CPU: Designed a new low cost/low power MIDI instrument controller board. This uses the Renesas H8S/2212 processor for code compatibility with the "D6" hardware, while eliminating the need for a dedicated USB interface chip. The base configuration has a total IC cost of less than five dollars and can be powered from the USB interface.

2008

MSP430 CamelForth: Developed a Forth compiler/interpreter for the Texas Instruments MSP430 processor, using the New Micros Tini430 board. The complete system takes less than 6K bytes of ROM, and offers "direct-to-Flash" compilation allowing programs to be compiled "live" in the Flash ROM with no other tools.

2007

GPRS Tracker: Adapted the "Tracker" product to use mobile Internet communications via the Multi-Tech GPRS SocketModem. The embedded controller is able to initiate a data transfer to or from a remote Internet server, and is also able to respond to an SMS text message received via the cellular network.

2006-
2007

SuperPod: Converted the IsoPod operating software for this new board using the Freescale DSP56F8365 processor. The core was converted from C to assembler for threefold greater speed and half the memory consumption. Added features include an expanded memory model, more flexible object-oriented extensions, and a new object-oriented state machine. Development in 56000E assembler and Forth using CodeWarrior.

2006

CANOpen: Implemented the CANOpen protocol for the MC9S12 microprocessor, including CAN physical layer, receive and transmit processing of PDOs and SDOs, supervisory and master functions, object dictionary, linking and mapping. Development in Forth and assembler.

2006

68HC12 Forth Metacompiler: modified the LMI Forth metacompiler to run under Linux using gForth, and to support a paged memory model for the 68HC12/MC9S12 microprocessor. Also modified the 9S12 Forth kernel to support paged memory.

2005

RF Tracker: Adapted the IrDA protocol stack for radio operation, using the Freescale MC13192 IEEE 802.15.4 transceiver. The protocol stack is shared, allowing communication either via infrared or 2.4 GHz RF interface. Development in Forth and MC9S12 assembler.

2005

Palm IrDA: Developed a replacement IrDA protocol stack for the Palm PDA, so that newer models would comply with the IrDA specification. Development in C using Linux-based tools.

2004-
2007

IsoPod: continuing support, development, and documentation for this series of DSP56F80x embedded controller boards. New features include improved servo control support, scheduler, and multi-channel "soft UART" for added serial I/O.

2004

Tracker IrDA: Developed an IrDA protocol stack for the Motorola/Freescale MC9S12 microprocessor, to replace a dedicated MCP2150 interface chip. This followed the "IrDA Lite" specification and included physical, LAP, LMP, IAS, TinyTP, and IrComm (telnet) layers, and allowed the unit to communicate directly with applications on a Palm handheld PDA. Development was in Forth and assembler.

2004

D6 CPU: Designed a Hitachi/Renesas H8S/2328 embedded processor board, to replace the previous D5 CPU whose Super8 processor was discontinued. The new board has the same form factor and interfaces, but with lower cost, faster speed, and added USB capability. Developed a translating assembler to convert Super8 source code for the H8S.

2002-
2003

IsoPod: Wrote the operating software for this family of single-board computers, named one of the "Top 100 Products of 2002" by EDN Magazine. 

  • Converted 68HC12 MaxForth language and 68HC11 IsoMax extensions to the Motorola DSP56F805 microprocessor

  • Added fast object-oriented extensions

  • Wrote I/O library for DSP56F80x peripherals, including PWM, ADC, timers, parallel, serial, and SPI

  • Wrote motion control (trajectory) and PID control software

  • Wrote internal and end-user documentation

  • Continuing maintenance of software and documentation

This project was developed in C, Forth, and DSP5680x assembler, using Metrowerks CodeWarrior.

2002-
2003

ZPC:  Created software for this MIDI guitar controller by merging and unifying the EventStation percussion software with the "Ztar" guitar software.  The new instrument adds all of the EventStation features to the guitar instrument, with more memory, more I/O, and faster performance, on the same "D5" hardware.  New features include more flexible zone processing, more flexible sensor processing, new chording and fingerboard modes, and versatile dump and restore.

2002

Harmonic Analyzer:  Developed DSP software for an industrial test fixture.  This assembly-language software performs signal generation, measurement, and harmonic analysis at a 320 kHz cycle rate.  Recommended a  Motorola DSP56F803 single-board computer at one-twentieth the cost of comparable DSP boards!

2001

Invictus:  Expanded and improved the embedded control software for this industrial laser.  New functions include improved self-test and safety interlocks, interface to Dallas "iButton" for timing and file storage, serial remote control, and "in-place" reprogramming of the operating software in Flash memory.  This project used a 68HC11 processor programmed in Forth.

1999- 2000

EventStation: Expanded and improved this MIDI percussion controller. Designed a "quasi logarithmic" preamplifier to improve dynamic range and sensitivity for piezoelectric sensor inputs. Assumed maintenance of prototype software, and produced final production software, including: 

  • Faster and more flexible scan and event processing

  • MIDI receive processing, sequence recording and playback, and bulk dump

  • Absolute and variable time scheduling, and programmable metronome

  • Memory expansion through paged RAM management

  • "Menu engine" for simpler and more flexible user interface programming

  • Many new operating modes

This project was developed in Forth and Zilog Super8 assembler, using MPE Ltd.'s Forth cross-compiler.

1999

MicroZone: Adapted software from the "Ztar" MIDI instrument to accept an 810-key microtonal keyboard and produce a multichannel MIDI output. 

1998- 1999

ANGL: Developed a distributed object-oriented language for an embedded industrial controller, to meet the requirements of the BACnet(tm) specification for building automation and control networks. Fully responsible for implementing: 

  • Late-binding object-oriented extensions to Forth language

  • BACnet(tm) object model and message services 

  • Predefined classes for control actions, including tokenized formula processing

  • Multi-drop RS-485 master-slave network using 8-bit UARTs: Data Link, Transport, and Application layers

  • Modem & PC gateway for network

  • Thorough documentation

This project was developed in Forth and 68HC12 assembler, using Forth Inc.'s SwiftX(tm) cross compiler.

1998

PSC1000: Developed asynchronous serial drivers for the I/O processor of the PSC1000 microprocessor.

1997- 1998 

D5 CPU: Designed a Zilog Super8 embedded processor board for a MIDI musical instrument. The new board is 40% smaller yet has four times the capacity of the previous processor, at comparable cost. Software for the previous board was converted while retaining backward compatibility; new features include aftertouch sensing and output, and support for a microtonal keyboard.

1996- 1997 

OTA: Developed software for point-of-sale terminals under the Open Terminal Architecture specification. Supported and extended Forth kernels on 8051, 6303, and 68000 processors; wrote hardware I/O drivers and OS interface routines; implemented extended precision math for security algorithms; installed and validated application code. Developed a byte-code Forth interpreter for an 8051-based "smart card" using less than 128 bytes of RAM and 3.5K of ROM; this interpreter runs twelve times faster than a competitive product. 

1993- 1996 

Tandem Accelerator: Conceived and implemented a real-time, distributed, inference-driven control system for a Tandem particle accelerator, including: 

  • fail-safe, retrofit interfaces to the vintage-1968 electronics

  • distributed, embedded expert system - over 3000 inferences/second 

  • temporal algebra and temporal logic for process control 

  • expandable token-ring network using asynchronous serial ports

This project employed a network of 68HC16s and IBM PCs, was written in Forth, and has been accepted for a Ph.D. in Computer Engineering. 

1995 

8051 Small C: Wrote and documented Small C for the 8051 microprocessor. 

1994 

CamelForth: Developed CamelForth, a portable ANS Forth compiler for Harvard and von Neumann processors, with implementations for Z80, 8051, and 6809. 

1994 

6809 SM-II: Designed and constructed an inexpensive multiprocessor for education and research. Designed novel logic to use common 8-bit processors, to reduce total system cost below $200 per CPU.

1993 

Chromium metacompiler: Developed Chromium, a interactive Forth cross-compiler. 

1993 

68HC16 MPE Forth: Wrote MPE Forth for the 68HC16, including kernel, multitasker, and documentation. 

1991- 1992 

Echelon: Conceived and developed the Echelon lighting control system: 

  • expandable multiprocessor hardware using Zilog Super8s 

  • "P4 bus" for interprocessor direct memory transfers 

  • "SP bus" master/slave network for remote, distributed CPUs

  • all processor and I/O hardware - CGA/EGA video, floppy disk, various serial interfaces, analog multiplex I/O 

  • fast multitasker with 13 microsecond context switch 

  • executive and operator interface software 

  • "tiered tandem" calculation routines for 300% faster operation

  • over 20,000 lines of code in Forth and Super8 assembler 

Worked with team members and co-developers in California to complete in 1.5 man-years what took the competition five! 

1991 

Z8 Max-Forth: Wrote Z8/Super8 Max-Forth, with adaptation to Harvard architecture. 

1991 

Z8 MPE Forth: Wrote MPE Forth for Z8/Super8, including kernel, multitasker, and documentation. 

1989- 1990 

Producer II+: Continued software development for Producer II+ lighting console, including improved command processor, remote terminal, video displays, printer and disk functions, in Super8 assembler.

1989

Quantum: Supported software development for the Quantum high performance entertainment lighting system, using the Producer II+ CPU board. 

1988 

Producer CPU: Designed and constructed a Zilog Super8 single-board computer for retrofit into the Producer II lighting control console. The new board doubles performance at lower cost, and adds interfaces for floppy disk, printer, high- and low-speed serial, VFD/LCD, and an IBM Color Graphics Adapter. Wrote all I/O drivers, a Z80-to-Super8 assembly language translator, and full documentation. 

1988 

BMDSIM: Helped convert a Ballistic Missile Defense simulator from a Tektronix graphics workstation to an IBM PC-AT. Wrote polyForth drivers for Tecmar Graphics Master boards, allowing four EGA-quality graphics displays in a single IBM PC. Improved orbit and target simulations and displays. 

1987 

Comstar/MD288: Developed Comstar, a Zilog Super8-based interface and control board for theatrical dimmers. In two months, designed, prototyped, and tested hardware and assembly-language software for multi-protocol data reception, and for real-time phase control of an array of power semiconductors. Wrote full technical documentation, extensive diagnostics. 

1987

VectorForth: Developed software for a PC-based array processing workstation. Wrote assembler and system interface for Vortex and Point-I array coprocessor boards, polyForth language support, and 3-d graphics. 

1987 

AirHouse: Designed and wrote Z80 control software for a networked HVAC control system. Implemented PID control algorithms, fault response, and network communications code, using polyForth and clusterForth. Wrote detailed customer documentation. 

1986 

PAMELA: Developed IBM PC/XT simulation software for an adaptive optics subsystem, including 3-d modelling, time simulation, and graphic display. Extensive code optimization in polyForth and 8087 assembler achieved 20 times the speed of a VAX.

PREVIOUS POSITIONS

1983- 1986

R&D Software Manager, Strand Lighting: developed, and managed development of, real-time lighting control systems. Managed 3-member software development group; responsible for hiring, firing, performance evaluation, task assignments, budget preparation, capital expense justifications. Supported LSI-11 development system under TSX-Plus v2 and v5; supervised conversion to Unix System V. 

1985- 1986

Managed a crash project to develop Lightboard M, a new low-end lighting controller, in five months. Wrote product and operational specifications, accurate PERT forecasts. Selected and supervised project team. Designed 6809-based hardware, including analog and digital I/O, communications and co-processor interfaces. Wrote 6809 Forth kernel. 

1984- 1986 

Designed and managed development of Lightboard XP, a real- time, networked, lighting control system. Supervised 8-person team. Designed system architecure, using multiprocessor 68000, TMS320 coprocessors, 6809 peripheral processors. To meet project cost targets, designed a LAN interface costing less than $25 per drop when comparable systems cost $300. Specified hardware and software requirements, CSMA/CD LAN protocols. Created an application language for lighting control. Designed and wrote multiprocessor operating system, language translators, and LAN drivers, in 68000 assembler and Forth.

1983- 1984 

Doubled the capacity of Light Palette, the top-of-the-line LSI-11 lighting controller, to meet market commitments. Product manager said "software is the cleanest I have ever seen in a new program." Managed project to completion on schedule. 

1982- 1983

R&D Software Engineer, Strand Lighting

1983 

Produced a marketable product, TV Light Palette, by adapting experimental LSI-11 software to run on existing hardware. 

1982- 1983 

Developed real-time software in Forth for Mantrix Memory, a new Z80 lighting control system. Designed and coded kernel, interrupt handlers, I/O drivers, co-processor interface, calculation routines, displays, command interpreter. In five years on the market, this software never required a "bug" fix. 

1982 

In three months, expanded an existing Z80 lighting controller, Mantrix, to counter a competitor's market entry. Devised Z80 algorithms yielding an eightfold increase in processing power. 

1982

Independent Contract Programmer 

1982 

Developed Z80 and 6502 device drivers, CP/M file server and file transfer programs, for 1553-Net Local Area Network. 

1982 

Wrote quicksort programs in assembler for IBM PC and Apple III

1980- 1982

Member of the Technical Staff, TRW Defense & Space Systems

1981- 1982 

Designed operating system software in Concurrent Pascal for 8086-based diagnostic system for TRW's Military Computer Family. Wrote functional and software specifications. During three months on project, made up three month lag to bring task on schedule. 

1981 

Installed and mantained Intel and GenRad microprocessor development systems for Microprocessor Training Center. Wrote intersystem communications programs. 

1980- 1981 

Specified and developed software for DS-VSDS 8080-based telephone switching system, using existing multitasking software. Wrote comprehensive hardware description for training manual. Installed and managed Unix v6 and v7 on PDP-11/70. 

1978- 1980 

Director, General Technics. Formed and operated a research and consulting firm with two partners. Implemented and supported CP/M operating system; wrote comprehensive user's manual.

1978- present

Personal research: 

  • Forth kernels, expert systems, assemblers, metacompiler 

  • a "minimal" microprogrammed Forth machine using standard TTL 

  • local area network hardware and software 

  • multiprocessor computer hardware and operating systems 

SELECTED PUBLICATIONS

EDUCATION

1998

Ph.D. in Electrical Engineering, McMaster University, Hamilton, Ontario. Thesis: An Embedded Temporal Expert for Control of a Tandem Accelerator (a distributed AI system for real-time control). 

1989

M.S. in Computer Science, Bradley University. Thesis: PatternForth: A Pattern-Matching Language for Real-Time Control (real-time pattern matching and language design).

1980 

M.S. in Electrical Engineering, Bradley University. Emphasis on digital logic, communications. Supported Unix v6 system. 

1977 

B.S. in Electrical Engineering, Bradley University. Minor in physics, additional work in computer science and instrumentation. 

MISCELLANY

Languages: Fluent in Forth, C, and assembler for 6502, 6809, 68HC11, 68HC12, 68HC16, 68000, 8051, 8080, 8086, ARM7, H8/S, LSI-11, MSP430, Super8, Z8, Z80. Proficient in Pascal, BASIC, FORTRAN, PHP, Tcl.

Operating Systems: Experienced with Unix, Linux, RT-11, CP/M, MS/DOS, polyFORTH, FreeRTOS