首页> 中国专利> 一种基于DMA技术降低声音输入至输出延迟的方法和系统

一种基于DMA技术降低声音输入至输出延迟的方法和系统

摘要

本发明公开了一种基于DMA技术降低声音输入至声音输出延迟的方法和系统,其中方法包括:麦克风装置接收声音,进行声音采集;声音处理芯片处理采集到的声音;直接内存存取控制器控制数据传递;输出设备端将音频数字信号转化成声音输出。其中系统包括:声音采集模块,使麦克风装置接收声音进行声音采集;声音处理模块,使声音处理芯片处理采集到的声音;数据传递模块,使直接内存存取控制器控制数据传递;声音输出模块,使输出设备端将音频数字信号转化成声音输出。本发明基于直接内存存取技术,允许在音频设备间直接读写音频数据,音频设备间的音频数据传输不需要通过存储器进行音频数据的存储和再传输,显著提升了音频在不同设备间传输的速度。

著录项

  • 公开/公告号CN105389156A

    专利类型发明专利

  • 公开/公告日2016-03-09

    原文格式PDF

  • 申请/专利权人 珠海全志科技股份有限公司;

    申请/专利号CN201510827044.6

  • 发明设计人 黄新;姚洁;

    申请日2015-11-24

  • 分类号G06F3/16;G06F13/28;

  • 代理机构广州嘉权专利商标事务所有限公司;

  • 代理人俞梁清

  • 地址 519000 广东省珠海市高新区唐家湾镇科技二路9号

  • 入库时间 2023-12-18 14:45:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-12-11

    授权

    授权

  • 2016-04-06

    实质审查的生效 IPC(主分类):G06F3/16 申请日:20151124

    实质审查的生效

  • 2016-03-09

    公开

    公开

说明书

技术领域

本发明涉及一种降低声音输入至输出延迟的方法和系统,尤其指一种基于DMA(直接内存存取)技术的降低声音输入至输出延迟的方法和系统。

背景技术

现在系统内部音频数据传递是通过CPU进行处理并安排音频数据在总线的传输,在音频数据需要快速输出的情况下,需要对音频数据的传输方式进行改进。

为了解决这个问题,系统设计者和CPU设计者对系统流程和CPU能力进行改善,更流畅的传输模式,更强的CPU运算能力,但是系统改进的余地和效率在不复杂的系统内表现不良,而CPU能力的改进会增加系统的成本。

直接内存存取(DMA)是数字信号处理器(DSP)中用于快速数据交换的重要技术,它具有独立于CPU的后台批量数据传输能力,能够满足实时数据处理中高速数据传输要求。

发明内容

针对现有技术存在的问题,提出了本发明的技术方案。

本发明一方面通过提供一种基于直接内存存取技术降低声音输入至输出延迟的方法,包括以下步骤:A、麦克风装置接收声音,进行声音采集;B、声音处理芯片处理采集到的声音,将音频转化为数字信号并进行音效处理;C、直接内存存取控制器控制数据传递,在不同设备端传递数据;D、输出设备端将音频数字信号转化成声音输出。

优选地,所述的直接内存存取控制器控制数据传递之前,还包括:加载预设的配置文件,其中配置文件包括:设备与直接内存存取控制器之间的请求指令表,地址信息对应关系表,传递配置规则。

优选地,所述的直接内存存取控制器包括:状态控制寄存器,用于修改内存地址计数器和字计数器,指定传输类型,并对设备间的数据传输进行协调和同步;数据寄存器,用于暂存每次传输的数据;地址寄存器,用于发出地址信息,并修改地址指针;字节计数器,用于记录传输数据的长度。

优选地使用汇编语言指令对寄存器写入初始化控制字。

优选地,所述的直接内存存取控制器控制数据传递,包括以下步骤:C1、外围的设备通过向直接内存存取控制器向需要传输数据的设备发出直接传输数据的请求;C2、上述的设备接收直接传输数据的请求,转变为直接内存存取传输方式,直接内存存取控制器取得对外围总线的控制权;C3、直接内存存取控制器根据地址信息对应关系表,决定数据传输的数据存储地址;C4、执行数据传输,完成之后所述的外围的设备向直接内存存取控制器返回结束信号;C5、直接内存存取操作结束,直接内存存取控制器归还对外围总线的控制权。

优选地,所述的外围总线用于挂载系统的外围的设备。

