at75c1222 ETC-unknow, at75c1222 Datasheet

no-image

at75c1222

Manufacturer Part Number
at75c1222
Description
Manufacturer
ETC-unknow
Datasheet
Features
Overview
The AT75C1222 Multi-way Conferencing Software Module is designed to run on the
OakDSPCore
implements commonly-used voice processing algorithms:
The implemented algorithms have a number of parameters which can be programmed
at run time. These parameters modify the behavior of the DSP algorithms in such a
manner that they comply with the applicable standards under most situations. They
also allow the AT75C1222 to cope with many non-standard situations often encoun-
tered on private telephone infrastructures.
Moreover, the AT75C1222 module is able to perform multi-way conferencing. Either up
to two independent decode channels with G.729 or up to four decode channels with
either µ-law or A-law compression are available with no penalty on the voice quality.
The AT75C1222 takes advantage of the AT75 mailbox to exchange data with the on-
chip ARM7TDMI
easy to integrate the AT75C1222 interface into most operating systems.
For developers using uClinux, a specific device driver is supplied, thereby assuring the
extension of uClinux capabilities to the complete functionality of the AT75C1222 mod-
ule in a seamless manner.
This document is made up of three sections:
1. Functional description of the supported algorithms.
2. Description of the low level software interface.
3. Description of the uClinux device driver and full integration of AT75C1222
Note:
Software Module Dedicated to Voice Processing and Multi-way Conferencing
Optimized for the AT75 Series Smart Internet Appliance Processor (SIAP
Includes Several Run-time Configurable Stand-alone Algorithms
ITU-T G.729 and G.711 Standard-compliant
Either up to Two Decode Channels with G.729 Standard, or up to Four Decode
Channels with G.711 Standard
Available with a uClinux
– G.729 Single -rate Vocoder (8 Kbps)
– VAD/CNG Silence Compression (Annexe B of G.729)
– G.711 µ-law or A-law Compression (64 Kbps)
– Arbitrary Tone Generator
– DTMF Detector
– Echo Canceller
Low bit-rate G.729 vocoder for multimedia communication.
Silence compression algorithm to efficiently handle periods of silence during
communication.
High bit-rate voice compression algorithm.
Arbitrary tone generator that can be used to generate any dual-tone or single-tone
frequency during a programmable duration.
DTMF detector to decode incoming DTMF signaling.
An echo canceller that eliminates the near-end echo.
functionality.
Mixing low-level and driver-level programming should be avoided.
®
subsystem of the AT75 series Smart Internet Appliance Processor. It
®
core. The organization of the data communication channel makes it
®
Device Driver
)
Smart Internet
Appliance
Processor
(SIAP
AT75C1222
Multi-way
Conferencing
Software
Module
Rev. 2664A–INTAP–07/02
)
1

Related parts for at75c1222

at75c1222 Summary of contents

Page 1

... Moreover, the AT75C1222 module is able to perform multi-way conferencing. Either up to two independent decode channels with G.729 four decode channels with either µ-law or A-law compression are available with no penalty on the voice quality. The AT75C1222 takes advantage of the AT75 mailbox to exchange data with the on- ® chip ARM7TDMI core ...

Page 2

... DSP. (See “Request Notification Messages” on page 9.) The AT75C1222 contains an echo cancellation unit to eliminate near-end echo. This unit is based on an adaptive FIR filter, which computes the expected echo and a sub- tractor, which removes it from the transmitted signal. Since the echo characteristics can slowly vary with time, an adaptive algorithm continuously updates the echo model. G.711 µ ...

Page 3

... Adaptive Algorithm DAC AT75C1222 module allows several decoding channels to be active at the same time (up to two decode channels with G.729 standard four with either PCM µ-law or PCM A-law). The DTMF detection task detects and decodes the 16 standard DTMF signals, in com- pliance with the ITU-T Q ...

Page 4

... AT75C1222 4 Figure 3. DTMF Detector Block Diagram 697 Hz 770 Hz 652 Hz 941 Hz Signal Out of Band In Rejection 1209 Hz 1336 Hz 1477 Hz 1633 Hz The eight band pass filters are centered on the eight frequencies defined in the ITU-T Q.24 specification. The bandwidth is specified according to the tolerance established in this standard. Each filter rejects at least the other seven frequencies. The power level is obtained by averaging the instantaneous energy during a window for each of the eight filtered signals ...

