DSP原理与应用实验报告.docx

上传人:b****7 文档编号:8847670 上传时间:2023-02-02 格式:DOCX 页数:16 大小:274.12KB
下载 相关 举报
DSP原理与应用实验报告.docx_第1页
第1页 / 共16页
DSP原理与应用实验报告.docx_第2页
第2页 / 共16页
DSP原理与应用实验报告.docx_第3页
第3页 / 共16页
DSP原理与应用实验报告.docx_第4页
第4页 / 共16页
DSP原理与应用实验报告.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

DSP原理与应用实验报告.docx

《DSP原理与应用实验报告.docx》由会员分享,可在线阅读,更多相关《DSP原理与应用实验报告.docx(16页珍藏版)》请在冰豆网上搜索。

DSP原理与应用实验报告.docx

DSP原理与应用实验报告

DSP原理与应用实验报告

 

DSP原理与应用实验报告

 

姓名:

学号:

班级:

学院:

指导教师:

 

实验一代数汇编指令基础实验 

一、实验目的:

1.通过调试目标代码,掌握指令的功能,熟悉指令;

2.通过指令的熟悉,能够指令应用于实际项目中。

二、实验原理:

Ti公司的代数汇编指令。

三、实验程序:

.title"算术指令综合实验"

.mmregs

.sect".vect"

.copy"vectors.asm"

.text

_Start:

;

AR7=#767;

A=#38CAH;

DP=#08AH;

RSA=#0123H;

DP=#188H;

ASM=#0AH

AR7=A

MMR(*AR7+)=#1234H

DP=#04H

A=#9876H

AR6=#230H

*AR6+=#9ACDH

ARP=#6

;

IF(BLEQ)*AR3-=HI(B)<

A=#0F98DH

IF(AGT)*AR2+=BRC

IF(ALT)*AR3-=T

B=#0125CH

IF(BGEQ)*AR2+=BRC

CMPS(A,*AR4-)

CMPS(B,*AR2+)

;

B=@20

DP=#40

A=#1234H

@22=A

A=A+@9AH

@25=A

AR3=#0236H

*AR3=#0F775H

AR5=#024AH

*AR5=#09ACDH

NEXT:

NOP

A=#9ABCH

*AR5+=A

A=A+#1000H

A=A+#08ADEH

SXM=0

A=#07AB8H<<16

A=A+#04ADEH

A=A-#08ADEH<<16

SXM=1

B=#0FF7CH

A=#0889AH

A=A-#09ACDH<<16

B=A-*AR5-

C=1

B=B-A<

*AR5=A

C16=0

A=DBL(*AR5-)-A

B=B-*AR3+

A=B+*AR5+<<16

A=A-B<

B=*AR3+<<16-*AR4-<<16

A=A+*AR4<<12

B=A+*AR5<<-12

A=B-#06789H<<16

B=B+*AR7+0B+CARRY

A=A-*AR2--BORROW

SUBC(@25,A)

A=A-UNS(*AR7+)

T=#9ACDH

B=DADST(*AR4,T)

A=DADST(*AR7,T)

C16=1

A=A+DBL(*AR5+)

A=A-DBL(*AR5-)

T=#7654H

C16=0

A=DADST(*AR5+,T)

C16=1

A=DSADT(*AR5-,T)

A=DBL(*AR5+)-A

*AR3+=HI(B)

||B=A+*AR5+0%<<16

*AR4-=HI(A)||A=*AR3-<<16-B

GOTONEXT

;

SXM=0

A=#89ABH

A=A+#4567H<<16

*AR3=#9999H

A=A&*AR3-

B=#8897H

B=B+#079ADH<<16

A=A|B<<-12

A=#8897H

A=A+#079ADH<<16

A=B^#0567DH<<12

DP=#04

@7AH=@7AH�ACD6H

.end

四、实验步骤:

1、输入以上程序,并进行编译;

2、打开codeExplore,并把编译好的程序装载,并进行调试

3、逐步调试,并观察各种特殊寄存器的值和预期值是否对应,着重了解各种寻址的特点,及相对应的指令。

五、实验心得

第一次实验并没有掌握程序的操作方法以及对于程序的不理解,导致操作不熟练,而且程序错误较多,花费了大量的时间在程序的纠错和调试上。

 

实验二DSPFIR低通滤波器

一、实验目的

1、通过实验程序理解DSP程序的编写。

2、掌握CIC-500系统的A/D转化,串口通信的编程。

3、掌握FIR低通滤波器在DSP中的具体实现,进一步了解各种寻址方式的实际应用。

