第二章 DSP实验
实验一 常用指令和数据存储实验
一、实验目的
1.熟悉SEED-DEC5502实验环境;
2.熟悉CCS集成开发环境,掌握工程的生成方法,掌握CCS集成开发环境的调试方法;
3.了解TMS320C55x 汇编语言程序结构和一些简单的汇编语句用法,学习在CCS 环境中调试汇编代码;
4.了解TMS320VC5502的内部存储器空间的分配及指令寻址方式,学习用Code Composer Studio修改、填充DSP内存单元的方法,学习操作TMS320VC5502内存空间的指令。
5.掌握DSP片上DARAM的工作方式,了解DARAM存储空间的分配,掌握DSP片上DARAM中数据的存取。
二、实验设备
计算机,CCS 2.0版软件,DSP仿真器,DSP实验箱。
6
三、实验背景知识
汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C 语言编制的程序也稍有不同。汇编语言程序在执行时直接从用户指定入口开始,而C 语言程序在执行时,先要调用C 标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序main()运行。
TMS320VC5502的片上DARAM大小为32K×16-bit(64K bytes)。DARAM在一个机器周期内能被访问两次,因此DARAM提高了系统的性能。DARAM由8块4K×16-bit模块组成(见下图1-1所示)。
图1-1 DARAM 块的组成
每个模块在一个周期内能够执行两次读取或一次读取一次写入或两次写入。DARAM位于000000h-00FFFFh的地址范围内,它能够被程序、数据或DMA总线访问。
四、实验要求
7
1.熟悉CCS环境,学习在CCS环境下进行DSP程序开发的一般过程与方法;
2.编写简单的DSP汇编源程序,掌握一些常用汇编指令的用法;
3.掌握DSP片上DARAM中数据的存取。对DSP进行初始化、在片上DARAM上写数据,检查并读取片上DARAM的数据。
五、实验步骤与内容
(一)常用指令部分
1.实验程序及包含的文件
(1)addasm.asm:实验的主程序;
(2)SEED_DEC5502.gel:系统初始化;
(3)SEED_DEC5502.cmd:声明了系统的存储器配置与程序各段的连接关系。
2.实验准备
首先将D:盘下03. Examples of Program \\ 05. SEED-DTK5502例程目录下的3.1.3 addasm文件夹拷贝到E:盘根目录下。
8
(1)DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;
(3)打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的
+5V,+3.3V,+15V,-15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。
3.具体实验步聚
(1)打开CCS软件,进入CCS的主界面;
(2)运行Project/Open命令,装入addasm.pjt工程文件;运行File/Load GEL命令,添加SEED_DEC5502.gel文件;在工程管理窗口中,双击Source文件夹下的汇编源文件addasm.asm,可以在右边窗口中看到该文件的具体内容,如下图1-2所示;
9
图1-2 汇编源文件窗口
(3)运行Project/Rebuild All命令,对工程当中的所有文件进行编译、链接以便形成可以在目标板上运行的addasm.out可执行文件;
(4)运行File/Load Program命令,装载addasm.out文件(在3.1.3 addasm\\Debug文件夹下),进行调试;
(5)运行Debug/Run命令,运行程序;
(6)运行View/Registers/CPU Registers命令,查看结果,观察寄存器(AR0和AR1)的值,观察结果如下图1-3所示。
图1-3 寄存器观察窗口
由运行结果可知,程序运行完成后,寄存器AR0的值为0AH,寄存器AR1的值为14H。
(二)数据存储部分
10
1.实验程序及包含的文件
(1)DEC5502_DARAM.c:这是实验的主程序,包含了系统初始化,系统时钟设置,在片上DARAM上写数据,读片上DARAM数据并检查等;
(2)SEED_DEC5502.cmd:声明了系统的存储器配置与程序各段的连接关系。
2.实验准备
首先将D:盘下03. Examples of Program \\ 05. SEED-DTK5502例程目录下的3.2.3 DEC5502_DARAM文件夹拷贝到E:盘根目录下。
(1)DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;
(3)打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的
+5V,+3.3V,+15V,-15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。
3.具体实验步聚
11
(1)打开CCS软件,进入CCS的主界面;
(2)运行Project/Open命令,装入DEC5502_DARAM.pjt工程文件;运行File/Load GEL命令,添加SEED_DEC5502.gel文件;在工程管理窗口中,双击Source文件夹下的C语言源文件DEC5502_DARAM.c,可以在右边窗口中看到该文件的具体内容,如下图1-4所示;
图1-4 C语言源文件窗口
(3)运行Project/Rebuild All命令,对工程当中的所有文件进行编译、链接以便形成可以在目标板上运行的DEC5502_DARAM.out可执行文件;
(4)运行File/Load Program命令,装载DEC5502_DARAM.out文件(在3.2.3 DEC5502_DARAM \\Debug文件夹下),进行调试;
12
(5)在DEC5502_DARAM.c程序的第48行“Errcount=0;”和第56行“if(Errcount!=0)”处设置断点,如图1-5所示;
图1-5 断点设置图
(6)运行Debug/Run命令,运行程序,程序会停在第一个断点处;然后运行View/Memory命令,可以打开Memory Windows Options对话框,按照图1-6对选项进行设置,单击OK按钮,出现存储器窗口,如图1-7所示。
13
图1-6 存储器选项窗口
图1-7 存储器窗口
(7)再次运行Debug/Run命令,程序会停在第二个断点处;然后运行View/Watch Window命令,可以打开观察窗口,如图1-8所示。其中i变量的值表示从片上DARAM读出的数据总个数,Errcout表示从片上DARAM中读出的错误数据的个数。如果Errcout的值为0,则表明SEED_DEC5502 片上DARAM中数据存取操作成功;否则SEED_DEC5502 片上DARAM 中数据存取操作失败。
图1-8 变量观察窗口
(8)继续运行Debug/Run命令,可以观察到如下图1-9所示的输出结果。
14
图1-9 程序运行结果图
六、实验报告要求
1.写出主程序,并写出运行结果;
2.写明对程序进行了何种修改,给出修改部分程序,并写出运行结果;
3.对实验进行总结,写结论及体会。
实验二 数字波形产生实验
一、实验目的
1.了解数字波形产生的基本原理;
2.学习用C55x DSP芯片产生正弦信号的基本方法和步骤;
15
3.学习用标准C语言编制程序;了解常用的C语言程序设计方法和组
成部分;
4.了解CCS集成开发环境的操作环境和基本功能;熟悉在CCS环境下进行C语言程序开发的过程及方法。
二、实验设备
计算机,CCS 2.0版软件,DSP仿真器,实验箱。
三、基础理论
数字波形信号发生器是利用微处理器芯片,通过软件编程和D/A转换,产生所需要信号波形的一种方法。在通信、仪器和控制等领域的信号处理系统中,经常会用到数字正弦波发生器。
一般情况,产生正弦波的方法有两种:
1.查表法。此种方法用于对精度要求不是很高的场合。如果要求精度高,表就很大,相应的存储器容量也要很大。
2.泰勒级数展开法。这是一种更为有效的方法。与查表法相比,需要的存储单元很少,而且精度高。
16
一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:
x3x5x7x9x2x2x2x2sinxx(1(1(1(1))))3!5!7!9!23456789 x2x4x6x8x2x2x2x2cos11(1(1(1))))2!4!6!8!2345678
其中,x为的弧度值。
四、实验要求
要求采用泰勒级数展开法,来构造正弦波信号,计算点数为256点;用CCS的图形观察功能在PC机上将正弦波图形显示出来,并画图。
五、实验步骤和内容
1.实验准备
(1)DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;
(3)打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的
17
+5V,+3.3V,+15V,-15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。
2.具体实验步骤
(1)打开CCS软件,进入CCS的主界面;
(2)按照在CCS环境下进行DSP程序开发的一般过程和实验要求编写程序;首先在E盘建立一个自己的工作目录,然后运行Project/New命令,新建一个工程文件(扩展名为.pjt);接着运行File/New/Source File命令新建扩展名为.c的主程序和扩展名为.cmd的链接命令文件;
(3)运行Project /Add Files to Project命令,将扩展名为.c的主程序、扩展名为.cmd的链接命令文件和C的运行支持库文件rts55x.lib添加到工程文件当中去;在工程管理窗口中,双击Source文件夹下的C语言源文件,可以在右边窗口中看到该文件的具体内容,如下图2-1所示;
18
图2-1 C语言源文件窗口
(4)运行Project/Build命令,对工程当中的所有文件进行编译、链
接,以便形成可以在目标板上运行的扩展名为.out可执行文件;
(5)运行File/Load Program命令,装载.out文件,进行调试;
(6)运行Debug/Run命令,运行程序;
(7)运行View/Graph/Time Frequency命令,打开一个图形观察窗口,对观察窗口的参数进行正确设置,如下图2-2所示,以便观察利用泰勒级数产生的波形;
19
图2-2 图形观察窗口参数设置图
(8)尝试修改主程序中和正弦波频率有关的参数值,“Rebuild”及“Load”后,单击“Run”运行程序,观察产生信号频率变化;
(9)关闭工程文件;关闭所有窗口,本实验完毕。
六、实验报告要求
1.写出主程序及程序运行结果,绘制正弦波图形;
2.对结果进行分析,对实验进行总结,写结论及体会。
20
实验三 数字图像处理实验
一、实验目的
1.了解数字图像处理的基本原理;
2.学习灰度图像反色处理技术;
3.学习灰度图像二值化处理技术;
4.掌握数字图像处理在DSP上的实现。
二、实验设备
计算机,CCS 2.0版软件,DSP仿真器,实验箱。
三、基础理论
1.图像的反色
将图像按象素进行求反,取得类似照相底片效果。求反处理的图像与原始图“黑白颠倒”,可以看清原始图中灰黑区域的情况。求反的图像一般用于数字图像的初步处理。图3-1为原始图像,对图3-1进行反色处理后的图像如下图3-2所示。
21
图3-1 原始图像 图 3-2 反色后的图像
设DA表示输入图像的灰度,DB表示输出图像的灰度。图像反色的灰度变换方程为DBf(DA)255DA
2.图像的二值化
22
灰度的阈值变换可以将一幅灰度图像转换成黑白二值图像。它的操作过程是先由用户指定一个阈值,如果图像中其像素的灰度值小于该阈值,则将
该像素的灰度值设置为0,否则灰度值设置为255。
灰度的阈值变换的变换函数表达式为
f(x)0(xT)255(xT)
其中T为指定的阈值。
对图3-1进行二值化后的图像如下图3-3所示。
图3-3 二值化后的图像
四、实验要求
23
要求实现灰度图像的读入、反色处理和二值化处理,并将原灰度图像、
反色处理后和二值化处理后的图像显示出来。
五、实验步骤和内容
1.实验准备
(1)DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1相连接;
(3)打开SEED-DTK5502的电源。观察SEED-DTK_MBoard单元的
+5V,+3.3V,+15V,-15V的电源指示灯以及SEED-DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。
(4)复习数字图像处理的基本原理,重点学习灰度图像反色处理和二值化处理相关的理论知识;
(5)在计算机E盘,建立“Tu”子目录,将“Lena64.bmp”文件拷入;
2.具体实验步骤
24
(1)打开CCS软件,进入CCS的主界面;
(2)按照在CCS环境下进行DSP程序开发的一般过程和实验要求编写程序;首先在E盘建立一个自己的工作目录,然后运行Project/New命令,新建一个工程文件(扩展名为.pjt);接着运行File/New/Source File命令新建扩展名为.c的主程序和扩展名为.cmd的链接命令文件;将C的运行支持库文件rts55x.lib(位于C:\i\\c5500\\cgtools\\lib目 录下)复制到E盘自己建立的工作目录下;
(3)运行Project /Add Files to Project命令,将扩展名为.c的主程序、扩展名为.cmd的链接命令文件和C的运行支持库文件rts55x.lib添加到工程文件当中去;在工程管理窗口中,双击Source文件夹下的C语言源文件,可以在右边窗口中看到该文件的具体内容,如下图3-4所示;然后可以继续编辑、修改源程序,以便满足实验要求。
25
图3-4 C语言源文件窗口
(4)运行File/Load GEL命令,添加SEED_DEC5502.gel文件;运行Project/Build命令,对工程当中的所有文件进行编译、链接以便形成可以在目标板上运行的扩展名为.out可执行文件;
(5)运行File/Load Program命令,装载.out文件,进行调试;
(6)在主程序中,在三个“i=0”处设置三个断点;如下图3-5所示;
26
图3-5 设置断点示意图
单击“Run”,程序运行到第一个断点处停止;
(7)运行View/Graph/Image命令打开一个图形观察窗口,以观察程序载入的“Lena64.bmp”图像,该图像应保存在“E:\\Tu”目录中;按下图3-6设置该图形观察窗口,观察变量y,为64*64的二维数组。
27
图3-6 图形观察窗口参数设置图
下图3-7为“Lena64.bmp”在CCS环境下的显示图像。
图3-7 原灰度图
28
单击“Run”,程序运行到第二个断点处停止,这时可在图形观察窗口中,观察原图像经反色处理后的结果图像,如下图3-8所示。
图3-8 反色处理后结果图
单击“Run”,程序运行到第三个断点处停止,这时可在图形观察窗口中,观察到图像经过二值化处理后的结果图像,如下图3-9所示。其中,二值化处理阈值设为128。
29
图3-9 二值化处理后结果图
(8)尝试修改主程序中的阈值,“Rebuild”及“Load”后,单击“Run”运行程序,观察图像的变化;
(9)关闭工程文件;关闭所有窗口,本实验完毕。
六、实验报告要求
1.阐述灰度图像反色处理和二值化处理基本理论; 2.写出主程序,观察程序运行结果,并对结果进行分析;
30
3.对实验进行总结,写结论及体会。
实验四 语音滤波系统综合设计实验
一、实验目的
1.了解CODEC(TLV320AIC23B)工作的基本原理,掌握AIC23和McBSP之间的配置;
2.掌握TLV320AIC23B的应用,掌握TLV320AIC23B与DSP之间的配置,熟悉DSP与CODEC(TLV320AIC23B)的控制与数据传输的过程;
3.熟悉设计FIR数字滤波器的原理及其编程;
4.学习使用CCS 图形观察窗口观察和分析语音波形及其频谱。
二、实验设备
计算机,CCS 2.0版软件,DSP仿真器,实验箱,音频线,耳机。
三、基础理论
1.TLV320AIC23B 的介绍
31
TLV320AIC23B(以下简称AIC23)是TI推出的一款高性能的立体声音频Codec芯片,内置耳机输出放大器,支持MIC和LINE IN两种输入方式(二选一),且对输入和输出都具有可编程增益调节。
AIC23B的ADC和/DAC部件采用Sigma-Delta过采样技术,可在8kHz到96kHz的频率范围内提供16位、20位、24位和32位的采样。在采样率为48kHz的情况下,ADC和DAC的信噪比能够分别达到90dB和100dB,从而可在小型低功耗设计中实现高保真录音和高质量的数字音频回放。AIC23B还具有很低的功耗,在回放中的功率消耗小于23mW,节电模式下更是小于15uW。
AIC23B的管脚和内部结构框图请参考光盘中的数据手册,下面介绍一下AIC23的使用情况。
(1)AIC23数据接口
DSP与AIC23B的数据传送可以采用DSP模式与IIS模式,区别仅在于DSP的McBSP帧同步信号的宽度。IIS模式的帧同步信号宽度必须为一个字(16位)长,DSP模式的帧宽度可以为一个位长。例如在帧长为32位的情况下,如果采用IIS模式,帧同步信号宽度应为16位;而采用DSP模式,帧信号宽度1位即可。SEED-DEC5502用VC5502的McBSP1接口与AIC23
32
的数据口相连,实现Codec的A/D数据输入和D/A数据输出。接口连接示 图如下图4-1所示。
图4-1 VC5502与AIC23接口连接示意图
TLV320AIC23B设置为DSP模式与McBSP1进行通讯,因而应将McBSP1设置为从模式。帧信号宽度为一个bit长,比如在字长16bit(即左右声道的采样各为16bit),帧长为32bit的情况下,采用DSP Mode帧信号宽度1bit即可。 (2)AIC23命令接口
在SEED-DEC5502模板上采用的是I2C方式控制TLV320AIC23B的。其硬件管脚的说明如下:
SDIN: AIC23B控制口串行数据输入;
33
SCLK: AIC23B控制口的位-时钟; MODE: AIC23B串口模式控制信号;
DSP通过该部分配置AIC23的内部寄存器,每个word的前7bit为寄存器地址,后9bit为寄存器内容。 (3)麦克风输入接口
MICBIAS:提供麦克风偏压,通常是3/4 AVDD;
MICIN: 麦克风输入,由AIC结构图能看出放大器默认是5倍增益; LINE IN: 输入接口;
LLINEIN:左声道LINE IN输入; RLINEIN:右声道LINE IN输入。 (4)音频输出接口
LHPOUT:左声道耳机放大输出;
34
RHPOUT:右声道耳机放大输出; LOUT: 左声道输出; ROUT: 右声道输出。 (5)其他
MCLK: 芯片时钟输入(12M) ;
VMID: 半压输入,通常由一个10U和一个0.1U电容并联接地; MODE: 芯片工作模式选择,Master CS-片选信号(配置时有效); CLKOUT: 时钟输出,可以为MCLK或者MCLK/2(详见寄存器配置)。 2.音频信号处理子系统的总体框图
音频信号(如:电吉它的单声道声音信号是150mV的电信号)经过高精度高速ADC转换后得到一串数字信号,输入到波形输入缓冲区RAM。然后由手动控制一种或几种处理算法将音频信号调入TMS320C5402的内部进行高速运算。经过处理的音频信号,再输入到高精度高速的DAC转换器中,还原成模拟的声音信号,经音箱功率放大电路放大输
35
出。
利用缓冲区的目的是进行音效的实时处理。系统中各模块是同时进行处理的,一部分信号正在ADC中进行转换,而另一部分信号则在DSP处理器中同时进行算法处理,即整个系统是以流水线的方式进行工作。音频信号处理子系统的总体方案图如下图4-2所示。
图4-2 音频信号处理子系系统的总体方案图
初始化配置:DSP通过I2C总线将配置命令发送到AIC23,配置完成后AIC23工作。 语音信号的输入:AIC23通过其中的AD转换采集输入的语音信号,每
采集完一个信号后,将数据发送到DSP 的McBSP 接口上,DSP可以读取到语音数据,每个数据为16位无符号整数,左右通道各有一个数值。
36
语音信号的输出:DSP可以将语音数据通过McBSP 接口发送给AIC23,AIC23 的DA器件将他们变成模拟信号输出。
3.有限冲击响应数字滤波器(FIR)的基础理论
FIR数字滤波器是一种非递归系统,其冲激响应h(n)是有限长序列,其差分方程表达式为
N1i0y(n)h(i)x(ni)
其中,N为FIR滤波器的阶数。
在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)。这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达式为
N/21y(n)h(i)(x(ni)x(N1ni))i0
由上可见,FIR滤波器不断地对输入样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。因此,FIR实际上是一种乘法累加运算。而对
37
于线性相位FIR而言,利用线性相位FIR滤波器系数的对称特性,可以采用结构精简的FIR结构将乘法器数目减少一半。本实验中FIR的算法公式为
nh
r[j]h[k]x[jk]k00jnx
四、实验要求
在CCS集成开发环境下编程,实现对原始语音信号的输入、FIR滤波处理及滤波后语音信号的输出,实现音频滤波功能;并用CCS的图形观察功能观察原始音频信号在时域和频域下的波形,观察滤波后的音频信号在时域和频域下的波形。
通过对音频滤波实验,熟悉CODEC的各个寄存器的设置;掌握TMS320VC5502的McBSP设置;理解滤波算法。本实验要求只对右声道的声音进行滤波处理,同学们可通过耳机对比左右声道的声音。
五、实验步骤和内容
1.实验内容
本实验要完成的具体实验内容如下:
(1)DSP系统初始化、系统时钟配置、初始化DSP的外部EMIF;
38
(2)AIC23的初始化,实现CODEC控制寄存器的配置及AIC23功能
设置;设置AIC23输入为LINE IN;
(3)McBSP初始化,对McBSP进行配置;
(4)I2C初始化,实现E2PROM读写操作;
(5)编写滤波子程序,实现对输入的音频信号进行滤波处理;
(6)利用CCS的图形观察功能,观看原始音频信号在时域和频域下的
波形,观察滤波后的音频信号在时域和频域下的波形。
2.程序流程图
本实验的程序流程图如下图4-3所示。
39
图4-3 程序流程图
3.实验准备
(1)将DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DEC5502单元的J1连接;
(3)打开SEED-DEC5502的电源。观察SEED-DEC-MBoard单元的+
40
5V,+3.3V,+15V,-15V的电源指示灯以及SEED_DEC5502的电源指示灯D2、D4是否均亮;若有不亮的,请断开电源,检查电源。
(4)将耳麦接口插入J6,音频线连接计算机的音频输出接口与
SEED-DEC5502单元的J5接口。
4.实验步骤
(1)打开CCS软件,进入CCS的主界面;
(2)按照在CCS环境下进行DSP程序开发的一般过程和实验要求编写程序;首先在E盘建立一个自己的工作目录,然后运行Project/New命令,新建一个工程文件(扩展名为.pjt);接着运行File/New/Source File命令新建扩展名为.c的主程序和扩展名为.cmd的链接命令文件;
(3)运行Project /Add Files to Project命令,将扩展名为.c的主程序、扩展名为.cmd的链接命令文件、CSL库文件csl5502x.lib(位于C:\i\\c5500\\bios\\lib目录下)和C的运行支持库文件rts55x.lib(位于C:\i\\c5500\\cgtools\\lib目录下)添加到工程文件当中去;加载SEED_DEC5502.gel文件;
(4)运行Project/Build命令,对工程当中的所有文件进行编译、链接以便形成可以在目标板上运行的扩展名为.out可执行文件;
41
(5)运行File/Load Program命令,装载.out文件,进行调试;
注意:在DSP程序运行之前,应在PC机上播放一段音乐作为Codec的输入。
(6)运行Debug/Run命令,运行程序;
(7)运行View/Graph/Time Frequency命令,通过对图形观察窗口参数进行正确设置,分别观察原始音频信号在时域和频域下的波形,滤波后的音频信号在时域和频域下的波形。
六、实验报告要求
1.写出主程序及程序运行结果,绘制原始音频信号时域波形图和滤波后的时域波形图;
2.对结果进行分析,对实验进行总结,写结论及体会。
42
因篇幅问题不能全部显示,请点此查看更多更全内容