多制式语音编码及其DSP实现
[10-10 20:36:41] 来源:http://www.88dzw.com 电子制作 阅读:8927次
文章摘要: (2)算法的硬件选择程序定义了两个标志变量flag1、flag2。利用VC5409提供的可屏蔽中断INT0~INT3[1],在中断服务例程中对2个标志位进行设置,从而控制主程序的跳转。系统加电后,INT0~INT3其中一个管脚给出中断请求信号,程序执行中检测到哪个中断,就执行该中断对应的编码算法。接着,主程序对IMR寄存器置位以屏蔽这些中断,直至下一次系统复位。其中INT0中断在测试中是无编码转换的跳转,但在应用中用于选择32kbps的CVSD算法。表1是算法选择的硬件中断与标志位设置。 (3)数据流输入和输出VC5409提供了3个McBSP (Multichannel Buffere
多制式语音编码及其DSP实现,标签:电子小制作,http://www.88dzw.com(2)算法的硬件选择
程序定义了两个标志变量flag1、flag2。利用VC5409提供的可屏蔽中断INT0~INT3[1],在中断服务例程中对2个标志位进行设置,从而控制主程序的跳转。
系统加电后,INT0~INT3其中一个管脚给出中断请求信号,程序执行中检测到哪个中断,就执行该中断对应的编码算法。接着,主程序对IMR寄存器置位以屏蔽这些中断,直至下一次系统复位。其中INT0中断在测试中是无编码转换的跳转,但在应用中用于选择32kbps的CVSD算法。表1是算法选择的硬件中断与标志位设置。
(3)数据流输入和输出
VC5409提供了3个McBSP (Multichannel Buffered Serial Ports)[2],并在其中集成了硬件对数PCM编解码器。串口的双缓冲区发送、三缓冲区接收能保证数据的连续性。收发的数据流字长可以是8、12、16、20、24、32bit,每帧最多可以有128个字。表2是本项目采用的串口配置。
对每种算法,4路编解码器都要求全双工工作,因此,对3个McBSP都进行了配置。其中,McBSP0负责PCM码流的收发。PCM码流是4路8bit的A-law信号,因此定义字长为8位;McBSP1收发G.729的码流。G.729分帧编码,帧长10ms,每帧80bit。为了数据能够方便、有效地收发,定义串口的字长为16bit,这样,每5个帧同步收全一个G.729帧,共16×5×4(路)=80×4bit。
为了取得数据格式的一致性,方便串口收发码流,对ADPCM和CVSD定义了相同的码流格式,并由McBSP2收发。如图2所示。
32kbps ADPCM每样点用4bit编码,规定其码流为每样点的码字重复2次,即占8bit。4路信号共32bit;16kbps和32kbps的CVSD是每样点2bit和4bit编码,故规定其码流为每比特编码码字分别重复4次和2次,即均占8bit。4路信号也是32bit。
(4)数据流的传输(串口与存储区)
VC5409提供了6个DMA[2]通道,用户可以设置每个DMA通道的源地址、目的地址、一次传输的数据量、同步事件和中断方式等。
表3是本项目中各DMA通道的配置情况。
(5)数据传输的控制
www.88dzw.com如图3所示,串行数据流在McBSP的DR管脚接收,DX管脚发送。数据收发由帧同步信号触发。帧同步由CPLD提供,位时钟由外部晶振提供。
串口与存储区之间的数据交换由CPU或DMA控制器完成。接收寄存器DRR满(发送寄存器DXR空)时,串口向DMA发出同步事件(REVT/XEVT)或向CPU发出中断请求(RINT/XINT),通知DMA或CPU数据传输已准备好。
对PCM和G.729码流,串口(McBSP0/McBSP1)的数据读写为DMA方式。
《多制式语音编码及其DSP实现》相关文章
- › 多制式语音编码及其DSP实现
- 在百度中搜索相关文章:多制式语音编码及其DSP实现
- 在谷歌中搜索相关文章:多制式语音编码及其DSP实现
- 在soso中搜索相关文章:多制式语音编码及其DSP实现
- 在搜狗中搜索相关文章:多制式语音编码及其DSP实现