一种USB音频的转换方法及装置与流程

文档序号:20273033发布日期:2020-04-03 19:16阅读:873来源:国知局
一种USB音频的转换方法及装置与流程

本发明涉及usb音频转换领域,尤其涉及一种usb音频的转换控制方法及装置。



背景技术:

目前,很多场合都需用到usb音频转换装置,例如,usb音响、usb麦克风等。如图1所示的usb音频播放装置,usb控制器通过usb接口接收音频数据,并将其缓存到一个专门的音频数据缓存(ram或fifo)中,然后再把音频数据通过dma或cpu送到dac控制器进行播放。但是,由于usb控制器的时钟和dac控制器的时钟来源不同,usb的时钟来源于usb主机(例如pc),而dac控制器的时钟则来源于本地,所以两个时钟会存在不同步的情况,即使存在很小的差异,但长时间的累积也会导致音频数据的溢出,从而导播放的音频出错。

为解决时钟不同步的问题,如图1所示,还设置有速度微调控制器,且该速度微调控制器根据音频数据缓存空间的使用情况来调整dac控制器的播放速度是加快还是减慢,从而动态匹配usb控制器的时钟来达到同步的目的。但是,这种方法的缺点是必须要使用音频数据缓存空间,这个空间需要大约2k字节甚至更多,对于一些小型的soc项目,这将占很大项目成本,导致产品竞争力下降。



技术实现要素:

本发明要解决的技术问题在于,针对现有技术中因需设置专门的音频数据缓存而导致成本高的缺陷,提供一种usb音频的转换方法及装置。

本发明解决其技术问题所采用的技术方案是:构造一种usb音频的转换方法,包括:

判断是否接收到usb控制器按设定的时间间隔发出的触发信号;

在接收到触发信号时,读取usb控制器中的第一缓存信息和/或转换控制器中的第二缓存信息,根据所述第一缓存信息和/或所述第二缓存信息计算当前触发时刻所对应的数据通道数据量;

将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的至少一个触发时刻所对应的数据通道数据量进行计算,根据计算结果控制转换控制器的转换速度。

优选地,将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的至少一个触发时刻所对应的数据通道数据量进行计算,根据计算结果控制转换控制器的转换速度,包括:

将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的某一触发时刻所对应的数据通道数据量进行比较,根据比较结果控制转换控制器的转换速度。

优选地,所述转换控制器为dac控制器,而且,根据比较结果控制转换控制器的转换速度,包括:

若当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将dac控制器的转换速度调快;

若当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将dac控制器的转换速度调慢;

若当前触发时刻所对应的数据通道数据量等于之前一触发时刻所对应的数据通道数据量,则将dac控制器的转换速度保持不变。

优选地,所述转换控制器为adc控制器,而且,根据比较结果控制转换控制器的转换速度,包括:

若当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将adc控制器的转换速度调慢;

若当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将adc控制器的转换速度调快;

若当前触发时刻所对应的数据通道数据量等于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将adc控制器的转换速度保持不变。

优选地,根据所述第一缓存信息和所述第二缓存信息计算当前触发时刻所对应的数据通道数据量,包括:

根据所述第一缓存信息获取第一缓存量,根据所述第二缓存信息获取第二缓存量,并计算所述第一缓存量与所述第二缓存量之和,以获取当前触发时刻所对应的数据通道数据量。

优选地,所述设定的时间间隔为一个usb帧或usb微帧接收时间的整数倍。

优选地,还包括:

usb控制器通过检测所接收的usb帧或usb微帧来生成sof脉冲信号,并对所述sof脉冲信号进行计数,当判断计数值到达预设倍数值时发出触发信号。

本发明还构造一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以上方法的步骤。

本发明还构造一种usb音频的转换装置,包括处理器和存储器,所述存储器存储有计算机程序,所述处理器在执行所述计算机程序时实现以上方法的步骤。

本发明还构造一种usb音频的转换装置,包括usb控制器、转换控制器,还包括分别与所述usb控制器和所述转换控制器相连的速度控制器,所述速度控制器包括:

触发接收单元,用于判断是否接收到usb控制器按设定的时间间隔发出的触发信号;

数据量计算单元,用于在接收到触发信号时,读取所述usb控制器中的第一缓存信息和/或所述转换控制器中的第二缓存信息,根据所述第一缓存信息和/或所述第二缓存信息计算当前触发时刻所对应的数据通道数据量;

速度控制单元,用于将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的至少一个触发时刻所对应的数据通道数据量进行计算,根据计算结果控制转换控制器的转换速度。

优选地,所述速度控制单元,还用于将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的某一触发时刻所对应的数据通道数据量进行比较,根据比较结果控制转换控制器的转换速度。

优选地,所述转换控制器为dac控制器,而且,所述速度控制单元包括:

第一控制子单元,用于当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将dac控制器的转换速度调快;

第二控制子单元,用于当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将dac控制器的转换速度调慢。

优选地,所述转换控制器为adc控制器,而且,所述速度控制单元包括:

第三控制子单元,用于在当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将adc控制器的转换速度调慢;

第四控制子单元,用于在当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将adc控制器的转换速度调快。

优选地,所述usb控制器包括:

脉冲生成单元,用于通过检测所接收的usb帧或微帧生成sof脉冲信号;

定时单元,用于对所述sof脉冲信号进行计数,当判断计数值到达预设倍数值时发出触发信号。

实施本发明的技术方案,每间隔一设定时间,都会直接从usb控制器和/或转换控制器内读取一次缓存信息,并计算出数据通道数据量,然后,通过将当前触发时刻与之前的至少一个触发时刻分别所对应的数据通道数据量进行计算获得的计算结果来控制转换控制器的转换速度,从而达到转换控制器与usb控制器时钟同步的目的。因此,不需要在usb控制器与转换控制器之间设置专门的音频数据缓存,从而节省了soc的面积,尤其是对于一些小型的soc项目,大大降低了项目成本,提高了产品竞争力。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。附图中:

图1是现有技术的一种usb音频的转换装置的逻辑结构图;

图2是本发明usb音频的转换方法实施例一的流程图;

图3是本发明sof脉冲信号的时序图;

图4是本发明usb音频的转换装置实施例一的逻辑结构图;

图5是本发明usb音频的转换装置实施例二的逻辑结构图。

具体实施方式

图2是本发明usb音频的转换方法实施例一的流程图,该实施例的usb音频的转换方法包括以下步骤:

步骤s10.判断是否接收到usb控制器按设定的时间间隔发出的触发信号,若是,则执行步骤s20;若否,则继续等待;

步骤s20.读取usb控制器中的第一缓存信息和/或转换控制器中的第二缓存信息,根据所述第一缓存信息和/或所述第二缓存信息计算当前触发时刻所对应的数据通道数据量;

步骤s30.将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的至少一个触发时刻所对应的数据通道数据量进行计算,根据计算结果控制转换控制器的转换速度。在该步骤中,如果采用前面某一个触发时刻的所述数据量来进行计算,算法比较简单,易于操作。而采用前面多个触发时刻的所述数据量参与计算,可以增加调节的精确度,例如,可以根据前面多次触发时刻的所述数据量通过计算了解转换控制器的调整步长是否合理,以便确定一个更精准的调整步长,从而实现更精准的调节,但这种做法的计算相对复杂,因此采用哪种做法可以根据实际应用的需求予以考虑,具体如何选取前面的触发时刻以及何如计算,本领域的技术人员可以根据具体应用的场景灵活选取。在该实施例中,根据计算结果控制转换控制器的转换速度,可能是调节转换速度,也可能达不到调节转换速度的要求,从而不调节转换速度。

进一步地,步骤s30的一种实施例如下:

将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的某一触发时刻所对应的数据通道数据量进行比较,根据比较结果控制转换控制器的转换速度。在该步骤中,首先说明的是,当前触发时刻之前的某一触发时刻可以是与当前触发时刻相邻的前一触发时刻,也可为与当前触发时刻间隔多个设定时间的某一触发时刻,具体选择之前的哪一个触发时刻的值来进行比较,需根据应用场景需要等情况确定,例如就选择上一次触发时刻。还需说明的是,当未开始接收usb音频数据时,数据通道的数据量为0,所以,在第一次接收到触发信号时,与当前数据量所进行比较的前一时刻的数据量为0,也可以第一次不做比较,到第二次才开始进行比较。关于该实施例,还需说明的是,在实际应用中,由于usb帧或usb微帧是连续发送的,所以,以上步骤是循环执行的,即,在步骤s30之后,将当前数据量设置为前一时刻的数据量,并重新执行步骤s10。

在该实施例中,每间隔一固定时间,都会直接从usb控制器和/或转换控制器内读取一次缓存信息,并计算数据通道的数据量,然后,通过将当前时刻的数据量与之前的某一时刻的数据量进行计算而获得的计算结果来控制转换控制器的转换速度,从而达到转换控制器与usb控制器时钟同步的目的。因此,不再需要设置专门的音频数据缓存,从而节省了soc的面积,尤其是对于一些小型的soc项目,大大降低了项目成本,提高了产品竞争力。

进一步地,所述转换控制器包括但不限于dac控制器、adc控制器。

在一个具体实施例中,转换控制器为dac控制器,而且,在步骤s30中,根据比较结果控制转换控制器的转换速度,包括:

