NEW DATABASE - 350 MILLION DATASHEETS FROM 8500 MANUFACTURERS
SAP77016-B11 PD77113A PD77114 PD77210 PD77213 U15683JJ1V1UM00 U15683JJ1V1UM - Datasheet Archive
2010 4 1 NEC http://www.renesas.com 2010 4 1 http://www.renesas.com http://japan.renesas.com/inquiry 1. 2. 3. 4.
2010 4 1 NEC http://www.renesas.com 2010 4 1 http://www.renesas.com http://japan.renesas.com/inquiry 1. 2. 3. 4. 5. 6. 7. OA AV 8. 9. 10. RoHS 11. 12. 1. 2. 1 µSAP77016-B11 SAP77016-B11 WMA µPD77113A PD77113A µPD77114 PD77114 µPD77210 PD77210 µPD77213 PD77213 U15683JJ1V1UM00 U15683JJ1V1UM00 1 January 2002 NS CPN 2001 2 U15683JJ1V1UM U15683JJ1V1UM 1 .11 2 .16 3 .33 4 .35 A.42 U15683JJ1V1UM U15683JJ1V1UM 3 Windows Windows Media Microsoft Corporation · · · · M7A98 M7A98.8 4 U15683JJ1V1UM U15683JJ1V1UM p.28 2-3 p.36 4.3 2HSM77016 2HSM77016 U15683JJ1V1UM U15683JJ1V1UM 5 µ PD77016 PD77016 µ PD77016 PD77016 µ PD7701 PD7701×µ PD77015 PD77015, 77016, 77017, 77018A, 77019 µ PD77111 PD77111 µ PD77110 PD77110, 77111, 77112, 77113A, 77114, 77115, µ PD77210 PD77210 µ PD77210 PD77210, 77213 µ PD77113A PD77113A, 77114, 77210, 77213 µ PD77016 PD77016 1 2 3 4 A C µ PD77111 PD77111 µ PD77111 PD77111 µ PD77016 PD77016 µ PD77016 PD77016 ××× 2 .×××× 0b×××× 10 .×××× 16 .0x×××× 6 U15683JJ1V1UM U15683JJ1V1UM µ PD77016 PD77016 U14373J U14373J U14623J U14623J U13116J U13116J U11958J U11958J U12021J U12021J U15203J U15203J U15807J U15807J µ PD77113A PD77113A U12395J U12395J µ PD77114 PD77114 µ PD77210 PD77210 µ PD77213 PD77213 HSM77016 HSM77016 WB77016 WB77016 U11602J U11602J U10078J U10078J U11506J U11506J ID77016 ID77016 U10118J U10118J CC77016 CC77016 U15037J U15037J RX77016 RX77016 U14397J U14397J RX77016 RX77016 U14404J U14404J HOST API U14371J U14371J U15683JJ1V1UM U15683JJ1V1UM 7 1 .11 1. 1 1. 2 1. 3 .11 WMA .11 .11 1. 3. 1 .11 1. 3. 2 .13 1. 3. 3 .14 1. 3. 4 .15 2 .16 2. 1 2. 2 2. 3 2. 4 2. 5 .16 .17 .18 2. 3. 1 wmad_FileDecodeInit .18 2. 3. 2 wmad_FileDecodeData .19 2. 3. 3 wmad_FileGetPCM .20 2. 3. 4 wmad_GetVersion .21 2. 3. 5 wmad_FileDecodeInfo .22 2. 3. 6 wmad_FileCBGetData .23 .26 .27 2. 5. 1 .28 2. 5. 2 .29 2. 5. 3 .30 2. 5. 4 .32 3 .33 3. 1 3. 2 3. 3 3. 4 .33 .33 .34 .34 4 .35 4. 1 4. 2 4. 3 4. 4 8 .35 .35 .36 .37 4. 4. 1 .37 4. 4. 2 .37 U15683JJ1V1UM U15683JJ1V1UM 4. 5 .39 A.42 A. 1 .42 A. 1. 1 sample.asm.42 A. 1. 2 smp_data.asm.55 A. 1. 3 smp_user.asm.56 A. 2 .62 A. 2. 1 wma_dec.h.62 A. 3 .64 A. 3. 1 smp_input.tmg.64 A. 3. 2 smp_serout.tmg.66 A. 3. 3 clk_for_2ch.tmg.69 U15683JJ1V1UM U15683JJ1V1UM 9 1-1µ SAP77016-B11 SAP77016-B11 .15 2-1.17 2-2.25 2-3.28 2-4.29 2-5.30 4-1.35 4-2.37 4-3.39 4-4.40 4-5.41 1-1.12 1-2.13 1-3.13 1-4WMA MIPS .14 2-1.16 2-2.16 2-3.26 2-4.27 2-5.31 2-6.32 2-7.32 3-1.34 3-2.34 10 U15683JJ1V1UM U15683JJ1V1UM 1 1. 1 DSP DSP NEC µ PD77016 PD77016 µ SAP77016-B11 SAP77016-B11 Windows Media TM AudioWMA 1. 2 WMA Windows Media Audio Windows Media Technology WMT ASF Advanced Systems FormatMPEG-4Moving Picture Experts GroupWMVWindows Media Video µ SAP77016-B11 SAP77016-B11 WMA 1. 3 1. 3. 1 Windows Media Audio CODEC Version 2, 7, 8 1-1 16 PCM ASF DRMDigital Rights Management U15683JJ1V1UM U15683JJ1V1UM 11 1 1-1 WMA CODEC WMA CODEC WMA CODEC Version 8 Version 7 Version 2 2 - - 2 48,000 2 192,000 44,100 2 - 160,000 44,100 2 128,000 44,100 2 96,000 44,100 2 80,000 44,100 2 64,000 44,100 2 48,000 44,100 2 - 32,000 44,100 2 - - 48,000 44,100 1 - - 32,000 44,100 1 64,000 32,000 2 - - 48,000 32,000 2 44,000 32,000 2 - - 40,000 32,000 2 36,000 32,000 2 - - 32,000 32,000 2 22,000 32,000 2 - - 32,000 32,000 1 - - 20,000 32,000 1 32,000 22,050 2 22,000 22,050 2 20,000 22,050 2 20,000 22,050 1 16,000 22,050 1 20,000 16,000 2 16,000 16,000 2 16,000 16,000 1 12,000 16,000 1 10,000 16,000 1 10,000 11,025 1 8,000 11,025 1 12,000 8,000 2 8,000 8,000 1 6,000 8,000 1 5,000 8,000 1 8,000 1 bps Hz 192,000 48,000 160,000 48,000 128,000 128 video Audio - 12 U15683JJ1V1UM U15683JJ1V1UM 1 1. 3. 2 1 DSP µ PD77113A PD77113A, 77114, 77210, 77213 2 µ SAP77016-B11 SAP77016-B11 1-2 [K ] - 12.6 RAM 10.5 ROM 17.5 RAM 12.5 ROM 9.6 X Y 1. 1 32 X Y 1 16 2.PCM 2. 5 3Windows 1-3 DSP µ PD77016 PD77016 DSP WB77016 WB77016 HSM77016 HSM77016 LB77016 LB77016 U15683JJ1V1UM U15683JJ1V1UM 13 1 1. 3. 3 WMA MIPS 1-4WMA MIPS HSM77016 HSM77016 WMA 2-5 MIPS wmad_FileDecodeData wmad_FileGetPCM wmad_FileCBGetData wmad_FileCBGetData 1-4WMA MIPS 22 22 32 MIPS 28 51 44 74 kHz 22 MIPS MIPS 2 kbps MIPS 2 32 32 2 27 47 192 48 2 41 71 MIPS 1-4 14 U15683JJ1V1UM U15683JJ1V1UM 1 1. 3. 4 µ SAP77016-B11 SAP77016-B11 1-1µ SAP77016-B11 SAP77016-B11 wmad.lib RAM wma_dec.h sample.prj sample.asm smp_user.asm smp_data.asm smp_input.tmg wmadec ROM wmad_ram.lib smp wmad_rom.lib library clk_for_2ch.tmg smp_serout.tmg 1library wmad.lib wmad_rom.lib ROM ROM wmad_ram.lib RAM RAM 2smp/wmadec 4. 1 U15683JJ1V1UM U15683JJ1V1UM 15 2 µ SAP77016-B11 SAP77016-B11 2. 1 µ SAP77016-B11 SAP77016-B11 5 2-1 wmad_FileDecodeInit wmad_FileDecodeData wmad_FileGetPCM wmad_GetVersion wmad_FileDecodeInfo µ SAP77016-B11 SAP77016-B11 2-2 wmad_FileCBGetData 16 U15683JJ1V1UM U15683JJ1V1UM 2 2. 2 2-1 wmad_FileDecodeInit wmad_FileCBGetData wmad_FileDecodeData Yes No PCM wmad_FileGetPCM No Yes U15683JJ1V1UM U15683JJ1V1UM 17 2 2. 3 2. 3. 1 wmad_FileDecodeInit WMA wmad_FileDecodeInit µ SAP77016-B11 SAP77016-B11 RAM callwmad_FileDecodeInit R0L wmad_FileCBGetData R1 1: 0: R2L R0 X 2. 4 µ SAP77016-B11 SAP77016-B11 RAM 2-7 R0, R1, R2, R3, R4, R5, R6, R7, DP0, DP1, DP2, DP3, DP4, DN0 5 2 502 5.5×104 wmad_FileCBGetData wmad_FileCBGetData wmad_FileCBGetData wmad_FileCBGetData 40 18 U15683JJ1V1UM U15683JJ1V1UM 2 2. 3. 2 wmad_FileDecodeData WMA wmad_FileDecodeData PCM callwmad_FileDecodeData R0 2. 4 PCM cWMA_Failed cWMA_NoMoreFrames cWMA_NoErr wmad_FileGetPCM wmd_FileGetPCM PCM R0, R1, R2, R3, R4, R5, R6, R7, DP0, DP1, DP2, DP3, DP4, DP5, DP6, DP7, DN0, DN1, DN2, DN4, DN5, DN6, DN7 7 2 25 2.7×106 wmad_FileCBGetData wmad_FileCBGetData wmad_FileCBGetData wmad_FileCBGetData U15683JJ1V1UM U15683JJ1V1UM 19 2 2. 3. 3 wmad_FileGetPCM WMA wmad_FileGetPCM wmad_FileDecodeData PCM callwmad_FileGetPCM R0L R1L X PCM R1 PCM PCM PCM × PCM X 2 L R PCM PCM 1 PCM PCM PCM wmad_FileDecodeData PCM R0, R1, R2, R3, R4, R5, R6, R7, DP0, DP1, DP2, DP3, DP4, DP5, DN0, DN2, DN5, DN7 4 1 0 20 2.1×105 PCM 2048 U15683JJ1V1UM U15683JJ1V1UM 2 2. 3. 4 wmad_GetVersion wmad_GetVersion Windows Media Player callwmad_GetVersion R0H R0L Windows Media Player R1L R1H Windows Media Player Windows Media Player 32 R0=0x00'0x0001'0x0100 V1.01 R1=0x00'0x0007'0x0000 Windows Media Player V7.0 R0, R1 0 0 0 10 U15683JJ1V1UM U15683JJ1V1UM 21 2 2. 3. 5 wmad_FileDecodeInfo wmad_FileDecodeInfo WMA callwmad_FileDecodeInfo R0L X R0 2. 4 wmad_FileDecodeInit X 2-6 R0, R1, R2, DP0 0 0 22 0 41 U15683JJ1V1UM U15683JJ1V1UM 2 2. 3. 6 wmad_FileCBGetData wmad_FileCBGetData wmad_FileDecodeInit wmad_FileDecodeData call DP0 R0 R1 [] [] R0 R2L [] wmad_FileDecodeInitwmad_FileDecodeData WMA wmad_FileDecodeInit R0, R1, R2, R3, R4, R5, DP0, DP1 07 1 wmad_FileCBGetData wmad_FileDecodeData 15 U15683JJ1V1UM U15683JJ1V1UM 23 2 R1 R0 X R0 R2L 2-2 64 128 2. 5 R0 1 128 128 R0 R1 wmad_FileCBGetData R1 wmad_FileCBGetData R1 0 wmad_FileCBGetData R1 R1 wmad_FileCBGetData R1R0 Case A 1 wmad_FileCBGetData 1 wmad_FileCBGetData µ SAP77016-B11 SAP77016-B11 R0 128 Case A R1 wmad_FileCBGetData R1R0 R1 24 U15683JJ1V1UM U15683JJ1V1UM 2 2-2 0x12 0x34 0x56 0x78 0x9A 0 4 8 12 = 8 = 9 = 3 = 4 MSB 0x12 0x34 0x56 LSB MSB 0x34 0x56 0x78 0x9A LSB U15683JJ1V1UM U15683JJ1V1UM 25 2 2. 4 µ SAP77016-B11 SAP77016-B11 2-3 cWMA_NoErr 1 cWMA_BadArgument 2 cWMA_BadAsfHeader 3 ASF Header cWMA_BadPacketHeader 4 PacketHeader cWMA_BrokenFrame 5 cWMA_NoMoreFrames 6 cWMA_BadSamplingRate 7 cWMA_BadNumberOfChannels 8 cWMA_BadVersionNumber 9 cWMA_BadWeightingMode 10 cWMA_BadPacketization 11 cWMA_BadDRMType 12 cWMA_DRMFailed 13 cWMA_DRMUnsupported 14 DRM cWMA_DemoExpired 15 cWMA_BadState 16 cWMA_Internal 26 0 cWMA_Failed 17 U15683JJ1V1UM U15683JJ1V1UM 2 2. 5 µ SAP77016-B11 SAP77016-B11 µ SAP77016-B11 SAP77016-B11 2-4 2-41/2 WMA CODEC [bps] Hz Version static_x1 X static_x2 scratch static_y1 static_y2 scratch 192000 48000 2 8 741 0 1572 8192 4096 0 192000 44100 2 7, 8 741 0 1572 8192 4096 0 160000 48000 2 2, 7, 8 741 0 1572 8192 4096 0 160000 44100 2 2, 7, 8 741 0 1572 8192 4096 0 128000 48000 2 2, 7, 8 741 0 1572 8192 4096 0 128000 44100 2 2, 7, 8 741 0 1572 8192 4096 0 96000 44100 2 2, 7, 8 741 0 1572 8192 4096 0 80000 44100 2 2, 7, 8 741 0 1572 8192 4096 0 64000 44100 2 2, 7, 8 741 0 1572 8192 4096 0 64000 32000 2 2 741 0 1572 8192 4096 0 48000 44100 2 2, 8 741 0 1572 8192 4096 0 48000 32000 2 2, 7, 8 741 0 1572 8192 4096 0 44000 32000 2 2 972 0 1572 8192 4096 0 40000 32000 2 2, 7, 8 972 0 1572 8192 4096 0 36000 32000 2 2 972 0 1572 8192 4096 0 32000 44100 2 8 972 0 1572 8192 4096 0 48000 44100 1 8 741 0 1572 8192 2048 0 32000 44100 1 2, 7, 8 741 0 1572 8192 2048 0 32000 32000 2 2, 7, 8 972 0 1572 8192 4096 0 32000 32000 1 2 972 0 1572 8192 2048 0 32000 22050 2 2, 7, 8 741 0 1572 8192 2048 0 22000 32000 2 2 972 8192 1572 8192 4096 299 22000 22050 2 2, 7 972 4096 1572 8192 2048 299 22000 22050 2 8 972 0 1572 8192 2048 0 20000 32000 1 2, 7 972 4096 1572 8192 2048 299 20000 32000 1 8 972 0 1572 8192 2048 0 20000 22050 2 2, 7 972 4096 1572 8192 2048 299 20000 22050 2 8 972 0 1572 8192 2048 0 20000 22050 1 2, 7 972 2048 1572 8192 1024 299 20000 22050 1 8 972 0 1572 8192 1024 0 20000 16000 2 2, 7, 8 972 2048 1572 8192 1024 299 16000 22050 1 2, 7 972 2048 1572 8192 1024 299 16000 22050 1 8 972 0 1572 8192 1024 0 16000 16000 2 2, 7, 8 972 2048 1572 8192 1024 299 16000 16000 1 2, 7, 8 972 1024 1572 8192 512 299 U15683JJ1V1UM U15683JJ1V1UM Y 27 2 2-42/2 WMA CODEC hz Version static_x1 static_x2 scratch static_y1 static_y2 scratch 12000 16000 1 2, 7, 8 972 1024 1572 8192 512 299 12000 8000 2 2, 7, 8 972 2048 1572 8192 1024 299 10000 16000 1 2, 7, 8 972 1024 1572 8192 512 299 10000 11025 1 2, 7, 8 972 1024 1572 8192 512 299 8000 11025 1 2, 7, 8 972 1024 1572 8192 512 299 8000 8000 1 2, 7, 8 972 1024 1572 8192 512 299 6000 8000 1 2, 7, 8 972 1024 1572 8192 512 299 5000 8000 1 2, 7, 8 972 1024 1572 8192 512 299 128 8000 1 2, 7, 8 972 1024 1572 8192 512 299 [bps] X Y 2. 5. 1 µ SAP77016-B11 SAP77016-B11 µ SAP77016-B11 SAP77016-B11 wmad_lib_Scratch_x, wmad_lib_Scratch_y align at 2-4 PUBLIC 2-3 public wmad_lib_Scratch_x public wmad_lib_Scratch_y ; #define WMAD_MAX_SCRATCH_X_SIZE 1572 #define WMAD_MAX_SCRATCH_Y_SIZE 299 _ _ WMAD_LIB_SCRATCH_X XRAMSEG wmad_lib_Scratch_x: DS WMAD_MAX_SCRATCH_X_SIZE; _ _ WMAD_LIB_SCRATCH_Y YRAMSEG wmad_lib_Scratch_ y : DS WMAD_MAX_SCRATCH_Y_SIZE; end 28 U15683JJ1V1UM U15683JJ1V1UM 2 2. 5. 2 wmad_lib_Static_x1, wmad_lib_Static_x2, wmad_lib_Static_y1, wmad_lib_Static_y2 align at 2-4 PUBLIC 2-4 public wmad_lib_Static_x1 public wmad_lib_Static_x2 public wmad_lib_Static_y1 public wmad_lib_Static_y2 ; #define WMAD_MAX_STATIC_X1_SIZE 972 #define WMAD_MAX_STATIC_X2_SIZE 8192 #define WMAD_MAX_STATIC_Y1_SIZE 8192 #define WMAD_MAX_STATIC_Y2_SIZE 4096 _ _ WMAD_LIB_STATIC_X1 XRAMSEG wmad_lib_Static_x1: DS WMAD_MAX_STATIC_X1_SIZE; _ _ WMAD_LIB_STATIC_X2 XRAMSEG wmad_lib_Static_x2: DS _ _ WMAD_LIB_STATIC_Y1 YRAMSEG wmad_lib_Static_y1: DS _ _ WMAD_LIB_STATIC_Y2 YRAMSEG wmad_lib_Static_y2: DS WMAD_MAX_STATIC_X2_SIZE; WMAD_MAX_STATIC_Y1_SIZE; WMAD_MAX_STATIC_Y2_SIZE; end U15683JJ1V1UM U15683JJ1V1UM 29 2 2. 5. 3 µ SAP77016-B11 SAP77016-B11 X PCM X µ SAP77016-B11 SAP77016-B11 2-5 public INPUT_BUFFER public HOST_IN_BUFF public OUTPUT_BUFFER public SERIAL_OUT_BUFF I_O_BUFFER_X XRAMSEG INPUT_BUFFER: DS 64; HOST_IN_BUFF: DS 1536; OUTPUT_BUFFER: DS 4096; SERIAL_OUT_BUFF: DS 4096; end 64 2-5 µ SAP77016-B11 SAP77016-B11 CPU X Y PCM DAC X Y 2-5 ×2 2-5 ×2 192 kbps, 44.1 kHz 558 = [kbps]/16 [] [kHz] Audio Video DSP CPU 30 U15683JJ1V1UM U15683JJ1V1UM 2 2-5 [] [Hz] mono stereo 8000 512 1024 11025 512 1024 16000 512 1024 22050 1024 2048 32000 2048 4096 44100 2048 4096 48000 2048 4096 U15683JJ1V1UM U15683JJ1V1UM 31 2 2. 5. 4 WMA 1 WMA X wmad_FileDecodeInfo 2-6 [] WMA 1 [Hz] 1 1 [ms] 2 [] 2 [] 2 [] 2 DRM 0: DRM 1: DRM 2 [bps] 2 µ SAP77016-B11 SAP77016-B11 WMA 2 WMA CODEC Version 2, 7, 8 WMA 2 2 X wmad_FileDecodeInit 2-7 [] [] 1 [] 1 [] 1 [] 1 [] 1 1 1 1 1 1 "0x0000" 32 U15683JJ1V1UM U15683JJ1V1UM 3 3. 1 µ SAP77016-B11WMA SAP77016-B11WMA 1 2 3. 2 µ SAP77016-B11 SAP77016-B11 1WB77016 1WB77016 2sample.prj ProjectOpen Project sample.prj Cannot Load system*.modelOptionsProcessor Model ROM wmad_ram.lib wmad_rom.lib 3sample.lnk MakeBuild Allsample.lnk U15683JJ1V1UM U15683JJ1V1UM 33 3 3. 3 µ SAP77016-B11 SAP77016-B11 3-1LB77016 3-1LB77016 WB77016 WB77016 3-1 _ _ WMAD_IMSEG µ SAP77016-B11 SAP77016-B11 _ _ WMAD_XROM µ SAP77016-B11 SAP77016-B11 X _ _ WMAD_YROM µ SAP77016-B11 SAP77016-B11 Y 3. 4 3-2 3-2 wmad_XXXX _ _WMAD_XXXX 2 XXXX 34 U15683JJ1V1UM U15683JJ1V1UM 4 4. 1 HSM77016 HSM77016 Ver.2.32 sample.lnk3. 2 smp_input.tmg, smp_serout.tmg, clk_for_2ch.tmg xxx.dat4. 2 uPD77113 uPD77113.model 4. 2 1 WMA 2 WMA WMA 1 2 4-1 0x12 0x34 0x56 0x78 0x9A 0xBC WMA 0 4 8 12 MSB 0x1234 LSB 0x5678 0x9ABC : : U15683JJ1V1UM U15683JJ1V1UM 35 4 4. 3 1A. 3 2HSM77016 2HSM77016 3 toolsSimulation Model 43. 2 sample.lnk fileopen sample.lnk 5 smp_input.tmg, smp_serout.tmg, clk_for_2ch.tmg fileopen 6HSM77016 6HSM77016 CPU runresetCPU and built-in I/O devices, time measurement, all timing files and restart execution 7Run 36 U15683JJ1V1UM U15683JJ1V1UM 4 4. 4 4. 4. 1 µ SAP77016-B11 SAP77016-B11 DSP 16 2-5 4. 4. 2 1 FileCBGetData_fp 2 x wmad_FileCBGetData x x1 wmad_FileCBGetData R1R0 2 read_ptr 3 write_ptr 4-2 host_in_buffer input_buffer 64 read_ptr 128 write_ptr U15683JJ1V1UM U15683JJ1V1UM 37 4 FileCBGetData_fp r1 FileCBGetData_fp = r1 case000 FileCBGetData_fpr1 case001 FileCBGetData_fpr1 case002 case000 2 read_ptr write_ptr get_data get_data case001 read_ptr write_ptr get_data case002 read_ptr write_ptr set_data get_data get_data 128 get_data_next finish get_data_next 0 set_data write_ptr write_ptr set_data set_data read_ptr finish finish FileCBGetData_fp wmad_FileCBGetData 38 U15683JJ1V1UM U15683JJ1V1UM 4 4. 5 4-3 wmad_GetVersion wmad_FileDecodeInit wmad_FileDecodeInfo U15683JJ1V1UM U15683JJ1V1UM 39 4 4-4 wmad_FileDecodeData Yes No Yes No wmad_FileGetPCM = 0 Yes No No Yes 40 U15683JJ1V1UM U15683JJ1V1UM 4 4-5 wmad_FileGetPCM = 0 wmad_FileDecodeData Yes No No Yes No Yes No No Yes Yes U15683JJ1V1UM U15683JJ1V1UM 41 A µ SAP77016-B11 SAP77016-B11 A. 1 A. 1. 1sample.asm (1/13) /*-*/ /* File Information */ /*-*/ /* Name : sample.asm */ /* Type : Assembler program module */ /* Version : 1.00 */ /* Date : 2001 July 10 */ /* CPU : uPD7701x uPD7701x Family */ /* Assembler : WB77016 WB77016 Ver 2.4 */ /* About */ : sample main function /* */ /*-*/ /* Copyright (C) NEC Corporation 2000, 2001 */ /* All rights reserved by NEC Corporation. */ /* Use of copyright notice does not evidence publication */ /*-*/ /* = * INCLUDE FILES * = */ #include "wma_dec.h" /* = * PUBLIC * = */ public Num_Channels ; for timing file public sample_rate ; for timing file /* = * EXTERN FUNCTIONS * = */ extrn Init_FileCBGetData extrn wmad_FileCBGetData 42 U15683JJ1V1UM U15683JJ1V1UM A (2/13) /* = * DEFINE & EQU * = */ #define USE_SO 1 #define STRING_SIZE 64 #define MAX_PCMSIZE 2048 MAX_RINGSIZE MAX_PCMSIZE*2 equ ; Use Serial Output interrupt /* = * LOCAL VARIABLES AND BUFFER * = */ _ _ SAMPLE_X_RAM XRAMSEG ring_dn0: ds 1 ; ring_write_ptr: ds 1 ; ring_read_ptr: ds 1 ; ring_entries: ds 1 ; putin_temp: ds 2 ; save_regs: ds 6 ; g_ulOutputSample: ds 2 ; start_flag: ds 1 ; n_sample: ds 1 ; f_dec_unit_end: ds 1 ; n_get_pcm: ds 1 ; _ _ SAMPLE_X_CONTENTS XRAMSEG /* Contents Information */ desc: desc_title_len: ds 1 ; desc_author_len: ds 1 ; desc_copyright_len: ds 1 ; desc_description_len: ds 1 ; desc_rating_len: ds 1 ; desc_pTitle: ds 1 ; desc_pAuthor: ds 1 ; desc_pCopyright: ds 1 ; desc_pDescription: ds 1 ; desc_pRating: ds 1 ; Title: ds STRING_SIZE/2 ; Author: ds STRING_SIZE/2 ; Copyright: ds STRING_SIZE/2 ; Description: ds STRING_SIZE/2 ; Rating: ds STRING_SIZE/2 ; ds 1 ; StructFileInfo: Version: U15683JJ1V1UM U15683JJ1V1UM 43 A (3/13) sample_rate: ds 1 ; Num_Channels ds 1 ; duration: ds 2 ; packet_size: ds 2 ; first_packet_offset: ds 2 ; last_packet_offset: ds 2 ; has_DRM: ds 2 ; bit_rate: ds 2 ; _ _ SAMPLE_X_DEC_OUTPUT XRAMSEG output_buffer: ds MAX_PCMSIZE*2 ; _ _ SAMPLE_X_SER_OUTPUT XRAMSEG align at 0 ser_out_buffer: ds MAX_RINGSIZE ; /* = * VECTOR REGISTRATION * = */ MAIN_V IMSEG at 0x200 jmp star ; Regist start up routine nop ; nop ; nop ; ; reserve vector 1 nop ; reti ; nop ; nop ; ; reserve vector 2 nop ; reti ; nop ; nop ; ; reserve vector 3 nop ; reti ; nop ; nop ; ; int1 vector nop reti ; nop ; nop 44 ; ; U15683JJ1V1UM U15683JJ1V1UM A (4/13) ; int2 vector nop ; reti ; nop ; nop ; ; int3 vector nop ; reti ; nop ; nop ; ; int4 vector nop ; reti ; nop ; nop ; ; SI1 vector nop ; reti ; nop ; nop ; ; SO1 vector jmp _so_interrupt ; Regist SO1 handler reti ; nop ; nop ; ; SI2 vector nop ; reti ; nop ; nop ; ; SO2 vector nop ; reti ; nop ; nop ; ; HI vector nop ; reti ; nop ; nop ; ; HO vector nop ; U15683JJ1V1UM U15683JJ1V1UM 45 A (5/13) reti ; nop ; nop ; ; Hardware signal vector nop ; reti ; nop ; nop ; ; Timer vector nop ; reti ; nop ; nop ; /* = * PROGRAM CODE * = */ MAIN IMSEG AT 0x240 ; start: clr(r0) ; r0l = EIR ; r0 ; = r0 | 0x8000 EIR = r0l ; disable interrupt ;=; ; Clear Register ;=; clr(r0) clr(r1) ; clr(r2) ; clr(r3) ; clr(r4) ; clr(r5) ; clr(r6) ; clr(r7) ; dp0 = r0l ; dp1 = r0l ; dp2 = r0l ; dp3 = r0l ; dp4 = r0l ; dp5 = r0l ; dp6 = r0l ; dp7 = r0l ; dn0 = r0l ; dn1 = r0l ; dn2 = r0l ; dn3 = r0l 46 ; ; U15683JJ1V1UM U15683JJ1V1UM A (6/13) dn4 = r0l ; dn5 = r0l ; dn6 = r0l ; dn7 = r0l ; DMX = r0l ; DMY = r0l ; ;=; ; Initialize Register & Peripheral Units ;=; r0l = 0x0000 ; *DWTR:x=r0l ; r0l = 0x0081 ; *HST:x = r0l ; r0l = 0x0202 ; *SST1:x = r0l ; ;=; ; Initialize Variables and Buffer ;=; dp0 = ser_out_buffer ; clr(r0) ; rep MAX_RINGSIZE ; *dp0+ = r0h ; r0l = ser_out_buffer ; *ring_write_ptr:x = r0l ; *ring_read_ptr:x ; = r0l *ring_entries:x = r0h ; set 0 r0l = 1 ; *ring_dn0:x = r0l ; *g_ulOutputSample:x = r0h ; *g_ulOutputSample+1:x = r0h ; r0l = Title ; *desc_pTitle:x = r0l ; r0l = Author ; *desc_pAuthor:x = r0l ; r0l = Copyright ; *desc_pCopyright:x = r0l ; r0l = Description ; *desc_pDescription:x = r0l ; r0l = Rating ; *desc_pRating:x = r0l ; r0l = STRING_SIZE ; *desc_title_len:x = r0l ; *desc_author_len:x = r0l ; *desc_copyright_len:x = r0l ; U15683JJ1V1UM U15683JJ1V1UM 47 A (7/13) *desc_description_len:x = r0l ; *desc_rating_len:x = r0l ; call Init_FileCBGetData ; ;=; ; Get Version Information ;=; call wmad_GetVersion ; ;=; ; Initialize WMA Decoder and Get Content Information ;=; r0l = wmad_FileCBGetData ; clr(r1) ; r1l = 0x0001 ; r2l = desc ; call wmad_FileDecodeInit ; r0 = r0 ^ cWMA_NoErr ; if(r0!=0) jmp _init_error ; ;=; ; Get File Information ;=; r0l = StructFileInfo ; call wmad_FileDecodeInfo ; ;=; ; Set Size of Unit for Decode Process ;=; clr(r0) ; r0l = *sample_rate:x ; r1 = r0 - 32000 ; if(r1>=0) jmp _pre_set_size_2048 ; r1 = r0 - 22050 ; if(r1>=0) jmp _pre_set_size_1024 ; r1l = 512 ; jmp _pre_set_size_end ; _pre_set_size_1024: r1l = 1024 ; jmp _pre_set_size_end ; _pre_set_size_2048: r1l = 2048 ; _pre_set_size_end: *n_sample:x = r1l ; sample per ch clr(r0) 48 ; *start_flag:x = r0l ; set *start_flag:x = 0 U15683JJ1V1UM U15683JJ1V1UM A (8/13) *f_dec_unit_end:x = r0l ; *n_get_pcm:x = r0l ; ;=; ; Previous Decode routine ;=; _pre_DecodeData: call wmad_FileDecodeData ; /* decode is finished ? */ r1 = r0 ^ cWMA_NoMoreFrames ; if(r1=0) jmp finish ; r1 = r0 ^ ; cWMA_Failed if(r1=0) jmp finish ; /* check error */ r1 = r0 ^ cWMA_NoErr ; if(r1!=0) jmp _decode_error ; _pre_GetPCM: r2 = *n_get_pcm:x ; r3 = *n_sample:x ; r1 = r3 - r2 ; r1 = r1 sra 16 ; set r1 r2 ; = r2 sra 16 clr(r4) ; r4l = *Num_Channels:x ; Set r4 = Number of ch r4 ; = r4 - 2 if(r4=0) r2 += r2 ; r0l = output_buffer ; r0 ; set r0 = r0 + r2 call wmad_FileGetPCM ; if(r1=0) jmp _pre_DecodeData ; clr(r2) ; r2h= *g_ulOutputSample:x ; r2l= *g_ulOutputSample+1:x ; r2 = r2 + r1 ; count total sample per ch *g_ulOutputSample:x = r2h ; *g_ulOutputSample+1:x = r2l ; clr(r2) ; r2l = *n_get_pcm:x ; r2 ; = r2 + r1 clr(r3) ; r3l = *n_sample:x ; r3 ; = r3 - r2 if(r3>0) jmp _pre_GetPCM_end ; U15683JJ1V1UM U15683JJ1V1UM 49 A (9/13) r2l = 1 ; *f_dec_unit_end:x = r2l ; f_dec_unit_end = 1 *start_flag:x = r2l ; set *start_flag:x = 1 clr(r2) ; _pre_GetPCM_end: *n_get_pcm:x = r2l ; /* chekc decode unit is end ? */ r2 = *f_dec_unit_end:x ; if(r2=0) jmp _pre_GetPCM ; #if USE_SO call _SetPCM ; set PCM #else *f_dec_unit_end:x = r2l ; f_dec_unit_end = 0 #endif ;=; ; Set interrupt mask and Start Serial Output ;=; serout_start: *SDT1:x = r1h ; serial out start r0l = SR ; r0 = r0 & 0x7fdf ; r0 = r0 | 0x0fdf ; nop ; sr = r0l ; enable interrupt (SO1) jmp _loop_GetPCM ; ;=; ; Main routine ;=; _loop_DecodeData: call wmad_FileDecodeData ; /* decode is finished ? */ r1 = r0 ^ cWMA_NoMoreFrames ; if(r1=0) jmp finish ; r1 = r0 ^ ; cWMA_Failed if(r1=0) jmp finish ; /* check error */ r1 = r0 ^ cWMA_NoErr ; if(r1!=0) jmp _decode_error ; r1 = *ring_entries:x ; if(r10) jmp $-1 ; serout_finish: nop ; jmp serout_finish ; ;=; ; Error ;=; _init_error: nop ; jmp $-1 ; _decode_error: nop ; jmp $-1 ; _mips_overflow: nop ; jmp $-1 ; /* = [Function Name] _SetPCM =*/ _SetPCM: dp0 = output_buffer ; dp1 = r2l ; dn1 = 1 52 ; r2l = *ring_write_ptr:x ; U15683JJ1V1UM U15683JJ1V1UM A (12/13) dmx = MAX_RINGSIZE-1 ; clr(r4) ; r4l = *Num_Channels:x ; Set r4 = Number of ch r4 ; = r4 - 1 clr(r3) ; r3l = *n_sample:x ; Loop r3l { ; r2 = *dp0+ ; *dp1%% = r2h ; if(r4=0) jmp $+2 ; if ch = 1 r2 = *dp0+ ; *dp1%% = r2h ; nop ; } ; r2l = dp1 ; *ring_write_ptr:x = r2l ; r3 += r3 ; always, output 2 ch clr(r2) ; *f_dec_unit_end:x = r2h ; f_dec_unit_end = 0 r2l = EIR ; r2 = r2 | 0x8000 ; EIR = r2l ; nop ; nop ; wait disable interrupt nop ; r2l = *ring_entries:x ; r2 = r2 + r3 ; *ring_entries:x = r2l ; r2l = EIR ; r2 ; = r2 & 0x7fff EIR = r2l ; enable interrupt ret ; /* = [Handler Name] _so_interrupt: =*/ _so_interrupt: *save_regs+0:x = r0l ; push r0 *save_regs+1:x = r0h ; *save_regs+2:x = r0e ; r0l = dp0 ; *save_regs+3:x = r0l ; push dp0 r0l = dn0 ; *save_regs+4:x = r0l ; push dn0 r0l = dmx ; *save_regs+5:x = r0l ; push dmx U15683JJ1V1UM U15683JJ1V1UM 53 A (13/13) r0l = *ring_read_ptr: ; dp0 = r0l ; set dp0 r0l = *ring_dn0:x ; dn0 = r0l ; set dn0 dmx = MAX_RINGSIZE-1 ; set dmx r0 ; = *dp0%% *SDT1:x=r0h ; set output PCM data r0l = dp0 ; *ring_read_ptr:x = r0l ; set read ptr r0l = *ring_entries:x ; r0 ; = r0 - 1 *ring_entries:x = r0l ; set ring_entries r0l = *save_regs+5:x ; dmx = r0l ; pop dmx r0l = *save_regs+4:x ; dn0 = r0l ; pop dn0 r0l = *save_regs+3:x ; dp0 = r0l ; pop dp0 r0e = *save_regs+2:x ; r0h = *save_regs+1:x ; r0l = *save_regs+0:x ; pop r0 reti ; end 54 U15683JJ1V1UM U15683JJ1V1UM A A. 1. 2smp_data.asm /* = * PUBLIC * = */ public wmad_lib_static_x1 public wmad_lib_static_x2 public wmad_lib_static_y1 public wmad_lib_static_y2 public wmad_lib_scratch_x public wmad_lib_scratch_y /* = * STATIC MEMORY * = */ _ _ WMAD_LIB_STATIC_X1 XRAMSEG wmad_lib_static_x1: _ _ WMAD_LIB_STATIC_X2 ds ds ds 8192 ds 4096 YRAMSEG wmad_lib_static_y1: _ _ WMAD_LIB_STATIC_Y2 4096 XRAMSEG wmad_lib_static_x2: _ _ WMAD_LIB_STATIC_Y1 972 YRAMSEG wmad_lib_static_y2: /* = * SCRATCH MEMORY * = */ _ _ WMAD_LIB_SCRATCH_X XRAMSEG wmad_lib_scratch_x: _ _ WMAD_LIB_SCRATCH_Y wmad_lib_scratch_y: ds 1600 ds 300 YRAMSEG end U15683JJ1V1UM U15683JJ1V1UM 55 A A. 1. 3smp_user.asm wmad_FileCBGetData (1/6) /*-*/ /* File Information */ /*-*/ /* Name : smp_user.asm */ /* /* Type : Assembler program module */ Version : 1.00 */ /* Date : 2001 Jun 18 */ /* CPU : uPD7701x uPD7701x Family */ /* Assembler : WB77016 WB77016 Ver 2.4 */ /* About */ : wmad_FileCBGetData function /* */ /*-*/ /* Copyright (C) NEC Corporation 2000, 2001 */ /* All rights reserved by NEC Corporation */ /* Use of copyright notice does not evidence publication */ /*-*/ /* = * INCLUDE FILES * = */ #include "wma_dec.h" /* = * PUBLIC FUNCTIONS * = */ public Init_FileCBGetData public wmad_FileCBGetData /* = * EXTERN FUNCTIONS * = */ /* = * DEFINE * = */ #define CW_BUFF_SIZE 64 #define CB_BUFF_SIZE 128 /* = * LOCAL MEMORY * = */ 56 U15683JJ1V1UM U15683JJ1V1UM A (2/6) _ _ SMP_USER_XRAM_ _ XRAMSEG FileCBGetData_fp: ds 2 ; size of obtained bitstream data [byte] 1 ; read pointer to host_in_buffer 1 ; write pointer to host_in_buffer 1 ; for saving value of dn0 register 1 ; for saving value of dmx register read_ptr: ds write_ptr: ds tmp_dn0: ds tmp_dmx: ds _ _ SMP_USER_BUFFER_ _ XRAMSEG align at 0 host_in_buffer: ds CW_BUFF_SIZE*2 ; buffer for input data from Host I/F input_buffer: ds CW_BUFF_SIZE ; buffer for input data to Middle Ware /* = * PROGRAM CODE * = */ _ _ SMP_USER_ _ IMSEG /* = [Function Name] Init_FileCBGetData [Argument] r0 : data size [Return] non [Call Function] non [Use Register] r0, dp0, dp1 [Use Stacks] loop stack: 1, call stack: 0, repeat: 0 =*/ Init_FileCBGetData: clr(r0) ; *FileCBGetData_fp+0:x = r0l ; *FileCBGetData_fp+1:x = r0l ; dn0 = r0l ; r0l = host_in_buffer ; *read_ptr:x = r0l ; *write_ptr:x = r0l ; dp0 = r0l ; r0l = input_buffer ; dp1 = r0l ; Loop CW_BUFF_SIZE { ; clear buffer *dp0+ = r0h ; *dp0+ = r0h ; *dp1+ = r0h ; } ; ret ; U15683JJ1V1UM U15683JJ1V1UM 57 A (3/6) /* = [Function Name] wmad_FileCBGetData [Argument] r0 : offset [byte] r0 [Return] : required size [byte] r1 : obtained size [byte] r2l : address of input buffer [Call Function] non [Use Register] r0, r1, r2, r3, r4, r5, r6 dp0, dp1, dn0, dmx [Use Stacks] loop stack: 1, call stack: 0, repeat: 0 =*/ wmad_FileCBGetData: r4l = dn0 ; *tmp_dn0:x = r4l ; r4l = dmx ; *tmp_dmx:x = r4l ; r4l = 1 ; dn0 = r4l ; r4l = 2*CW_BUFF_SIZE - 1 ; dmx = r4l ; r5 = *FileCBGetData_fp+0:x ; r5l= *FileCBGetData_fp+1:x ; r5 is always even. r4 = r5-r1 ; if(r4=0) jmp case000 ; if(r4>0) ; jmp case002 ;=; ; case001 ( r5 < r1 ) ;=; case001: r4 = -r4 ; r4 = r4 sra 1 ; r4 = read size [word] if(r4 r1 ) ;=; case002: r3 = r4 + 1 ; r3 = r3 sra 1 ; set r3 = rewind size [word] clr(r6) ; r6l= *write_ptr:x ; r6 = r6 - r3 ; r3 = r6 - host_in_buffer ; if(r3>=0) jmp case002a ; r6 = r3 + host_in_buffer + CB_BUFF_SIZE; case002a: *read_ptr:x = r6l ; set read_ptr r3 ; = r0 - r4 if(r38)&0xFF ; input high byte to host port wait 100ns ; access duration set pin hwr = 1 ; end input set pin hcs = 1 ; end access enddo ; ;-; ; File Close ;-; close input ; break ; end U15683JJ1V1UM U15683JJ1V1UM 65 A A. 3. 2smp_serout.tmg 16 PCM so_sample_20_16s_l.dat, so_sample_20_16s_r.dat9, 10 #1, #2 L R #1, #2 (1/3) ;-; ; Initialize ;-; set pin soen1 = 0 ; initialize SOEN1 line ;-; ; File Open ;-; open output #1 "so_sample_20_16s_l.dat" ; open output #2 "so_sample_20_16s_r.dat" ; open output #3 "dummy_serial.dat" ; output format showbase unsigned hex, ; select output format ;-; ; Dummy Output ;-; if pin soen1 = 0 ; do only if new transmission start wait cond pin sorq1 = 1 ; wait for serial output request wait 5 ns ; logic delay set pin soen1 = 1 ; start serial output endif wait cond pin sorq1 = 0 ; wait for serial output start confirmation set pin soen1 = 0 ; rept 15 ; wait 15 clock cycles for one data frame wait cond pin sck1 = 0 ; wait cond pin sck1 = 1 wait for rising edge (0->1) ; endrept ; wait 5ns ; make sure SO1 and SORQ1 are updated output #3 port so1&0xFFFF ; write output data to file, mask sign bits if pin sorq1 = 1 ; request next output set pin soen1 = 1 ; start next serial output endif 66 U15683JJ1V1UM U15683JJ1V1UM A (2/3) wait cond pin sck1 = 0 ; wait for rising edge (0->1) wait cond pin sck1 = 1 ; close output #3 ;-; ; Main Output Loop ;-; do ; ;-; ; For ch 1 ;-; if pin soen1 = 0 ; do only if new transmission start wait cond pin sorq1 = 1 ; wait for serial output request wait 5 ns ; logic delay set pin soen1 = 1 ; start serial output endif wait cond pin sorq1 = 0 ; wait for serial output start confirmation set pin soen1 = 0 ; rept 15 ; wait 15 clock cycles for one data frame wait cond pin sck1 = 0 ; wait cond pin sck1 = 1 ; wait for rising edge (0->1) endrept ; wait 5ns ; make sure SO1 and SORQ1 are updated output #1 port so1&0xFFFF ; write output data to file, mask sign bits if pin sorq1 = 1 ; request next output set pin soen1 = 1 ; start next serial output endif wait cond pin sck1 = 0 ; wait for rising edge (0->1) wait cond pin sck1 = 1 ; ;-; ; For ch 2 ;-; if pin soen1 = 0 ; do only if new transmission start wait cond pin sorq1 = 1 ; wait for serial output request wait 5 ns ; logic delay set pin soen1 = 1 ; start serial output endif wait cond pin sorq1 = 0 ; wait for serial output start confirmation set pin soen1 = 0 ; U15683JJ1V1UM U15683JJ1V1UM 67 A (3/3) rept 15 ; wait 15 clock cycles for one data frame wait cond pin sck1 = 0 ; wait cond pin sck1 = 1 ; wait for rising edge (0->1) endrept ; wait 5ns ; make sure SO1 and SORQ1 are updated output #2 port so1&0xFFFF ; write output data to file, mask sign bits if pin sorq1 = 1 ; request next output set pin soen1 = 1 ; start next serial output endif wait cond pin sck1 = 0 ; wait for rising edge (0->1) wait cond pin sck1 = 1 ; ;-; ; Serial Output is finished ? ;-; exit ip = (MAIN.serout_finish & 0xffff) ; exit ip = (MAIN.serout_finish+1) & 0xffff) ; enddo ;-; ; File Close ;-; close output #1 ; close data file close output #2 ; close data file break ; end 68 U15683JJ1V1UM U15683JJ1V1UM A A. 3. 3clk_for_2ch.tmg 2 ;-; ; Declare Variables ;-; LOCAL TM_pico_sec ; LOCAL fs ; LOCAL retern_addr ; ;-; ; Wait ;-; wait cond reg ip = (MAIN.serout_start) & 0xffff) ; ;-; ; Set Sampling Frequency and TM_pico_sec ;-; set fs = *sample_rate:x & 0xffff ; set TM_pico_sec = TIME_RESOLUTION / 16 / fs / 2 ; TIME_RESOLUTION = 10*12 ;-; ; Generate Clock for 2 ch ;-; do wait (TM_pico_sec/2) ps ; set pin sck1 = 0 ; set pin sck2 = 0 ; wait (TM_pico_sec/2) ps ; set pin sck1 = 1 ; set pin sck2 = 1 ; enddo U15683JJ1V1UM U15683JJ1V1UM 69 FAX E-mail 9:0012:00 1:005:00 044-435-9494 044-435-9608 info@lsi.nec.co.jp (03)3798-6106, 6107, 6108 (06)6945-3178, 3200, 3208, 3212 (082)242-5504 (022)267-8740 (03)3798-6110, 6111, 6112 (042)526-5981, 6167 (0263)35-1662 (054)254-4794 (076)232-7303 (03)3798-6151, 6155, 6586, 1622, 1623, 6156 (029)226-1702 (027)243-6060 (0857)27-5313 (052)222-2170, 2190 (092)261-2806 (089)945-4149 NEC NEC NECURL http://www.ic.nec.co.jp/ C02.1 µ SAP77016-B11 SAP77016-B11 U15683JJ1V1UM00 U15683JJ1V1UM00 1 1 2 3 4 5 NEC FAX NEC 044435-9608 FAX 2000.6