專利名稱:一種基于同步計數(shù)的縱向時間碼的解碼方法
技術領域:
本發(fā)明涉及一種基于同步計數(shù)的縱向時間碼的解碼方法。
技術背景
在廣播電視領域中,視頻和音頻源經常是通過不同的方式在不同的時間下錄制 的,在后期的編制中,為確保視音頻的同步,需要在視音頻數(shù)據(jù)中加入時間信息,縱向 時間碼就是其中的一種。
在SMPTE/EBU規(guī)范即ANSI/SMPTE12-1986中,明確地規(guī)定縱向時間碼的編 碼方式和數(shù)據(jù)的頻率。縱向時間碼的時間精度可以精確到視頻幀,每幀包含80BITS,其 中包含小時,分鐘,秒,同步序列,8個4位的二進制數(shù)據(jù)用戶字,校驗和等信息。當對 應的視頻是NTSC制式時,EBU數(shù)據(jù)“1”的時鐘頻率是80*30 = MOOHz,“O”的時 鐘頻率是40*30 = 1200Hz ;當對應的視頻是PAL制式時,EBU數(shù)據(jù)“1”的時鐘頻率是 80*25 = 2000Hz,“O”的時鐘頻率是40*25 = IOOOHz ;在EBU數(shù)據(jù)中,對應的“O” 和“1”是根據(jù)EBU數(shù)據(jù)的跳變位置來決定的,如果EBU數(shù)據(jù)只在本數(shù)據(jù)周期的起始發(fā) 生跳變,對應的數(shù)據(jù)是“O” ;如果如果EBU數(shù)據(jù)在本數(shù)據(jù)周期的起始和中間發(fā)生跳變, 對應的數(shù)據(jù)是“1”。
目前的EBU數(shù)據(jù)解碼多通過單獨的CPU實現(xiàn),因為EBU數(shù)據(jù)要求實時解碼, 并且要判斷EBU高低電平的持續(xù)時間,因此會始終占用CPU的中斷和時鐘資源,需要單 獨的CPU完成該工作,而浪費了 CPU的其它功能。發(fā)明內容
本發(fā)明針對以上問題的提出,而研制一種基于同步計數(shù)的縱向時間碼的解碼方 法。本發(fā)明采用的技術手段如下
一種基于同步計數(shù)的縱向時間碼的解碼方法,其特征在于包括如下步驟
步驟1在單位時間內檢測EBU數(shù)據(jù)個數(shù),然后同正常EBU數(shù)據(jù)在單位時間內的 個數(shù)進行比較,當單位時間內檢測EBU數(shù)據(jù)的個數(shù)在正常EBU數(shù)據(jù)在單位時間內個數(shù)范 圍時,判定該EBU數(shù)據(jù)穩(wěn)定,進行下一步驟;
步驟2檢測EBU數(shù)據(jù)中各脈沖寬度,尋找最小脈沖寬度,從而確認EBU數(shù)據(jù)最 小周期T ;
步驟3對EBU數(shù)據(jù)進行移相處理后延1/4TEBU數(shù)據(jù)為EBU1,后延3/4TEBU 數(shù)據(jù)為EBU2 ;
分別用EBUl和EBU2的上升沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DATl和 DAT2,再分別用EBUl和EBU2的下降沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DAT3和 DAT4 ;比較DAT1、DAT2、DAT3和DAT4的邏輯關系,已獲得當前EBU數(shù)據(jù)對應的二 進制數(shù)O或1,具體比較方法如下
對鎖存結果DATl和DAT2進行異或運算獲得結果Z1,對鎖存結果DAT3和DAT4進行異或運算獲得結果Z2,后進行下列邏輯運算
當Zl為1,Z2為1時當前EBU數(shù)據(jù)為二進制數(shù)1;
當Zl為0,Z2為0時當前EBU數(shù)據(jù)為二進制數(shù)0 ;
當Zl為1,Z2為0或Zl為0,Z2為1時根據(jù)前一個EBU數(shù)據(jù)判斷當前EBU 數(shù)據(jù),即前一個EBU數(shù)據(jù)為二進制數(shù)1時當前EBU數(shù)據(jù)為二進制數(shù)0,前一個EBU數(shù)據(jù) 為二進制數(shù)0時當前EBU數(shù)據(jù)為二進制數(shù)1 ;
通過上述邏輯運算對EBU數(shù)據(jù)進行解碼處理,獲得EBU數(shù)據(jù)對應的二進制數(shù)。
所述步驟2中的尋找最小脈沖寬度的方法采用檢測EBU數(shù)據(jù)的所有高電平和低 電平的脈沖寬度進行比較來確定EBU數(shù)據(jù)的最小脈沖寬度。
所述步驟2中的尋找最小脈沖寬度的方法為首先,通過計數(shù)器計數(shù)本地時鐘 對EBU數(shù)據(jù)中各高低電平進行采樣的個數(shù),并在計數(shù)器清零信號到來時將計數(shù)結果存入 寄存器中;然后,比較每個高電平或低電平計數(shù)的本地時鐘的個數(shù),將最少的計數(shù)本地 時鐘的個數(shù)作為比較后的結果存入寄存器中;最后,經過一幀的時間后寄存器中存儲的 本地時鐘的個數(shù)即為EBU數(shù)據(jù)的最小脈沖寬度;其中計數(shù)器清零信號通過將EBU數(shù)據(jù)用 本地時鐘移后一個時鐘周期,根據(jù)原EBU數(shù)據(jù)和延時后的EBU數(shù)據(jù)的異或邏輯關系產生 計數(shù)器的清零信號。
所述步驟1中的檢測EBU數(shù)據(jù)個數(shù)的方法是檢測EBU數(shù)據(jù)中上升沿或下降沿的 個數(shù)進行確定EBU數(shù)據(jù)的個數(shù)。
本方法根據(jù)目前視音頻系統(tǒng)中普遍使用FPGA的實際情況,設計了一個簡單可 行的算法,便于在FPGA內部實現(xiàn),節(jié)省了設計的成本和空間,并且使用FPGA完成該算 法對EBU數(shù)據(jù)進行解碼,具有實時性好,自適應性強,方便靈活的特點。
圖1為本發(fā)明所述方法的流程圖2為本發(fā)明所述計算EBU數(shù)據(jù)的最小脈沖寬度中清零信號產生的時序圖3為本發(fā)明所述計算EBU數(shù)據(jù)對應的二進制數(shù)中的時序圖。
具體實施方式
如圖1所示基于同步計數(shù)的縱向時間碼的解碼方法包括如下步驟
步驟1在單位時間內檢測EBU數(shù)據(jù)個數(shù),然后同正常EBU數(shù)據(jù)在單位時間內 的個數(shù)進行比較,當單位時間內檢測EBU數(shù)據(jù)的個數(shù)在正常EBU數(shù)據(jù)在單位時間內個 數(shù)范圍時,判定該EBU數(shù)據(jù)穩(wěn)定,進行下一步驟;本實施例采用的具體方法如下此處 用LOCALCLK表示(保證在EBU最大頻率的4倍以上),在本實施例中,本地時鐘采 用LOCALCLK = IMHz,用本地時鐘進行分頻2η,η = 20 ;分頻后的時鐘用CLKl表 示CLKl = lM/2^1 = 0.95 ,周期大約是1.048秒,占空比為1;設置計數(shù)器1,用 COUNTER1表示,用CLKl的低電平對計數(shù)器COUNTER1進行清零,在清零時,計數(shù)器 輸出為全零;當CLKl為高電平時,用EBU數(shù)據(jù)上升沿或下降沿進行計數(shù),在CLKl下 降沿前,把技術結果鎖入寄存器REG1,當EBU數(shù)據(jù)正常時,在PAL制式下,REGl的 結果在524-1048之間;在NTSC制式下,REGl的結果在629-1258之間
PAL制式EBU的數(shù)據(jù)頻率1000Hz/2000Hz,CLKl高電平的時間為 (1/0.95)/2 = 0.5 秒,
計數(shù)的最小值0.524*1000= 524 ;
計數(shù)的最大值0.524*2000= 1048 ;
NTSC制式EBU的數(shù)據(jù)頻率1200Hz/2400Hz,CLKl高電平的時間不變,仍 為(1/0.95)/2 = 0.524 秒,
計數(shù)的最小值0.524*1200= 629 ;
計數(shù)的最大值0.524M400= 1258 ;
通過判斷REGl的值,即可判定當前輸入的EBU數(shù)據(jù)是否穩(wěn)定。
步驟2檢測EBU數(shù)據(jù)中各脈沖寬度,尋找最小脈沖寬度,從而確認EBU數(shù)據(jù)最 小周期T,可以通過對每個EBU數(shù)據(jù)脈寬進行采樣的本地時鐘的多少來進行判斷;為使 結果準確采用尋找最小脈沖寬度的方法采用檢測EBU數(shù)據(jù)的所有高電平和低電平的脈沖 寬度進行比較來確定EBU數(shù)據(jù)的最小脈沖寬度的方法,具體如下因為EBU數(shù)據(jù)是根據(jù) 數(shù)據(jù)自身的高低翻轉來表示“0 “或” 1 “的,因此必須判定翻轉發(fā)生的位置,所以要 計算出EBU數(shù)據(jù)的頻率;在EBU數(shù)據(jù)的上升沿和下降沿分別產生清零脈沖信號,但是 這樣做需要額外資源進行上升沿和下降沿的檢測,因此本發(fā)明采用移位EBU數(shù)據(jù)然后進 行邏輯比較的方法進行檢測,具體如下當本地時鐘LOCALCLK= IMPiz時,設置計數(shù) 器COUNTER2,用CLR2表示該計數(shù)器的清零信號,將EBU數(shù)據(jù)用LOCALCLK移后一 個時鐘周期,根據(jù)原EBU數(shù)據(jù)和延時后的EBU數(shù)據(jù)的異或邏輯關系產生計數(shù)器的清零信 號,如圖2所示為對原EBU數(shù)據(jù)后移一個本地時鐘后的EBU數(shù)據(jù)同原EBU數(shù)據(jù)進行比 對的示意圖,在a和al處,b和bl處,c和Cl處的移位后的EBU數(shù)據(jù)同原EBU數(shù)據(jù)不 相同,在此處產生清零信號,這樣就可以保證計數(shù)器COUNTER2能夠計錄EBU數(shù)據(jù)中 最小脈沖寬度(即高電平和低電平都進行檢測),當CLR2有效時,COUNTER2輸出全 零,CLR2無效時,COUNTER2開始計數(shù),計數(shù)時鐘是LOCALCLK,在每個EBU數(shù)據(jù) 的清零信號到來之前,將計數(shù)結果存入寄存器REG2,比較每一次REG2的結果,保留最 小值。經過一幀的時間后(要求最小40ms),通過REG2的值即可判定當前EBU數(shù)據(jù)的 頻率。
對于PAL制式EBU最小正脈沖的寬度是(1/1000) *0.5 = 0.0005秒;
計數(shù)結果0.0005*IO6= 500 個;
對于NTSC制式EBU最小正脈沖的寬度是(1/1200) *0.5 = 0.000416秒;
計數(shù)結果0.000416*106= 416 個。
步驟3對EBU數(shù)據(jù)進行移相處理后延1/4TEBU數(shù)據(jù)為EBU1,后延3/4TEBU 數(shù)據(jù)為EBU2,如圖3所示
分別用EBUl和EBU2的上升沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DAT 1和 DAT2,再分別用EBUl和EBU2的下降沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DAT3和 DAT4 ;比較DAT1、DAT2、DAT3和DAT4的邏輯關系,已獲得當前EBU數(shù)據(jù)對應的二 進制數(shù)0或1,具體比較方法如下
對鎖存結果DATl和DAT2進行異或運算獲得結果Z1,對鎖存結果DAT3和DAT4 進行異或運算獲得結果Z2,后進行下列邏輯運算
當Zl為1,D為1時當前EBU數(shù)據(jù)為二進制數(shù)1 ;
當Zl為0,Z2為0時當前EBU數(shù)據(jù)為二進制數(shù)0 ;
當Zl為1,Z2為0或Zl為0,Z2為1時根據(jù)前一個EBU數(shù)據(jù)判斷當前EBU 數(shù)據(jù),即前一個EBU數(shù)據(jù)為二進制數(shù)1時當前EBU數(shù)據(jù)為二進制數(shù)0,前一個EBU數(shù)據(jù) 為二進制數(shù)0時當前EBU數(shù)據(jù)為二進制數(shù)1 ;
通過上述邏輯運算對EBU數(shù)據(jù)進行解碼處理,獲得EBU數(shù)據(jù)對應的二進制數(shù)。
其中步驟1中的檢測EBU數(shù)據(jù)個數(shù)的方法是檢測EBU數(shù)據(jù)中上升沿或下降沿的 個數(shù)進行確定EBU數(shù)據(jù)的個數(shù)。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于 此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,根據(jù)本發(fā)明的技術方 案及其發(fā)明構思加以等同替換或改變,都應涵蓋在本發(fā)明的保護范圍之內。
權利要求
1.一種基于同步計數(shù)的縱向時間碼的解碼方法,其特征在于包括如下步驟步驟1在單位時間內檢測EBU數(shù)據(jù)個數(shù),然后同正常EBU數(shù)據(jù)在單位時間內的個 數(shù)進行比較,當單位時間內檢測EBU數(shù)據(jù)的個數(shù)在正常EBU數(shù)據(jù)在單位時間內個數(shù)范圍 時,判定該EBU數(shù)據(jù)穩(wěn)定,進行下一步驟;步驟2檢測EBU數(shù)據(jù)中各脈沖寬度,尋找最小脈沖寬度,從而確認EBU數(shù)據(jù)最小周 期T;步驟3對EBU數(shù)據(jù)進行移相處理后延1/4T EBU數(shù)據(jù)為EBUl,后延3/4T EBU數(shù) 據(jù)為EBU2 ;分別用EBUl和EBU2的上升沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DATl和DAT2,再 分別用EBUl和EBU2的下降沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DAT3和DAT4 ;比較 DATU DAT2、DAT3和DAT4的邏輯關系,已獲得當前EBU數(shù)據(jù)對應的二進制數(shù)O或 1,具體比較方法如下對鎖存結果DATl和DAT2進行異或運算獲得結果Zl,對鎖存結果DAT3和DAT4進 行異或運算獲得結果Z2,后進行下列邏輯運算當Zl為1,Z2為1時當前EBU數(shù)據(jù)為二進制數(shù)1;當Zl為0,Z2為0時當前EBU數(shù)據(jù)為二進制數(shù)0;當Zl為1,Z2為0或Zl為0,Z2為1時根據(jù)前一個EBU數(shù)據(jù)判斷當前EBU數(shù)據(jù), 即前一個EBU數(shù)據(jù)為二進制數(shù)1時當前EBU數(shù)據(jù)為二進制數(shù)0,前一個EBU數(shù)據(jù)為二進 制數(shù)0時當前EBU數(shù)據(jù)為二進制數(shù)1 ;通過上述邏輯運算對EBU數(shù)據(jù)進行解碼處理,獲得EBU數(shù)據(jù)對應的二進制數(shù)。
2.根據(jù)權利要求1所述的一種基于同步計數(shù)的縱向時間碼的解碼方法,其特征在于所 述步驟2中的尋找最小脈沖寬度的方法采用檢測一個完整EBU數(shù)據(jù)幀內所有EBU數(shù)據(jù)高 電平和低電平的脈沖寬度,并且進行比較來確定EBU數(shù)據(jù)的最小脈沖寬度。
3.根據(jù)權利要求1或2所述的一種基于同步計數(shù)的縱向時間碼的解碼方法,其特征在 于所述步驟2中的尋找最小脈沖寬度的方法為首先,通過計數(shù)器計數(shù)本地時鐘對EBU 數(shù)據(jù)中各高低電平進行采樣的個數(shù),并在計數(shù)器清零信號到來時將計數(shù)結果存入寄存器 中;然后,比較每個高電平或低電平計數(shù)的本地時鐘的個數(shù),將最少的計數(shù)本地時鐘的 個數(shù)作為比較后的結果存入寄存器中;最后,經過一幀的時間后寄存器中存儲的本地時 鐘的個數(shù)即為EBU數(shù)據(jù)的最小脈沖寬度;其中計數(shù)器清零信號通過將EBU數(shù)據(jù)用本地時 鐘移后一個時鐘周期,根據(jù)原EBU數(shù)據(jù)和延時后的EBU數(shù)據(jù)的異或邏輯關系產生計數(shù)器 的清零信號。
4.根據(jù)權利要求1所述的一種基于同步計數(shù)的縱向時間碼的解碼方法,其特征在于所 述步驟1中的檢測EBU數(shù)據(jù)個數(shù)的方法是檢測EBU數(shù)據(jù)中上升沿或下降沿的個數(shù)進行確 定EBU數(shù)據(jù)的個數(shù)。
全文摘要
本發(fā)明公開了一種基于同步計數(shù)的縱向時間碼的解碼方法,其特征在于包括步驟1判定該EBU數(shù)據(jù)穩(wěn)定;步驟2確認EBU數(shù)據(jù)最小周期T;步驟3對EBU數(shù)據(jù)進行移相處理后延1/4T EBU數(shù)據(jù)為EBU1,后延3/4T EBU數(shù)據(jù)為EBU2;分別用EBU1和EBU2的上升沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DAT1和DAT2,再分別用EBU1和EBU2的下降沿鎖存原EBU數(shù)據(jù),記錄鎖存結果DAT3和DAT4;比較DAT1、DAT2、DAT3和DAT4的邏輯關系,獲得EBU數(shù)據(jù)對應的二進制數(shù)。該方法具有實時性好,自適應性強,方便靈活的特點,適于廣泛推廣。
文檔編號H04N5/91GK102025957SQ20101058417
公開日2011年4月20日 申請日期2010年12月10日 優(yōu)先權日2010年12月10日
發(fā)明者劉劍, 程鵬 申請人:大連捷成實業(yè)發(fā)展有限公司