10级DSP实验指导书Word文档下载推荐.docx

上传人:b****3 文档编号:8116613 上传时间:2023-05-10 格式:DOCX 页数:38 大小:270.33KB
下载 相关 举报
10级DSP实验指导书Word文档下载推荐.docx_第1页
第1页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第2页
第2页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第3页
第3页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第4页
第4页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第5页
第5页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第6页
第6页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第7页
第7页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第8页
第8页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第9页
第9页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第10页
第10页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第11页
第11页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第12页
第12页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第13页
第13页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第14页
第14页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第15页
第15页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第16页
第16页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第17页
第17页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第18页
第18页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第19页
第19页 / 共38页
10级DSP实验指导书Word文档下载推荐.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

10级DSP实验指导书Word文档下载推荐.docx

《10级DSP实验指导书Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《10级DSP实验指导书Word文档下载推荐.docx(38页珍藏版)》请在冰点文库上搜索。

10级DSP实验指导书Word文档下载推荐.docx

在本实验中,我们使用下列代码说明减法运算:

STM#TEMP1,AR3;

将变量TEMP1的地址装入AR3寄存器

STM#TEMP3,AR2;

将变量TEMP3的地址装入AR2寄存器

SUB*AR2+,AR3,B

STHB,SUBRESULT

(4)实现16定点整数乘法

在C54中提供大量的乘法运算指令,其结果都是的32位,放在A或B寄存器中。

乘法指令输入变量非常灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。

有关乘法指令的详细使用说明请参考《TMS320C54X实用教程》。

在C54X中,一般对数据的处理都当做有符号数,如果是无符号数乘时,请使用MPYU指令。

这是一条专用于无符号数乘法运算的指令,而其它指令都是有符号数的乘法。

在本实验中,我们使用下列代码来说明整数乘法运算;

RSBXFRCT;

请FRCT标志,准备整数乘

LDTEMP1,T;

将变量TEMP1装入T寄存器

MPYTEMP2,A;

完成TEMP2*TENPL,结果放入A寄存器(32)位

例如,当TEMP1=1234H(十进制的4660),TEMP2=9876H(十进制的-26506),乘法的结果在A寄存器中为0F8A343F8H(十进制的-123517960)。

这是一个32位的

结果,需要两个内存单元来存放结果;

STHA,MPY_1_H;

将结果(高16位)存入变量MPY_1_H

STLA,MPY_1_H;

将结果(低16位)存入变量MPY_1_L

当TEMP1=10H(十进制的16),TEMP2=05H(十进制的5),乘法结果在A寄存器中为00000050H(十进制的80)。

对于这种情况,仅仅需要保存低16位即可;

STLA,MPY_1_L;

将结果(低16位)存放变量MPY-1-L

(5)实现16定点小数乘法

在C54X中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。

C54X中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移移位。

但注意整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT清除。

两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存放高16位,将低16位丢弃,这样仍可得到16位的结果。

在本实验中,我们使用下列代码来说明小数乘法运算:

SSBXFRCT;

FRCT=1,准备小数乘法

LDTEMP1,16,A;

将变量TEMPL装入寄存器A的高的16位

MPYATEMP2;

完成TEMP2乘寄存器A的高的16位,结果在B

中,

同时将TEMP2装入T寄存器

STHB,MPY-F;

将乘积结果的高16位存入变量MPY-F

例如,TEMP1=TEMP2=4000H(十进制的0.5),两数相乘后结果为20000000(十进制的2-2=0.25)。

再如,TEMP1=0CCDH(十进制的0.1),TEMP2=0599AH(十进制的0.7),两数相乘后B寄存器的内容为08F5F0A4H(十进制的0.07000549323857)。

如果仅保存结果的高16位08F5H(十进制的0.06997680664063)。

有时为了提高精度,可以使用RND或使用MPYR指令对低16位做四舍五入的处理。

(6)实现16定点整数除法

在C54X中没有提供专门的除法指令,一般有两种方法来完成除法。

一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。

这种方法对于除以常数特别适用。

