Part Number Hot Search : 
4FCT2 N252024V UPC1663B 09741 ATS03 TMG8D60H DX5T8 TC7SA32F
Product Description
Full Text Search
 

To Download USAB13AP77016-XXX-B03 Datasheet File

  If you can't view the Datasheet, Please click here to try to view without PDF Reader .  
 
 


  Datasheet File OCR Text:
  users manual target device m m m m pd77016 m m m m pd77017 m m m m pd77018 m m m m pd77018a m m m m pd77019 m m m m pd77110 m m m m pd77111 m m m m pd77112 m m m m pd77113 m m m m pd77114 m m m m pd77116 m m m m sap77016-b03 g.729 speech codec middleware document no. u13373ej3v0umj1 (3rd edition) date published october 2000 n cp(k) printed in japan 1999 ?
users manual u13373ej3v0um00 2 [memo]
users manual u13373ej3v0um00 3 windows is either a registered trademark or a trademark of microsoft corporation in the united states and/or other countries
users manual u13373ej3v0um00 4 m8e 00. 4 the information in this document is current as of november, 1999. the information is subject to change without notice. for actual design-in, refer to the latest publications of nec's data sheets or data books, etc., for the most up-to-date specifications of nec semiconductor products. not all products and/or types are available in every country. please check with an nec sales representative for availability and additional information. no part of this document may be copied or reproduced in any form or by any means without prior written consent of nec. nec assumes no responsibility for any errors that may appear in this document. nec does not assume any liability for infringement of patents, copyrights or other intellectual property rights of third parties by or arising from the use of nec semiconductor products listed in this document or any other liability arising from the use of such products. no license, express, implied or otherwise, is granted under any patents, copyrights or other intellectual property rights of nec or others. descriptions of circuits, software and other related information in this document are provided for illustrative purposes in semiconductor product operation and application examples. the incorporation of these circuits, software and information in the design of customer's equipment shall be done under the full responsibility of customer. nec assumes no responsibility for any losses incurred by customers or third parties arising from the use of these circuits, software and information. while nec endeavours to enhance the quality, reliability and safety of nec semiconductor products, customers agree and acknowledge that the possibility of defects thereof cannot be eliminated entirely. to minimize risks of damage to property or injury (including death) to persons arising from defects in nec semiconductor products, customers must incorporate sufficient safety measures in their design, such as redundancy, fire-containment, and anti-failure features. nec semiconductor products are classified into the following three quality grades: "standard", "special" and "specific". the "specific" quality grade applies only to semiconductor products developed based on a customer-designated "quality assurance program" for a specific application. the recommended applications of a semiconductor product depend on its quality grade, as indicated below. customers must check the quality grade of each semiconductor product before using it in a particular application. "standard": computers, office equipment, communications equipment, test and measurement equipment, audio and visual equipment, home electronic appliances, machine tools, personal electronic equipment and industrial robots "special": transportation equipment (automobiles, trains, ships, etc.), traffic control systems, anti-disaster systems, anti-crime systems, safety equipment and medical equipment (not specifically designed for life support) "specific": aircraft, aerospace equipment, submersible repeaters, nuclear reactor control systems, life support systems and medical equipment for life support, etc. the quality grade of nec semiconductor products is "standard" unless otherwise expressly specified in nec's data sheets or data books, etc. if customers wish to use nec semiconductor products in applications not intended by nec, they must contact an nec sales representative in advance to determine nec's willingness to support a given application. (note) (1) "nec" as used in this statement means nec corporation and also includes its majority-owned subsidiaries. (2) "nec semiconductor products" means any semiconductor product developed or manufactured by or for nec (as defined above).
users manual u13373ej3v0um00 5 regional information some information contained in this document may vary from country to country. before using any nec product in your application, piease contact the nec office in your country to obtain a list of authorized representatives and distributors. they will verify: ? device availability ? ordering information ? product release schedule ? availability of related technical literature ? development environment specifications (for example, specifications for third-party tools and components, host computers, power plugs, ac supply voltages, and so forth) ? network requirements in addition, trademarks, registered trademarks, export restrictions, and other legal issues may also vary from country to country. nec electronics inc. (u.s.) santa clara, california tel: 408-588-6000 800-366-9782 fax: 408-588-6130 800-729-9288 nec electronics (germany) gmbh duesseldorf, germany tel: 0211-65 03 02 fax: 0211-65 03 490 nec electronics (uk) ltd. milton keynes, uk tel: 01908-691-133 fax: 01908-670-290 nec electronics italiana s.r.l. milano, italy tel: 02-66 75 41 fax: 02-66 75 42 99 nec electronics (germany) gmbh benelux office eindhoven, the netherlands tel: 040-2445845 fax: 040-2444580 nec electronics (france) s.a. velizy-villacoublay, france tel: 01-30-67 58 00 fax: 01-30-67 58 99 nec electronics (france) s.a. madrid office madrid, spain tel: 91-504-2787 fax: 91-504-2860 nec electronics (germany) gmbh scandinavia office taeby, sweden tel: 08-63 80 820 fax: 08-63 80 388 nec electronics hong kong ltd. hong kong tel: 2886-9318 fax: 2886-9022/9044 nec electronics hong kong ltd. seoul branch seoul, korea tel: 02-528-0303 fax: 02-528-4411 nec electronics singapore pte. ltd. united square, singapore tel: 65-253-8311 fax: 65-250-3583 nec electronics taiwan ltd. taipei, taiwan tel: 02-2719-2377 fax: 02-2719-5951 nec do brasil s.a. electron devices division guarulhos-sp brasil tel: 55-11-6462-6810 fax: 55-11-6462-6829 j00.7
users manual u13373ej3v0um00 6 [memo]
users manual u13373ej3v0um00 7 preface target readers this users manual is intended for users who wish to design and develop application systems using the m pd77016 family. the m pd77016 family comprises the m pd77015, 77016, 77017, 77018, 77018a, 77019, 77110, 77111, 77112, 77113, 77114, and 77116 note . however, note that the m pd77015 is not among the target devices in this users manual. note under development purpose this users manual is intended to give users an understanding of the supported middleware available for the design and development of application systems using the m pd77016 family. organization this users manual describes the basic numerical operation program, etc. chapter 1 general chapter 2 library specifications chapter 3 installation appendix sample source how to use this manual it is assumed that the reader of this manual has general knowledge in the fields of electrical engineering, logic circuits, microcontrollers, and c language. to learn about the hardware functions of the m pd77016 family: ? refer to m pd7701x family users manual architecture. to learn about the instruction functions of the m pd77016 family: ? refer to the m pd7701x family users manual instructions. conventions data significance: higher digits on the left and lower digits on the right active low: (overscore over pin or signal name) note : footnote for item marked with note in the text caution : information requiring particular attention remark : supplementary information numerical representation: binary or 0b decimal hexadecimal 0x
8 users manual u13373ej3v0um00 related documents the related documents listed below may include preliminary versions. however, preliminary versions are not marked as such. documents related to devices users manual application note document name part number pamphlet data sheet architecture instructions basic software m pd77016 u10891e m pd77015 m pd77017 m pd77018 u10902e m pd77018a m pd77019 u11849e m pd77019-013 u13053e u10503e m pd77110 m pd77111 m pd77112 u12801e m pd77113 m pd77114 u12395e under preparation under preparation u13116e u11958e documents related to development tools document name document no. ie-77016-98/pc users manual hardware eeu-1541 ie-77016-cm-lc users manual u14139e function u14397e rx77016 users manual configuration tool u14404e rx77016 application note host api interface u14371e caution the related documents listed above are subject to change without notice. be sure to use the latest version of each document for designing.
users manual u13373ej3v0um00 9 contents chapter 1 introduction...................................................................................................... .......... 13 1.1 middleware .................................................................................................................. ............... 13 1.2 g.729 speech codec.......................................................................................................... ....... 13 1.3 g.729 annex a speech codec ................................................................................................. 1 4 1.4 g.729 annex b speech codec ................................................................................................. 1 4 1.5 system overview............................................................................................................. .......... 14 1.5.1 features .................................................................................................................. ...................... 14 1.5.2 operating environment..................................................................................................... ............. 14 1.5.3 performance............................................................................................................... ................... 15 1.5.4 directory structure ....................................................................................................... .................. 16 chapter 2 library specifications ........................................................................................... 19 2.1 g.729 speech codec processing flow ................................................................................... 19 2.2 function specifications (single-channel version)................................................................ 22 2.2.1 initialize encoder function............................................................................................... ............... 22 2.2.2 initialize decoder function............................................................................................... ............... 24 2.2.3 encoder function .......................................................................................................... ................. 26 2.2.4 decoder function .......................................................................................................... ................. 28 2.2.5 get version function ...................................................................................................... ................ 30 2.3 function specifications (multichannel version) .................................................................... 31 2.3.1 initialize scratch area function .......................................................................................... ............. 31 2.3.2 initialize encoder function............................................................................................... ............... 32 2.3.3 initialize decoder function............................................................................................... ............... 33 2.3.4 encoder function .......................................................................................................... ................. 34 2.3.5 decoder function .......................................................................................................... ................. 35 2.4 control/status registers (single-channel version) .............................................................. 36 2.4.1 g729e_cmd_sts (g729ae_cmd_sts, g729be_cmd_sts, g729abe_cmd_sts) register ....................................................................................................................... ................... 36 2.4.2 g729d_cmd_sts (g729ad_cmd_sts, g729bd_cmd_sts, g729abd_cmd_sts) register ....................................................................................................................... ................... 37 2.5 multichannel version external interface................................................................................. 38 2.5.1 function transfer parameters for g.729 annex b multichannel version ........................................ 38 2.6 compressed data formats..................................................................................................... .. 39 2.6.1 speech data compression format............................................................................................ ...... 39 2.6.2 sid frame compression format.............................................................................................. ........ 40 chapter 3 installation ...................................................................................................... ........... 41 3.1 installation procedure...................................................................................................... ......... 41 3.2 sample creation procedure ................................................................................................... .. 42 3.3 symbol naming regulations................................................................................................... .43 appendix sample source ...................................................................................................... ........ 45 a.1 sample source for single-channel version (sample.asm)................................................... 45 a.2 sample source for multichannel version (samplebm.asm).................................................. 58 a.2.1 samplebm.asm header file (sysconf.h)...................................................................................... .... 77
10 users manual u13373ej3v0um00 list of figures figure no. title page 2-1 application processing flow (encoder)....................................................................................... .................. 20 2-2 application processing flow (decoder)....................................................................................... .................. 21 3-1 sample program evaluation system............................................................................................ ................. 42
users manual u13373ej3v0um00 11 list of tables table no. title page 1-1 required memory capacities.................................................................................................. .......................15 2-1 g729e_cmd_sts register ...................................................................................................... ....................36 2-2 g729d_cmd_sts register ...................................................................................................... ....................37 2-3 function transfer parameters for the g.729 annex b multichannel version. ................................................38 2-4 bit allocation of speech compression data................................................................................... ................39 2-5 meaning of speech compression data .......................................................................................... ...............39 2-6 bit allocation of silent compression data................................................................................... ...................40 2-7 meaning of silent compression data.......................................................................................... ...................40 3-1 symbol names................................................................................................................ ...............................43
12 users manual u13373ej3v0um00 [memo]
users manual u13373ej3v0um00 13 chapter 1 introduction 1.1 middleware middleware is the name given to a group of software that has been tuned so that it draws out the maximum performance of the processor and enables processing that is conventionally performed by hardware to be performed by software. the concept of middleware was introduced with the development of a new high-speed processor, the dsp, in order to facilitate operation of the environments integrated in the system. by providing appropriate speech codec and image data compression/decompression-type middleware, nec is offering users the kind of technology essential in the realization of a multimedia system for the m pd77016 family, and is continuing its promotion of system development. the m sap77016-b03 is middleware that provides speech data compression and decompression which supports itu-t note recommendation g.729 (including annex a and annex b). the descriptions in this manual, unless specified otherwise, assume use of g.729 speech codec. note international telecommunication union - telecommunication standardization sector 1.2 g.729 speech codec the g.729 speech codec is an 8-kbps speech compression and decompression codec recommended by itu-t that consists of an algorithm for encoding speech signals using cs-acelp note . g.729 speech codec is designed to perform 8-khz sampling of the analog input signal, which is band limited with a telephone band filter (itu-t recommendation g.712), and to use the digital signal obtained by converting this data to 16-bit linear pcm data as the encoder input. similarly, the decoder output must be returned to an analog signal. other i/o format signals such as 64-kbps pcm data prescribed by itu-t recommendation g.711 must be converted to a suitable format either to a 16-bit linear pcm before the encoder or from a 16-bit linear pcm after the decoder. the bit string passed from the encoder to the decoder is prescribed by itu-t recommendation g.729. note conjugate structure-algebraic code excited linear prediction
chapter 1 introduction 14 users manual u13373ej3v0um00 1.3 g.729 annex a speech codec itu-t recommendation g.729 annex a is the low-calculation-capacity version of the g.729 speech codec, and this codec can be connected with the standard g.729 speech codec. the low-calculation-capacity speech codec was developed for multimedia applications that use both speech and data at the same time, but it is not limited to such applications in particular. 1.4 g.729 annex b speech codec itu-t recommendation g.729 annex b is the silence compression function of g.729 speech codec, and it is added to the standard g.729 speech codec or annex a. speech codec with an added silence compression function cannot be connected to a speech codec without an added silence compression function. this silence compression function is designed to lower the bit rate by raising the compression rate of silent parts. 1.5 system overview 1.5.1 features 8-kbps compression and encoding high-quality speech encoding (quality equivalent to 32-kbps adpcm) encoding/decoding of 80 samples as 1 frame at sampling frequency of 8 khz speech i/o data all 16-bit linear pcm data 1.5.2 operating environment (1) target dsps m pd77016, 77017 note 1 , 77018, 77018a, 77019, 77110, 77111, 77112, 77113, 77114, and 77116 note 2 notes 1. if annex b is added, m pd77017 is excluded from the target dsps. 2. under development caution the m m m m pd77015 is excluded from the target devices.
chapter 1 introduction users manual u13373ej3v0um00 15 (2) required memory table 1-1. required memory capacities g.729 annex a annex b annex ab note annex b type memory [word] single-channel version multichannel version instruction memory C 8.8 k 7.7 k 12.2 k 11.2 k 7.5 k ram 1.8 k 1.7 k 1.9 k 1.8 k 942 n + 1153 x memory rom 3.1 k 2.8 k 3.1 k 2.8 k 2.6 k ram 1.9 k 1.7 k 2.0 k 1.8 k 914 n + 1388 y memory rom 2.0 k 1.8 k 2.4 k 2.2 k 2.0 k note annex ab: annex a + annex b remark n: number of channels (3) software tool (windows? version) dsp tools: workbench wb77016 ver. 2.32 high-speed simulator hsm77016 ver. 2.3 1.5.3 performance [condition] dsp: m pd77016 family (operating frequency: 33 mhz, 33 mips) [mips value required for processing 1 frame in real time (10 ms)] (g.729) compression: 15.7 mips decompression: 3.3 mips (g.729 annex a) compression: 9.0 mips decompression: 2.2 mips (g.729 annex b) compression: 16.5 mips decompression: 3.5 mips (g.729 annex a compression: 9.5 mips + annex b) decompression: 3.7 mips (g.729 annex b compression: 13.9 n mips (n: number of channels) multichannel version) decompression: 2.8 n mips (n: number of channels)
chapter 1 introduction 16 users manual u13373ej3v0um00 1.5.4 directory structure the m sap77016-b03 directory structure is as follows. library g729_016.lib: m pd77016 library file g729_01x.lib: m pd7701x ( m pd77016 family other than above note 1 ) library file g729m016.lib: m pd77016, 77110, 77116 multichannel version library file g729m01x.lib: m pd7701x ( m pd77016 family other than above) multichannel version library file smp g729 samplek.prj: project file (g.729) samplea.prj: project file (g.729 annex a) sampleb.prj: project file (g.729 annex b) sampleab.prj: project file (g.729 annex ab note 2 ) samplebm.prj: project file (g.729 annex b multichannel version) upd7701x.h: m pd7701 header file g729_lib.h: g729_016.lib, g.729_01x.lib header file g729blib.h: g729m016.lib, g.729m01x.lib header file sysconf.h: samplebm.asm header file samplek.asm: sample source (g.729) samplea.asm: sample source (g.729 annex a) sampleb.asm: sample source (g.729 annex b) sampleab.asm: sample source (g.729 annex ab note 2 ) samplebm.asm: sample source (for g.729 annex b multichannel version) notes 1. the m pd77016, 77110, and 77116 are not target dsps. g729_01x.lib is the file for the m pd77017, 77018, 77018a, 77019, 77111, 77112, 77113, and 77114. 2. annex ab: annex a + annex b library files g729_016.lib and g729_01x.lib are for the single-channel version. they include the following object files. g729kenc.rel (g.729 encoder) g729kdec.rel (g.729 decoder) g729aenc.rel (g.729 annex a encoder) g729adec.rel (g.729 annex a decoder) g729benc.rel (g.729 annex b encoder) g729bdec.rel (g.729 annex b decoder) g729abenc.rel (g.729 annex a + annex b encoder) g729abdec.rel (g.729 annex a + annex b decoder) g729getv.rel (get version function)
chapter 1 introduction users manual u13373ej3v0um00 17 library files g729m016.lib and g729m01x.lib are for the multichannel version. they include the following object files. g729bmen.rel (g.729 annex b multichannel version encoder) g729bmde.rel (g.729 annex b multichannel version decoder) g729bmco.rel (g.729 annex b multichannel version common part) caution g729m016.lib is a file for the m m m m pd77016, 77110, and 77116. g729bm01x.lib is a file for the m m m m pd77018, 77018a, 77019, 77111, 77112, 77113, and 77114.
18 users manual u13373ej3v0um00 [memo]
users manual u13373ej3v0um00 19 chapter 2 library specifications this chapter describes the g.729 speech codec function specifications and call rules. 2.1 g.729 speech codec processing flow the processing flow of applications using the g.729 speech codec is shown in figures 2-1 and 2-2.
chapter 2 library specifications 20 users manual u13373ej3v0um00 figure 2-1. application processing flow (encoder) no ye s start speech i/o initialization processing ad/da initial setting interrupt enable, etc. speech input interrupt handler 16-bit linear pcm data input 80 samples? encoder initialization call g729_initenc encoder data input processing encoding call g729_enc encoder data output processing remark in the case of g.729 annex a, annex b, and annex a + annex b, the g729_ part of the g.729 function name is g729a_, g729b_, and g729ab_, respectively. moreover, in the case of the g.729 annex b multichannel version, call g729b_start codec immediately after start, g729b_initencm in the g729_initenc part, and g729b_encm in the g729_enc part.
chapter 2 library specifications users manual u13373ej3v0um00 21 figure 2-2. application processing flow (decoder) no ye s start decoder initialization call g729_initdec speech i/o initialization processing ad/da initial setting interrupt enable, etc. speech output interrupt handler 16-bit linear pcm data output 80 samples? decoder data input processing decoding call g729_dec decoder data output processing remark in the case of g.729 annex a, annex b, and annex a + annex b, the g729_ part of the g.729 function name is g729a_, g729b_, and g729ab_, respectively. moreover, in the case of the g.729 annex b multichannel version, call g729b_start codec immediately after start, g729b_initdecm in the g729_initdec part, and g729b_decm in the g729_dec part.
chapter 2 library specifications 22 users manual u13373ej3v0um00 2.2 function specifications (single-channel version) 2.2.1 initialize encoder function the g729_initenc (g729a_initenc, g729b_initenc, g729ab_initenc) function is used to set encoder constants and perform initialization of coefficient tables and delay buffer. (1) g.729 initialize encoder function [classification] encoder initialization processing [function name] g729_initenc [summary of function] initializes the ram area used by the g.729 encoder and sets parameters. [format] call g729_initenc [arguments] none [return value] none [function] initializes the g.729 encoder and sets parameters. [registers used] r0, dp0, dp1, dp2, dp3, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 240 maximum number of cycles: 842 (2) g.729 annex a initialize encoder function [classification] encoder initialization processing [function name] g729a_initenc [summary of function] initializes the ram area used by the g.729 annex a encoder and sets parameters. [format] call g729a_initenc [arguments] none [return value] none [function] initializes the g.729 annex a encoder and sets parameters. [registers used] r0, dp0, dp1, dp2, dp3, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 240 maximum number of cycles: 860
chapter 2 library specifications users manual u13373ej3v0um00 23 (3) g.729 annex b initialize encoder function [classification] encoder initialization processing [function name] g729b_initenc [summary of function] initializes the ram area used by the g.729 annex b encoder and sets parameters. [format] call g729b_initenc [arguments] none [return value] none [function] initializes the g.729 annex b encoder and sets parameters. [registers used] r0, r1, r2, dp0, dp1, dp2, dp3, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 240 maximum number of cycles: 1177 (4) g.729 annex a + annex b initialize encoder function [classification] encoder initialization processing [function name] g729ab_initenc [summary of function] initializes the ram area used by the g.729 annex a + annex b encoder and sets parameters. [format] call g729ab_initenc [arguments] none [return value] none [function] initializes the g.729 annex a + annex b encoder and sets parameters. [registers used] r0, r1, r2, dp0, dp1, dp2, dp3, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 240 maximum number of cycles: 1195
chapter 2 library specifications 24 users manual u13373ej3v0um00 2.2.2 initialize decoder function the g729_initdec (g729a_initdec, g729b_initdec, g729ab_initdec) function is used to set decoder constants and perform initialization of coefficient tables and delay buffer. (1) g.729 initialize decoder function [classification] decoder initialization processing [function name] g729_initdec [summary of function] initializes the ram area used by the g.729 decoder and sets parameters. [format] call g729_initdec [arguments] none [return value] none [function] initializes the g.729 decoder and sets parameters. [registers used] r0, r1, r2, dp0, dp1, dp2, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 154 maximum number of cycles: 549 (2) g.729 annex a initialize decoder function [classification] decoder initialization processing [function name] g729a_initdec [summary of function] initializes the ram area used by the g.729 annex a decoder and sets parameters. [format] call g729a_initdec [arguments] none [return value] none [function] initializes the g.729 annex a decoder and sets parameters. [registers used] r0, r1, r2, dp0, dp1, dp2, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 183 maximum number of cycles: 939
chapter 2 library specifications users manual u13373ej3v0um00 25 (3) g.729 annex b initialize decoder function [classification] decoder initialization processing [function name] g729b_initdec [summary of function] initializes the ram area used by the g.729 annex b decoder and sets parameters. [format] call g729b_initdec [arguments] none [return value] none [function] initializes the g.729 annex b decoder and sets parameters. [registers used] r0, r1, r2, dp0, dp1, dp2, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 154 maximum number of cycles: 760 (4) g.729 annex a + annex b initialize decoder function [classification] decoder initialization processing [function name] g729ab_initdec [summary of function] initializes the ram area used by the g.729 annex a + annex b decoder and sets parameters. [format] call g729ab_initdec [arguments] none [return value] none [function] initializes the g.729 annex a + annex b decoder and sets parameters. [registers used] r0, r1, r2, dp0, dp1, dp2, dp4, dp7, dn0, dn2, dmx [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 183 maximum number of cycles: 1120
chapter 2 library specifications 26 users manual u13373ej3v0um00 2.2.3 encoder function the encoder functions generate an 80-bit or 16-bit signal by compressing 80 input samples of speech signal. (1) g.729 encoder function [classification] encode processing block [function name] g729_enc [summary of function] compresses 80 samples 16 bits into 80 bits. [format] call g729_enc [arguments] g729e_pcm_buf[80](x) input data *g729e_cmd_sts:y control/status register [return value] g729e_ana_buf[5](y) compressed signal [function] compresses the input signal from codec (80 samples 16 bits) into 80 bits. [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 4 maximum loop stack level: 2 maximum number of repeats: 240 maximum mips value: 15.7 (2) g.729 annex a encoder function [classification] encode processing block [function name] g729a_enc [summary of function] compresses 80 samples 16 bits into 80 bits. [format] call g729a_enc [arguments] g729ae_pcm_buf[80](x) input data *g729ae_cmd_sts:y control/status register [return value] g729ae_ana_buf[5](y) compressed signal [function] compresses the input signal from codec (80 samples 16 bits) into 80 bits. [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 4 maximum loop stack level: 2 maximum number of repeats: 240 maximum mips value: 9.0
chapter 2 library specifications users manual u13373ej3v0um00 27 (3) g.729 annex b encoder function [classification] encode processing block [function name] g729b_enc [summary of function] compresses 80 samples 16 bits into 80 bits or 16 bits. [format] call g729b_enc [arguments] g729be_pcm_buf[80](x) input data *g729be_cmd_sts:y control/status register *g729bframe:y frame counter (0 to 0x7fff) (reset to 0x100 after 0x7fff) [return value] g729be_ana_buf[5](y) compressed signal [function] compresses the signal input from codec (80 samples 16 bits) to 80 bits or 16 bits. [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 6 maximum loop stack level: 3 maximum number of repeats: 240 maximum mips value: 16.5 (4) g.729 annex a + annex b encoder function [classification] encode processing block [function name] g729ab_enc [summary of function] compresses 80 samples 16 bits into 80 bits or 16 bits. [format] call g729ab_enc [arguments] g729abe_pcm_buf[80](x) input data *g729abe_cmd_sts:y control/status register *g729abframe:y frame counter (0 to 0x7fff) (reset to 0x100 after 0x7fff) [return value] g729abe_ana_buf[5](y) compressed signal [function] compresses the signal input from codec (80 samples 16 bits) to 80 bits or 16 bits. [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 6 maximum loop stack level: 3 maximum number of repeats: 240 maximum mips value: 9.5
chapter 2 library specifications 28 users manual u13373ej3v0um00 2.2.4 decoder function the decoder function decompresses data compressed to 80 bits or 16 bits into speech data of 80 samples 16 bits. (1) g.729 decoder function [classification] decode processing block [function name] g729_dec [summary of function] decompresses 80 bits into 80 samples 16 bits. [format] call g729_dec [arguments] g729d_ana_buf[5](y) input data *g729d_cmd_sts:y control/status register [return value] g729d_pcm_buf[80](x) decompressed data [function] decompresses data compressed to 80 bits into speech signal (80 samples 16 bits). [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 4 maximum loop stack level: 2 maximum number of repeats: 40 maximum mips value: 3.3 (2) g.729 annex a decoder function [classification] decode processing block [function name] g729a_dec [summary of function] decompresses 80 bits into 80 samples 16 bits. [format] call g729a_dec [arguments] g729ad_ana_buf[5](y) input data *g729ad_cmd_sts:y control/status register [return value] g729ad_pcm_buf[80](x) decompressed data [function] decompresses data compressed to 80 bits into speech signal (80 samples 16 bits). [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 4 maximum loop stack level: 2 maximum number of repeats: 40 maximum mips value: 2.2
chapter 2 library specifications users manual u13373ej3v0um00 29 (3) g.729 annex b decoder function [classification] decode processing block [function name] g729b_dec [summary of function] decompresses 80 bits or 16 bits into 80 samples 16 bits. [format] call g729b_dec [arguments] g729bd_ana_buf[5](y) input data *g729bd_cmd_sts:y control/status register [return value] g729bd_pcm_buf[80](x) decompressed data [function] decompresses data compressed to 80 bits or 16 bits into speech signal (80 samples 16 bits). [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 6 maximum loop stack level: 3 maximum number of repeats: 40 maximum mips value: 3.5 (4) g.729 annex a + annex b decoder function [classification] decode processing block [function name] g729ab_dec [summary of function] decompresses 80 bits or 16 bits into 80 samples 16 bits. [format] call g729ab_dec [arguments] g729abd_ana_buf[5](y) input data *g729abd_cmd_sts:y control/status register [return value] g729abd_pcm_buf[80](x) decompressed data [function] decompresses data compressed to 80 bits or 16 bits into speech signal (80 samples 16 bits). [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 4 maximum loop stack level: 3 maximum number of repeats: 40 maximum mips value: 3.7
chapter 2 library specifications 30 users manual u13373ej3v0um00 2.2.5 get version function the get version function returns the library version. [classification] version information acquisition [function name] g729_getversion [summary of function] returns the library version. [format] call g729_getversion [arguments] none [return value] r0h major version number r0l minor version number [function] returns the version number of the g.729 speech codec library as a 32-bit value. example: when r0 = 0x000x00010x0100 version: v1.01 [registers used] r0 [hardware resources] maximum stack level: 0 maximum loop stack level: 0 maximum number of repeats: 0 maximum number of cycles: 6
chapter 2 library specifications users manual u13373ej3v0um00 31 2.3 function specifications (multichannel version) 2.3.1 initialize scratch area function the initialize scratch area function performs initialization of the scratch area of this middleware corresponding to multichannel specifications. (1) initialize scratch area function [classification] scratch area initialization processing [function name] g729b_startcodec [summary of function] clears to 0 the scratch area used by the g.729 annex b multichannel version. [format] call g729b_start_codec [arguments] none [return value] none [function] clears to 0 the scratch area used by the g.729 annex b multichannel version. [registers used] r0, dp0, dp4, dp5 [hardware resources] maximum stack level: 1 maximum loop stack level: 1 maximum number of repeats: 597 maximum number of cycles: 1072
chapter 2 library specifications 32 users manual u13373ej3v0um00 2.3.2 initialize encoder function the g729b_initencm function is used to set encoder constants and perform initialization of coefficient tables and delay buffer. (1) g.729 annex b multichannel version initialize encoder function [classification] encoder initialization processing [function name] g729b_initencm [summary of function] performs initialization of the g.729 annex b multichannel version encoder and sets parameters. [format] call g729b_initencm [arguments] i/o buffer start address and parameters example: /*---*/ dp0=g729b_io_table ; clr(r1) ; r01=static_x1 ; /*---*/ *dp0++=r01 ; r01-static_y1 ; /*---*/ *dp0++=r01 ; r01=encpcmdata1 ; /*---*/ *dp0++=r01 ; r01=encprmdata1 ; /*---*/ *dp0++=r01 ; rep 4 ; /*...*/ *dp0++=r1h ; r01=decpcmdata1 ; /*---*/ *dp0++=r01 ; r01=decprmdata1 ; /*---*/ *dp0++=r01 ; r01= 1 ; /* */ *dp0++=r01 ; fparitycheck = 1 rep 5 ; /*...*/ *dp0++=r1h ; /* */ *dp0++=r01 ; fvadenable = 1 rep 3 ; /*...*/ *dp0++=r1h ; /*---*/ dp0=g729b_io_table ; [return value] none [function] performs initialization of the g.729 annex b multichannel version encoder and sets parameters. [registers used] r0, r1, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0 [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 240 maximum number of cycles: 2642
chapter 2 library specifications users manual u13373ej3v0um00 33 2.3.3 initialize decoder function the g729b_initdecm function is used to set decoder constants and perform initialization of coefficient tables and delay buffer. (1) g.729 annex b multichannel version initialize decoder function [classification] decoder initialization processing [function name] g729b_initdecm [summary of function] initializes the g.729 annex b multichannel version decoder and sets parameters. [format] call g729b_initdecm [arguments] i/o buffer start address and parameters example: /*---*/ dp0=g729b_io_table ; clr(r1) ; r01=static_x1 ; /*---*/ *dp0++=r01 ; r01-static_y1 ; /*---*/ *dp0++=r01 ; r01=encpcmdata1 ; /*---*/ *dp0++=r01 ; r01=encprmdata1 ; /*---*/ *dp0++=r01 ; rep 4 ; /*...*/ *dp0++=r1h ; r01=decpcmdata1 ; /*---*/ *dp0++=r01 ; r01=decprmdata1 ; /*---*/ *dp0++=r01 ; r01= 1 ; /* */ *dp0++=r01 ; fparitycheck = 1 rep 5 ; /*...*/ *dp0++=r1h ; /* */ *dp0++=r01 ; fvadenable = 1 rep 3 ; /*...*/ *dp0++=r1h ; /*---*/ dp0=g729b_io_table ; [return value] none [function] performs initialization of the g.729 annex b multichannel version decoder and sets parameters. [registers used] r0, r1, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dn0 [hardware resources] maximum stack level: 2 maximum loop stack level: 1 maximum number of repeats: 234 maximum number of cycles: 1741
chapter 2 library specifications 34 users manual u13373ej3v0um00 2.3.4 encoder function the encoder function is used to generate an 80-bit or 16-bit signal by compressing 80 input samples of speech signal. (1) g.729 annex b multichannel version encoder function [classification] encode processing block [function name] g729b_encm [summary of function] compresses 80 samples 16 bits into 80 bits or 16 bits. [format] call g729b_encm [arguments] i/o buffer start address and parameters example: /*---*/ dp0=g729b_io_table ; clr(r1) ; r01=static_x1 ; /*---*/ *dp0++=r01 ; r01-static_y1 ; /*---*/ *dp0++=r01 ; r01=encpcmdata1 ; /*---*/ *dp0++=r01 ; r01=encprmdata1 ; /*---*/ *dp0++=r01 ; rep 4 ; /*...*/ *dp0++=r1h ; r01=decpcmdata1 ; /*---*/ *dp0++=r01 ; r01=decprmdata1 ; /*---*/ *dp0++=r01 ; r01= 1 ; /* */ *dp0++=r01 ; fparitycheck = 1 rep 5 ; /*...*/ *dp0++=r1h ; /* */ *dp0++=r01 ; fvadenable = 1 rep 3 ; /*...*/ *dp0++=r1h ; /*---*/ dp0=g729b_io_table ; [return value] compression data: output buffer specified by argument [function] compresses the input signal from codec (80 samples 16 bits) to 80 bits or 16 bits. [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 7 maximum loop stack level: 1 maximum number of repeats: 223 maximum mips value: 13.9
chapter 2 library specifications users manual u13373ej3v0um00 35 2.3.5 decoder function the decoder function decompresses a signal compressed to 80 bits or 16 bits to speech data of 80 16 bits. (1) g.729 annex b multichannel version decoder function [classification] decode processing block [function name] g729b_decm [summary of function] decompresses 80 bits or 16 bits into 80 samples 16 bits. [format] call g729b_decm [arguments] i/o buffer start address and parameters example: /*---*/ dp0=g729b_io_table ; clr(r1) ; r01=static_x1 ; /*---*/ *dp0++=r01 ; r01-static_y1 ; /*---*/ *dp0++=r01 ; r01=encpcmdata1 ; /*---*/ *dp0++=r01 ; r01=encprmdata1 ; /*---*/ *dp0++=r01 ; rep 4 ; /*...*/ *dp0++=r1h ; r01=decpcmdata1 ; /*---*/ *dp0++=r01 ; r01=decprmdata1 ; /*---*/ *dp0++=r01 ; r01= 1 ; /* */ *dp0++=r01 ; fparitycheck = 1 rep 5 ; /*...*/ *dp0++=r1h ; /* */ *dp0++=r01 ; fvadenable = 1 rep 3 ; /*...*/ *dp0++=r1h ; /*---*/ dp0=g729b_io_table ; [return value] compression data: output buffer specified by argument [function] decompresses 80 bits or 16 bits into 80 samples 16 bits. [registers used] r0, r1, r2, r3, r4, r5, r6, r7, dp0, dp1, dp2, dp3, dp4, dp5, dp6, dp7, dn0, dn1, dn2, dn3, dn4, dn5, dn6, dn7, dmx [hardware resources] maximum stack level: 4 maximum loop stack level: 1 maximum number of repeats: 203 maximum mips value: 2.8
chapter 2 library specifications 36 users manual u13373ej3v0um00 2.4 control/status registers (single-channel version) g729e_cmd_sts (g729ae_cmd_sts, g729be_cmd_sts, g729abe_cmd_sts) is the control/status register for the g.729 encoder, and g729d_cmd_sts (g729ad_cmd_sts, g729bd_cmd_sts, g729abd_cmd_sts) is the control/status register for the decoder. the higher 8 bits are a status word and are read- only. the lower 8 bits are a control word and are read/write-enabled. 2.4.1 g729e_cmd_sts (g729ae_cmd_sts, g729be_cmd_sts, g729abe_cmd_sts) register the g729e_cmd_sts (g729ae_cmd_sts, g729be_cmd_sts, g729abe_cmd_sts) register is a memory mapped register that performs encoder operation control and status display. changes made prior to the g729_enc (g729a_enc, g729b_enc, g729ab_enc) function call are effective. however, bits d9, d8, and d5 support annex b, so if using g.729 and g.729 annex a, set (d9, d8, d5) = (0, 1, 0). table 2-1. g729e_cmd_sts register bit name initial value 0 1 remark d15 busy flag C not started up started up encoder indicates whether or not encoder (g729_enc/g729a_enc/g729b_enc/g729ab_e nc) is in started up status. d14 to d10 reserved C C C C d9 ftyp1 C note note C d8 ftyp0 C note note C d7 operation C dont process process determines whether or not to perform encode processing. d6 test mode C normal test inputs test data located in rom to encoder. d5 vad/dtx C dont process process specifies on/off for silence compression function. d4 muting C normal silence inputs silent data (0) to encoder. d3 to d0 reserved C C C C note ftyp(1,0) = 00: untransmitted frame 01: active speech frame 10: sid frame 11: n/a
chapter 2 library specifications users manual u13373ej3v0um00 37 2.4.2 g729d_cmd_sts (g729ad_cmd_sts, g729bd_cmd_sts, g729abd_cmd_sts) register the g729d_cmd_sts (g729ad_cmd_sts, g729bd_cmd_sts, g729abd_cmd_sts) register is a memory mapped register that performs decoder operation control and status display. changes made prior to the g729_dec (g729a_dec, g729b_dec, g729ab_dec) function call are effective. however, bits d5, d1, and d0 support annex b, so if using g.729 and g.729 annex a, set (d5, d1, d0) = (0, 0, 1). table 2-2. g729d_cmd_sts register bit name initial value 0 1 remark d15 busy flag C not started up started up indicates whether or not decoder (g729_dec/g729a_dec/g729b_dec/g729ab_d ec) is in started up status. d14 parity error C no error error displays parity check result. d13 to d8 reserved C C C C d7 operation C dont process process determines whether or not to perform decode processing. d6 test mode C normal test inputs test data located in rom to decoder. d5 dtx/cng C dont process process specifies on/off for silence compression function. d4 muting C normal silence outputs silent data (0) from decoder. d3 frame eras. C dont process process determines whether or not to perform processing for erase frames. d2 parity check C no check check determines whether or not to perform parity check. d1 ftyp1 C note note C d0 ftyp0 C note note C note ftyp(1,0) = 00: untransmitted frame 01: active speech frame 10: sid frame 11: n/a
chapter 2 library specifications 38 users manual u13373ej3v0um00 2.5 multichannel version external interface this section describes the parameters passed when calling the g729b_encm, g729_decm functions for the g.729 annex b multichannel version. 2.5.1 function transfer parameters for g.729 annex b multichannel version table 2-3 shows the contents of the tables. table 2-3. function transfer parameters for the g.729 annex b multichannel version access timing offset description initialization encode decode 0x00 static variable area x address (dont change after initialization processing) ccc 0x01 static variable area y address (dont change after initialization processing) ccc 0x02 address of pcm data input buffer for encoding c 0x03 address of encoding data output buffer for encoding c 0x04 encoding frame count setting value: 0x0001 to 0x7fff at the beginning only (+1 for each frame), then 0x0100 to 0x7fff (+1 for each frame) repeatedly c 0x05 to 0x07 reserved 0x08 address of pcm data output buffer for decoding c 0x09 address of encoding data input buffer for decoding c 0x0a parity check specification (0: no parity check, 1: parity check) c 0x0b parity error (0: no parity error, 1: parity error) s 0x0c erase frame processing specification (0: normal frame, 1: erase) c 0x0d to 0x0f reserved 0x10 specifies whether silent compression is used or not (0: not used, 1: used) c 0x11 encoding output frame type s 0x12 decoding input frame type s 0x13 reserved caution secure the scratch area in the following manner. align at 4 is required for scratch area x. scratch area x: 1153-word size at label name lib_scratch_x in the x memory scratch area y: 1257-word size at label name lib_scratch_y in the y memory remark access types c: control information s: result status
chapter 2 library specifications users manual u13373ej3v0um00 39 2.6 compressed data formats 2.6.1 speech data compression format the 80-bit data format used for encoder function output and decoder function input is shown in tables 2-4 and 2-5. for more information about compression data, refer to itu-t recommendations. table 2-4. bit allocation of speech compression data bit1514131211109876543210 word0l0l1l1l1l1l1l1l1l2l2l2l2l2l3l3l3 word1l3 l3p1p1p1p1p1p1p1p1p0c1c1c1c1c1 word2c1c1c1c1c1c1c1c1s1s1s1s1ga1ga1ga1gb1 word3 gb1 gb1 gb1 p2 p2 p2 p2 p2 c2 c2 c2 c2 c2 c2 c2 c2 word4 c2 c2 c2 c2 c2 s2 s2 s2 s2 ga2 ga2 ga2 gb2 gb2 gb2 gb2 table 2-5. meaning of speech compression data symbol description number of bits l0 l1 l2 l3 switched ma predictor index of lsp quantizer 1st stage vector of lsp quantizer 2nd stage lower vector of lsp quantizer 2nd stage higher vector of lsp quantizer 1 7 5 5 p1 p0 c1 s1 ga1 gb1 pitch delay 1st subframe parity bit for pitch delay fixed codebook 1st subframe signs of fixed-codebook pulses 1st subframe gain codebook (stage 1) 1st subframe gain codebook (stage 2) 1st subframe 8 1 13 4 3 4 p2 c2 s2 ga2 gb2 pitch delay 2nd subframe fixed codebook 2nd subframe signs of fixed-codebook pulses 2nd subframe gain codebook (stage 1) 2nd subframe gain codebook (stage 2) 2nd subframe 5 13 4 3 4
chapter 2 library specifications 40 users manual u13373ej3v0um00 2.6.2 sid frame compression format the 16-bit sid frame data format used for encoder function output and decoder function input is shown in tables 2-6 and 2-7. for more information about compression data, refer to itu-t recommendations. table 2-6. bit allocation of silent compression data bit1514131211109876543210 wordl0l1l1l1l1l1l2l2l2l2 e e e e e 0 table 2-7. meaning of silent compression data symbol description number of bits l0 l1 l2 e switched predictor index of lsf quantizer 1st stage vector of lsf quantizer 2nd stage vector of lsf quantizer gain (energy) 1 5 4 5
users manual u13373ej3v0um00 41 chapter 3 installation 3.1 installation procedure this middleware is supplied on a 3.5-inch floppy disk (1.44mb). the procedure for installing in the host machine is described below. (1) set the floppy disk in the floppy disk drive and copy the files to the directory where software tools are used. (e.g. c:\dsptools). the following is an example of when files are copied from the a drive to the c drive. a:\>xcopy /s *.* c:\dsptools (2) confirm that the files have been copied. refer to 1.5.4 directory structure for details on the directories. a:\>dir c:\dsptools
chapter 3 installation 42 users manual u13373ej3v0um00 3.2 sample creation procedure a sample program is stored to the sample directory (smp) (for the sample.asm source program, refer to appendix sample source ). the sample program can be used to compress/decompress a sound source such as a cd or digital audio tape (dat) in real time by connecting speakers, etc. the sample program operates on a m pd77016 speech codec evaluation board. figure 3-1. sample program evaluation system speaker sound source evaluation board line output line input sound codec dsp caution however, the sample program for the g.729 annex b multichannel version cannot be used with this evaluation system. how to build the sample program for this middleware is described below. (1) start up the wb77016 (workbench). (2) open the project file (sample.prj). example: specify sample.prj with the open project command on the project menu. (3) execute build and confirm that sample.ink has been created. example: when the build all command is selected in the make menu, sample.ink is created. (4) execute the sample program by downloading sample.ink to the target dsp using the ie77016 (debugger).
chapter 3 installation users manual u13373ej3v0um00 43 3.3 symbol naming regulations the symbol names used in this library follow the rules listed below. be careful to avoid overlap if using other applications in combination. table 3-1. symbol names g.729 annex a annex b annex ab note annex b classification single-channel multichannel function name g729_xxxx g729a_xxxx g729b_xxxx g729ab_xxxx g729b_xxxx macro, constant name g729xxxx g729axxxx g729bxxxx g729abxxxx g729bxxxx section name _ _g729_xxxx _ _g729a_xxxx _ _g729b_xxxx _ _g729ab_xxxx _ _g729b_xxxx note annex ab: annex a + annex b
44 users manual u13373ej3v0um00 [memo]
users manual u13373ej3v0um00 45 appendix sample source a.1 sample source for single-channel version (sample.asm) the sample source for the single-channel version described below is samplek.asm (sample source for g.729). in samplea.asm (sample source for g.729 annex a) the g729 part becomes g729a, and the g729_ part becomes g729a_. in sampleb.asm (sample source for g.729 annex b), the g729 part becomes g729b, and the g729_ part becomes g729b_. in sampleab.asm (sample source for g.729 annex a + annex b), the g729 part becomes g729ab, and the g729_ part becomes g729ab_. moreover, in sampleb.asm and sampleab.asm, a part related to frame counters (g729bframe, g729abframe) is added.
appendix sample so urce 46 users manual u13373ej3v0um00 ;; ******************************************************************** ;; cs-celp[g.729] codec control program ver1.0 ;; ******************************************************************** #define modeb_type #ifdef modeb_type #define mode_bit_set #endif #include "g729_lib.h" #include "upd7701x.h" #if chiptype == type77017 #define in_or_ext #else #define in_or_ext external #endif ;; ******************************************************************** ;; g729 encoder, decoder processing core parts ;; ******************************************************************** extrn g729_enc ;; g729 encoder main extrn g729_initenc ;; g729 encoder initialize extrn g729_dec ;; g729 decoder main extrn g729_initdec ;; g729 decoder initialize extrn g729e_ana_buf ;; encoder output buffer extrn g729d_ana_buf ;; decoder input buffer extrn g729e_pcm_buf ;; serial input buffer extrn g729d_pcm_buf ;; serial output buffer extrn g729e_cmd_sts ;; encoder status extrn g729d_cmd_sts ;; decoder status extrn g729ana ;; encoder internal output ;; ******************************************************************** ;; ======================================= ;; x/y data rom table (nec) ;; ======================================= __g729_comromy yromseg in_or_ext ;; --------------------------------------- ;; encoder mute data (for ana[]) ;; --------------------------------------- note 1. in sampleb.asm (sampleab.asm), this part is as follows. however, in sampleab.asm, the g729b part becomes g729ab. extrn g729bana ;; encoder internal output extrn g729bframe ;; ;;**************************************************************** note 1
appendix sample so urce users manual u13373ej3v0um00 47 e_mute_ana: ;; dw 0b01111000 ;; ana[0] dw 0b0011111010 ;; 1 dw 0b10111101 ;; 2 dw 0b0 ;; 3 dw 0b0000000000000 ;; 4 dw 0b1111 ;; 5 dw 0b1010110 ;; 6 dw 0b11011 ;; 7 dw 0b0000000000000 ;; 8 dw 0b1111 ;; 9 dw 0b1010110 ;; 10 ;; ============================================== ;; register store area ;; ============================================== __g729_x_reg_save_seg xramseg saveregareax: __r0_save: ds 3 ;; saveregareax+0x0000 __r1_save: ds 3 ;; saveregareax+0x0003 __r2_save: ds 3 ;; saveregareax+0x0003 __r3_save: ds 3 ;; saveregareax+0x0003 __r4_save: ds 3 ;; saveregareax+0x0003 __r5_save: ds 3 ;; saveregareax+0x0003 __r6_save: ds 3 ;; saveregareax+0x0003 __r7_save: ds 3 ;; saveregareax+0x0003 __dp0_save: ds 1 ;; saveregareax+0x0006 __dp1_save: ds 1 ;; saveregareax+0x0006 __dp2_save: ds 1 ;; saveregareax+0x0006 __dp3_save: ds 1 ;; saveregareax+0x0006 __dp4_save: ds 1 ;; saveregareax+0x0007 __dp5_save: ds 1 ;; saveregareax+0x0006 __dp6_save: ds 1 ;; saveregareax+0x0006 __dp7_save: ds 1 ;; saveregareax+0x001f ;; ======================================= ;; si1 save/recover registers macro ;; ======================================= %define (g729save_reg)( *saveregareax+0x0000:x = r0l ;; *saveregareax+0x0001:x = r0h ;; *saveregareax+0x0002:x = r0e ;; *saveregareax+0x0003:x = r1l ;; *saveregareax+0x0004:x = r1h ;; *saveregareax+0x0005:x = r1e ;; r0l = dp0 ;; *saveregareax+0x00018:x = r0l ;; r0l = dp1 ;; *saveregareax+0x00019:x = r0l ;; ) %define (g729recover_reg)( r0l = *saveregareax+0x0019:x ;; dp1 = r0l ;; r0l = *saveregareax+0x0018:x ;;
appendix sample so urce 48 users manual u13373ej3v0um00 dp0 = r0l ;; r1e = *saveregareax+0x0005:x ;; r1h = *saveregareax+0x0004:x ;; r1l = *saveregareax+0x0003:x ;; r0e = *saveregareax+0x0002:x ;; r0h = *saveregareax+0x0001:x ;; r0l = *saveregareax+0x0000:x ;; ) ;; ============================================== ;; encoder symbol ;; ============================================== __g729_enc_dseg_y yramseg e_si1_cnt: ds 1 ;; e_si1_buf index e_frame_cnt: ds 1 ;; frame number e_skip_flag: ds 1 ;; skip flag for encoder startup e_new_data: ds 1 ;; new data input flag __g729_enc_dseg_x xramseg e_si1_buf: ds 80 ;; serial input buffer (speech signal) ;; --------------------------------------- ;; decoder symbol ;; --------------------------------------- __g729_dec_dseg_y yramseg d_so1_cnt: ds 1 ;; d_so1_buf index d_new_data: ds 1 ;; input new data flag d_skip_flag: ds 1 ;; skip flag for startup decoder d_mute_data: ds 1 ;; mute data __g729_dec_dseg_x xramseg d_so1_buf: ds 80 ;; output codec frame buffer ;; ********************************************************************* ;; g729 text segment ;; ********************************************************************* spx_start imseg at 0x200 ;; --------------------------------------- ;; spx interrupt vector code ;; --------------------------------------- reset_entry: ;; jmp main ;; jump to main nop ;; nop ;; nop ;; ; ; reserved_vector_area [0x0204 - 0x020f] ; nop ;; nop ;;
appendix sample so urce users manual u13373ej3v0um00 49 nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; int1_entry: ;; ------------------------------------ jmp fatal_int ;; [int1:external] nop ;; nop ;; nop ;; int2_entry: ;; ------------------------------------ jmp fatal_int ;; [int2:external] nop ;; nop ;; nop ;; int3_entry: ;; ------------------------------------ jmp fatal_int ;; [int3:external] nop ;; nop ;; nop ;; int4_entry: ;; ------------------------------------ jmp fatal_int ;; [int4:external] nop ;; nop ;; nop ;; si1_entry: ;; ------------------------------------ jmp enc_si1_handler ;; [si1:internal] nop ;; nop ;; nop ;; so1_entry: ;; ------------------------------------ jmp fatal_int ;; [so1:internal] nop ;; nop ;; nop ;; si2_entry: ;; ------------------------------------ jmp fatal_int ;; [si2:internal] nop ;; nop ;; nop ;; so2_entry: ;; ------------------------------------ jmp fatal_int ;; [so2:internal] nop ;; nop ;; nop ;; hi_entry: ;; ------------------------------------ jmp fatal_int ;; [hi:internal] nop ;; nop ;; nop ;; ho_entry: ;; ------------------------------------ jmp fatal_int ;; [ho:internal] nop ;; nop ;; nop ;;
appendix sample so urce 50 users manual u13373ej3v0um00 ; ; reserved_vector_area [0x0238 - 0x023f] ; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; nop ;; ;; ********************************************************************* ;; ;; necmain imseg at 0x240 main: ;; ------------------------------- ;; initialize spx ;; ------------------------------- r0l = 0xf3ff ;; disable all interrupt sr = r0l ;; clr(r0) ;; clear general registers clr(r1) ;; clr(r2) ;; clr(r3) ;; clr(r4) ;; clr(r5) ;; clr(r6) ;; clr(r7) ;; dp0 = r0l ;; dn0 = r0l ;; dp1 = r0l ;; dn1 = r0l ;; dp2 = r0l ;; dn2 = r0l ;; dp3 = r0l ;; dn3 = r0l ;; dp4 = r0l ;; dn4 = r0l ;; dp5 = r0l ;; dn5 = r0l ;; dp6 = r0l ;; dn6 = r0l ;; dp7 = r0l ;; dn7 = r0l ;; dmx = r0l ;; dmy = r0l ;;
appendix sample so urce users manual u13373ej3v0um00 51 *sst1:x = r0l ;; si1/so1 mode <= 16bit/msb first *sst2:x = r0l ;; si2/so2 mode <= 16bit/msb first *dwtr:x = r0l ;; all data memory is no wait *iwtr:x = r0l ;; all inst memory is no wait r1l = 0x300 ;; *hst:x = r1l ;; disable hdt in/out ;; ------------------------------- ;; clear memory[x/y:0x0000-0x07ff] ;; ------------------------------- dp0 = r0l ;; x memory pointer <= 0x0000 dp4 = r0l ;; y memory pointer <= 0x0000 rep 0x800 ;; -- loop [clear] -- *dp0++=r0h *dp4++=r0h ;; clear x/y ;; -- loop end ------------------- clr(r0) ;; r3l = 0x55ff ;; r3l = a-law mute data *d_mute_data:y = r3l ;; d_mute_data = r3l ;; ******************************************************************** ;; ;; ******************************************************************** main2: _enc_ini: ;; ------------------------------- ;; encoder initialize ;; ------------------------------- call initialize_encoder ;; ;; ------------------------------- ;; sst1[bit-9,8] <- [1,0] ;; ------------------------------- r1l = 0x200 ;; *sst1:x = r1l ;; _dec_ini: ;; ------------------------------- ;; decoder initialize ;; ------------------------------- call initialize_decoder ;; ;; ------------------------------- ;; so1 dummy w ;; ------------------------------- r1l = *d_mute_data:y ;; read d_mute_data *sdt1:x = r1l ;; dummy write to so1 note 2. in sampleb.asm (sampleab.asm), this part is as follows. however, in sampleab.asm, the g729b part becomes g729ab. *hst:x = r1l ;; disable hdt in/out *g729bframe:y = r0l ;; ;; ------------------------------- note 2
appendix sample so urce 52 users manual u13373ej3v0um00 ;; ------------------------------- ;; enable interrupt ;; ------------------------------- r0l = sr ;; read status register r0 = r0 & 0x7fef ;; open current int mask sr = r0l ;; nop ;; ;; ********************************************************************* ;; g729 encoder/decoder main loop ;; ********************************************************************* mainloop: ;; ------------------------------- ;; check mode ;; ------------------------------- clr(r1) ;; ;; ############################### ;; normal process ;; ############################### ;; ------------------------------- ;; check e_skip_flag ;; ------------------------------- r0 = *e_skip_flag:y ;; if e_skip_flag == on then skip if (r0 == 0) jmp chk_e_new_data ;; ;; ------------------------------- ;; encoder init ;; ------------------------------- enc_skip: ;; call g729_initenc ;; dp4 = e_mute_ana ;; dp0 = g729ana ;; r3=*dp4++ ;; rep 10 ;; r3=*dp4++ *dp0++=r3h ;; *dp0++=r3h ;; ;; ------------------------------- ;; set e_skip_flag ;; ------------------------------- clr(r0) ;; *e_skip_flag:y = r0l ;; clear e_skip_flag jmp endencstage ;; ;; ------------------------------- ;; check e_new_data ;; ------------------------------- chk_e_new_data: ;; r0 = *e_new_data:y ;; if (r0 == 0) jmp endencstage ;;
appendix sample so urce users manual u13373ej3v0um00 53 ;; ------------------------------- ;; run encoder ;; ------------------------------- call g729_enc ;; do encoder clr ( r0 ) ;; *e_new_data:y = r0l ;; r0l = 0x1 ;; *d_new_data:y = r0l ;; endencstage: ;; dp4 = g729e_ana_buf ;; dp5 = g729d_ana_buf ;; loop 5 { ;; r2 = *dp4++ ;; *dp5++=r2h ;; } ;; ;; ------------------------------- ;; check d_skip_flag ;; ------------------------------- r0 = *d_skip_flag:y ;; if d_skip_flag == on then skip; if (r0 == 0) jmp chk_d_new_data ;; ;; ------------------------------- ;; decoder init ;; ------------------------------- dec_skip: ;; call g729_initdec ;; r0 = *d_mute_data:y ;; dp1 = g729d_pcm_buf ;; rep 80 ;; *dp1++=r0h ;; jmp enddecstage ;; note 3. in sampleb.asm (sampleab.asm), this part is as follows. however, in sampleab.asm, the g729b part becomes g729ab, and the g729b_ part becomes g729ab_. ;; ------------------------------- clr(r0) ;; r0l = *g729bframe:y ;; r0 = r0 + 1 ;; r1 = r0 - 0x7fff ;; if(r1 < 0)jmp over_frm_cnt ;; r0l = 0x100 ;; ovr_frm_cnt: *g729bframe:y = r0l ;; call g729b_enc ;; do encoder note 3
appendix sample so urce 54 users manual u13373ej3v0um00 ;; ------------------------------- ;; check d_new_data ;; ------------------------------- chk_d_new_data: ;; r0 = *d_new_data:y ;; if (r0 == 0) jmp enddecstage ;; ;; ------------------------------- ;; run decoder ;; ------------------------------- call g729_dec ;; do decoder clr ( r0 ) ;; *d_new_data:y = r0l ;; enddecstage: ;; ------------------------------- ;; set d_skip_flag ;; ------------------------------- clr(r0) ;; clear d_skip_flag; *d_skip_flag:y = r0l ;; jmp mainloop ;; infinite loop ;; ************************************************* ;; **** g729 encoder/decoder subroutine segment **** ;; ************************************************* subr_seg imseg ;; --------------------------------------- ;; encoder initialize ;; --------------------------------------- initialize_encoder: ;; note! r0,r1,dp0,dp4 only r0l = 1 ;; *e_skip_flag:y = r0l ;; e_skip_flag = 1 r0l = 0x0080 ;; *g729e_cmd_sts:y = r0l ;; clr(r0) ;; *e_new_data:y = r0l ;; r0l = 3 ;; *e_frame_cnt:y = r0l ;; e_frame_cnt = 3 r0l = 0 ;; *d_so1_cnt:y = r0l ;; d_so1_cnt = 0 r0l = 0 ;; *e_si1_cnt:y = r0l ;; e_si1_cnt = 0 ret ;; ;; --------------------------------------- ;; decoder initialize ;; --------------------------------------- initialize_decoder: ;; note! r0,r1,dp0,dp4 only r0l = 0x0085 ;;
appendix sample so urce users manual u13373ej3v0um00 55 *g729d_cmd_sts:y = r0l ;; clr(r0) ;; *d_new_data:y = r0l ;; d_new_data = 0 r0l = 1 ;; *d_skip_flag:y = r0l ;; d_skip_flag = 1 r0 = *d_mute_data:y ;; dp1 = g729d_pcm_buf ;; rep 80 ;; *dp1++=r0h ;; ret ;; ;; ********************************************************************* ;; serial import ch-1 interrupt handler segment (encoder) ;; ********************************************************************* encsi1seg imseg at 0x4000 ;; --------------------------------------- ;; encoder serial-in interrupt flow ;; --------------------------------------- enc_si1_handler: ;; ------------------------------- ;; save registers ;; r0/r1/dp0/dp4 ;; ------------------------------- %g729save_reg ;; ;; ------------------------------- ;; check d_so1_cnt ;; ------------------------------- clr(r0) ;; r0l = *d_so1_cnt:y ;; r0 = r0 - 80 ;; 0 <= d_so1_cnt <= 79 if(r0 < 0 ) jmp skip_d_so1_rst ;; clr( r0) ;; *d_so1_cnt:y = r0l ;; skip_d_so1_rst: ;; ------------------------------- ;; check e_si1_cnt ;; ------------------------------- clr(r1) ;; r1l = *e_si1_cnt:y ;; r1 = r1 - 80 ;; if(r1 < 0 ) jmp not_full_smpl ;; *e_si1_cnt:y = r1l ;; e_si1_cnt=0 ;; ------------------------------- ;; e_si1_buf -> e_pcm_buf ;; ------------------------------- dp1 = e_si1_buf ;; r1l = g729e_pcm_buf ;; dp0 = r1l ;; loop 80 { ;; r1=*dp1++ ;; *dp0++=r1h ;;
appendix sample so urce 56 users manual u13373ej3v0um00 } ;; ;; -----------------------------;; ;; output data copy ;; -----------------------------;; dp0 = g729d_pcm_buf ;; dp1 = d_so1_buf ;; loop 80 { ;; r0 = *dp0++ ;; *dp1++ = r0h ;; } ;; ;; ------------------------------- ;; e_new_data <- 1 ;; ------------------------------- r1l = 1 ;; *e_new_data:y = r1l ;; not_full_smpl: ;; ------------------------------- ;; input serial port ;; ------------------------------- r0l = *e_si1_cnt:y ;; r1 = r0 + e_si1_buf ;; dp0 = r1l ;; r1l = *sdt1:x ;; *dp0 = r1l ;; ;; ----------------------------;; ;; output serial port ;; ----------------------------;; r0l = *d_so1_cnt:y ;; r0 = r0 + d_so1_buf ;; dp0 = r0l ;; nop ;; r0l = *dp0 ;; *sdt1:x = r0l ;; ;; ------------------------------- ;; increment e_si1_cnt ;; ------------------------------- r0l = *e_si1_cnt:y ;; r0 = r0 + 1 ;; *e_si1_cnt:y = r0l ;; ;; ------------------------------- ;; d_so1_cnt:update ;; ------------------------------- clr(r0) ;; r0l = *d_so1_cnt:y ;; r0 = r0 + 1 ;; *d_so1_cnt:y = r0l ;; ;; ------------------------------- ;; recover registers
appendix sample so urce users manual u13373ej3v0um00 57 ;; ------------------------------- %g729recover_reg ;; reti ;; ;; ============================================================================ ;; fatal error!! ;; disable all interrupt & infinite loop ;; without reset watch dog timer. ;; ============================================================================ %define (fatal_error(label)) ( label: r7l = 0xffff ;; disable interrupt sr = r7l ;; jmp $-2 ;; infinite loop ) ;;/***************************************************/ %fatal_error(err_so2_cnt) ;; %fatal_error(err_si1_cnt) ;; %fatal_error(err_e_busy) ;; %fatal_error(err_d_busy) ;; %fatal_error(err_e_cod_cnt) ;; %fatal_error(err_d_cod_cnt) ;; %fatal_error(err_e_ext_cnt) ;; %fatal_error(err_d_ext_cnt) ;; %fatal_error(err_mem) ;; %fatal_error(err_mode) ;; %fatal_error(err_mode2) ;; %fatal_error(err_hdt1) ;; %fatal_error(err_hdt2) ;; %fatal_error(err_e_frame_cnt) ;; %fatal_error(err_e_si1_cnt) ;; ;; ============================================================================ ;; illegal interruption handling routine. (di halt) ;; ============================================================================ fatal_int: ;; r0l = 0xffff ;; disable interrupt sr = r0l ;; fatal_int_loop: ;; halt ;; halt loop jmp fatal_int_loop ;; end ;; ----------------------- end of file ----------------------------------------
appendix sample so urce 58 users manual u13373ej3v0um00 a.2 sample source for multichannel version (samplebm.asm) this sample source serves to transmit/receive the data of 4 channels using the host interface. the channel number of the data that is transmitted in and encoder (6) and decoder (7) execution commands are required. for these execution commands, refer to a.2.1 samplebm.asm header file (sysconf.h) . ;; **************************************************************************** ;; cs-acelp[g.729 multi-channel] codec control program for 4-channel ver3.0 ;; **************************************************************************** #include "g729blib.h" #include "sysconf.h" /* application definition file */ #include "upd7701x.h" /* spx definition file */ public lib_scratch_x, lib_scratch_y #define l_frame 80 ; frame size. #define prm_size 5 ; size of vector of analysis parameters. #define upd77116 extrn g729b_startcodec /*---- memory allocation-----------*/ __g729b_scratchx xramseg align at 4 lib_scratch_x: ds g729b_scratch_x_bufsize __g729b_scratchy yramseg lib_scratch_y: ds g729b_scratch_y_bufsize user_ramx xramseg internal /*-- channel 1 --*/ g729b_io_table1: ds g729b_iotable_size static_x1: ds g729b_static_x_bufsize encpcmdata1: ds g729b_encode_pcm_bufsize encprmdata1: ds g729b_encode_prm_bufsize decpcmdata1: ds g729b_decode_pcm_bufsize ; decprmdata1: ds g729b_decode_prm_bufsize ; /*-- channel 2 --*/ g729b_io_table2: ds g729b_iotable_size static_x2: ds g729b_static_x_bufsize encpcmdata2: ds g729b_encode_pcm_bufsize encprmdata2: ds g729b_encode_prm_bufsize decpcmdata2: ds g729b_decode_pcm_bufsize ; decprmdata2: ds g729b_decode_prm_bufsize ; /*-- channel 3 --*/ g729b_io_table3:
appendix sample so urce users manual u13373ej3v0um00 59 ds g729b_iotable_size static_x3: ds g729b_static_x_bufsize encpcmdata3: ds g729b_encode_pcm_bufsize encprmdata3: ds g729b_encode_prm_bufsize decpcmdata3: ds g729b_decode_pcm_bufsize ; decprmdata3: ds g729b_decode_prm_bufsize ; /*-- channel 4 --*/ ; g729b_io_table4: ds g729b_iotable_size static_x4: ds g729b_static_x_bufsize encpcmdata4: ds g729b_encode_pcm_bufsize encprmdata4: ds g729b_encode_prm_bufsize decpcmdata4: ds g729b_decode_pcm_bufsize decprmdata4: ds g729b_decode_prm_bufsize user_ramy yramseg /*-- channel 1 --*/ static_y1: ds g729b_static_y_bufsize /*-- channel 2 --*/ static_y2: ds g729b_static_y_bufsize /*-- channel 3 --*/ static_y3: ds g729b_static_y_bufsize /*-- channel 4 --*/ static_y4: ds g729b_static_y_bufsize %define(makeiotable(ch)) ( /*---*/ dp0=g729b_io_table@ch@ ; clr(r1) ; r0l=static_x@ch@ ; /*---*/ *dp0++=r0l ; r0l=static_y@ch@ ; /*---*/ *dp0++=r0l ; r0l=encpcmdata@ch@ ; /*---*/ *dp0++=r0l ; r0l=encprmdata@ch@ ; /*---*/ *dp0++=r0l ; rep 4 ; /*...*/ *dp0++=r1h ; r0l=decpcmdata@ch@ ; /*---*/ *dp0++=r0l ; r0l=decprmdata@ch@ ; /*---*/ *dp0++=r0l ; r0l= 1 ;
appendix sample so urce 60 users manual u13373ej3v0um00 /* */ *dp0++=r0l ; fparitycheck = 1 rep 5 ; /*...*/ *dp0++=r1h ; /* */ *dp0++=r0l ; fvadenable = 1 rep 3 ; /*...*/ *dp0++=r1h ; ) user_text_seg imseg g729b_mkio_table: %makeiotable(1) ; %makeiotable(2) ; %makeiotable(3) ; %makeiotable(4) ; ret ; /*---- symbol definition----*/ %define ( defvectnop ) ( /* macro for vector definition (no processing) */ reti; nop; nop; nop; ) %define ( defvectjmp(iproc) ) ( /* macro for vector definition (jmp iproc) */ jmp iproc; nop; nop; nop; ) /*---- functions entry----*/ public clrintmask /* interrupt mask change clear */ public setintmask /* interrupt mask change set */ public errordump /* error data display */ $eject /**/ /**************************************************************************/ /* make interrupt vector settings */ /**************************************************************************/ sys_v imseg at 0x0200 %defvectjmp(startup) /*- reset --------------------------*/ %defvectnop /*- reserved 1----------------------*/ %defvectnop /*- reserved 2----------------------*/ %defvectnop /*- reserved 3----------------------*/ %defvectjmp(codec1ck) /*- int1 --------------------------*/ %defvectjmp(codec1fm) /*- int2 --------------------------*/ %defvectjmp(codec2ck) /*- int3 --------------------------*/ %defvectjmp(hostintproc) /*- int4 --------------------------*/ %defvectjmp(si1proc) /*- si1 --------------------------*/ %defvectjmp(so1proc) /*- so1 --------------------------*/ %defvectjmp(si2proc) /*- si2 --------------------------*/
appendix sample so urce users manual u13373ej3v0um00 61 %defvectjmp(so2proc) /*- so2 --------------------------*/ %defvectjmp(hostin) /*- hi --------------------------*/ %defvectjmp(hostout) /*- ho --------------------------*/ %defvectnop /*- reserved 4----------------------*/ %defvectnop /*- reserved 5----------------------*/ /***************************************************************************/ /* register save are for vectored interrupt processing */ /***************************************************************************/ sys_xe xramseg hipsave: ds 4; /***************************************************************************/ /* vectored interrupt processing according to pio value */ /***************************************************************************/ sys_ii1 imseg hostintproc: *hipsave+0:x = r0e; /* register save */ *hipsave+1:x = r0h; *hipsave+2:x = r0l; r0l= dp0; *hipsave+3:x = r0l; r0l= *pdt:x; /* pio value registration */ r0 = r0 & max_hip_no; /* execution of registered interrupt processing */ r0 = r0 + hipjumptbl; /* */ dp0 = r0l; call dp0; r0l= *hipsave+3:x; /* register restore */ /* */ dp0 = r0l; r0l= *hipsave+2:x; r0h= *hipsave+1:x; r0e= *hipsave+0:x; reti; hipjumptbl: jmp starterrdump; /* for error processing */ jmp hintproc1; /* jump to registered interrupt processing */ jmp hintproc2; jmp hintproc3; jmp hintproc4; jmp hintproc5; jmp hintproc6; jmp hintproc7; $eject /**/ /****************************************************************************/ /* perform initialization processing, wait for command */ /****************************************************************************/
appendix sample so urce 62 users manual u13373ej3v0um00 sys_ii2 imseg startup: call initmode; /* mode */ call initwait; /* wait controller setting */ call initport; /* general-purpose i/o port setting */ call initint; /* interrupt initialization */ call sethifbusy; /* busy setting */ waitcom: call initport; /* general-purpose i/o port setting */ call sethifready; /* ready setting */ clr(r1); /* command id input */ r1l= *hdt:x; call sethifbusy; /* busy setting */ r0 = r1 - 11; /* command id check */ if( r0>0 ) call errordump; r0 = r1 + comtbl; /* call command processing */ /*---*/ dp0=r0l; nop; /* */ r0l=*dp0; /*---*/ dp0=r0l; call dp0; jmp waitcom; /****************************************************************************/ /* function table used to perform command processing */ /****************************************************************************/ #ifdef upd77116 sys_xc xramseg #else sys_xc xromseg #endif comtbl: dw noproc /* comid=0 : no processing */ dw powerdown /* comid=1 : power down */ dw setdata /* comid=2 : data set */ dw putdata /* comid=3 : data put */ dw com4 /* comid=4 : virtual parameter */ dw com5 /* comid=5 : virtual parameter */ dw com6 /* comid=6 : virtual parameter */ dw com7 /* comid=7 : virtual parameter */ dw com8 /* comid=8 : virtual parameter */ dw com9 /* comid=9 : virtual parameter */ dw com10 /* comid=10 : virtual parameter */ dw com11 /* comid=11 : virtual parameter */
appendix sample so urce users manual u13373ej3v0um00 63 /***********************************************************************/ /* */ /***********************************************************************/ sys_ii3 imseg initmode: r0l= 0x440; *hst:x=r0l; ; r0l= 0x0f0; use hwe,hre ; *icr:x = r0l; ret; /**************************************************************************/ /* initialize wait controller */ /**************************************************************************/ sys_ii3 imseg initwait: r0l= dwtr_wait0; /* external data memory setting */ *dwtr:x = r0l; /* external instruction memory setting */ r0l= iwtr_wait0; *iwtr:x = r0l; ret; /****************************************************************************/ /* set general-purpose i/o ports (all input) */ /****************************************************************************/ sys_ii4 imseg initport: r0l= pio_all_in; *pcd:x = r0l; ret; $eject /**/ /****************************************************************************/ /* initialize interrupt mask flag etc. */ /* */ /* others: r_ [*, , , , , , , ] dmx,dmy [ , ] */ /* dp_ [ , , , , , , , ] loops/stacks [0/0] */ /* dn_ [ , , , , , , , ] cycles 8 */ /****************************************************************************/ sys_ii5 imseg initint: clr(r0); r0l= 0xffff; /* eir initialization */ eir= r0l; fint; /* interrupt request annulled */ r0l= sr; /* interrupt enable flags change */ r0 = r0 | 0x03ff; /* all disabled */ sr = r0l;
appendix sample so urce 64 users manual u13373ej3v0um00 ret; /*******************************************************************************/ /* set interrupt mask flag */ /* change interrupt status */ /* */ /* input : r0l change-bit setting */ /* r1l interrupt status setting 0x8000: change, 0x0000: no change */ /* others: r_ [ , ,*,*, , , , ] dmx,dmy [ , ] */ /* dp_ [ , , , , , , , ] loops/stacks [0/0] */ /* dn_ [ , , , , , , , ] cycles 10 */ /*******************************************************************************/ sys_ii6 imseg setintmask: r2l= eir; /* interrupt disable setting */ r3 = r2 | 0x8000; eir= r3l; r3 = r2 ^ r1; r2l= sr; /* interrupt enable flag change */ r2 = r2 | r0; sr = r2l; eir= r3l; /* interrupt status change */ ret; /*******************************************************************************/ /* clear interrupt mask flag */ /* change interrupt status */ /* */ /* input : r0l change-bit setting */ /* r1l interrupt status setting 0x8000: change, 0x0000: no change */ /* others: r_ [*, ,*,*, , , , ] dmx,dmy [ , ] */ /* dp_ [ , , , , , , , ] loops/stacks [0/0] */ /* dn_ [ , , , , , , , ] cycles 11 */ /*******************************************************************************/ sys_ii7 imseg clrintmask: clr(r2); r2l= eir; /* interrupt disable setting */ r3 = r2 | 0x8000; eir= r3l; r3 = r2 ^ r1; r2l= sr; /* interrupt enable flag change */ r0 = r0 ^ 0xffff; r2 = r2 & r0; sr = r2l; eir= r3l; /* interrupt status change */ ret; $eject /**/ /****************************************************************************/ /* set host if to busy */
appendix sample so urce users manual u13373ej3v0um00 65 /* */ /* others: r_ [*, , , , , , , ] dmx,dmy [ , ] */ /* dp_ [ , , , , , , , ] loops/stacks [0/0] */ /* dn_ [ , , , , , , , ] cycles 6 */ /****************************************************************************/ sys_ii8 imseg sethifbusy: r0l= *hst:x; /* flag-bit save */ r0 = r0 & 0x003f; /* 16-bit, with wait, busy */ r0 = r0 | 0x0440; *hst:x = r0l; ret; /****************************************************************************/ /* set host if to ready */ /* * caution: hst-related error flag will be cleared */ /* */ /* others: r_ [*, , , , , , , ] dmx,dmy [ , ] */ /* dp_ [ , , , , , , , ] loops/stacks [0/0] */ /* dn_ [ , , , , , , , ] cycles 4 */ /****************************************************************************/ sys_ii9 imseg sethifready: r0l= hst_wait; /* 16-bit, with wait, ready */ *hst:x = r0l; ret; $eject /**/ /****************************************************************************/ /* download to external instruction and data memories */ /* */ /* others: r_ [*, , , , , , ,*] dmx,dmy [ , ] */ /* dp_ [*, , ,*,*, , , ] loops/stacks [2/1] */ /* dn_ [ , , , , , , , ] cycles ... */ /****************************************************************************/ sys_ii10 imseg downloadproc: clr(r7); /* data set to external instruction memory */ r7l= *hdt:x; /* instruction count */ if( r7==0 ) jmp xmem; /* */ r0l= *hdt:x; /* segment address */ /*---*/ dp3=r0l; /* */ call hostreboot; xmem: clr(r0); r0l= *hdt:x; /* data set to x memory */ if( r0==0 ) jmp ymem; /* segment count */ loop r0l { /* */ r0l= *hdt:x; /* segment data count */ r1l= *hdt:x; /* */
appendix sample so urce 66 users manual u13373ej3v0um00 /*---*/ dp0=r1l; /* segment address */ loop r0l { /* */ r0l= *hdt:x; /* setting data */ /* */ *dp0++=r0l; } clr(r0); } ymem: r0l= *hdt:x; /* data set to y memory */ if( r0==0 ) ret; /* segment count */ loop r0l { /* */ r0l= *hdt:x; /* segment data count */ r1l= *hdt:x; /* */ /*---*/ dp4=r1l; /* segment address */ loop r0l { /* */ r0l= *hdt:x; /* setting data */ /* */ *dp4++=r0l; } nop; } ret; /****************************************************************************/ /* check operation status */ /* */ /* others: r_ [*,*, , , , , , ] dmx,dmy [ , ] */ /* dp_ [ , , , , , , , ] loops/stacks [0/0] */ /* dn_ [ , , , , , , , ] cycles 14 */ /****************************************************************************/ sys_ie1 imseg healthcheck: clr(r0); r0l= esr; if( r0!=0 ) call errordump; r0l= lsp; if( r0!=0 ) call errordump; r0l= eir; r1 = r0 - 0xffff; if( r1!=0 ) call errordump; r0l= sp; r1 = r0 - 0x0001; if( r1!=0 ) call errordump; r0l= *hst:x; /* wait for host to */ r1 = r0 & hst_errmask; /* read out parameter */ if( r1!=0 ) call errordump; r1 = r0 & hst_senmask; if( r1!=0 ) jmp $-4;
appendix sample so urce users manual u13373ej3v0um00 67 nop; ret; $eject /**/ /*************************************************************************/ /* for error dump */ /*************************************************************************/ sys_xe xramseg edlock: ds 1; coreimage: ds 0x20; /**************************************************************************/ /* dump error data, end command processing */ /**************************************************************************/ sys_ie2 imseg errordump: *coreimage+0x02:x = r0l; /* interrupt disable setting */ *coreimage+0x03:x = r0h; /* register value dump */ call initint; *coreimage+0x04:x = r1l; *coreimage+0x05:x = r1h; *coreimage+0x06:x = r2l; *coreimage+0x07:x = r2h; *coreimage+0x08:x = r3l; *coreimage+0x09:x = r3h; *coreimage+0x0a:x = r4l; *coreimage+0x0b:x = r4h; *coreimage+0x0c:x = r5l; *coreimage+0x0d:x = r5h; *coreimage+0x0e:x = r6l; *coreimage+0x0f:x = r6h; *coreimage+0x10:x = r7l; *coreimage+0x11:x = r7h; r0l= dp0; *coreimage+0x12:x = r0l; r0l= dp1; *coreimage+0x13:x = r0l; r0l= dp2; *coreimage+0x14:x = r0l; r0l= dp3; *coreimage+0x15:x = r0l; r0l= dp4; *coreimage+0x16:x = r0l; r0l= dp5; *coreimage+0x17:x = r0l; r0l= dp6; *coreimage+0x18:x = r0l; r0l= dp7;
appendix sample so urce 68 users manual u13373ej3v0um00 *coreimage+0x19:x = r0l; r0l= stk; /* error occurrence address dump */ *coreimage+0x00:x = r0l; r0l= esr; /* esr value dump */ *coreimage+0x01:x = r0l; r0l= *hst:x; /* error flag set */ r0 = r0 & 0x003f; /* flag-bit save */ r0 = r0 | 0x04c0; /* 16 bit, with wait, busy, error */ *hst:x = r0l; clr(r0); /* initialize stack(etc.) */ sp = r0l; lsp= r0l; esr= r0l; clr(r0); /* wait for int4(vect:7) */ *edlock:x = r0l; r0l= intflg_int4; r1l= 0x8000; call clrintmask; nop; r0 = *edlock:x; if( r0==0 ) jmp $-2; call initint; /*---*/ dp0=coreimage; /* error data reported to host */ loop 0x1a { /*...*/ r0l=*dp0++; *hdt:x = r0l; } r0l= *hst:x; /* clear host input */ r0 = r0 & hst_lenmask; /* return to command wait status */ if( r0!=0 ) jmp waitcom; r0l= *hdt:x; jmp waitcom; starterrdump: /* int2(vect:7) processing */ r0l= 1; *edlock:x = r0l; ret; $eject /**/ /**************************************************************************/ /* no processing */ /**************************************************************************/ sys_ie3 imseg intnoproc: reti;
appendix sample so urce users manual u13373ej3v0um00 69 /*************************************************************************/ /* no processing */ /*************************************************************************/ sys_ie4 imseg noproc: ret; /*************************************************************************/ /* power down */ /* *1) no return to normal operation from power down mode */ /*************************************************************************/ sys_ie5 imseg powerdown: r0l= eir; /* all interrupts:disabled */ r0 = r0 | 0x8000; /* disable power down release */ eir= r0l; nop; pdloop: halt; /* powerdown */ jmp pdloop; $eject /**/ /****************************************************************************/ /* read data from host if, store in specified area */ /* 1. receive stored parameters from host if */ /* memory classification 0) x memory 1) y memory */ /* stored addresses */ /* stored data count */ /* 2. receive stored data from host if, store in specified memory */ /* */ /* others: r_ [*,*,*,*, , , , ] dmx,dmy [ , ] */ /* dp_ [*, , , ,*, , , ] loops/stacks [1/1] */ /* dn_ [ , , , , , , , ] cycles ... */ /****************************************************************************/ sys_ie6 imseg setdata: clr(r2); /* stored parameter introduction */ clr(r3); /* */ r1 = *hdt:x; /* memory classification */ r2l = *hdt:x; /* stored address */ r3l = *hdt:x; /* stored data count */ if( r3==0 ) ret; /* stored parameter analysis */ if( r1!=0 ) jmp setydata; setxdata: /*---*/ dp0=r2l; /* stored to x memory */ loop r3l {
appendix sample so urce 70 users manual u13373ej3v0um00 r0 = *hdt:x; /*...*/ *dp0++=r0h; } ret; setydata: /*---*/ dp4=r2l; /* stored to y memory */ loop r3l { r0 = *hdt:x; /*...*/ *dp4++=r0h; } ret; /****************************************************************************/ /* output data stored in specified area from host if */ /* 1. receive stored area specification value from host if */ /* memory classification 0) x memory 1) y memory */ /* stored addresses */ /* output data count */ /* 2. output stored data to host if */ /* */ /* others: r_ [*,*,*,*, , , , ] dmx,dmy [ , ] */ /* dp_ [*, , , ,*, , , ] loops/stacks [1/1] */ /* dn_ [ , , , , , , , ] cycles ... */ /****************************************************************************/ sys_ie7 imseg putdata: clr(r2); /* stored parameter introduction */ clr(r3); /* */ r1 = *hdt:x; /* memory classification */ r2l = *hdt:x; /* store addresses */ r3l = *hdt:x; /* stored data count */ if( r3==0 ) ret; /* stored parameter analysis */ if( r1!=0 ) jmp putydata; putxdata: /*---*/ dp0=r2l; /* output from x memory */ loop r3l { /*...*/ r0l=*dp0++; *hdt:x = r0l; } ret; putydata: /*---*/ dp4=r2l; /* output from y memory */ loop r3l { /*...*/ r0l=*dp4++; *hdt:x = r0l; } ret;
appendix sample so urce users manual u13373ej3v0um00 71 /*--------------------------------------------------------------------------*/ /* function setting definition */ /*--------------------------------------------------------------------------*/ #define dec ; use decoder function #define enc ; use encoder function #ifdef enc extrn g729b_initencm extrn g729b_encm #endif #ifdef dec extrn g729b_initdecm extrn g729b_decm #endif ;public encode ;public decode ;public initg729b mchannel_x xramseg cur_ch: ds 1 /**************************************************************************/ /* input processing of pcm data for coder */ /**************************************************************************/ ld8k_ix imseg getpcmdata: r0l= dp0 ; r0 = r0+2 ; /*---*/ dp1=r0l ; nop ; /*---*/ r0l=*dp1 ; /*---*/ dp1=r0l ; loop l_frame { ; r0l= *hdt:x ; /* */ *dp1++ =r0l ; } ; ret ; /**************************************************************************/ /* output processing of compression data for coder */ /**************************************************************************/ ld8k_ix imseg putprmdata: r0l= dp0 ; r0 = r0 + 3 ; /*---*/ dp1=r0l ; nop ; /*---*/ r1l=*dp1 ;
appendix sample so urce 72 users manual u13373ej3v0um00 /*---*/ dp1=r1l ; r0 = r0 + 14 ; dp0 + 3+14 -> dp0 + 0x11 dp2 = r0l ; nop ; r0l = *dp2 ; get ftyp *hdt:x = r0l ; put ftyp loop prm_size { ; /* */ r0l=*dp1++ ; *hdt:x = r0l ; } ; ret ; /**************************************************************************/ /* output processing of pcm data for decode */ /**************************************************************************/ ld8k_ix imseg; putpcmdata: r0l= dp0 ; r0 = r0 + 8 ; /*---*/ dp1=r0l ; nop ; /*---*/ r0l=*dp1 ; /*---*/ dp1=r0l ; loop l_frame { ; /* */ r0l=*dp1++ ; *hdt:x = r0l ; } ; ret ; /**************************************************************************/ /* input processing of compression data for decode */ /**************************************************************************/ ld8k_ix imseg getprmdata: r0l= dp0 ; r0 = r0 + 9 ; /*---*/ dp1=r0l ; nop ; /*---*/ r0l=*dp1 ; /*---*/ dp1=r0l ; loop prm_size { ; r0l= *hdt:x ; /* */ *dp1++=r0l ; } ; ret ; /*************************************************************************/ /* initialization */ /*************************************************************************/
appendix sample so urce users manual u13373ej3v0um00 73 ld8k_ix imseg initg729b: call g729b_mkio_table ; #ifdef enc call g729b_startcodec ; /*---*/ dp0=g729b_io_table1 ; call g729b_initencm ; #endif #ifdef dec /*---*/ dp0=g729b_io_table1 ; call g729b_initdecm ; #endif #ifdef enc /*---*/ dp0=g729b_io_table2 ; call g729b_initencm ; #endif #ifdef dec /*---*/ dp0=g729b_io_table2 ; call g729b_initdecm ; #endif #ifdef enc /*---*/ dp0=g729b_io_table3 ; call g729b_initencm ; #endif #ifdef dec /*---*/ dp0=g729b_io_table3 ; call g729b_initdecm ; #endif #ifdef enc /*---*/ dp0=g729b_io_table4 ; call g729b_initencm ; #endif #ifdef dec /*---*/ dp0=g729b_io_table4 ; call g729b_initdecm ; #endif ; call initcycledt ; * ; call stmipsdt ; * ret ; #ifdef enc /*************************************************************************/ /* encode 1 frame */ /*************************************************************************/ encode: r0l= *hdt:x ; get channel no. *cur_ch:x=r0l ; call getcurio_table ; r0l= *hdt:x ; get vad mode call setvadmode ;
appendix sample so urce 74 users manual u13373ej3v0um00 call incframecount ; call getcurio_table ; call getpcmdata ; call getcurio_table ; ; call clrmipsdt ; * call g729b_encm ; ; call putmipsdt ; * call getcurio_table ; call putprmdata ; ret ; /**************************************************************************/ /* setup vad flag(encode) */ /**************************************************************************/ setvadmode: r1l= dp0 ; r1 = r1 + 16 ; /*---*/ dp1=r1l ; nop ; /*---*/ *dp1=r0l ; ret ; /**************************************************************************/ /* incriment frame counter(encode) */ /**************************************************************************/ incframecount: r0l= dp0 ; r0 = r0 + 4 ; /*---*/ dp1=r0l ; nop ; /*...*/ r0 = *dp1 ; r0 = r0 sra 16 ; r1 = r0 - 32767 ; if(r1 != 0) jmp $+2 ; r0l = 255 ; r0 = r0 + 1 ; /*...*/ *dp1=r0l ; ret ; #else encode: ret ; dummy function #endif #ifdef dec /*************************************************************************/ /* decode 1 frame */ /*************************************************************************/ decode: r0 = *hdt:x ; ch no. *cur_ch:x = r0h ; call getcurio_table ; r0 = *hdt:x ; erase
appendix sample so urce users manual u13373ej3v0um00 75 r1 = *hdt:x ; ftype call decsetup ; call getprmdata ; ; call clrmipsdt ; call g729b_decm ; ; call putmipsdt ; call getcurio_table ; call putpcmdata ; ret ; /**************************************************************************/ /* setup decoder parameter */ /**************************************************************************/ decsetup: r2l= dp0 ; /*---*/ dp1=r2l ; nop ; /*...*/ r2 =*dp1##12 ; /*...*/ *dp1##6=r0h ; /*...*/ *dp1=r1h ; ret ; #else decode: ret ; dummy function #endif /**************************************************************************/ /* get current io control table pointer */ /**************************************************************************/ ;; step 2-6 (d) getcurio_table: r0 = *cur_ch:x ; clr(r1); r1l = g729b_io_table2; r1 = r1 - g729b_io_table1; ;; r1l = g729b_io_table2 - g729b_io_table1; r1 = r1 sll 16; r0 = r0h * r1h; r0 = r0 sra 1; r0 = r0 + g729b_io_table1; dp0 = r0l; ret; #if 0 r0 = r0 sra 16 ; if(r0 != 0) jmp $+3 ; dp0=g729b_io_table1 ; ret ; r0 = r0 - 1 ; if(r0 != 0) jmp $+3 ;
appendix sample so urce 76 users manual u13373ej3v0um00 dp0=g729b_io_table2 ; ret ; dp0=g729b_io_table3 ; ret ; #endif $eject /**/ /*************************************************************************/ /* data for debug */ /*************************************************************************/ debug_ye yramseg nextadr: ds 1 debdat: ds 1024 /*************************************************************************/ /* initialization for debug */ /*************************************************************************/ debug_ix imseg inidebdat: r0l= debdat; *nextadr:y = r0l; ret; /*************************************************************************/ /* debug data output */ /*************************************************************************/ debug_ix imseg putdebdat: clr(r0); r0l= *nextadr:y; r0 = r0 - debdat; *hdt:x = r0l; if( r0==0 ) ret; /*---*/ dp4=debdat; loop r0l { /* */ r0l=*dp4++; *hdt:x = r0l; } r0l= debdat; *nextadr:y = r0l; ret; end
appendix sample so urce users manual u13373ej3v0um00 77 a.2.1 samplebm.asm header file (sysconf.h) /****************************************************************************/ /* spx/evaluation board, application definition file */ /****************************************************************************/ /*---- parameter definition ----*/ #define si1proc intnoproc /* sio1(in) */ #define so1proc intnoproc /* sio1(out) */ #define si2proc intnoproc /* sio2(in) */ #define so2proc intnoproc /* sio2(out) */ #define hostin intnoproc /* host if input */ #define hostout intnoproc /* host if output */ #define codec1ck intnoproc /* int1 */ #define codec1fm intnoproc /* int2 */ #define codec2ck intnoproc /* int3 */ #define max_hip_no 3 /* when [p0..2] is host programmable 7 */ /* when [p0..1] is host programmable 3 */ #define hintproc1 noproc /* int4(vect:1) processing */ #define hintproc2 noproc /* int4(vect:2) processing */ #define hintproc3 noproc /* int4(vect:3) processing */ #define hintproc4 noproc /* int4(vect:4) processing. use prohibited when [p0..1] */ #define hintproc5 noproc /* int4(vect:5) processing. use prohibited when [p0..1] */ #define hintproc6 noproc /* int4(vect:6) processing. use prohibited when [p0..1] */ #define hintproc7 noproc /* int4(vect:7) processing. use prohibited when [p0..1] */ #define com4 noproc /* comid=4 processing */ #define com5 noproc /* comid=5 processing */ #define com6 encode /* comid=6 processing */ #define com7 decode /* comid=7 processing */ #define com8 noproc /* comid=8 processing */ #define com9 noproc /* comid=9 processing */ #define com10 noproc /* comid=10 processing */ #define com11 initg729b /* comid=11 processing */ /* upd77116 only */ icr equ 0x3828 /* interrupt control register */ /*---- register setting value definition ----*/ dwtr_wait0 equ 0x0000 /* wait setting value (data) 0wait*/ dwtr_wait1 equ 0x5454 /* 1wait*/ dwtr_wait3 equ 0xa8a8 /* 3wait*/ dwtr_wait7 equ 0xfcfc /* 7wait*/ iwtr_wait0 equ 0x0000 /* wait setting value (instruction) 0wait*/ iwtr_wait1 equ 0x0054 /* 1wait*/ iwtr_wait3 equ 0x00a8 /* 3wait*/ iwtr_wait7 equ 0x00fc /* 7wait*/ pio0_inp equ 0x2001 /* general-purpose i/o register setting value */ pio0_high equ 0xf001 pio0_low equ 0xb001 pio1_inp equ 0x2002 pio1_high equ 0xf102
appendix sample so urce 78 users manual u13373ej3v0um00 pio1_low equ 0xb102 pio2_inp equ 0x2004 pio2_high equ 0xf204 pio2_low equ 0xb204 pio3_inp equ 0x2008 pio3_high equ 0xf308 pio3_low equ 0xb308 pio_all_in equ 0x200f hst_wait equ 0x0400 /* host status register setting value */ hst_nowait equ 0x0000 hst_mask equ 0x00ff hst_lenmask equ 0x0001 hst_senmask equ 0x0002 hst_errmask equ 0x003c sst_wait equ 0x0f00 /* serial status register setting value */ sst_nowait equ 0x0300 sst_halt equ 0x0000 sst_errmask equ 0x000c sst_lenmask equ 0x0001 sst_senmask equ 0x0002 intflg_int1 equ 0x0001 /* interrupt register setting value */ intflg_int2 equ 0x0002 intflg_int3 equ 0x0004 intflg_int4 equ 0x0008 intflg_si1 equ 0x0010 intflg_so1 equ 0x0020 intflg_si2 equ 0x0040 intflg_so2 equ 0x0080 intflg_hi equ 0x0100 intflg_ho equ 0x0200 /*---- external bus definition ----*/ /*---- function entry ----*/ hostreboot equ 0x0005 /* host reboot */ $list
users manual u13373ej3v0um00 79 [memo]
80 users manual u13373ej3v0um00 [memo]
although nec has taken all possible steps to ensure that the documentation supplied to our customers is complete, bug free and up-to-date, we readily accept that errors may occur. despite all the care and precautions we've taken, you may encounter problems in the documentation. please complete this form whenever you'd like to report errors or suggest improvements to us. hong kong, philippines, oceania nec electronics hong kong ltd. fax: +852-2886-9022/9044 korea nec electronics hong kong ltd. seoul branch fax: 02-528-4411 taiwan nec electronics taiwan ltd. fax: 02-2719-5951 address north america nec electronics inc. corporate communications dept. fax: 1-800-729-9288 1-408-588-6130 europe nec electronics (europe) gmbh technical documentation dept. fax: +49-211-6503-274 south america nec do brasil s.a. fax: +55-11-6462-6829 asian nations except philippines nec electronics singapore pte. ltd. fax: +65-250-3583 japan nec semiconductor technical hotline fax: 044-435-9608 i would like to report the following error/make the following suggestion: document title: document number: page number: thank you for your kind support. if possible, please fax the referenced page or drawing. excellent good acceptable poor document rating clarity technical accuracy organization cs 00.6 name company from: tel. fax facsimile message


▲Up To Search▲   

 
Price & Availability of USAB13AP77016-XXX-B03

All Rights Reserved © IC-ON-LINE 2003 - 2022  

[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy]
Mirror Sites :  [www.datasheet.hk]   [www.maxim4u.com]  [www.ic-on-line.cn] [www.ic-on-line.com] [www.ic-on-line.net] [www.alldatasheet.com.cn] [www.gdcy.com]  [www.gdcy.net]


 . . . . .
  We use cookies to deliver the best possible web experience and assist with our advertising efforts. By continuing to use this site, you consent to the use of cookies. For more information on cookies, please take a look at our Privacy Policy. X