DSP实习报告数字和声处理.docx

上传人:b****3 文档编号:12872405 上传时间:2023-04-22 格式:DOCX 页数:19 大小:246.75KB
下载 相关 举报
DSP实习报告数字和声处理.docx_第1页
第1页 / 共19页
DSP实习报告数字和声处理.docx_第2页
第2页 / 共19页
DSP实习报告数字和声处理.docx_第3页
第3页 / 共19页
DSP实习报告数字和声处理.docx_第4页
第4页 / 共19页
DSP实习报告数字和声处理.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

DSP实习报告数字和声处理.docx

《DSP实习报告数字和声处理.docx》由会员分享,可在线阅读,更多相关《DSP实习报告数字和声处理.docx(19页珍藏版)》请在冰豆网上搜索。

DSP实习报告数字和声处理.docx

DSP实习报告数字和声处理

DSP实习报告

——数字和声处理

 

目录

 

一实习题目2

二实习目的与任务2

三实习内容2

3.1设计总体框图2

3.2工作方式3

3.3程序流程3

四设计原理4

4.1综述4

4.2硬件连接4

4.3模块原理5

4.4程序设计11

五调试过程及报告12

六实习心得12

七程序清单12

八参考文献13

 

一实习题目

语音信号采集处理与系统设计-数字和声处理

二实习目的与任务

掌握CCS3.3的使用步骤,熟悉的编写DSP程序。

能够针对相关硬件配置,调试程序,并且能够发现问题,并解决问题。

了解和声算法,掌握TLV320AIC23B的应用,掌握TLV320AIC23B与DSP之间的配置。

三实习内容

基于TMS320C5502DSP语音信号采集处理与系统设计

3.1设计总体框图

图3-1总体框图

如图3-1所示总体框图如下。

数字和声处理主要分为两个部分①TMS320VC5502,该部分为核心模块,作为DSP芯片,它能够进行数据处理。

②TLV320AIC23,该部分为音频处理模块,并进行A/DD/A转换。

3.2工作方式

当MIC输入模拟音频信号时,要经过AD转换,将数字信号数据传至输入缓冲区RAM再传至CPU,输出数字信号数据传至输出缓冲区RAM,经DA转换,功率放大,将将模拟信号还原输出。

3.3程序流程

首先对DSP初始化,再对AIC23,然后判断Testcomm=0xAA07音频和声,Testcomm=0xAA0A试听,对音频信息进行采集和合成。

如图3-2所示。

图3-2程序流程

四设计原理

4.1综述

C55x系列DSP片级支持库提供了用于配置片上外设的C语言函数。

设计数字和声处理需要用到EMIF,I2C,MCBSP模块。

EMIF用于连接同步动态SDRAM接口,I2C模块用于控制端口,MCBSP是双向数据传输端口用于发送接收帧同步数据。

首先AIC23将模拟输入信号A/D转换,将该数据送至MCBSP进行数据处理,然后MCBSP将数据回传给AIC23.。

最后AIC23将数据D/A转换输出,用耳机即可听到输出信号。

4.2硬件连接

图4-1emif与sdram接口

图4-1MCBSP,I2C和AIC23接口(a)

图4-1DSP和AIC23接口(b)

4.3模块原理

(1)EMIF:

EMIF控制DSP和外部存储器之间的所有数据传输,为存储器提供无缝接口,在实习中用到的是32bitSDRAM接口。

EMIF与SDRRAM的接口

图4-2EMIF模块与使用32-bit内存芯片的64-MbitSDRRAM的接口

寄存器配置见表4-1

SDRAM容量

及排列方式

使用芯片

数量

配置位

占用CE

空间数

 

边界/行地址

列地址

SDACCSDSIZESDWID

SDRAM

EMIF

SDRAM

EMIF

64M位

2Mx32位

1

   1           0             1

2

