CN110825673B - 音频输入输出系统及方法 - Google Patents
音频输入输出系统及方法 Download PDFInfo
- Publication number
- CN110825673B CN110825673B CN202010029855.2A CN202010029855A CN110825673B CN 110825673 B CN110825673 B CN 110825673B CN 202010029855 A CN202010029855 A CN 202010029855A CN 110825673 B CN110825673 B CN 110825673B
- Authority
- CN
- China
- Prior art keywords
- dma
- buffer area
- channel
- audio data
- audio
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明公开了音频输入输出系统及方法,涉及音频处理技术领域。一种音频输入输出系统,包括存储器单元,音频编解码单元和处理器单元;存储器单元包括第一缓冲区,第二缓冲区和第三缓冲区;第一缓冲区通过第一DMA通道与I2S总线连接,第一缓冲区与第二缓冲区通过第二DMA通道连接,第二缓冲区与第三缓冲区通过音频编解码器连接;通过第一DMA通道启动第二DMA通道,第二DMA通道将第一缓冲区中的音频数据搬运到第二缓冲区,搬运完成后由第二DMA通道触发中断处置以通知处理器单元。本发明不仅缩短了CPU的处理时间,而且显著缩短了音频数据在缓冲区搬运的响应时间。
Description
技术领域
本发明涉及音频处理技术领域。
背景技术
监控芯片的音频输入输出接口,用于和音频编码解码芯片链接,完成音频数据的输入输出,以实现录音回放功能。接收和放松数据均采用DMA操作,通过软件申请的循环缓冲区存储数据。操作系统上层软件及时取走数据进行解码或者及时拷入已经编码的数据,以完成录音,回放功能。
现有技术中的音频输入输出系统,通常可以包括DDR(DDR SDRAM 的缩写,双倍速率同步动态随机存储器)单元,音频编解码单元和ARM(Advanced RISC Machines)处理器单元。录音系统的数据传输过程参见图1所示:首先,录音数据流经过音频输入接口(Audioinput port)输入,通过AD转换后传输到I2S (Inter—IC Sound,集成电路内置音频)总线,然后经DMA(直接存储器存取,direct memory access)部件搬运到DDR单元的缓冲区0(Buffer0)中。DDR单元包括有3个缓冲区——缓冲区0(Buffer0),缓冲区1(Buffer1)和缓冲区2(Buffer2)。在录音场景下,所述缓冲区0为循环缓冲区,用于存放多路音频输入情况下的混合音频数据。缓冲区0(Buffer0)与缓冲区1(Buffer1)通过CPU(central processingunit,中央处理器)连接,缓冲区1用于存放经过CPU搬运后、按通道(channel)分离的音频数据;所述缓冲区2用于存放经音频编解码器编码后的数据,该数据被传输至ARM处理器中给上层软件使用。
回放系统的数据传输过程参见图2所示:与录音系统的数据流传输相反,音频回放过程如下:首先,从ARM处理器中的上层软件中获取需要回放的音频数据,通过缓冲区2存放待解码的音频数据。然后,音频数据经过音频编解码器编码解码后存放到缓冲区1,即通过缓冲区1存放准备回放的音频数据。随后,经过CPU搬运后,缓冲区1的音频数据传输到缓冲区0。缓冲区0为循环缓冲区,存放音频数据,并交由DMA搬运回放:音频数据经DMA搬运至I2S总线,经AD转换后通过音频输出接口(Audio output port)输出,进行播放。
在利用音频输入输出系统进行音频录音和回放时,存在如下缺陷:对于多路音频数据输入的场景,CPU 需要把存入循环缓冲区(缓冲区0)中的多路数据进行拆分搬运,搬运完成后需要通过中断处置(Interrupt handling)来通知上层软件;并且,对于每路数据,DMA搬运完成后,也都需要通过中断处置来通知上层软件。上述操作增加了大量的CPU 处理时间,使得在系统或DMA负载比较大的情况下增加了丢数据情形出现的概率,造成录音数据的不完整或回放数据的不连续(断断续续)。
发明内容
本发明的目的在于:克服现有技术的不足,提供了一种音频输入输出系统及方法。本发明的音频输入输出系统,设置有两个DMA通道,由一个DMA通道启动另一个DMA通道,使用DMA进行通知和搬运数据,而无需通过CPU进行通知和搬运数据,不仅缩短了CPU的处理时间,而且显著缩短了音频数据在缓冲区搬运的响应时间,实现两次数据搬运的无缝连接。
为实现上述目标,本发明提供了如下技术方案:
一种音频输入输出系统,包括存储器单元,音频编解码单元和处理器单元;
所述存储器单元包括第一缓冲区,第二缓冲区和第三缓冲区;所述第一缓冲区为循环缓冲区,通过第一DMA通道与I2S总线连接,第一缓冲区与第二缓冲区通过第二DMA通道连接,第二缓冲区与第三缓冲区通过音频编解码器连接,第三缓冲区连接处理器单元;
通过前述第一DMA通道启动第二DMA通道以将第一缓冲区中的音频数据搬运到第二缓冲区,所述音频数据搬运完成后由第二DMA通道触发中断处置以通知处理器单元中的上层程序。
进一步,通过第一DMA通道在I2S总线和第一缓冲区之间搬运音频数据时,对于每路音频数据,在第一DMA通道搬运完成后触发启动第二DMA通道。
进一步,录音时,通过第一缓冲区存放多路音频输入时的混合音频数据,通过第二缓冲区存放经过搬运后、按通道分离的音频数据,所述第二缓冲区的音频数据经音频编解码器编码后存放在第三缓冲区中以供处理器单元中的上层程序使用。
进一步,回放时,从处理器单元中的上层程序中获取需要回放的音频数据存放到第三缓冲区,该音频数据经音频编解码器解码后存放在第二缓冲区;第二缓冲区存放的音频数据经过搬运后存放到第一缓冲区作为待回放的音频数据。
进一步,对应于多个DMA通道设置有多通道DMA控制器,所述DMA控制器包括配置部件、请求接口、仲裁部件、一个DMA传输引擎和总线控制器;
所述配置部件用于配置多种数量的DMA通道以及各DMA通道的传输参数;
所述请求接口用于接收DMA请求,并作为待仲裁请求发送至仲裁部件;
所述仲裁部件,用于根据预设的仲裁策略,对前述待仲裁请求进行仲裁,并根据仲裁结果更新通道参数,以及调度DMA通道上的传输任务分配给DMA传输引擎;
所有DMA通道共用一个DMA传输引擎,DMA传输引擎将传输任务转化为传输指令发送给总线控制器;
所述总线控制器将传输任务转化为总线上的数据进行传输。
进一步,所述仲裁部件的最小传输单元可进行配置,所述最小传输单元由若干个字节组成,对每个DMA通道的传输任务设定其对应的最小传输单元。
进一步,设定最小传输单元时,所述最小传输单元传输过程不能被打断,其传输时间等于仲裁的时间,所述仲裁部件在每传输完一个DMA通道最小传输单元的数据后进行仲裁。
进一步,仲裁部件进行仲裁时,优先级高的传输任务先获得DMA传输引擎的使用权;同等优先级的传输任务,仲裁部件基于轮询调度算法根据通道的仲裁顺序决定DMA传输引擎的使用权。
进一步,所述通道的仲裁顺序能够进行配置,和/或优先级数量能够进行配置,和/或优先级的判别顺序能够进行配置。
进一步,关联第一DMA通道和第二DMA通道,在检测到第一DMA通道搬运数据到第一缓冲区时,触发启动第二DMA通道将第一缓冲区的数据搬运到第二缓冲区;以及监测DMA传输过程,采集到DMA传输中断事件时,触发启动第一DMA通道的DMA传输。
进一步,采集第二DMA通道的状态信息,判定该状态为闲置状态并且第一DMA通道的启动请求信号有效时,在下一个周期启动第二DMA通道;判定该状态为占用状态并且第一DMA通道的启动请求信号有效时, 保持第一DMA通道的请求信号直到第二DMA通道处于闲置状态,并在第二DMA通道处于闲置状态时,在下一个周期启动第二DMA通道。
进一步,还包括DMA加速器,在判定具有多路音频输入时,通过所述DMA加速器进行间隔数据拷贝。
进一步,所述DMA加速器被配置为,
DMA握手成功后,获取N路模拟音频输入,将经过模数转换后的混合音频数据,存放在I2S FIFO中;当I2S FIFO数据大小达到预设阈值时,触发DMA硬件握手,执行DMA操作,将混合音频数据按通道分离后,按通道顺序存放在DMA加速器内部存储区;将DMA加速器内部存储区的音频数据按通道顺序输出到外部存储器中进行存储,不同路音频数据对应不同的存储区域;
以及当DMA再次握手成功时,重复执行前述传输过程,在外部存储器中将同一路音频数据存储在相同的存储区域,直到DMA传输完毕。
本发明还提供了一种音频数据的录音方法,包括步骤:
音频输入接口采集音频数据;
将前述音频数据传输到前述系统中实现录音。
本发明还提供了一种音频数据的回放方法,包括步骤:
通过前述系统输出待回放的音频数据;
通过音频输出接口播放前述音频数据。
本发明由于采用以上技术方案,与现有技术相比,作为举例,具有以下的优点和积极效果:一方面,音频输入输出系统,设置有两个DMA通道,由一个DMA通道启动另一个DMA通道,使用DMA进行通知和搬运数据,而无需通过CPU进行通知和搬运数据,不仅缩短了CPU的处理时间,而且显著缩短了音频数据在缓冲区搬运的响应时间,实现两次数据搬运的无缝连接。另一方面,在多DMA通道结合单DMA传输引擎的技术方案中,采用可配置的最小传输单元的仲裁调度策略,这种策略结合多级优先级仲裁和轮询调度算法,可以充分满足多个设备同时调用DMA进行数据传输的需求。进一步,针对多路音频数据输入的情况,提供DMA加速器进行间隔数据拷贝,实现了间隔数据搬运操作。
附图说明
图1为现有技术中的音频输入输出系统的录音流程处理图。
图2为现有技术中的音频输入输出系统的回放流程处理图。
图3为本发明实施例提供的音频输入输出系统的录音流程处理图。
图4为本发明实施例提供的音频输入输出系统的回放流程处理图。
图5为本发明实施例提供的多DMA通道单传输引擎的硬件结构框图。
图6为本发明实施例提供的仲裁部件的仲裁原理框图。
图7至图9为本发明实施例提供的通过一DMA通道启动另一DMA通道的操作示例图。
图10至图13为本发明实施例提供的进行间隔数据拷贝的操作示例图。
具体实施方式
以下结合附图和具体实施例对本发明公开的音频输入输出系统及方法作进一步详细说明。应当注意的是,下述实施例中描述的技术特征或者技术特征的组合不应当被认为是孤立的,它们可以被相互组合从而达到更好的技术效果。在下述实施例的附图中,各附图所出现的相同标号代表相同的特征或者部件,可应用于不同实施例中。因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
需说明的是,本说明书所附图中所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定发明可实施的限定条件,任何结构的修饰、比例关系的改变或大小的调整,在不影响发明所能产生的功效及所能达成的目的下,均应落在发明所揭示的技术内容所能涵盖的范围内。本发明的优选实施方式的范围包括另外的实现,其中可以不按所述的或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
实施例
参见图3和图4所示,公开了一种音频输入输出系统。
所述音频输入输出系统包括存储器单元,音频编解码单元和处理器单元。
存储器单元包括第一缓冲区,第二缓冲区和第三缓冲区;所述第一缓冲区为循环缓冲区,通过第一DMA通道与I2S总线连接,第一缓冲区与第二缓冲区通过第二DMA通道连接,第二缓冲区与第三缓冲区通过音频编解码器连接,第三缓冲区连接处理器单元。
通过前述第一DMA通道启动第二DMA通道以将第一缓冲区中的音频数据搬运到第二缓冲区,所述音频数据搬运完成后由第二DMA通道触发中断处置以通知处理器单元中的上层程序。
通过第一DMA通道在I2S总线和第一缓冲区之间搬运音频数据时,对于每路音频数据,在第一DMA通道搬运完成后触发启动第二DMA通道。
录音时,通过第一缓冲区存放多路音频输入时的混合音频数据,通过第二缓冲区存放经过搬运后、按通道分离的音频数据,所述第二缓冲区的音频数据经音频编解码器编码后存放在第三缓冲区中以供处理器单元中的上层程序使用。
回放时,从处理器单元中的上层程序中获取需要回放的音频数据存放到第三缓冲区,该音频数据经音频编解码器解码后存放在第二缓冲区;第二缓冲区存放的音频数据经过搬运后存放到第一缓冲区作为待回放的音频数据。
本实施例中,所述存储器单元为DDR单元,所述处理器单元为ARM处理器单元。
所述DDR单元包括有3个缓冲区——缓冲区0(Buffer0),缓冲区1(Buffer1)和缓冲区2(Buffer2)。所述缓冲区0(Buffer0)为循环缓冲区,通过第一DMA通道与I2S总线连接,缓冲区0(Buffer0)与缓冲区1(Buffer1)通过第二DMA通道连接,缓冲区1(Buffer1)与缓冲区2(Buffer2)通过音频编解码器连接,缓冲区2(Buffer2)连接ARM处理器单元。
录音时的数据传输过程参见图3所示。
首先,录音数据流经过音频输入接口(Audio input port)输入,通过AD转换后传输到I2S总线,然后经第一DMA通道搬运到缓冲区0(Buffer0)中。所述缓冲区0为循环缓冲区,用于存放多路音频输入情况下的混合音频数据。缓冲区0(Buffer0)与缓冲区1(Buffer1)通过第二DMA通道连接,缓冲区1(Buffer1)用于存放经过第二DMA通道搬运后、按通道分离的音频数据。缓冲区1(Buffer1)与缓冲区2(Buffer2)通过音频编解码器连接,缓冲区2(Buffer2)用于存放经音频编解码器编码后的数据,该数据被传输至ARM处理器中给上层软件(Upper-level Software SDK or application)使用。
通过第一DMA通道在I2S总线和缓冲区0(Buffer0)之间搬运音频数据时,对于每路音频数据,第一DMA通道搬运完成后启动第二DMA通道,触发第二DMA通道将缓冲区0(Buffer0)中的音频数据搬运到缓冲区1(Buffer1)中。当前述音频数据搬运完成后,通过第二DMA通道触发中断处置来通知ARM处理器单元中的上层程序。
回放时的数据传输过程参见图4所示:
首先,从ARM处理器中的上层软件(Upper-level Software SDK or application)中获取需要回放的音频数据,通过缓冲区2(Buffer2)存放待解码的音频数据。
然后,音频数据经过音频编解码器编码解码后存放到缓冲区1(Buffer1),即通过缓冲区1(Buffer1)存放准备回放的音频数据。
随后,缓冲区1(Buffer1)的音频数据通过第二DMA通道搬运到缓冲区0(Buffer0)。所述音频数据搬运完成后由第二DMA通道触发中断处置以通知处理器单元中的上层程序。
缓冲区0(Buffer0)为循环缓冲区,将存放音频数据交由第一DMA通道搬运回放。音频数据经第一DMA通道搬运至I2S总线,经AD转换后通过音频输出接口(Audio outputport)输出,进行播放。
上述音频输入输出系统,设置有两个DMA通道,由一个DMA通道启动另一个DMA通道,使用DMA进行通知和搬运,而无需通过CPU进行通知和搬运数据,缩短了CPU的处理时间,且显著缩短了音频数据在缓冲区搬运的响应时间。
本实施例的另一实施方式中,针对多DMA通道,为了芯片面积降低芯片功耗和成本,使多个DMA通道共用一个DMA传输引擎:即多DMA通道结合单DMA传输引擎。本实施方式中,采用了可配置的最小传输单元的仲裁调度策略,这种策略结合多级优先级仲裁和轮询调度算法,可以充分满足多个设备同时调用DMA进行数据传输的需求。
具体实施时,参见图5所示,设置有DMA控制器,所述DMA控制器包括配置部件、请求接口、仲裁部件、一个DMA传输引擎和总线控制器。
所述配置部件用于配置多种数量的DMA通道以及各DMA通道的传输参数。即可以配置DMA通道数目以及通道的传输参数。
所述请求接口用于接收DMA请求,并作为待仲裁请求发送至仲裁部件。
所述仲裁部件,用于根据预设的仲裁策略,对前述待仲裁请求进行仲裁,并根据仲裁结果更新通道参数,以及调度DMA通道上的传输任务分配给DMA传输引擎。作为举例而非限制,比如所述仲裁部件能够根据待仲裁请求的优先级和请求先后顺序,按照同一优先级时间优先,不同优先级下优先级高的优先的策略,选出下一个时间单元进行传输的通道,并分配给DMA传输引擎。
所有DMA通道共用一个DMA传输引擎,DMA传输引擎将传输任务转化为传输指令发送给总线控制器。
DMA传输引擎能够解析并执行具体的传输工作,将其转化为具体的传输指令,发送给总线控制器。所述总线控制器将传输任务转化为总线上的数据进行传输。
本实施方式中,优选的,所述仲裁部件的最小传输单元可进行配置,结合图6进行说明:所述最小传输单元由若干个字节组成,对每个DMA通道的传输任务设定其对应的最小传输单元。图6中,通道的仲裁顺序按照设计可以由大到小或由小到大或是特定序列,优先级的仲裁顺序类似;仲裁的时间单位应该和通道进行一次传输的时间片段匹配。
设定最小传输单元时,所述最小传输单元传输过程不能被打断,其传输时间可以等于仲裁的时间,所述仲裁部件在每传输完一个DMA通道最小传输单元的数据后进行仲裁。
所述仲裁部件进行仲裁时,优先级高的传输任务先获得DMA传输引擎的使用权。
对于同等优先级(优先级相同)的传输任务,仲裁部件可以基于轮询调度(Round-Robin)算法根据通道的仲裁顺序决定DMA传输引擎的使用权。
优选的,用户可以对所述通道的仲裁顺序、优先级数量和/或优先级的判别顺序等参数进行配置。
本实施例的另一实施方式中,还可以关联第一DMA通道和第二DMA通道,使得能够在检测到第一DMA通道搬运数据到第一缓冲区时,触发启动第二DMA通道将第一缓冲区的数据搬运到第二缓冲区;以及监测DMA传输过程,采集到DMA传输中断事件时,触发启动第一DMA通道的DMA传输。
进一步,还可以采集第二DMA通道的状态信息,判定该状态为闲置状态并且第一DMA通道的启动请求信号有效时,在下一个周期启动第二DMA通道;判定该状态为占用状态并且第一DMA通道的启动请求信号有效时,保持第一DMA通道的请求信号直到第二DMA通道处于闲置状态,并在第二DMA通道处于闲置状态时,在下一个周期启动第二DMA通道。
下面结合图7至图9详细描述本实施方式。
参见图7所示,DMA通道A(DMA Channel A)用于把Buffer0的数据搬运到Buffer1,DMA通道B(DMA Channel B)用于将Buffer1的数据搬运到Buffer2。
在检测到DMA通道A搬运数据到Buffer1时,启动 DMA通道B将Buffer1的数据搬运到Buffer2。以及,在检测到发生DMA传输中断时,启动DMA通道A(DMA Channel A)的DMA传输。
参见图8所示,DMA通道B(DMA Channel B)的状态为IDLE(闲置),并且此时启动请求信号有效,那么在下一个周期可以成功启动DMA通道B(DMA Channel B)。
参见图9所示,DMA通道B(DMA Channel B)的状态为BUSY(占用),并且此时启动请求信号有效,DMA通道A(DMA Channel A)的请求信号会保持直到DMA通道B(DMA Channel B)处于IDLE(闲置)状态;以及,一旦检测到DMA通道B处于IDLE状态,就在下一个周期启动DMA通道B。
本实施例的另一实施方式中,针对多路音频输入,DMA提供硬件加速器,实现满足需求的间隔数据拷贝功能。
具体实施时,所述系统还可以包括DMA加速器,在判定具有多路音频输入时,通过所述DMA加速器进行间隔数据拷贝。
本实施方式中,所述DMA加速器被配置为:
DMA握手成功后,获取N路模拟音频输入,将经过模数转换后的混合音频数据,存放在I2S FIFO中;当I2S FIFO数据大小达到预设阈值时,触发DMA硬件握手,执行DMA操作,将混合音频数据按通道分离后,按通道顺序存放在DMA加速器内部存储区;将DMA加速器内部存储区的音频数据按通道顺序输出到外部存储器中进行存储,不同路音频数据对应不同的存储区域;
以及,当DMA再次握手成功时,重复执行前述传输过程,在外部存储器中将同一路音频数据存储在相同的存储区域,直到DMA传输完毕。
作为举例而非限制,结合图10至图13详细描述本实施方式。
假设单路音频采样周期数据大小为1比特,供有16路模拟音频输入,DMA握手一次搬运数据大小为0x40,I2S音频控制器FIFO(first in,first out,先入先出)宽度为32bit,数据总线宽度为32bit,总传输数据大小为4k。
步骤1,经过模数转换后的混合音频数据,存放在I2S FIFO的形态如图10所示。ch1,ch2,……,ch16路音频数据在I2S FIFO中混合存放。
步骤2,当I2S FIFO数据大小达到水标时,出发DMA硬件握手,执行DMA操作,数据在内部RAM的存放形态如图11所示。ch1,ch2,……,ch16路音频数据按通道分离后,按通道顺序存放在DMA加速器内部存储区中。
步骤3,输出到memory(存储器)的数据存放形态参见图12所示。不同路音频数据对应不同的存储区域。作为举例而非限制,比如图12中,ch1对应的存储区域的地址为0x0-0x99,ch2对应的存储区域的地址为0x100-0x199,ch3对应的存储区域的地址为0x200-0x299等等。
步骤4,当DMA再次握手成功后,返回步骤1,重复执行该DMA传输过程,数据存放形态参见图13所示,同一路音频数据存储在相同的存储区域。
步骤5,判定DMA传输完毕时,结束。
需要说明的是,本发明中,设备或装置还可以包括通常在计算系统中找到的其它组件,诸如存储在存储器中并由处理器执行的操作系统、队列管理器、设备驱动程序、数据库驱动程序或一个或多个网络协议等。
在上面的描述中,本发明的公开内容并不旨在将其自身限于这些方面。而是,在本公开内容的目标保护范围内,各组件可以以任意数目选择性地且操作性地进行合并。另外,像“包括”、“囊括”以及“具有”的术语应当默认被解释为包括性的或开放性的,而不是排他性的或封闭性,除非其被明确限定为相反的含义。所有技术、科技或其他方面的术语都符合本领域技术人员所理解的含义,除非其被限定为相反的含义。在词典里找到的公共术语应当在相关技术文档的背景下不被太理想化或太不实际地解释,除非本公开内容明确将其限定成那样。本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。
Claims (15)
1.一种音频输入输出系统,包括存储器单元,音频编解码单元和处理器单元,其特征在于:所述存储器单元包括第一缓冲区,第二缓冲区和第三缓冲区;所述第一缓冲区为循环缓冲区,通过第一DMA通道与I2S总线连接,第一缓冲区与第二缓冲区通过第二DMA通道连接,第二缓冲区与第三缓冲区通过音频编解码器连接,第三缓冲区连接处理器单元;
对应于第一DMA通道和第二DMA通道设置有多通道DMA控制器,所述多通道DMA控制器包括配置部件以配置多种数量的DMA通道以及各DMA通道的传输参数,根据多通道DMA控制器的通知通过前述第一DMA通道启动第二DMA通道,触发第二DMA通道将第一缓冲区中的音频数据搬运到第二缓冲区,所述音频数据搬运完成后由第二DMA通道触发中断处置以通知处理器单元中的上层程序。
2.根据权利要求1所述的音频输入输出系统,其特征在于:通过第一DMA通道在I2S总线和第一缓冲区之间搬运音频数据时,对于每路音频数据,在第一DMA通道搬运完成后触发启动第二DMA通道。
3.根据权利要求1或2所述的音频输入输出系统,其特征在于:录音时,通过第一缓冲区存放多路音频输入时的混合音频数据,通过第二缓冲区存放经过搬运后、按通道分离的音频数据,所述第二缓冲区的音频数据经音频编解码器编码后存放在第三缓冲区中以供处理器单元中的上层程序使用。
4.根据权利要求3所述的音频输入输出系统,其特征在于:回放时,从处理器单元中的上层程序中获取需要回放的音频数据存放到第三缓冲区,该音频数据经音频编解码器解码后存放在第二缓冲区;第二缓冲区存放的音频数据经过搬运后存放到第一缓冲区作为待回放的音频数据。
5.根据权利要求1所述的音频输入输出系统,其特征在于:所述多通道DMA控制器还包括请求接口、仲裁部件、一个DMA传输引擎和总线控制器;
所述请求接口用于接收DMA请求,并作为待仲裁请求发送至仲裁部件;
所述仲裁部件,用于根据预设的仲裁策略,对前述待仲裁请求进行仲裁,并根据仲裁结果更新通道参数,以及调度DMA通道上的传输任务分配给DMA传输引擎;
所有DMA通道共用一个DMA传输引擎,DMA传输引擎将传输任务转化为传输指令发送给总线控制器;
所述总线控制器将传输任务转化为总线上的数据进行传输。
6.根据权利要求5所述的音频输入输出系统,其特征在于:所述仲裁部件的最小传输单元可进行配置,所述最小传输单元由若干个字节组成,对每个DMA通道的传输任务设定其对应的最小传输单元。
7.根据权利要求6所述的音频输入输出系统,其特征在于:设定最小传输单元时,所述最小传输单元传输过程不能被打断,其传输时间等于仲裁的时间,所述仲裁部件在每传输完一个DMA通道最小传输单元的数据后进行仲裁。
8.根据权利要求7所述的音频输入输出系统,其特征在于:仲裁部件进行仲裁时,优先级高的传输任务先获得DMA传输引擎的使用权;同等优先级的传输任务,仲裁部件基于轮询调度算法根据通道的仲裁顺序决定DMA传输引擎的使用权。
9.根据权利要求8所述的音频输入输出系统,其特征在于:所述通道的仲裁顺序能够进行配置,和/或优先级数量能够进行配置,和/或优先级的判别顺序能够进行配置。
10.根据权利要求1所述的音频输入输出系统,其特征在于:关联第一DMA通道和第二DMA通道,在检测到第一DMA通道搬运数据到第一缓冲区时,触发启动第二DMA通道将第一缓冲区的数据搬运到第二缓冲区;以及监测DMA传输过程,采集到DMA传输中断事件时,触发启动第一DMA通道的DMA传输。
11.根据权利要求10所述的音频输入输出系统,其特征在于:采集第二DMA通道的状态信息,判定该状态为闲置状态并且第一DMA通道的启动请求信号有效时,在下一个周期启动第二DMA通道;判定该状态为占用状态并且第一DMA通道的启动请求信号有效时,保持第一DMA通道的请求信号直到第二DMA通道处于闲置状态,并在第二DMA通道处于闲置状态时,在下一个周期启动第二DMA通道。
12.根据权利要求1所述的音频输入输出系统,其特征在于:还包括DMA加速器,在判定具有多路音频输入时,通过所述DMA加速器进行间隔数据拷贝。
13.根据权利要求12所述的音频输入输出系统,其特征在于:所述DMA加速器被配置为,
DMA握手成功后,获取N路模拟音频输入,将经过模数转换后的混合音频数据,存放在I2S FIFO中;当I2S FIFO数据大小达到预设阈值时,触发DMA硬件握手,执行DMA操作,将混合音频数据按通道分离后,按通道顺序存放在DMA加速器内部存储区;将DMA加速器内部存储区的音频数据按通道顺序输出到外部存储器中进行存储,不同路音频数据对应不同的存储区域;
以及当DMA再次握手成功时,重复执行前述DMA握手成功后的传输过程,在外部存储器中将同一路音频数据存储在相同的存储区域,直到DMA传输完毕。
14.一种音频数据的录音方法,其特征在于包括步骤:
音频输入接口采集音频数据;
将前述音频数据传输到权利要求1-13中任一项所述系统中。
15.一种音频数据的回放方法,其特征在于包括步骤:
通过权利要求1-13中任一项所述系统输出待回放的音频数据;
通过音频输出接口播放前述音频数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010029855.2A CN110825673B (zh) | 2020-01-13 | 2020-01-13 | 音频输入输出系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010029855.2A CN110825673B (zh) | 2020-01-13 | 2020-01-13 | 音频输入输出系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825673A CN110825673A (zh) | 2020-02-21 |
CN110825673B true CN110825673B (zh) | 2020-04-03 |
Family
ID=69546637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010029855.2A Active CN110825673B (zh) | 2020-01-13 | 2020-01-13 | 音频输入输出系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825673B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113965844B (zh) * | 2021-12-22 | 2022-04-15 | 深圳市维海德技术股份有限公司 | 低延时音频传输方法、装置、驱动设备及可读存储介质 |
CN114546914B (zh) * | 2022-02-23 | 2024-04-26 | 北京奕斯伟计算技术股份有限公司 | 用于对多个通道信息执行数据处理的处理装置及系统 |
CN114817098A (zh) * | 2022-04-28 | 2022-07-29 | 重庆大学 | 一种感知数据处理系统及方法 |
CN115802236B (zh) * | 2023-01-04 | 2023-04-14 | 成都市安比科技有限公司 | 一种缩短带辅助听力耳机延迟的方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446932A (zh) * | 2008-12-24 | 2009-06-03 | 北京中星微电子有限公司 | 一种音频数据传输方法及设备 |
CN102290050B (zh) * | 2010-06-18 | 2014-07-30 | 北京中星微电子有限公司 | 一种传输音频数据的方法及装置 |
CN102647616B (zh) * | 2012-04-18 | 2014-07-02 | 北京大学 | 一种音视频复用的装置 |
US9280290B2 (en) * | 2014-02-12 | 2016-03-08 | Oracle International Corporation | Method for steering DMA write requests to cache memory |
CN104219505A (zh) * | 2014-09-29 | 2014-12-17 | 济南中维世纪科技有限公司 | 一种基于PCIe的多路高清模拟音视频采集系统 |
-
2020
- 2020-01-13 CN CN202010029855.2A patent/CN110825673B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110825673A (zh) | 2020-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110825673B (zh) | 音频输入输出系统及方法 | |
JP5834182B2 (ja) | データ転送制御装置及びデータ転送制御方法 | |
WO2012031436A1 (zh) | 数据存储与鉴权并行的处理方法和终端 | |
JP2007079789A (ja) | 計算機システム及びイベント処理方法 | |
US20070016709A1 (en) | Bus control system and a method thereof | |
CN1998144A (zh) | 实现时域隔离的总线访问受限的通信装置 | |
US20100199071A1 (en) | Data processing apparatus and image processing apparatus | |
WO2022227614A1 (zh) | 用于命令分发的装置、方法、芯片、计算机设备及存储介质 | |
JP2007219937A (ja) | タスク管理システム、タスク管理方法およびタスク管理プログラム | |
US7707347B2 (en) | Data path master/slave data processing device apparatus | |
US10747692B2 (en) | Image processing accelerator | |
US9891840B2 (en) | Method and arrangement for controlling requests to a shared electronic resource | |
JP4853951B2 (ja) | データ処理装置 | |
US20060031607A1 (en) | Systems and methods for managing input ring buffer | |
JP2005242806A (ja) | データ処理装置 | |
US11360529B2 (en) | Signal processing system, signal processing circuit, and reset control method | |
JP2009055141A (ja) | データ処理装置及びデータ処理方法 | |
JPH0713923A (ja) | バス制御方法 | |
US20040064617A1 (en) | Information processing apparatus, information processing method, recording medium and program | |
JP2007026184A (ja) | 機能処理電子回路およびその制御手法 | |
CN115113931B (zh) | 数据处理系统、方法、人工智能芯片、电子设备和介质 | |
JP4523303B2 (ja) | 情報処理ボード | |
KR100431132B1 (ko) | 인터럽트 처리 장치 | |
JP2011022877A (ja) | 情報処理装置および方法 | |
JP2002304368A (ja) | データ処理装置及びその装置におけるアクセス調停方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 201210 8th floor, building 1, 298 Xiangke Road, Pudong New Area, Shanghai Patentee after: MOUXIN TECHNOLOGY (SHANGHAI) Co.,Ltd. Address before: Room 507, building 1, No. 800, Naxian Road, pilot Free Trade Zone, Pudong New Area, Shanghai 201210 Patentee before: MOUXIN TECHNOLOGY (SHANGHAI) Co.,Ltd. |
|
CP02 | Change in the address of a patent holder |