离散余弦变换(DCT)的DSP程序设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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