本发明涉及无线通信技术,尤其涉及一种语音同步的方法和装置。
背景技术:
在移动通信系统中,为了保证网络语音通信的正常进行,本地时钟和网络时钟之间保持同步,也就是需要终端UE的时间基准和驻留小区的系统帧号(SFN,System Frame Number)保持同步。当前对于实现本地时钟和网络时钟的同步,通常通过软件进行实现时钟同步。在软件实现过程中,软件运行的环境因素容易影响软件的同步处理过程,从而导致同步偏差,甚至出现失步的情况,同步处理的性能较低;并且软件实现同步过程的处理速度也比较低。
语音同步方案适用于各种制式的无线通信系统,如全球移动通信系统(GSM,Global System for Mobile Communication)、宽带码分多址(WCDMA,Wideband Code Division Multiple Access,),码分多址2000(CDMA2000,Code Division Multiple Access 2000),时分同步码分多址(TD-SCDMA,Time Division-Synchronous Code Division Multiple Access)以及长期演进(LTE,Long Term Evolution,)和长期演进技术升级版(LTE-A,LTE-Advanced)等通信制式。本发明可以减少语音处理器响应中断的频率,从而降低系统功耗,同时借助硬件支持,可以提供较高的语音同步精度,提高语音同步性能。
技术实现要素:
为解决上述技术问题,本发明实施例期望提供一种语音同步的方法和装置,能够提高语音同步处理的性能及速率。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了语音同步的方法,该方法可以包括:
将集成电路内置音频I2S总线中的声道指示信号作为时钟同步信号;
对物理层获取的语音帧信号进行采样得到帧中断信号,并根据所述帧中断信号及预设的参数生成第一中断信号;
通过两个计数器分别按照预设的计数规则对所述时钟同步信号的周期进行计数;其中,第一计数器的计数规则为:按照第一预设数目对所述时钟同步信号的周期进行循环计数,并且在所述第一中断信号的生成时刻进行清零并重新开始计数;第二计数器的计数规则为:在第二中断信号的生成时刻进行清零并重新计数;
在所述第一计数器的计数数目为第二预设数目时生成所述第二中断信号,并记录所述第二计数器当前的第一计数数目,并且根据所述第一计数数目与第二计数数目之间的差值和预设的门限确定通过直接内存访问DMA进行搬移的语音样本的数据长度;其中,所述第二计数数目为所述第二计数器在前一次第二中断信号生成时所记录的计数数目。
在上述方案中,所述对物理层获取的语音帧信号进行采样得到帧中断信号,具体包括:
将所述时钟同步信号作为两级D触发器的CP输入信号;
将所述语音帧信号作为第一级D触发器的D输入信号;
将所述第一级D触发器的输出信号作为第二级D触发器的D输入信号;
将所述第二级D触发器的输出信号的反向信号以及所述第一级D触发器的输出信号进行逻辑与运算,得到所述帧中断信号。
在上述方案中,所述根据帧中断信号及预设的参数生成第一中断信号,具体包括:
在第一使能信号为高时,通过帧计数器对所述帧中断信号进行计数;
所述帧计数器的计数达到传输时间间隔偏移TTI_OFFSET后清零;并以TTI_PERIOD为周期对所述帧中断信号进行循环计数;
每当所述帧计数器清零时,所述第一中断信号产生一个宽度为一个时钟同步信号周期长度的脉冲。
在上述方案中,所述在第一计数器的计数数目为第二预设数目时生成第二中断信号,包括:
当所述第一计数器的计数数目达到所述第二预设数目时,所述第二中断信号产生一个宽度为一个时钟同步信号周期长度的脉冲。
在上述方案中,所述根据所述第一计数数目与第二计数数目之间的差值和预设的门限确定通过直接内存访问DMA进行搬移的语音样本的数据长度,包括:
将当前的第一计数数目保存至第一变量sw_rt_sample_cnt_reg_cur;将所述第二中断信号在上一次产生一个宽度为时钟同步信号周期长度的脉冲时记录的第二计数数目保存至第二变量sw_rt_sample_cnt_reg_last;
通过所述第一变量和所述第二变量的差值sw_rt_sample_cnt_reg_diff与预设的门限值进行比较:
若所述差值sw_rt_sample_cnt_reg_diff大于所述预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160+sw_rt_sample_cnt_reg_diff;
若所述差值sw_rt_sample_cnt_reg_diff不大于所述预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160;
其中,所述差值sw_rt_sample_cnt_reg_diff通过下式计算获得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last。
第二方面,本发明实施例提供了一种语音同步的装置,该装置包括:第一生成单元、采样单元、第二生成单元、计数单元和确定单元,其中,
所述第一生成单元,用于将集成电路内置音频I2S总线中的声道指示信号作为时钟同步信号;
所述采样单元,用于对物理层获取的语音帧信号进行采样得到帧中断信号;
所述第二生成单元,用于根据所述帧中断信号及预设的参数生成第一中断信号;
所述计数单元,用于通过两个计数器分别按照预设的计数规则对所述时钟 同步信号的周期进行计数;其中,第一计数器的计数规则为:按照第一预设数目对所述时钟同步信号的周期进行循环计数,并且在所述第一中断信号的生成时刻进行清零并重新开始计数;第二计数器的计数规则为:在第二中断信号的生成时刻进行清零并重新计数;
所述第二生成单元,还用于在所述第一计数器的计数数目为第二预设数目时,生成所述第二中断信号;
所述确定单元,用于在所述第一计数器的计数数目为第二预设数目时,记录所述第二计数器当前的第一计数数目,并且根据所述第一计数数目与第二计数数目之间的差值和预设的门限确定通过直接内存访问DMA进行搬移的语音样本的数据长度;其中,所述第二计数数目为所述第二计数器在前一次第二中断信号生成时所记录的计数数目。
在上述方案中,所述采样单元,包括两级D触发器和一个与门逻辑计算单元,其中,
将所述时钟同步信号作为所述两级D触发器的CP输入信号;
将所述语音帧信号作为所述两级D触发器中第一级D触发器的D输入信号;
将所述第一级D触发器的输出信号作为所述两级D触发器中第二级D触发器的D输入信号;
将所述第二级D触发器的输出信号的反向信号以及所述第一级D触发器的输出信号作为所述与门逻辑计算单元的输入信号,则所述与门逻辑计算单元的输出信号为所述帧中断信号。
在上述方案中,所述第二生成单元,具体用于:
在第一使能信号为高时,通过帧计数器对所述帧中断信号进行计数;以及,
所述帧计数器的计数达到传输时间间隔偏移TTI_OFFSET后清零;并以TTI_PERIOD为周期对所述帧中断信号进行循环计数;以及,
每当所述帧计数器清零时,所述第一中断信号产生一个宽度为一个时钟同步信号周期长度的脉冲。
在上述方案中,所述第二生成单元,具体用于:当所述第一计数器的计数数目达到所述第二预设数目时,所述第二中断信号产生一个宽度为一个时钟同步信号周期长度的脉冲。
在上述方案中,所述确定单元,具体用于:
将当前的第一计数数目保存至第一变量sw_rt_sample_cnt_reg_cur;将所述第二中断信号在上一次产生一个宽度为时钟同步信号周期长度的脉冲时记录的第二计数数目保存至第二变量sw_rt_sample_cnt_reg_last;以及,
通过所述第一变量和所述第二变量的差值sw_rt_sample_cnt_reg_diff与预设的门限值进行比较:
若所述差值sw_rt_sample_cnt_reg_diff大于所述预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160+sw_rt_sample_cnt_reg_diff;
若所述差值sw_rt_sample_cnt_reg_diff不大于所述预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160;
其中,所述差值sw_rt_sample_cnt_reg_diff通过下式计算获得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last。
本发明实施例提供了一种语音同步的方法和装置,结合了硬件与软件两个方面根据声道指示信号和帧信号来产生相应的中断,并按照产生的中断进行同步,能够提高语音同步处理的性能及速率。
附图说明
图1为本发明实施例提供的一种语音同步的方法流程示意图;
图2为本发明实施例提供的一种电路结构图;
图3为本发明实施例提供的一种时序波形图;
图4为本发明实施例提供的另一种时序波形图;
图5为本发明实施例提供的又一种时序波形图;
图6为本发明实施例提供的再一种时序波形图;
图7为本发明实施例提供的一种语音同步的装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
参见图1,其示出了本发明实施例提供的一种语音同步的方法,该方法可以包括:
S101:将集成电路内置音频(I2S,Inter—IC Sound)总线中的声道指示信号作为时钟同步信号;
在本实施例中,可以从任意一路I2S中的声道指示信号WS作为时钟同步信号,该时钟同步信号用clk_voice_sync表示。
S102:对物理层获取的语音帧信号进行采样得到帧中断信号;
可以理解的,由于通信制式的不同,可以在多模终端中根据不同通信制式的物理层协议的区别对各通信制式对应的语音帧信号进行采样,从而能够得到各通信制式所对应的帧中断信号,在本实施例中,列举而非限定的,不同的通信制式可以包括:GSM,WCDMA,CDMA2000/EVDO,TD-SCDMA以及LTE和LTE-A等。对应这些不同的通信制式,帧中断信号也各不相同,本实施例中的帧中断信号用frame_int表示,语音帧信号可以用frame_int_4k表示。
另外,本发明实施例是对物理层获取的语音帧信号进行相应的处理,因此,本发明实施例的过程可以在上行或下行帧处理时进行实施,这样从I2S接收的语音样本就可以通过DMA进行搬移,减少了内核响应中断的次数也就减少了内核负载。可以理解地,本实施例中的语音帧信号既可以是上行帧,也可以是下行帧,本发明实施例对此不做赘述。
示例性地,在本实施例中,对物理层获取的语音帧信号进行采样得到帧中断信号,可以通过图2所示的电路图进行表示,具体可以包括:
将时钟同步信号clk_voice_sync作为两级D触发器的CP输入信号;
将语音帧信号frame_int_4k作为第一级D触发器的D输入信号;
将第一级D触发器输出信号作为第二级D触发器的D输入信号;
将第二级D触发器输出信号的反向信号以及第一级D触发器输出信号进行逻辑与运算,得到帧中断信号frame_int。
S103:根据帧中断信号及预设的参数生成第一中断信号;
示例性地,在本实施例中,第一中断信号用voice_sync_int表示,该第一中断信号是一种周期性脉冲中断信号,其脉冲宽度为一个clk_voice_sync周期,间隔为传输时间间隔(TTI_PERIOD,Transmission Time Interval period),比如,GSM模式下的TTI_PERIOD为60ms,LTE/WCDMA/TD-CDMA模式下的TTI_PERIOD为20ms。
具体地,如图3所示的时序波形图,根据帧中断信号及预设的参数生成第一中断信号,包括:
在第一使能信号voice_sync_en为高时,通过帧计数器nt_frm_cnt对帧中断信号frame_int进行计数;具体地,每经过一个帧中断信号frame_int,帧计数器nt_frm_cnt加1;
帧计数器nt_frm_cnt的计数达到传输时间间隔偏移(TTI_OFFSET,Transmission Time Interval offset)后清零;并以TTI_PERIOD为周期对帧中断信号frame_int进行循环计数;
第一中断信号voice_sync_int在帧计数器nt_frm_cnt的计数达到TTI_OFFSET后产生第一个脉冲,然后以TTI_PERIOD为周期产生剩余的脉冲;也就是说,每当帧计数器nt_frm_cnt清零时,第一中断信号产生一个宽度为一个clk_voice_sync周期长度的脉冲。
S104:通过两个计数器分别按照预设的计数规则对时钟同步信号的周期进行计数;其中,第一计数器的计数规则为:按照第一预设数目对时钟同步信号的周期进行循环计数,并且在第一中断信号的生成时刻进行清零并重新开始计数;第二计数器的计数规则为:在第二中断信号的生成时刻进行清零并重新计数;
在本实施例中,第一预设数目用M表示,第一计数器可以用nt_sample_cnt表示,第二计数器可以用rt_sample_cnt表示。
对于第一计数器nt_sample_cnt来说,如图4中的虚线对应所示,当nt_sample_cnt对时钟同步信号的周期从0计数到M-1时,nt_sample_cnt进行清零并重新计数;当第一中断信号voice_sync_int的生成时刻,nt_sample_cnt也进行清零并重新计数。
而第二计数器rt_sample_cnt并不需要进行循环计数,清零仅与第二中断信号voice_time_int的生成时刻有关,因此,rt_sample_cnt拥有比nt_sample_cnt更多的自由度。如图5所示,当rt_sample_cnt计数到N时,第二中断信号voice_time_int生成,此时rt_sample_cnt清零并重新计数;当rt_sample_cnt计数到M时,第二中断信号voice_time_int生成,此时rt_sample_cnt清零并重新计数。
S105:在第一计数器的计数数目为第二预设数目时生成第二中断信号,并记录第二计数器当前的第一计数数目,并且根据第一计数数目与第二计数数目之间的差值和预设的门限确定通过直接内存访问(DMA,Direct Memory Access)进行搬移的语音样本的数据长度;
其中,第二计数数目为第二计数器在前一次第二中断信号生成时所记录的计数数目。
需要说明的是,上述S101至S104的过程可以通过硬件器件进行完成;而本步骤则可以通过软件来进行实现。在本步骤中,如图6所示,在图6所示的时序波形图中,当第一计数器nt_sample_cnt的计数数目达到第二预设数目A时,第二中断信号voice_time_int产生一个宽度为一个clk_voice_sync周期长度的脉冲。
可以理解的,本实施例中第二预设数目A可以设置为60,但由于时钟偏差,第二预设数目A也不能选择的太小,以防止在TTI语音帧的边界产生中断,通常第二预设数目A不小于10。第二预设数目的设置可以使得第二中断信号在一个TTI_PERIOD内最多能产生4个脉冲中断,并且产生时刻均可配置,因此,以语音帧信号为例,从20ms响应160次中断减为1次,这样极大的减少了处理器内核的负载。
当第二中断信号产生一个宽度为一个clk_voice_sync周期长度的脉冲时,不仅在硬件方面会引起第二计数器rt_sample_cnt清零并重新计数以外,还会使处理器内核,如ARM内核对第二计数器当前的第一计数数目进行记录,也就是将第二计数器清零前的计数数目进行记录;优选地,在具体实施的过程中,可以将当前的第一计数数目保存至第一变量sw_rt_sample_cnt_reg_cur;将第二中断信号在上一次产生一个宽度为clk_voice_sync周期长度的脉冲时记录的第二计数数目保存至第二变量sw_rt_sample_cnt_reg_last;通过第一变量和第二变量的差值sw_rt_sample_cnt_reg_diff与预设的门限值进行比较:
若差值sw_rt_sample_cnt_reg_diff大于预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160+sw_rt_sample_cnt_reg_diff;
若差值sw_rt_sample_cnt_reg_diff不大于预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160。
可以理解地,差值sw_rt_sample_cnt_reg_diff可以通过下式计算获得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last
需要说明的是,当本地时钟和网络时钟同步时,20ms的语音帧数据进行DMA搬移所需要搬移的数据长度为160。在确定通过DMA进行搬移的语音样本的数据长度之后,在下一个DMA中断到来时,根据确定得到的数据长度进行DMA搬运,从而能够使得本地时钟与网络时钟之间实现同步。
本发明实施例提供了一种语音同步的方法,结合了硬件与软件两个方面根据声道指示信号和帧信号来产生相应的中断,并按照产生的中断进行同步,能够提高语音同步处理的性能及速率。
基于前述实施例相同的技术构思,参见图7,其示出了本发明实施例提供的一种语音同步的装置70,该装置70包括:第一生成单元701、采样单元702、第二生成单元703、计数单元704和确定单元705,其中,
第一生成单元701,用于将集成电路内置音频I2S总线中的声道指示信号作为时钟同步信号;
采样单元702,用于对物理层获取的语音帧信号进行采样得到帧中断信号;
第二生成单元703,用于根据帧中断信号及预设的参数生成第一中断信号;
计数单元704,用于通过两个计数器分别按照预设的计数规则对时钟同步信号的周期进行计数;其中,第一计数器的计数规则为:按照第一预设数目对时钟同步信号的周期进行循环计数,并且在第一中断信号的生成时刻进行清零并重新开始计数;第二计数器的计数规则为:在第二中断信号的生成时刻进行清零并重新计数;
第二生成单元703,还用于在第一计数器的计数数目为第二预设数目时,生成第二中断信号;
确定单元705,用于在第一计数器的计数数目为第二预设数目时,记录第二计数器当前的第一计数数目,并且根据第一计数数目与第二计数数目之间的差值和预设的门限确定通过直接内存访问DMA进行搬移的语音样本的数据长度;其中,第二计数数目为第二计数器在前一次第二中断信号生成时所记录的计数数目。
在上述实施例中,采样单元702,包括两级D触发器和一个与门逻辑计算单元,其中,
将时钟同步信号作为两级D触发器的CP输入信号;
将语音帧信号作为两级D触发器中第一级D触发器的D输入信号;
将第一级D触发器的输出信号作为两级D触发器中第二级D触发器的D输入信号;
将第二级D触发器的输出信号的反向信号以及第一级D触发器的输出信号作为与门逻辑计算单元的输入信号,则与门逻辑计算单元的输出信号为帧中断信号。
在上述实施例中,第二生成单元703,具体用于:
在第一使能信号为高时,通过帧计数器对帧中断信号进行计数;以及,
帧计数器的计数达到传输时间间隔偏移TTI_OFFSET后清零;并以TTI_PERIOD为周期对帧中断信号进行循环计数;以及,
每当帧计数器清零时,第一中断信号产生一个宽度为一个时钟同步信号周 期长度的脉冲。
在上述实施例中,第二生成单元703,具体用于:当第一计数器的计数数目达到第二预设数目时,第二中断信号产生一个宽度为一个时钟同步信号周期长度的脉冲。
在上述实施例中,确定单元705,具体用于:
将当前的第一计数数目保存至第一变量sw_rt_sample_cnt_reg_cur;将第二中断信号在上一次产生一个宽度为时钟同步信号周期长度的脉冲时记录的第二计数数目保存至第二变量sw_rt_sample_cnt_reg_last;以及,
通过第一变量和第二变量的差值sw_rt_sample_cnt_reg_diff与预设的门限值进行比较:
若差值sw_rt_sample_cnt_reg_diff大于预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160+sw_rt_sample_cnt_reg_diff;
若差值sw_rt_sample_cnt_reg_diff不大于预设的门限值,则通过DMA进行搬移的语音样本的数据长度为160;
其中,差值sw_rt_sample_cnt_reg_diff通过下式计算获得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last。
可以理解地,上述功能单元结构中,第一生成单元701、采样单元702、第二生成单元703和计数单元704可以根据图2至图6所示的时序波形图通过硬件器件进行完成;而确定单元705则可以通过软件来进行实现。
本发明实施例提供了一种语音同步的装置70,结合了硬件与软件两个方面根据声道指示信号和帧信号来产生相应的中断,并按照产生的中断进行同步,能够提高语音同步处理的性能及速率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储 器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。