亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種音頻數(shù)據(jù)傳輸方法及設(shè)備的制作方法

文檔序號:6471912閱讀:243來源:國知局
專利名稱:一種音頻數(shù)據(jù)傳輸方法及設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及音頻領(lǐng)域,尤其涉及一種基于IIS (Inter-IC Sound Bus,集成 電路內(nèi)部音頻總線)的音頻數(shù)據(jù)傳輸方法及設(shè)備。
背景技術(shù)
為了解決音頻延時(shí)的問題,現(xiàn)有技術(shù)中釆用一種雙緩存區(qū)的設(shè)計(jì),通過雙 緩存區(qū)在存儲器和音頻設(shè)備之間傳輸數(shù)據(jù)。參考圖1,圖l為現(xiàn)有音頻系統(tǒng)示 意圖。音頻設(shè)備的SRAM (Static Random Access Memory,靜態(tài)隨機(jī)存取記憶 體)中包括FIFO (First In First Out,先進(jìn)先出)存儲器,所有的音頻設(shè)備都 共享一個(gè)DMA (Direct Memory Access,存儲器直接-訪問)。DMA是指一種高 速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲器之間直接讀寫數(shù)據(jù)。當(dāng)DMA從 一個(gè)緩存區(qū)處理音頻文件時(shí),CPU ( Central Processing Unit,中央處理單元) 可以處理另外一個(gè)緩存區(qū),當(dāng)前的緩存區(qū)播放和錄音結(jié)束后,另一個(gè)緩存區(qū)已 經(jīng)把數(shù)據(jù)準(zhǔn)備就緒,DMA就可以從另一個(gè)緩存區(qū)接著處理,減少延遲。
目前申請兩個(gè)緩存區(qū)來傳輸音頻數(shù)據(jù)的方法雖然可以減少延時(shí),但是,要 管理兩個(gè)緩存比較復(fù)雜。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種音頻數(shù)據(jù)傳輸方法及設(shè)備,以解決目前管理雙緩 存區(qū)進(jìn)行數(shù)據(jù)處理過程的復(fù)雜性。本發(fā)明的音頻數(shù)據(jù)傳輸方法用于利用預(yù)先申 請的一個(gè)緩存對音頻設(shè)備進(jìn)行音頻數(shù)據(jù)傳輸,所述緩存分為至少兩個(gè)空間,所 述方法包括數(shù)據(jù)預(yù)寫步驟和在同一時(shí)刻執(zhí)行的寫數(shù)據(jù)步驟和讀數(shù)據(jù)步驟,其 中
所述數(shù)據(jù)預(yù)寫步驟中,預(yù)寫模塊向所述緩存預(yù)先寫入來自源設(shè)備的音頻數(shù)
據(jù);所述寫數(shù)據(jù)步驟中,第 一處理模塊向所述緩存的至少兩個(gè)空間中具有空閑
的 一個(gè)第 一 空間寫入剩余的音頻數(shù)據(jù);
所述讀數(shù)據(jù)步驟中,按照所述音頻數(shù)據(jù)被寫入的順序,第二處理模塊從一 個(gè)第二空間讀取被寫入的數(shù)據(jù),并發(fā)送到目標(biāo)設(shè)備,所述第二空間為所述至少 兩個(gè)空間中與所述第 一 空間不同的空間;
所述源設(shè)備或目標(biāo)設(shè)備為所述音頻設(shè)備,所述緩存和所述音頻設(shè)備之間的 數(shù)據(jù)傳輸通過先進(jìn)先出的方式進(jìn)行。
當(dāng)所述目標(biāo)設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為處理器,所述第 二處理模塊為存儲器直接訪問模塊;
當(dāng)所述源設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為存儲器直接訪問模 塊,所述第二處理模塊為處理器。
當(dāng)所述第二處理模塊從所述第二空間讀取完所述被寫入的數(shù)據(jù)后,以中斷 的方式通知所述第 一處理^f莫塊所述第二空間為空。
當(dāng)所述第二處理模塊讀取的空間超出所述緩存時(shí),所述第二處理模塊自動 返回所述緩存的起始空間,從所述起始空間開始,按照所述音頻數(shù)據(jù)被寫入的 順序進(jìn)行讀取操作。
當(dāng)所述第一處理模塊寫入的空間超出所述緩存時(shí),所述第一處理模塊自動 返回所述緩存的起始空間,從所述起始空間開始進(jìn)行寫入操作。
本發(fā)明還提供了一種音頻數(shù)據(jù)傳輸設(shè)備,包括 '
申請模塊,用于向同步動態(tài)隨機(jī)存取存儲器申請一個(gè)緩存,對音頻設(shè)備進(jìn) 行音頻數(shù)據(jù)傳輸;
分賴3莫塊,用于將所述緩存分為至少兩個(gè)空間;
預(yù)寫模塊,用于向所述緩存預(yù)先寫入來自源設(shè)備的音頻數(shù)據(jù);
第一處理才莫塊,用于向所述緩存的至少兩個(gè)空間中具有空閑的一個(gè)第一空 間寫入剩余的音頻數(shù)據(jù);
第二處理4莫塊,用于按照所述音頻數(shù)據(jù)被寫入的順序,從一個(gè)第二空間讀 取被寫入的數(shù)據(jù),并發(fā)送到目標(biāo)設(shè)備,所述第二空間為所述至少兩個(gè)空間中與 所述第一空間不同的空間;
所述源設(shè)備或目標(biāo)設(shè)備為所述音頻設(shè)備時(shí),所述緩存和所述音頻設(shè)備之間的數(shù)據(jù)傳輸通過先進(jìn)先出存儲器實(shí)現(xiàn)。
當(dāng)所述目標(biāo)設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為處理器,所述第
二處理模塊為存儲器直接訪問模塊;
當(dāng)所述源設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為存儲器直接訪問模 塊,所述第二處理模塊為處理器;
所述先進(jìn)先出存儲器設(shè)置在所述存儲器直接訪問模塊中。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益效果
本發(fā)明只申請了 一個(gè)緩存,并根據(jù)需要將緩存等分或不等分成幾個(gè)空間, 這樣可以增加處理數(shù)據(jù)時(shí)的靈活性,滿足更多的實(shí)際應(yīng)用。
由于DMA獲取數(shù)據(jù)是通過芯片外部的SDRAM (Synchronous Dynamic Random Access Memory,同步動態(tài)隨機(jī)存取存儲器),而利用SDRAM讀寫數(shù) 據(jù)會有延時(shí),因此,就需要用FIFO來緩存數(shù)據(jù),F(xiàn)IFO是通過芯片內(nèi)部讀寫速 度快、不會有延時(shí)的SRAM實(shí)現(xiàn)的。現(xiàn)有的每一個(gè)外接設(shè)備中都存在帶有FIFO 的SRAM,而SRAM雖然速度快,但是占用芯片面積。
本發(fā)明將現(xiàn)有的放在外接設(shè)備的SRAM中的FIFO存儲器放在了 DMA內(nèi) 部,由于多個(gè)外接設(shè)備可以共享系統(tǒng)的DMA,因此,可以大大節(jié)省外接音頻 設(shè)備內(nèi)部芯片的SRAM。并且,不會影響音頻數(shù)據(jù)的傳輸方式。


