CN102290050B - 一种传输音频数据的方法及装置 - Google Patents

一种传输音频数据的方法及装置 Download PDF

Info

Publication number
CN102290050B
CN102290050B CN201010209881.XA CN201010209881A CN102290050B CN 102290050 B CN102290050 B CN 102290050B CN 201010209881 A CN201010209881 A CN 201010209881A CN 102290050 B CN102290050 B CN 102290050B
Authority
CN
China
Prior art keywords
dma
demoder
buffer unit
transmission
interrupt
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
Application number
CN201010209881.XA
Other languages
English (en)
Other versions
CN102290050A (zh
Inventor
李志刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mid Star Technology Ltd By Share Ltd
Original Assignee
Vimicro Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Vimicro Corp filed Critical Vimicro Corp
Priority to CN201010209881.XA priority Critical patent/CN102290050B/zh
Publication of CN102290050A publication Critical patent/CN102290050A/zh
Application granted granted Critical
Publication of CN102290050B publication Critical patent/CN102290050B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种传输音频数据的方法,用于实现在不占用额外存储器的情况下的传输音频数据,从而节约存储空间,并且减轻了CPU的负担。所述方法包括:解码器向缓存单元写入音频数据;在写满缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时解码器触发DMA传输。本发明还公开了用于实现所述方法的装置。

Description

一种传输音频数据的方法及装置
技术领域
本发明涉及到计算机及嵌入式领域,特别涉及到传输音频数据的方法及装置。
背景技术
随着嵌入式系统和多媒体技术的迅速发展,结合两者所产生的基于嵌入式系统的多媒体播放系统逐渐兴起。而在嵌入式多媒体播放系统中,音频播放是一项最基本的功能。
音频播放过程中,音频数据的输出都是采用DMA(Direct Memory Access,存储器直接访问)的方式输出到DAC(Digital-to-Analog Converter,数模转换器),由DAC将音频数据由数字信号转换为模拟信号后按照采样率来输出,采样率如48K、44.1K等。其中,DMA是指在专门的硬件控制下,实现高速外设和主存储器之间自动成批交换数据,尽量减少CPU干预的输入/输出操作方式。
但是在嵌入式系统中,由于某些无法预知的突发事件的发生,如文件系统的性能由于SD(Secure Digital Memory Card)卡或NAND存储器的物理特性,在某一时刻会突然下降,此时会出现音频数据不连续的情况。在这种情况下,现有的方法是继续通过DMA向DAC传送静音数据,当存储器中存储的静音数据传送完毕时,会产生一个DMA中断,该DMA中断判断是否有准备好的音频数据,如果没有准备好,则继续传送静音数据,当静音数据传输完毕时,再次产生一个DMA中断,该DMA中断判断是否有准备好的音频数据,如此直到音频数据准备好时启动DMA传输音频数据。这样可以保证DMA传输结束的中断可以继续到来。但这种方法的缺陷在于需要存储器来保存静音数据,占用较多的存储资源。而且这个存储器的存储空间还不能太小,因为如果太小,可能在保存的静音数据传送完之后音频数据还未准备好,无法启动DMA传输,达不到改善音频播放不连续的目的。并且由于是由DMA中断判断是否有准备好的音频数据,每传输完毕一次静音数据都要进行一次判断,因此在DMA传输中断至下一轮DMA传输开始之前,会频繁发生DMA中断。该频繁到来的DMA中断给CPU增加更多负担,进而加重声音的不连续,严重影响用户的收听效果。而如果不传送静音数据,则DMA传输结束的中断无法继续到来,也就无法再次启动DMA传输,导致不能继续播放音频数据。
发明内容
本发明实施例提供一种传输音频数据的方法,用于实现在不占用额外存储器来存储静音数据的情况下的传输音频数据,从而节约存储空间,并且减轻CPU的负担。
一种传输音频数据的方法,包括以下步骤:
解码器向缓存单元写入音频数据;
在写满一个缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;
当判断结果为是时解码器触发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中断,减轻了CPU的负担。
附图说明
图1A为本发明实施例中传输音频数据装置的主要结构图;
图1B为本发明实施例中传输音频数据装置的详细结构图;
图2A为本发明实施例中传输音频数据装置的解码器的内部结构示意图;
图2B为本发明实施例中传输音频数据装置的中断模块的内部结构示意图;
图2C为本发明实施例中传输音频数据装置的DMA模块的内部结构示意图;
图3为本发明实施例中传输音频数据方法的主要流程图;
图4为本发明实施例中传输音频数据方法的详细流程图;
图5为本发明实施例中解码器需写满所有缓存单元时传输音频数据方法的详细流程图;
图6为本发明实施例中解码器需写满三个缓存单元时传输音频数据方法的详细流程图。
具体实施方式
本发明实施例中,解码器向缓存单元写入音频数据;在写满缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时解码器触发DMA传输。由此可以在不占用额外存储器来保存静音数据的情况下实现传输音频数据,从而节约存储空间。并且,通过解码器来判断是否启动DMA进行传输,由此在DMA传输中断至下一轮DMA传输开始之前,只需要产生一次DMA中断,减轻了CPU的负担。
参见图1A,本实施例提供一种传输音频数据的装置,其包括解码器101、缓存模块102和中断模块103。
解码器101,用于向缓存模块102写入音频数据,在写满缓存单元时,判断是否有中断标志,其中,发生音频传输中断后,解码器101接收中断模块103发送的中断标志。当判断结果为是时触发DMA传输。解码器101将缓存模块102中一个缓存单元写满后,判断是否有中断标志,如果有,则判断是否已将需写满的缓存模块102中的缓存单元均写满,如果判断结果为是,则触发DMA模块启动DMA传输;如果没有中断标志,则判断是否有缓存单元需要写入音频数据,如果有,则继续向缓存模块102中的缓存单元写入音频数据,待写满一个缓存单元后再进行是否有中断标志的判断,如果没有,则不做处理,等待下一个任务。其中,解码器101还接收中断模块103发送的缓存地址,接收的缓存地址指向的是缓存模块102中刚进行DMA传输完毕的缓存单元。触发DMA模块时具体触发方式可以是,解码器101将缓存模块102中需写满的缓存单元均写满后,向DMA模块发送启动命令,以触发DMA模块启动DMA传输;或者以其它方式触发DMA模块启动DMA传输。如果传入解码器101的音频数据是经过编码的数据,解码器101向缓存模块102中写入音频数据之前或向缓存模块102中写入音频数据时需对音频数据进行解码。当音频传输连续时,每写满缓存模块102中一个缓存单元,都会判断是否有中断标志。
解码器101可以将每次接收到的由中断模块103发送的缓存地址按照接收时间的先后顺次存储在本地的存储单元中,按照存储顺序依次向缓存地址指向的缓存模块102中的缓存单元写入音频数据。
在本发明实施例中,如果解码器101在写入音频数据的过程中便可知道什么时候已写满,则可以不进行是否已写满的判断。当写满一个缓存单元,判断是否有中断标志,如果有中断标志,确定发生音频传输中断,在需写满的缓存单元均已写满后,触发DMA模块,以启动DMA传输。如果没有中断标志,则判断是否有需要写入的缓存模块102中的缓存单元,如果有,则继续向缓存模块102中的缓存单元写入音频数据。其中,发生音频传输中断后,需写满的缓存模块102中的缓存单元的数量可根据需要设定。
缓存模块102用于存储解码器101写入的音频数据。缓存模块102可以包含第一缓存单元、第二缓存单元等多个缓存单元。其中,一个缓存单元就是一段存储空间,其具体可以由一个存储器来实现,也可以以其它方式实现,此存储空间的大小可根据需要设定。解码器101向缓存模块102中写入音频数据,指的是向缓存模块102中的缓存单元写入音频数据。其中,DMA模块传输缓存模块102的缓存单元中的音频数据时,是按照缓存单元的排列顺序(逻辑顺序或物理顺序)顺次传输,例如,DMA模块刚传输完毕的是缓存模块102中第一缓存单元中的音频数据,则下一轮DMA传输则会传输缓存模块102中第二缓存单元中的音频数据。
中断模块103用于当发生音频传输中断时向解码器101发送中断标志。中断模块103具体用于在DMA模块停止DMA传输后,产生DMA中断,通过DMA中断查询缓存模块102中下一个缓存单元中是否有准备好的音频数据,其中,所述的准备好是指下一个缓存单元中已写满了音频数据。如果有准备好的音频数据,确定音频传输连续,则通过DMA中断将DMA模块刚传输完毕的缓存模块102中缓存单元的缓存地址发送给解码器101,以及,通过DMA中断将缓存模块102中下一个缓存单元的缓存地址发送给DMA模块,DMA模块将传输地址切换为接收到的该缓存单元的缓存地址,并根据该缓存地址指向的缓存单元中存储的音频数据进行DMA传输;如果下一个缓存单元中没有准备好的音频数据,则确定发生音频传输中断,中断模块103通过DMA中断向解码器101发送缓存地址及中断标志,发送方式可以是指令形式,其中,当发送缓存地址及中断标志时,可以是一条指令,包含缓存地址及中断标志,也可以是多条指令,其中分别包含缓存地址及中断标志。其中,该缓存地址指向的是DMA模块刚传输完毕的缓存模块102中的缓存单元。
所述传输音频数据的装置还包括DMA模块104。所述装置还与DAC模块105相连。参见图1B所示。其中,解码器101、缓存模块102、中断模块103和DMA模块104四者之间,每两者都有连接关系。
DMA模块104用于进行DMA传输,即通过DMA的方式传输音频数据。DMA模块104具体用于根据解码器101的启动命令启动DMA传输,将音频数据送入DAC模块105。每传输完缓存模块102中一个缓存单元里的音频数据时,DMA模块104停止DMA传输。
DAC模块105用于接收DMA模块104传输的音频数据,并将接收的数字形式的音频数据转换为模拟信号输出。
参见图2A,为图1A的本实施例传输音频数据装置中解码器101的内部结构示意图。即本实施例中解码器101还包括写单元1011、判断单元1012、第一发送单元1013和接收单元1014。所述解码器101还包括存储单元1015和解码单元1016。
写单元1011,用于将音频数据写入缓存模块102中的缓存单元。写单元1011具体用于根据存储单元1015中存储的缓存地址将音频数据写入缓存模块102中的缓存单元。
判断单元1012,用于判断是否有中断标志。判断单元1012具体用于在写单元1011根据缓存地址写满缓存模块102中的一个缓存单元后判断是否有中断标志,中断标志可以在由接收单元1014接收后存储在存储单元1015中,如果有中断标志,则判断是否已将需写满的缓存模块102中的缓存单元均写满,当判断结果为是时,触发第一发送单元1013向DMA模块104发送启动命令。如果没有中断标志,则判断存储单元1015中是否还有需写入的缓存模块102中的缓存单元的缓存地址,如果有则继续写入,如果没有则不做处理。
第一发送单元1013,用于当判断结果为是时向DMA模块104发送用于启动DMA传输的启动命令。第一发送单元1013具体用于在判断单元1012确定需写满的缓存模块102中的缓存单元均写满后,根据中断标志及判断单元1012的触发向DMA模块104发送启动命令,以启动DMA传输,该启动命令包含缓存地址。其中,该缓存地址是指向缓存模块102中已写满的缓存单元的缓存地址,
接收单元1014,用于接收中断模块103发送的中断标志。接收单元1014还用于接收中断模块103发送的缓存地址。
存储单元1015,用于存储预先设定的需写满的缓存模块102中缓存单元的数量、中断标志和任务列表,任务列表中包括中断模块103发送的缓存地址。
解码单元1016,用于将音频数据进行解码。可以在将音频数据写入缓存模块102之前对音频数据进行解码,也可以在将音频数据写入缓存模块102时对音频数据进行解码。
参见图2B,为图1A的本实施例传输音频数据装置中中断模块103的内部结构示意图。本实施例中中断模块103还包括DMA中断单元1031和第二发送单元1032。
DMA中断单元1031,用于生成DMA中断,通过DMA中断判断DMA传输完毕的缓存单元的下一个缓存单元中是否有写满的音频数据,当没有写满的音频数据时,确定发生音频传输中断。DMA中断单元1031具体用于在DMA模块104停止DMA传输后,生成DMA中断,通过DMA中断判断缓存模块102中下一个缓存单元是否有准备好的音频数据,其中,所述的准备好是指下一个缓存单元中已写满了音频数据。如果有准备好的音频数据,确定音频传输连续,触发第二发送单元1032将DMA模块104刚传输完毕的缓存模块102中缓存单元的缓存地址发送给解码器101,以及,将缓存模块102中下一个缓存单元的缓存地址发送给DMA模块104。如果下一个缓存单元中没有准备好的音频数据,则确定发生音频传输中断,DMA中断单元1031通过DMA中断触发第二发送单元1032向解码器101发送缓存地址及中断标志,其中,该缓存地址指向的是DMA模块104刚传输完毕的缓存模块102中的缓存单元。
第二发送单元1032,用于当发生音频传输中断时,将中断标志发送给解码器101。第二发送单元1032具体用于根据DMA中断单元1031的触发向解码器101发送缓存地址及中断标志。该缓存地址是指向DMA模块104刚传输完毕的缓存模块102中的缓存单元。具体发送方式可以是指令形式,指令是由DMA中断单元1031生成的。其中,发送缓存地址及中断标志时,可以发送一条指令,其中包含缓存地址及中断标志,也可以发送多条指令,其中分别包含缓存地址及中断标志。第二发送单元1032还用于当音频传输连续时,向DMA模块104发送缓存地址,其中,该缓存地址是指向DMA模块104刚传输完毕的缓存模块102中的缓存单元的下一个缓存单元。
参见图2C,为图1B的本实施例传输音频数据装置中DMA模块104的内部结构示意图。本实施例中DMA模块104包括接收单元1041和传输单元1042。
接收单元1041,用于接收解码器101发送的启动命令,该启动命令包含缓存地址。其中,该缓存地址是指向缓存模块102中已写满的缓存单元,接收单元1041还用于当音频传输连续时接收中断模块103发送的缓存地址,该缓存地址是指向DMA模块104刚传输完毕的缓存模块102中的缓存单元的下一个缓存单元。
传输单元1042,用于根据启动命令启动DMA传输,并传输所述缓存地址指向的缓存单元中的音频数据。传输单元1042具体用于将传输地址切换为接收到的缓存地址,以DMA的方式向DAC模块105传输所述缓存地址指向的缓存单元中的音频数据。
下面通过实现流程来介绍传输音频数据的方法。
本发明实施例通过生成并发送中断标志来实现传输音频数据。参见图3所示,传输音频数据的主要方法流程如下:
步骤301:解码器101向缓存单元写入数据。
其中,缓存模块102中包含多个缓存单元。
DMA模块104将中断模块103发送的缓存地址写入存储单元1015,存储方式可以是任务列表形式,也可以是其它形式。解码器101按照存储的先后顺序向缓存地址指向的缓存单元写入音频数据。
步骤302:在写满缓存单元时,解码器101判断是否有中断标志。其中,发生音频传输中断后,解码器101接收中断模块103发送的中断标志。
当缓存模块102中一个缓存单元的音频数据传输完毕后,DMA模块104停止DMA传输,此时如果中断模块103查询到缓存模块102中下一个缓存单元中没有准备好的音频数据,则确定发生音频传输中断。
其中,中断模块103可以通过DMA中断,以发送指令的方式将中断标志发送给解码器101。一并发送的还有缓存地址,该缓存地址指向DMA模块104刚传输完毕的缓存模块102中的缓存单元。
步骤303:当判断结果为是时,解码器101触发DMA传输。
解码器101需写满的可以是缓存模块102中的一个缓存单元,也可以是缓存模块102中多个缓存单元,也可以是缓存模块102中所有的缓存单元。此需写满的缓存单元的数量可根据需要设定。因为存在如以上所述的多种可能的实施方式,所以以下用三个具体实施例来详细介绍实施过程。
本发明实施例中,发生音频传输中断后,设置解码器101需写满缓存模块102中的一个缓存单元,在写满一个缓存单元后即可启动DMA传输。例如,缓存模块102中共有4个缓存单元。DMA模块104刚传输完的是缓存模块102的第一缓存单元中的音频数据。参见图4,详细方法流程如下:
预先设置,当发生音频传输中断后,解码器101需写满缓存模块102中一个缓存单元后即可启动DMA进行传输。
步骤401:DMA模块104传输缓存模块102的第一缓存单元中的音频数据完毕后停止DMA传输。
步骤402:中断模块103产生DMA中断。
步骤403:中断模块103通过DMA中断判断缓存模块102中第二缓存单元是否有准备好的音频数据。如果没有,则确定音频传输中断,继续步骤404,如果有,则确定音频传输连续,继续步骤405和407。其中,准备好的音频数据是指第二缓存单元中写满了音频数据。
步骤404:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址及中断标志。该缓存地址是指向缓存模块102中的第一缓存单元。继续步骤406和408。
步骤405:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址。该缓存地址是指向缓存模块102中的第一缓存单元。继续步骤406和408。
步骤406:解码器101将该缓存地址写入存储单元1015中的任务列表。
步骤407:中断模块103通过DMA中断将下一个缓存单元(即第二缓存单元)的缓存地址发送给DMA模块104。此步骤可以与步骤405同步进行,或以任意先后顺序执行。继续步骤412。
步骤408:解码器101判断是否已写满一个缓存单元。如果是,则继续步骤410,否则继续步骤409。其中,如果解码器101在写入数据的过程中便可知道什么时候已写满,则可以不进行判断,本步骤可以跳过。
步骤409:解码器101根据存储单元1015中的任务列表向缓存模块102中的缓存单元写入音频数据。继续步骤408。
因DMA模块104刚传输完毕的是第一缓存单元,而又获知第二缓存单元中没有音频数据,则可知其后的缓存单元中均没有音频数据。解码器101向缓存单元中写入音频数据时是按顺序写入,因此本步骤中解码器101是向第二缓存单元中写入音频数据。
其中,如果传入解码器101的音频数据是经过编码的音频数据,解码器101向缓存模块102中写入音频数据之前或向缓存模块102中写入音频数据时需对音频数据进行解码。
步骤410:解码器101判断是否有中断标志。如果有,则继续步骤411,如果没有,则继续步骤409。
其中,在没有中断标志、继续步骤409之前,解码器101需判断任务列表中是否有需要写入的缓存单元,如果有,则继续步骤409,向缓存单元中写入音频数据,如果没有,则不做处理。
步骤411:解码器101向DMA模块104发送启动命令。该启动命令包含解码器101刚写满的缓存单元的缓存地址。继续步骤412。
步骤412:DMA模块104将传输地址切换为接收到的缓存地址。
步骤413:DMA模块104启动DMA传输,以传输该缓存地址指向的缓存单元中的音频数据。
在以上实施例中,发生音频中断后,解码器101只需写满一个缓存单元即可进行下一轮DMA传输,音频中断时间不长,等待时间比较短暂。
本发明实施例中,发生音频传输中断后,设置解码器101需要将缓存模块102中所有的缓存单元均写满,方可启动DMA进行传输。例如,缓存模块102中共有4个缓存单元。DMA模块104刚传输完的是缓存模块102中的第一缓存单元中的音频数据。参见图5,详细方法流程如下:
预先设置,当发生音频传输中断后,解码器101需写满缓存模块102中所有4个缓存单元后方可启动DMA进行传输。
步骤501:DMA模块104传输缓存模块102的第一缓存单元中的音频数据完毕后停止DMA传输。
步骤502:中断模块103产生DMA中断。
步骤503:中断模块103通过DMA中断查询第二缓存单元,确定发生音频传输中断。
缓存模块102中第一缓存单元中的音频数据传输完毕后,下一次DMA传输应该传输缓存模块102中第二缓存单元中的音频数据。而此时中断模块103查询到第二缓存单元中没有准备好的音频数据,则确定发生音频传输中断。
步骤504:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址及中断标志。该缓存地址是指向缓存模块102中的第一缓存单元。
步骤505:解码器101将该缓存地址写入存储单元1015中的任务列表。
步骤506:解码器101判断是否已写满一个缓存单元。如果不是,继续步骤507,否则继续步骤508。如果解码器101在写入数据的过程中便可知道什么时候已写满,则可以不进行判断,本步骤可以跳过。
步骤507:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据。继续步骤506。
因DMA模块104刚传输完毕的是第一缓存单元,而又获知第二缓存单元中没有音频数据,则可知其后的缓存单元中均没有音频数据。解码器101向缓存单元中写入音频数据时是按顺序写入,因此本步骤中解码器101是向第二缓存单元中写入音频数据。
步骤508:解码器101判断并确定有中断标志。
因为已经发生音频传输中断,中断模块103发送的指令中一定包含中断标志,所以解码器101也一定确定有中断标志。
步骤509:解码器101判断需写满的缓存单元是否均写满。如果不是,继续步骤510,否则继续步骤511。
其中,因需要将缓存模块102中所有缓存单元均写满,预先可以将所有缓存单元的缓存地址依次存储在存储单元1015中,存储形式可以是任务列表形式,解码器101根据存储的缓存地址向缓存模块102中的缓存单元写入音频数据,每写完一个缓存单元,可以从任务列表中将该缓存单元的缓存地址删去。如果以这种方式执行,则解码器101在写入的过程中会知道是否已写满所有的缓存单元,所以本步骤可以跳过。
步骤510:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据。继续步骤509。
步骤511:解码器101向DMA模块104发送启动命令。该启动命令包含缓存地址。继续步骤512。
步骤512:DMA模块104将传输地址切换为接收到的缓存地址。
步骤513:DMA模块104根据启动命令启动DMA传输。
以上实施例中,在发生音频中断之后,解码器101需将缓存模块102中所有的缓存单元均写满之后才能启动DMA传输,这样会使音频发生中断的时间间隔延长,减少DMA中断的频繁发生,减轻CPU的负担。
本发明实施例中,设置解码器101需要写满缓存模块102中的三个缓存单元。例如,缓存模块102中共有4个缓存单元。DMA模块104刚传输完的是缓存模块102中的第一缓存单元中的音频数据。参见图6,详细方法流程如下:
用户预先设置,当发生音频传输中断后,解码器101需写满缓存模块102中三个缓存单元后方可启动DMA进行传输。
步骤601:DMA模块104传输缓存模块102的第一缓存单元中的音频数据完毕后停止DMA传输。
步骤602:中断模块103产生DMA中断。
步骤603:中断模块103通过DMA中断查询第二缓存单元,确定发生音频传输中断。
缓存模块102中第一缓存单元中的音频数据传输完毕后,下一次DMA传输应该传输缓存模块102中第二缓存单元中的音频数据。而此时中断模块103查询到第二缓存单元中没有准备好的音频数据,而解码器101向缓存单元中写入音频数据是顺次写入,如果第二缓存单元中没有音频数据,则可以确定其后的缓存单元中均没有音频数据。因此确定发生音频传输中断。
步骤604:中断模块103通过DMA中断向解码器101发送指令,该指令包含缓存地址及中断标志。该缓存地址是指向缓存模块102中的第一缓存单元。
步骤605:解码器101将缓存地址写入存储单元1015中的任务列表。
步骤606:解码器101判断是否已写满一个缓存单元。如果不是,继续步骤607,否则继续步骤608。如果解码器101在写入数据的过程中便可知道什么时候已写满,则可以不进行判断,本步骤可以跳过。
步骤607:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据。继续步骤606。
因DMA模块104刚传输完毕的是第一缓存单元,而又获知第二缓存单元中没有音频数据,则可知其后的缓存单元中均没有音频数据。解码器101向缓存单元中写入音频数据时是按顺序写入,因此本步骤中解码器101是向第二缓存单元中写入音频数据。
步骤608:解码器101判断并确定有中断标志。
因为已经发生音频传输中断,中断模块103发送的指令中一定包含中断标志,所以解码器101也一定确定有中断标志。
步骤609:解码器101判断写满的缓存单元的数量是否已达到设定值3。如果不是,继续步骤610,否则继续步骤611。
其中,因为用户已经预先设置,所以解码器101已预先存储需写满的缓存单元的数量。
步骤610:解码器101根据任务列表中的缓存地址向缓存模块102中的缓存单元写入音频数据,并在写满后更新写满的缓存单元的数量。继续步骤609。
步骤611:解码器101向DMA模块104发送启动命令。该启动命令包含缓存地址。继续步骤612。
步骤612:DMA模块104将传输地址切换为接收到的缓存地址。
步骤613:DMA模块104根据启动命令启动DMA传输,将音频数据传送至DAC模块105。
步骤614:DAC模块105将接收到的音频数据进行输出。
其中,在输出之前,DAC模块105需将接收到的数字形式的音频数据转换为模拟信号。
以上实施例中,在发生音频传输中断后,解码器101需写满缓存模块102中三个缓存单元后启动DMA传输,其中,此需写满的缓存单元的数量可根据需要设定,从而可以根据不同需要设定不同的需写满的缓存单元的数量,灵活性更大,更利于实际应用。
本发明实施例中,解码器向缓存单元写入音频数据;在写满缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时解码器触发DMA传输。由此可以在不占用额外存储器来保存静音数据的情况下实现传输音频数据,从而节约存储空间。并且,通过解码器101来判断是否启动DMA进行传输,由此在DMA传输完毕至下一个DMA传输开始之前,只需要产生一次中断,减轻了CPU的负担。并且,解码器101还接收中断模块103发送的缓存地址,将该缓存地址存入存储单元1015,解码器101按照存储单元1015中存储的缓存地址依次向缓存模块102中的缓存单元写入音频数据。解码器101可以在写满缓存模块102中一个缓存单元后启动DMA传输,音频中断时间不长,等待时间比较短暂;或者在写满缓存模块102中多个缓存单元后启动DMA传输,从而可以根据不同需要设定不同的需写满的缓存单元的数量,灵活性更大,更利于实际应用;或者在写满缓存模块102中所有缓存单元后启动DMA传输,使音频发生中断的时间间隔延长,减少DMA中断的频繁发生,减轻CPU的负担。
用于实现本发明实施例的软件可以存储于软盘、硬盘、光盘和闪存等存储介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (16)

1.一种传输音频数据的方法,其特征在于,包括以下步骤:
解码器向缓存单元写入音频数据;
在写满一个缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;
当判断结果为是时解码器触发DMA传输。
2.如权利要求1所述的方法,其特征在于,所述方法还包括步骤:
当判断结果为没有中断标志时,解码器继续判断是否有需要写入的缓存单元,当判断结果为有需要写入的缓存单元时,解码器继续向缓存单元写入音频数据。
3.如权利要求1所述的方法,其特征在于,在触发DMA传输之前,所述方法还包括步骤:
当判断结果为有中断标志时,解码器继续判断已写满的缓存单元的数量是否达到设定值;
解码器触发DMA传输的步骤包括:当判断结果为已达到设定值时,解码器触发DMA传输。
4.如权利要求1所述的方法,其特征在于,在触发DMA传输之前,所述方法还包括步骤:
当判断结果为有中断标志时,解码器继续判断是否已将所有缓存单元均写满;
解码器触发DMA传输的步骤包括:当判断结果为已均写满时,解码器触发DMA传输。
5.如权利要求1、3、4任意一项所述的方法,其特征在于,解码器触发DMA传输的步骤包括:解码器根据中断标志向DMA模块发送用于启动DMA传输的启动命令。
6.一种传输音频数据的方法,应用于解码器侧,其特征在于,包括以下步骤:
解码器将音频数据写入缓存单元;
当写满一个缓存单元时,解码器判断是否有中断标志;其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;
当判断结果为是时,解码器向DMA模块发送用于启动DMA传输的启动命令。
7.一种传输音频数据的方法,应用于中断芯片侧,其特征在于,包括以下步骤:
中断模块在DMA传输完毕一个缓存单元时产生DMA中断;
中断模块判断DMA传输完毕的缓存单元的下一个缓存单元中是否有写满的音频数据;
当判断结果为否时,中断模块确定发生音频传输中断,将中断标志发送给解码器。
8.一种传输音频数据的方法,应用于DMA芯片侧,其特征在于,包括以下步骤:
DMA模块接收解码器发送的包含缓存地址的启动命令;
DMA模块根据启动命令启动DMA传输,并传输所述缓存地址指向的已写满的缓存单元中的音频数据。
9.一种传输音频数据的装置,其特征在于,包括:
解码器,用于向缓存单元写入音频数据,并在写满一个缓存单元时判断是否有中断标志,其中,发生音频传输中断后,解码器接收中断模块发送的中断标志;当判断结果为是时触发DMA传输;
缓存单元,用于存储解码器写入的音频数据;
中断模块,用于当发生音频传输中断时向解码器发送中断标志。
10.如权利要求9所述的装置,其特征在于,解码器当判断结果为没有中断标志时,继续判断是否有需要写入的缓存单元,当判断结果为有需要写入的缓存单元时,继续向缓存单元写入音频数据。
11.如权利要求9所述的装置,其特征在于,解码器当判断结果为有中断标志时,继续判断已写满的缓存单元的数量是否达到设定值;当判断结果为已达到设定值时,解码器触发DMA传输。
12.如权利要求9所述的装置,其特征在于,解码器当判断结果为有中断标志时,继续判断是否已将所有缓存单元均写满;当判断结果为已均写满时,解码器触发DMA传输。
13.如权利要求9、11、12任意一项所述的装置,其特征在于,解码器根据中断标志向DMA模块发送用于启动DMA传输的启动命令。
14.一种解码器,其特征在于,包括:
接收单元,用于在发生音频传输中断后,接收中断模块发送的中断标志;
写单元,用于将音频数据写入缓存单元;
判断单元,用于当写单元写满一个缓存单元时,判断是否有中断标志;
第一发送单元,用于当判断结果为是时,向DMA模块发送用于启动DMA传输的启动命令。
15.一种用于传输音频数据的中断芯片,其特征在于,包括:
DMA中断单元,用于在DMA传输完毕一个缓存单元时产生DMA中断,通过DMA中断判断DMA传输完毕的缓存单元的下一个缓存单元中是否有写满的音频数据,当判断结果为否时,确定发生音频传输中断;
第二发送单元,用于当确定发生音频传输中断时,将中断标志发送给解码器。
16.一种用于传输音频数据的DMA芯片,其特征在于,包括:
接收单元,用于接收解码器发送的启动命令,该启动命令包含缓存地址;
传输单元,用于根据启动命令启动DMA传输,并传输所述缓存地址指向的已写满的缓存单元中的音频数据。
CN201010209881.XA 2010-06-18 2010-06-18 一种传输音频数据的方法及装置 Active CN102290050B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010209881.XA CN102290050B (zh) 2010-06-18 2010-06-18 一种传输音频数据的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010209881.XA CN102290050B (zh) 2010-06-18 2010-06-18 一种传输音频数据的方法及装置

Publications (2)

Publication Number Publication Date
CN102290050A CN102290050A (zh) 2011-12-21
CN102290050B true CN102290050B (zh) 2014-07-30

Family

ID=45336413

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010209881.XA Active CN102290050B (zh) 2010-06-18 2010-06-18 一种传输音频数据的方法及装置

Country Status (1)

Country Link
CN (1) CN102290050B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110825673B (zh) * 2020-01-13 2020-04-03 眸芯科技(上海)有限公司 音频输入输出系统及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092774A (ja) * 1999-09-17 2001-04-06 Nec Eng Ltd Dmaバースト転送制御装置
CN101043282A (zh) * 2006-03-24 2007-09-26 中兴通讯股份有限公司 多通道语音处理的数据存储方法
CN101046786A (zh) * 2007-04-27 2007-10-03 北京中星微电子有限公司 一种实现高效dma传输的dma控制器及传输方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0722707D0 (en) * 2007-11-19 2007-12-27 St Microelectronics Res & Dev Cache memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001092774A (ja) * 1999-09-17 2001-04-06 Nec Eng Ltd Dmaバースト転送制御装置
CN101043282A (zh) * 2006-03-24 2007-09-26 中兴通讯股份有限公司 多通道语音处理的数据存储方法
CN101046786A (zh) * 2007-04-27 2007-10-03 北京中星微电子有限公司 一种实现高效dma传输的dma控制器及传输方法

Also Published As

Publication number Publication date
CN102290050A (zh) 2011-12-21

Similar Documents

Publication Publication Date Title
KR101168498B1 (ko) 전력 효율적인 일괄 프레임 오디오 디코딩 장치, 시스템 및 방법
US10732876B2 (en) Memory access technology and computer system
US20160240194A1 (en) Electronic device and method of operating voice recognition
US20070079015A1 (en) Methods and arrangements to interface a data storage device
KR101503623B1 (ko) 캐싱된 이미지들을 이용하는 저전력 오디오 디코딩 및 재생
US20110246760A1 (en) Electronic device and electronic device system
US8996788B2 (en) Configurable flash interface
US10007613B2 (en) Reconfigurable fetch pipeline
CN112445725A (zh) 预读取文件页的方法、装置和终端设备
US11010094B2 (en) Task management method and host for electronic storage device
KR20190088734A (ko) 메모리 인터페이스와, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
US9330033B2 (en) System, method, and computer program product for inserting a gap in information sent from a drive to a host device
US9591112B2 (en) Command queuing for multimedia storage devices
US8244947B2 (en) Methods and apparatus for resource sharing in a programmable interrupt controller
CN102290050B (zh) 一种传输音频数据的方法及装置
CN112799723A (zh) 一种数据读取方法、装置及电子设备
US7584328B2 (en) Method, apparatus, and a system for efficient context switch
CN114281724A (zh) 数据传输方法、装置及电子设备
CN110764710A (zh) 低延迟高iops的数据访问方法与存储系统
US20040003145A1 (en) Method and apparatus to transfer information
EP2306325A1 (en) Data processing circuit
US20120047285A1 (en) Interrupt-based command processing
EP2312433B1 (en) Bi-directional low-latency buffer
CN109039392B (zh) 一种蓝牙设备
CN116627866A (zh) 数据处理方法、处理器、电子设备及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20171221

Address after: 100083 Haidian District, Xueyuan Road, No. 35, the world building, the second floor of the building on the ground floor, No. 16

Patentee after: Zhongxing Technology Co., Ltd.

Address before: 100083, Haidian District, Xueyuan Road, Beijing No. 35, Nanjing Ning building, 15 Floor

Patentee before: Beijing Vimicro Corporation

TR01 Transfer of patent right
CP01 Change in the name or title of a patent holder

Address after: 100083 Haidian District, Xueyuan Road, No. 35, the world building, the second floor of the building on the ground floor, No. 16

Patentee after: Mid Star Technology Limited by Share Ltd

Address before: 100083 Haidian District, Xueyuan Road, No. 35, the world building, the second floor of the building on the ground floor, No. 16

Patentee before: Zhongxing Technology Co., Ltd.

CP01 Change in the name or title of a patent holder