南昌大学DSP实验报告.docx
- 文档编号:25902635
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:38
- 大小:610.30KB
南昌大学DSP实验报告.docx
《南昌大学DSP实验报告.docx》由会员分享,可在线阅读,更多相关《南昌大学DSP实验报告.docx(38页珍藏版)》请在冰豆网上搜索。
南昌大学DSP实验报告
实验报告
实验课程:
DSP原理及应用
学生姓名:
学号:
专业班级:
2012年5月25日
目录
实验一定点除法运算
实验二FIR滤波器
实验三FFT算法
实验四卷积计算
实验五数码管显示
实验六语音录放
实验一定点除法运算
1、实验目的
1、熟悉C54指令系统,掌握常用汇编指令,学会设计程序和算法的技巧。
2、学习用指令实现除法运算。
二、实验设备
计算机;DSP硬件仿真器;DSP实验开发平台。
3、实验原理
由内置的硬件模块支持,数字信号处理器可以高速的完成加法和乘法运算。
但TMS320系列DSP不提供除法指令,为实现除法运算,需要编写除法子程序来实现。
二进制除法是乘法的逆运算。
乘法包括一系列的移位和加法,而除法可分解为一系列的减法和移位。
本实验要求编写一个16位的定点除法子程序。
1.除法运算的过程设累加器为8位,且除法运算为10除以3,除的过程包括与除数有关的除数逐步移位,然后进行减法运算,若所得商为正,则在商中置1,否则该位商为0例如:
4位除法示例:
(1)数的最低有效位对齐被除数的最高有效位00001010-0001100011110010
(2)由于减法结果为负,丢弃减法结果,将被除数左移一位再减00010100-0001100011111000(3)结果仍为负,丢弃减法结果,将被除数左移一位再减00101000-0001100000010000(4)结果为正,将减法结果左移一位后把商置1,做最后一次减00100001-0001100000001001(5)结果为正,将减法结果左移一位加1得最后结果,高4位是余数,低4位商:
00010011
2.除法运算的实现为了尽量提高除法运算的效率,’C54x系列提供了条件减指令SUBC来完成除法操作。
4、实验步骤
1.用Simulator方式启动CodeComposer。
2.执行ProjectNew建立新的项目,输入chuf作为项目的名称,将程序定位在D:
\ti\myprojects\chuf目录。
3.执行FileNewSourceFile建立新的程序文件,为创建新的程序文件命名为chuf.asm并保存;执行ProjectAddFilestoProject,把chuf.asm加入项目中。
4.执行FileNewSourceFile建立新的文件并保存为chuf.cmd;执行ProjectAddFilestoProject,把chuf.cmd加入项目中。
5.编辑chuf.asm加入如下内容:
;***编制计算除法运算的程序段。
其中|被除数|<|除数|,商为小数***
.title"chuf.asm"
.mmregs
.defstart,_c_int00
.bssnum,1
.bssden,1
.bssquot,1
.data
table.word4*32768/10;0.4
.word-8*32768/10;-0.8
.text
_c_int00
bstart
nop
nop
start:
STM#num,AR1
RPT#1
MVPDtable,*AR1+;传送2个数据至分子、分母单元
STM#den,AR1
LD*AR1-,16,A;将分母移到累加器A(31-16)
MPYA*AR1+;(num)*(A(32-16))->B,获取商的符号
;(在累加器B中)
ABSA;分母取绝对值
STHA,*AR1-;分母绝对值存回原处
LD*AR1+,16,A;分子->A(32-16)
ABSA;分子取绝对值
RPT#14;15次减法循环,完成除法
SUBC*AR1,A
XC1,BLT;如果B〈0(商是负数)则需要变号
NEGA
STLA,*(quot);保存商
.END
6、编译chuf.cmd加入如下内容:
/*chuf.cmd*/
chuf.obj
-mchuf.map
-ochuf.out
MEMORY
{
PAGE0:
ROM:
origin=0080h,length=1000h
ROM:
origin=0060h,length=10h
PAGE1:
OTHER:
origin=0400h,length=40h
}
SECTIONS
{
.text:
{}>ROMPAGE0
.data:
{}>ROMPAGE0
.stack:
{}>OTHERPAGE1
.bss:
{}>OTHERPAGE1
}
7、实验结果:
5、实验小结
通过几次的课程实验,我学到了不少新的知识,只有自己真正做过才会知道和了解。
结合课程中所学的理论知识,和参考资料做课程实验。
达到学有所用的目的。
学会查阅相关手册与资料,通过查阅手册和文献资料,并掌握合理选用的原则,培养独立分析与解决问题的能力。
这次设计我们学到了很多东西,熟悉CCS5000软件的使用,还加深了对知识的理解和掌握。
作为一名大三的学生,我觉得能做类似的课程设计是十分有意义的。
实验二FIR滤波器
一、实验目的
1、熟悉数字滤波的基本原理和实现方法;
2、熟悉线性相位FIR数字滤波器特性;
3、通过观察对实际信号的滤波作用,获得对数字滤波的感性认识。
二、实验设备
计算机;DSP硬件仿真器;DSP实验开发平台。
三、实验硬件设置
1、将实验箱右侧的船型开关往”I”方向打开电源;
2、将主板的开关S33(主板右上角)拨通+/-5V电源;
3、实验开始前先按RST硬件复位(实验中不要再按复位键)。
四、实验步骤
1、启动CCS编写实验程序代码;
2、打开Projects,选择MYprojects→fir→fir.pjt;
3、打开程序后.进行运行和编译;编辑fir.asm加入如下内容:
;一个FIR滤波器源程序fir.asm
.mmregs
.globalstart
.defstart,_c_int00
INDEX.set1
KS.set256;模拟输入数据缓冲区大小
N.set17
COFF_FIR.sect"COFF_FIR";FIR滤波器系数
.word0
.word158
.word264
.word-290
.word-1406
.word-951
.word3187
.word9287
.word12272
.word9287
.word3187
.word-951
.word-1406
.word-290
.word260
.word158
.word0
.data
INPUT.copy"firin.inc";模拟输入在数据存储区0x2400
OUTPUT.space1024;输出数据在数据区0x2500
;FIR_DP.usect"FIR_VARS",0
;D_FIN.usect"FIR_VARS",1
;D_FOUT.usect"FIR_VARS",1
COFFTAB.usect"FIR_COFF",N
DATABUF.usect"FIR_BFR",N
BOS.usect"STACK",0Fh
TOS.usect"STACK",1
.text
.asgAR0,INDEX_P
.asgAR4,DATA_P;输入数据x(n)循环缓冲区指针
.asgAR5,COFF_P;FIR系数表指针
.asgAR6,INBUF_P;模拟输入数据指针
.asgAR7,OUTBUF_P;FIR滤波器输出数据指针
_c_int00
bstart
nop
nop
start:
ssbxFRCT
STM#COFFTAB,COFF_P
RPT#N-1;将FIR系数从程序存储器移动
MVPD#COFF_FIR,*COFF_P+;到数据存储器
STM#INDEX,INDEX_P
STM#DATABUF,DATA_P
RPTZA,#N-1
STLA,*DATA_P+;将数据循环缓冲区清零
STM#(DATABUF+N-1),DATA_P;数据缓冲区指针指向x[n-(N-1)]
STM#COFFTAB,COFF_P;
FIR_TASK:
STM#INPUT,INBUF_P
STM#OUTPUT,OUTBUF_P
STM#KS-1,BRC
RPTBDLOOP-1
STM#N,BK;FIR循环缓冲区大小
LD*INBUF_P+,A;装载输入数据
FIR_FILTER:
STLA,*DATA_P+%
RPTZA,N-1
MAC*DATA_P+0%,*COFF_P+0%,A
STHA,*OUTBUF_P+
LOOP:
EENDBEEND
.end
编译fir.cmd加入如下内容:
fir.obj
-mfir.map
-ofir.out
MEMORY
{
PAGE0:
ROM1(RIX):
ORIGIN=0080H,LENGTH=100H
PAGE1:
INTRAM1(RW):
ORIGIN=2400H,LENGTH=0200H
INTRAM2(RW):
ORIGIN=2600H,LENGTH=0100H
INTRAM3(RW):
ORIGIN=2700H,LENGTH=0100H
B2B(RW):
ORIGIN=0070H,LENGTH=10H
}
SECTIONS
{
.text:
{}>ROM1PAGE0
.data:
{}>INTRAM1PAGE1
FIR_COFF:
{}>INTRAM2PAGE1
FIR_BFR:
{}>INTRAM3PAGE1
.stack:
{}>B2BPAGE1
}
4、由File→Loadprogram→debug→fir.out加载程序到芯片上去;
5、在点击菜单debug→Gomain就进入实验程序test.c;
6、然后我们打开波形观察窗口,路径是View→Graph→Time/Frequence,这时将出现下图所
示的属性框,跟据图框进行参数设定;
7、参数设置完成后.点击”OK”就可以打开图形观察窗口;然后,单击View→Graph→Time/Frequence,由.cmd可知输出信号的数据放在数据区0X2500开始的256个单元中,将上图中的StartAddress项改变为0X2500,单击OK按钮,将显示滤波器输出时域波形。
五、实验小结
通过几次的课程实验,我学到了不少新的知识,只有自己真正做过才会知道和了解。
结合课程中所学的理论知识,和参考资料做课程实验。
达到学有所用的目的。
学会查阅相关手册与资料,通过查阅手册和文献资料,并掌握合理选用的原则,培养独立分析与解决问题的能力。
这次设计我们学到了很多东西,熟悉CCS5000软件的使用,还加深了对知识的理解和掌握。
作为一名大三的学生,我觉得能做类似的课程设计是十分有意义的。
实验三FFT算法
一、实验目的
1、加深对DFT算法原理和基本性质的理解。
2、熟悉FFT算法原理和FFT子程序的应用。
3、学习用FFT对连续信号和时域信号进行谱分析的方法,
二、实验设备
计算机;DSP硬件仿真器;DSP实验开发平台。
三、实验步骤
1、启动CCS,编写实验程序代码.
2、打开Projects,选择myprojects→fft→fft.pjt.
3、打开程序后.进行运行和编译.
编译fft.asm加入如下内容:
*************************************
*Radix-2,DIT,Real-inputFFTProgram*
*fft.asm*
*************************************
.mmregs
.globalreset,start,sav_sin,sav_idx,sav_grp
.defstart,_c_int00
.data
DATA.space1024
.copy"mdata.inc"
N.set128
LOGN.set7
sav_grp.usect"tempv",3
sav_sin.setsav_grp+1
sav_idx.setsav_grp+2
OUTPUT.usect"OUTPUT",256
BOS.usect"stack",0Fh
TOS.usect"stack",1
.copy"twiddle1.inc"
.copy"twiddle2.inc"
.text
_c_int00
bstart
nop
nop
start:
STM#TOS,SP
LD#0,DP
SSBXFRCT
STM#2*N,BK
STM#INPUT,AR3
STM#DATA,AR7
MVMMAR7,AR2
STM#N-1,BRC
RPTBDplend-1
STM#N,AR0
LDMAR3,A
READA*AR2+
ADD#1,A
READA*AR2+
MAR*AR3+0B
plend:
STM#0,BK
LD#-1,ASM
MVMMAR7,AR2
STM#DATA+2,AR3
STM#N/2-1,BRC
LD*AR2,16,A
RPTBDs1end-1
STM#3,AR0
SUB*AR3,16,A,B
ADD*AR3,16,A
STHA,ASM,*AR2+
STB,*AR3+
||LD*AR2,A
SUB*AR3,16,A,B
ADD*AR3,16,A
STHA,ASM,*AR2+0
STB,*AR3+0%
||LD*AR2,A
s1end:
MVMMAR7,AR2
STM#DATA+4,AR3
STM#N/4-1,BRC
LD*AR2,16,A
RPTBDs2end-1
STM#5,AR0
SUB*AR3,16,A,B
ADD*AR3,16,A
STHA,ASM,*AR2+
STB,*AR3+
||LD*AR2,A
SUB*AR3,16,A,B
ADD*AR3,16,A
STHA,ASM,*AR2+
STHB,ASM,*AR3+
MAR*AR3+
ADD*AR2,*AR3,A
SUB*AR2,*AR3-,B
STHA,ASM,*AR2+
SUB*AR2,*AR3,A
STB,*AR3
||LD*AR3+,B
STA,*AR2
||ADD*AR2+0%,A
STA,*AR3+0%
||LD*AR2,A
s2end:
STM#512,BK
ST#128,@sav_sin
STM#128,AR0
STM#TWI2,AR4
STM#TWI1,AR5
STM#-3+LOGN,AR7
ST#-1+N/8,@sav_grp
STM#3,AR6
ST#8,@sav_idx
stage:
STM#DATA,AR2
LD@sav_idx,A
ADD*(AR2),A
STLMA,AR3
MVDK@sav_grp,AR1
group:
MVMDAR6,BRC
RPTBDbend-1
LD*AR4,T
MPY*AR3+,A
MACR*AR5+0%,*AR3-,A
ADD*AR2,16,A,B
STB,*AR2
||SUB*AR2+,B
STB,*AR3
||MPY*AR3+,A
MASR*AR3,*AR4+0%,A
ADD*AR2,16,A,B
STB,*AR3+
||SUB*AR2,B
LD*AR4,T
STB,*AR2+
||MPY*AR3+,A
bend:
PSHMAR0
MVDKsav_idx,AR0
MAR*AR2+0
MAR*AR3+0
BANZDgroup,*AR1-
POPMAR0
MAR*AR3-
LDsav_idx,A
SUB#1,A,B
STLMB,AR6
STLA,1,sav_idx
LDsav_grp,A
STLA,ASM,sav_grp
LDsav_sin,A
STLA,ASM,sav_sin
BANZDstage,*AR7-
MVDKsav_sin,AR0
;
STM#DATA+2,AR2
STM#DATA+2*N-2,AR3
STM#DATA+2*N+3,AR7
STM#DATA+4*N-1,AR6
STM#-2+N/2,BRC
RPTBDp3end-1
STM#3,AR0
;
ADD*AR2,*AR3,A
SUB*AR2,*AR3,B
STHA,ASM,*AR2+
STHA,ASM,*AR3+
STHB,ASM,*AR6-
NEGB
STHB,ASM,*AR7-
ADD*AR2,*AR3,A
SUB*AR2,*AR3,B
STHA,ASM,*AR2+
STHA,ASM,*AR3-0
STHB,ASM,*AR6-
NEGB
STHB,ASM,*AR7+0
p3end:
ST#0,*AR6-
ST#0,*AR6
p3test:
STM#DATA,AR2
STM#DATA+1,AR4
STM#DATA+2*N+1,AR5
ADD*AR2,*AR4,A
SUB*AR2,*AR4,B
STHA,ASM,*AR2+
ST#0,*AR2
MVDD*AR2+,*AR5-
STHB,ASM,*AR5
;
STM#DATA+4*N-1,AR3
STM#TWI2+512/N,AR4
STM#TWI1+512/N,AR5
STM#N-2,BRC
RPTBDp4end-1
STM#512/N,AR0
LD*AR2+,16,A
MACR*AR4,*AR2,A
MASR*AR5,*AR3-,A
LD*AR3+,16,B
MASR*AR5+0%,*AR2-,B
MASR*AR4+0%,*AR3,B
STHA,ASM,*AR2+
STHB,ASM,*AR2+
NEGB
STHB,ASM,*AR3-
STHA,ASM,*AR3-
p4end:
power:
STM#OUTPUT,AR3;AR3指向输出缓冲地址
STM#255,BRC;块循环计数器设置为255
RPTBDpower_end-1;带延迟方式的重复执行指令
STM#DATA,AR2;AR2指向AR[0]
SQUR*AR2+,A;A:
=AR2
SQURA*AR2+,A;A:
=AR2+AI2
STHA,7,*AR3;将A中的数据存入输出缓冲中,
ANDM#7FFFH,*AR3+;避免输出数据过大在虚拟示波器中显示错误
power_end:
Bpower_end
.end
编译fft.cmd加入如下内容:
/*fft.cmd*/
fft.obj
-mfft.map
-offt.out
MEMORY
{
PAGE0:
ROM(RIX):
origin=8000h,length=1000h
ROM1:
origin=9000h,length=0200h
PAGE1:
B2A(RW):
origin=0060h,length=10h
B2B(RW):
origin=0070h,length=10h
INTRAM1(RW):
origin=0400h,length=0200h
INTRAM2(RW):
origin=0800h,length=0200h
INTRAM3(RW):
origin=1400h,length=0800h
OTHER:
origin=2000h,length=800h
}
SECTIONS
{
.text:
{}>ROMPAGE0
INPUT:
{}>ROM1PAGE0
.data:
{}>INTRAM3PAGE1
twiddle1:
{}>INTRAM1PAGE1
twiddle2:
{}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 DSP 实验 报告