SHDesigns: Embedded Systems Design, Consulting and Developer Resources Page hits:

Sample Project 5

PCI DSP Processor

The Problem:

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.

The solution:

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.

Development Time:

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.


Back to Project list back to home page Project 6