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
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, LSI-11, Super8, Z8, Z80. Proficient in Pascal, BASIC, FORTRAN.

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