优选地,所述结束信号被直接内存存取控制器接收之后,执行结束处理工作,包括:校验传输至输入端设备的数据;确认设备输出端数据完成情况,发出处理结果指令。

优选地,所述发出处理结果指令包括:直接内存存取控制器确认设备间数据传输未完成,向步骤C1所述设备发出继续使用直接内存存取传输的指令;直接内存存取控制器确认设备间数据传输完成,向步骤C1所述设备发出结束传输的指令。

本发明的另一个方面提出了一种基于直接内存存取技术降低声音输出延迟的系统,包括以下:

声音输入模块,配置为使麦克风装置接收声音,进行声音采集;

声音处理模块,配置为使声音处理芯片处理采集到的声音,附加声音效果并将音频转化为数字信号;

数据传递模块,配置为使直接内存存取控制器控制数据传递,在不同设备端传递数据;

声音输出模块,配置为使输出设备端将音频数字信号转化成声音输出。

本发明的有益效果为:允许设备间直接传输数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为(DMA)控制器的控制下进行的,设备间的数据传输不需要通过存储器进行数据存储进行传输,显著提升设备间数据传输速度。

附图说明

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述,其中:

图1所示为根据本发明实施例的基于直接内存存取技术降低声音输出延迟的方法的示意图;

图2所示为根据本发明实施例的基于直接内存存取技术降低声音输出延迟的系统的示意图。

具体实施方式

根据本发明的第一实施例,如图1所示为降低声音输入至声音输出延迟的方法,包括以下步骤:

A、麦克风装置接收声音,进行声音采集,将声音转化为数字电信;

B、声音处理芯片处理采集到的声音,将音频转化为音频数字信号并进行音效处理;

C、直接内存存取控制器控制数据传递,在不同设备端传递音频数字信号,即在直接内存存取控制器的控制下允许在设备和设备之间直接读写数据;

D、输出设备端将音频数字信号转化成声音输出,如扬声器、显示器等设备将处理过的音频数字信号输出。

其中直接内存存取控制器控制数据传递之前,还加载预设的配置文件,配置文件包括设备与直接内存存取控制器之间的请求指令表,地址信息对应关系表,传递配置规则。

根据本发明的第二实施例,所述的直接内存存取控制器包括:

状态控制寄存器,修改地址计数器和字计数器,指定传输类型(输入或输出),并对设备间的数据传输进行协调和同步;数据寄存器,用于暂存每次传输的数据,即用于暂存每次传输的数据(一个字)。当数据输入时,由输入设备送往输入设备端的数据FIFO端;数据传输时,通过直接内存存取技术将数据从输入设备的数据FIFO端搬送到输出设备的数据FIFO端;当数据输出时,由输出设备的数据FIFO端送到设备输出端进行输出;地址寄存器,用于发出地址信息,并修改地址指针;字节计数器,用于记录传输数据的长度,其内容也是在数据传输之前由程序预置,交换的字数通常以补码形式表示。在直接内存存取传输时,每传输一个字,字计数器就加“1”,当计数器溢出即最高位产生进位时,表示这批数据传输完毕,于是引起直接内存存取控制器向直接内存存取控制器发中断信号。

根据本发明的第三实施例,所述直接内存存取控制器控制数据传递,包括以下步骤:外围的设备通过向直接内存存取控制器向需要传输数据的设备发出直接传输数据的请求;上述的外围的设备和需要数据传输的设备,作为数据的发出端和接收端,接收直接内存控制器发出的直接传输数据的请求,数据传输方式转变为直接内存存取传输方式,直接内存存取控制器取得对外围总线的控制权;直接内存存取控制器根据地址信息对应关系表,决定数据传输的输入设备和输出设备数据FIFO地址;执行数据传输,完成之后上述的外围的设备作为数据的发出端,向直接内存存取控制器返回结束信号;直接内存存取操作结束,归还对外围总线的控制权。其中使用汇编语言指令对寄存器写入初始化控制字。

所述结束信号被直接内存存取控制器接收之后,直接内存存取控制器执行结束处理工作,包括:校验传输至输入端设备的数据,即检验传输的数据是否正确;确认输出端设备传输数据的完成情况,测试在传输过程中是否发生了错误等;根据检校的结果发出处理结果指令,决定继续用直接内存存取方式继续传输下去,还是结束传输。

其中所述发出处理结果指令包括:直接内存存取控制器确认设备间数据传输未完成,向设备发出继续使用直接内存存取传输的指令;直接内存存取控制器确认设备间数据传输完成,向设备发出继续结束传输的指令。

根据本发明的第四实施例如图2所示。图2中的代号描述如下表:

其中的系统音乐数据运行方式如下:主控H3中通过数字音频总线daudio0进入Ac100芯片的Ac100端数字音频接口1(Aif1),进入Ac100systemroute(Ac100系统路由)并在其中进行声音处理操作。

具体地,如下描述声音处理方式。唱K人的声音通过Karaokemic分离两路声音,一路没有经过音效处理的mic1,mic1的声音经过Ac100芯片的Ac100端数字音频接口2(Aif2),再经过数字音频总线daudio1录音,用于Karaoke的唱K评分功能;一路经过Pt2399音效处理的mic2,经过Pt2399音效处理后的mic2声音,进入Ac100systemroute,将音乐播放的声音进行混音,混音后的声音可以在Ac100systemroute中输出到AV端,同时数字音频总线daudio0中通过Ac100端数字音频接口1(Aif1)将混音后的声音进行录音,再采用DMAIO_to_IO(设备到设备传输)技术,将数字音频总线daudio0录音FIFO中的数据搬送到数字音频总线daudio2中,数字音频总线daudio2中挂hdmi芯片,数字音频总线daudio2中将混音后的声音往TV端的hdmi口进行输出,另外数字音频总线daudio2通过通过hub功能,再将混音后的声音往TV端的hdmi口进行输出;声音保存:将混音后数据,在主控中进行保存:在数字音频总线daudio2中打开loopback功能,将TX中的混音后数据送到RX中,再通过DMA启动daudio2的录音功能,将数据送到主控H3中进行保存,用于唱K功能的回放功能。

在Karaoke实现方法中,要达到AV,TV,音箱设备同时输出,同时Karaokemic经过Ac100混音等处理,再从hdmi端、spdif端输出延时要小于30ms。

在这里混音后的数据采用了从数字音频总线daudio0中直接使用DMA的IO_to_IO技术。这个技术的原理是,在挂载在同一个外围总线上的设备(比如数字音频总线daudio0,数字音频总线daudio2),启动IO到IO后,可以实现不同设备间FIFO端的数据传输功能。在这个方案中,混音后的数据从数字音频总线Daudio0的RXFIFO传输到数字音频总线Daudio2中的TXFIFO中,由于两个FIFO的深度是16bytes,在Karaoke模式下,采样率是48k,通道是2声道,采样精度是16,音频传输的时间如下:t=数据长度/(采样率*通道数*32/16)≈0.08ms。也就是说,Karaoke麦克风数据通过混音以及硬件音效处理后再从主控H3hdmi端输出的时间是0.08ms。同理spdif的hub输出的时间也是0.08ms。那么Karaoke麦克风数据从AV,hdmi,spdif输出的时间间隔将远远小于1ms。

如果不采用DMA_IO_to_IO技术,那么数据需要经过主控端的dram进行处理后再输出,也就是先录音再播放,根据目前业界采用的录音和播放的双buffer机制,假如一个buffer大小是4k,那么录音和播放共4k*2*2=16k数据,根据t=数据长度/(采样率*通道数*32/16),播放的时间是83ms左右,达不到要求;

所以DMA_IO_to_IO技术将混音后的时间处理压缩到1ms以内,那么数据在H3主控端的时间将远远小于30ms,Karaoke再通过hdmi接TV,spdif接音箱设备输出的延时也在TV和音箱端,理论上实现了Karaoke的30ms的功能要求。这里说的DMA_IO_to_IO输入到输出1ms以内,是指主控端的处理时间是1ms以内。TV端和音箱端取决于具体设备,不在主控H3的控制范围内。其中,Karaoke要求在30ms内实现输入到输出的要求原理为,根据哈斯效应,两个同声源的声波若到达听音者的世界差在5~35ms以内,听觉者将感到声音只来自未延迟的声源,并不会感到经延迟的声音存在。

根据本发明的第五实施例,一种基于直接内存存储技术降低声音输出延迟的系统,包括:声音输入模块,配置为使麦克风装置接收声音,进行声音采集;声音处理模块,配置为使声音处理芯片处理采集到的声音,附加声音效果并将音频转化为数字信号;数据传递模块,配置为使直接内存存取控制器控制数据传递,在不同设备端传递数据;声音输出模块,配置为使输出设备端将音频数字信号转化成声音输出。

以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号