另一种方法是使用SUBC指令,重复16次减法完成除法运算。

下面我们以TEMP1/TEMP2为例,说明如何使用SUBC指令实现整数除法,其中变量TMP1为被除数,TMP2为除数,结果即商存放在变量TEMP3中。

在完成整数除法时,先判断结果的符号。

方法是将两数相乘,保存A或B的高16位以便判断结果的符号。

然后只做两个正数的除法,最后修正结果的符号。

为了实现两个数相除,先将被除数装入A或B的低16位,接着重复执行SUBC指,用除数重复减16次后,除法运算的商在累加器的低16位,余数在高16位。

详细代码如下:

LDTEMP1,T;

将被除数装入T寄存器

MPYTEMP2,A;

除数与被除数相乘,结果放入A寄存器

LDTEMP2,B;

将除数TEMP2装入B寄存器的低16位

ABSB;

求绝对值

STLB,TEMP2;

将B寄存器的低16位存回TEMP2

LDTEMP1,B;

将被除数TEMP1装入B寄存器的低16位

RPT#15;

重复SUBC指令16次

SUBCTEMP2,B;

使用SUBC指令完成除法运算

BCDDIV-END,AGT;

延时跳转,先执行下面两条指令,然后判

断A,若A大于0,则跳转到标号

DIV-END,结束除法运算

STLB,QUOT-I;

将商(B寄存器的低16位)存入变量QUOT-I

STHB,REMAIN-I;

将余数(B寄存器的高16位)存入变量

REMAIN-I

XORB,B;

若两数相乘的结果为负,则商也应为负。

先将B寄存器清0

SUBQUOT-I,B;

将商反号

存回变量QUOT-I中

DIV-END:

(7)实现16定点小数除法

下面给出的是小数除法与前面的整数除法基本一致,也是使用循环的SUBC指令来完成。

但有两点需要注意:

第一,小数除法的结果一定是小数(小于一),所以被除数一定小于除数。

这与整数除法正好相反。

所以在执行SUBC指令前,应将被除数装入A或B寄存器的高16位,而不是低16位。

其结果的格式与整数除法一样,A或B寄存器的高16位为余数,低16位商。

第二,与小数乘法一样,应考虑符号对结果小数点的影响。

所以应对商右移一位,得到正确的有符号数。

其详细代码如下:

AND#0FFFFH,B;

将B寄存器的高16位清为0。

这时余数被丢弃,仅保留商

断A,若A大于0,则跳转到标号DIV-END,

结束除法运算

STLB-1,QUOT-F;

将商右移

STLB-1,REMAIN-I;

将余数(B寄存器的高16位)存

入变量REMAIN-I

注意:

上面的C54X的16位定点有符号小数除法通用程序没有保留余数,商保存在变量TEMP3中。

举一个例子,当TEMP1=2CCCH(十进制0.35),TEMP2=55C2H(十进制的0.67),两数相除的结果为TEMP3=42DCH(十进制的0X42DC除以215=0.52233)。

(四)实验步骤

1.新建一个工程

1)如果你的CCS安装在C:

\ti目录下,请在d:

\下新建一个目录,名为sf

2)将C:

\DSP实验\C5402例程\a1suanfa下的.asm文件拷贝到新目录中

3)运行CCS程序

4)选择ProjectNew菜单

5)在窗口中,选择你新建的目录,键入sf作为工程文件名,然后单击完成。

CCS会给你新建一个叫sf.pjt的工程文件,他将保存你的工程文件设置,和工程引用相关文件。

2.往工程中加入文件

1)选择projectAddFilestoProject,选择sf.asm,加入工程中。

5.浏览代码

和Windows的资源管理器相似,只要打开+号展现下面的文件,然后双击文件的图标,在主窗口就会显示相应文件的原始代码。

6.编译/执行程序

1)选择ProjectRebuildAll或工具栏中的相应按钮。

2)编译成功后,选择FileLoadProgram。

选择你刚编译的可执行程序exp1.out。

3)选择DebugRun,或工具栏中的相应图标。

