李 威,周正歐
電子科技大學(xué)電子工程學(xué)院,四川 成都 610054
1 前言
隨著數(shù)字電視技術(shù)的發(fā)展,MPEG2標(biāo)準(zhǔn)已被廣泛地接受,它是聲音和圖像數(shù)字化的基礎(chǔ)標(biāo)準(zhǔn),可用于數(shù)字電視及數(shù)字聲音廣播、數(shù)字圖像與聲音信號的傳輸及多媒體等領(lǐng)域。MPEG2的系統(tǒng)規(guī)定兩種數(shù)據(jù)格式即節(jié)目碼流(PS)和傳輸碼流(TS),其中,節(jié)目碼流主要為本地應(yīng)用設(shè)計,數(shù)據(jù)幀長度不固定,用在誤碼較低的場合(如DVD);傳輸碼流是為廣播應(yīng)用而設(shè)計的,由于信道環(huán)境不可預(yù)測,傳輸流由固定的包長構(gòu)成,有利于在出現(xiàn)錯誤的情況下能夠迅速同步。在TS流傳輸過程中,由于時鐘出現(xiàn)抖動及源設(shè)備與目標(biāo)設(shè)備的碼率有可能不一致,因此,有必要對碼率進(jìn)行調(diào)整。
2 碼率調(diào)整的實觀
2.1 TS流的幀格式及接口
MPEG2標(biāo)準(zhǔn)的幀長度有兩種格式:188個字節(jié)和188個字節(jié)經(jīng)過RS編碼后構(gòu)成的204個字節(jié)。兩種格式的數(shù)據(jù)在調(diào)整碼率的原理上是一致的,因此本文僅以188字節(jié)的幀長度為例,TS的幀結(jié)構(gòu)如圖1所示。
由圖1可以看出,通過對TS流幀的頭部進(jìn)行設(shè)置(0x47,0xlf,0xff, 0x10),后面的字節(jié)用0x00填充,可以人為地輸出空包,這就提供了一種較好的碼率調(diào)整方法。在調(diào)整時,先將數(shù)據(jù)存入先進(jìn)先出(FIFO),由CPLD利用本地時鐘控制FIFO讀,當(dāng)至少有一幀數(shù)據(jù)時,將數(shù)據(jù)讀出,否則由CPLD發(fā)出一個空包,等待FIFO有數(shù)據(jù)并滿足條件時,再讀FIFO內(nèi)部的數(shù)據(jù),這樣實現(xiàn)TS流的碼率調(diào)整。
另外,MPEG2傳輸流數(shù)據(jù)信號有三種接口,即同步并行接口(SPI)、異步串行接口(ASI)和同步串行接口(SSI)。其中,ASI和SPI接口較常用。ASI接口的數(shù)據(jù)傳輸速率為270Mb/s,在進(jìn)行碼率調(diào)整之前,需要將ASI接口中的同步字節(jié)刪除,進(jìn)行串并轉(zhuǎn)換,再進(jìn)一步處理。SPI接口傳輸數(shù)據(jù)率可變,幀與幀之間必須是連續(xù)的。
2.2 碼率調(diào)整的硬件實現(xiàn)
由以上的討論可知,碼率調(diào)整的硬件主要有ASI格式轉(zhuǎn)換電路、緩存和控制電路,同時,為了適應(yīng)不同解碼設(shè)備碼率的差別,又采用了直接數(shù)字頻率合成(DDS),輸入信號有ASI和SPI接口,最后都由SPI接口輸出標(biāo)準(zhǔn)信號,硬件構(gòu)成如圖2所示。
2.2.1 轉(zhuǎn)換電路
CY7B933是美國CYPRESS公司近年推出的端到端通信接收解碼電路。它把接收到的串行比特流進(jìn)行串/并轉(zhuǎn)換,這個串/并轉(zhuǎn)換是采用每10bit串行比特流作為一組來轉(zhuǎn)換為10bit字。為了保證串/并轉(zhuǎn)換是在正確的字節(jié)對齊狀態(tài)下進(jìn)行,必須通過恢復(fù)字節(jié)對齊處理,而用于對齊的同步字節(jié)K28.5是恢復(fù)對齊處理的關(guān)鍵字節(jié);謴(fù)字節(jié)對齊處理模塊首先搜索串行比特數(shù)據(jù)流中的K28.5字符0011111010或者1100000101,當(dāng)在5個字節(jié)窗口(也就是50個比特)中搜索到兩個相鄰的K28.5特殊字符以后,就應(yīng)該呈現(xiàn)已正確對齊的字節(jié)流。在第2個K28.5特殊字符以后接收到的第1個字節(jié),應(yīng)該具有有效的字節(jié)對齊。經(jīng)過串/并轉(zhuǎn)換之后的數(shù)據(jù)字節(jié)是一個10bit字,經(jīng)過88/10B解碼器解碼成8bit的字節(jié)。然后將數(shù)據(jù)或同步特殊字符輸出,通過輸出一位標(biāo)志位,表明輸出的是數(shù)據(jù)或特殊字符,因此,CY7B933不能實現(xiàn)特殊字符的刪除,在文獻(xiàn)中規(guī)定了對ASI接口數(shù)據(jù)首先進(jìn)行時鐘及數(shù)據(jù)的恢復(fù)、串并轉(zhuǎn)換,然后進(jìn)行特殊字節(jié)的刪除,最后進(jìn)行8B/10B解碼,因此,CY7B933對數(shù)據(jù)的處理順序與規(guī)定的順序不一致,但是,這并不影響最終的結(jié)果。
2.2.2 控制電路
CPLD使用lattice公司的ISPMACH4512V,它具有512個宏單元,最大工作頻率為400MHz,而且功耗極低。在這里CPLD主要有以下幾個功能。
1)通過CY7B933的輸出信號RDY和SC/D控制數(shù)據(jù)寫入FIFO,當(dāng)輸出是數(shù)據(jù)時,將數(shù)據(jù)寫入FIFO,如果是特殊字符,停止寫入FIFO。這樣,通過寫FIFO刪除特殊字符。SPI接口的TS流采用低壓差分信號(LVDS)電平傳輸,需要將LVDS電平轉(zhuǎn)換為TTL電平,這里采用DS90C032,可將4路差分信號轉(zhuǎn)換為TTL電平信號。DS90C031將調(diào)整后的T5流由TTL電平轉(zhuǎn)化為LVDS電平。SPI接口輸出的T5流是連續(xù)的,通過CPLD可以將數(shù)據(jù)直接寫入FIFO。
2)控制AD9850的輸出時鐘,采用串行設(shè)置方式對輸出時鐘進(jìn)行設(shè)置,以便少用。
3)控制FIFO的讀出及空包的插入,流程如圖2所示,主要由兩個狀態(tài)機完成。狀態(tài)機l控制湊FIFO,狀態(tài)機2對讀出的數(shù)據(jù)進(jìn)行處理,建立同步。狀態(tài)機l首先監(jiān)測FIFO的半滿信號,如果未到半滿,則由CPLD發(fā)出包含188字節(jié)的空包,如果已到半滿,允許讀FIFO,同時。在計數(shù)過程中,如果狀態(tài)機2的同步信號為高電平,計數(shù)器從1開始計數(shù),讀完188個字節(jié)后,返回再監(jiān)測FIFO的半滿標(biāo)志。流程圖(b)實現(xiàn)對FIFO讀出的數(shù)據(jù)進(jìn)行同步,并輸出標(biāo)準(zhǔn)的SPI接口信號,首先監(jiān)測頭標(biāo)志0x47,每隔188個字節(jié)再判斷一次,如果不是,則重新搜索,如果是,則隔188個字節(jié)再判斷一次,這樣,連續(xù)判斷三次表示已找到同步頭,在以后的傳輸中每188個字節(jié)判斷一次,如果失步,則重新搜索。這樣,在每次讀FIFO的時候從包頭開始正好讀出188個字節(jié)。
2.2.3 緩存部分
FIFO的選擇主要考慮FIFO太小,可能將其讀空或?qū)憹M,如果太大則成本太高,傳輸延遲大,不利于實時傳送。選用IDT7204,它是異步FIFO,存儲容量為4K×9位,完全滿足要求。輸入ASI接口的數(shù)據(jù)經(jīng)過CY7B933處理后,輸入CPLD,由CPLD控制數(shù)據(jù)寫入,刪除特殊字符,SPI接口的數(shù)據(jù)流也輸入CPLD,通過它寫入FIFO。在讀FIFO時,CPLD根據(jù)AD9850輸出的時鐘按圖3所示的的流程控制讀FIFO。
2.2.4 直接數(shù)字頻率合成器
AD公司的AD9850型直接數(shù)字頻率合成器(DDS),特點是給定參考頻率后能夠根據(jù)頻率和相位設(shè)定值生成所需的任何頻率,前提是所需頻率要小于參考頻率的三分之一。數(shù)控振蕩器輸出的波形由內(nèi)部DAC轉(zhuǎn)換,高頻成份較多,不能直接輸入到高速比較器,要增加一個考爾低通濾波器,濾除無用的高頻成份,得到高質(zhì)量和高精度的方波波形。本設(shè)計通過CPLD對AD9850進(jìn)行設(shè)置,只通過改變CPLD的輸出,就可以得到精確而穩(wěn)定的不同輸出頻率。
3 結(jié)論
本文介紹的系統(tǒng)采用CY7B933、CPLD、FIFO及AD9850實現(xiàn)了MPEG2的TS流碼率調(diào)整,消除了信號傳輸過程中出現(xiàn)的抖動,解決了由于信號源與接收設(shè)備碼率不匹配的問題。采用LATTICE公司的CPLD作為邏輯控制,不僅完成了對系統(tǒng)的控制,而且在系統(tǒng)出錯時還可以進(jìn)行處理。數(shù)字頻率合成器(AD9850)的采用為系統(tǒng)提供了很高的時鐘精度,提高了系統(tǒng)的使用靈活性,可以廣泛應(yīng)用在各種視頻設(shè)備中。
摘自《電子技術(shù)應(yīng)用》