圖1為現(xiàn)有音頻系統(tǒng)結(jié)構(gòu)示意圖2為本發(fā)明第一實(shí)施例的音頻數(shù)據(jù)播放流程圖3為第一實(shí)施例的播放模型框圖4為第一實(shí)施例的錄音模型框圖5為本發(fā)明第二實(shí)施例的音頻數(shù)據(jù)播放流程圖6為本發(fā)明的音頻系統(tǒng)結(jié)構(gòu)框圖。
具體實(shí)施例方式
本發(fā)明通過申請一個(gè)緩存,并劃分成多個(gè)空間,利用DMA將申請的一個(gè) 緩存按照多個(gè)緩存來使用。在整個(gè)流程中,數(shù)據(jù)一般要提前一拍填充,每次DMA傳輸數(shù)據(jù)完成后,DMA通過中斷的方式來告訴軟件,但DMA繼續(xù)搬運(yùn) 數(shù)據(jù),這樣當(dāng)中斷通知時(shí),不論是DMA還是CPU都可以持續(xù)搬運(yùn)數(shù)據(jù),從 而保證數(shù)據(jù)傳輸?shù)牟婚g斷。在傳輸數(shù)據(jù)時(shí),當(dāng)傳輸?shù)竭@一個(gè)緩存的尾部,通過 DMA自動返回緩存的起始空間。
下面結(jié)合附圖對本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)說明。
<第一實(shí)施例>
參考圖2和圖3,圖2包括步驟在SDRAM中申請一個(gè)緩存;
將緩存分為至少兩個(gè)空間,并設(shè)置緩存的數(shù)據(jù)結(jié)構(gòu);
緩存的數(shù)據(jù)結(jié)構(gòu)包括緩存起始地址、長度、分段方案等,分段方案可以 根據(jù)緩存長度等分或不等分。本實(shí)施例中,假設(shè)申請了 1536k的緩存,并將其 等分為3個(gè)512k的空間,分別為空間1 3。
設(shè)置好緩存數(shù)據(jù)結(jié)構(gòu)之后,CPU根據(jù)緩存起始地址把硬盤等存儲設(shè)備中 的部分?jǐn)?shù)據(jù)寫滿緩存,并判斷是否已將所有數(shù)據(jù)寫入緩存,如果是,則DMA 將寫入緩存的數(shù)據(jù)寫入音頻設(shè)備中,如果不是,則在DMA開始從緩存向音頻 設(shè)備寫入數(shù)據(jù)后,判斷緩存的當(dāng)前空間的音頻數(shù)據(jù)是否傳輸完畢,如果傳輸完 畢,則DMA向軟件發(fā)出中斷,且DMA繼續(xù)從下一個(gè)空間向音頻設(shè)備寫入音 頻數(shù)據(jù)。DMA中包括FIFO存儲器。實(shí)際上,判斷是否將所有數(shù)據(jù)寫入緩存 的步驟和DMA向音頻設(shè)備寫入音頻數(shù)據(jù)的步驟是同時(shí)進(jìn)行的,不分先后。
軟件得到中斷后,使CPU向空閑的空間中繼續(xù)填充音頻數(shù)據(jù)。并且,每 次從空間向音頻設(shè)備傳輸數(shù)據(jù)時(shí),都要判斷當(dāng)前地址是否已超出整個(gè)緩存空 間,如果超出,則自動返回起始地址,并判斷是否已將所有數(shù)據(jù)寫入緩存,重 復(fù)上述過程。
下面以將緩存分為3個(gè)空間為例,說明判斷出沒有將所有數(shù)據(jù)寫入緩存之 后的具體過程。在判斷出沒有將所有數(shù)據(jù)寫入緩存之后,DMA利用FIFO存 儲器進(jìn)行緩存,首先讀取空間1中的數(shù)據(jù)并傳輸?shù)揭纛l設(shè)備中,DMA每傳輸 一個(gè)字節(jié)的數(shù)據(jù),系統(tǒng)內(nèi)部的計(jì)數(shù)器就加l,同時(shí)將當(dāng)前地址也加l。這里是 以每次傳輸一個(gè)字節(jié)為例進(jìn)行的說明,當(dāng)然,DMA每次傳輸?shù)臄?shù)據(jù)長度可以 根據(jù)需要來設(shè)定。這樣,DMA每傳輸一次數(shù)據(jù),就將當(dāng)前地址地址設(shè)置為上 次地址加本次傳輸?shù)臄?shù)據(jù)長度,并判斷當(dāng)前地址是否超出本次所讀空間,如果超出,DMA就會向軟件發(fā)出中斷。
本實(shí)施例中,如果起始地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間1,就表示 空間1中的數(shù)據(jù)都已經(jīng)傳輸?shù)揭纛l設(shè)備中,軟件收到中斷后,控制CPU繼續(xù) 向空間1中寫入音頻數(shù)據(jù),而DMA繼續(xù)讀取空間2中的數(shù)據(jù)并向音頻設(shè)備傳 輸。
當(dāng)空間1的末地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間2時(shí),表示空間2的 數(shù)據(jù)傳輸完畢,DMA向軟件發(fā)出中斷,軟件收到中斷后,控制CPU繼續(xù)向空 間2寫入音頻數(shù)據(jù),而DMA繼續(xù)讀取空間3中的數(shù)據(jù)并傳輸?shù)揭纛l設(shè)備中。
當(dāng)空間2的末地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間3,且已超出了整個(gè) 緩存時(shí),表示空間3的數(shù)據(jù)傳輸完畢,DMA向軟件發(fā)出中斷,軟件收到中斷 后,控制CPU繼續(xù)向空間3寫入音頻數(shù)據(jù),而DMA自動返回起始地址繼續(xù) 讀取空間1中的數(shù)據(jù)并傳輸?shù)揭纛l設(shè)備中。每次CPU向空間寫入數(shù)據(jù)后,都 要判斷當(dāng)前地址是否已超出整個(gè)緩存空間,如果超出,則CPU自動返回起始 地址,重復(fù)上述過程,直到所有音頻數(shù)據(jù)都傳輸?shù)揭纛l設(shè)備播力文為止。
音頻數(shù)據(jù)的錄音過程與上述播放過程正好相反,本實(shí)施例的錄音模型參考 圖4。在申請一個(gè)緩存并設(shè)置好緩存的數(shù)據(jù)結(jié)構(gòu)之后,由DMA利用FIFO將 音頻數(shù)據(jù)寫入緩存中,并判斷是否已將所有音頻數(shù)據(jù)都寫入了緩存,如果是, 則由CPU將音頻數(shù)據(jù)從緩存?zhèn)鬏數(shù)酱鎯ζ髦?。如果不是,則按照以下步驟由 CPU傳輸完本次寫入到空間1的數(shù)據(jù),同時(shí),DMA將音頻數(shù)據(jù)寫入緩存。
CPU首先把空間1中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦?,CPU每傳輸一個(gè)字節(jié)的數(shù) 據(jù),系統(tǒng)內(nèi)部的計(jì)數(shù)器就加l,同時(shí)將當(dāng)前地址也加l。這里是以每次傳輸一 個(gè)字節(jié)為例進(jìn)行的說明,當(dāng)然,CPU每次傳輸?shù)臄?shù)據(jù)長度可以根據(jù)需要來設(shè) 定。這樣,CPU每傳輸一次數(shù)據(jù),就將當(dāng)前地址地址設(shè)置為上次地址加本次 傳輸?shù)臄?shù)據(jù)長度,并判斷當(dāng)前地址是否超出本次所讀空間,如果超出,CPU 就向軟件發(fā)出中斷。
本實(shí)施例中,如果起始地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間1,就表示 空間1中的數(shù)據(jù)都已經(jīng)傳輸?shù)酱鎯ζ髦?,CPU向軟件發(fā)出中斷,軟件收到中 斷后,控制DMA向空間1中寫入音頻數(shù)據(jù),而CPU將空間2中的數(shù)據(jù)向存 儲器傳輸。當(dāng)空間1的末地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間2時(shí),表示空間2的 數(shù)據(jù)傳輸完畢,CPU向軟件發(fā)出中斷,向空間2寫入音頻數(shù)據(jù),而CPU將空 間3中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦小?br> 當(dāng)空間2的末地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間3,且已超出了整個(gè) 緩存時(shí),表示空間3的數(shù)據(jù)傳輸完畢,CPU向軟件發(fā)出中斷,軟件收到中斷 后,控制DMA向空間3寫入音頻數(shù)據(jù),而CPU返回起始地址將空間1中的 數(shù)據(jù)傳輸?shù)酱鎯ζ髦?。每次DMA向空間寫入數(shù)據(jù)后,都要判斷當(dāng)前地址是否 已超出整個(gè)緩存空間,如果超出,則DMA自動返回起始地址,重復(fù)上述過程, 直到所有音頻數(shù)據(jù)都存儲到存儲器為止。
<第二實(shí)施例>
本實(shí)施例的播放過程與第一實(shí)施例的區(qū)別在于,本實(shí)施例在播放時(shí),首先 只向空間l寫入音頻數(shù)據(jù),然后將空間1中的音頻數(shù)據(jù)寫入到音頻設(shè)備的同時(shí), 向空間2傳輸存儲的音頻數(shù)據(jù)。然后將空間2中的音頻數(shù)據(jù)寫入音頻設(shè)備,在 將空間2的音頻數(shù)據(jù)寫入音頻設(shè)備的同時(shí),向空間3繼續(xù)傳輸音頻數(shù)據(jù),如此 循環(huán),直到所有存儲的音頻數(shù)據(jù)都寫入音頻設(shè)備為止。具體包括步驟參考圖5 所示,包括
在SDRAM中申請一個(gè)緩存;
將緩存分為至少兩個(gè)空間,并設(shè)置緩存的數(shù)據(jù)結(jié)構(gòu);
緩存的數(shù)據(jù)結(jié)構(gòu)包括緩存起始地址、長度、分段方案等,分段方案可以 根據(jù)緩存長度等分或不等分。
CPU把存儲設(shè)備中的部分?jǐn)?shù)據(jù)寫入緩存起始空間,并判斷是否已將所有 數(shù)據(jù)寫入緩存,如果是,則由DMA繼續(xù)向音頻設(shè)備寫入音頻數(shù)據(jù)。DMA中 包括FIFO存儲器。
同時(shí),DMA開始讀取起始空間的音頻數(shù)據(jù)并寫入音頻設(shè)備;在DMA讀 取起始空間的音頻設(shè)備的同時(shí),CPU向下 一 空間填充音頻數(shù)據(jù);
DMA讀取下一空間的音頻數(shù)據(jù)并傳輸?shù)揭纛l設(shè)備,同時(shí),判斷所讀空間 的音頻數(shù)據(jù)是否已向音頻設(shè)備傳輸完畢,如果沒有,則繼續(xù)傳輸;如果完畢, 則DMA向軟件發(fā)出中斷,軟件收到中斷后,控制CPU向空的空間依次填充 音頻數(shù)據(jù);DMA讀取數(shù)據(jù)的同時(shí),判斷讀取空間是否已超出了整個(gè)緩存,如果超出, 則返回起始空間,并重新判斷是否已將所有數(shù)據(jù)寫入緩存,重復(fù)上述過程。
下面以一個(gè)例子對上述過程詳細(xì)說明。本實(shí)施例中,假設(shè)申請了 1536k的 緩存,并將其等分為3個(gè)512k的空間,分別為空間1 3。
申請完緩存并設(shè)置好緩存數(shù)據(jù)結(jié)構(gòu)之后,CPU根據(jù)緩存地址把硬盤等存 儲設(shè)備中的數(shù)據(jù)寫入空間1,并判斷是否已將所有數(shù)據(jù)寫入空間1,如果是, 則DMA將寫入空間1的數(shù)據(jù)寫入音頻設(shè)備中,如果不是,則按照以下步驟由 DMA處理完本次寫入到空間1的數(shù)據(jù)后,CPU繼續(xù)將數(shù)據(jù)寫入到空的緩存空 間中。
軟件啟動DMA開始播放,DMA利用FIFO首先把空間1中的數(shù)據(jù)傳輸?shù)?音頻設(shè)備中,DMA每傳輸一個(gè)字節(jié)的數(shù)據(jù),系統(tǒng)內(nèi)部的計(jì)數(shù)器就加1,同時(shí) 將當(dāng)前地址也加l。這里是以每次傳輸一個(gè)字節(jié)為例進(jìn)行的說明,當(dāng)然,DMA 每次傳輸?shù)臄?shù)據(jù)長度可以根據(jù)需要來設(shè)定。這樣,DMA每傳輸一次數(shù)據(jù),就 將當(dāng)前地址地址設(shè)置為上次地址加本次傳輸?shù)臄?shù)據(jù)長度,并判斷當(dāng)前地址是否 超出本次所讀空間,如果超出,DMA就向軟件發(fā)出中斷。
在DMA將空間1的數(shù)據(jù)傳輸?shù)揭纛l設(shè)備的同時(shí),CPU繼續(xù)向空間2中寫 入數(shù)據(jù)。如果緩存的首地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間1,就表示空間 1中的數(shù)據(jù)都已經(jīng)傳輸?shù)揭纛l設(shè)備中,此時(shí),DMA向軟件發(fā)出中斷,軟件收 到中斷后,控制CPU向空間3中寫入數(shù)據(jù)。
然后,DMA讀取空間2的數(shù)據(jù)并向音頻設(shè)備傳輸,如果空間l的末地址 加本次傳輸?shù)臄?shù)據(jù)長度超出了空間2,就表示空間2中的數(shù)據(jù)都已經(jīng)傳輸?shù)揭?頻設(shè)備中,DMA向軟件發(fā)出中斷,軟件收到中斷后,控制CPU返回起始地址, 向空間1中繼續(xù)寫入音頻數(shù)據(jù),而DMA讀取空間3中的數(shù)據(jù)并向音頻設(shè)M 輸。每次DMA從空間向音頻設(shè)備傳輸數(shù)據(jù)時(shí),都要判斷當(dāng)前地址是否已超出 整個(gè)緩存空間,如果超出,則DMA自動返回起始地址,重復(fù)上述過程,直到 所有音頻數(shù)據(jù)都傳輸?shù)揭纛l設(shè)備播放為止。
錄音的過程與上述播放過程正好相反,申請完緩存并設(shè)置好緩存數(shù)據(jù)結(jié)構(gòu) 之后,DMA根據(jù)緩存地址向空間1寫入音頻數(shù)據(jù),并判斷是否已將所有音頻 數(shù)據(jù)寫入空間1,如果是,則CPU將寫入空間1的數(shù)據(jù)寫入存儲器中,如果不是,則按照以下步驟由CPU處理完本次寫入到空間1的數(shù)據(jù)后,DMA繼續(xù) 將數(shù)據(jù)寫入到空的緩存空間中。
CPU首先把空間1中的數(shù)據(jù)傳輸?shù)酱鎯ζ髦?,每傳輸一個(gè)字節(jié)的數(shù)據(jù), 系統(tǒng)內(nèi)部的計(jì)數(shù)器就加l,同時(shí)將當(dāng)前地址也加l。這里是以每次傳輸一個(gè)字 節(jié)為例進(jìn)行的說明,當(dāng)然,CPU每次傳輸?shù)臄?shù)據(jù)長度可以根據(jù)需要來設(shè)定。 這樣,CPU每傳輸一次數(shù)據(jù),就將當(dāng)前地址地址設(shè)置為上次地址加本次傳輸 的數(shù)據(jù)長度,并判斷當(dāng)前地址是否超出本次所讀空間,如果超出,CPU就向 軟件發(fā)出中斷。
在CPU將空間1的數(shù)據(jù)傳輸?shù)揭纛l設(shè)備的同時(shí),DMA向空間2中寫入數(shù) 據(jù)。如果緩存的首地址加本次傳輸?shù)臄?shù)據(jù)長度超出了空間1,就表示空間1中 的數(shù)據(jù)都已經(jīng)傳輸?shù)揭纛l設(shè)備中,此時(shí),CPU向軟件發(fā)出中斷,軟件收到中 斷后,控制DMA繼續(xù)向空間3中寫入數(shù)據(jù)。
然后,CPU讀取空間2的數(shù)據(jù)并向音頻設(shè)備傳輸,如果空間1的末地址 加本次傳輸?shù)臄?shù)據(jù)長度超出了空間2,就表示空間2中的數(shù)據(jù)都已經(jīng)傳輸?shù)揭?頻設(shè)備中,CPU向軟件發(fā)出中斷,軟件收到中斷后,控制DMA返回起始地址, 向空間1中繼續(xù)寫入音頻數(shù)據(jù),而CPU讀取空間3中的數(shù)據(jù)并向音頻設(shè)備傳 輸。每次CPU從空間向音頻設(shè)備傳輸數(shù)據(jù)時(shí),都要判斷當(dāng)前地址是否已超出 整個(gè)緩存空間,如果超出,則CPU自動返回起始地址,重復(fù)上述過程,直到 所有音頻數(shù)據(jù)都傳輸?shù)酱鎯ζ鳛橹埂?br> 上文中的兩個(gè)實(shí)施例中都將緩存分為長度相等的空間,當(dāng)然也可以分為長 度不等的空間,同時(shí),劃分的空間個(gè)數(shù)也不限于3個(gè),也可以是兩個(gè)或更多, 但至少要分成2個(gè)。而申請的緩存的大小要根據(jù)實(shí)際需要申請。
本發(fā)明的音頻系統(tǒng)結(jié)構(gòu)框圖參考圖6所示,包括
申請模塊,用于向SDRAM申請一個(gè)緩存,對音頻設(shè)備進(jìn)行音頻數(shù)據(jù)傳輸; 分段模塊,用于將緩存分為至少兩個(gè)空間; 預(yù)寫模塊,用于向緩存預(yù)先寫入來自源設(shè)備的音頻數(shù)據(jù); 第一處理^t塊,用于向緩存的至少兩個(gè)空間中具有空閑的一個(gè)第一空間寫 入剩余的音頻數(shù)據(jù);
第二處理模塊,用于按照音頻數(shù)據(jù)被寫入的順序,從一個(gè)第二空間讀取被寫入的數(shù)據(jù),并發(fā)送到目標(biāo)設(shè)備;
第二空間為至少兩個(gè)空間中與第一空間不同的空間。
源設(shè)備或目標(biāo)設(shè)備都可以為音頻設(shè)備,當(dāng)目標(biāo)設(shè)備為音頻設(shè)備時(shí),第一處 理模塊為處理器,第二處理模塊為DMA模塊;當(dāng)源設(shè)備為音頻設(shè)備時(shí),第一 處理模塊為DMA模塊,第二處理模塊為處理器。FIFO存儲器設(shè)置在DMA模 塊中,緩存和音頻設(shè)備之間的數(shù)據(jù)傳輸通過FIFO存儲器實(shí)現(xiàn)。
申請模塊和分段模塊都可以通過軟件的功能實(shí)現(xiàn),而預(yù)寫模塊也可以由 CPU或DMA實(shí)現(xiàn),DMA和CPU的具體工作過程在上文中的具體實(shí)施例中已 作了詳細(xì)的說明,不再贅述。當(dāng)然,除了上述的實(shí)施方式,其他的利用一個(gè)緩 存來實(shí)現(xiàn)4番放和錄音的方法也在本發(fā)明的保護(hù)范圍內(nèi)。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通 技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以作出若干改進(jìn)和潤飾, 這些改進(jìn)和潤飾也應(yīng)^L為本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種音頻數(shù)據(jù)傳輸方法,其特征在于,所述方法用于利用預(yù)先申請的一個(gè)緩存對音頻設(shè)備進(jìn)行音頻數(shù)據(jù)傳輸,所述緩存分為至少兩個(gè)空間,所述方法包括數(shù)據(jù)預(yù)寫步驟和在同一時(shí)刻執(zhí)行的寫數(shù)據(jù)步驟和讀數(shù)據(jù)步驟,其中所述數(shù)據(jù)預(yù)寫步驟中,預(yù)寫模塊向所述緩存預(yù)先寫入來自源設(shè)備的音頻數(shù)據(jù);所述寫數(shù)據(jù)步驟中,第一處理模塊向所述緩存的至少兩個(gè)空間中具有空閑的一個(gè)第一空間寫入剩余的音頻數(shù)據(jù);所述讀數(shù)據(jù)步驟中,按照所述音頻數(shù)據(jù)被寫入的順序,第二處理模塊從一個(gè)第二空間讀取被寫入的數(shù)據(jù),并發(fā)送到目標(biāo)設(shè)備,所述第二空間為所述至少兩個(gè)空間中與所述第一空間不同的空間;所述源設(shè)備或目標(biāo)設(shè)備為所述音頻設(shè)備,所述緩存和所述音頻設(shè)備之間的數(shù)據(jù)傳輸通過先進(jìn)先出的方式進(jìn)行。
2. 如權(quán)利要求1所述的音頻數(shù)據(jù)傳輸方法,其特征在于,當(dāng)所述目標(biāo)設(shè) 備為所述音頻設(shè)備時(shí),所述第一處理模塊為處理器,所述第二處理模塊為存儲 器直接訪問模塊;當(dāng)所述源設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為存儲器直接訪問模 塊,所述第二處理模塊為處理器。
3. 如權(quán)利要求1所述的音頻數(shù)據(jù)傳輸方法,其特征在于,當(dāng)所述第二處 理模塊從所述第二空間讀取完所述被寫入的數(shù)據(jù)后,以中斷的方式通知所述第 一處理模塊所述第二空間為空。
4. 如權(quán)利要求1所述的音頻數(shù)據(jù)傳輸方法,其特征在于,當(dāng)所述第二處 理模塊讀取的空間超出所述緩存時(shí),所述第二處理模塊自動返回所述緩存的起 始空間,從所述起始空間開始,按照所述音頻數(shù)據(jù)被寫入的順序進(jìn)行讀取操作。
5. 如權(quán)利要求1所述的音頻數(shù)據(jù)傳輸方法,其特征在于,當(dāng)所述第一處 理模塊寫入的空間超出所述緩存時(shí),所述第一處理模塊自動返回所述緩存的起始空間,從所述起始空間開始進(jìn)行寫入操作。
6. —種音頻數(shù)據(jù)傳輸設(shè)備,其特征在于,包括申請模塊,用于向同步動態(tài)隨機(jī)存取存儲器申請一個(gè)緩存,對音頻設(shè)備進(jìn)行音頻數(shù)據(jù)傳輸;分段模塊,用于將所述緩存分為至少兩個(gè)空間;預(yù)寫模塊,用于向所述緩存預(yù)先寫入來自源設(shè)備的音頻數(shù)據(jù);第一處理才莫塊,用于向所述緩存的至少兩個(gè)空間中具有空閑的一個(gè)第一空間寫入剩余的音頻數(shù)據(jù);第二處理模塊,用于按照所述音頻數(shù)據(jù)被寫入的順序,從一個(gè)第二空間讀取被寫入的數(shù)據(jù),并發(fā)送到目標(biāo)設(shè)備,所述第二空間為所述至少兩個(gè)空間中與所述第一空間不同的空間;所述源設(shè)備或目標(biāo)設(shè)備為所述音頻設(shè)備時(shí),所述緩存和所述音頻設(shè)備之間的數(shù)據(jù)傳輸通過先進(jìn)先出存儲器實(shí)現(xiàn)。
7.如權(quán)利要求6所述的音頻數(shù)據(jù)傳輸設(shè)備,其特征在于,當(dāng)所述目標(biāo)設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為處理器,所述第二處理模塊為存儲器直接訪問模塊;當(dāng)所述源設(shè)備為所述音頻設(shè)備時(shí),所述第一處理模塊為存儲器直接訪問模 塊,所述第二處理^t塊為處理器;所述先進(jìn)先出存儲器設(shè)置在所述存儲器直接訪問模塊中。
全文摘要
本發(fā)明提供了一種音頻數(shù)據(jù)傳輸方法及設(shè)備,其中的傳輸方法用于利用預(yù)先申請的一個(gè)緩存對音頻設(shè)備進(jìn)行音頻數(shù)據(jù)傳輸,緩存分為至少兩個(gè)空間,所述方法包括數(shù)據(jù)預(yù)寫步驟和在同一時(shí)刻執(zhí)行的寫數(shù)據(jù)步驟和讀數(shù)據(jù)步驟,數(shù)據(jù)預(yù)寫步驟中,向緩存預(yù)先寫入來自源設(shè)備的音頻數(shù)據(jù);寫數(shù)據(jù)步驟中,向緩存的至少兩個(gè)空間中具有空閑的一個(gè)第一空間寫入剩余的音頻數(shù)據(jù);讀數(shù)據(jù)步驟中,按照音頻數(shù)據(jù)被寫入的順序,從一個(gè)第二空間讀取被寫入的數(shù)據(jù),并發(fā)送到目標(biāo)設(shè)備。本發(fā)明只申請了一個(gè)緩存,根據(jù)需要將緩存分成幾個(gè)空間,增加了處理數(shù)據(jù)的靈活性,并將現(xiàn)有的放在外接設(shè)備的SRAM中的FIFO存儲器放在了DMA內(nèi)部,節(jié)省了外接音頻設(shè)備內(nèi)部芯片的SRAM。
文檔編號G06F13/28GK101446932SQ20081024085
公開日2009年6月3日 申請日期2008年12月24日 優(yōu)先權(quán)日2008年12月24日
發(fā)明者國 艾 申請人:北京中星微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1