The client (Lanier) was using a signal processing card designed
by me in their dictation system. The old card was an ISA card.
Newer PC's are no longer including ISA slots. So a PCI version
was needed. Also a cheaper, simpler card was desired. Also, their
application software that runs on the card should run unchanged
in the new card.
Using my previous designs and input from me, the client redesigned
the hardware for the new card:
The card consists of two general-purpose CPUs and four DSP
processors. It communicates with other cards via an MVIP bus for
voice and communications. It uses multiple shared memory ports
to communicate with the PC. It provides 8 channels of dictation/transcription
processing including voice compression and expansion (PCM, ADPCM,
CVSD), variable-speed playback, voice operated recording, and
communications with other cards.
The software for the old card was ported to the new architecture.
About 15% of the code needed to be rewritten. The code consisted
of about 25,000 lines of 'C' and assembly language. Source code
was modified to be selectively built for either the new or old
card, thus using a common source. Each processor ran a proprietary
real-time executive with multiple threads (30-50 concurrent tasks.)
The old ISA cards were at fixed memory addresses. New new PCI
cards used the Plug-and-Play configuration of the PCI bus. This
meant that the existing application software would not operate
without changes. I rewrote the OS/2 device driver and a support
DLL to "hide" these changes. The applications requested
access to the old cards. These requests were translated by the
driver/dll to that of the new PCI cards. This allowed the application
software to run with no changes; significantly reducing the amount
of testing needed.
Several OS/2 application were written or updated to support
the new card. These allowed configuring the system and debugging
various parts of the system.
Overall project time was about 5 months for a completely working
system. For part of the project I was waiting for other development
resources or involved with other projects. The client continued
with testing. I provided support as-needed over the next 6 months
as system testing progressed.
A later project involved writing an NT device driver so the
system could be ported to NT. The driver took about 2 weeks to
implement. The port of the rest of the system is in progress.