5.程序调试的环境应用

(1)跟踪/调试程序

1)选择DebutRestart,重新执行程序。

2)不全速运行,而是选择DebugStepInto或按F8,单步执行程序.

3)观察主要寄存器的变化ViewCPURegistersCPURegiste。

注:

对不熟悉的指令,可查找相应说明。

(2)断点的设置与取消。

(3)观察CPU寄存器、存储器及变量。

6.源程序如下

实验一:

CCS基本操作

************************************************

*FileName:

sf.asm*

*Description:

DSP指令实验*

*Copyright(C)SanZhiElectronic*

.title"

ex1"

.mmregs

.def_c_int00

DAT0.SET60H

DAT1.SET61H

DAT2.SET62H

DAT3.SET63H

.text

ADD3.MACROP1,P2,P3,ADDRP;

三数相加宏定义:

ADDRP=P1+P2+P3

LDP1,A

ADDP2,A

ADDP3,A

STLA,ADDRP

.ENDM

_c_int00:

Bstart

start:

LD#00h,DP;

置数据页指针

STM#1000h,SP;

置堆栈指针

SSBXINTM;

禁止中断

bk0:

ST#0012h,DAT0

LD#0023h,A

ADDDAT0,A;

加法操作:

A=A+DAT0

NOP

bk1:

ST#0054h,DAT0

LD#0002h,A

SUBDAT0,A;

减法操作:

A=A-DAT0

bk2:

ST#0345h,DAT0

STM#0002h,T

MPYDAT0,A;

乘法操作:

A=DAT0*T

bk3:

ST#1000h,DAT0

ST#0041h,DAT1

RSBXSXM;

无符号除法操作:

DAT0÷

DAT1;

结果:

DAT2:

商;

DAT3:

余数

LDDAT0,A

RPT#15

SUBCDAT1,A

STLA,DAT2

STHA,DAT3

bk4:

ST#0333h,DAT0

SQURDAT0,A;

平方操作:

A=DAT0*DAT0

bk5:

ST#0034h,DAT0

ST#0243h,DAT1

ST#1230h,DAT2

ADD3DAT0,DAT1,DAT2,DAT3;

三数相加操作:

DAT3=DAT0+DAT1+DAT2

bk6:

Bbk0;

循环执行

.end

实验二定时器实验

熟悉DSP的定时器

了解定时器中断的编程方法

学会使用定时器中断方式控制程序流程

计算机;

DSP硬件仿真器;

DSP实验开发平台

(三)实验原理及说明

VC5402上有2个CPU定时器,本程序主要对CPU定时器0进行操作,1ms产生一次中断,让DSP5402开发板上的D9发光二极管每500ms闪烁一次。

1.新建一个工程

2.新建源文件

3.将源文件添加到工程

4.编译、执行程序

5.观察实验结果

实验三同步串口

了解DSP同步串口工作原理及程序的编写

了解AD50工作原理

DSP实验开发平台;

耳机、麦克风

(三)实验硬件设置

在做实验之前,需要接通该实验所需的硬件电路,本实验为:

先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33(主板左上角)往下拨接通+/-5V电源;

将麦克风(红色端)插入语音输入插座(M1),将耳机(黑色端)插入语音输出插座(M3),然后开始做实验,注意在做DSP实验时开始按了RST硬件复位后,实验中不要再按RST键,以免实验由于DSP复位而失败。

如果实验中硬件工作不正常,可按RST键对整个系统硬件进行复位。

(四)实验原理

本实验是实现通过DSP的同步串口能向AD50发送控制字和数据或接收AD50发送的数据。

硬件原理图请参考语音处理模块,同步串口实验,主要是通过5402的同步串口0访问A/D芯片,使学生了解同步串口工作原理。

该实验所需的硬件主要是DSP、TMS320AD50、TLC2272,在实验过程中如果TLC320AD50C工作不正常,请按复位键(RST键)对实验仪硬件复位。

