1、信息工程系实验中心,数字信号处理器实验 (DSP实验),实验一 常用指令实验,一、实验目的 1.了解DSP开发系统的组成和结构; 2.熟悉DSP开发系统的连接; 3.熟悉DSP的开发界面; 4.熟悉C54X系列的寻址系统; 5.熟悉常用C54X系列常用指令的用法。 二、实验设备计算机,CCS 2.0版以上软件,DSP仿真器,DSP CPU挂箱。,三、实验原理外部标志输出(软件可控信号)XF可用于 在多处理器结构中相互通信,也可作通用输 出脚。本实验中XF引脚先接到CPLD,然后 把XF再通过CPLD输出给LED灯。XF为低时 LED亮,XF为高时LED灭。,四、实验步骤与内容 1.系统连接进行
2、DSP实验之前,先必须连接好仿真器、 DSP CPU挂箱及计算机,连接方法如下所示:,2.上电复位在硬件安装完成后,确认安装正确、各实验部件及电源连接正常 后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点 亮,否则DSP开发系统与计算机连接有问题。 3.运行CCS程序待计算机启动成功后,DSP CPU挂箱220V电源置 “ON”,DSP CPU挂箱上电,启动CCS,此时仿真器上的 “绿色小灯”应点亮,并且CCS正常启动,表明系统连接正 常;否则仿真器的连接、JTAG接口或CCS相关设置存在问 题,掉电,检查仿真器的连接、JTAG接口连接,或检查 CCS相关设置是否正确。 注:如
3、在此出现问题,可能是系统没有正常复位或连接错误,应重新检查系统硬件并复 位;也可能是软件安装或设置有问题,应尝试调整软件系统设置,具体仿真器和仿真,4.修改样例程序,尝试DSP其他的指令。 5.样例程序实验操作说明 下面以exp01_xf的操作过程说明CCS的工程建立连 接编译的方法:(其他实验的操作过程和实验一相同) 1)把”exp01_xf目录拷贝到” C:ti5xmyprojects”目录下,去掉其只读属性. 2)删除除了”.asm、.cmd”后缀外的其它所有文件和文件夹 3)打开CCS的“Projectnew”菜单 4)按下图建立工程”exp01_xf” 5)打开”add files
4、to project”菜单,把”exp01_xf”目录下的.asm、.cmd文件添加到exp01_xf的工程中。 6)点击“rebuld all”按钮,编译连接工程。,7)如果有如下的警告“ warning: entry point symbol _c_int00 undefined” 打开“projectbuild options”菜单的linker选项,把”autoinit mode”选项设置为“no autoinitialzation”,再重新编译连接工程。 8)在”fileload program”菜单,并加载“exp01_xf.out”; 加载完毕,单击“Run”运行程序; 实验结果
5、:可见“CPLD单元”的指示灯D3以一定频率闪烁;单击“Halt”暂停程序运行,则指示灯D3停止闪烁,如再单击“Run”,则指示灯D3又开始闪烁;,五、程序框图其中初始化包括SP及PMST寄存器值的设 定延时子程序为一嵌套循环 主程序流程图,六,思考题 1,XF直接驱动LED和XF通过CPLD驱动LED的区别? 2,怎样判断5416内部的PLL已经切换到分频模式?,实验二 数据存储实验 一、实验目的 1、掌握TMS320C54的程序空间的分配; 2、掌握TMS320C54的数据空间的分配; 3、熟悉操作TMS320C54数据空间的指令。 二、实验设备计算机,CCS 2.0版软件,DSP仿真器,
6、DSP CPU挂箱。 三、实验原理 C54x的存贮空间分为三个部分,分别是程序空间,数据空间和输入输出(I/O)空间。程序空间的大小为1M字,数据和输入输出空间大小都是64K字。对于程序空间和数据空间,有些地址段已经被系统内部定义,我们不能使用。下图描述了VC5402的存贮空间的分配。,存贮空间的配置有两种模式,一种是微处理器方式(MP),另一种是微计算机方式,而这两种方式主要影响程序空间的分配。如果是微处理器模式,那么程序地址空间FF80FFFF是外部的,也就是我们可以配置的,这也很好理解,因为所谓微处理器也就是仅把该芯片当成是一个处理器,仅完成任务的处理。而如果是微计算机模式,那么程序地址
7、空间FF80FFFF是被系统占用了的,用于存放系统中断向量表,同时F000FEFF地址空间也被系统使用,这段地址里面包含了引导程序。由此可以看出,微计算机方式就是把该DSP看成了独立的一个系统,要自己能够单独工作起来,因此需要引导程序。数据空间分成了6个部分,如上图所示。其中005F是存贮器映射空间。这段地址空间的值和DSP内部寄存器的值是一致的,访问这个地址空间就等于访问DSP内部的相对应寄存器。而这段空间是在DSP的片上RAM内。,607F是一个散空间,相当于系统给自己保留了一个空间用于特殊之用。比如说,在系统引导的时候,引导程序往往把程序执行的入口地址先放到这个空间的某个位置,等引导玩以
8、后,系统再从这个地址里面取出程序的入口地址,然后跳转到相应地址开始执行程序。803FFF是DSP的片上RAM所映射的地址空间,如果我们程序的代码比较小时,可以不用外扩RAM。4000EFFF,这段空间是外部寻址空间。假如程序比较大,片上RAM放不下下的时候,可以外扩一个RAM,然后将程序放在这段空间里执行。F000FEFF,这段空间可以是外部,也可以是片上ROM,主要受CPU的控制寄存器DROM位的控制。关于CPU各控制寄存器的意义,在下一节会详细介绍。FF00FFFF,可以是外部也可以是保留不能使用。主要受DROM位影响。输入输出(I/O)空间的64K字全部是外部的。另外,C54x的程序空间
9、采用了分页机制。每64K字为一页。因此程序空间1M字可以划分为16页。如下图所示。,另外要注意,在操作数寻址过程中,数据空间也采用了分页地址,而数据空间的分页方法是每128字分为一页,每页是连续的,因此数据空间分为512页。对于输入输出空间没有任何分页机制,直接访问。 四、实验步骤与内容 连接好DSP开发系统,运行CCS软件; 在CCS的Memory窗口中查找C54各个区段的数据存储器地址, 在可以改变的数据地址随意改变其中内容; 在CCS中装载实验示范程序,单步执行程序,观察程序中写入和 读出的数据存储地址的变化; 结合其他寻址方式一起使用。 样例程序实验操作说明启动CCS 2.0,并加载“
10、NORMALEXP02_MEMDEBUGexp02.out”;,用“View”下拉菜单中的“Memory”查看内存单元;,输入要查看的内存单元地址,本实验要查看0x1000H0x100FH单元的数值变化,输入地址0x1000H;,查看0x1000H0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序;,单击“Halt”暂停程序运行;,查看0x1000H0x100FH单元内数值的变化;,关闭各窗口,本实验完毕。,源程序查看:用下拉菜单中Project/Open,打开“NORMALEXP02_MEM Exp02.pjt”,双击“Source”,可查看源程序。 五、实验说明:本
11、实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。在CCS中可以观察DATA存储器空间地址0X10000X100F值的变化。,六、思考题54X访问内部RAM和访问外部RAM的区别?,实验三 键盘接口及七段数码管显示实验 一、实验目的 1了解串行口8位LED数码管及64键键盘智能控制芯片HD7279A的基本原理; 2学习用TMS320C54XDSP芯片控制芯片HD7279A键盘和LED的基本方法和步骤; 二、实验设备 计算机,CCS 2.0 版软件,DSP仿真器,DSP CPU挂箱。 三、实验原理 HD7279A是比高公司生产
12、的单片具有串行接口、可同时驱动位共阴式数码管(或只独立LED)的智能显示驱动芯片,该芯片同时可连接多达64键的键盘矩阵,一片即可完成LED显示及键盘接口的全部功能。HD7279A内部含有译码器,可直接接受BCD码或16进制码,并同时具有2种译码方式。HD7279和微处理器之间采用串行接口,其接口和外围电路比较简单,且占用端口线少,加之它具有较高的性能价格比,因此,在微型控制器、智能仪表、控制面板和家用电器等领域获得了日益广泛的应用。,HD7279A具有片选信号,可方便地实现多于8位的显示或多于64键的键盘接口。 HD7279A的主要特点如下:有串行接口,无需外围元件便可直接驱动;独立控制译码不
13、译码、消隐和闪烁等属性;(循环)左移(循环)右移指令;段寻址指令,可方便地用来控制独立的显示管;盘控制器内含去抖动电路。 引脚图:,引脚说明: 12、VDD:正电源; 3、NC:无连接,必须悬空; 4、VSS:接地; 5、NC:无连接,必须悬空; 6、CS:片选输入端,此引脚为低电平时,可向芯片发送指令及读取键盘数据; 7、CLK:同步时钟输入端,向芯片发送数据及读取键盘数据时, 此引脚电平上升沿表示数据有效; 8、DATA:串行数据输入/输出端,当芯片接收指令时,此引脚为输入端;当读取键盘数据时,此引脚在读指令最后一个时钟的下降沿变为输出端; 9、KEY:按键有效输出端,平时为高电平,当检测
14、到有效按键时,此引脚变为低电平; 1016:SGSA:段g段a驱动输出; 17、DP:小数点驱动输出; 1825、DIG0DIG7:数字0数字7驱动输出;,26、CLKO:振荡输出端; 27、RC:RC振荡器连接端,其中电阻的典型值为1.5,电容的典型值为15; 28、RESET:复位端。HD7279A与微处理器仅需条接口线,其中CS为片选信号(低电平有效)。DATA为串行数据端,当向HD7279A发送数据时,DATA为输入端;当HD7279A输出键盘代码时,DATA为输出端。CLK为数据串行传送的同步时钟输入端,时钟的上升沿表示数据有效。KEY为按键信号输出端,该端在无键按下时为高电平;而在
15、有键按下时变为低电平,并一直保持到按键释放为止。,串行接口时序图: 纯指令:,带数据指令:,读键盘指令:,健值表如下:,典型电路:,资源分配: -写 0005H,DIR7279=1,7279的数据给D0 -读 0005H,DIR7279=0,数据给7279 -上电复位,DIR7279=0, 数据给7279 -写 0006H,CS7279=0 -读 0006H,CS7279=1 -上电复位,CS7279=1 -写 0007H,CLK7279=1 -读 0007H,CLK7279=0 -上电复位,CLK7279=0 -写 0008H,D7279=0 -读 0008H,D7279=1 -上电复位,D
16、7279=1,DSP接口电路:,四、实验步骤和内容 1、正确完成计算机、DSP仿真器和DSP CPU挂箱的连接后,系统上电; 2、跳线设置: 跳线“J100”用短接块短接(使能外部中断0)。 3. 启动CCS 2.0,用Project/Open打开NORMALexp06_7279目录下的“exp9.pjt”工程文件;双击“exp9.pjt”及“Source”可查看各源程序;并加载“DEBUG”目录下的 “exp9.out”;,4单击“Run”运行程序,然后观察实验的结果。,五、实验结果 可以看到LED全部点亮后,LED1和LED2显示出0123456789等字符,并逐渐左移,直到“F”出现后,
17、LED 全部变暗。此时按键,便可从LED1和LED2上显示出123456789等按键对应的键值,每个键对应一个数,当按下一键时LED就会显示出相对应的数,且向左移动一位。 在本实验程序中,中断选用的是外部中断0,由CPLD程序译码,每按一次键,就可以产生一个外部中断。,主程序流程图,中断程序流程图,实验四 数字图像处理 一、实验目的 1、了解数字图像处理的基本原理; 2、学习灰度图像二值化处理技术。 3、学习灰度图像反色处理技术; 二、实验设备 计算机,CCS 2.0 版软件,DSP仿真器,DSP CPU挂箱。 三、实验原理图像是对客观存在的物体的一种相似性的生动模仿或描述。是物体的一种不完全
18、、不精确,但在某种意义上是适当的表示。而数字图像是图像的数字表示,像素是其最小的单位。数字图像的描述有两种分类:一是无彩色图像,二是彩色图像。数字图像处理就是将一幅图像变为另一幅经过加工的图像,是图像到图像的过程或是将一幅图像转化为一种非图像的表示,如一个决策等。在本实验中,我们是将一个图像处理成特殊图像的过程。 灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息。黑白图像是指图像的每个像素只能是黑或者白,,没有中间的过渡,故又称为值图像。2值图像的像素值为0、1。二值化处理是将得到的灰度图像转化为二值数字图像。灰度变换的目的是为了改善画质,使图像的显示效果更加清晰。更具体
19、的算法原理可以参考数字图像处理的相关书籍。,四、实验步骤样例程序实验操作说明1启动CCS 2.0,用Project/Open打开“exp10_diggraph”目录下“exp10.pjt”工程文件;双击该工程文件可查看各源程序;并加载“exp10_ diggraph debugexp10.out”;在主程序diggraph.c中,在两个“i = 0”处设置断点;单击“Run”,程序运行到第一个断点处停止;,如下图所示;,用View / Graph / Image打开一个图形观察窗口,以观察程序载入的“Lena64.bmp”图像,该图像应保存在“exp10_ diggraph”目录中;按下图设置
20、该图形观察窗口,观察变量y,为6464的二维数组;,下图为“Lena64.bmp”在CCS环境下的显示图像;,单击“Run”,程序运行到第二个断点处停止,这时可在图形观察窗口中,观察到原图像经二值化处理后的结果图像;,本程序中,二值化处理阈值设为128;关闭各窗口,本实验结束。,五、 程序框图 主程序流程图,实验五 语音信号的FFT分析 一、实验目的 加深对DFT算法原理和基本性质的理解; 熟悉FFT算法原理和FFT子程序的应用; 学习用FFT对连续信号和时域信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT。 二、实验设备 计算机,CCS 2.0 版软件,DSP
21、 CPU挂箱,DSP仿真器,音频线,音源。 三、基本原理 1、离散傅立叶变换DFT的定义:将时域的采样变换成频域的周期性离散函数,频域的采样也可以变换成时域的周期性离散函数,这样的变换称为离散傅立叶变换,简称DFT。 2、FFT是DFT的一种快速算法,将DFT的N2步运算减少为(N/2)log2N步,极大的提高了运算的速度。,3、旋转因子的变化规律。 4、蝶形运算规律。 5、基2FFT算法。 四、实验步骤 1、复习DFT的定义、性质和用DFT作谱分析的有关内容; 2、复习FFT算法原理与编程思想,并对照DIT-FFT运算流程图和程序框图,了解本实验提供的FFT子程序; 3、阅读本实验所提供的样
22、例子程序; 4、运行CCS软件,对样例程序进行跟踪,分析结果;记录必要的参数。 5、填写实验报告。 提供样例程序实验操作说明A实验前准备: 1利用自备的音频信号源,或把计算机当成音源,从DSP CPU挂箱的“语音单元”的音频接口“麦克输入”输入音频信号,进行AD采集。 2连接耳机和“耳机输出”接口; 3拨码开关,DSP CPU挂箱上拨码开关设置:利用语音模块时,SW1、SW2均置为“ON”,反之为“OFF”。 “语音接口”模块小板的拨码开关设置:(缺省设置已设置好,不需用户设置),B实验启动CCS 2.0,用Project/Open打开“Algorithm”目录中“exp01_audiofft
23、”子目录下的“audiofft.pjt”工程文件;双击“audiofft.pjt”及“Source”可查看源程序;加载“audiofft.out”;在主程序中,k+处设置断点;单击“Run”运行程序,程序将运行至断点处停止;,用View / Graph / Time/Frequency打开一个图形观察窗口;设置该观察图形窗口变量及参数;采用双踪观察在启始地址分别为px和pz,长度为128的单元中数值的变化,数值类型为16位有符号整型变量,这两段存储单元中分别存放的是经A/D转换后的语音信号和对该信号进行FFT变换的结果;,单击“Animate”运行程序,或按F10运行;调整观察窗口并观察输入信
24、号波形及其FFT变换结果;单击“Halt”暂停程序运行,关闭窗口,本实验结束。 实验结果:在CCS2.0环境,同步观察输入语音信号波形及其FFT变换结果。,思考题 1、于不同的N,幅频特性会相同吗?为什么? 2、FT进行谱分析,可以应用的什么方面? 程序参数说明void kfft(pr,pi,n,k,fr,fi,l,il):基2快速傅立叶变换子程序,n为变换点 数,应满足2的整数次幂,k为幂次(正整数);数组x :输入信号数组,A/D转换数据存放于地址为px数组中,转为浮点型后,生成x数组,长度128;数组mo:FFT变换数组,长度128,浮点型,整型后,写入pz数组中。 五、子程序流程图:,
25、实验六 语音信号的DCT算法实验 一、实验目的学习DCT算法的实现方法。 二、实验设备计算机,CCS 2.0 版软件,DSP CPU挂箱,DSP仿真器。 三、实验原理离散余弦变换与离散傅立叶变换紧密相关的,属于正弦类正交变换,由于其优良的去冗余性能及高效快速算法的可实现性,被广泛用于语音及图象的有损和无损压缩。在开始实验之前,应了解以下基本原理。 语音或图像的压缩手段; DCT变换在数据压缩中的作用与应用。 四、实验步骤 阅读本实验所提供的样例子程序; 运行样例程序,分析结果; 样例程序实验操作说明,A实验前准备 1、利用自备的音频信号源,或把计算机当成音源,从DSP CPU挂箱的“语音单元”
26、的音频接口“麦克输入”输入音频信号,进行AD采集。 2、连接耳机和“耳机输出”接口; 3、拨码开关,DSP CPU挂箱上拨码开关设置:利用语音模块时,SW1、SW2均置为“ON”,反之为“OFF”。“语音接口”模块小板的拨码开关设置:(缺省设置已设置好,不需用户设置),SW2拨码开关:,用音频对录线,连接DSP CPU挂箱语音单元的麦克输入与外部音频源;B实验启动CCS 2.0,Project/Open打开“Algorithm”目录中“exp06_dct”子目录下“audiodct.pjt”工程文件;双击“audiodct.pjt” 及“Source”可查看各源程序;加载“audiodct.o
27、ut”;在主程序中,在“k+”处设置断点;单击“Run”运行程序,程序将运行至断点处停止;,用View / Graph / Time/Frequency打开两个图形观察窗口;采用双踪观察在启始地址分别为x和y,长度为128的单元中数值的变化,数值类型为32位浮点型,这两个数组分别存放的是经A/D转换的输入信号和对该信号进行DCT变换的结果;,再打开一个图形观察窗口,设置观察变量为z;变量z为输入信号的DCT变换及逆DCT变换的结果,长度128,32位浮点型,即输入信号的重构信号;,调整各图形观察窗口,观察正变换与逆变换结果;单击“Animate”运行程序,调整各图形观察窗口,动态观察变换结果;
28、改变输入信号的波形、频率、幅值,动态观察变换结果;,单击“Halt”暂停程序运行,关闭窗口,实验结束; 实验结果:在CCS2.0环境,同步观察输入信号及其DCT变换结果。 五、思考题 1、压缩的实质是什么? 2、实际压缩处理时,应该有那些流程? 六、实验报告要求 1、简述DCT的基本原理。 2、说明DCT系数是如何确定的? 3、以8*8矩阵描述输入、输出。 七、DCT子程序,式中系数:,程序说明: void dct1c2 (double x, double y, int n):DCT正变换子程序; void idct1c2 (double y, double z, int n):逆DCT变换子程序; 两子程序中,各参数为: 数组x :音频信号经语音芯片转换后输入的信号,转为浮点型后,生成x数组,长度128; 数组y :DCT正变换输出信号数组,也是逆DCT变换输入数组,浮点型,长度128; 数组z :逆DCT变换输出信号数组,即重构信号,浮点型,长度128。 八、程序流程图(DCT),