(Page 1 of 1 in this chapter)


Chapter 5

Configuring AG Board DSP Resources


5.1 DSP Resources and Task Processor Configuration
5.1.1 Default Functions Available on AG Boards
5.1.2 Custom Functions Available on AG Boards
5.2 DSP/Task Processor Files and Processing Power
5.3 Foreground and Background Task Processors
5.4 Customizing the Functions on Your AG Board
5.4.1 Bandwidth Configuration Restrictions
5.4.2 Example 1: Configuring an AG-8
5.4.3 Example 2: Configuring an AG-24/30/48/60

5.1 DSP Resources and Task Processor Configuration

The Alliance Generation (AG) family of telephony boards is based on flexible software and hardware architecture. At the core of this architecture is an array of digital signal processors (DSPs) which execute algorithms for detection and generation of voice and telephony signals.

Most of the CT Access API calls implicitly make use of functions which run on the DSP resources. For example, adiStartToneDetector starts the tone detector function running on a DSP. adiStartRecording starts one of many voice compression functions running on a DSP.

There are many functions currently available on the AG architecture and many more under development. It is not feasible or practical to make every possible function simultaneously available to an application. AG boards are shipped with default configurations which make the most commonly used functions available. A systems integrator or value added reseller may follow the instructions in this section to create custom configurations that make other functions available.

The information in this section configurations that use standard AG boards - not including the AG 2000 board and AG 4000 board. For information about these boards, refer to Chapter 6.

Note: The AG Quad T, AG Quad E, and CompactPCI AG Quad boards have 120 call control ports and DSP resources for up to 60 ports for simultaneous voice or call processing. Using call control resource management, the AG Quad shares DSP resources across all 120 ports. Because of the call control resource management, most of the standard DSP configurations defined in this chapter do not apply to the AG Quad T, AG Quad E, and CompactPCI AG Quad boards. Refer to the AG Quad Installation & Developer's Manual and the CompactPCI AG Quad Installation & Developer's Manual for information about configuring the AG Quad DSP resources.

5.1.1 Default Functions Available on AG Boards

The following functions are available in the default configuration as shipped with CT Access on the AG-8, AG-8/80, AG-24/30/48/60, AG-T1, AG-E1, AG Quad and CompactPCI AG Quad, AG Dual T, and AG Dual E boards:

Default and custom functions for AG 2000 boards and AG 4000 boards are listed in Chapter 6.

5.1.2 Custom Functions Available on AG Boards

The following functions can be configured with CT Access on the
AG-8, AG-8/80, AG-24/30/48/60, AG-T1, AG-E1, AG Quad and
CompactPCI AG Quad, AG Dual T, and AG Dual E boards:

Default and custom functions for AG 2000 boards and AG 4000 boards are listed in Chapter 6.








AG Board

Default Port Count

DTMF Detection

MF Detection

Tone Generation

Tone Detection

Cleardown Detection

Caller ID

Echo Cancellation

ADSI

NMS Speech Normal

NMS Speech 1.5X

NMS Speech 2.0X

OKI Speech Normal

OKI Speech 1.5X

OKI Speech 2.0X

IMA/DVI Speech

WAVE Speech

G.726 Speech

AG-8

8

D

C

D

D

D

C

C

C

D

R

R

C

R

R

C

R

R

AG-8/80

8

D

C

D

D

D

C

C

C

D

R

R

C

R

R

C

R

R

AG-24

24

D

C

D

D

D

C

X

C

D

R

R

R

R

R

R

R

R

AG-24+

24

D

C

D

D

D

C

C

C

D

R

R

C

R

R

C

R

R

AG-30

30

D

C

D

D

D

C

X

C

D

R

R

C

R

R

C

R

R

AG-T1

24

D

C

D

D

D

C

C

C

D

R

R

C

R

R

C

R

R

AG-E1

30

D

C

D

D

D

C

X

C

D

R

R

C

R

R

C

R

R

AG-48

48

D

C

D

D

D

C

X

C

D

R

R

C

R

R

C

R

R

AG-60

60

D

C

D

D

D

C

X

C

D

R

R

C

R

R

C

R

R

AG-T1 v2

24

D

C

D

D

D

C

C

C

D

C

C

C

C

C

C

R

C

AG-E1 v2

30

D

C

D

D

D

C

C

C

D

C

C

C

C

C

C

R

R

AG Dual T

60

D

C

D

D

D

C

C

C

D

R

R

C

R

R

C

R

R

AG Dual E

60

D

C

D

D

D

C

C

C

D

R

R

C

R

R

C

R

R

The entries in the table have the following meanings:

For information about the AG Quad board, refer to the AG Quad Installationa and Developer's Manual.

5.2 DSP/Task Processor Files and Processing Power

The binary code for running a function is contained in a DSP file. One or more functions are contained in each file. The following table shows which functions are contained in which DSP files.

To make a DSP file and all of its functions available, the DSP file must be specified in the AG configuration file (ag.cfg). A DSP file is specified by a statement of the form:

 DSPfile = filename.dsp

The various products in the AG architecture differ in the speed of the DSPs as well as the total number of DSPs on the board. The speed of a DSP is measured in millions of instructions per second (MIPS). For example, the AG-8 board has two 28.5 MIPS DSPs, while the AG-30 board has six 28.5 MIPS DSPs. The DSPs on an AG board are shared among all its ports.

Each function which is run on a DSP consumes MIPS. If the total MIPS consumption for all the requested functions on all the ports of a given board exceed the total MIPS available for that board, then an error event will occur. If MIPS-intensive functions are required, it may be necessary to reduce the total number of ports on a board, which makes more MIPS per port available.

Note: For rvoice files, voice encoding refers to the data played/recorded on the line. The choice between rvoice.dsp and rvoice_a.dsp depends on the encoding of the line. For example, to play mu-law data on an
A-law line, specify ADI_ENCODE_MULAW for the encoding, and configure rvoice.dsp to be loaded to the board.

The following table shows the MIPS usage for the available functions shipped with CT Access:
DSP File

Function

MIPS

Related API Function

Related Arguments

voice.dsp

NMS Play 16 Kbit/s

2.05

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_16, maxspeed = 100

voice.dsp

NMS Play 24 Kbit/s

2.05

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_24, maxspeed = 100

voice.dsp

NMS Play 32 Kbit/s

2.05

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_32, maxspeed = 100

voice.dsp

NMS Play 64 Kbit/s

0.6

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_64, maxspeed = 100

voice.dsp

NMS Record 16 Kbit/s

2.13

adiStartRecording

encoding =
ADI_ENCODE_NMS_16

voice.dsp

NMS Record 24 Kbit/s

2.13

adiStartRecording

encoding =
ADI_ENCODE_ NMS_24

voice.dsp

NMS Record 32 Kbit/s

2.13

adiStartRecording

encoding =
ADI_ENCODE_ NMS_32

voice.dsp

NMS Record 64 Kbit/s

0.52

adiStartRecording

encoding =
ADI_ENCODE_ NMS_64

rvoice.dsp

mu-law Play

0.60

adiStartPlaying

encoding =
ADI_ENCODE_ MULAW

rvoice.dsp

A-law Play

0.60

adiStartPlaying

encoding =
ADI_ENCODE_ ALAW

rvoice.dsp

WAVE Play,
8 kHz, 16-bit

0.60

adiStartPlaying

encoding =
ADI_ENCODE_ PCM8M16

rvoice.dsp

mu-law Record

0.60

adiStartRecording

encoding =
ADI_ENCODE_MULAW

rvoice.dsp

A-law Record

0.60

adiStartRecording

encoding =
ADI_ENCODE_ ALAW

rvoice.dsp

WAVE Record,
8 kHz, 16-bit

0.60

adiStartRecording