编写DSP同步串口程序访问AD50,语音信号从麦克风(红色)输入后经过TLC2272(双路低噪声)滤波,通过AD50的A/D将模拟信号转换为数字信号,通再数字信号发送到AD50的DAC通道中,最后信号由耳机(黑色)输出。

要在耳机里听到麦克风所输入的声音。

TLC320AD50和TMS320C54x的接口图

(五)实验程序框图

实验四FIR滤波器实验

熟悉数字滤波的基本原理和实现方法;

熟悉线性相位FIR数字滤波器特性;

通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。

DSP实验开发平台。

然后开始做实验,注意在做DSP实验时开始按了RST硬件复位后,实验中不要再按RST键,以免实验由于DSP复位而失败。

FIR滤波器算法的函数表达式:

shortoflag=fir(DATA*x,DATA*h,DATA*r,DATA**dbuffer,ushortnh,ushortnx)(定义于fir.asm)

参数

x[nx]

指向输入向量,长度为nx

h[nh]

指向系数向量,长度为nx

例如:

若nh=3:

则:

H=b0,b1,b2。

●内存对齐:

这是一个环行缓冲区,必须起始于k位边界上(就是说起始地址的k个LSB位必须为0)。

其中k为大于log2(nh)的整数,具体解释见TMS320C54XDSPReferenceSet第5-15页5.5.3.4小节。

r[nx]

指向输出向量,长度为nx

Dbuffer[nh]

延迟缓冲区

●在多重缓冲区方法中,该向量在进行第一次块操作时应该初始化为0;

在后面的块操作中,延迟缓冲区保存着计算r所必须的输入值。

与h向量一致。

Nx

输入向量的长度

Nh

系数向量的长度

Oflag

溢出标志

●若oflag=1,则运算中产生32位溢出

●若oflag=0,运算中未产生32位溢出

说明

使用系数向量h,计算实数的FIR滤波。

输入数据存于向量x中。

该例程使用一个缓冲内存d,来保存前一次的输入值。

可以进行块滤波操作,或者单个数据滤波(nx=1)。

算法

r[j]=

0<

=j<

=nx

(五)实验步骤

(1)用MATLAB设计软件设计出FIR数据文件,可采用随机光盘里WAVE文件夹中的数据文件。

(2)启动CCS,编写实验程序代码(可参考随机光盘中的例程),进行编译并加载到DSP中。

(3)采用单步运行或执行到光标处,或全速运行,并打开波形观察窗口,跟踪观察其执行过程和滤波效果。

此处举例介绍随机光盘里的例程低通滤波器的程序运行,以及如何观察滤波效果:

①先打开项目,然后编译、加载实验程序,然后点击菜单debug—Gomain就进入实验程序test.c(如图一)。

图一程序

②然后我们打开波形观察窗口,路径是View—Graph—Time/Frequence,将出现如下图二所示的图形属性框,因为本程序编写的是输入向量放在x中,而滤波后的输出向量放在r中,因此图形属性框应选择:

在DisplayType一栏中选择DualTime项;

InterleavedDataSources一栏中选择No项;

StartAddress-upperdisplay一栏中输入x,

StartAddress-upperdisplay一栏中输入r;

AcquistitionBufferSize一栏中输入256;

DisplayDataSize一栏中输入256;

DSPDataType一栏中选择16-bitsignedinteger项;

其他为默认值,然后点击“OK”就可打开图形观察窗口如图三。

图二图形属性窗口

图三输入数据波形

③输入数据文件,路径是File—Data—Load,将WAVE文件夹的“fwave1k+500.dat数据文件载入,如图四所示设置。

然后就会出现如图三所示的输入波形窗口。

图四加载数据设置

④运行程序,就可观察到输入数据经过FIR滤波后的效果,如图五所示。

至此就可观察信号经过FIR滤波后的信号的改变。

图五FIR滤波后的输出数据

具体实验程序请参考:

随机光盘里的lpassfir文件夹。

(六)实验思考

根据上述低通FIR滤波器的设计方法设计出高通FIR滤波

附录:

参考程序清单

ex1.asm*

ST#03

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2