本發(fā)明涉及無線通信技術(shù),尤其涉及一種語音同步的方法和裝置。
背景技術(shù):
在移動(dòng)通信系統(tǒng)中,為了保證網(wǎng)絡(luò)語音通信的正常進(jìn)行,本地時(shí)鐘和網(wǎng)絡(luò)時(shí)鐘之間保持同步,也就是需要終端UE的時(shí)間基準(zhǔn)和駐留小區(qū)的系統(tǒng)幀號(hào)(SFN,System Frame Number)保持同步。當(dāng)前對(duì)于實(shí)現(xiàn)本地時(shí)鐘和網(wǎng)絡(luò)時(shí)鐘的同步,通常通過軟件進(jìn)行實(shí)現(xiàn)時(shí)鐘同步。在軟件實(shí)現(xiàn)過程中,軟件運(yùn)行的環(huán)境因素容易影響軟件的同步處理過程,從而導(dǎo)致同步偏差,甚至出現(xiàn)失步的情況,同步處理的性能較低;并且軟件實(shí)現(xiàn)同步過程的處理速度也比較低。
語音同步方案適用于各種制式的無線通信系統(tǒng),如全球移動(dòng)通信系統(tǒng)(GSM,Global System for Mobile Communication)、寬帶碼分多址(WCDMA,Wideband Code Division Multiple Access,),碼分多址2000(CDMA2000,Code Division Multiple Access 2000),時(shí)分同步碼分多址(TD-SCDMA,Time Division-Synchronous Code Division Multiple Access)以及長期演進(jìn)(LTE,Long Term Evolution,)和長期演進(jìn)技術(shù)升級(jí)版(LTE-A,LTE-Advanced)等通信制式。本發(fā)明可以減少語音處理器響應(yīng)中斷的頻率,從而降低系統(tǒng)功耗,同時(shí)借助硬件支持,可以提供較高的語音同步精度,提高語音同步性能。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問題,本發(fā)明實(shí)施例期望提供一種語音同步的方法和裝置,能夠提高語音同步處理的性能及速率。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
第一方面,本發(fā)明實(shí)施例提供了語音同步的方法,該方法可以包括:
將集成電路內(nèi)置音頻I2S總線中的聲道指示信號(hào)作為時(shí)鐘同步信號(hào);
對(duì)物理層獲取的語音幀信號(hào)進(jìn)行采樣得到幀中斷信號(hào),并根據(jù)所述幀中斷信號(hào)及預(yù)設(shè)的參數(shù)生成第一中斷信號(hào);
通過兩個(gè)計(jì)數(shù)器分別按照預(yù)設(shè)的計(jì)數(shù)規(guī)則對(duì)所述時(shí)鐘同步信號(hào)的周期進(jìn)行計(jì)數(shù);其中,第一計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:按照第一預(yù)設(shè)數(shù)目對(duì)所述時(shí)鐘同步信號(hào)的周期進(jìn)行循環(huán)計(jì)數(shù),并且在所述第一中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新開始計(jì)數(shù);第二計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:在第二中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新計(jì)數(shù);
在所述第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí)生成所述第二中斷信號(hào),并記錄所述第二計(jì)數(shù)器當(dāng)前的第一計(jì)數(shù)數(shù)目,并且根據(jù)所述第一計(jì)數(shù)數(shù)目與第二計(jì)數(shù)數(shù)目之間的差值和預(yù)設(shè)的門限確定通過直接內(nèi)存訪問DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度;其中,所述第二計(jì)數(shù)數(shù)目為所述第二計(jì)數(shù)器在前一次第二中斷信號(hào)生成時(shí)所記錄的計(jì)數(shù)數(shù)目。
在上述方案中,所述對(duì)物理層獲取的語音幀信號(hào)進(jìn)行采樣得到幀中斷信號(hào),具體包括:
將所述時(shí)鐘同步信號(hào)作為兩級(jí)D觸發(fā)器的CP輸入信號(hào);
將所述語音幀信號(hào)作為第一級(jí)D觸發(fā)器的D輸入信號(hào);
將所述第一級(jí)D觸發(fā)器的輸出信號(hào)作為第二級(jí)D觸發(fā)器的D輸入信號(hào);
將所述第二級(jí)D觸發(fā)器的輸出信號(hào)的反向信號(hào)以及所述第一級(jí)D觸發(fā)器的輸出信號(hào)進(jìn)行邏輯與運(yùn)算,得到所述幀中斷信號(hào)。
在上述方案中,所述根據(jù)幀中斷信號(hào)及預(yù)設(shè)的參數(shù)生成第一中斷信號(hào),具體包括:
在第一使能信號(hào)為高時(shí),通過幀計(jì)數(shù)器對(duì)所述幀中斷信號(hào)進(jìn)行計(jì)數(shù);
所述幀計(jì)數(shù)器的計(jì)數(shù)達(dá)到傳輸時(shí)間間隔偏移TTI_OFFSET后清零;并以TTI_PERIOD為周期對(duì)所述幀中斷信號(hào)進(jìn)行循環(huán)計(jì)數(shù);
每當(dāng)所述幀計(jì)數(shù)器清零時(shí),所述第一中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘同步信號(hào)周期長度的脈沖。
在上述方案中,所述在第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí)生成第二中斷信號(hào),包括:
當(dāng)所述第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目達(dá)到所述第二預(yù)設(shè)數(shù)目時(shí),所述第二中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘同步信號(hào)周期長度的脈沖。
在上述方案中,所述根據(jù)所述第一計(jì)數(shù)數(shù)目與第二計(jì)數(shù)數(shù)目之間的差值和預(yù)設(shè)的門限確定通過直接內(nèi)存訪問DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度,包括:
將當(dāng)前的第一計(jì)數(shù)數(shù)目保存至第一變量sw_rt_sample_cnt_reg_cur;將所述第二中斷信號(hào)在上一次產(chǎn)生一個(gè)寬度為時(shí)鐘同步信號(hào)周期長度的脈沖時(shí)記錄的第二計(jì)數(shù)數(shù)目保存至第二變量sw_rt_sample_cnt_reg_last;
通過所述第一變量和所述第二變量的差值sw_rt_sample_cnt_reg_diff與預(yù)設(shè)的門限值進(jìn)行比較:
若所述差值sw_rt_sample_cnt_reg_diff大于所述預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160+sw_rt_sample_cnt_reg_diff;
若所述差值sw_rt_sample_cnt_reg_diff不大于所述預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160;
其中,所述差值sw_rt_sample_cnt_reg_diff通過下式計(jì)算獲得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last。
第二方面,本發(fā)明實(shí)施例提供了一種語音同步的裝置,該裝置包括:第一生成單元、采樣單元、第二生成單元、計(jì)數(shù)單元和確定單元,其中,
所述第一生成單元,用于將集成電路內(nèi)置音頻I2S總線中的聲道指示信號(hào)作為時(shí)鐘同步信號(hào);
所述采樣單元,用于對(duì)物理層獲取的語音幀信號(hào)進(jìn)行采樣得到幀中斷信號(hào);
所述第二生成單元,用于根據(jù)所述幀中斷信號(hào)及預(yù)設(shè)的參數(shù)生成第一中斷信號(hào);
所述計(jì)數(shù)單元,用于通過兩個(gè)計(jì)數(shù)器分別按照預(yù)設(shè)的計(jì)數(shù)規(guī)則對(duì)所述時(shí)鐘 同步信號(hào)的周期進(jìn)行計(jì)數(shù);其中,第一計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:按照第一預(yù)設(shè)數(shù)目對(duì)所述時(shí)鐘同步信號(hào)的周期進(jìn)行循環(huán)計(jì)數(shù),并且在所述第一中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新開始計(jì)數(shù);第二計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:在第二中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新計(jì)數(shù);
所述第二生成單元,還用于在所述第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí),生成所述第二中斷信號(hào);
所述確定單元,用于在所述第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí),記錄所述第二計(jì)數(shù)器當(dāng)前的第一計(jì)數(shù)數(shù)目,并且根據(jù)所述第一計(jì)數(shù)數(shù)目與第二計(jì)數(shù)數(shù)目之間的差值和預(yù)設(shè)的門限確定通過直接內(nèi)存訪問DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度;其中,所述第二計(jì)數(shù)數(shù)目為所述第二計(jì)數(shù)器在前一次第二中斷信號(hào)生成時(shí)所記錄的計(jì)數(shù)數(shù)目。
在上述方案中,所述采樣單元,包括兩級(jí)D觸發(fā)器和一個(gè)與門邏輯計(jì)算單元,其中,
將所述時(shí)鐘同步信號(hào)作為所述兩級(jí)D觸發(fā)器的CP輸入信號(hào);
將所述語音幀信號(hào)作為所述兩級(jí)D觸發(fā)器中第一級(jí)D觸發(fā)器的D輸入信號(hào);
將所述第一級(jí)D觸發(fā)器的輸出信號(hào)作為所述兩級(jí)D觸發(fā)器中第二級(jí)D觸發(fā)器的D輸入信號(hào);
將所述第二級(jí)D觸發(fā)器的輸出信號(hào)的反向信號(hào)以及所述第一級(jí)D觸發(fā)器的輸出信號(hào)作為所述與門邏輯計(jì)算單元的輸入信號(hào),則所述與門邏輯計(jì)算單元的輸出信號(hào)為所述幀中斷信號(hào)。
在上述方案中,所述第二生成單元,具體用于:
在第一使能信號(hào)為高時(shí),通過幀計(jì)數(shù)器對(duì)所述幀中斷信號(hào)進(jìn)行計(jì)數(shù);以及,
所述幀計(jì)數(shù)器的計(jì)數(shù)達(dá)到傳輸時(shí)間間隔偏移TTI_OFFSET后清零;并以TTI_PERIOD為周期對(duì)所述幀中斷信號(hào)進(jìn)行循環(huán)計(jì)數(shù);以及,
每當(dāng)所述幀計(jì)數(shù)器清零時(shí),所述第一中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘同步信號(hào)周期長度的脈沖。
在上述方案中,所述第二生成單元,具體用于:當(dāng)所述第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目達(dá)到所述第二預(yù)設(shè)數(shù)目時(shí),所述第二中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘同步信號(hào)周期長度的脈沖。
在上述方案中,所述確定單元,具體用于:
將當(dāng)前的第一計(jì)數(shù)數(shù)目保存至第一變量sw_rt_sample_cnt_reg_cur;將所述第二中斷信號(hào)在上一次產(chǎn)生一個(gè)寬度為時(shí)鐘同步信號(hào)周期長度的脈沖時(shí)記錄的第二計(jì)數(shù)數(shù)目保存至第二變量sw_rt_sample_cnt_reg_last;以及,
通過所述第一變量和所述第二變量的差值sw_rt_sample_cnt_reg_diff與預(yù)設(shè)的門限值進(jìn)行比較:
若所述差值sw_rt_sample_cnt_reg_diff大于所述預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160+sw_rt_sample_cnt_reg_diff;
若所述差值sw_rt_sample_cnt_reg_diff不大于所述預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160;
其中,所述差值sw_rt_sample_cnt_reg_diff通過下式計(jì)算獲得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last。
本發(fā)明實(shí)施例提供了一種語音同步的方法和裝置,結(jié)合了硬件與軟件兩個(gè)方面根據(jù)聲道指示信號(hào)和幀信號(hào)來產(chǎn)生相應(yīng)的中斷,并按照產(chǎn)生的中斷進(jìn)行同步,能夠提高語音同步處理的性能及速率。
附圖說明
圖1為本發(fā)明實(shí)施例提供的一種語音同步的方法流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種電路結(jié)構(gòu)圖;
圖3為本發(fā)明實(shí)施例提供的一種時(shí)序波形圖;
圖4為本發(fā)明實(shí)施例提供的另一種時(shí)序波形圖;
圖5為本發(fā)明實(shí)施例提供的又一種時(shí)序波形圖;
圖6為本發(fā)明實(shí)施例提供的再一種時(shí)序波形圖;
圖7為本發(fā)明實(shí)施例提供的一種語音同步的裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
參見圖1,其示出了本發(fā)明實(shí)施例提供的一種語音同步的方法,該方法可以包括:
S101:將集成電路內(nèi)置音頻(I2S,Inter—IC Sound)總線中的聲道指示信號(hào)作為時(shí)鐘同步信號(hào);
在本實(shí)施例中,可以從任意一路I2S中的聲道指示信號(hào)WS作為時(shí)鐘同步信號(hào),該時(shí)鐘同步信號(hào)用clk_voice_sync表示。
S102:對(duì)物理層獲取的語音幀信號(hào)進(jìn)行采樣得到幀中斷信號(hào);
可以理解的,由于通信制式的不同,可以在多模終端中根據(jù)不同通信制式的物理層協(xié)議的區(qū)別對(duì)各通信制式對(duì)應(yīng)的語音幀信號(hào)進(jìn)行采樣,從而能夠得到各通信制式所對(duì)應(yīng)的幀中斷信號(hào),在本實(shí)施例中,列舉而非限定的,不同的通信制式可以包括:GSM,WCDMA,CDMA2000/EVDO,TD-SCDMA以及LTE和LTE-A等。對(duì)應(yīng)這些不同的通信制式,幀中斷信號(hào)也各不相同,本實(shí)施例中的幀中斷信號(hào)用frame_int表示,語音幀信號(hào)可以用frame_int_4k表示。
另外,本發(fā)明實(shí)施例是對(duì)物理層獲取的語音幀信號(hào)進(jìn)行相應(yīng)的處理,因此,本發(fā)明實(shí)施例的過程可以在上行或下行幀處理時(shí)進(jìn)行實(shí)施,這樣從I2S接收的語音樣本就可以通過DMA進(jìn)行搬移,減少了內(nèi)核響應(yīng)中斷的次數(shù)也就減少了內(nèi)核負(fù)載??梢岳斫獾?,本實(shí)施例中的語音幀信號(hào)既可以是上行幀,也可以是下行幀,本發(fā)明實(shí)施例對(duì)此不做贅述。
示例性地,在本實(shí)施例中,對(duì)物理層獲取的語音幀信號(hào)進(jìn)行采樣得到幀中斷信號(hào),可以通過圖2所示的電路圖進(jìn)行表示,具體可以包括:
將時(shí)鐘同步信號(hào)clk_voice_sync作為兩級(jí)D觸發(fā)器的CP輸入信號(hào);
將語音幀信號(hào)frame_int_4k作為第一級(jí)D觸發(fā)器的D輸入信號(hào);
將第一級(jí)D觸發(fā)器輸出信號(hào)作為第二級(jí)D觸發(fā)器的D輸入信號(hào);
將第二級(jí)D觸發(fā)器輸出信號(hào)的反向信號(hào)以及第一級(jí)D觸發(fā)器輸出信號(hào)進(jìn)行邏輯與運(yùn)算,得到幀中斷信號(hào)frame_int。
S103:根據(jù)幀中斷信號(hào)及預(yù)設(shè)的參數(shù)生成第一中斷信號(hào);
示例性地,在本實(shí)施例中,第一中斷信號(hào)用voice_sync_int表示,該第一中斷信號(hào)是一種周期性脈沖中斷信號(hào),其脈沖寬度為一個(gè)clk_voice_sync周期,間隔為傳輸時(shí)間間隔(TTI_PERIOD,Transmission Time Interval period),比如,GSM模式下的TTI_PERIOD為60ms,LTE/WCDMA/TD-CDMA模式下的TTI_PERIOD為20ms。
具體地,如圖3所示的時(shí)序波形圖,根據(jù)幀中斷信號(hào)及預(yù)設(shè)的參數(shù)生成第一中斷信號(hào),包括:
在第一使能信號(hào)voice_sync_en為高時(shí),通過幀計(jì)數(shù)器nt_frm_cnt對(duì)幀中斷信號(hào)frame_int進(jìn)行計(jì)數(shù);具體地,每經(jīng)過一個(gè)幀中斷信號(hào)frame_int,幀計(jì)數(shù)器nt_frm_cnt加1;
幀計(jì)數(shù)器nt_frm_cnt的計(jì)數(shù)達(dá)到傳輸時(shí)間間隔偏移(TTI_OFFSET,Transmission Time Interval offset)后清零;并以TTI_PERIOD為周期對(duì)幀中斷信號(hào)frame_int進(jìn)行循環(huán)計(jì)數(shù);
第一中斷信號(hào)voice_sync_int在幀計(jì)數(shù)器nt_frm_cnt的計(jì)數(shù)達(dá)到TTI_OFFSET后產(chǎn)生第一個(gè)脈沖,然后以TTI_PERIOD為周期產(chǎn)生剩余的脈沖;也就是說,每當(dāng)幀計(jì)數(shù)器nt_frm_cnt清零時(shí),第一中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)clk_voice_sync周期長度的脈沖。
S104:通過兩個(gè)計(jì)數(shù)器分別按照預(yù)設(shè)的計(jì)數(shù)規(guī)則對(duì)時(shí)鐘同步信號(hào)的周期進(jìn)行計(jì)數(shù);其中,第一計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:按照第一預(yù)設(shè)數(shù)目對(duì)時(shí)鐘同步信號(hào)的周期進(jìn)行循環(huán)計(jì)數(shù),并且在第一中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新開始計(jì)數(shù);第二計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:在第二中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新計(jì)數(shù);
在本實(shí)施例中,第一預(yù)設(shè)數(shù)目用M表示,第一計(jì)數(shù)器可以用nt_sample_cnt表示,第二計(jì)數(shù)器可以用rt_sample_cnt表示。
對(duì)于第一計(jì)數(shù)器nt_sample_cnt來說,如圖4中的虛線對(duì)應(yīng)所示,當(dāng)nt_sample_cnt對(duì)時(shí)鐘同步信號(hào)的周期從0計(jì)數(shù)到M-1時(shí),nt_sample_cnt進(jìn)行清零并重新計(jì)數(shù);當(dāng)?shù)谝恢袛嘈盘?hào)voice_sync_int的生成時(shí)刻,nt_sample_cnt也進(jìn)行清零并重新計(jì)數(shù)。
而第二計(jì)數(shù)器rt_sample_cnt并不需要進(jìn)行循環(huán)計(jì)數(shù),清零僅與第二中斷信號(hào)voice_time_int的生成時(shí)刻有關(guān),因此,rt_sample_cnt擁有比nt_sample_cnt更多的自由度。如圖5所示,當(dāng)rt_sample_cnt計(jì)數(shù)到N時(shí),第二中斷信號(hào)voice_time_int生成,此時(shí)rt_sample_cnt清零并重新計(jì)數(shù);當(dāng)rt_sample_cnt計(jì)數(shù)到M時(shí),第二中斷信號(hào)voice_time_int生成,此時(shí)rt_sample_cnt清零并重新計(jì)數(shù)。
S105:在第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí)生成第二中斷信號(hào),并記錄第二計(jì)數(shù)器當(dāng)前的第一計(jì)數(shù)數(shù)目,并且根據(jù)第一計(jì)數(shù)數(shù)目與第二計(jì)數(shù)數(shù)目之間的差值和預(yù)設(shè)的門限確定通過直接內(nèi)存訪問(DMA,Direct Memory Access)進(jìn)行搬移的語音樣本的數(shù)據(jù)長度;
其中,第二計(jì)數(shù)數(shù)目為第二計(jì)數(shù)器在前一次第二中斷信號(hào)生成時(shí)所記錄的計(jì)數(shù)數(shù)目。
需要說明的是,上述S101至S104的過程可以通過硬件器件進(jìn)行完成;而本步驟則可以通過軟件來進(jìn)行實(shí)現(xiàn)。在本步驟中,如圖6所示,在圖6所示的時(shí)序波形圖中,當(dāng)?shù)谝挥?jì)數(shù)器nt_sample_cnt的計(jì)數(shù)數(shù)目達(dá)到第二預(yù)設(shè)數(shù)目A時(shí),第二中斷信號(hào)voice_time_int產(chǎn)生一個(gè)寬度為一個(gè)clk_voice_sync周期長度的脈沖。
可以理解的,本實(shí)施例中第二預(yù)設(shè)數(shù)目A可以設(shè)置為60,但由于時(shí)鐘偏差,第二預(yù)設(shè)數(shù)目A也不能選擇的太小,以防止在TTI語音幀的邊界產(chǎn)生中斷,通常第二預(yù)設(shè)數(shù)目A不小于10。第二預(yù)設(shè)數(shù)目的設(shè)置可以使得第二中斷信號(hào)在一個(gè)TTI_PERIOD內(nèi)最多能產(chǎn)生4個(gè)脈沖中斷,并且產(chǎn)生時(shí)刻均可配置,因此,以語音幀信號(hào)為例,從20ms響應(yīng)160次中斷減為1次,這樣極大的減少了處理器內(nèi)核的負(fù)載。
當(dāng)?shù)诙袛嘈盘?hào)產(chǎn)生一個(gè)寬度為一個(gè)clk_voice_sync周期長度的脈沖時(shí),不僅在硬件方面會(huì)引起第二計(jì)數(shù)器rt_sample_cnt清零并重新計(jì)數(shù)以外,還會(huì)使處理器內(nèi)核,如ARM內(nèi)核對(duì)第二計(jì)數(shù)器當(dāng)前的第一計(jì)數(shù)數(shù)目進(jìn)行記錄,也就是將第二計(jì)數(shù)器清零前的計(jì)數(shù)數(shù)目進(jìn)行記錄;優(yōu)選地,在具體實(shí)施的過程中,可以將當(dāng)前的第一計(jì)數(shù)數(shù)目保存至第一變量sw_rt_sample_cnt_reg_cur;將第二中斷信號(hào)在上一次產(chǎn)生一個(gè)寬度為clk_voice_sync周期長度的脈沖時(shí)記錄的第二計(jì)數(shù)數(shù)目保存至第二變量sw_rt_sample_cnt_reg_last;通過第一變量和第二變量的差值sw_rt_sample_cnt_reg_diff與預(yù)設(shè)的門限值進(jìn)行比較:
若差值sw_rt_sample_cnt_reg_diff大于預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160+sw_rt_sample_cnt_reg_diff;
若差值sw_rt_sample_cnt_reg_diff不大于預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160。
可以理解地,差值sw_rt_sample_cnt_reg_diff可以通過下式計(jì)算獲得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last
需要說明的是,當(dāng)本地時(shí)鐘和網(wǎng)絡(luò)時(shí)鐘同步時(shí),20ms的語音幀數(shù)據(jù)進(jìn)行DMA搬移所需要搬移的數(shù)據(jù)長度為160。在確定通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度之后,在下一個(gè)DMA中斷到來時(shí),根據(jù)確定得到的數(shù)據(jù)長度進(jìn)行DMA搬運(yùn),從而能夠使得本地時(shí)鐘與網(wǎng)絡(luò)時(shí)鐘之間實(shí)現(xiàn)同步。
本發(fā)明實(shí)施例提供了一種語音同步的方法,結(jié)合了硬件與軟件兩個(gè)方面根據(jù)聲道指示信號(hào)和幀信號(hào)來產(chǎn)生相應(yīng)的中斷,并按照產(chǎn)生的中斷進(jìn)行同步,能夠提高語音同步處理的性能及速率。
基于前述實(shí)施例相同的技術(shù)構(gòu)思,參見圖7,其示出了本發(fā)明實(shí)施例提供的一種語音同步的裝置70,該裝置70包括:第一生成單元701、采樣單元702、第二生成單元703、計(jì)數(shù)單元704和確定單元705,其中,
第一生成單元701,用于將集成電路內(nèi)置音頻I2S總線中的聲道指示信號(hào)作為時(shí)鐘同步信號(hào);
采樣單元702,用于對(duì)物理層獲取的語音幀信號(hào)進(jìn)行采樣得到幀中斷信號(hào);
第二生成單元703,用于根據(jù)幀中斷信號(hào)及預(yù)設(shè)的參數(shù)生成第一中斷信號(hào);
計(jì)數(shù)單元704,用于通過兩個(gè)計(jì)數(shù)器分別按照預(yù)設(shè)的計(jì)數(shù)規(guī)則對(duì)時(shí)鐘同步信號(hào)的周期進(jìn)行計(jì)數(shù);其中,第一計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:按照第一預(yù)設(shè)數(shù)目對(duì)時(shí)鐘同步信號(hào)的周期進(jìn)行循環(huán)計(jì)數(shù),并且在第一中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新開始計(jì)數(shù);第二計(jì)數(shù)器的計(jì)數(shù)規(guī)則為:在第二中斷信號(hào)的生成時(shí)刻進(jìn)行清零并重新計(jì)數(shù);
第二生成單元703,還用于在第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí),生成第二中斷信號(hào);
確定單元705,用于在第一計(jì)數(shù)器的計(jì)數(shù)數(shù)目為第二預(yù)設(shè)數(shù)目時(shí),記錄第二計(jì)數(shù)器當(dāng)前的第一計(jì)數(shù)數(shù)目,并且根據(jù)第一計(jì)數(shù)數(shù)目與第二計(jì)數(shù)數(shù)目之間的差值和預(yù)設(shè)的門限確定通過直接內(nèi)存訪問DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度;其中,第二計(jì)數(shù)數(shù)目為第二計(jì)數(shù)器在前一次第二中斷信號(hào)生成時(shí)所記錄的計(jì)數(shù)數(shù)目。
在上述實(shí)施例中,采樣單元702,包括兩級(jí)D觸發(fā)器和一個(gè)與門邏輯計(jì)算單元,其中,
將時(shí)鐘同步信號(hào)作為兩級(jí)D觸發(fā)器的CP輸入信號(hào);
將語音幀信號(hào)作為兩級(jí)D觸發(fā)器中第一級(jí)D觸發(fā)器的D輸入信號(hào);
將第一級(jí)D觸發(fā)器的輸出信號(hào)作為兩級(jí)D觸發(fā)器中第二級(jí)D觸發(fā)器的D輸入信號(hào);
將第二級(jí)D觸發(fā)器的輸出信號(hào)的反向信號(hào)以及第一級(jí)D觸發(fā)器的輸出信號(hào)作為與門邏輯計(jì)算單元的輸入信號(hào),則與門邏輯計(jì)算單元的輸出信號(hào)為幀中斷信號(hào)。
在上述實(shí)施例中,第二生成單元703,具體用于:
在第一使能信號(hào)為高時(shí),通過幀計(jì)數(shù)器對(duì)幀中斷信號(hào)進(jìn)行計(jì)數(shù);以及,
幀計(jì)數(shù)器的計(jì)數(shù)達(dá)到傳輸時(shí)間間隔偏移TTI_OFFSET后清零;并以TTI_PERIOD為周期對(duì)幀中斷信號(hào)進(jìn)行循環(huán)計(jì)數(shù);以及,
每當(dāng)幀計(jì)數(shù)器清零時(shí),第一中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘同步信號(hào)周 期長度的脈沖。
在上述實(shí)施例中,第二生成單元703,具體用于:當(dāng)?shù)谝挥?jì)數(shù)器的計(jì)數(shù)數(shù)目達(dá)到第二預(yù)設(shè)數(shù)目時(shí),第二中斷信號(hào)產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘同步信號(hào)周期長度的脈沖。
在上述實(shí)施例中,確定單元705,具體用于:
將當(dāng)前的第一計(jì)數(shù)數(shù)目保存至第一變量sw_rt_sample_cnt_reg_cur;將第二中斷信號(hào)在上一次產(chǎn)生一個(gè)寬度為時(shí)鐘同步信號(hào)周期長度的脈沖時(shí)記錄的第二計(jì)數(shù)數(shù)目保存至第二變量sw_rt_sample_cnt_reg_last;以及,
通過第一變量和第二變量的差值sw_rt_sample_cnt_reg_diff與預(yù)設(shè)的門限值進(jìn)行比較:
若差值sw_rt_sample_cnt_reg_diff大于預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160+sw_rt_sample_cnt_reg_diff;
若差值sw_rt_sample_cnt_reg_diff不大于預(yù)設(shè)的門限值,則通過DMA進(jìn)行搬移的語音樣本的數(shù)據(jù)長度為160;
其中,差值sw_rt_sample_cnt_reg_diff通過下式計(jì)算獲得:
sw_rt_sample_cnt_reg_diff=sw_rt_sample_cnt_reg_cur-sw_rt_sample_cnt_reg_last。
可以理解地,上述功能單元結(jié)構(gòu)中,第一生成單元701、采樣單元702、第二生成單元703和計(jì)數(shù)單元704可以根據(jù)圖2至圖6所示的時(shí)序波形圖通過硬件器件進(jìn)行完成;而確定單元705則可以通過軟件來進(jìn)行實(shí)現(xiàn)。
本發(fā)明實(shí)施例提供了一種語音同步的裝置70,結(jié)合了硬件與軟件兩個(gè)方面根據(jù)聲道指示信號(hào)和幀信號(hào)來產(chǎn)生相應(yīng)的中斷,并按照產(chǎn)生的中斷進(jìn)行同步,能夠提高語音同步處理的性能及速率。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用硬件實(shí)施例、軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器和光學(xué)存儲(chǔ) 器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
以上,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。