东南大学DSP实验报告.docx
《东南大学DSP实验报告.docx》由会员分享,可在线阅读,更多相关《东南大学DSP实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
东南大学DSP实验报告
第三章DSP芯片系统实验
实验3.1:
数据存取实验
一.实验目的
1.了解TMS320F2812A的内部存储器空间的分配及指令寻址方式。
2.了解ICETEK-F2812-A评估板扩展存储器空间寻址方法,及其应用。
3.了解ICETEK-F2812-EDU实验箱扩展存储器空间寻址方法,及其应用。
4.学习用CodeComposerStudio修改、填充DSP内存单元的方法。
5.学习操作TMS32028xx内存空间的指令。
二.实验设备
计算机,ICETEK-F2812-A-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A评估板+相关连线及电源)。
三.实验内容
在外部SARAM的0x80000~0x8000f单元置数0~0xf,将该单元块存储的数据复制到0x80100~0x8010f处,最后通过“Memory”查看窗口观察各存储区中的数据。
四.实验原理
TMS32028xxDSP内部存储器资源介绍:
TMS32028xx系列DSP基于增强的哈佛结构,可以通过三组并行总线访问多个存储空间。
它们分别是:
程序地址总线(PAB)、数据读地址总线(DRAB)和数据写地址总线(DWAB)。
由于总线工作是独立的,所以可以同时访问程序和数据空间。
TMS32028xx系列DSP的地址映象请参考第一章1.2.4节ICETEK-F2812-A评估板的存储空间定义及寄存器映射说明中的介绍。
五.实验步骤
1.实验准备
连接实验设备。
参见第一章1.3.1节中的“硬件连接方法”。
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源(关闭实验箱上的扩展模块和信号源电源开关)。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行。
参见第一章1.4.2节中的“设置CCS工作在硬件仿真环境”。
3.启动CodeComposerStudio2.21选择菜单DebugàResetCPU。
4.打开工程文件工程文件为:
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0201-Memory\Memory.pjt
5.编译、手动下载程序。
如图图3.1.1。
图3.1.1手动下载程序
6.程序区的观察和修改
(1)运行到main函数入口:
选择菜单DebugàGoMain,当程序运行并停止在main函数入口时,展开“Disassembly”反汇编窗口,发现main函数入口地址为81000H,也就是说从此地址开始存放主函数的程序代码。
(2)显示程序区:
图3.1.2程序区
(3)修改程序区的存储单元
程序区单元的内容由CCS的下载功能填充,但也能用手动方式修改。
双击“Code”窗口地址“0x81000:
”后的第一个数,显示“EditMemory”窗口,在“Data”中输入0x20,修改“page:
”为“program”,单击“Done”按钮,观察“Code”窗口中相应地址的数据被修改,同时在反汇编窗口中的反汇编语句也发生了变化,当前语句被改成了“TRAP#0”。
将地址0x81000上的数据改回0xfe08,程序又恢复成原样。
(4)观察修改数据区
1显示数据存储区:
图3.1.3显示数据存储器
同样打开窗口Data1,起始地址在0x80100。
2修改数据单元:
数据单元可以单个进行修改,只需双击想要改变的数据单元即可,如同第(3)步中修改程序区单元的操作一样。
3
填充数据单元:
图3.1.4观察DATA数据
观察“Data”窗口中的变化。
同样将0x80100开始的头16个单元的值用0填充。
7.运行程序观察结果
(1)打开Memory.c,在有注释的行上加软件断点。
(2)按“F5”键运行到各断点,注意观察窗口“Data”和“Data1”中的变化,学会用程序修
改数据区语句的方法。
8.退出CCS
六.实验结果
实验程序运行之后,位于数据区地址80000H开始的16个单元的数值被复制到了数据区80100H开始的16个单元中。
通过改写内存单元的方式,我们可以手工设置DSP的一些状态位,从而改变DSP工作的状态。
七.问题与思考
修改数据单元内容和修改程序单元内容的操作方式是否一样?
实验3.2:
指示灯与拨码开关控制实验
一.实验目的
1.了解ICETEK-F2812-A评估板在TMS320F2812芯片外部扩展存储空间上的扩展。
2.了解ICETEK-F2812-A评估板上指示灯扩展原理。
3.学习在C语言中使用扩展的控制寄存器的方法。
二.实验设备
计算机,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连线及电源)。
三.实验内容
通过ICETEK-F2812-A评估板上的扩展指示灯和拨码开关,实现TMS320F2812芯片的存储器扩展接口(EMIF)的数字输入与输出。
四.实验原理
1.TMS320F2812芯片的存储器扩展接口
存储器扩展接口是DSP扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。
ØICETEK-F2812-A评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯、
DIP开关和D/A设备。
具体扩展地址如下(见第一章1.2.4节的表1.7):
C0003-C0007h:
D/A转换控制寄存器
C0001h:
板上DIP开关控制寄存器
C0000h:
板上指示灯控制寄存器
Ø与ICETEK-F2812-A评估板连接的扩展模块也使用扩展空间:
108000-108004h:
读-键盘扫描值,写-液晶控制寄存器
108002-108002h:
液晶辅助控制寄存器
108003-108004h:
液晶显示数据寄存器
108005-108005h:
发光二极管显示阵列控制寄存器
2.指示灯扩展原理
图3.2.1指示灯扩展原理
3.拨码开关扩展原理
图3.2.2拨码开关扩展原理
4.
实验程序流程图
五.实验步骤
1.实验准备
连接实验设备。
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源(关闭实验箱上的扩展模块和信号源电源开关)。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
3.启动CodeComposerStudio2.21
选择菜单DebugàResetCPU。
4.打开工程文件
工程文件为:
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0302-DIP\DIP.pjt
打开源程序DIP.c阅读程序,理解程序内容
5.编译、下载程序。
6.运行程序,改变拨码开关各位的状态,观察指示灯DS1-DS4的显示。
7.退出CCS。
六.实验结果
1.映射在扩展存储器空间地址上的指示灯控制寄存器在设置时是低4位有效的,数据的最低位对应指示灯D1,次低位对应指示灯D2,...依次类推。
2.映射在扩展存储器空间地址上的拨码开关控制寄存器在回读时是低4位有效的,数据的最低位对应拨码开关1,次低位对应拨码开关2,...依次类推。
七.问题与思考
ICETEK-F2812-A评估板上的指示灯控制寄存器是可读可写的,请问用什么办法可以回读指示灯状态?
实验3.3:
DSP的定时器实验
一.实验目的
1.通过实验熟悉F2812A的定时器;
2.掌握F2812A定时器的控制方法;
3.掌握F2812A的中断结构和对中断的处理流程;
4.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二.实验设备
计算机,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连线及电源)。
三.实验内容
应用TMS320F2812芯片的定时器0,以定时器中断方式实现定时功能,并以流水灯的显示变化周期反映定时时间。
四.实验原理
1.通用定时器介绍及其控制方法
TMS320F2812A内部有三个32位通用定时器(TIMER0/1/2),其中定时器1和2被保留给实时操作系统(DSPBIOS)用,只有定时器0可以提供给用户使用。
2.中断响应过程
(1)接受中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
(2)响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即作出响应。
(3)准备执行中断服务程序并保存寄存器的值。
(4)执行中断服务子程序。
调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
3.中断类别
可屏蔽中断:
这些中断可以用软件加以屏蔽或解除屏蔽。
不可屏蔽中断:
这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执行。
所有软件调用的中断都属于该类中断。
4.中断的优先级
如果多个中断被同时激发,将按照他们的中断优先级来提供服务。
中断优先级是芯片内部已定义好的,不可修改。
5.
实验程序流程图
6.实验程序分析
本实验设计的程序是在上一个实验的基础上修改得来,由于上一个实验控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀。
采用中断方式实现指示灯的定时闪烁,时间更加准确。
五.实验步骤
1.实验准备
连接实验设备。
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源(关闭实验箱上的扩展模块和信号源电源开关)。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
3.启动CodeComposerStudio2.21
选择菜单DebugàResetCPU。
4.打开工程文件
打开菜单“Project”的“Open”项;
选择C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0303-Timer目录中的“Timer.pjt”。
在项目浏览器中,双击time.c,激活time.c文件,浏览该文件的内容,理解各语句作用。
5.编译、下载程序。
6.运行程序,观察结果。
7.改变“CpuTimer0Regs.PRD.all=0xffff;”函数里的值;重复步骤5,6观察实验现象。
8.退出CCS
六.实验结果
Ø指示灯在定时器的定时中断中按照设计定时闪烁。
Ø使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转换,日常生活中的计时器计数、空调的定时启动和关闭等。
Ø在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活的闪烁方式可表达多种状态信息。
七.问题与思考
改变TMS320F2812定时器0的定时时间有几种方式?
实验3.4:
外中断实验
一.实验目的
1.通过实验熟悉F2812A的中断响应过程。
2.学会C语言中断程序设计,以及应用中断程序控制程序流程。
二.实验设备
计算机,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连线及电源)。
三.实验内容
应用小键盘产生中断。
当有键按下时,向DSP的XINT2发送中断信号,DSP响应中断,执行中断服务子程序,控制指示灯的闪烁。
四.实验原理
1.中断及中断处理过程
(1)中断是一种由硬件或软件驱动的信号,DSP在接到此信号时,将当前程序悬挂起来,转向去执行另外一个任务,我们称为中断服务程序(ISR)。
TMS320f28xDSP可支持32个ISR,可由硬件或软件触发。
所有的C28x中断,可以分成可屏蔽中断和不可屏蔽中断两种,软件中断是不可屏蔽的。
(2)DSP处理中断的步骤
1接收中断请求:
请求由软件或硬件发出。
2响应中断请求:
对于可屏蔽中断,需要满足若干条件,才发生响应;而对于不可屏蔽中断,则立即响应。
3准备执行中断服务程序:
完成当前正在执行的指令;将进入流水线但还未解码的指令清除。
自动保存若干寄存器的值到数据堆栈和系统堆栈。
取得用户定义的中断向量表中当前中断向量,中断向量指向中断服务程序入口。
4执行中断服务程序:
中断服务程序包含中断返回指令,这样返回时可以出栈以前保存的关键寄存器数据,从而恢复中断服务程序执行前的现场。
(3)外中断。
TMS320F2812可以响应两个外中断。
2.扩展模块的键盘接口
扩展模块(显示/控制模块)通过接口P8连接小键盘,接收小键盘传送的扫描码,并在每个扫描码结束后保存,同时向DSP的XINT2发送中断信号;当DSP读键盘时将扫描码送到数据总线上。
小键盘上每次按下一个键将产生2个扫描码、2次中断。
3.程序编制
由一个不含中断处理程序的工程通过改写加入中断处理程序部分大致需要如下操作(假设使用INT2):
(1)编制中断服务程序:
可以用C语言程序实现,编写单独的一个函数XINT,此函数使用interrupt修饰,没有参数和返回值。
(2)构造中断向量表:
程序中“InitPieVectTable();”是初始化向量表。
“PieVectTable.XINT2=&XINT2_isr;”把中断服务程序和向量表该中断对应起来。
(3)主程序中进行初始化设置:
使能中断,清中断等。
4.实验程序流程图
五.实验步骤
1.实验准备
(1)连接实验设备。
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源,接通扩展模块电源(关闭信号源电源开关)。
(2)连接实验箱附带键盘的PS2插头到扩展模块的“键盘接口”P8。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
3.启动CodeComposerStudio2.21,选择菜单DebugàResetCPU。
4.打开工程文件
工程目录:
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0304-Xint\xint.pjt
5.浏览xint.c文件的内容,理解各语句作用。
6.编译、下载程序。
7.运行程序,观察结果。
运行程序,按一下小键盘上任意一个键,注意观察扩展模块上指示灯闪烁的情况。
8.观察中断函数的执行
选择“Debug”菜单中“Halt”暂停运行程序,在XINT2中断程序中的语句上加软件断点,重新运行程序(选择“Debug”菜单中“Run”),观察何时程序停留在断点上。
9.退出CCS。
六.实验结果
通过实验可以发现,每次按下键盘均会发生两次中断,当按下键不放时会产生连续的中断;只有在外中断发生时,xint2中断函数才会被执行。
七.问题与思考
TMS320F2812芯片的中断设置与响应过程?
实验3.5:
单路、多路模数转换(A/D)实验
一.实验目的
1.通过实验熟悉F2812A的定时器。
2.掌握F2812A片内A/D的控制方法。
二.实验设备
计算机,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连线及电源)。
三.实验内容
应用TMS320F2812A芯片自带模数转换模块,将信号发生器上的正弦、三角波或方波通过AIN0和AIN1通道输入转换成12位的数字量,并且在CCS的图形窗口中显示。
四.实验原理
1.TMS320F2812A芯片自带模数转换模块的特性
12位带流水线的模数转换模块,时钟配置在25MHz,最高采样带宽12.5MSPS,16个模拟输入通道(AIN0—AIN15),内置双采样-保持器。
ADC模块的16个通道,可配置为两个独立的8通道模块,以方便为事件管理器A和B服务。
两个独立的8通道模块可以级连组成16通道模块。
在ADC内部只有一个转换器,即同一时刻只有1路A/D进行转换。
采样幅度:
0-3v,切记输入A/D的信号不要超过这个范围,否则会烧坏2812芯片的。
2.模数转换的程序控制
模数转换相对于计算机来说是一个较为缓慢的过程。
一般采用中断方式启动转换及保存结果,这样可以少占用的CPU处理时间。
设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,并能及时地保存结果。
3.
实验程序流程图
五.实验步骤
1.
实验准备
(1)信号源接入A/D输入:
1取出2根实验箱附带的信号线(如右图,两端均为单声道语音插头)。
2用1根信号线连接实验箱底板上信号源I模块的“波形输出”插座(图3.5.1中的3或4)和“A/D输入”模块的“ADCIN0”插座(图3.5.1中的A),信号源I的输出波形即可送到ICETEK-F2812-A评估板的A/D输入通道0。
3用1根信号线连接实验箱底板上信号源II模块的“波形输出”插座(图3.5.1中的c或d)和“A/D输入”模块的“ADCIN1”插座(图3.5.1中的B),信号源II的输出波形即可送到ICETEK-F2812-A评估板的A/D输入通道1。
注意:
如果使用2812单板,请把您的信号源输入端接到P2扩展接口上的ad输入引脚,把地线接到扩展接口上的AGND引脚上(具体位置参考ICETEK-F2812-A评估板原理图)。
4设置信号源I:
Ø调整拨动开关“频率选择”(图3.5.1中的5)拨到“100Hz-1KHz”档(图3.5.1中的10)。
Ø将“频率微调”(图3.5.1中的6)顺时针调到头(最大)。
Ø调整拨动开关“波形选择”(图3.5.1中的7)拨到“三角波”档(图3.5.1中的11)。
Ø将“幅值微调”(图3.5.1中的8)顺时针调到头(最大)。
图3.5.1信号源面板
5设置信号源II:
Ø调整拨动开关“频率选择”(图3.5.1中的e)拨到“100Hz-1KHz”档(图3.5.1中的j)。
Ø将“频率微调”(图3.5.1中的f)顺时针调到头(最大)。
Ø调整拨动开关“波形选择”(图3.5.1中的g)拨到“正弦波”档(图3.5.1中的k)。
Ø将“幅值微调”(图3.5.1中的h)顺时针调到头(最大)。
(2)调整信号源输出幅度
必须保证A/D输入通道输入的模拟信号幅度在0-3V之间。
先用示波器检测信号源输出范围,保证最小值0V最大值3V,然后再接入A/D输入通道。
否则容易损坏DSP芯片的模数采集模块。
(3)连接实验设备。
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源,接通扩展模块电源。
打开信号源电源开关,即将两个信号源的电源开关(图3.5.1中的2和b)拨到“开”的位置。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
3.启动CodeComposerStudio2.21
选择菜单DebugàResetCPU。
4.打开工程文件
Ø工程目录:
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0305-AD\ADC.pjt。
Ø在项目浏览器中,双击adc.c,打开adc.c文件,浏览该文件的内容,理解各语句作用。
5.编译、下载程序。
6.打开观察窗口
Ø选择菜单“View”、“Graph”、“Time/Frequency…”做如下设置,然后单击“OK”按钮:
图3.5.2观察窗口设置1
Ø选择菜单“View”、“Graph”、“Time/Frequency…”做如下设置,然后单击“OK”按钮:
图3.5.3观察窗口设置2
Ø在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
通过设置,我们打开了两个图形窗口观察两个通道模数转换的结果。
7.运行程序观察结果
Ø单击“Debug”菜单,“Run”项,运行程序;
Ø停止运行,观察“ADCIN0”、“ADCIN1”窗口中的图形显示;
Ø适当改变信号源的频率,按F5健再次运行,停止后观察图形窗口中的显示。
注意:
输入信号的频率不能大于10KHz,否则会引起混叠失真,而无法观察到波形,如
果有兴趣,可以试着做一下,观察采样失真后的图形。
8.选择菜单FileàworkspaceàsaveworkspacsAs…,输入文件名SY.wks。
9.退出CCS
六.实验结果
用实验中的设置,我们可以看到结果为:
图3.5.4结果输出
七.问题与思考
引起波形混叠失真的原因是什么?
实验3.6:
单路、多路数模转换(D/A)实验
一.实验目的
1.了解数模转换的基本操作;
2.了解ICETEK-F2812-A评估板扩展数模转换方式;
3.掌握数模转换程序设计方法。
二.实验设备
计算机,示波器,ICETEK-F2812-EDU实验箱(或ICETEK仿真器+ICETEK-F2812-A系统板+相关连线及电源)。
三.实验内容
应用ICETEK-F2812-A评估板上扩展的DAC7617数模转换模块,将0~0xfff的数字量转换成模拟的三角波,并用示波器观察波形输出。
四.实验原理
1.数模转换操作
在ICETEK-F2812-A评估板上,使用的数模转换芯片是DAC7617,它可以同时实现四路数模转换输出,12位精度,转换时间10μs。
其控制方式较为简单:
首先将需要转换的数值通过数据总线传送到DAC7617上相应寄存器,再发送转换信号,经过一个时间延迟,转换后的模拟量就从DAC7617输出引脚输出。
2.DAC7617与TMS320F2812A的连接
TMS320F2812ADSP外扩数模转换芯片DAC7617,DAC7617的转换寄存器被映射到C0003-C0007h。
在DAC7617的输出端,为了增加输出功率,经过一级运放再输出到评估板插座上。
关于DAC7617的外扩方法,请参见第一章1.2.5节。
硬件原理图:
输出波形
P2
图3.6.1硬件原理图
3.
实验程序流程图
五.实验步骤
1.连接实验设备
连接仿真器USB口接线,打开实验箱电源开关,接通评估板电源(关闭扩展模块电源、
信号源电源开关)。
2.设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行
3.启动CodeComposerStudio2.21
选择菜单DebugàResetCPU。
4.打开工程文件
工程目录:
C:
\ICETEK-F2812-A-EDUlab\DSP281x_examples\lab0306-Dac\dac.pjt。
浏览dac.c文件的内容,理解各语句作用。
5.编译、下载程序。
6.运行程序,观察结果。
用信号线从实验箱底板上右侧“D/A输出”的四个插座引线到示波器。
也可以用扩展模块
右侧的DAOUT1-DAOUT4测试勾连接示波器。
单击菜单“Debug”à“Run”项,运行程序,观察示波器上的波形。
7.退出CCS
六.实验结果
四路输出均为0-5V,示波器显示波形为三角波。
七.问题与思考
采用计算法输出波形,这样做的缺点是速度慢,波形的形状有运算失真;优点是占用存储空间很少。
请考虑使用别的方法产生三角波、正弦波输出(如查表法)。
实验3.7:
异步串口通信实验
一.实验目的
1.了解ICETEK