课 程 设 计 任 务 书
分院(系) 信息科学与工程学院 学生姓名 专业 学号 电子信息工程 设计题目 语音信号扩展(U律) 内容及要求: 1.完成语音信号采集; 2. 对语音信号进行U律扩展; 3. 传输扩展后的信号; 进度安排: 2009年12月28日 -2010年01月03日 计)。 。 2010年01月16日 选题、查阅资料及编写软件程序(或硬件原理图设不合格者参加第二次答辩(交正式报告的电子 指导教师(签字): 年 月 日 分院院长(签字): 年 月 日
I
沈阳理工大学课程设计报告纸
摘 要
本文简要阐述了语音信号扩展U律的基本原理,可以将高位的数据扩展成低位的数据,它适用于声音信号的播放和传输系统,在设计中借助MATLAB信号处理工具箱FDAtool工具设计了语音信号扩展系数,然后在CCS中以TMS320C55x芯片的汇编语言编程实现了该语音信号扩展。利用MATLAB设计语音信号扩展,可以随时对比设计要求和语音信号扩展特性调整参数,直观简便,极大的减轻了工作量,有利于语音信号扩展设计的最优化。另外文中还介绍CCS开发环境。文中所给程序已经经过软件仿真验证,所设计的语音信号扩展符合设计要求。
关键词:DSP;语音信号扩展;MATLAB;Code Composer Studio(CCS);TMS320C55x
II
沈阳理工大学课程设计报告纸
目 录
绪论 ..................................................... 1 1 语音信号扩展u律设计任务及目的„„„„„„„„„„„„„„2 1.1 语音信号扩展U律设计任务 ......................... 2 1.2 语音信号扩展U律设计目的 ......................... 2 1.3 语音信号扩展U律设计基本原理 ..................... 2 2 TMS320C5X的硬件结构................................... 4 2.1 C55X的CPU体系结构 .............................. 4 2.2 指令缓冲单元(I) ................................ 4 2.3 程序流程单元(P) ................................ 4 2.4 地址程序单元(A) ................................ 5 2.5 数据计算单元(D) ................................ 5 3 语音信号扩展U律设计设计过程 .......................... 7 3.1 设计步骤 ......................................... 7 4 语音信扩展u律设计软件程序 ............................ 7 5 语音信号扩展u律设计的CCS实现 ....................... 15 5.1 简述CCS环境 .................................... 15 5.1.1 CCS主要特点 .................................. 15 5.1.2 DSP/BIOS和API函数以及RTDX插件 ............... 15 5.2 CCS配置 ........................................ 16 5.3 CCS环境中工程文件的使用 ........................ 16 5.3.1 建立工程文件 .................................. 16 5.3.2 创建新文件 .................................... 17 5.3.3 向工程项目中添加文件 .......................... 17 5.4 编译链接和运行目标文件 .......................... 18 5.4.1 对程序进行编译链接并装载.out文件 ............. 18 6仿真结果及讨论 .......................................... 19
III
沈阳理工大学课程设计报告纸
结 论 ................................................... 14 参考文献 ................................................ 25
IV
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
绪 论
至20世纪70年代末以来,由于数字技术和微电子技术的迅猛发展给语音信号扩展提供了先进的技术手段,基于计算机的语音信号扩展也就从信息处理、自动控制系统论、计算机科学、数据通信、电视技术等学科中脱颖而出,成为研究“语音信号的获取、传输、存储、变换、显示、理解与综合利用”的一门崭新学科
数字图像处理(Digital Image Processing),就是利用数字计算机或则其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。 对图像进行一系列的操作,以达到预期的目的的技术称作图像处理。图像处理可分为模拟图像处理和数字图像处理两种方式。
近年来,DSP技术在我国也得到了迅速的发展,不论是在科学技术研究,还是在产品的开发等方面,在数字信号处理中,其应用越来越广泛,并取得了丰硕的成果。数字滤波占有极其重要的地位。一个完备的语音信号处理系统不但要具备语音信号的采集和回放功能,而且更重要的是要能完成复杂的语音信号分析和处理处理算法,通常这些算法运算量大,而且又要满足实时或准时的快速高效处理要求,因此需采用高速DSP芯片,另外,在要求系统满足较好的通用性的同时,针对不同的应用和不断出现的新的处理方法,还要使系统便于功能的改进和扩展。为此,我们以PC机为主机,以TMS320C50为信号处理核心设计了该系统,TMS320C50是美国Texas Instrument 公司的16位定点DSP产品,它包括改进的哈佛结构,高性能CPU,片内存储器,在外围接口以及一套高效的泄编指令集,计算速度可达40Mips且性能价格比好
1
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
1 语音信号扩展U律设计任务及目的
1.1 语音信号扩展U律设计任务
(1)完成语音信号采集; (2)对语音信号进行U律扩展; (3)传输扩展后的信号
1.2 语音信号扩展U律设计目的
本设计的目的在于通过使用DSP的程序设计完成对语音信号的扩展,既可以通过软件实现,也可以通过硬件实现。进行程序的设计,并在CCS软件环境下进行调试,同时也加深学生对数字信号处理器的常用指标和设计过程的理解。
1.3 语音信号扩展U律设计基本原理
1.3.1 语音信号扩展编码技术的发展
随随着通信、计算机网络等技术的飞速发展,语音扩展编码技术得到了快速发展和广泛应用,尤其是最近20年,语音扩展编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。 语音扩展编码技术的类别
语音编码就是将模拟语音信号数字化,数字化之后可以作为数字信号传输、存储或处理,可以充分利用数字信号处理的各种技术。为了减小存储空间或降低传输比特率节省带宽,还需要对数字化之后的语音信号进行扩展编码,这就是语音扩展编码技术。 语音的扩展编码方法归纳起来可以分为三大类:波形编码、参数编码和混合编码。
1.3.2 DSP硬件实现数据扩展解压的简单流程
DSP将传输来的扩展后的数据进行解压成16位或32位,而后对解压后的数据进行分
2
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
析,处理,最后将处理后的数据按照要求扩展成8位的数据格式输出到相应设备以供读取:DR→RSR→RBR→解压→RJUST→DDR→DXR→扩展→XSR→DX
在进行扩展时,采样后的12位数据,默认其最高位为符号位,扩展时要保持最高位即符号位不变;原数据的后11位要扩展成7位。这7位码由3位段落码和4位段内码组成,具体扩展变换后的根据后11位数据大小决定。扩展后数据的最高位(第7位)表示符号,量阶分别为1,1,2,4,8,16,32,64,由扩展后数据的第6位到第4位决定,第3位到第0位是段内码,扩展后数据有一定的失真,有些数据不能表示出,只能取最接近该数据的扩展值。例如数据125,扩展后的值为00111111,意义如下:
从左往右,第一个0为符号位,表示为一个正数;后面的011为段落码,表示量阶为4,起始数据为64,后面的4个1111为段内码,表示值为15 最终结果为:64+4*15=124.
1.3.3 U律语音信号扩展
μ律算法:采用μ律算法对采集的语音数据进行处理,μ律编码是一种针对语音信号进行对数压缩非均匀量化的方案。采用μ律对信号进行对数形式的压缩,以便在不提高数据量的前提下提高信噪比,尽管量化的位数保持不变,但动态范围增加了。μ律压缩的语音信号一般用8比特抽样数据表示,携带小信号信息量比大信号信息量多。从统计意义上讲,有用信号更可能在小信号区间而非大信号区间。因此,在小信号区间需要更多的量化点数。 μ律算法公式:
其中Xmax是信号x(n)的最大幅度,u是控制压缩程序的参数,u越大压缩就越厉害 μ律查找表内共有256个数,分别用来获得0—7段量化电压,其由16×16组数组成。 由下表看大信号多数由第7段表示,三个指数位用来表示第0-7段,4个尾数位用于表示后4个有效位,还有一位符号位没有给出。16比特输入数据是由线性数据变换成8比 特μ律数据(模拟传输),然后再从μ律转成16比特的线性数据(模拟接收),再输出到编解码器
3
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
上图给出了按律压扩算法的输入输出特性曲线,为确定压缩量的参数,它反映最大量化间隔和最小量化间隔之比。由图可见,值越大,压缩量越大。由于 律压扩的输入和输出关系是对数函数关系,所以这种编码又称为对数PCM。 A律压扩与律压扩相比,则压缩的动态范围略小些,小信号振幅时质量要比律稍差。无论是A律还是律算法,它们的特性在输入信号振幅小时都呈线性,在输入信号振幅大时呈对数压缩特性。 对于采样频率为8kHz,样本精度为16位的输入信号,使用A律压扩或律压扩编码,经过PCM编码器之后每个样本的精度为8位,输出的数据率为64kb/s。这个数据就是CCITT ,(国际电话与电报顾问委员会)推荐的G.711标准:话音频率脉冲编码调制。
U律的扩展可定义为: U律扩展的线性表如下:
扩展过的码字 段值,量化值 比特 :6 5 4 3 2 1 x 0 0 0 a b c d 0 0 1 a b c d 0 1 0 a b c d 0 1 1 a b c d 1 0 0 a b c d 1 0 1 a b c d 1 1 0 a b c d 1 1 1 a b c d 比特:11 10 9 8 7 6 5 4 3 2 1 x 0 0 0 0 0 0 x a b c d 1 0 0 0 0 0 0 1 a b c d 1 0 0 0 0 0 1 a b c d 1 x 0 0 0 0 1 a b c d 1 x x 0 0 0 1 a b c d 1 x x x 0 0 1 a b c d 1 x x x x 0 1 a b c d 1 x x x x x 1 a b c d 1 x x x x x x 偏值得输入
4
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
2 TMS320C5X的硬件结构
2.1 C55X的CPU体系结构
C55X有1条32位的程序数据总线(PB),5条16位数据总线(BB、CB、DB、EB、FB)和1条24位的程序地址总线及5条23位地址总线,这些总线分别与CPU相连。总线通过存储单元接口(M)与外部程序总线和数据总线相连,实现CPU对外部存储器的访问。这种并行的多总线结构,使CPU能在一个CPU周期内完成1次32位程序代码读、3次16位数据读和两次16位数据写。C55X根据功能的不同将CPU分为4个单元,指令缓冲单元(I)、程序流程单元(P)、地址流程单元(A)、和数据计算单元(D)。
读程序地址总线(PDA)上传送24位的程序代码地址,由读程序总线(PB)将32位的程序代码送入指令缓冲单元进行译码[1]。
2.2 指令缓冲单元(I)
C55X的指令缓冲单元有指令缓冲队列IBQ和指令译码器组成。在每个CPU周期内,I单元将从程序数据接收的4B程序代码放入指令缓冲队列,指令译码器从队列中取6B程序代码,根据指令的长度可对8位、16位、24位、32位和48位的变长指令进行译码,然后把译码数据送入P单元、A单元和D单元去执行。
2.3 程序流程单元(P)
程序流程单元有程序地址产生电路和寄存器组凑成。程序流程单元产生所有程序空间的地址,并控制指令的读取顺序。
程序地址产生逻辑电路的任务是产生读取空间的24位地址。一般情况下,它产生的是连续地址,如果指令要求读取非连续地址的程序代码时,程序地址产生逻辑电路能够接收来自I单元的立即数和来自D单元的寄存器值,并将产生的地址传送到PAB。
在P单元中使用的寄存器分为5种类型。
程序流寄存器:包括程序计数器、返回地址寄存器和控制流程关系寄存器。 块重复寄存器:包括块重复寄存器0和1(BRC0、BRC1)BRC1的保存寄存器(BRS1)、
块重复起始地址寄存器0和1以及块重复结束地址寄存器0和1。
5
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
单重复寄存器:包括单重复寄存器和计算单重复寄存器。
中断寄存器:包括中断标志寄存器0和1、中断使能寄存器0和1以及调试中断使
能寄存器0和1。
状态奇存期:包括状态寄存器0,1,2和3。
2.4 地址程序单元(A)
地址程序单元包括数据地址产生电路、算术逻辑电路和寄存器组构成。
数据地址产生电路能够接收来自I单元的立即数和来自A单元的寄存器产生读取数据空间的地址。对于使用间接寻址模式的指令,有P单元向DAGEN说明采用的寻址模式。
A单元包括一个16位的算术逻辑单元,它既可以接收来自I单元的立即数也可以与存储器、I/O空间、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信。
A单元包括的寄存器有以下几种类型。
数据页寄存器:包括数据页寄存器和接口数据页寄存器;
指针:包括系数数据指针寄存器、堆栈针寄存器和8个辅助寄存器; 循环缓冲寄存器:包括循环缓冲大小寄存器、循环缓冲起始地址寄存器; 临时寄存器:包括临时寄存器。
2.5 数据计算单元(D)
数据计算单元由移位器、算数逻辑电路、乘法累加器和寄存器组构成。D单元包含了CPU的主要运算部件。
D单元移位器能够接收来自I单元的立即数,能够与存储器、I/O单元、A单元寄存器、D单元寄存器和P单元寄存器进行双向通信,此外,还可以向D单元的ALU和A单元的ALU提供移位后的数据。移位可以完成以下操作:
对40位的累加器可以完成向左最多32位的移位操作,移位数乐意从零食寄存器读
取或由指令中的常数提供;
对于16位寄存器、存储器或I/O空间数据可完成左移31位或32位的移位操作; 对于16位立即数可完成向左移最多15位的移位操作。
6
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
3 语音信号扩展U律设计过程
3.1 设计步骤
(1)连接好DSP开发系统,运行CCS软件;
(2)设计程序或键入下面的参考程序并保存(文件名设为jia) (3) 新建两个工程,分别添加jia以及链接命令文件(.cmd文件); (4)向工程添加
(5)编译、链接工程,生成.Out文件; (6)装载.out文件,运行; (7)找错至无错误
(8)在view下运行两程序,出现结果框图。
(9)改变参数,重新设置其工作的参数,重复以上步骤并比较;
7
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
4 语音信号U律设计软件程序
存储器的分配(5402.cmd) MEMORY {
PAGE 0: VECS: origin = 0080h, length = 0080h /* Internal Program RAM */ PRAM: origin = 7600h, length = 8000h /* Internal Program RAM */
PAGE 1: SCRATCH: origin = 0060h, length = 0020h /* Scratch Pad Data RAM */ DMARAM: origin = 0C00h, length = 0300h /* DMA buffer */
DATA: origin = 1100h, length = 0080h /* Internal Data RAM */ STACK: origin = 1180h, length = 0560h /* Stack Memory Space */ INRAM: origin = 1900h, length = 0100h /* Internal Data RAM */ HPRAM0: origin = 1A00h, length = 0002h /* HPI memory accessible by Host and DSP */
HPRAM1: origin = 1A02h, length = 0280h /* HPI memory accessible by Host and DSP */
HPRAM2: origin = 1C82h, length = 0280h /* HPI memory accessible by Host and DSP */
EXRAM: origin = 1F10h, length = 9000h /* External Data RAM */ }
SECTIONS {
.cinit > PRAM PAGE 0 .text > PRAM PAGE 0 .vectors > VECS PAGE 0
init_var > PRAM PAGE 0 detect > PRAM PAGE 0 vrcprg > PRAM PAGE 0 matprg > PRAM PAGE 0
.stack > STACK PAGE 1 .trap > SCRATCH PAGE 1
.const > EXRAM PAGE 1 .data > EXRAM PAGE 1 .bss > EXRAM PAGE 1 .cio > EXRAM PAGE 1
.switch > EXRAM PAGE 1
8
沈阳理工大学信息科学与工程学院——DSP技术课程设计报告
tables > EXRAM PAGE 1 var > EXRAM PAGE 1
svctab > EXRAM PAGE 1 /* SS_V LSP table */ vctab > EXRAM PAGE 1 /* V LSP table */ uvctab > EXRAM PAGE 1 /* UV LSP table */
cuvtab > EXRAM PAGE 1 /* Stochastic codebook */ cdbktab > EXRAM PAGE 1 /* various codebook tables*/
logtab > EXRAM PAGE 1 /* table for log2 */ powtab > EXRAM PAGE 1 /* table for pow2 */ hamtab > EXRAM PAGE 1 /* table for hamming */ lgwtab > EXRAM PAGE 1 /* table for lag window */ acostab > EXRAM PAGE 1 /* table for arccos */ sqrtab > EXRAM PAGE 1 /* table for square root */
acbtab > EXRAM PAGE 1 /* table for thresholds in acb */
pm03tab > EXRAM PAGE 1 /* table for x^(-0.3) computation */ costab > EXRAM PAGE 1 /* table for cosine */
V23 > INRAM PAGE 1 FSK > INRAM PAGE 1
hpibuff0 > HPRAM0 PAGE 1 hpibuff1 > HPRAM1 PAGE 1 hpibuff2 > HPRAM2 PAGE 1 dma_buff > DMARAM PAGE 1 }
/*主程序设计*/
/*语音采集及回放程序*/ /*用U律进行扩展及解压*/
/*采用AD50进行A/D,D/A转换 */ /*灯循环闪烁程序开始*/ /*L0:录音*/ /*L1:放音*/
#include 9 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 /* 宏定义 */ #define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */ #define QUANT_MASK (0xf) /* Quantization field mask. */ #define NSEGS (8) /* Number of A-law segments. */ #define SEG_SHIFT (4) /* Left shift for segment number. */ #define SEG_MASK (0x70) /* Segment field mask. */ /* 函数声明 */ void delay(s16 period); void led(s16 cnt); void initcodec(void); void flashenable(void); unsigned char data2alaw(s16 pcm_val); int alaw2data(unsigned char a_val); static int search(int val,short *table,int size); /* 全局变量 */ HANDLE hHandset; s16 data; s16 data1; u16 i=0; u16 temp1; u16 j=0; u16 k,l=0; u8 temp2; u16 buffer[20000]; static short seg_end[8]={0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF}; /* 主函数 */ void main() { if (brd_init(100)) return; led(2); //闪灯两次 initcodec(); //初始化codec flashenable(); //选择片外FLASH为片外存储器 /* delay(100); brd_led_toggle(BRD_LED0); 10 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 for(i=0x9000;i<0xefff;i++) { REG_WRITE(i,*(volatile u16*)DRR1_ADDR(HANDSET_CODEC)); delay(20); } brd_led_toggle(BRD_LED1); delay(200); for(i=0x9000;i<0xefff;i++) { *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i); delay(20); } brd_led_toggle(BRD_LED2); */ while (1) { while (!MCBSP_RRDY(HANDSET_CODEC)) {}; //等待接收handset处的采样 brd_led_toggle(BRD_LED0); data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); //从handset处读取 采样 temp1=data2alaw(data); //对采样进行U律扩展 /* 把低地址数据放在高八位 高地址数据放在低八位 */ i=i+1; if(i%2==1) { buffer[j]=(temp1<<=8); /*奇数数据左移8位 temp1=abcdefgh00000000 buffer[j]=temp1*/ } else { buffer[j]=(buffer[j]|temp1); /*偶数数据与temp1取或 组成新的数据 buffer[j]=abcdefghiabcdefghi*/ 11 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 j++; //j加1 } if(i>=40000) { i=0; } if(j>=20000) { j=0; brd_led_disable(BRD_LED0); brd_led_toggle(BRD_LED1); //点亮二极管1 表示放音开始 /* 放音部分 */ for(k=0;k<40000;k++) { if(k%2==0) { temp2=(buffer[l]>>8)&0x0ff; } else { temp2=buffer[l]&0x0ff; l++; } if(l>=20000) l=0; data1=alaw2data(temp2); // U律解压 while (!MCBSP_XRDY(HANDSET_CODEC)) {}; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1; //将数据写入D/A转换器 } /* 放音结束 */ brd_led_toggle(BRD_LED0); brd_led_toggle(BRD_LED1); 12 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 } } } //主程序结束 /* 子函数 */ /*******延时******/ void delay(s16 period) { int i, j; for(i=0; i /*******闪灯******/ void led(s16 cnt) { while ( cnt-- ) { brd_led_toggle(BRD_LED0); //切换LED指示灯0的显示状态 delay(1000); brd_led_toggle(BRD_LED1); delay(1000); brd_led_toggle(BRD_LED2); delay(1000); } } /*****初始化codec**/ void initcodec(void) { /* Open Handset Codec 获取设置codec的句柄*/ hHandset = codec_open(HANDSET_CODEC); / Acquire handle to codec /* Set codec parameters */ 13 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 codec_dac_mode(hHandset, CODEC_DAC_15BIT); // DAC in 15-bit mode codec_adc_mode(hHandset, CODEC_ADC_15BIT); // ADC in 15-bit mode codec_ain_gain(hHandset, CODEC_AIN_6dB); // 6dB gain on analog input to ADC codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); // -6dB gain on analog output from DAC codec_sample_rate(hHandset,SR_8000); // 8KHz sampling rate } /*****设置flash****/ void flashenable(void) { CPLD_CTRL2_REG|=0x0010; CPLD_DMCTRL_REG|=0x0040; } /*****U律扩展******/ unsigned char data2alaw(s16 pcm_val) { int mask; int seg; unsigned char aval; if (pcm_val >= 0) { mask = 0xD5; // 标记 (7th) bit = 1 } else { mask = 0x55; // 标记 bit = 0 pcm_val = -pcm_val; } seg = search(pcm_val, seg_end, 8); if (seg >= 8) // out of range, 返回最大数. return (0x7F ^ mask); else { aval = seg << SEG_SHIFT; if (seg < 2) aval |= (pcm_val >> 1) & QUANT_MASK; else aval |= (pcm_val >>seg) & QUANT_MASK; 14 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 return (aval ^ mask); } } /****alaw的子程序**/ static int search(int val,short *table,int size) { int i; for (i = 0; i < size; i++) { if (val <= *table++) return (i); } return (size); } /*****U律解压******/ int alaw2data(unsigned char a_val) { int t; int seg; a_val ^= 0x55; t = (a_val & QUANT_MASK) << 4; seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT; if(seg==0) { t += 8; t=(t>>3); } if((seg<4)&&(seg>0)) { t +=0x108; t=(t>>(4-seg)); } if(seg>3) { t+=0x108; t=(t<<=(seg-4)); } return ((a_val & SIGN_BIT) ? t : -t); } /* 结束 */ 15 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 5 语音信号扩展U律设计的CCS实现 5.1 简述CCS环境 CCS,即Code Composer Studio,是TI公司在1999年推出的一个开放、具有强大集成开发环境。它最初是由GO DSP公司为TI的C6000系列DSP开发的。在TI收购了GO DSP后,将CCS扩展到了其它系列。现在所有TI的DSP都可以使用CCS进行开发,但是其中的DSPBIOS功能只有C5000和C6000的CCS中才提供。 以前的DSP软件开发都是在一个分散的开发环境下进行,程序的编写、代码的生成以及调试等都是要通过命令来完成,类似于以前的DOS,十分烦杂。而CCS的出现是DSP开发软件的一次革命性的变化。CCS主要由代码生成工具、CCS集成开发环境、DSPBIOS和API函数以及RTDX组成。 5.1.1 CCS主要特点 集成可视化代码编辑界面,可以方便地直接编写C、汇编、.h文件、.cmd文件等。集成代码生成工具,包括汇编器、优化的C编译器和连接器等。具有完整的基本调试工具,可以载入执行文件(.out),查看寄存器窗口、存储器窗口和变量窗口、反汇编窗口等,支持在C源代码级进行调试。支持多片DSP联合调试。断点工具,支持硬件断点、数据空间读/写断点、条件断点等。探针工具,用于进行算法仿真,数据监视等。剖析工具,用于评估代码执行的时间。数据图形显示工具,可绘制时域/频域波形、眼图、星座图等,并可以自动刷新。提供GEI工具,用户可以根据需要编写自己的控制面板/菜单,从而方便直观地修改变量,配置参数。 5.1.2 DSP/BIOS和API函数以及RTDX插件 DSP/BIOS(Basic Input Output System)和API(Application Program Interface)函数为CCS的主要插件之一。DSPBIOS可以看作是一个准实时操作系统,支持TI DSP芯片的各种实时操作系统都是以DSP/BIOS作为底层软件,为嵌入式应用提供基本的运行服务。并且,它还能实时获取目标机的信息,并将其传递给主机上的BIOSCOPE工具,对应用程序进行实时分析RTDX (Real Time Data Exchange)插件是CCS中另一个十分重要的插件。实时数据交换技术为CCS提供了一个实时、连续的可视环境,开发人员可以看到DSP应用程序工作的真实过程。RTDX允许系统开发者在不停止运行目标应用程序的情况下在计算机和DSP芯片之间传输数据,同时还可以在主机上利用对象链接嵌入(OLE) 16 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 技术分析和观察数据。RTDX可以在DSPBIOS中使用,也可以脱离DSP/BIOS使用。由于CCS中的Simulator不支持RTDX,所以必须在连接有硬件仿真器或目标板的Emulator下使用。 5.2 CCS配置 击桌面图标的“setup CCStudio v3.1”图标,运行CCS设置程序,如图5.1所示:点击Add→Save&quit完成设置。 图5.1 用标准配置文件设置系统配置 5.3 CCS环境中工程文件的使用 5.3.1 建立工程文件 在CCS集成环境下开发汇编程序或者C/C++程序,首先要建立一个工程项目文件(*.pjt),再向工程项目文件中添加汇编程序源文件(*.asm),C/C++源文件(*.c)和链接命令文件(*.cmd),并设置工程项目选项。使用CCS开发应用程序的一般步骤如下: 创建或打开一个工程项目文件(*.pjt),编辑各类文件,可以使用CCS提供的集成 编辑环境,对链接命令文件和源程序进行编辑。 对工程项目进行编译。在编译过程中如果出现语法错误,将在编译链接信息视窗 (build)窗口中显示错误信息,用户可以根据显示的信息找到错误的位置,更改错 17 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 误。 对结果和数据进行分析和算法评估。用户可以利用CCS提供的探测点.图形显示和性 能评价等工具,对运行结果及输出数据进行分析,评估算法的可能性。 下面分别进行介绍建立工程文件,单击Project→New命令,系统将弹出如图所示的对话框,在该对话框中输入项目文件名,如fir单击“完成”系统就会创建一个名为fir.pjt的工程项目文件如图5.2所示。 图5.2 创建新的工程项目文件对话框 5.3.2 创建新文件 选择File→New可打开一个新的编辑窗口。在新窗口中输入源代码。选择File→Save,在出现的对话框中输入一个文件名,并选择一个扩展名(C源代码选择*.c,汇编源代码选择*.asm),然后单击保存将源程序保存[6]。 5.3.3 向工程项目中添加文件 添加文件:单击Project→Add File to Project命令然后会弹出如图5.3所示的对话框,单击打开完成对文件的添加。 图5.3 向工程项目中添加文件对话框 18 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 5.4 编译链接和运行目标文件 5.4.1 对程序进行编译链接并装载.out文件 对程序进行编译:执行Project→Compile命令就可以对当前的汇编程序进行编译生成.obj文件。如果程序存在语法错误,那么就会在下面的编译链接信息框中显示错误信息。根据错误提示,读者可对程序进行修改[2]。 对程序进行编译链接执行Project→Build命令,就可以对当前的项目文件同时进行编译,汇编和链接操作,并生成与工程项目名称相同的可执行的.out文件。如果有错误信息,则会在“编译链接”信息框中显示。也可以执行Project下的build All命令,所有项目中的文件重新编译,汇编和链接,生成.out文件。 单击主菜单“File”中“Load Program”选项,在对话框中,在CCS安装目录下,找到构建该工程的Debug目录,选择构建生成后的.out文件,并打开CCS装载完毕后,该“*.out”文件到目标dsp之后,会自动弹出“Disassembly”窗口如图5.4所示。 图5.4 CCS调试程序时出现的视窗加工程界面 19 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 6 仿真结果及讨论 1.观察数据结果 View——watch window 输入buffer,显示此数组的值,如图图3.2所示。 图3.2 watch window中的值图 2.观察数据图形 View——Graph——Time Frequency 可以加入断点,然后按Animate 动态显示。 分别观察语音输入(存放在变量data中)波形,扩展后波形(temp1),解压后输出波形(data1),图形分别为图3.3,图3.4,图3.5。 3.观察存储器中数据 View——Memory 经过多次调试,使录音时间在保持音质的前提下达到5-6秒。 20 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 图3.3 输入波形(data)图 图3.4 压缩后波形(temp1)图 21 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 图3.5 解压缩后输出波形(data1)图 22 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 结 论 此类扩展是一种最简单的线性位扩展方式,可以将高位的数据扩展成低位的数据,它适用于声音信号的播放和传输系统,但采集和播放音乐信号时采用高位的AD和DA可得到较好的音乐效果,但传输或保存声音信号时,可扩展存储,从而在同样的存储空间上存储较长时间的语音信号,现在很多简单的录音设备就采用这种方式,但U率扩展率不高,而且扩展的失真是固定的,不能通过算法提高,所以在较为复杂的语音设备中应用较少。 23 沈阳理工大学信息科学与工程学院——DSP技术课程设计报告 参考文献 [1] 汪春梅,孙洪波.TMS320C 55x DSP原理及应用.第二版.北京:电子工业出版社 2008 [2] 姜 阳,周锡青.DSP原理与应用实验.西安:西安电子科技大学出版社,2008 [3] 方华刚. DSP原理与应用. 北京:机械工业出版社,2006.1 [4] 程佩青,数字信号处理教程第二版,清华大学出版社,2001.8 [5] TMS320C55X DSP Programmer’s Guide SPRU376A[Z].Texas Instruments,2001 [6] TMS320C55X DSP Mnemonic Instruction Set Reference Guide SORU374G[Z]. Texas Instruments,2002 [7] TMS320C55XDSP AssemblyLanguage Tools User’s Guide SPRU280H[Z].Texas Instruments,2004. 24 因篇幅问题不能全部显示,请点此查看更多更全内容