數(shù)據(jù)實(shí)時(shí)傳輸方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及媒體信息處理傳輸技術(shù),特別涉及一種數(shù)據(jù)實(shí)時(shí)傳輸方法。
【背景技術(shù)】
[0002] 音頻處理技術(shù)和傳感器技術(shù)的迅速發(fā)展使多路化、高清化成為音頻應(yīng)用發(fā)展的一 種趨勢(shì)。語(yǔ)音數(shù)據(jù)量的激增不僅給處理平臺(tái)的計(jì)算能力帶來(lái)了嚴(yán)峻挑戰(zhàn),同時(shí)也給語(yǔ)音處 理架構(gòu)中芯片間數(shù)據(jù)的高速傳輸造成了極大困難。因此,在語(yǔ)音處理架構(gòu)中解決芯片間語(yǔ) 音數(shù)據(jù)的實(shí)時(shí)傳輸問題至關(guān)重要?,F(xiàn)有方法缺乏針對(duì)語(yǔ)音數(shù)據(jù)和異構(gòu)處理器結(jié)構(gòu)特點(diǎn)的考 慮,難以滿足語(yǔ)音處理架構(gòu)中音頻的實(shí)時(shí)傳輸和處理需求。而且現(xiàn)有系統(tǒng)大多偏重于功能 的實(shí)現(xiàn),硬件資源的開銷較大。
【發(fā)明內(nèi)容】
[0003] 為解決上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明提出了一種數(shù)據(jù)實(shí)時(shí)傳輸方法,包括:
[0004] 在協(xié)處理器中對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行采集和預(yù)處理,然后通過高速PCI接口將預(yù)處理后 的語(yǔ)音數(shù)據(jù)打包并傳輸至核心處理器。
[0005] 優(yōu)選地,所述在協(xié)處理器中對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行采集和預(yù)處理,進(jìn)一步包括:
[0006] 將語(yǔ)音數(shù)據(jù)頻段的進(jìn)行分離,在分離過程中同時(shí)完成音頻格式轉(zhuǎn)換;為協(xié)處理器 與核心處理器上的收發(fā)緩沖隊(duì)列各自分配多個(gè)音頻緩沖隊(duì)列,預(yù)定義核心處理器的目標(biāo)數(shù) 據(jù)存儲(chǔ)地址,對(duì)分離后的語(yǔ)音頻段進(jìn)行打包傳輸;在高速PCI數(shù)據(jù)傳輸過程中,發(fā)送方的請(qǐng) 求端口組建請(qǐng)求數(shù)據(jù)包,數(shù)據(jù)包經(jīng)過高速PCI鏈路發(fā)送到目標(biāo)方請(qǐng)求端口進(jìn)行解析,目標(biāo)方 用戶控制目標(biāo)響應(yīng)端口組建響應(yīng)數(shù)據(jù)包,數(shù)據(jù)包經(jīng)過高速PCI鏈路發(fā)送回發(fā)送方響應(yīng)端口 解析;
[0007] 所述將預(yù)處理后的語(yǔ)音數(shù)據(jù)打包并傳輸至核心處理器,進(jìn)一步包括:
[0008] 在傳輸過程中,采用流媒體寫操作實(shí)現(xiàn)處理器寫入操作,為每個(gè)流媒體寫操作數(shù) 據(jù)包設(shè)置特定地址和數(shù)據(jù)長(zhǎng)度,語(yǔ)音數(shù)據(jù)以段為單位進(jìn)行循環(huán)發(fā)送;采用由協(xié)處理器發(fā)送 讀操作請(qǐng)求方式讀取核心處理器處理后的語(yǔ)音數(shù)據(jù),核心處理器僅對(duì)讀操作請(qǐng)求進(jìn)行讀取 響應(yīng),將語(yǔ)音頻段數(shù)據(jù)劃分為多個(gè)讀操作數(shù)據(jù)包,由段基地址、頻段偏移量和段偏移量計(jì)算 獲得數(shù)據(jù)包存儲(chǔ)地址;
[0009] 在語(yǔ)音數(shù)據(jù)由協(xié)處理器寫入核心處理器過程中,協(xié)處理器作為發(fā)送方,將模數(shù)轉(zhuǎn) 換后的數(shù)字音頻通過寫入核心處理器對(duì)應(yīng)的片外存儲(chǔ)區(qū),在寫入片外存儲(chǔ)區(qū)時(shí),禁止核心 處理器對(duì)該存儲(chǔ)區(qū)進(jìn)行操作;當(dāng)協(xié)處理器寫完一段數(shù)據(jù)之后,發(fā)送一個(gè)應(yīng)答操作,通知核心 處理器可以對(duì)該段數(shù)據(jù)進(jìn)行處理,保證協(xié)處理器與核心處理器之間的同步;核心處理器的 緩沖隊(duì)列循環(huán)對(duì)數(shù)據(jù)段進(jìn)行處理;
[0010] 在語(yǔ)音數(shù)據(jù)由核心處理器寫入?yún)f(xié)處理器的過程中,每當(dāng)核心處理器處理完一段音 頻之后,發(fā)送應(yīng)答操作通知協(xié)處理器可以進(jìn)行數(shù)據(jù)讀取;協(xié)處理器接收到該同步信號(hào)之后, 作為發(fā)送方,將核心處理器處理后的語(yǔ)音數(shù)據(jù)通過讀操作讀入?yún)f(xié)處理器的緩沖隊(duì)列中;在 核心處理器處理完兩段數(shù)據(jù)后向協(xié)處理器發(fā)送應(yīng)答,使其進(jìn)行讀操作;在讀的過程中,協(xié)處 理器維護(hù)自己的緩沖隊(duì)列;在讀寫功能的實(shí)現(xiàn)中,以讀優(yōu)先的方式進(jìn)行操作,設(shè)置當(dāng)緩沖隊(duì) 列中的數(shù)據(jù)小于預(yù)設(shè)字節(jié)數(shù)時(shí)進(jìn)行讀操作,否則進(jìn)行寫操作,并在讀數(shù)據(jù)的過程中,不能進(jìn) 行寫操作;具體控制過程包括:
[0011] (1)當(dāng)緩沖隊(duì)列中數(shù)據(jù)不少于一段且此時(shí)沒有讀請(qǐng)求時(shí),發(fā)送數(shù)據(jù),即完成一次流 媒體寫操作;
[0012] (2)在協(xié)處理器向核心處理器發(fā)送數(shù)據(jù)時(shí),當(dāng)完成一段數(shù)據(jù)的傳輸且此時(shí)沒有讀 請(qǐng)求時(shí),通過發(fā)送應(yīng)答操作通知核心處理器處理接收到的當(dāng)前段數(shù)據(jù);在協(xié)處理器從核心 處理器讀取數(shù)據(jù)過程中,當(dāng)核心處理器處理完兩段語(yǔ)音數(shù)據(jù)時(shí)發(fā)送應(yīng)答操作通知協(xié)處理器 讀取第一段數(shù)據(jù);
[0013] (3)以協(xié)處理器接收緩沖隊(duì)列中數(shù)據(jù)量和核心處理器發(fā)送給協(xié)處理器的應(yīng)答操作 為觸發(fā)條件,當(dāng)緩沖隊(duì)列中有多于一段的剩余空間即組建讀操作完成一段語(yǔ)音數(shù)據(jù)的讀 取。
[0014] 本發(fā)明相比現(xiàn)有技術(shù),具有以下優(yōu)點(diǎn):
[0015] 本發(fā)明提出了一種數(shù)據(jù)實(shí)時(shí)傳輸方法,節(jié)約了芯片間的大量語(yǔ)音數(shù)據(jù)的傳輸開 銷,減少了內(nèi)存資源占用,降低了軟硬件設(shè)計(jì)的難度。
【附圖說(shuō)明】
[0016] 圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)實(shí)時(shí)傳輸方法的流程圖。
【具體實(shí)施方式】
[0017] 下文與圖示本發(fā)明原理的附圖一起提供對(duì)本發(fā)明一個(gè)或者多個(gè)實(shí)施例的詳細(xì)描 述。結(jié)合這樣的實(shí)施例描述本發(fā)明,但是本發(fā)明不限于任何實(shí)施例。本發(fā)明的范圍僅由權(quán)利 要求書限定,并且本發(fā)明涵蓋諸多替代、修改和等同物。在下文描述中闡述諸多具體細(xì)節(jié)以 便提供對(duì)本發(fā)明的透徹理解。出于示例的目的而提供這些細(xì)節(jié),并且無(wú)這些具體細(xì)節(jié)中的 一些或者所有細(xì)節(jié)也可以根據(jù)權(quán)利要求書實(shí)現(xiàn)本發(fā)明。
[0018] 本發(fā)明的一方面提供了一種數(shù)據(jù)實(shí)時(shí)傳輸方法。圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù) 實(shí)時(shí)傳輸方法流程圖。
[0019] 本發(fā)明提出了一種基于高速PCI的數(shù)據(jù)實(shí)時(shí)傳輸方法。該方法通過在協(xié)處理器上 采用語(yǔ)音頻段數(shù)據(jù)重構(gòu)方法并使用包頭信息較短的流媒體寫操作,簡(jiǎn)化語(yǔ)音傳輸格式,同 時(shí)提高了高速PCI上語(yǔ)音數(shù)據(jù)包的傳輸效率;在核心處理器上通過預(yù)定義目標(biāo)方數(shù)據(jù)存儲(chǔ) 單元和采用簡(jiǎn)潔的應(yīng)答機(jī)制,節(jié)約了核心處理器在傳輸過程中的時(shí)間開銷。減化了實(shí)現(xiàn)過 程的復(fù)雜度。并且在存儲(chǔ)過程中,采用音頻緩沖隊(duì)列取代資源占用率較高的RAM,因此系統(tǒng) 對(duì)協(xié)處理器內(nèi)存資源占用較少,無(wú)需外部存儲(chǔ)器,降低了軟硬件設(shè)計(jì)的難度。
[0020] 本發(fā)明的異構(gòu)語(yǔ)音處理架構(gòu)對(duì)處理任務(wù)進(jìn)行了劃分。其中,協(xié)處理器用于語(yǔ)音數(shù) 據(jù)的采集、格式轉(zhuǎn)換、預(yù)處理、數(shù)據(jù)傳輸和邏輯控制等任務(wù);核心處理器用于音頻的處理、分 析和編碼等核心工作。在存儲(chǔ)方面,協(xié)處理器采用以段為單位完成數(shù)據(jù)采集和預(yù)處理的方 法,其片上存儲(chǔ)資源可以滿足需求,避免了增加片外存儲(chǔ)器;而核心處理器在計(jì)算過程中需 要存取大量語(yǔ)音數(shù)據(jù)和中間處理結(jié)果,片內(nèi)存儲(chǔ)遠(yuǎn)無(wú)法滿足要求,因此為其設(shè)計(jì)了專門的 片外存儲(chǔ)區(qū)片外存儲(chǔ)器。
[0021] 針對(duì)語(yǔ)音數(shù)據(jù)在結(jié)構(gòu)上的規(guī)范性特點(diǎn)以及處理上的統(tǒng)一性要求,本發(fā)明為協(xié)處理 器與核心處理器上的收發(fā)緩沖隊(duì)列各自分配多個(gè)音頻緩沖隊(duì)列,以實(shí)現(xiàn)語(yǔ)音數(shù)據(jù)頻段的快 速分離,并為兩處理器上分類數(shù)據(jù)的高效整合提供了條件。首先,在分離過程中同時(shí)完成音 頻格式轉(zhuǎn)換;其次,在預(yù)定義核心處理器目標(biāo)方數(shù)據(jù)存儲(chǔ)地址后,對(duì)分離后的語(yǔ)音頻段進(jìn)行 打包傳輸,減少核心處理器計(jì)算數(shù)據(jù)存儲(chǔ)地址上的時(shí)間開銷。
[0022] 本發(fā)明對(duì)高速PCI的傳輸機(jī)制進(jìn)行了定制和優(yōu)化。在高速PCI操作選擇上,由于系 統(tǒng)中需要由協(xié)處理器讀取核心處理器處理后的語(yǔ)音數(shù)據(jù),因此選擇了常規(guī)的讀操作。在寫 操作中選擇流媒體寫操作。為簡(jiǎn)化高速PCI傳輸過程實(shí)現(xiàn)的復(fù)雜度,選用簡(jiǎn)潔的應(yīng)答操作用 于異構(gòu)處理器間的傳輸控制。
[0023] 發(fā)送方的請(qǐng)求是一次操作的開始,用戶控制發(fā)送方的請(qǐng)求端口組建請(qǐng)求數(shù)據(jù)包, 數(shù)據(jù)包經(jīng)過高速PCI鏈路發(fā)送到目標(biāo)方請(qǐng)求端口進(jìn)行解析,目標(biāo)方用戶控制目標(biāo)響應(yīng)端口 組建響應(yīng)數(shù)據(jù)包,數(shù)據(jù)包經(jīng)過高速PCI鏈路發(fā)送回發(fā)送方響應(yīng)端口解析。例如,在用戶A發(fā)送 高速PCI請(qǐng)求給用戶B時(shí),用戶B響應(yīng)用戶A的高速PCI請(qǐng)求時(shí),本發(fā)明的具體步驟如下:
[0024] (1)用戶程序A控制發(fā)送方的請(qǐng)求端口信號(hào),輸入請(qǐng)求數(shù)據(jù)包信息,如包類型等;
[0025] (2)程序A根據(jù)用戶輸入信息封裝為高速PCI數(shù)據(jù)包并發(fā)送到高速PCI鏈路;
[0026] (3)程序B收到請(qǐng)求數(shù)據(jù)包,解析后通過目標(biāo)方請(qǐng)求端口通知用戶程序B;
[0027] (4)用戶程序B根據(jù)請(qǐng)求,控制目標(biāo)方響應(yīng)端口組建響應(yīng)數(shù)據(jù)包,輸入響應(yīng)數(shù)據(jù);
[0028] (5)程序B封裝響應(yīng)數(shù)據(jù)為PCI響應(yīng)數(shù)據(jù)包并發(fā)送到高速PCI鏈路;
[0029] (6)程序A收到響應(yīng)數(shù)據(jù)包,解析后通過發(fā)送方響應(yīng)端口通知用戶程序A,用戶程序 A接收并處理響應(yīng)數(shù)據(jù)包。
[0030] 當(dāng)核心處理器處理完一段語(yǔ)音數(shù)據(jù)后,將處理后的語(yǔ)音數(shù)據(jù)轉(zhuǎn)移到核心處理器片 外存儲(chǔ)區(qū)的輸出緩沖隊(duì)列,在協(xié)處理器設(shè)計(jì)多個(gè)接收緩沖隊(duì)列與之對(duì)應(yīng)。當(dāng)核心處理器處 理完接收到的語(yǔ)音數(shù)據(jù)后,通過向協(xié)處理器發(fā)送應(yīng)答操作通知協(xié)處理器取回處理好的語(yǔ)音 數(shù)據(jù),最后由協(xié)處理器通過讀操作請(qǐng)求讀回處理后的語(yǔ)音數(shù)據(jù)。
[0031] 本發(fā)明以協(xié)處理器作為傳輸鏈路處理器,核心處理器作為語(yǔ)音數(shù)據(jù)處理核心,分 別設(shè)計(jì)協(xié)處理器和核心處理器高速PCI程序,其中,協(xié)處理器程序包括發(fā)送方請(qǐng)求和發(fā)送方 響應(yīng);核心處理器程序包括目標(biāo)方請(qǐng)求和目標(biāo)方響應(yīng)。為了實(shí)現(xiàn)高速PCI的實(shí)時(shí)傳輸,本發(fā) 明在協(xié)處理器首先對(duì)采集到的語(yǔ)音數(shù)據(jù)進(jìn)行發(fā)送前的重新組建。具體組建過程如下,協(xié)處 理器采集打包格式的語(yǔ)音數(shù)據(jù),為語(yǔ)音頻段設(shè)置各自音