📄 16ptdct.dsp
字号:
{ ONE DIMENSIONAL, FAST, DISCRETE COSINE TRANSFORM, 16 POINTS
Implementation:
as described by Hsieh S. Hou in IEEE Transactions on Acoustics,
Speech, and Signal Processing, Vol. ASSP-35, No. 10, October 1987
Target Processor:
ADSP-2100 family of DSP processors from Analog Devices, Inc.
Execution Benchmark:
318 instruction cycles -- ADSP-2101 -- 15.90 us at CLKIN=20.00Mhz
Memory Storage Requirement:
272 PM = 257 program memory code, 15 program memory data (coefficients)
32 DM = 16 data memory scratch pad, 16 data memory (16-pt vector)
Note: resulting transform coefficients written over original input data
assumes: unsigned 8-bit input data, signed 16-bit output coefficients
Author of Code:
Christoph D. Cavigioli -- DSP Applications Engineer -- (617) 461-3672
Release History:
27-March-1989, extensively revised: 17-July-1989
Revised: 23-July-1989
Revised for ADSP-2101 by Ron Coughlin 28-July-1993
Analog Devices, Inc., DSP Division, P.O.Box 9106, Norwood, MA 02062, USA
}
.module/ram/abs=0 fast_16pt_dct;
.var/pm/ram cosvals[15]; { cosine coefficients }
.var/circ/abs=0x3800 tmp[16]; { temporary scratch memory }
.var x[16]; { 16pt vector to transform }
.global tmp;
.external DIF16, DIF8, DIF4, DIF2, RLR4, RLR8, RLR16, DC_AND_BREV;
.init x: <fhex.dat>;
.init cosvals[00]: h#7F6200, h#70E200, h#513300, h#252800,
h#F37500, h#C3AA00, h#9D0E00, h#858300;
.init cosvals[08]: h#7D8A00, h#471C00, h#E70800, h#959300;
.init cosvals[12]: h#764100, h#CF0500;
.init cosvals[14]: h#5A8200;
{ interupt vector table }
rest: jump setup; rti; rti; rti; { jump here on reset }
rti; rti; rti; rti; { irq2 interrupt vector }
rti; rti; rti; rti; { sport0 tx interrupt vector }
rti; rti; rti; rti; { sport0 rx interrupt vector }
rti; rti; rti; rti; { sport1 tx interrupt vector }
rti; rti; rti; rti; { sport1 rx interrupt vector }
rti; rti; rti; rti; { timer interrupt vector }
setup: l0=0; l1=0; l2=0; l3=0; l5=0; l6=0;
dct16: i2=^x; i3=^x+15; i6=^cosvals;
m2=2; m3=-2; m5=1; m6=1; m7=-3;
se=1;
call DIF16;
call DIF8;
call DIF4;
call DIF2;
call RLR4;
call RLR8;
call RLR16;
i5=^x;
call DC_AND_BREV;
idwait: idle;
jump idwait;
.endmod;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -