張 鵬,楊 剛,楊 霏,劉昌銀
(中國傳媒大學 信息工程學院,北京 100024)
CMMB系統(tǒng)[1]使用發(fā)射機標識序列標識發(fā)射機所在的地區(qū),并可區(qū)分同一地區(qū)內(nèi)的不同發(fā)射機[2]。CMMB標準只給出了兩種帶寬模式下的256種發(fā)射機標識序列,但沒有指出其中的規(guī)律。這些隨機序列雜亂無章,最直接的方法就是把它們都存儲在ROM存儲器內(nèi),通過查表生成,以發(fā)送和完成相關(guān)檢測。存儲CMMB發(fā)射機標識序列需要58368 bit的大量存儲空間。
通過分析發(fā)射機標識序列的特點,筆者發(fā)現(xiàn),使用Hadamard矩陣[3]生成這些隨機序列很容易,僅需增加少量的邏輯資源,就能省去上述存儲器開銷。
N 階 Hadamard 矩陣簡記為 HN矩陣,HN=[hij](0≤i,j≤N-1),其中 hij等于+1 或-1。 H1=[1],高階 Hadamard 矩陣可由低階遞推得到
因為Hadamard矩陣的行向量兩兩正交,所以如果發(fā)送的偽隨機序列是Hadamard矩陣的行向量,那么接收機就能采用Hadamard變換進行相關(guān)檢測。
Hadamard矩陣僅由元素+1和-1構(gòu)成,可以認為這是它的雙極性表示形式。雙極性空間{+1,-1}可映射為單極性空間{0,1},這樣Hadamard矩陣也可表示成單極性形式。雙極性空間的乘法運算相當于單極性空間的異或運算。
CMMB標準采用了8 MHz和2 MHz兩種帶寬模式,規(guī)定了它們的頻域單極性發(fā)射機標識序列。前者的發(fā)射機標識序列長191 bit,后者長37 bit。標準中給出了兩種帶寬模式各自的256種隨機序列,但未說明它們是如何得到的。
通過深入研究發(fā)現(xiàn),這些隨機序列表面上雜亂無章,實際上是有規(guī)律可循的。對于8 MHz帶寬模式,如果將第0種發(fā)射機標識序列與所有發(fā)射機標識序列異或,那么由所得序列可構(gòu)成191×256階矩陣,它恰好是256階單極性Hadamard矩陣的后191列構(gòu)成的子矩陣。類似地,2 MHz帶寬模式也是如此。 若將第 i(i=0,64,128,192)種發(fā)射機標識序列與第i,i+1,…,i+63種發(fā)射機標識序列異或,則由所得序列可構(gòu)成37×64階矩陣,它恰好是64階單極性Hadamard矩陣的后37列構(gòu)成的子矩陣。
如果將8 MHz帶寬模式的第0種發(fā)射機標識序列和2 MHz帶寬模式的第0,64,128,192種發(fā)射機標識序列視為掩碼序列,那么單極性Hadamard矩陣縮短后與掩碼序列異或即可得到所有發(fā)射機標識序列。
下面以8 MHz帶寬模式為例說明如何使用Hadamard矩陣產(chǎn)生和檢測CMMB發(fā)射機標識序列,其方法同樣適用于2 MHz帶寬模式。
發(fā)射機要發(fā)送區(qū)域間和區(qū)域內(nèi)2個標識,奇數(shù)時隙發(fā)送區(qū)域標識,偶數(shù)時隙發(fā)送區(qū)域內(nèi)本機標識。因為每個時隙只涉及1個標識,所以無須知道整個Hadamard矩陣的構(gòu)成,只要給出Hadamard矩陣對應的那一行即可。
以 8 MHz帶寬模式第 i(i=0,1,…,255)行為例,i可表示為8位二進制數(shù)b7b6b5b4b3b2b1b0,優(yōu)先級左高右低。單極性 Hadamard 矩陣行向量是{h0,h1,…,h255},長度是256 bit。根據(jù)Hadamard矩陣的構(gòu)成特點可知,產(chǎn)生第i行向量的過程如下:
1)初始化h0=0。
2)若 b0=0,則 h1=h0;否則,h1是 h0的非,即 h1=~h0。
3)若 b1=0,則{h2,h3}={h0,h1};否則,{h2,h3}=~{h0,h1}。
4)依此類推。若 bj=0(j=0,1,…,7),則{h2j,h2j+1,…,h2j+1-1}={h0,h1,…,h2j-1};否則,{h2j,h2j+1,…,h2j+1-1}=~{h0,h1,…,h2j-1}。
去掉第i行向量的前65 bit,將縮短的單極性Hadamard 矩陣行向量{h65,h66,…,h255}與掩碼異或,結(jié)果就是191 bit的第i個標識序列。此外,利用上述迭代運算可快速得出更高階Hadamard矩陣的任意一行。
如圖1所示,使用Hadamard矩陣檢測CMMB發(fā)射機標識序列的過程是:接收機首先對硬判決得到的單極性發(fā)射機標識序列去掩碼,然后變?yōu)殡p極性碼,再與縮短雙極性Hadamard矩陣相乘,最后通過比較找出最大相關(guān)值,并輸出其對應的Hadamard矩陣行號,即發(fā)射機標識。
圖1 CMMB發(fā)射機標識序列檢測過程
圖1中,與Hadamard矩陣的相乘可逐行進行。每計算出一個相關(guān)值就與之前的最大相關(guān)值進行比較,保存最大相關(guān)值及其對應的行號,以便與下一行相比。最后可以得到相關(guān)性最強的行號,它對應的截短單極性行向量最有可能是發(fā)送的發(fā)射機標識序列。
與Hadamard矩陣相乘也可采用快速Hadamard變換(FHT)或逆快速 Hadamard 變換(IFHT)實現(xiàn)[4]。對于一個 N階Hadamard矩陣,直接Hadamard變換的運算量大約是N2次加減法;而FHT/IFHT是將該矩陣分解為m=lbN個相同的稀疏矩陣的乘積,利用蝶形運算可將總運算量減少為2mN次加減法,計算量減小可大幅提高檢測速度。
用Hadamard矩陣產(chǎn)生CMMB發(fā)射機標識序列非常簡單,而檢測稍顯復雜。發(fā)射機標識序列相對固定,因此對接收端的檢測速度要求不高。為簡化編程復雜度,筆者采用逐行與Hadamard矩陣相乘的檢測方法。歸根到底,CMMB發(fā)射機標識序列的產(chǎn)生和檢測問題的關(guān)鍵是如何產(chǎn)生Hadamard矩陣的某一行向量,而筆者很好地解決了這一問題。
用FPGA產(chǎn)生和檢測CMMB發(fā)射機標識序列的方法有兩個:一是采用傳統(tǒng)的查表法;二是用Hadamard矩陣實現(xiàn)。表1和表2分別比較了這兩種方法產(chǎn)生和檢測CMMB發(fā)射機標識序列的資源消耗。FPGA采用Altera公司的EP3C55,它有55858個LE和260塊M9K RAM,查找表存儲在片內(nèi)。
表1 產(chǎn)生發(fā)射機標識序列的資源消耗
表2 檢測發(fā)射機標識序列的資源消耗
與查表法相比,無論是產(chǎn)生還是檢測發(fā)射機標識序列,Hadamard矩陣法都不需要存儲器,以增加邏輯單元為代價,節(jié)省了前者所需的8塊M9K片內(nèi)RAM。與LE總量相比,LE的增量非常少,這說明Hadamard矩陣法比查表法更可取。
筆者設(shè)計了一種基于Hadamard矩陣的CMMB發(fā)射機標識序列的產(chǎn)生和檢測方法,在Altera公司的EP3C55 FPGA上實現(xiàn)了產(chǎn)生器和相關(guān)檢測器,它們能滿足CMMB系統(tǒng)的指標,最大限度地節(jié)約了存儲器開銷。在存儲器資源受限的場合下,本方法具有良好的工程實用價值。
[1]解偉.移動多媒體廣播(CMMB)技術(shù)與發(fā)展[J].電視技術(shù),2008,32(4):4-7.
[2]國家廣播電影電視總局.GY/T220.1-2006,移動多媒體廣播 第1部分:廣播信道幀結(jié)構(gòu)、信道編碼和調(diào)制[S].2006.
[3]樊昌信,曹麗娜.通信原理[M].6版.北京:國防工業(yè)出版社,2008.
[4]吳湛擊,吳偉陵.3GPP中的Reed-Muller編譯碼算法[J].電子學報,2005,33(1):147-149.