随着数字信号处理技术的迅速发展,录音也已经进入了数字化的时代。DSP(Digital Signal Processor)为数字信号处理提供了高效而可靠的硬件基础,已经广泛应用于高速自动控制、图像处理、通信技术、无线电、语音处理、网络设备、医疗设备、仪器仪表和家电等领域。本设计中所使用的TMS320VC5410就是设计适用于语音信号处理的DSP芯片。
本文首先对DSP数字录音的软硬件开发环境进行了介绍,着重论述了AIC32和TMS320C5410的设计方法、指令系统和内部结构以及TMS320C5410的集成开发环境CCS。最后,通过在DSP集成开发环境CCS上的设计、仿真和调试,实现了在DSP实验箱上进行数字录音和语音信号处理的设计功能。
1.开发软件简介.....1
2.数字录音机的原理....2
2.1 TMS320C5410芯片....2
2.2 AIC23芯片.....4
3.硬件电路....6
4调试过程及结果分析...8
5.总结及体会.....8
1.开发软件简介 本次课程设计采用CCS软件 CCS5000具有一下特性: TI编译器的完全集成的环境: CCS5000目标管理系统,内建编辑器,所有的调试和分析能力集成在一个Windows环境中。 对C和DSP汇编文件的目标管理: 目标编辑器保持对所有文件及相关内容的跟踪。它只对最近一次编译中改变过的文件重新编译,以节省编译时间。 高集成的编辑器调整C和DSP汇编代码: CCS5000的内建编辑器支持C和汇编文件的动态语法加亮显示。使用户能很容易地阅读代码和当场发现语法错误。 编辑和调试时的后台编辑: 用户在使用编译器和汇编器时没有必要退出系统到DOS环境中,因为CCS5000会自动将这些工具装载在它的环境中。在其窗口中,错误会加亮显示只要双击错误就可以直接到达出错处。 在含有浮点并行调试管理器(PDM)的原有的MS窗口下支持多处理器CCS5000在 Windows95和Windows-me中支持多处理。PDM(调试管理器)允许将命令传播给所有的或所选择的处理器。 在任何算法点观察信号的图形窗口探针: 图形显示窗口使用户能够观察时域或频域内的信号。对于频域图,FFT(快速傅立叶变换)在主机内执行,这样就可以观察所感兴趣的部分而无须改变它的DSP代码。图显示也可以同探针连接,当前显示窗口被更新时,探针被指定,这样当代码执行到达该点时,就可以迅速地观察到信号。 文件探针在算法处通过文件提取或加入信号或数据: CCS5000允许用户从PC机读或写信号流。而不是实时的读信号,这就可以用已知的例子来仿真算法。 图形分析: CCS5000的图形分析能力在其环境中是集成的。 在后台(系统命令)执行用户的DOS程序: 用户可以执行CCS5000中的DOS程序,并将其输出以流水方式送到CCS5000的输出窗口。且允许用户将应用程序集成到CCS5000。 技术状态观察窗口: CCS5000的可视窗口允许用户进入C表达式及相关变量。结构、数组、指针都能很简单地递归扩展和减少,以便进入复杂结构。 代数分解窗口: 允许用户选择查看写成代数表达式的C格式,提高可读性 。 目标DSP上的帮助: DSP结构和寄存器上的在线帮助可以使用户不必查看技术手册。 用户扩展: 扩展语言(GEL)使得用户可以将自己的菜单项加到CCS5000的菜单栏中。
2.数字录音机的原理 数字化技术的迅速发展,语音信号数字处理技术也不断成熟,可编程器件和功能强大的数字信号处理器(DSP)的广泛应用,传统的模拟音像设备大量地被各种数字设备所代替。然而,便携式的录音设备仍以各种模拟媒质为主,如常用的磁带录音机。如果要将其录音以数字形式的数据保存,则应将其模拟录音信号变换成数字形式的数据,这就给原始数据的保存带来诸多不便。因此,本文设计了一款DSP数字录音机。 所谓数字信号处理,是用数字或符号的序列来表示信号,通过数字计算机或专门的数字信号处理器去处理这些序列,提取其中的有用信息。例如:对信号的滤波,增强信号的有用分量,消弱无用分量;或是估计信号的某些特征参数等。总之,凡是用数字方式对信号进行滤波、变换、增强、压缩、估计和识别等,都是数字信号处理的研究对象。 目前,大多数的DSP系统主要应用在高速控制、移动通信、雷达等方面。本系统将DSP技术引入到数字交换机录放音系统中来,就是希望利用DSP的特点、借鉴在移动通信中数字语音信号处理的一些算法和优化,能够研制开发出体积小、价格低、实时性高且功能完善的录音系统。
2.1TMS320C5410芯片
2.1.1TMS320C5410芯片简介 (1) 16位定点DSP芯片,总线结构为改进的哈佛结构,内部有1个17X17位的乘法器; (2) 外接晶振最大为40MHz,通过PLL倍频最高主频为160MHz; (3) 片内ROM大小为16K×16bit , DARAM大小为8K×16bit, SARAM大小为56K×16bit; (4) 3组多通道缓冲串行口(McBSP),DMA,主机接口HPI (5) 通用IO引脚(BIO与XF),外部中断引脚INT0,INT1,INT2,INT3与NMI C5410中的DARAM分成若干块。由于在每个机器周期内,允许对同一DARAM块寻址(访问)2次,因此CPU可以在一个机器周期内对同一DARAM块读出一次和写入一次。一般情况下,DARAM总是映象到数据存储器空间,主要用于存放数据。但是,它也可以映象到程序存储器空间,用来存放程序代码。
2.1.2 TMS320C5410框图 TMS320C54x DSP 采用先进的修正哈佛结构和8总线结构,使处理器的性能大大提高。其独立的程序和数据总线,允许同时访问程序存储器和数据存储器,实现高度并行操作。例如,可以在一条指令中,同时执行3次读操作和1次写操作。此外,还可以在数据总线与程序总线之间相互传送数据,从而使处理器具有在单个周期内同时执行算术运算、逻辑运算、移位操作、乘法累加运算以及访问程序和数据存储器的强大功能。
2.1.3 TMS320C5410的CPU 先进的多总线结构(一条程序总线,3条数据总线和4条地址总线); 40位算术逻辑运算单元(ALU),包括1个40位桶形移位寄存器和2个独立的40位累加器; 7位*17位并行乘法器,与40位专用加法器相连,用于非流水线式单周期乘法/累加(MAC)运算; 比较、选择、存储单元(CSSU),用于加法/比较选择; 指数编码器,可以在单个周期内计算40位累加器中数值的指数; 双地址生成器,包括8个辅助寄存器和2个辅助寄存器算术运算单元(ARAU)。
2.1.4 TMS320C5410存储器 C54X中的DARAM分成若干块。由于在每个机器周期内,允许对同一DARAM块寻址(访问)2次,因此CPU可以在一个机器周期内对同一DARAM块读出一次和写入一次。一般情况下,DARAM总是映象到数据存储器空间,主要用于存放数据。但是,它也可以映象到程序存储器空间,用来存放程序代码: 192K字可寻址存储空间(64K字程序存储器、64K字数据存储器以及64K字I/O空间); 片内ROM,可配置为程序/数据存储器; 片内双寻址RAM(DARAM); 片内单寻址RAM(SARAM);
2.2 AIC23芯片
2.2.1 AIC23基本性能
AIC23是德州仪器公司(TI)生产的高性能音频A/D、D/A放大电路。外围接口工作电压为3.3V,内核工作电压是1.5V,在48kHz采样率条件下,A/D变换信噪比可达100dB,其控制口可由硬件设置为同步置口(SP2)模式或两线制(2-wire),音频数据接口可采用I2S格式、DSP格式、USB格式及最高位或最低位数据调整格式。音频数据字长可设置为16、24、20、32位,输出可直接驱动耳机,在32位条件下输出可达30mW。内置前置放大器及偏置电路可直接连接麦克风。该芯片功耗很低,在休眠(power-down)状态下,功耗小于15uW。
2.2.2 AIC23的内部结构框图
2.2.3 AIC23的控制方式及控制寄存器各位的意义 (1)AIC23的控制接口:AIC23的控制字传输可采用两种方式,即同步串行(SPI)模式和两线(2-wire)模式,两种模式由硬件决定。MODE脚接高电平时,控制字传送用SPI模式,如果MODE脚接低电平时,则采用2-wire模式。在本次实验中,我们采用SPI模式。 (2)AIC23的控制寄存器 控制寄存器的地址如下表所示:
①.左声道线路输入控制寄存器 LRS:左/右声道线路输入增益控制调节,0=同步调节禁止,1=同步使能 LIM:左声道线路输入静音控制,0=正常,1=静音 LIV4~0:左声道音量控制,11111=±12dB,00000=-34.5dB,步距1.5dB/LSB X:保留 ②.右声道线路输入控制寄存器 ③.左声道耳机音量控制寄存器 LSR:左/右声道音量控制同步调节,0=同步调节不使能,1=同步调节使能 LZC:左通道过零侦测(防止干扰进入耳机放大器),0=关,1=开 LHV(6~0):耳机音量控制,1111111=+6dB,0110000=-73dB ④.右声道耳机音量控制寄存器 ⑤.滤波器控制寄存器 DACM:D/A变换电路软件静音控制,0=不静音,1=软件静音 DEEMP:去加重控制选择,00=关,01=32kHz,10=44kHz,11=48kHz ADCHP:A/D高通滤波器,0=关闭,1=开 ⑥.休眠控制器 OFF:芯片休眠控制,0=芯片通电,1=芯片休眠 CLK:时钟控制,0=时钟开启,1=时钟关闭 OSC:振荡器控制,0=振荡器开启,1=振荡器关闭 OUT:输出控制,0=输出开启,1=输出关闭 DAC:D/A变换控制,0=D/A变换开启,1=D/A变换关闭 ADC:A/D变换控制,0=A/D变换开启,1=A/D变换关闭 MIC:话筒电路控制,0=开启,1=关闭 LINE:线路输入控制,0=开,1=关 ⑦.数字音频接口格式控制寄存器 MS:主/从模式控制位,0=从模式,1=主模式 LRSWAP:D/A左右通道交换控制位,0=不交换,1=交换 LRP:D/A左右数字声道帧相位 IWL:数字音频字长 FOR:数字音频接口格式选择 3.硬件电路 1、硬件电路图的主要部分如下图所示
2、实验框图和流程图
4.调试过程及结果分析 调试过程: 1.在调试开始的时候,用音频线连接实验箱的扬声器和AIC23模块的LINEOUT或者PHONE端,MIC端口连接一个MIC(这里我们用手机代替,接入手机耳机插口)。 2.打开aic23micphone.pjt工程,这是一个AIC23的程序,编译。 3.将编译的aic23micphone.out文件通过 仿真器下载到DSP芯片,执行程序。 4.听到“滴”的一声以后开始录音,大概6秒后“滴”的一声是录音结束,接着DSP会循环回放刚才录的声音。如果想再次录音则需要再次下载并运行。 结果分析 在连接好实验设备之后,在手机里上随意播放一个音频文件播放后,可以录制6秒时间内的内容,循环播放。 5.设计总结及体会 本次课程设计是采用TMS320C5410作为语音录放实现的核心硬件,以AIC23作为数模转换芯片来实现整个硬件系统。在整个设计过程中,我们采用了以带有A/D转换器的AIC23DSP芯片为核心音频录放接口器件,结合TMS320C5410DSP芯片,进行了硬件设计。软件部分则采用模块化的设计方法,用汇编语言来实现。 通过本次课程设计,进一步了解了本门课程《DSP原理及应用》。虽然录音机很简陋,但基本模型已具备;但过程中还是有不懂的问题,幸好有老师在,才得以解答我的疑惑;总的来说,本次课程设计的结束是非常圆满的。 - .title "AIC23.asm"
- .mmregs
- .bss timetemp,1
- .bss addrtemp,1
- audio_in .usect "buf",0C000h
- ;定义MCBSP0的各个寄存器
- bsp2 .set 35h
- drr22 .set 30h
- drr12 .set 31h
- dxr22 .set 32h
- dxr12 .set 33h
- spsa2 .set 34h
-
- bsp0 .set 39h
- drr20 .set 20h
- drr10 .set 21h
- dxr20 .set 22h
- dxr10 .set 23h
- spsa0 .set 38h
- spcr10 .set 00h
- spcr20 .set 01h
- rcr10 .set 02h
- rcr20 .set 03h
- xcr10 .set 04h
- xcr20 .set 05h
- srgr10 .set 06h
- srgr20 .set 07h
- pcr0 .set 0eh
- cpldport1 .set 2000h
-
- .def _c_int00,_McBSP_txisr,_McBSP_rvisr
- .data
- audio_table:
- .word 07ff5H,05842H,0fcdcH,0a34dH,0800bH,0a7beH,0324H,05cb3H
- .word 07ff5H,05842H,0fcdcH,0a34dH,0800bH,0a7beH,0324H,05cb3H
-
- .text
- _c_int00: stm #7000h,swwsr ;等待0个时钟
- ssbx intm
- STM #0b, CLKMD ;switch to DIV mode
-
-
-
- TstStatu:
- LDM CLKMD, A
- AND #01b, A ;poll STATUS bit
- BC TstStatu, ANEQ
- STM #0100001111101111b, CLKMD ;switch to PLL
- RPT #10000
- NOP
- rsbx cpl ;清CPL位=0
- ;初始化cpu完毕,开始初始化MCBSP0
- stm #216ch,pmst
- stm #0080h, imr
- stm #0FFFFh, ifr
- stm #0001h,ar1
- portw ar1,cpldport1 ;切换字写到CPLD控制寄存器,转为控制字输出
- rpt #400
- nop ;等400个周期
-
- ld #00h,dp
- stm #spcr10,spsa0 ;接收复位
- stm #0000h,bsp0
- stm #spcr20,spsa0 ;发送、采样、帧复位
- stm #0000h,bsp0
- stm #spcr10,spsa0 ;12、11位为10,进入SPI模式,7位(DXENA)为0,不起动DX延时
- stm #1000h,bsp0
- stm #pcr0,spsa0 ;1位置1,数据下沿发送上沿接收,3位置1,帧同步为低电平有效,9位置1?BLCK输出,11位置1,BFSX脚为高电浇
- stm #0a0ah,bsp0
- stm #srgr10,spsa0 ;7~0位置64h(100),100分频
- stm #0064h,bsp0
- stm #srgr20,spsa0 ;13位置1,时钟源于CPU,12位置0,发送帧同步
- stm #2000h,bsp0
- stm #rcr10,spsa0 ;14~8位置0,一帧一个字,7~5位为010,一个字16位
- stm #0040h,bsp0
- stm #rcr20,spsa0 ;15位置0,单阶段帧,1、0位置01保证SPI正常工作
- stm #0001h,bsp0
- stm #xcr10,spsa0 ;14~8位置0,一帧一个字,7~5位为010,一个字16位
- stm #0040h,bsp0
- stm #xcr20,spsa0 ;15位置0,单阶段帧,1、0位置01保证SPI正常工作
- stm #0001h,bsp0
- stm #spcr20,spsa0 ;6位GRST为1,采样脱离复位,FRST是否要脱离复位?
- orm #0040h,bsp0
- rpt #400 ;等两个以上位时钟
- nop
- stm #spcr10,spsa0 ;接收离开复位
- orm #0001h,bsp0
- stm #spcr20,spsa0 ;发送离开复位
- orm #0001h,bsp0
- rpt #400
- nop
- LOOP2
- ;初始化AIC23为DAC、ADC、CLKOUT、DSP模式结束
- stm #1e00h,dxr10
- rpt #3000
- nop
- stm #05ffh,dxr10 ;过零侦测开,音量为6dB
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #07ffh,dxr10 ;过零侦测开,音量为6dB
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #0914h,dxr10 ;伴音使能,DAC使能,MIC输入、BYPASS不使能
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #0a02h,dxr10 ;DAC静音不使能,去加重为32KHz,ADC高通滤波器不使能
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #0097h,dxr10 ;左声道线路输入0dB,线路输入静音
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #0297h,dxr10 ;右声道线路输入0dB,线路输入静音
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #0C01h,dxr10 ;POWER、CLOCK、OSC、OUT、DAC、ADC、MIC打开line in关闭
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #0e53h,dxr10 ;6位为1,AIC23在DSP模式中为主器件,4位为1,第二个时钟上沿数据可用,字长16位,DSP模式
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #100Dh,dxr10 ;USB模式,8KHz采样率,输入时钟为MCLK,输出时钟为MCLK
- rpt #3000 ;延时等待数据传送完毕
- nop
- stm #1201h,dxr10 ;数字接口激活
- rpt #3000 ;延时等待数据传送完毕
- nop
- ; B LOOP2
- ;AIC23的DAC输出设置结束,开始输出音频数据
- ;开始设置MCBSP2为DSP模式从器件,
- stm #spcr10,spsa2 ;RRST为0接收复位
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;XRST为0,GRST为0,FRST为0发送、采样、帧复位
- stm #0000h,bsp2
- stm #spcr10,spsa2 ;5、4位为00,接收完成产生中断,进入非SPI模式,7位(DXENA)为0,不起动DX延时
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;5、4位为00,发送完成产生中断,采样,帧同步复位
- stm #0200h,bsp2
- stm #pcr0,spsa2 ;帧同步,采样为外部输入,外部时钟极性反相
- stm #0006h,bsp2
- stm #rcr10,spsa2 ;14~8位置0,一帧两个字,7~5位为010,一个字16位
- stm #0140h,bsp2
- stm #rcr20,spsa2 ;15位置0,单阶段帧,第二阶一个字,16位字长1、0位置01延迟一个位时钟数据有效
- stm #0001h,bsp2
- stm #xcr10,spsa2 ;14~8位置0,一帧两个字,7~5位为010,一个字16位
- stm #0140h,bsp2
- stm #xcr20,spsa2 ;15位置0,单阶段帧,第二阶一个字,16位字长1、0位置01延迟一个位时钟数据有效
- stm #0001h,bsp2
- rpt #40 ;等两个以上位时钟
- nop
- stm #0000h,dxr12 ;传起始数据到AIC23
- stm #0000h,dxr22
- rpt #400 ;等两个以上位时钟
- nop
- ;MCBSP0口设置为DSP模式结束,输出数据
- nop
- stm #drr12, ar5
- ldu *ar5, a
- stm #drr22, ar5
- ldu *ar5, a
- st #audio_table, ar5
- st #15, *(timetemp)
- st #audio_table, *(addrtemp)
- st #15, ar4
- rsbx intm
- stm #spcr20,spsa2 ;发送离开复位
- orm #0001h,bsp2
- nop
- nop
-
- stm #4000h,brc
- rptb delay1s-1
- rpt #01800h
- nop
- delay1s: nop
- ssbx intm
- stm #spcr20,spsa2 ;发送结束
- orm #0000h,bsp2
- stm #2000h,brc
- rptb delay2s-1
- rpt #01800h
- nop
- delay2s: nop
- stm #spcr10,spsa2 ;接收离开复位
- orm #0001h,bsp2
- stm #0040h, imr
- stm #0040h, ifr
- st #audio_in, ar5
- st #0Bfffh, ar4
- rsbx intm
- loop4
- ldm ar4,b
- nop
- nop
- bc mic,beq
- b loop4
- mic
- ssbx intm
- stm #spcr10,spsa2 ;RRST为0接收复位
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;XRST为0,GRST为0,FRST为0发送、采样、帧复位
- stm #0000h,bsp2
- stm #spcr10,spsa2 ;5、4位为00,接收完成产生中断,进入非SPI模式,7位(DXENA)为0,不起动DX延时
- stm #0000h,bsp2
- stm #spcr20,spsa2 ;5、4位为00,发送完成产生中断,采样,帧同步复位
- stm #0200h,bsp2
- stm #pcr0,spsa2 ;帧同步,采样为外部输入,外部时钟极性反相
- stm #0006h,bsp2
- stm #rcr10,spsa2 ;14~8位置0,一帧两个字,7~5位为010,一个字16位
- stm #0140h,bsp2
- stm #rcr20,spsa2 ;15位置0,单阶段帧,第二阶一个字,16位字长1、0位置01延迟一个位时钟数据有效
- stm #0001h,bsp2
- stm #xcr10,spsa2 ;14~8位置0,一帧两个字,7~5位为010,一个字16位
- stm #0140h,bsp2
- stm #xcr20,spsa2 ;15位置0,单阶段帧,第二阶一个字,16位字长1、0位置01延迟一个位时钟数据有效
- stm #0001h,bsp2
- rpt #40 ;等两个以上位时钟
- nop
- stm #0000h,dxr12 ;传起始数据到AIC23
- stm #0000h,dxr22
- stm #0080h, imr
- stm #0080h, ifr
- stm #spcr20,spsa2 ;发送离开复位
- orm #0001h,bsp2
- nop
- nop
- st #audio_table, ar5
- st #15, *(timetemp)
- st #audio_table, *(addrtemp)
- st #15, ar4
- rsbx intm
- stm #3000h,brc
- rptb delay3s-1
- rpt #01800h
- nop
- delay3s: nop
- st #audio_in, ar5
- st #0bfffh, *(timetemp)
- st #audio_in, *(addrtemp)
- st #0bfffh, ar4
- b $
-
-
- _McBSP_txisr:
-
- ld *ar5+, A
- stlm a, dxr12
- stlm a, dxr22
- nop
- nop
- banz goon, *ar4-
- mvdm timetemp, ar4
- mvdm addrtemp, ar5
- goon
- nop
- nop
- rete
- _McBSP_rvisr:
-
- stm #drr12, ar2
- ldu *ar2, a
- stl a, *ar5+
- stm #drr22, ar2
- ldu *ar2, a
- mar *ar4-
- goon2
- reted
- nop
- nop
- .end
复制代码
完整的Word格式文档51黑下载地址:
aaa.doc
(1.95 MB, 下载次数: 52)
|