若当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将dac控制器的转换速度调快;

若当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将dac控制器的转换速度调慢;

若当前触发时刻所对应的数据通道数据量等于之前一触发时刻所对应的数据通道数据量,则将dac控制器的转换速度保持不变。

首先说明的是,该实施例的技术方案应用在usb音频的播放装置中,而且,在该实施例中,若当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,说明usb接收数据的速度比dac转换速度要快,此时,需要把dac控制器的转换速度调整的快一点;若当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,说明usb接收数据的速度比dac转换速度要慢,那就需要把dac的转换速度调整的慢一点;若当前触发时刻所对应的数据通道数据量等于之前一触发时刻所对应的数据通道数据量,说明usb控制器和dac控制器的时钟同步,此时不做调整。

在一个具体实施例中,转换控制器为adc控制器,而且,在步骤s30中,根据比较结果控制转换控制器的转换速度,包括:

若当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将adc控制器的转换速度调慢;

若当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将adc控制器的转换速度调快;

若当前触发时刻所对应的数据通道数据量等于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,则将adc控制器的转换速度保持不变。

首先说明的是,该实施例的技术方案应用在usb音频的录音装置中,而且,在该实施例中,若当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,说明usb接收数据的速度比adc转换速度要慢,此时,需要把adc控制器的转换速度调整的慢一点;若当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量,说明usb接收数据的速度比adc转换速度要快,那就需要把adc的转换速度调整的快一点;若当前触发时刻所对应的数据通道数据量等于之前一触发时刻所对应的数据通道数据量,说明usb控制器和adc控制器的时钟同步,此时不做调整。

在一个具体实施例中,在步骤s20中,根据所述第一缓存信息和所述第二缓存信息计算数据通道的当前数据量,包括:

根据所述第一缓存信息获取第一缓存量,根据所述第二缓存信息获取第二缓存量,并计算所述第一缓存量与所述第二缓存量之和,以获取数据通道的当前数据量。

在该实施例中,数据通道的数据量data_buffer_total=data_buffer_usb+data_buffer_converter,即,数据通道的数据量包括usb控制器内部的buffer及转换控制器内部的buffer。另外,由于usb控制器内部的buffer大小为高速usb状态下的512或全速状态下的64字节的整数倍(例如高速usb状态下的1536字节;全速状态下的192字节),而转换控制器内部的buffer为少量的缓存buffer,因此,在其它的一些实施例中,可仅根据usb控制器中的第一缓存信息来计算数据通道的数据量,即,该数据通道的数据量data_buffer_total=data_buffer_usb。当然,在另一些实施例中,也可仅根据转换控制器中的第二缓存信息来计算数据通道的数据量,即,该数据通道的数据量data_buffer_total=data_buffer_converter。在一个可选实施例中,设定的时间间隔为一个usb帧或usb微帧接收时间的整数倍。具体地,usb控制器可根据以下步骤发出触发信号:

usb控制器通过检测所接收的usb帧或usb微帧来生成sof脉冲信号,并对所述sof脉冲信号进行计数,当判断计数值到达预设倍数值时发出触发信号。

在该实施例中,结合图3,usb控制器通过检测usb帧或usb微帧来产生sof脉冲信号,在为usb帧时,两相邻脉冲的时间间隔为1ms;在为usb微帧时,两相邻脉冲的时间间隔为125us。另外,还在usb控制器中设置一sof定时器,该定时器通过对sof脉冲信号进行计数,并在计数值到达预设倍数值时发出触发信号,这样,定时器中断或触发的时间间隔为usb帧或usb微帧的整数倍,即,t=t_sof*n,t_sof为一个usb帧或usb微帧接收时间,n为预设倍数值,且为大于1的整数。如图3所示,在t1时刻点定时器触发一次,此时所对应的数据通道的数据量为:data_buffer_total_t1;在t1之后,定时器重新对sof脉冲进行计数,当计数到n个脉冲信号时,即,在t2时刻点,又触发一次,此时所对应的数据通道的数据量为:data_buffer_total_t2。同样地,t3时刻点所对应的数据通道的数据量为:data_buffer_total_t3。

最后需说明的是,时间间隔(即定时器中n)的设置,两个时刻点下的数据通道的数据量相差多大才触发锁相环的频率调整,或增加判断数据通道数据量来触发调整,以及锁相环的频率调整步长,均可根据实际应用选择合适的值。例如,当两个时刻点下的数据通道数据量的差值绝对值大于阈值时,才触发调整,即,按设定调整步长对锁相环的频率进行调整,而该阈值可以根据锁相环的频率调整步长来确定,如为所述一个调整步长内的转换数据量。另外,转换速度的调整可以有两种方式,一是使用cpu来获取信息和计算速度调整的方向,二是直接使用简单的硬件计算然后直接控制调整dac控制器的速度。方式一得优点不需要额外的硬件电路,方式二的优点是音频数据传输时可将直接关闭cpu从而节省功耗。