二、实验原理

FIR滤波器的主要操作控制为

设计一个低通滤波器,条件如下:

1、采样频率为9.26KHZ,系统工作频率为10MHZ。

2、截至频率为Flpc为1KHZ。

3、输入信号为14位带符号数值。

4、共取80阶点作运算。

滤波器设计好后的系数放在"lp_coeff.asm"文件内其他文件应拷贝到同一文件夹下。

三、FIR设计方法

1、数字滤波器设计步骤

数字滤波器的实质是一个离散的多项式表达式,通过这个表达式来满足一定的需求。

因此数字滤波器的设计步骤如下:

A、了解滤波器的技术要求

B、实现系数计算

C、实现,即把传函转换为合适的滤波器网络或结构

D、有限字长效应分析,主要考虑滤波器系数、输入数据量化和固定字长对滤波器性能的影响

E、工程实现

2、滤波器的技术指标

 

峰值通带偏差

阻带偏差

:

通带边缘频率

:

阻带边缘频率

3、用窗口法设计滤波器的步骤 

第一步:

指定理想的或期望的滤波器频率响应

;

第二步:

通过傅立叶反变换求期望的滤波器的冲击响应, 

第三步:

选择一个满足通带或衰减指标的窗函数,然后利用滤波器长度与过渡带宽之间的关系确定滤波器的系数数目。

 

第四步:

对于选取的窗函数求w(n)的值,并且将

的值与w(n)相乘求得实际的FIR系数h(n)。

4、标准频率选择性滤波器的理想冲击响应总结

滤波器类型

低通

高通

-

1-

带通

-

-

带阻

-

1-

+

5、常用窗函数及重要特征总结。

 

窗函数名

归一化过渡带宽(HZ)

通带波纹(dB)

相对于旁瓣的主瓣(dB)

阻带衰减(dB)

 

窗函数表达式

矩形窗

0.9/N

0.7614

13

21

1

Hanning窗

3.1/N

0.0546

31

44

Hamming窗

3.3/N

0.0194

41

53

布莱克曼

5.5/N

2.93/N

0.0017

0.0274

57

75

50

凯塞

4.32/N

5.71/N

0.00275

0.000275

70

90

四、随机数产生方法

实验程序范例

.title"lowpassfilter"

.mmregs

.width80

.length55

;.setsect".text",0x1800,0;theseassemblerdirectivesspecify

;.setsect".data",0x0200,1;theabsoluteaddressesofdifferent

;.setsect"vectors",0x0180,0;sectionsofcode

 

.sect"vectors";interruptvectortableresidesat

.copy"lp_vecs.asm";location0x0180

.data

seed.word07e6dh;seedforrandomvariable

temp.word0

XN.word0,0,0,0,0,0,0,0,0,0;80datalocationsfor80

XN1.word0,0,0,0,0,0,0,0,0,0;stagedelayline.

XN2.word0,0,0,0,0,0,0,0,0,0;

XN3.word0,0,0,0,0,0,0,0,0,0;

XN4.word0,0,0,0,0,0,0,0,0,0;

XN5.word0,0,0,0,0,0,0,0,0,0;

XN6.word0,0,0,0,0,0,0,0,0,0;

XN7.word0,0,0,0,0,0,0,0,0;

XNLAST.word0;

OUTPUT.word0;extrawordforthebitbucket

.text

.copy"lp_coeff.asm"

.copy"lp_ac01.asm"

start:

intm=1;disableallinterrupts

dcallAC01INIT;initializeAnaloginterface.

DP=#0

nop

pmst=#01a0h;Interruptpointermapsvectorstopage#3(3*128=180h)

sp=#0ffah;stackpointerlocatedinCommunicationsKernal

imr=#240h;unmaskTDMRINTandHPIINT(hostportinterface)

intm=0;enableallinterrupts

WAIT:

gotoWAIT;waitforreceiveinterrupt.

 

receive:

DP=#seed;ThissetsDataMemoryPagePointer

;topageXN,whichisdefined

;earlierintheprogram.

;---------randomnoiseGenerator(P-5csModulator)-------------------

a=@seed<<1

a=@seed^a

@temp=a<<2

a=@temp^a

a=#8000h&a

a=a+@seed<<16

@seed=hi(a)<<1

a=@seed<<11

a=a�fffch<<15