encoding =
ADI_ENCODE_ PCM8M16

voxp.dsp

NMS Play 16 Kbit/s

2.3

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_16, maxspeed = 100

voxp.dsp

NMS Play 24 Kbit/s

2.3

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_24, maxspeed = 100

voxp.dsp

NMS Play 32 Kbit/s

2.3

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_32
, maxspeed = 100

voxp.dsp

NMS Play 64 Kbit/s

0.8

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_64, maxspeed = 100

voxp.dsp

NMS Play 16 Kbit/s 1.5X

3.5

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_16, maxspeed = 150

voxp.dsp

NMS Play 24 Kbit/s 1.5X

3.5

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_24, maxspeed = 150

voxp.dsp

NMS Play 32 Kbit/s 1.5X

3.5

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_32, maxspeed = 150

voxp.dsp

NMS Play 64 Kbit/s 1.5X

1.2

adiStartPlaying

encoding =
ADI_ENCODE_ NMS_64, maxspeed = 150

voxp.dsp

NMS Play 16 Kbit/s 2.0X

4.3

adiStartPlaying

encoding = ADI_ENCODE_NMS_16, maxspeed= 200

voxp.dsp

NMS Play 24 Kbit/s 2.0X

4.3

adiStartPlaying

encoding = ADI_ENCODE_NMS_24, maxspeed = 200

voxp.dsp

NMS Play 32 Kbit/s 2.0X

4.3

adiStartPlaying

encoding = ADI_ENCODE_NMS_32, maxspeed = 200

voxp.dsp

NMS Play 64 Kbit/s 2.0X

1.6

adiStartPlaying

encoding = ADI_ENCODE_NMS_64, maxspeed = 200

voxr.dsp

NMS Record 16 Kbit/s

2.13

adiStartRecording

encoding= ADI_ENCODE_NMS_16

voxr.dsp

NMS Record 24 Kbit/s

2.13

adiStartRecording

encoding= ADI_ENCODE_NMS_24

voxr.dsp

NMS Record 32 Kbit/s

2.13

adiStartRecording

encoding= ADI_ENCODE_NMS_32

voxr.dsp

NMS Record 64 Kbit/s

0.52

adiStartRecording

encoding= ADI_ENCODE_NMS_64

okiply.dsp

OKI Play
6 kHz

2.52

adiStartPlaying

encoding = ADI_ENCODE_OKI_24, maxspeed = 100

okiply.dsp

OKI Play
8 kHz

1.9

adiStartPlaying

encoding = ADI_ENCODE_OKI_32, maxspeed = 100

okiply.dsp

OKI Play
6 kHz 1.5X

3.7

adiStartPlaying

encoding = ADI_ENCODE_OKI_24, maxspeed = 150

okiply.dsp

OKI Play
8 kHz 1.5X

2.69

adiStartPlaying

encoding = ADI_ENCODE_OKI_32, maxspeed = 150

okiply.dsp

OKI Play
6 kHz 2.0X

4.41

adiStartPlaying

encoding = ADI_ENCODE_OKI_24, maxspeed = 200

okiply.dsp

OKI Play
8 kHz 2.0X

3.17

adiStartPlaying

encoding = ADI_ENCODE_OKI_32, maxspeed = 200

okirec.dsp

OKI Record 6 kHz

2.46

adiStartRecording

encoding = ADI_ENCODE_OKI_24

okirec.dsp

OKI Record 8 kHz

2.08

adiStartRecording

encoding = ADI_ENCODE_OKI_32

g726p.dsp

G.726 Play

6.5

adiStartPlaying

encoding = ADI_ENCODE_G726

g726r.dsp

G.726 Record

6.5

adiStartRecording

encoding = ADI_ENCODE_G726

wavply.dsp

WAVE Play 11 kHz 8-bit

1.95

adiStartPlaying

encoding = ADI_ENCODE_PCM11M8

wavply.dsp

WAVE Play 11 kHz 16-bit

1.65

