




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 北京邮电大学 数字信号处理硬件实验 学院: 班级: 学号: 姓名: 班内序号 实验一:常用指令实验一、 实验目的1.熟悉DSP开发系统的连接2.了解DSP开发系统的组成和结构和应用系统构成3.熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中断控制)。二、 实验设备计算机,CCS 2.0版软件,DSP仿真器,实验箱。三、 实验操作方法1、 系统连接 进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP开发系统与计算机连接有问题。2、 运行CCS程序先实验箱上电
2、,然后启动CCS,此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置是否正确。四、 实验步骤与内容(一) 简单指令程序运行实验 1、 实验使用资源 实验通过实验箱上的XF指示灯观察程序运行结果2、 实验过程启动CCS 2.0,并加载“exp01.out”;加载完毕后,单击“Run”运行程序;实验结果:可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;关闭所有窗口,本实验完毕。 源程序查看:
3、用下拉菜单中Project/Open,打开“Exp01.pjt”双击“Source”,双击“exp01.asm”可查看源程序。源程序注释如下:.mmregs.global _main_main: stm#3000h,spssbxxf ;将XF置1call delay ;调用延时子程序,延时rsbxxf ;将XF置0call delay ;调用延时子程序,b _main ;程序跳转到"_MAIN"nopnop ;延时子程序 delay: stm 270fh,ar3 ;设置辅助寄存器ar3 loop1: ;循环开始stm 0f9h,ar4;设置辅助寄存器ar4loop2:ban
4、z loop2,*ar4- ;跳转指令ar4做自减,在减到零之前一直做loop2banz loop1,*ar3-;跳转指令,ar3做自减,在ar3减到零之前,一直做loop1ret;返回指令nopnop.end实验截图(二)资料存储实验1、 实验使用资源本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。对于其它类型的CPU请参考查阅相关的资料手册。下面给出TMS32OVC5410的内存分配表:对于存储空间而言,映像表相对固定。值得注意的是内部寄存器与存储空间的映像关系。因此在编程应用时这些特定的空间不能作其它用途。对于程序存储空间而言,其映像表和CPU的工作模式有关。
5、当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在为计算机模式。具体的内存映像关系如上如所示。内存实验主要了解内存的操作和DSP的内部双总线结构。并熟悉相关的指令代码和执行过程等。 2、 实验过程连接好DSP开发系统,运行CCS软件;a) 在CCS的Memory窗口中查找C5410各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;b) 在CCS中装载实验示范程序,单步执行程序,程序中写入和读出的数据存储地址的变化;c) 改变其它寻址方式,进行观察数据存储器地址与写入和读出数据的的变化。本实验说明:本实验程序将对
6、0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。在CCS中可以观察DATA内存空间地址0X10000X100F值的变化。样例程序实验操作说明:启动CCS 2.0,并加载“exp02.out”,用“View”下拉菜单中的“Memory”查看内存单元,输入要查看的内存单元地址,本实验要查看0x1000H0x100FH单元的数值变化,输入地址0x1000H,查看0x1000H0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序,单击“Halt”暂停程序运行,查看0x1000H0x100FH单元内数值的变化关闭各窗口,本
7、实验完毕。源程序注释:;get some knowledge of the cmd file;the program is compiled at no autoinitialization mode.mmregs.global _main _main: ;store datastm 1000h,ar1 ;address of internal memoryrpt#07h st0aaaah,*ar1+ ;将数据"0AAAAH"存放到以地址1000H1007H的八个存储单元中.;read data then re-store stm 7h,ar3stm1000h,ar1stm
8、 1008h,ar2loop: ;循环的将1000H1007H的八个单元中的数据COPY到1008H100F的 ;八个存储单元中.ld*ar1+,t ;将辅助寄存器ar1的值赋给t,且ar1地址加1 stt,*ar2+ ;存储T寄存器的值.将t的值存储在ar2所对应内存中,且ar2地址加1banzloop,*ar3-here: ;寄存器ar3地址减1,当其值不为0时跳转到loop无条件转移至hereb here.end实验截图 (三)I/O实验1、 实验使用资源 数字量输入信号全部拓展出来,数字量输入接口主要由两个,D_Exp与扳东开关连接,PX4和PX5与电平转换芯片(74LVC2
9、45)连接,其功能分别为: D_Exp数字量输入扩展接口I0I1I2I3I4I5I6I7VCC 电平转换扩展接口PX45VIN0IN1IN2IN3PX53.3VOUT3OUT2OUT1OUT0通过PORTR,PORTW指令可以实现I/O口的输入输出功能,如数字量采集实验。 实验说明:实验中采用简单的一一映像关系来对I/O口进行验证,目的是使实验者能够对I/O 有一目了然的认识。在本实验系统中,提供的IO空间分配如下:CPU1:0x0000 switch input (X) 80x0001 LED output(X) 8CPU2:0x0001DAC0x0004Read_Key0x0006Writ
10、e_Key0x000FWrite_LCD0x8000 HPIC00x8001HPIC10x8002HPID0(AUTO)0x8003HPID1(AUTO)0x8004HPIA00x8005HPIA10x8006HPID0(NO AUTO)0x8007HPID1(NO AUTO)实验程序框图 注意: 电平转换接口主要考虑应用3.3V的中央处理器时,系统的电平兼容问题,用来保护CPU不受损坏。系统采用74LVC245电平兼容转换器件。2、 实验过程运行CCS程序,装载示范程序,调整K0K7的开关,观察LP1LP7 LED亮灭的变化,以及输入和输出状态是否一致。(注意:输出为0时点亮灯)例程序实验操
11、作说明启动CCS 2.0,并加载“exp03.out”,单击“Run”运行程序,任意调整K0K7开关,可以观察到对应LP0LP7灯“亮”或“灭”;单击“Halt”,暂停持续运行,开关将对灯失去控制。关闭所有窗口,本实验完毕。源程序查看:用下拉菜单中Project/Open,打开“Exp03.pjt”,双击“Source”,双击“exp03.asm”可查看源程序。代码如下:.mmregs.global_main.text_main:stm3100h,spstm1000h,ar1 portr8000h,*ar1 ;读入I/O 8000H数据,将其存储到数据空间的1000Hnop ;NOP为空操作,
12、起延时作用.nopportw*ar1,8001h ;将数据空间的1000H单元的数据,写出到I/O 8000Hnopnop b _main ;程序跳转到"_MAIN"执行. nop nop .end实验截图(四)定时器实验1、实验使用资源定时器实验时要用到C54芯片的定时器控制寄存器,定时器时间常数寄存器,定时器中断响应,寄存器定义详见C54芯片资料。C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD和定时减法寄存器TDDR定时器实验通过 L
13、ED(LP1LP7)来显示。在本系统中,时钟频率为20MHZ,令PRD = 0x4e1f,这样得到每1/1000秒中断一次,通过累计1000次,就能定时1秒钟。2、实验过程调入样例程序,装载并运行;例程序实验操作说明启动CCS 2.0,并加载“exp04.out”,单击“Run”运行,可观察到LED灯(LP0LP7)以一定的间隔时间不停摆动,单击“Halt”,暂停程序运行,LED 灯停止闪烁,单击“Run”,运行程序,LED灯又开始闪烁。关闭所有窗口,本实验完毕。exp04.c函数、子程序声明与定义void sys_ini() /系统初始化子程序 asm(" ssbx INTM&qu
14、ot;); /全局禁止所有可屏蔽中断 PMST&=0x00FF; /(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间 SWWSR=0x7000; /io空间7个等待周期,程序与数据空间0个等待周期 CLKMD=0x17FA; /CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间 void timer0_ini() /定时器0初始化子程序 TCR|=0x0010; /停止定时器0 PRD=0x2710; /PRD=10000(D) TCR|=0x000A; /TDDR=10(D),所以定时器时钟=1/(20M/10/10000)=5ms IMR=0x000
15、8; /使能定时器0中断 IFR=0xFFFF; /清除所有中断标志位 asm(" rsbx INTM"); /全局使能可屏蔽中断 TCR&=0xFFEF; /开始定时器0 TCR|=0x0020; /复位定时起0中断服务子程序声明与定义interrupt void timer0() /定时器0中断子程序 if(num=200) /记200次定时器中断,时间=200*5ms=1s show=show; /取反 num=0; else num+; return; 主程序void main(void) sys_ini(); timer0_ini(); for(;) po
16、rt8001=show; vectors.asm .global _c_int00,_timer0 .sect ".vecs" ;自定义向量表 reset: ;复位中断时跳转到c程序主函数(branch to C entry point延迟分支到c程序,默认入口地址c_int00) 开辟堆栈空间 b _c_int00 ;nopnopnmi: rete ;NMI 非屏蔽外部中断输入引脚,不可屏蔽中断时,返回并允许产生该中断nopnopnopsin17: .space 4*1
17、6 ;保留中断向量的地址空间sin18: .space 4*16sin19: .space 4*16sin20: .space 4*16sin21: .space 4*16sin22: .space 4*16sin23: .space 4*16sin24: .space 4*16sin25: .space 4*16sin26: .space 4*16sin27: .space 4*16sin28: .space 4*16sin29: .space 4*16sin30: .space 4*16int0: rete nop nop nopint1: rete ;中断寄存器设置为rete返回,允许中
18、断外部产生中断,并且直接返回 nop nop nopint2: rete nop nop noptint0: b _timer0 ;检测到定时器产生中断时,返回到c程序中的timer() nop nopbrint0: rete nop nop nopbxint0: rete nop nop nopdmac0: rete nop nop noptint1_dmac1: rete nop nop nopint3: rete nop nop nophpint: rete nop nop nopbrint1_dmac2: rete nop nop nopbxint1_dmac3: rete
19、 nop nop nopdmac4: rete nop nop nopdmac5: rete nop nop nop实验截图 (五)INT2中断实验1、实验使用资源本实验是进行C54芯片的INT2中断练习, C54芯片中断INT2是低电平单脉冲触发;实验采用导线一端连接D_Exp数字量输入扩展接口I0,经PX4的IN3,到PX5的OUT0电平转换,再与另一端连接INT2插孔;拨动开关K0一次,就产生一个低电平单脉冲;运行示范程序,观察LP1LP7 LED灯的输出变化;可观察到每拨动开关K0一次LP1LP7灯亮灭变化一次;2、实验过程样例程序实验操作说明启动CCS 2.0,并加载“exp05.o
20、ut”,单击“Run”运行程序,反复拨动开关K0,观察LP1LP7 LED灯亮灭变化,单击“Halt”暂停程序运行,反复拨动开关K0,LP1LP7 LED灯亮灭不变化; 关闭所有窗口,本实验完毕。源程序查看:用下拉菜单中Project/Open,打开“Exp05.pjt”,双击“Source”,双击“int2.c”、“initial.asm”、“port.asm”以及“vectors.asm”可查看各源程序。int2.cinterrupt void int2c(); extern void initial();extern voidporta();extern void portb();int
21、 flag=0,i=0;main()initial();/初始化while(1) /死循环; /空语句 interrupt void int2c() /中断子程序 i=i+1; if(i=1) ;当i为1时,让灯点亮,否则让i为零 if(flag=0) flag=1; ;当flag为1时,执行portb(),让ar1的值为aaaah,即第二四六八个灯亮orta();i=0; else flag=0; 当flag为0时,执行porta(),让ar1的值为5555h,即第一三五七个灯亮 po
22、rtb(); i=0; else i=0;return;initial.asm.mmregs.global _initial .text _initial:NOPLD #0, DP ; 将0装入数据页指针(DP)中 STM #0, CLKMD STM #0, CLKMD ; 设置pll为div分频模式 TstStatu1: LDM CLKMD, A AND #01b, A ;将A中数据和01b求与之后存入A中 BC TstStatu1, ANEQ; ANEQ,A不等于0时程序跳转到TstStatu1 STM #0xF7FF, CLKMD ; 设置C540
23、2 DSP 时钟到 10MHzSTM 0x3FA0, PMST ; vectors at 3F80h ARAM映射到数据和程序存储空间 ssbx 1,11 ; 设置ST1.INTM=1,停止所有的中断 stm #00h,imr;停止所有的中断stm #0ffffh,ifr;清除所有中断的标志位stm #04h,imr;开启int2的外部中断rsbx 1,11 ;开启所有中断ret .endport.asm .mmregs.global_porta.global_portb_porta: ; stm304h,ar1 ;将304
24、h赋值给辅助寄存器ar1st5555h,*ar1 ;将内存304h的内容赋值给5555h,2468灯亮portw*ar1,8001h ;将内存304h的值写入8001h端口 ret_portb:stm304h,ar1st0aaaah,*ar1 ;将内存304h的内容赋值给0aaaah,1257灯亮portw*ar1,8001h ;将内存304h的值写入8001h端口 retVector.asm .sect ".vectors" .ref _c_int00 ; 引用函数c_int100 .ref _int2c .align 0x80 ; 页边界
25、排列RESET: ;复位中断响应 BD _c_int00 ; 延迟分支到C程序默认入口地址c_int00是C程序的入口 STM #200,SP ; 将堆栈寄存器SP的值设为200nmi:RETE ;中断屏蔽置为0,响应中断,不可屏蔽中断是,是中断屏蔽取消后返回。 NOP NOP NOP sint17 .space 4*16 ; 保留中断向量的地址空间sint18 .space 4*16sint19 .space 4*16sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint2
26、3 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: ; 中断寄存器设置rete返回并允许中断外部中断产生时,直接返回。RETE NOP NOP NOPint1: RETE NOP NOP NOPint2: b _int2c ;定时器产生中断时,返回到C程序中的timer函数。 NOP NOPtint: RETE N
27、OP NOP NOPrint0: ;同步串口0(McBSP0)接受的中断,直接返回 RETE NOP NOP NOPxint0: ;同步串口0(McBSP0)发送的中断,直接返回 RETE NOP NOP NOPrint1: ; 同步串口1(McBSP1)接受的中断,直接返回 RETE NOP NOP NOPxint1: ;同步串口1(McBSP1)发送的中断,直接返回RETE NOP NOP NOPint3: RETE NOP NOP NOP 实验截图(六)A/D采样实验一、 实验目的1 掌握
28、利用TLV320AD50实现/转换的技术基本原理和常用方法。2 学会DSP的多信道缓冲串口的应用方法。3 掌握并熟练使用DSP和AD50的接口及其操作。4 通过实验加深对DSP系统频谱混叠认识。二、 实验设备计算机,CCS 2.0软件,DSP仿真器,实验箱,示波器,连接导线。三、 实验步骤和内容1 实验连线² 用短接块短接SS1的1,2脚,设置输出低频信号;短接S2 的Sin脚,设置输出正弦波信号,这时模拟信号产生单元SP1输出为低频正弦波。² JD跳线断开,设置语音处理单元输入信号为交流;并用导线连接SP1脚和JAD3的1脚,将模拟低频正弦波信号接入语音处理单元。
29、8; 用导线连接JAD1的INP和INPF,以及JAD2的INM和INMF,将语音处理单元输出的差动模拟信号接入AD50输入端。2 运行 CCS 2.0软件, 装入“exp06.pjt”工程文件,双击“exp06.pjt”及“Source”3加载“exp06.out”示范程序,在“exp06.c”中“READAD50()”处,设置断点,运行程序,通过用下拉菜单中的View / Graph的“Time/Frequency”打开一个图形观察窗口,调节输入信号的频率或幅值, 观察图形情况(幅值和频率),设置该图形观察窗口的参数,观察起始地址为0x1000H,长度为256的内存单元内的数据,该资料为输
30、入信号经A/D转换之后的数据,数据类型为16位整型,击“Animate”运行程序,在图形观察窗口观察A/D转换后的采样波形。在图形观察窗口观察A/D转换后的采样波形; 源程序查看exp06.c#include "tms320uc5402.h" ;文件预处理ioport unsigned port8008; ;全局变量定义与初始化/ad7822的地址unsigned int data_buff256;unsigned int j=0;函数、子程序声明与定义void sys_ini() /系统初始化子程序 /全局禁止所有可屏蔽中断 asm(" ssbxINTM&quo
31、t;) ; /(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间 PMST&=0x00FF ; /io空间7个等待周期,程序与数据空间0个等待周期 SWWSR=0x7000 ;/设置pll为div模式 CLKMD=0x0000 ;/等待设置完成 while(CLKMD=0x0001); /CLKOUT=(3+1)*CLKIN=40M,自动延时最长时间 CLKMD=0x37FA; /CLKOUT=(1+1)*CLKIN=20M,自动延时最长时间 /CLKMD=0x17FA; void int1_ini() IMR=0x0002; /使能外部中断1 IFR=0xFFFF; /
32、清除所有中断标志位 asm(" rsbx INTM"); /全局使能可屏蔽中断 中断服务子程序声明与定义interrupt void int1() /int1中断子程序 data_buffj=port8008&0x00FF; /读取ad7822转换数据 j+; if(j=255) j=0; return; 主程序void main(void) sys_ini(); int1_ini(); for(;) vector.asm .global _main,_int1 .sect ".vecs" ; 自定义
33、向量表 reset: b_main ;复位中断时跳转到c程序主函数(branch to C entry point延迟分支到c程序,默认入口地址c_int00) nop nopnmi: rete ;NMI 非屏蔽外部中断输入引脚,不可屏蔽中断时,返回并允许产生该中断 nop nop nop; 保留中断地址的空间 sin17: .space 4*16sin18: .space 4*16sin19: .space 4*16sin20: .space 4*16sin21: .space 4*16sin22: .spac
34、e 4*16sin23: .space 4*16sin24: .space 4*16sin25: .space 4*16sin26: .space 4*16sin27: .space 4*16sin28: .space 4*16sin29: .space 4*16sin30: .space 4*16int0: rete nop nop nopint1: b _int1 ; 跳转int1中断子程序 nop nopint2: rete ;中断寄存器设置为rete返回,允许中断外部产生中断,并且直接返回 nop nop noptint0: rete ;TIMER0 INTERRUPT nop nop
35、 nop brint0: rete ;BcBSP0 RECEIVE INTERRUPT nop nop nopbxint0: rete ;BcBSP0 TRANSMIT INTERRUPT nop nop nopdmac0: rete ;RESERVED OR DMA CHANNEL0 INTERRUPT nop nop noptint1_dmac1: rete ;TIMER1 INTERRUPT OR DMA CHANNEL1 INTERRUPT nop nop nopint3: rete ;EXTERNAL INT3 nop nop nophpint: rete ;HPI INTERRUP
36、T nop nop nopbrint1_dmac2: rete ;McBSP1 RECEIVE INTERRUPT OR DMA CHANNEL 2 INTERRUPT nop nop nopbxint1_dmac3: rete ;McBSP1 TRANSMIT INTERRUPT OR DMA CHANNEL 3 INTERRUPT nop nop nopdmac4: rete ;DMA CHANNEL 4 INTERRUPT nop nop nopdmac5: rete ;DMA CHANNEL 5 INTERRUPT nop nop nop .end实验七:D/A转换实验一、 实验目的1
37、 掌握利用TLV320AD50实现/转换的技术基本原理和常用方法。2 进一步学习DSP的多信道缓冲串口的应用方法。3 掌握并熟练使用DSP和AD50的输出接口及其操作。二、 实验设备计算机,CCS 2.0版软件,DSP仿真器,实验箱,示波器。三、 实验步骤与内容1 不需联机,通过示波器观测输出波形情况;2 运行CCS软件,加载示范源程序,了解实验程序; 3 加载示范程序“exp07.out”,并通过File/Data/Load装载波形数据sin.dat。.按F5运行程序,用示波器检测JAD4的3脚AD50_DAout输出一个正弦波;.在程序中,改变相应资料来实现改变波形和周期;得到的波形如下所
38、示:查看源程序vector.asm;-.def Interrupt_Vectors;.ref nNMI_SINT16;.ref SINT17;.ref SINT18;.ref SINT19;.ref SINT20;.ref SINT21;.ref SINT22;.ref SINT23;.ref SINT24;.ref SINT25;.ref SINT26;.ref SINT27;.ref SINT28;.ref SINT29;.ref SINT30;.ref _ExtInt0;.ref _ExtInt1;.ref _Tint0;.ref BRINT0_SINT4;.ref BXINT0_SINT5;.ref _Tint1;.ref _ExtInt3;.ref _mcbsp1_read;.ref _mcbsp1_write; .ref_ExtInt2.ref _c_int00;*STACK_LEN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 领导与环境适应能力的考核试题及答案
- 股东入股合同协议书(5篇)
- 消防安全总结范文(15篇)
- 土地厂房转让合同
- 软件测试中的伦理问题探讨试题及答案
- 行政组织理论的实际操作指南及2025年试题及答案
- 包船运输合同范文参考(17篇)
- 嵌入式操作系统的选择标准试题及答案
- 环境科学气候变化适应性试题库
- 物联网技术在智能仓储管理合同
- GB/T 36066-2025洁净室及相关受控环境检测技术要求与应用
- 浙江开放大学2025年《社会保障学》形考任务3答案
- 西藏事业单位c类历年真题
- 【MOOC】创新思维与创业实验-东南大学 中国大学慕课MOOC答案
- 通信工程建设标准强制性条文汇编(2023版)-定额质监中心
- 湖南省长沙市雅礼教育集团2023-2024学年七年级下学期期末语文试题
- (正式版)JBT 11270-2024 立体仓库组合式钢结构货架技术规范
- 进料检验报告单
- 2022年江苏省南京市中考历史试题(含答案)
- YYT 1182-2020 核酸扩增检测用试剂(盒)
- GB∕T 33212-2016 锤上钢质自由锻件 通用技术条件
评论
0/150
提交评论