Page 5

... The tone generation task generates a pure sine wave or a dual tone with programmable frequencies, amplitudes and duration. This section describes how the AT75C1222 software is uploaded into the DSP sub- system program memory. It also describes how the application software running on the ARM and the AT75C1222 running on the DSP Subsystem exchange information through Dual Port Mailboxes (DPMB) ...

Page 6

... The mailbox operation and status messages are described in the section “Mailbox Usage” on page 7. When the system is idle, the AT75C1222 module is stored in the ARM memory space, possibly in non-volatile memory. The module contains the data initialization code, the application code, and additional formatting data. The various fields of the AT75C1222 binary image are described in Table 1 ...

Page 7

... This mailbox is used by the DSP software to send status information. For example, a status notification message is sent by the DSP software at the end of the data initializa- tion to notify the ARM application that the data has been initialized. AT75C1222 (1) Semaphore Address Usage ...

Page 8

... TX/RX Encoded Voice Data Oak Memory Access AT75C1222 8 The first two mailboxes deal with speech compressed frames. Each byte sent through the mailbox is put in a 16-bit word where low byte is the original byte value and in high byte are flags. Assuming the data to be transmitted is in “char buf[0..N-1]” formatted in the mailbox as shown in Table 3 (otherwise the frame is ignored) ...

Page 9

... Table 4. Decoding Configuration Request Word 0 0x0003 Word 1 0x0201 Word 2 TX_ID Word 3 TX_TYPE Example: 0x0003 0x0201 0x0000 0x0012 This request will set up Decode channel 0 with G.729 standard. AT75C1222 LENGTH REQUEST_ID PARAMETER[0] ... PARAMETER[LENGTH - 2] unused... 16 Bits Message length = 0x0003 Request ID = 0x0201 TX Channel’s ID. ...

Page 10

... Encoding Configuration Request Volume Configuration Request Volume Up Request Volume Down Request AT75C1222 10 The encoding configuration request is sent to the Oak before any voice data encoding operation. Table 5. Encoding Configuration Request Word 0 0x0002 Word 1 0x0202 Word 2 RX_TYPE Example: 0x0002 0x0202 0x0012 This request will set up Record channel with G.729 standard. ...

Page 11

... Table 11. Echo Cancellation Step-size Adjust Request Word 0 0x0002 Word 1 0x0863 Word 3 ECHO_STEPSZ AT75C1222 Message length = 0x0002 Request ID = 0x0420 0: disable VAD for encoding 1: enable VAD for encoding Message length = 0x0006 Request ID = 0x0860 Filter size in blocks of 16 – valid ...

Page 12

... Start Decoding Request Stop Decoding Request Start Record Request Stop Record Request Start Echo Cancellation Request Stop Echo Cancellation Request AT75C1222 12 The start decoding request is sent to the Oak to start decode operations as configured by the decoding configuration request. Table 12. Start Decoding Request Word 0 0x0002 Word 1 ...

Page 13

... Word 1 0x0831 request. Table 20. DTMF Detection Stop Request Word 0 0x0001 Word 1 0x0832 AT75C1222 Message length = 0x0009 Request ID = 0x0830 Low Group Power Detection Threshold (default: - 40dB) High Group Power Detection Threshold (default: - 40dB) Minimum difference level between the strongest frequency in the low group and the other of the ...

Page 14

... Tone Generation Configuration Request AT75C1222 14 Table 21. Tone Generation Configuration Request Word 0 0x000A Word 1 0x0800 Word 2 32768 * cos (pi* TONE_FREQ /4000) Word 3 32768 * sin (pi* TONE_FREQ /4000) Word 4 TONE_LEVEL = 32768 * 10E(dB/20) Word 5 32768 * cos (pi* TONE_FREQ /4000) Word 6 32768 * sin (pi* TONE_FREQ /4000) Word 7 TONE_LEVEL = 32768 * 10E(dB/20) ...

Page 15