adiStartPlaying

encoding = ADI_ENCODE_PCM11M16

wavrec.dsp

WAVE Record 11 kHz 8-bit

2.22

adiStartRecording

encoding = ADI_ENCODE_PCM11M8

wavrec.dsp

WAVE Record 11 kHz 16-bit

1.86

adiStartRecording

encoding = ADI_ENCODE_PCM11M16

tone.dsp

Tone Generator

0.88

adiStartDial

adiStartDTMF

adiStartTones

mf.dsp

MF detector

1.97

adiStartMFDetector

callp.dsp

Call Progress

0.79

adiStartCallProgress

precmask = 0

callp.dsp

Call Progress with Precise Tone

2.05

adiStartCallProgress

precmask != 0

dtmf.dsp

Tone Detector #1

0

adiStartToneDetector

toneid = 1, Uses background MIPS, not foreground.

callp.dsp

Tone Detector #2

0.50

(1 freq)

0.95

(2 freq)

adiStartToneDetector

toneid = 2

callp.dsp

Tone Detector #3

0.50

(1 freq)

0.95

(2 freq)

adiStartToneDetector

toneid = 3

adsir.dsp

ADSI receiver

2.00

adiStartReceivingFSK

adsix.dsp

ADSI transmitter

1.00

adiStartSendingFSK

imaply.dsp

IMA/DVI ADPCM Play 6 kHz

2.52

adiStartPlaying

encoding = ADI_ENCODE_IMA_24

imaply.dsp

IMA/DVI ADPCM Play 8 kHz

2.52

adiStartPlaying

encoding = ADI_ENCODE_IMA_32

imarec.dsp

IMA/DVI ADPCM Record 6 kHz

2.52

adiStartRecording

encoding = ADI_ENCODE_IMA_24

imaply.dsp

IMA/DVI ADPCM Record 8 kHz

2.52

adiStartRecording

encoding = ADI_ENCODE_IMA_32

The following table shows the correspondence between the filter and adapt values used for the echo canceller (implemented by the echo.dsp file), and MIPS consumption:
DSP File

Filter Length (ms)

Adapt Time(ms)

MIPS

echo.dsp

2

100

1.12

echo.dsp

2

200

.99

echo.dsp

2

400

.93

echo.dsp

2

800

.90

echo.dsp

4

100

1.46

echo.dsp

4

200

1.28

echo.dsp

4

400

1.16

echo.dsp

4

800

1.10

echo.dsp

6

100

1.89

echo.dsp

6

200

1.65

echo.dsp

6

400

1.52

echo.dsp

6

800

1.45

echo.dsp

8

100

2.24

echo.dsp

8

200

1.78

echo.dsp

8

400

1.58

echo.dsp

8

800

1.48

echo.dsp

10

100

2.60

echo.dsp

10

200

2.05

echo.dsp

10

500

1.75

echo.dsp

10

1000

1.65

echo.dsp

16

100

3.68

echo.dsp

16

200

2.87

echo.dsp

16

400

2.44

echo.dsp

16

800

2.23

echo.dsp

20

100

4.44

echo.dsp

20

200

3.39

echo.dsp

20

400

2.76

echo.dsp

20

800

2.57

5.3 Foreground and Background Task Processors

In standard configurations, the AG board DSPs are divided into two groups. The background group is assigned DSP files for functions which are typically left running for the entire duration of a call. The DSP files always assigned to background processors include dtmf.dsp, dtmfe.dsp, signal.dsp, and echo.dsp. All other DSP files are placed on the foreground processors.

Note: The AG Quad T/E and AG Dual T/E boards do not require the signal.dsp DSP file.

The foreground processors are used for executing functions that are typically turned on and off during the connected state of a phone call. These functions are usually mutually exclusive. All DSP files other than those listed above are assigned to the foreground processors. The following table shows which DSPs are available for foreground processing for all AG boards. The table also shows the total MIPS that are available for foreground processing for each product. (The available MIPS are less than the actual MIPS because there is overhead incurred in switching from one DSP file to the next.)