BA[1:

0和[10:

0]

A[14:

13]

SDA10和A[11:

2]

A[7:

0]

A[9:

2]

表4-1SDRAM的引脚映射和寄存器配置表

SDRAM接口信号功能描述见表4-2

Emif信号

SDRAM信号

SDRAM功能描述

/SDCAS

/CAS

列地址选通输入指令

/SDWE

/WE

写选通和输入指令

/BEx

DQMx

数据输出模式

/CEx

nCs

芯片选择和使能指令

SDCKE

CKE

CKE时钟使能

ECLKOUT1

CLK

SDRAM输入时钟

表4-2SDRAM接口信号的功能描述

SDRAM接口专用信号包括SDRAM行选通信号SDRAS、列选通信号SDCAS和写使能信号SDWE,SDA10信号在ACTV命令时作为行地址信号,在读写操作时作为预加电使能信号,在DCAB命令下为高,保持模式下为高阻态。

       SDRAM操作时需要一系列命令来支持其运行,下面给出命令列表4-3

命令

说明

DCAB

关闭所有边界

ACTV

打开所选择边界和所选择行

READ

输入起始列地址开始读操作

WRT

输入起始列地址开始写操作

MRS

配置SDRAM模式寄存器

REFR

自动循环刷新地址

NOP

不进行操作

表4-3

(2)MCBSP:

多通道缓冲串口,提供传输数据的双缓冲和接收数据的三缓冲,允许不间断的同步串行数据的数据流传输。

MCBSP来接AIC23b的数据传输口,有三种模式,选择DSP模式,可以无缝连接,TMS320C5509作为从机,AIC23b作为主机。

图4-3MCBSP内部框图

CPU和DMA控制器通过外设总线与MCBSP进行通信。

当发送数据时,CPU和DMA将数据写入数据发送寄存器(DXR1,DXR2),接着复制到发送移位寄存器(XSR1,XSR2),通过发送移位寄存器输出至DX引脚。

同样,当接收数据时,DR引脚上接收到的数据先移位到接收移位寄存器(RSR1,RSR2),接着复制到接收缓冲寄存器(RBR1,RBR2)中,RBR再将数据复制到数据接收寄存器(DRR1,DRR2)中,由CPU或DMA读取数据。

这样就可以同时进行内部和外部的数据采集。

引脚描述:

见表4-3MCBSP引脚

 

引脚

状态

使用方式

CLKR

I/O/Z

接收时钟/输入时钟采样率发生器/通用I/O口

CLKX

I/O/Z

发送时钟/输入时钟采样率发生器/通用I/O口

CLKS

I

输入时钟采样率发生器/通用输入口

DR

I

接收串口数据/通用输入口

DX

O/Z

发送串口数据/通用输出口

FSR

I/O/Z

接收帧同步信号/控制采样率发生器同步(GSYNC=1)

FSX

I/O/Z

发送帧同步信号/通用I/O口

表4-3MCBSP引脚

单数据相,接受数据长度为16位,每相2个数据,没有压缩数据MSB优先。

主要用到的寄存器

名称

SPCR1

串口控制寄存器1

SPCR2

串口控制寄存器2

RCR1

收控制寄存器1

RCR2

收控制寄存器2

XCR1

发控制寄存器1

XCR2

发控制寄存器2

PCR

引脚控制寄存器

表4-4主要用到的寄存器

(3)I2C:

I2C总线串口可工作在100-400Kbps波特率之间,7位地址模式,该芯片包含主发送/接收和副发送/接收模式。

I2C总线只包含SDA数据线和SCL时钟线,I2C总线作为主设备,AIC23作为从设备。

I2C模块作为一个外设模块受到外设时钟控制寄存器PCLKR0管理,I2C模块时钟频率可按如下公式计算:

I2C模块时钟频率=SYSCLKOUT/I2CPSC+1。

I2C模块分频器配置必须在I2C模块处于复位状态时进行即CMDR寄存器中IRS位置0。

I2C总线上被配置为主设备,它始终控制SCL始终总线。

I2C总线之信号要遵循下面的规定

①SDA线上的数据位,数据流向控制位,地址位,应答位必须在时钟的高电平持续周期时,SCL时钟总线低电平时进行数据线电平改变。

②地址和数据都是从高位到低位发送字节。

SCL时钟总线处于高电平时SDA数据总线将产生一个下降沿,表示开始;若产生一个上升沿表示停止。

图4-4SCL高低电平时钟控制逻辑

TMS320VC55X系列DSP开始及停止条件的产生方法可以归纳如下:

①总线处于空闲状态,若CMDR寄存器之MST位以及STT位皆为1。

开始条件产生于设置为主机模式之后。

②总线处于忙状态,判断CSTR寄存器之BB位,若1,则MST位及STP同时为1时将会产生一个停止条件。

若主机处于非重复模式时CMDR寄存器之RM位等于0时CCNT计数器将产生一个停止条件。

若主机处于重复模式时CMDR寄存器之RM位等于1,满足以上停止条件时,将会在下一个应答位后产生一个停止条件。

I2C总线定义为两种地址格式:

7位地址与10位地址,CMDR寄存器中XA位为0时则7位地址模式,若为1时则为10位地址。

(4)AIC23:

声音通过MIC,或者Linein方式进入AIC23的模拟通道,打开AD转换,设置好采样速率,将数据通过AIC23的数字通道送到5502的MCBSP0,CPU可以对数据进行处理,再将其转存到SDARAM的输出缓存中,会将其送到MCBSP0的发送端口,传输到AIC23的数字通道,通过DA转换将数据输出到扬声器中。

AIC23原理图如图4-5。

图4-5

(1)AIC23引脚介绍

LINEIN/RKLINEIN:

左/右声道LINEIN输入。

MICINE:

麦克风输入接口。

MIBIAS:

提供麦克风偏置电压3/4AVDD。

DIN:

数字音频接口DAC方向数据输入。

DOUT:

数字音频接口ADC方向数据输入。

BCLK:

数字音频接口(bit时钟),当AIC23为从设备时此时钟是由DSP产生的,当AIC23为主设备时此时钟是由AIC23产生的。

LRCIN:

数字音频接口DAC方向的桢信号。

LRCOUT:

数字音频接口ADCDAC方向的桢信号。

SDIN:

配置数据输入

SCLK:

配置时钟

MCLK-芯片时钟输入(12.288M、11.2896M、18.432M、16.9344M)

VMID-半压输入,通常由一个10U和一个0.1U电容并联接地

MODE-芯片工作模式选择,Master或者Slave

CS-片选信号(配置时有效)

CLKOUT-时钟输出,可以为MCLK或者MCLK/2

(2)DSP与AIC23的连接

DSP与AIC23数字音频口的连接

AIC23的数字音频接口支持I2S模式(一种通用的音频格式),也支持DSPMode模式

(专为与TI的DSP连接模式)。

本次实习用到的是DSPMode。

DSP模式时序如图4-6所示。

图4-6

在DSP模式下,DSP的McBSP帧信号的宽度可以为一个位长。

采样率为48k,MCBSP串口时钟=48*32=1536K。

音频采样率设置:

采样率为48k,基过采样率为250Fs,CLKIN=CLKOUT=MCLK,时钟模式设为普通模式。

AIC23模拟音频的控制:

关掉侧音。

DAC使能,ADC输入选择为音频输入。

AIC23数字音频通路的控制:

使能ADC高通滤波。

AIC23耳机/左右通路音频调节。

4.4程序设计

(1)首先初始化CSL库,判断TESTCOMMAND的状态是试听还是和声。

(2)初始化锁相环得到CPU输出频率。

通过调用PLL_setFreq()来完成。

(3)初始化EMIF:

先对所有CE空间发送DCAB指令配置为SDRAM。

发送8位REFR刷新指令。

再对所有空间发送指令MRS配置为SDRAM。

SDRAM不需与外设共享,所有外部接口共享+SDRAM接口+同步存储器时钟。

(4)打开MCBSP端口1,得到句柄值。

通过使用先前定义的结构体配置MCBSP端口1。

对MCBSP配置即设置串口控制寄存器,设置接收帧格式(单数据相,接受数据长度为16位,每相2个数据),设置发送帧格式,设置引脚控制寄存器。

(5)I2C初始化:

设置7位地址,自地址为0,时钟输出频率为60MHz,8位接收和初始化,数字所相块关闭,配置I2C设置函数。

(6)AIC23初始化:

配置其控制寄存器,写初始化函数。

(7)在主函数中通过用switch()函数,来选择工作状态,即试听,和声。

(8)关于chorus()和声函数:

首先确定缓冲区大小,最大长度*380+360;在缓冲区里写初始化位置,初始化缓冲区时数据缓冲置0。

从话筒里采样数据;判断MCBSPrrdy接收寄存器句柄是否为1,为1即从MCBSP0里读数据,读两次数据是因为要给两路音频数据和声,把输入数据给数据缓冲区。

判断写数据的位置是否小于8ms延时,小于则继续读地址,否则读地址减延时,把数据缓冲区里的数据赋值给输出,输出为多次输入数据的累加。

然后控制输出的溢出。

再判断

xrdy寄存器句柄是否为1,为1向MCBSP里写数据,写两次数据是因为要给两路音频数据和声,判断写地址数据是否大于缓冲区大小,若大于则置0。

五调试过程及报告

1、了解实验箱电路原理图,然后再安好跳线帽,以及仿真器。

2、学会使用CCS3.3软件进行编译,将程序下载到实验箱中。

3、播放电脑中音频文件,并将音频线输出至排针J7,耳机线接至J5。

4、分析音频效果是否达到预期设计目标,和声效果。

六实习心得

时间飞逝,实习不知不觉过去了。

在两周实习中感触很深,刚开始的时候,对CCS3.3平台不是很熟悉,有些操作也不太正确,还有对DSP编写程序的方法不太了解。

通过向老师、同学询问相关知识,对此有一些深刻的理解。

在实习中通过动手练习,使我对SEED5502实验箱的使用更加熟练。

对于本次实习,虽然对DSP方面有了一些初步的了解,但是对于编程方面的应用,还是要进一步的学习,尤其是算法方面的编程。

在实习中还有很多知识没有理解透彻,我还要再仔细地学习那些还没有掌握的知识,多思考,勤动手。

对硬件方面还是得多实践,多看书。

对软件编程方面,多查手册,了解各寄存器每一位的作用。

还有要对C语言编程方面加强练习,以及对电路基础知识的复习,对软硬件都要很熟悉。

此次实习,我深刻体验到DSP技术的独特之处。

经过两周的实习,我感觉关于DSP方面还有很多要学习的方面,比如DMA,I2C,HPI等,今后要更加努力的学习DSP技术,不断地向老师和同学学习。

最后再次感谢老师辛勤的指导。

七程序清单

//Dec5502_code.c

1.#include

2.#include

3.#include

4.#include

5.#include

6.#include

7.#include

8.#include

9.#include"5502_FLASH.h"

10.#include"E2PROM_Function.h"

11.#include"CODEC.h"

12.#include"extaddr.h"

13.#include"type.h"

14.#undefCODEC_ADDR

15.#defineCODEC_ADDR0x1A

16.#defineAUDIOTRY0xAA0A

17.#defineAUDIOCOPY0xAA07

18.#defineTESTCOMMAND2

19.Uint16TestCommand=0;

20.#pragmaDATA_SECTION(DataBuffer,".Audio_data");

21.shortDataBuffer[9320]={0};

22.Uint16DataTempLeft=0;

23.Uint16DataTempRight=0;

24.shortdepth=8000;

25.shortdelay=2000;

26.shortfreq=31;

27.shortdecay=31;

28.shortwriteposition;

29.shortreadposition;

30.unsignedinti;

31.floatfreque[]={

32.0.2,0.3,0.4,0.5,

33.0.6,0.7,0.8,0.9,

34.1.0,1.1,1.2,1.3,

35.1.4,1.5,1.6,1.7,

36.1.8,2.0,2.2,2.4,

37.2.6,2.8,3.0,3.2,

38.3.4,3.6,3.8,4.0,

39.4.2,4.4,4.6,25};

40.

41.intccbuffer[]={

42.1,2,3,4,5,6,7,8,

43.9,10,11,12,13,14,

44.15,16,17,18,19,20,

45.21,22,23,24,25,26,

46.27,28,29,30,31,32};

47.MCBSP_HandlehMcbsp;

48.voidchorus(int,int);

49.voidmain(void)

50.{

51.CSL_init();

52.#ifTESTCOMMAND==2

53.TestCommand=AUDIOCOPY;//和声0xAA07

54.#endif

55.#ifTESTCOMMAND==1

56.TestCommand=AUDIOTRY;//试听0xAA0A

57.#endif

58.PLL_setFreq(1,0xC,0,1,3,3,0);

59.Emif_Config();

60.hMcbsp=MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);

61.Mcbsp_Config(hMcbsp);

62.I2C_cofig();

63.inti_AIC();

64.while

(1)

65.{switch(TestCommand)

66.{

67.caseAUDIOCOPY:

68.chorus(31,31);

69.break;

70.caseAUDIOTRY:

71.while(!

MCBSP_rrdy(hMcbsp)){};

72.DataTempLeft=MCBSP_read16(hMcbsp);

73.while(!

MCBSP_rrdy(hMcbsp)){};

74.DataTempRight=MCBSP_read16(hMcbsp);

75.while(!

MCBSP_xrdy(hMcbsp)){};

76.MCBSP_write16(hMcbsp,DataTempLeft);

77.while(!

MCBSP_xrdy(hMcbsp)){};

78.MCBSP_write16(hMcbsp,DataTempRight);

79.break;

80.default:

81.break;

82.}

83.}

84.}

