- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TOC \o 1-5 \h \z 一、 实习题目: 1
二、 实习目的 1
三、 实习任务与要求: 1
四、系统原理论述
五、 方案论证及系统设计 2
六、 一维DCT变换流程图 3
七、 程序模块源程序 4
八、 仿真调试及性能分析与实验 7
九、 实习结论 10
十、实习总结 10
十一、 : 11
一、实习题目:
离散余弦变换(DCT)的DSP程序设计与实现
二、 实习目的
1、 熟悉和掌握DCT设计方法跟步骤。
2、 通过仿真验证实现DCT的DSP程序的正确性。
3、 掌握专业实验中常用的仪器设备和开发工具。
4、 通过一周的设计实践培养学牛综合利用所学知识编写DSP程序的 能力,为今后的工作学习打下坚实的基础。
5、 掌握用DSP程序实现DCT的原理和方法。
6、 熟悉DCT原理。
三、 实习任务与要求:
利用C语言或汇编语言编写一个实现DCT的DSP程序
在CCS上仿真运行
查看分析结果,记录必要参数
四、系统原理论述
1、DCT原理
离散余弦变换(Discrete Cosine Transform,简称DCT变换)是一种与傅立叶 变换紧密相关的数学运算。在傅立叶级数展开式中,如果被展开的函数是实偶函 数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称
之为离散余弦变换。对于给定的实际数据序列x(0) ,X(1) ,x(2) ????X( N-l )
的DCT(FDCT)算法如下:
z(k)=2 N-l
z(k)=
2 N-l
伙)》兀(/2)COS
“=()
龙⑵2 + l)k
2N
其屮:
亦)=1 二维离散余弦变换for k H 0 (FDCT):z(k, /)(2—j a 伙)a( x(m, n) cosN_\ N_\;r(2m+ \)k
亦)=1 二维离散余弦变换
for k H 0 (FDCT):
z(k, /)
(2
—j a 伙)a( x(m, n) cos
N_\ N_\
;r(2m+ \)k
2N
cos
7r(2n + \)l
2N
其逆运算是:
n=() m=0
x(m, 71)=
z(k,l) cos
龙(2加+ \)k _IN
COS
龙(2〃 + 1)/
_2N
其中 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、 BO = R0;
B3 = R1;
B2 = R2;…
LSETUP (DCT_START, DCT_END) LCO = PO;
DCT START:-
LSETUP (ROW_START, ROW_END) LC1=P2;
ROW_START:…
ROW END:…
Bl = BO;
BO 二 B2;
DCT_END:B2 = Bl;
六、一维DCT变换流程图
七、程序模块源程序
DSP程序:
? mmregs
entry 〃INIT〃
*
def
sec t
*
Initialise
*
entry
NOP
NOP
SSBX
SXM
SSBX
OVM
LD
#0, DP
STM
OFFEOh, PMST
RSBX
FRCT
? include z,fdct_dat. inc
MODE
.SET
1
PAGEO
.SET
0
PAGE4
.SET
4
PAGE24
.SET
24d
PAGE25
.SET
25d
BO
.SET
0200h
Bl
.SET
0300h
B2
.SET
060h
PA1B1S
.SET
1
PA2BIS
.SET
2
PA3BTS
.SET
3
PA4BIS
.SET
4
PA5B1S
.SET
5
PA6BIS
.SET
6
* Initialization of t
文档评论(0)