... The description of the supported status messages is listed below forbidden for the Oak program to issue unsupported status messages. However, should the Oak program issue an unsupported or malformed status message, the ARM application must recover correctly. AT75C1222 Message length = 0x0001 Request ID = 0x0801 Message length = 0x0001 ...

Page 16

... Status Message AT75C1222 16 This initialization status message is issued when the AT75C1222 module has finished initializing itself and is ready to accept request messages. The ARM should not issue any request messages before this status message has been received. Table 24. AT75C1222 Module Initialization Status ...

Page 17

... Hz 697 Hz 1 0x01 770 Hz 4 0x04 852 Hz 7 0x07 941 Hz * 0x0B AT75C1222 Message length = 0x0001 Status ID = 0x8414 Message length = 0x0002 Status ID = 0x8422 G.729 decode channel which has been stopped. Valid Message length = 0x0002 Status ID = 0x8412 G.711 decoding channel which has been stopped. ...

Page 18

... API. This API is documented in the following section. Under uClinux, the device drivers are accessed through file system entries. The AT75C1222 device driver is a character type driver. The associated virtual file can be opened, read from, written to and closed like any regular file. The major role of the ...

Page 19

... O_RDONLY | O_NONBLOCK); This opens the G.729 encoder device driver in read mode. It selects non blocking I/O for read operations. The file descriptor is returned in “fd”. If “fd” is positive, the G729 encoder device is readily available for read operations. AT75C1222 19 ...

Page 20

... Synopsis Description Return Values Example Select Method Synopsis AT75C1222 20 #include <unistd.h> int close(int fd); When the G.729 encoder device is no longer needed by the application, it can be closed to release system resources. This is done through the close method. The parameter is the file descriptor of the file to be closed. ...

Page 21

... NULL, NULL, &tv supposed file descriptor related to /dev/g729encoder0 */ if (retval > 0) printf("G.729 frame received.\n"); else printf("G.729 frame not received within 20 ms.\n"); This code checks if a G.729 frame has been received. The time-out is 20 ms. AT75C1222 21 ...

Page 22

... IOCTL Method Synopsis Description AT75C1222 22 #include <sys/ioctl.h> int ioctl(int fd, int request, char *argp); The ioctl() function manipulates the underlying device parameters of the g729.1 encoder device. “fd” is the file descriptor upon which ioctl() will act. It should be related to the /dev/g729encoder0 virtual file. ...

Page 23

... Additionally, the ioctl function controls additional features of the AT75C1222 which are not accessible with the other methods. These special commands are described below. The prototype of the ioctl function is: • ...

Page 24

... Description Return Values Example Write Method Synopsis Description AT75C1222 24 Open “return the new file descriptor” error occurred. In the latter case, the glo- bal variable errno is set appropriately to reflect the cause of error. Possible values of errno are: • ENODEV: This indicates that the underlying hardware does not exist or is not supported ...

Page 25

... It may be zero, causing select to return immediately. If timeout is NULL (no timeout), select can block indefinitely. On success, select() returns the number of descriptors contained in the descriptor sets, which may be zero if the timeout expires before an event occurs. AT75C1222 25 ...

Page 26

... Example IOCTL Method Synopsis Description AT75C1222 26 On error returned, and errno is set appropriately, the sets and timeout become undefined, therefore their contents are not to be relied upon after an error. fd_set wfds; struct timeval tv; int retval; /* initialize file descriptor list */ FD_ZERO(&wfds); ...

Page 27

... Additionally, the ioctl() function controls additional features of the AT75C1222 which are not accessible with the other methods. These special commands are described below. The prototype of the ioctl() function is: • ...

Page 28

... Synopsis Description Return Values Example Select Method Synopsis AT75C1222 28 #include <unistd.h> int close(int fd); When the G.711 encoder device is no longer needed by the application, it can be closed to release system resources. This is done through the close method. The parameter is the file descriptor of the file to be closed. ...

Page 29

... NULL, NULL, &tv supposed file descriptor related to /dev/g711encoder0 */ if (retval > 0) printf("G.711 frame received.\n"); else printf("G.711 frame not received within 5 ms.\n"); This code checks if a G.711 frame has been received. The time-out is 5 ms. AT75C1222 29 ...

