离散余弦变换(DCT)的DSP程序设计与实现
基于DSP的AVS IDCT的研究与实现

; i重要的意义 本 文主要研究 了 I C D T在 D P上的一种快速实现方 S }台, 根据 D P的特性和存储结构的特点 , S 实现了一种适合该心片 + t -
I
}性能 。
{ l关键词 A S D T S 快速实现 V IC D P
{
1 引言
0.dBl。 1 3 1
图 1 A 视 频 解 码 框 图 VS
码 和环 路 滤波 这 四个 主要 的模 块 。而 运动 估计 所 占 求 。 因此 , C I T算法的好坏 , D 对于实时图像处理的意 用 的 时间 长 主要 受数 据 搬动 的影 响而非 计算 ,因此 义是 非 常大 的 , 同时 IC D T变换 在 图像 处理 中所 占的 对 IC D T算法 实现 的研 究对 A S 码有 着 十分 重 要 计算量也比较大 ,因此算法 的改进能够给解码带来 V 解
维普资讯
基 于 DS 的 AV DC P S I T 的
王 斑 周 剑 扬
( 门大 学 电 子 工 程 系 厦 门 3 10 ) 厦 6 0 5
—
——
—
~
一
—
—
—
—
…
——
——
’
~
一
’ 变换是数字音视频解码算法的关键模块 , 研
一
。
的应用 , 着相 当乐 观 的产业 前景 , 如 何在 硬 件上 有 而 实 现 A S 时编 解码一 直成 为研 究 的热点 。 V 实
码流经过熵解码得到相应的控制信息和压缩图 像 数 据 , 得 到 的图像 数据 逆 扫描 得 到量化 系 数 , 将 量
由于视 频解 码 的运算 复杂 度很 高 , 目前 的很 多 化 系数经过反量化和反变换得到残差系数 ,残差系 研 究都 是 基 于 A S M 解码 或是 基 于 H. 4的 Q I 数加 上预 测 的结 果得 到重 构数 据 ,再 经过 环 路滤 波 V 2 6 CF 等 小窗 口帧 解码 , 变换 算法 针 对 的是 4x4的数 据 去块效应 , 反 得到最终的图像数据 。 P 在 c上根据该框 块 。 同于 H24的 I C 不 .6 D T算法 ,V A S采 用 8x8整数 图实 现 A S的解 码 , 通 过 对 码 流 进行 分 析 , 到 V 并 得 变 换 ,去 除 相 关 性 较 强 , 实 际 编 码 效 率 提 高 约 A 解 码 的瓶 颈 主要在 运 动补偿 , VS 反变 换 , 变长 解 可
离散余弦变换程序

基于离散余弦变换(DCT)实现图像压缩程序:
I=imread('cameraman.tif');
imshow(I);
title('原始图像')
disp('原始图像大小:')
whos('I')
I=im2double(I); %图像类型存储转换,将图像矩阵转换成双精度类型T=dctmtx(8); %离散余弦变换矩阵
B=blkproc(I,[8 8],'P1*x*P2',T,T');
Mask=〔11110000
11100000
11000000
10000000
00000000
00000000
00000000
00000000〕;
B2=blkproc(B,[8 8],'P1.*x', mask); %数据压缩,丢弃右下角高频数据
I2=blkproc(B2,[8 8],'P1*x*P2',T',T); %进行DCT反变换,得到压缩后的图像figure;
imshow(I2);title('压缩后的图像')
disp('压缩图像的大小:')
whos('I2')
程序运行结果:
从运行结果可以看出,DCT变换虽然可以得到良好的图像质量,但压缩率并不大。
但通过对比可以看出,经过DCT压缩后,图像的绝大部分能量都得到了很
好的保留,所以重构图像的时候才能保证重构以后的图像有很少的失真。
离散余弦变换(DCT)的DSP程序设计与实现

目录一、实习题目: (1)二、实习目的 (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原理。
三、实习任务与要求:(1)利用C语言或汇编语言编写一个实现DCT的DSP程序(2)在CCS上仿真运行(3)查看分析结果,记录必要参数四、系统原理论述1、DCT原理离散余弦变换(Discrete Cosine Transform,简称DCT变换)是一种与傅立叶变换紧密相关的数学运算。
在傅立叶级数展开式中,如果被展开的函数是实偶函数,那么其傅立叶级数中只包含余弦项,再将其离散化可导出余弦变换,因此称之为离散余弦变换。
对于给定的实际数据序列x(0),X(1) ,x(2).... X( N-1 )的DCT(FDCT)算法如下:z(k)N ()()cos()=+⎡⎣⎢⎤⎦⎥=-∑22121απk x nn kNnN(1)其中:αα()()kk==≠12for k=01 for k0(2)二维离散余弦变换(FDCT):z(k,)()()(,)cos ()cos()lN k l x m nm kNn lNmNnN=⎛⎝⎫⎭⎪+⎡⎣⎢⎤⎦⎥+⎡⎣⎢⎤⎦⎥=-=-∑∑221221211ααππ(3)其逆运算是:x m nN k l z k lm kNn lNlNkN(,)()()(,)cos ()cos()=⎛⎝⎫⎭⎪+⎡⎣⎢⎤⎦⎥+⎡⎣⎢⎤⎦⎥=-=-∑∑221221211ααππ(4)其中N= 8 为8x8 DCT.2、DCT的DSP 程序设计无论是C语言还是汇编语言,程序流程均分为初始化、行变换、列变换和移位输出四个步骤。
一种用dsp实现离散余弦变换的方法

一种用dsp实现离散余弦变换的方法离散余弦变换(DiscreteCosineTransform)是一种数字图像处理和数字信号处理技术,它对最近一段时间范围内的一系列数据(例如帧)进行变换,以得到它们的频谱,并以此构建相应的滤波器。
DCT 的应用特别广泛,从图像处理的JPEG编码/解码到语音信号处理的量化和编码/解码,都用到了DCT。
随着数字信号处理(DSP)技术的发展,DCT的实现变得更加容易。
DSP技术使DCT更加有效,可以在更少的时间内实现更多复杂的操作,使特定的应用程序更加高效。
文将介绍一种使用DSP实现DCT的方法。
一种使用DSP实现DCT的方法是基于离散余弦重构(DCR)算法,它可以提高DCT的运行速度多倍。
DCR算法将DCT的复杂运算量分解成一系列简单的数学运算,如乘法和加法,其中每一步都可以单独实现,以便更快地执行此操作。
DCR算法的基本思想是,“将同一帧里的点分解成多个小帧,再将每个小帧进行一次DCT变换”。
先,将要处理的源数据划分成若干幅图像,称为子图。
每一幅图像都可以单独处理,对其进行DCT变换。
然后,将这些子图合并成一幅变换后的DCT图像。
这样就可以获得较高的变换速度。
与常规的DCT算法相比,DCR算法的复杂性较小,因为只需要考虑简单的乘法和加法操作,从而大大提高了DCT的运行效率。
DCR算法的变换速度要比常规的DCT算法快得多,因为只需要处理较少的子图像,而不是处理完整图像。
为了在DSP中实现DCT,我们需要考虑优化技术。
优化技术很重要,可以帮助提高DCT的运行效率。
例如,使用DCR算法,可以有效地优化计算,帮助提高DCT运行效率。
外,也可以使用其他优化技术,如抖动和矢量重新排列,以更有效地执行DCT变换。
总的来说,DCT的实现受到DSP技术的贡献,使之更加易于实现。
使用DCR算法,将DCT的复杂运算量分解为简单的数学运算。
此外,优化技术也有助于提高DCT的运行效率。
离散余弦变换原理特点及程序

1 离散余弦变换(Discrete Cosine Transform ,DCT)原理1)离散余弦变换定义(1)一维离散余弦变换的定义由下式表示:式中F(u)是第u 个余弦变换系数,u 是广义频率变量,u=1,2,3.....N-1,f(x)是时域N 点序列,x=0,1,2...N-1(2)一维离散余弦反变换由下式表示:(3)二维离散余弦变换的定义由下式表示:最后的式子是正变换公式。
其中f(x,y)是空间域二维向量之元素,其中x,y=0,1,2...N-1, F(u,v)是变换系数阵列之元素。
式∑-==10)(1)0(N x x f N F N u x x f N u F N x 2)12(cos )(2)(10π+=∑-=N u x u F N F N x f N u 2)12(cos )(2)0(1)(11π++=∑-=Nv y N u x y x f N v u F Nu x y x f N u F N v y y x f N v F y x f N F N x N y N y N x N x N y N x N y 2)12(cos 2)12(cos ),(2),(2)12(cos ),(2)0,(2)12(cos ),(2),0(),(1)0,0(1010101010101010ππππ+⋅+=+=+⋅==∑∑∑∑∑∑∑∑-=-=-=-=-=-=-=-=中表示的阵列为N ×N 。
(4)二维离散余弦反变换由下式表示:2) 性质: (1)余弦变换是实数、正交。
(2)离散余弦变换可由傅里叶变换的实部求得(3)对高度相关数据,DCT 有非常好的能量紧凑性(4)对于具有一阶马尔可夫过程的随机信号,DCT 是K-L 变换的最好近似2 离散余弦变换Matlab 实现(1)二维离散余弦变换f=imread('trees.tif');f=im2double(f);F=dct2(f);subplot(121),imshow(f,[]);subplot(122),imshow(log(1+20*abs(F)),[])Nv y N u x v u F N N u x u F N N v y v F N F N y x f N u N v N u N v 2)12(cos 2)12(cos ),(22)12(cos )0,(22)12(cos ),0(2)0,0(1),(11111111ππππ+⋅++++++=∑∑∑∑-=-=-=-=图1 原图以及进行离散变换后图对比再进行逆变换:I=idct2(F);subplot(121),imshow(f);subplot(122),imshow(I)图2 原图与恢复后的图对比将数据进行压缩再逆变换:CLFf=imread('cameraman.tif');F=dct2(f);F(abs(F)<50)=0;k=idct2(F);subplot(121),imshow(f,[]);subplot(122),imshow(k,[])图3 对比图(2)将输入图像分解成8×8的图像块,然后对每个图像块进行DCT 变换,保留64个DCT系数部分,然后通过压缩保存数据。
javadct_DCT(离散余弦变换)算法原理和源码

javadct_DCT(离散余弦变换)算法原理和源码离散余弦变换(Discrete Cosine Transform,简称DCT)是一种常用的信号处理技术,广泛应用于图像和音频压缩领域。
DCT将输入的离散信号转换为一组系数,这些系数代表了信号的频域特征。
在压缩领域中,DCT可将信号从时域转换为频域,通过舍弃一些高频系数实现信号的压缩。
DCT算法的原理基于傅里叶变换(Fourier Transform)的思想,将时域信号转换为频域信号。
然而,与傅里叶变换相比,DCT更适合处理实数信号,因为它只使用实数运算,而不需要复数运算。
DCT算法的一般步骤如下:1.将输入的离散信号分为若干个块,每个块包含N个采样点。
2.对每个块进行预处理,例如减去均值。
3.对每个块进行DCT变换。
4.根据需要舍弃一些高频系数。
5.对经过舍弃的系数进行逆DCT变换,恢复原始信号。
下面是一个简单的离散余弦变换的Python实现:```pythonimport numpy as npdef dct_transform(signal):N = len(signal)dct_coef = np.zeros(N)for k in range(N):sum = 0for n in range(N):sum += signal[n] * np.cos((np.pi/N)*(n+0.5)*k)dct_coef[k] = sumreturn dct_coefdef idct_transform(dct_coef):N = len(dct_coef)signal = np.zeros(N)for n in range(N):sum = 0for k in range(N):sum += dct_coef[k] * np.cos((np.pi/N)*(n+0.5)*k)signal[n] = sum / Nreturn signal```以上是一个简单的DCT变换和逆变换的实现,其中`dct_transform`函数接受输入信号并返回DCT系数,`idct_transform`函数接受DCT系数并返回恢复的原始信号。
DCT离散余弦变换

DCT 离散余弦变换离散余弦变换(DCT)是N.Ahmed等人在1974年提出的正交变换方法。
它常被认为是对语音和图像信号进行变换的最佳方法。
为了工程上实现的需要,国内外许多学者花费了很大精力去寻找或改进离散余弦变换的快速算法。
由于近年来数字信号处理芯片(DSP)的发展,加上专用集成电路设计上的优势,这就牢固地确立离散余弦变换(DCT)在目前图像编码中的重要地位,成为H.261、JPEG、MPEG等国际上公用的编码标准的重要环节。
在视频压缩中,最常用的变换方法是DCT,DCT被认为是性能接近K-L变换的准最佳变换,变换编码的主要特点有:(1)在变换域里视频图像要比空间域里简单。
(2)视频图像的相关性明显下降,信号的能量主要集中在少数几个变换系数上,采用量化和熵编码可有效地压缩其数据。
(3)具有较强的抗干扰能力,传输过程中的误码对图像质量的影响远小于预测编码。
通常,对高质量的图像,DMCP要求信道误码率,而变换编码仅要求信道误码率。
DCT等变换有快速算法,能实现实时视频压缩。
针对目前采用的帧内编码加运动补偿的视频压缩方法的不足,我们在Westwater等人提出三维视频编码的基础上,将三维变换的结构应用于视频图像压缩,进一步实现了新的视频图像序列的编码方法。
在基于DCT变换的图像压缩编码方法中,对DCT系数必须做量化处理。
量化过程是一个多对一的映射,例如对一个8×8块的64个DCT变换系数分别除以量化步长后取整。
由于大多数DCT变换系数量化后变为零,因而达到压缩的目的。
由于在量化过程中用到除法,因此通常需要进行浮点运算。
但是,可进行浮点运算的数字信号处理器(DSP)芯片结构比定点DSP芯片复杂,价格一般也比定点DSP芯片高很多。
所以数字图像处理系统中通常采用定点DSP芯片来完成图像压缩运算,这种方法已经成为数字图像处理技术的的一个趋势。
可用于数字图像处理的比较好的定点DSP芯片有德州仪器公司新一代高性能定点DSP芯片TMS320C6200系列。
毕业设计(论文)-dct快速算法分析及在图像压缩编码中的应用[管理资料]
![毕业设计(论文)-dct快速算法分析及在图像压缩编码中的应用[管理资料]](https://img.taocdn.com/s3/m/8298240c700abb68a882fb8e.png)
DCT快速算法分析及在图像压缩编码中的应用Application of DCT Fast Algorithm Analyse in ImageCompression Code专业:电子信息科学与技术学号:03111230姓名:指导教师:目录内容摘要 (I)Abstract ........................................................................................................................ I I 第一章离散余弦变换 . (3)引言 (3)离散余弦变换定义 (3)DCT的算法 (4)DCT快速算法的研究 (4)第二章图像压缩编码的综述 (5)图象压缩的目的和方法 (5)图象压缩的目的 (6)图象压缩的几种方法 (6) (8)第三章JPEG编码算法 (8)JPEG压缩编码基础 (8)JPEG算法于JPEG小组简介 (9)JPEG压缩 (9)JPEG中的二维DCT (10)DCT的实现 (11)第四章压缩过程 (13)DCT的输出 (13)量化 (14) (14)量化矩阵的选择 (14)编码 (16)Zig-Zag序列 (16)熵编码 (17)结束语 (20)参考文献 (21)致谢 (23)内容摘要本文主要介绍两个方面:DCT快速算法和图像压缩编码。
首先介绍离散余弦变换的定义及其变换方法,并介绍离散余弦变换的几种快速算法,提出六种离散余弦变换的快速算法. 其次讲述图像压缩(JPEG)的目的和编码算法的基本原理,分析图象压缩编码的几种应用方法,着重说明DCT算法在图象压缩中的广泛应用。
以及离散余弦变换(DCT)算法在图像压缩编码中的实现过程。
利用离散余弦变换的某些特点去减少搜索块的数目和缩小搜索块的范围两方面减少分形图像的编码时间。
为了减少对图像的质量影响,对于编码恢复的图像采用了图像平滑的处理方式减少块效应并提出最恰当一种快速算法应用于图像压缩编码中。
- 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()=+⎡⎣⎢⎤⎦⎥=-∑22121απk x nn kNnN(1)其中:αα()()kk==≠12for k=01 for k0(2)二维离散余弦变换(FDCT):z(k,)()()(,)cos ()cos()lN k l x m nm kNn lNmNnN=⎛⎝⎫⎭⎪+⎡⎣⎢⎤⎦⎥+⎡⎣⎢⎤⎦⎥=-=-∑∑221221211ααππ(3)其逆运算是:x m nN k l z k lm kNn lNlNkN(,)()()(,)cos ()cos()=⎛⎝⎫⎭⎪+⎡⎣⎢⎤⎦⎥+⎡⎣⎢⎤⎦⎥=-=-∑∑221221211ααππ(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 NOPNOPSSBX SXM ; set sign extension modeSSBX OVM ; enable saturationLD #0, DP ; set data pageSTM 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 0PAGE4 .SET 4PAGE24 .SET 24dPAGE25 .SET 25dB0 .SET 0200hB1 .SET 0300hB2 .SET 060hPA1BIS .SET 1PA2BIS .SET 2PA3BIS .SET 3PA4BIS .SET 4PA5BIS .SET 5PA6BIS .SET 6* Initialization of the registers.sect "FDCT"INIT LD #PAGE24, DPST #21407, E_P6ST #8867, F_P6ST #2000H, ROUND1TBL: LD #PAGE25, DPST #21407, E_P7ST #8867, F_P7ST #4000H, ROUND2ST #40H, ROUND3START* IF MODE = SIMULATOR.IF MODE=1STM #63, AR0 ; AR0= # of inputs to be taken - 1 STM #X, AR1 ; AR1= address of first input BEG PORTR #PA1BIS, *AR1+ ; Read and store to addr(AR1)BANZ BEG, *AR0- ; Repeat above code 64 times; till all 64 pixels are read .ENDIFSTM #3, AR0STM #X, AR1 ; Reset AR1 to first inputSTM #Y00, AR2 ; Set AR2 to first Y blockDCT1 NOPNOPLD #PAGE24, DPLD *AR1+, 4, A ; + (16)*(X0)ADD *AR1+, 4, A ; + (16)*(X1)ADD *AR1+, 4, A ; + (16)*(X2)ADD *AR1+, 4, A ; + (16)*(X3)ADD *AR1+, 4, A ; + (16)*(X4)ADD *AR1+, 4, A ; + (16)*(X5)ADD *AR1+, 4, A ; + (16)*(X6)ADD *AR1, 4,A ; + (16)*(X7)STL A, Y00 ; = Y00RPTZ A, #7MACP *AR1-, COEF_F1, ASFTA A, 4MAR *AR1+ ; (64)[A*X0+B*X1+C*X2-D*X3-D*X4ADD ROUND1, A ; -C*X5-B*X6-A*X7] + 4*ROUND1STH A, 2, Y01 ; = Y01LD ROUND1, -4, A ; (ROUND1)/16LD E_P6, TMAC *AR1+0, A ; + X0*E_P6MAS *AR1+, A ; - X3*E_P6MAS *AR1+0, A ; - X4*E_P6MAC *AR1-, A ; + X7*E_P6LD F_P6, TMAC *AR1-, A ; + X6*F_P6MAS *AR1-0, A ; - X5*F_P6MAS *AR1-, A ; - X2*F_P6MAC *AR1-, A ; + X1*F_P6 STH A, 6, Y02 ; Multiply prev summation by 16; = Y02RPTZ A, #7MACP *AR1+, COEFF2, A ;64(B*X0-D*X1-A*X2-C*X3+C*X4+A*X5SFTA A, 4MAR *AR1-ADD ROUND1, A ; +D*X6-B*X7) + 4*ROUND1STH A, 2, Y03 ; = Y03LD *AR1-, 4, A ; X7*16SUB *AR1-, 4, A ; - X6*16SUB *AR1-, 4, A ; - X5*16ADD *AR1-, 4, A ; + X4*16ADD *AR1-, 4, A ; + X3*16SUB *AR1-, 4, A ; - X2*16SUB *AR1-, 4, A ; - X1*16ADD *AR1, 4, A ; + X0*16STL A, Y04 ; = Y04RPTZ A, #7MACP *AR1+, COEFF3, A ; 8(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5 SFTA A, 4 ; +C*X6-D*X7)MAR *AR1-ADD ROUND1, A ; + 4*ROUND1STH A, 2, Y05 ; = Y05LD ROUND1, -4, A ; (ROUND1)/16LD F_P6, TMAC *AR1-0, A ; + F_P6*X7MAS *AR1-, A ; - F_P6*X4MAS *AR1-0, A ; - F_P6*X3MAC *AR1+, A ; + F_P6*X0LD E_P6, TMAS *AR1+, A ; - E_P6*X1MAC *AR1+0, A ; + E_P6*X2MAC *AR1+, A ; + E_P6*X5MAS *AR1+, A ; - E_P6*X6STH A, 6, Y06 ; Multiply prev summation by 16; = Y06RPTZ A, #7MACP *AR1-, COEF_F4, A ;64(D*X0-C*X1+B*X2-A*X3+A*X4-B*X5SFTA A, 4 ; +C*X6-D*X7)MAR *AR1+ADD ROUND1, A ; + 4*ROUND1STH A, 2, Y07 ; = Y07MAR *+AR1(8) ; Set AR1 to point to the next set ; of 8 inputsDCT3 NOPNOP** PLACE FDCT COEFFICIENTS IN FILE POINTED BY PA2.IF MODE=1STM #63, AR0 ; AR0= # of outputs - 1STM #Z00, AR1 ; AR1= addr of first outputBEG1 PORTW *AR1+, #PA2BIS ; Send output valueBANZ BEG1, *AR0- ; Repeat above process (64x) .ENDIFEXIT NOPB START ; Go to start of program.; Grab another 64 pixelsCOEF_F1 .WORD -22725,-19266,-12873,-4520,4520,12873,19266,22725COEFF2 .WORD 19266,-4520,-22725,-12873,12873,22725,4520,-19266 COEFF3 .WORD 12873,-22725,4520,19266,-19266,-4520,22725,-12873 COEF_F4 .WORD -4520,12873,-19266,22725,-22725,19266,-12873,4520 * with: A = cos(?16)*?*16384 = 22725* B = cos(3?16)*?*16384 = 19266* C = cos(5?16)*?*16384 = 12873* D = cos(7?16)*?*16384 = 4520* E = cos(?8)*?*16384 = 21407* F = cos(3?8)*?*16384 = 8867*.END链接文件:-m fdct.map-o fdct.out-e entryfdct.objMEMORY{PAGE 0: OCDARAM1: origin = 00080h length = 00880h /* on-chip DARAM */OCDARAM2: origin = 00900h length = 00300hOCDARAM4: origin = 00C00h length = 00400hOCDARAM5: origin = 01000h length = 00400hEXTERNAL: origin = 01400h length = 0EB80hINTRVECS: origin = 0FF80h length = 00079hPAGE 1: MMREGS: origin = 00000h length = 00060hSPRAM: origin = 00060h length = 00020hOCDARAM1: origin = 00080h length = 00400h /* on-chip DARAM */OCDARAM2: origin = 00480h length = 0077FhOCDARAM4: origin = 00C00h length = 00400hOCDARAM5: origin = 01000h length = 00400hEXTERNAL: origin = 01400h length = 0EC00h}SECTIONS{INIT > OCDARAM1 PAGE 0FDCT > OCDARAM1 PAGE 0.bss > OCDARAM4 PAGE 1}七、仿真调试及性能分析与实验1.开电,运行CCS软件,打开项目文件fdct.prj,编译运行并下载。