VPB Driver Design V1.0
Created 12/9/99 by David Rowe

Introduction

This document presents some information on the Voice Processing Board (VPB) driver software design.  Please feel free to email me (David Rowe) with any questions.

Software Organisation

Figure 1 illustrates the general organisation of the software, the following sections discuss the organisation.


Figure 1: Software Organisation
 

DSP Firmware

Kernal Mode Driver

VPBAPI

The Voice Processing Board Application Programmers Interface (VPBAPI) implements most of the functionality of the VPB driver and is where most of the code is written.  In the current NT version, this is a user mode library.  Placing most of the code in user mode makes it easier to work on compared to placing everything in a device driver, however the disadvantage is lack of control over real time issues.

A large number of functions are exported from VPBAPI for use by the application programmer, these are documented exist in a Windows help file (VPB.HLP).

Application

The application uses the functions in VPBAPI to implement the desired functionality, for example Voicemail, VOIP gateway, IVR etc.

VPB Driver Design

Introduction

This section describes the software design of the VPB driver, from the point of view of a logical "programming" model.

Conventions

Up and Down refer to the direction of data flow with respect to the Host PC:

Data Paths

Throughout the software design there are two logical data paths: Examples of message data path usage are:

Firmware (DSP) Configuration

The Firmware (DSP) signal processing configuration is controlled at run time using an object oriented configuration model, where objects are created, then connected together with software "wires".  The signal processing classes available are: When the VPB boots, the DSP configuration is blank.  The PC then sends config messages to create the objects required for signal processing.  The configuration for each channel is typically repeated identically for each channel.

Two fundamental limits to the number of objects are:

Traps (in the form of DSP asserts) are present in the DSP firmware to detect excess consumption of either computational load or memory.  These traps will cause an error message to be sent to the PC.  Other traps also exist to prevent invalid object configuration.

Note that some of the classes can transmit and receive messages via the message data path.  For example, if the DTMF detector detects a digit, it will send a message to the PC.  Another example is configuring the programmable tone detector, in this case the PC sends a message defining the tone to a programmable tone detector object.

Figure 2 presents a simple example configuration.

When the program starts, only the Down Message FIFO, Up Message FIFO, and Config. Manager are present.  The PC then sends messages instructing the Config manager to create a Codec A/D, A-law to linear, DTMF Detector, and Up Signal FIFO object.  The PC then sends messages creating software "wires" to connect these objects appropriately.

Now, when audio arrives over the phone line, it is converted to 16-bit linear format and placed in the Up Signal FIFO.  The PC can then read it and perhaps save it to disk (say as a recorded voice mail message).  If a DTMF tone is detected, the DTMF detector responds by placing a message in the Up Message FIFO.  The PC will subsequently read this and say display it to the screen.