离散余弦变换(DCT)的DSP程序设计与实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

D S P课程设计论文

题目离散余弦变换(DCT)的DSP实现

专业电气工程及其自动化

姓名陈梦泽班级 11东电气

学号 ******** 执行学期 2014-2015

离散余弦变换(DCT)的DSP实现

一、实验目的

1. 掌握离散余弦变换的概念和实现方法;

2. 掌握用 C 语言或汇编语言编写 DSP 程序的方法;

3. 熟悉DCT原理;

二、实验设备

1. 一台装有 CCS 软件的计算机;

2. DSP 实验箱的TMS320C5410 主控板;

3. DSP 硬件仿真器;

三、实验原理论述

1、原理

离散余弦变换(Discrete Cosine Transform,简称DCT变换)是一种与傅立叶变换紧密相关的数学运算。在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。对于给定的实际数据序列x(0),X(1) ,x(2)....

X( N-1 )的DCT(FDCT)算法如下:

z(k)

N ()()cos

()

=

+

⎣⎢

⎦⎥

=

-

221

2

1

α

π

k x n

n k

N

n

N

(1)

其中:

αα()

()

k

k

=

=≠

1

2

for k=0

1 for k0

(2)

二维离散余弦变换(FDCT):

z(k,)()()(,)cos ()

cos

()

l

N k l x m n

m k

N

n l

N

m

N

n

N

=⎛

+

⎣⎢

⎦⎥

+

⎣⎢

⎦⎥

=

-

=

-

221

2

21

2

1

1

αα

ππ

(3)

其逆运算是:

x m n

N k l z k l

m k

N

n l

N

l

N

k

N

(,)()()(,)cos ()

cos

()

=⎛

+

⎣⎢

⎦⎥

+

⎣⎢

⎦⎥

=

-

=

-

221

2

21

2

1

1

αα

ππ

(4)

其中 N= 8 为 8x8 DCT.

2、DCT的DSP 程序设计

无论是C语言还是汇编语言,程序流程均分为初始化、行变换、列变换和移位输出四个步骤。行、列变换具有相似性,如果对行变换的结果矩阵转置,则列变换程序跟行变换一样。对于汇编而言,初始化部分主要初始化FP指针以指向前一函数地址,初始化数据和指针寄存器以保存返回数据等。由于DCT行变和列变换过程相似,且列变换是在行变换操作的基础上进行的。则可利用多种索引寻址寄存器的灵活组合,把行变换结果直接以转置方式存储而不增加实际的存储时间,这样行列变换可使用同一代码循环两次实现,减小了实际代码大小。本程序实现的是FDCT,可以使用2次一维DCT变换来实现二维DCT变换。

3、DCT的DSP实现

二维DCT 变换时结果为两次无理数sqrt(8)相乘,产生了有理项,因此,在程序里首先多乘一次sqrt(8),然后在两次DCT 变换结束以后,使用右移3位以达到正常输出。

四、方案论证及系统设计

本次实习有两种方案,C语言和汇编语言实现,由于考虑到DSP程序的特点,我采用汇编语言实现。

1.打开CCS软件,编制程序简化行列变换的代码如下:

2.B0 = R0;

B3 = R1;

B2 = R2; …

LSETUP (DCT_START, DCT_END) LC0 = P0;

DCT_START:…

LSETUP(ROW_START,ROW_END)LC1=P2;

ROW_START: …

ROW_END:…

B1 = B0;

B0 = B2;

DCT_END:B2 = B1;

五、一维DCT变换流程图

六、程序模块源程序

DSP程序:

.mmregs

.def entry

.sect "INIT"

*

* Initialise

*

entry NOP

NOP

SSBX SXM ; set sign extension mode

SSBX OVM ; enable saturation

LD #0, DP ; set data page

STM 0FFE0h, PMST ; Init PMST reg.

RSBX FRCT

.include "fdct_dat.inc" ; FDCT data storage declaration MODE .SET 1 ; MODE=1 TEST ON SIMULATOR PAGE0 .SET 0

PAGE4 .SET 4

PAGE24 .SET 24d

PAGE25 .SET 25d

B0 .SET 0200h

B1 .SET 0300h

B2 .SET 060h

PA1BIS .SET 1

PA2BIS .SET 2

PA3BIS .SET 3

PA4BIS .SET 4

PA5BIS .SET 5

相关文档
最新文档