Since the assignment of DSP files to the background processors is preset, the configuration information presented here only relates to the foreground processors and the functions running in the connected call state. It is assumed that the background functions will be running on all ports.

Some AG boards have two entries in the table that indicate their capabilities with and without echo canceling. If the echo.dsp file is specified in the ag.cfg file, then the MIPS available for foreground processing will be reduced accordingly.
AG Board

Total DSPs

MIPS per
DSP

Total MIPS

Foreground DSPs

Foreground MIPS

Available Foreground MIPS

AG-8
with echo

2

28.5

57

DSP 0

28.5

24

AG-8/80 with echo

2

40

80

DSP 0

40

35

AG-24

6

20

120

DSP 0-2

60

55

AG-24+

6

28.5

171

DSP 0-3

114

86

AG 24+ with echo

6

28.5

171

DSP 0-2

85

66

AG-30

6

28.5

171

DSP 0-2

85

66

AG-T1

6

28.5

171

DSP 0-3

114

86

AG-T1
with echo

6

28.5

171

DSP 0-2

85

66

AG-E1

6

28.5

171

DSP 0-2

85

66

AG-48

14

28.5

400

DSP 0-8

256

195

AG-60

14

28.5

400

DSP 0-7

228

173

AG-T1 v2

6

50

300

DSP 0-4

250

172

AG-T1 v2

with echo

6

50

300

DSP 0-3

200

144

AG-E1 v2

6

50

300

DSP 0-6

Shared*

160

AG-E1 v2

with echo

6

50

300

DSP 0-2

150

108

AG Dual T

8

50

400

DSP 0-5

300

235

AG Dual E

8

50

400

DSP 0-4

250

183

AG Dual T with echo

8

50

400

DSP 0-3

200

137

AG Dual E with echo

8

50

400

DSP 0-3

200

137

*Shared indicates that the background functions run on the same processors.

For information regarding the AG Quad board, refer to the AG Quad Installation and Developer's Manual.

5.4 Customizing the Functions on Your AG Board

Keep the following restrictions in mind when reconfiguring the available functions on an AG board:

To configure the AG boards in a system to use functions that are not in the default configuration:

  1. List all the functions that you wish to be made available to your application in the connected call state for the ports on a given AG board.

    
    
  2. Determine which DSP files are required for the functions specified.

    
    
  3. Add a DSPfile statement to the ag.cfg file for each new DSP file which is required. The syntax for the statement is:

       DSPfile = filename.dsp
    
    
    For example, DSPfile = wavrec.dsp
    Each DSP file listed in a DSPfile statement will be assigned to task processors. If the DSP file is not one of dtmf.dsp, dtmfe.dsp, signal.dsp, or echo.dsp, it will be placed on all foreground task processors.
  4. Make certain the following DSP files are always specified in the ag.cfg file. These files are required for the call control functions.

        DSPfile = signal.dsp 1
    DSPfile = callp.dsp
    DSPfile = dtmf.dsp 2
    DSPfile = tone.dsp
    1 Not required for the AG Dual T and AG Dual E boards.
    2 Substitute dtmfe.dsp if you are using echo cancellation.
  5. To configure for echo cancellation, you must also specify the following DSP file in the ag.cfg file:

        DSPfile = echo.dsp
    
    
  6. Check your MIPS usage. Take the worst-case MIPS usage for each port on a board. Add up the total MIPS usage for all ports. This should not exceed the Available Foreground MIPS for any board in the system. If it does, then reduce the number of ports used on that board by the application, accordingly.

    
    
  7. Check the list of configuration restrictions.

    
    
  8. Initialize the boards by running agmon. Examine the Task Processor Configuration section of the ag.rpt file output by agmon, and confirm that the foreground DSP files you have selected are assigned to the foreground processors.

5.4.1 Bandwidth Configuration Restrictions

Some functions have extremely high data throughput requirements. This is especially true of WAVE file play and record since no audio compression is performed on WAVE files. This section lists restrictions based on data throughput limitations.

5.4.2 Example 1: Configuring an AG-8

This example describes how to configure a standard AG-8 to play and record OKI 6 kHz speech instead of NMS speech, without using echo cancellation.

  1. List all foreground functions used in connected state:

    • Tone generator (for play beeps).

      
      
    • OKI Play 6 kHz

      
      
    • OKI Record 6 kHz

      
      
    • The DSP files required are:

      • tone.dsp

        
        
      • okirec.dsp

        
        
      • okiply.dsp

        
         

      • Edit the ag.cfg file to contain the following statements:

           DSPfile = signal.dsp       # Always required background
        DSPfile = dtmf.dsp # Always required background
        DSPfile = callp.dsp # Always required foreground
        DSPfile = tone.dsp # Always required foreground
        DSPfile = okirec.dsp # Foreground from step 2
        DSPfile = okiply.dsp # Foreground from step 2
      • Calculate worst-case MIPS:

        
        The MIPS requirements for the selected foreground functions are:
        • Tone Generator = 0.88 MIPS

          
          
        • OKI Play 6 kHz = 2.52 MIPS

          
          
        • OKI Record 6 kHz = 2.46 MIPS

          
          These three functions are mutually exclusive on each port. Only a single one of the three will ever be active at any given time on a given port. Consequently, the worst case foreground MIPS usage is 2.52 MIPS per port.
          The total worst case MIPS usage is: 8 ports * 2.52 MIPS per port = 20.2 MIPS.
          23 foreground MIPS are available.
          No restrictions apply.
        • Run agmon on the edited configuration file and confirm task processor assignments.

          
           

        5.4.3 Example 2: Configuring an AG-24/30/48/60

        This example describes how to configure a standard AG-24/30/48/60 board to use NMS vari-speed speech with the maximum play speed set to 2X, without echo cancellation. It is assumed that the application is also using tone generation. Due to the high MIPS requirements of the NMS vari-speed DSP file, this configuration will result in a reduced port count as shown in step 4.

        1. List all foreground functions used in connected state:

          • Tone Generator (0.88 MIPS)

            
            
          • NMS Play 32 Kbit/s 2X (4.30 MIPS)

            
            
          • NMS Play 24 Kbit/s 2X (4.30 MIPS)

            
            
          • NMS Play 16 Kbit/s 2X (4.30 MIPS)

            
            
          • NMS Record 32 Kbit/s (2.13 MIPS)

            
            
          • NMS Record 24 Kbit/s (2.13 MIPS)

            
            
          • NMS Record 16 Kbit/s (2.13 MIPS)

            
            
          • The DSP files required are:

            • tone.dsp

              
              
            • voxp.dsp

              
              
            • voxr.dsp

              
              
            • Edit the ag.cfg file to contain the following statements:

                 DSPfile = signal.dsp       # Always required background
              DSPfile = dtmf.dsp # Always required background
              DSPfile = callp.dsp # Always required foreground
              DSPfile = tone.dsp # Always required foreground
              DSPfile = voxp.dsp # Foreground from step 2
              DSPfile = voxr.dsp # Foreground from step 2
            • All functions listed in step 1 are mutually exclusive on each port. Only one of the three types of play or record will ever be active at any given time on a given port. Consequently, the worst case foreground MIPS usage occurs when any NMS vari-speed play is running at 4.3 MIPS per port. The available foreground MIPS on an AG-24/30/48/60 board is 86. This means the maximum number of ports in this configuration is: 86 MIPS / 4.3 MIPS = 20 ports.

              
              No restrictions apply.
            • Run agmon on the edited configuration file and confirm task processor assignments.



            (Page 1 of 1 in this chapter)


            tech_support@nmss.com
            Copyright © 1999, Natural MicroSystems, Inc. All rights reserved.