西工大DSP大作业.docx
- 文档编号:13934823
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:18
- 大小:475.68KB
西工大DSP大作业.docx
《西工大DSP大作业.docx》由会员分享,可在线阅读,更多相关《西工大DSP大作业.docx(18页珍藏版)》请在冰点文库上搜索。
西工大DSP大作业
西工大DSRt作业
实验1基于CCS的简单的定点DSF程序
一、实验要求
1、自行安装CCS3.3版本,配置和运行CCS
2、熟悉CCS开发环境,访问读写DSP勺寄存器AC0-AC3AR0-AR7,
PC,T0-T3
3、结合C5510的存储器空间分配,访问DSR的内部RAM
4、编写一个最简单的定点DSP程序,计算下面式子
y=0.1*1.2+35*20+15*1.6
5、采用定点DSP进行计算,确定每个操作数的定点表示方法,最后结果的定点表示方法,并验证结果
6、对编写的程序进行编译、链接、运行、断点执行、单步抽并给出map映射文件
二、实验原理
DSP芯片的定点运算---Q格式(转)2008-09-0315:
47DSP芯片的
定点运算
1.数据的溢出:
1>溢出分类:
上溢(oveflow):
下溢(underflow)
2>溢出的结果:
MaxMin
MinMaxunsignedchar0255signedchar-128127unsigned
int065535signedint-3276832767
上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。
例:
signedint:
32767+1=—32768;-32768-1=32767
unsignedchar:
255+1=0;0-1=255
3>为了避免溢出的发生,一般在DSP中可以设置溢出保护功能。
当
发生溢出时,自动将结果设置为最大值或最小值。
2.定点处理器对浮点数的处理:
1>定义变量为浮点型(float,double),用C语言抹平定点处理器和浮点处理器
2>放大若干倍表示小数。
比如要表示精度为0.01的变量,放大100倍去运算,
3>定标法:
Q格式:
通过假定小数点位于哪一位的右侧,从而确定小
数的精度。
Q0:
小数点在第0位的后面,即我们一般采用的方法Q15小数点在第15位的后面,0~14位都是小数位。
转化公式:
Q=(int)
(FXpow(2,q))F=(float)(Qxpow(2,—q))
3.Q格式的运算
1>定点加减法:
须转换成相同的Q格式才能加减
2>定点乘法:
不同Q格式的数据相乘,相当于Q值相加
3>定点除法:
不同Q格式的数据相除,相当于Q值相减
4>定点左移:
左移相当于Q值增加
5>定点右移:
右移相当于Q减少
4.Q格式的应用格式
实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。
所以要选择一个适当的定标格式才能更好的处理运算。
一般用如下两
种方法:
1>
用时使用适中的定标,既可以表示一定的整数复位也可以表示小
数复位,如对于2812的32位系统,使用Q15格式,可表示—
65536.0〜65535.999969482区间内的数据。
三、实验步骤
启动CCS勺仿真平台的配着
选项。
选择C5410DeviceSimulator。
2.点击project菜单栏的new选项,新建一个LAB的工程注意存储的路径。
3.把下图中用到的文件拷到工程文件目录的文
WindersNr金令脚吕1KB
^LAB^IAASM:
ASM袁件jhKBi
件路径下
lab^a.Rjt
MicrosoftVfiUdFoxP「口旷可旦ct1KB
4.在ccs平台中将用到的程序导入到平台中,点击project—>addfiletoproject。
选择多
个文件时,可以按住ctrl键。
5•将程序中的start改为_main,INT_2改为
」nt_2。
然后点击保存。
源程序代码
example.asm
y=0.1*x1.2+35*20+15*x1.6
***************************************************
***************************************************
.title
“example.asm
”;为汇编源程序取名
.mmregs;
定义存储器映象寄存器
STACK.usect“
STACK,10h;分配10个单元的堆栈空间
.bss
a,4;
为系数a分配4个单元的空间
.bss
x,4;
为变量x分配4个单元的空间
.bss
y,1;
为结果y分配1个单元的空间
.def
_c_int00;
定义标号_c_int00
.data
J
定义数据代码段
table:
.word1,2,3,4;
在标号table开始的8个单兀中
.word8,6,4,2;
为这8个单元赋初值
定义文本代码段
.text
_c_intOO:
STM#STACK+10h,SP;设置堆栈指针初值
STM
#a,AR1
;AR1指向a的地址
RPT
#7
;从程序存储器向数据存储器
MVPD
table,*AR1+
;重复传送8个数据
CALL
SUM;
调用SUM实现乘法累加和的子程序
end:
B
end
;循环等待
SUM:
STM#a,AR3
;将系数a的地址赋给AR3
STM#x,AR4
;将变量x的地址赋给AR3
RPTZA,#3;
将A清0,并重复执行下条指令4次
MAC*AR3+,*AR4+,A
;执行乘法并累加,结果放在A中
STLA,@y
;将A的低字内容送结果单元y
RET
;结束子程序
.end
;结束全部程序
Map文件
**********************************************************
*******************
TMS320C55XCOFFLinkerPCVersion3.83
**********************************************************
********************
>>LinkedMonMay3111:
03:
332010
OUTPUTFILENAME:
ENTRYPOINTSYMBOL:
"_main"address:
0000e000
MEMORYCONFIGURATION
nameoriginlength
PAGE0:
EPROM
0000001dRWIXvecs
00000000RWIX
PAGE1:
SPRAM
0000000bRWIX
DARAM
0000e00000000100
0000ff8000000004
0000006000000020
0000008000000100
usedattrfill
0000001aRWIX
SECTIONALLOCATIONMAP
outputattributes/
sectionpageorigin
length
inputsections
.text
0OOOOeOOO
0000001d
OOOOeOOO
0000001d
LAB4A.obj
(.text)
.bss
100000060
0000000b
UNINITIALIZED
四、心得体会
经过这次实验,我更加熟悉CCS开发环境,访问读写DSP的寄存
器AC0-AC3ARO-AR7,PC,T0-T3。
实验2CCS下的FFT算法程序设计
验目的
验要求
提供一个CCS下的C语言例程,在CCSF,仿照例程,任选雨中FIR滤波、IIR滤波、FFT算法,采用C语言完成代码的编写、编译、链接、下载和运行,输入数据,滤波器系数任选,并给出运算结果。
1)目的
2)工程文件的构成,并附图
3)打印源代码
4)打印编译成功的信息
5)打印map文件
6)程序下载的截图过程
三)
行结果
三、
验步骤
1、在ccs平台中将用到的程序导入到平台中,点击project—>add
⑦区
2.将所有的程序段中的start改为_main,将fft.Asm中的
K_FFT_SIZE.set32;N
K_LOGN
.set5;LOG(N)
改为
K_FFT_SIZE.set64;N
K_LOGN.set6;LOG(N)
4.点击菜单fileloadprogram。
装载.out文件
四、
口X
AutoS
n
■
(ITS.781,2195.7JFFTMag
验结果
程序代码
**********************************************************
*******
函数原型:
voidFFT(structcompx*xin,intN)
函数功
f,m,nv2,nm1,i,k,l,j=0;
structcompxu,w,t;
nv2=FFT_N/2;//
倒位序,采用雷德算法
nm1=FFT_N-1;
for(i=0;i {if(i {t=xin[j]; xin[j]=xin[i]; xin[i]=t;} k=nv2;// while(k<=j)// { j=j-k;// k=k/2;//k/2 比较,直到某个位为0} 能: 对输入的复数组进行快速傅里叶变换(FFT)输入参数: *xin复数结构体组的首地址指针,struct型 ********************************************************** *******/voidFFT(structcompx*xin){int 变址运算,即把自然顺序变成 如果i 求j的下一个倒位序 如果k<=j,表示j的最高位为1 j=j+k; // 把0改为1} 把最高位变成0 ,比较次高位,依次类推,逐个 {intle,lei,ip; 核,使用蝶形运算完成 f=FFT_N; 〃FFT 运算 FFT运算 for(l=1; (f二f/2)! =1;l++)// 数; for(m=1;m<=l;m++) 数 {//m 形,l为蝶形级总数 l=log (2)Nle=2<<(m-1); 计算l的值,即计算蝶形级 //控制蝶形结级 表示第m级蝶 //le 蝶形结距离,即第m级蝶形的蝶形结相距le点 lei=le/2;// 运算的两点的距离 u.real=1.0;//u 数,初始值为1 u.imag=0.0; w.real二cos(PI/lei);//w 前系数与前一个系数的商 同一蝶形结中参加 为蝶形结运算系 为系数商,即当 w.imag=-sin(PI/lei); 控制计算不同种蝶形结,即计算系数 for(j=0;j<=lei-1;j++)// 不同的蝶形结 for(i二j;iv二FFT_N-1;i二i+le) 算,即计算系数相同蝶形结 { ip=i+lei;〃i 形运算的两个节点 t=EE(xin[ip],u);// xin[ip].real=xin[i].real-t.real; xin[ip].imag=xin[i].imag-t.imag; xin[i].real二xin[i].real+t.real; xin[i].imag=xin[i].imag+t.imag; } u=EE(u,w);// 蝶形运算 } } } } // 控制同一蝶形结运 ip分别表示参加蝶 蝶形运算,详见公式 改变系数,进行下一个 Map文件 ********************************************************** ******************** TMS320C55XCOFFLinkerPCVersion3.3 ********************************************************** ******************** >>LinkedSatMay3023: 48: 272015 OUTPUTFILENAME: ENTRYPOINTSYMBOL: "_main"address: OOOOeOOO MEMORYCONFIGURATION nameoriginlength usedattrfill 0000e00000000100 0000006000000020 PAGE0: EPROM 00000019RWIX PAGE1: SPRAM 0000000aRWIX DARAM 0000008000000100 00000000RWIX SECTIONALLOCATIONMAP outputattributes/ sectionpageoriginlengthinputsections .text00000e00000000012 0000e00000000012LAB2B.obj (.text) .data00000e01200000005 0000e01200000005LAB2B.obj (.data) .vectors00000e01700000002 0000e01700000002VECTORS.obj (.vectors) .bss1000000600000000aUNINITIALIZED GLOBALSYMBOLS: SORTEDALPHABETICALLYBYNameaddressname 00000060 .bss 0000e012 .data 0000e000 .text 00000060 bss ffffffffcinit 0000e012 data 0000e017 edata 0000006a end 0000e012 etext ffffffffpinit 0000e000 text 00000000 __lflags UNDEFED _c_int00 0000e000 _main ffffffffcinit 0000006aend 0000e012etext ffffffffpinit GLOBALSYMBOLS: SORTEDBYSymbolAddressaddressname 00000000 __lflags 00000060 bss 00000060 .bss 0000006a end 0000006a end 0000e000 .text 0000e000 text 0000e000 _main 0000e012 .data 0000e012 etext 0000e012 data 0000e012 etext ffffffffpinit ffffffff___pinit__ ffffffff___cinit__ ffffffffcinit UNDEFED_c_intOO [19symbols] 六、 得体会 经过这次实验,我更加熟悉CCS开发环境,CCS下的C语言例程 下的FFT算法,采用C语言完成代码的编写、编译、链接、下载和运行的方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西工大 DSP 作业
![提示](https://static.bingdoc.com/images/bang_tan.gif)