85.voidchorus(intfreq,intdecay)

86.{

87.shortinput;

88.shortoutput;

89.intBufferSize=ccbuffer[decay]*380+360;

90.BufferSize-=1;

91.writeposition=BufferSize;

92.for(i=0;i

93.DataBuffer[i]=0;

94.}

95.while

(1){

96.while(!

MCBSP_rrdy(hMcbsp)){};

97.input=MCBSP_read16(hMcbsp);

98.while(!

MCBSP_rrdy(hMcbsp)){};

99.input=MCBSP_read16(hMcbsp);

100.DataBuffer[writeposition]=input;

101.if(writeposition

102.readposition++;

103.else

104.readposition=(writeposition-delay);

105.output=DataBuffer[readposition];

106.output+=input;

107.if(output<=-32767){

108.output=-32767;

109.}

110.if(output>=32767){

111.output=32767;

112.}

113.while(!

MCBSP_xrdy(hMcbsp)){};

114.MCBSP_write16(hMcbsp,output);

115.while(!

MCBSP_xrdy(hMcbsp)){};

116.MCBSP_write16(hMcbsp,output);

117.writeposition++;

118.if(writeposition>=BufferSize)

119.writeposition=0;

120.}

121.}

其他模块程序见文件夹software。

 

八参考文献

[1]董胜,刘柏生《DSP技术及应用》北京大学出版社,2013.3

[2]TI.TMS320C55xChipSupportLibraryAPIReferenceGuide.20004

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1