DSP原理与应用实验报告.docx
- 文档编号:29437761
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:18
- 大小:68.29KB
DSP原理与应用实验报告.docx
《DSP原理与应用实验报告.docx》由会员分享,可在线阅读,更多相关《DSP原理与应用实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
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
;
@38H=A
NOP
NOP
AR0=#003AH
A=*AR6+0
T=#08H
SXM=1
B=*AR6-< AR7=#0220H *AR7=#0E5D8H A=*AR7+0B<<-12 @3AH=#665AH AR2=#023AH BK=#0 A=*AR2-0%<<12 BK=#002AH AR3=#0256H *AR3-=HI(B)<<8 ASM=#-8 *AR3+=A< AR4=#0216H *AR4=#8775H B=#025AH A=B< MMR(*AR4+)=B A=MMR(13H) AR2=#0245H *AR2=A<<7 @3AH=A< *AR2+0%=B<<4 ; *AR2=#1CH ASM=*AR2 T=*AR4+ LTD(*AR2+) B=RND(*AR2+) *AR3=#0F57AH A=UNS(*AR3) B=*AR3+ *AR3+0B=T TRN=#12ACH A=DBL(*AR4+) B=DUAL(*AR2-) DBL(*AR3-)=A DUAL(*AR4+)=B *AR3+=HI(A)< *AR2+=HI(B)< A=#3456H IF(AGT)*AR4+=HI(A)< B=#0F679H 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=@7AHACD6H .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=afffch<<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矩阵,在多次修改,调试后实验才取得了成功。 ,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 原理 应用 实验 报告