repeat(#12)

a=a<

;--------getsampleandrunthroughlowpassfilter---------

b=DRR1;LOADACCUMULATORWITHWORD

;RECEIVEDFROMAIC!

@XN=A<<0;STORETHEVALUEOFRECEIVED

;WORDTOVARIABLEXN!

AR0=#XNLAST;LOADAR0WITHADDRESSOFLAST

;DELAYELEMENT!

A=#0;ZEROACCUMULATORA!

repeat(#79);Repeatnextinstructions80times.

macd(*AR0-,h0,A);ComputeFIRoutput.

@OUTPUT=hi(A)<<0;Storethefilteredinputinto

;variableOUTPUT.

A=@OUTPUT<<0;OUTPUT==>AccumulatorA

A=#0FFFCh&A;TWOLSB'sMUSTBEZEROFORAIC!

DXR1=A;SENDTOTRANSMITREGISTER!

return_enable;Enableinterruptsandreturn

;frominterrupt.

transmit:

return_enable;Enableinterruptsandreturn

;frominterrupt.

.end

四、实验步骤

1、连接CIC-500DSP发展实验系统

2、载入程序,从J2端输入音乐,运行一段时间后暂停,观察实验结果。

3、观察不同频宽的音乐,把结果进行比较。

五、实验心得

通过实验了解到了DSP程序的编写和A/D转化,以及串口通信的编程,进一步了解了各种寻址方式的实际应用,依据上次实验的经验,这次的操作过程更为熟练。

 

实验三FFT算法的实现

—、实验目的

1.掌握FFT算法。

2、进一步掌握FFT的DSP编程。

3、指出FFT算法中的各种寻址方式,结合算法掌握寻址方式的使用技巧。

4、认真分析各功能模块的具体功能,和课堂所讲的算法步骤关联起来。

二、实验原理

实验原理依据课堂所授的蝶形变换 

设计1024个点的FFT变换,输入数据放在in.dat文件里面。

在输入实验的时候把bit_rev.asm、fft.asmunpack.asm、power.asm拷贝至同一个目录下

实验主程序:

.width80

.length55

.title"RealFastFourierTransfrom"

.mmregs

.copy"vectors.asm"

.copy"initrfft.asm"

.text

start:

SP=#BOS

DP=#0

OVM=#0

FRCT=#1

ASM=#0

CALLbit_rev

CALLfft

CALLunpack

CALLpower

hangloose:

NOP

gotohangloose

.copy"bit_rev.asm"

.copy"fft.asm"

.copy"unpack.asm"

.copy"power.asm"

.end

 

三、实验步骤:

1、认真阅读四个子程序,理解四个子程序的作用

2、认真进行调试,通过时域频域图对比算法的精度

3、认真思考,改进算法。

四、实验心得

掌握FFT算法,以及相关的FFT的DSP编程。

认真分析各功能模块的具体功能,和课堂所讲的算法步骤关联起来,通过实验能够了解到FFT算法的一些简单的应用以及算法的运算准则。

 

 

实验七设计PID控制器或设计矩阵乘法程序

—实验目的

1、根据以前做实验的所培养的经验,写出PID控制器或矩阵乘法程序

二、实验原理

1、PID控制原理

2、矩阵乘法原理

3、矩阵乘法程序

main.asm

.width80

.length55

.title"矩阵乘法"

.mmregs

.copy"vectors.asm"

.data

XN.word1,4,7,2,5,8,3,6,9,1,2,3,4,5,6,7

.word0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

YN.word1,2,3,4,5,6,7,8,9,1,1,3,2,4,4,2

.text

start:

ar3=#XN

ar4=#YN

ar5=#(YN+17)

sp=#07ffh

bk=#9

callmulx1

callmulx1

callmulx1

callmulx1

wait:

nop

gotowait

mulx1:

callmulad3

ar0=#4

mar(*ar3-0)

callmulad3

ar0=#4

mar(*ar3-0)

callmulad3

ar0=#4

mar(*ar3-0)

callmulad3

return_enable

nop

mulad3:

a=#0

ar0=#1

repeat(#2)

a=a+*ar3+**ar4+0%

*ar5+=a

nop

return_enable

.end

 

三、实验步骤

1、首先自己参考前三个程序,设计自己的程序。

2、编译自己的程序,挑出错误,生成目标文件。

3、加载程序,査询数据存储器的内容验证程序是否正确。

四、实验心得

在这几次的实验之后,我对书本上的相关知识有了更深的体会,在最后一个实验操作过程中,矩阵乘法的设计很有难度的,需要我们在充分了解矩阵乘法知识的基础上才能转换成我们所要的4*4矩阵,在多次修改,调试后实验才取得了成功。

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1