Page 30

... Synopsis Description Example G711 decoder Driver Operations AT75C1222 30 #include <sys/ioctl.h> int ioctl(int fd, int request, char *argp); The ioctl() function manipulates the underlying device parameters of the G.711 encoder device. “fd” is the file descriptor upon which ioctl() will act. It should be related to the /dev/g711encoder0 virtual file. “ ...

Page 31

... Additionally, the ioctl function controls additional features of the AT75C1222 which are not accessible with the other methods. These special commands are described below. The prototype of the ioctl function is: • ...

Page 32

... Return Values Write Method Synopsis Description Return Values Example AT75C1222 32 #include <unistd.h> int close(int fd); When the G.711 decoder device is no longer needed by the application, it can be closed to release system resources. This is done through the close() method. The parameter is the file descriptor of the file to be closed. ...

Page 33

... FD_ZERO(&wfds); FD_SET(df, &wfds); /* define delay */ tv.tv_sec = 0; tv.tv_usec = 5000; retval = select(df+1, NULL, &wfds, NULL, &tv supposed file descriptor related to /dev/g711decoderN */ if (retval > 0) printf("G.711 frame requested by DSP.\n"); else printf("No G.711 frame requested within 5 ms.\n"); AT75C1222 33 ...

Page 34

... IOCTL Method Synopsis Description Example Tones & DTMF Driver Operations AT75C1222 34 This code checks if a G.711 frame is requested by the DSP. The time-out is 5 ms. #include <sys/ioctl.h> int ioctl(int fd, int request, char *argp); The ioctl function manipulates the underlying device parameters of the G.711 decoder devices. “ ...

Page 35

... Description 2664A–INTAP–07/02 • int close(int fd); Additionally, the ioctl() function controls additional features of the AT75C1222 which are not accessible with the other methods. These special commands are described below. The prototype of the ioctl function is: • int ioctl(int fd, int request, char *argp); ...

Page 36

... Read Method Synopsis Description Return Values AT75C1222 36 Close returns 0 on success error occurred. In the latter case the global vari- able is set appropriately to reflect the cause of error. The only possible value for errno is EBADF which means that “fd” is not a valid file descriptor. ...

Page 37

... FD_ZERO(&rfds); FD_SET(df, &rfds); /* define delay */ tv.tv_sec = 5; tv.tv_usec = 0; AT75C1222 37 ...

Page 38

... Ioctl Method Synopsis Description AT75C1222 38 retval = select(df+1, &rfds, NULL, NULL, &tv supposed file descriptor related to /dev/tones */ if (retval > 0) printf("DTMF digit detected.\n"); else printf("No DTMF digit detected within 5 s.\n"); This code checks if a DTMF digit has been detected. The time-out is 5 ms. ...

Page 39

... The fields and the values to be written are those defined in the section:“Oak Memory Access” on page 8. struct tonegen_args{ unsigned short cosw1; unsigned short sinw1; unsigned short lev1; unsigned short cosw2; unsigned short sinw2; unsigned short lev2; unsigned short signal_len; unsigned short silence_len; unsigned short start; }* tone_args; // 1st frequency component AT75C1222 39 ...

Page 40

... AT75C1222 40 tone_args-> cosw1 = 0x5a82; // 1kHz tone tone_args-> sinw1 = 0x5a83; // tone_args-> lev1 = 0x4000; // -6dB under full scale reference // 2nd frequency component not used here tone_args-> cosw2 = 0; tone_args-> sinw2 = 0; tone_args-> lev1 = 0; tone_args-> signal_len = 500; // milliseconds tone_args-> silence_len = 500; // milliseconds tone_args-> start = 2; // wait for tone start request, single tone is generated ioctl(fd, TONEGEN_CONFIG, tone_args) ...

Page 41

Atmel Headquarters Corporate Headquarters 2325 Orchard Parkway San Jose, CA 95131 TEL 1(408) 441-0311 FAX 1(408) 487-2600 Europe Atmel Sarl Route des Arsenaux 41 Case Postale 80 CH-1705 Fribourg Switzerland TEL (41) 26-426-5555 FAX (41) 26-426-5500 Asia Room 1219 Chinachem ...

Related keywords