本发明还构造一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以上usb音频的转换方法的步骤。

本发明还构造一种usb音频的转换装置,包括处理器和存储器,而且,存储器存储有计算机程序,处理器在执行该计算机程序时实现以上usb音频的转换方法的步骤。

图4是本发明usb音频的转换装置实施例一的逻辑结构图,该实施例的usb音频的转换装置为usb音频的播放装置,且可应用在soc中。该实施例的usb音频的转换装置具体包括usb控制器10、dac控制器20及速度控制器30。其中,usb控制器10、dac控制器20之间建立有数据通道,用于将usb控制器10从外部接收的usb音频传输至dac控制器20。速度控制器30分别与usb控制器10和dac控制器20相连,而且,该速度控制器30包括触发接收单元31、数据量计算单元32和速度控制单元33。而且,触发接收单元31用于判断是否接收到usb控制器按设定的时间间隔发出的触发信号;数据量计算单元32用于在接收到触发信号时,读取usb控制器10中的第一缓存信息(data_buffer_usb)和/或dac控制器20中的第二缓存信息(data_buffer_dac),根据第一缓存信息和/或第二缓存信息计算当前触发时刻所对应的数据通道数据量;速度控制单元33用于将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的至少一个触发时刻所对应的数据通道数据量进行计算,并根据计算结果控制dac控制器20的转换速度。

进一步地,所述速度控制单元33还用于将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的某一触发时刻所对应的数据通道数据量进行比较,并根据比较结果控制dac控制器20的转换速度。

进一步地,速度控制单元33包括第一控制子单元和第二控制子单元,其中,第一控制子单元用于当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将dac控制器的转换速度调快;第二控制子单元用于当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将dac控制器的转换速度调慢。

进一步地,设定的时间间隔为一个usb帧或usb微帧接收时间的整数倍。具体地,usb控制器10包括脉冲生成单元11和定时单元12,其中,脉冲生成单元11用于通过检测所接收的usb帧或usb微帧生成sof脉冲信号;定时单元12用于对所述sof脉冲信号进行计数,当判断计数值到达预设倍数值时发出触发信号。

进一步地,dac控制器20包括锁相环21,而且,速度控制单元33用于通过控制锁相环21的频率来控制dac控制器20的转换速度。

图5是本发明usb音频的转换装置实施例二的逻辑结构图,该实施例的usb音频的转换装置为usb音频的录音装置,与图4所示的实施例的不同之处在于转换控制器为adc控制器20′,具体地,该实施例的usb音频的转换装置具体包括usb控制器10、adc控制器20′及速度控制器30。其中,usb控制器10、adc控制器20′之间建立有数据通道,用于将转换后的录音信息传输至usb控制器10。速度控制器30分别与usb控制器10和adc控制器20′相连,而且,该速度控制器30包括触发接收单元31、数据量计算单元32和速度控制单元33。而且,触发接收单元31用于判断是否接收到usb控制器按设定的时间间隔发出的触发信号;数据量计算单元32用于在接收到触发信号时,读取usb控制器10中的第一缓存信息(data_buffer_usb)和/或adc控制器20′中的第二缓存信息(data_buffer_adc),并根据第一缓存信息和/或第二缓存信息计算当前触发时刻所对应的数据通道数据量;速度控制单元33用于将当前触发时刻所对应的数据通道数据量与当前触发时刻之前的某一触发时刻所对应的数据通道数据量进行比较,并根据比较结果控制adc控制器20′的转换速度。

进一步地,速度控制单元33包括第三控制子单元和第四控制子单元,其中,第三控制子单元用于在当前触发时刻所对应的数据通道数据量大于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将adc控制器20′的转换速度调慢;第四控制子单元用于在当前触发时刻所对应的数据通道数据量小于当前触发时刻之前的某一触发时刻所对应的数据通道数据量时,将adc控制器20′的转换速度调快。

进一步地,设定的时间间隔为一个usb帧或usb微帧接收时间的整数倍。具体地,usb控制器10包括脉冲生成单元11和定时单元12,其中,脉冲生成单元11用于通过检测所接收的usb帧或微帧生成sof脉冲信号;定时单元12用于对所述sof脉冲信号进行计数,当判断计数值到达预设倍数值时发出触发信号。

进一步地,adc控制器20′包括锁相环21,而且,速度控制单元33用于通过控制锁相环21的频率来控制adc控制器20′的转换速度。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何纂改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1