摘 要: 提出了如何在FPGA上實現DVB-C" title="DVB-C">DVB-C的信道編碼" title="信道編碼">信道編碼和中頻調制,概述了實用的編碼調制的技術難點及其改進,闡述了各個關鍵模塊的實現方法和性能指標,給出了整個模塊的綜合測試和仿真指標。
關鍵詞: 有線數字視頻廣播(DVB-C) 數字控制震蕩(NCO) Nyquist濾波器 半帶濾波器 級連積分梳妝(CIC)濾波器 反SINC濾波器 等波動最優設計 規則有符號數(CSD) 相位鎖定環(PLL) 正交幅度調制(QAM) 現場可編程門陣列(FPGA) 傳輸流(TS) 程序參考時鐘(PCR) 星座映射" title="星座映射">星座映射 里德-索羅蒙(RS)編碼
有線數字電視信道編碼和調制的傳統實現方式是將成型濾波輸出的數據經過D/A變換后與外部的正交調制信號" title="調制信號">調制信號相乘得到基帶的中頻調制。由于在外部要產生嚴格正交的調制信號需要額外的電路,同時模擬器件溫差特性會破壞它們嚴格的正交性,難以調試。本文采用圖1的全數字實現方案。
該方案采用數字信號直接合成(DDS)技術產生正交信號,實現基帶的中頻調制。在DVB-C標準中,從復用器出來的TS流速率是連續可變的,而要求調制輸出的是中頻固定的基帶調制信號,所以必須實時檢測TS碼流的速率,計算并補償數字控制震蕩器(NCO)的頻率控制字,使得NCO輸出穩定的正交調制信號。而基于本地時鐘的可配置PLL,可以配置PLL的鏈路來實時產生所需的各級時鐘,因此各個模塊間具有嚴格的同步性,保證了模塊間正確的時序,首先輸入的TS碼流進入緩沖器和變換模塊,和可配置PLL一起保證了與內部信道編碼時鐘的同步,TS碼流也變換為連續的無縫隙碼流。由于DVB-C收端的數字機頂盒在64QAM下接受符號率范圍在3M~7Mbps(TS比特流18M~42Mbps),所以在中頻調制部分經過固定32倍內插" title="內插">內插后的速率變化范圍就是96M~224Mbps,而一般FPGA芯片系統時鐘可以工作在250M~300MHz,但是在代碼綜合后一般只能工作在180MHz以下。所以對中頻調制部分的CIC濾波器內插因子設為3倍或者4倍可調,總的內插倍數為24或者32,對3M~7Mbps的符號率分為兩段, 當符號率低于4Mbps時,CIC濾波器內插因子設為4倍;當符號率高于4Mbps時, CIC濾波器內插因子設為3倍。這樣經過內插后的速率變化范圍分別為96M~128Mbps和96M~168Mbps,這樣既可以滿足NCO的輸入頻率大于產生的正交信號頻率2.5倍以上,又可以降低FPGA的系統工作頻率。這種可變內插因子和實時補償NCO頻率控制字的實現方法避免了符號率過高而要求過濾TS碼流空包來降低中頻調制速率的麻煩,而且因為空包過濾涉及到PCR(程序參考時鐘)修改和調整后的TS流速率不確定帶來的難以與內部系統時鐘同步的問題。這樣充分利用了FPGA的可配置特性對DVB-C信道編碼和中頻調制進行全數字化處理,在提高集成度的同時也降低了實現的復雜性。
1 TS流信道編碼
信道編碼部分參照DVB-C標準,TS流首先輸入環行緩沖器,進行碼率變換和幀檢測。當碼率過低或過高時造成下溢出和上溢出,指示溢出錯誤;當檢測沒有TS流輸入時,自動切換到空包發送狀態,以維持調制器正常和收端機頂盒解調器的鎖定。隨后送給能量擴展器,RS編碼和交織,完成序列的隨機化和前向糾錯編碼(FEC)。交織部分進一步打亂碼流的突發錯誤。
在星座映射和差分編碼部分,把字節并行數據流轉換為調制所需的符號流,在M-QAM調制下,一個符號對應的比特數為m=log2M,當M為{16,32,64,128,256},則m為4,5,6,7,8;碼流變換是在控制器的控制下,根據設置取相應的m值;得到符號流后對高兩位進行差分編碼,以解決四重相位模糊問題。映射是在一定的映射邏輯下,把原始符號與星座圖上某一位置的星座點聯系起來,而該點在正交,同相兩軸上的坐標值即為映射結果(自然碼),兩正交軸上的自然碼輸出值即為I、Q基帶信號。為了得到優良的調制信號,星座點之間的最小間距應盡可能取大,但同時又受到成形濾波器輸入比特數的限制,不可能取很大的輸入寬度,否則濾波器的資源占用量將急劇上升。要求星座圖是可變的,而系統中的成形濾波器數據輸入寬度一般是固定的,所以應選取一個合適的映射結果集合,以利用成形濾波器的計算精度。以下給出用5bit表示的M-QAM,使從16QAM到256QAM的情況都能較好地利用成型濾波器的計算精度:16QAM:{±5,±15},32QAM:{±3,±9,±15}; 64QAM:{±2,±6,±10,±14};128QAM:{±1,±3,±5,±7,±9,±11};256QAM:{±1,±3,±5,±7,±9,±11,±13,±15}。本文主要針對64QAM進行了論述,筆者對映射的星座坐標采用補碼表示,以方便后面濾波器的運算處理。
2 中頻調制
2.1 2倍采樣率奈奎斯特濾波器
星座映射得到的5位寬的數據進入奈奎斯特(Nyquist)濾波器,由于DVB-C標準規定的平方根升余弦濾波器的滾降系數a為0.15,通帶紋波小于0.4dB,阻帶衰減大于43dB。在Matlab工具下采用等波動分段加權最優濾波器設計法,設計了2倍采樣率fs,歸一化后的Wp(通帶截止頻率即濾波器幅頻下降到-3dB)為0.5π,Ws(阻帶開始頻率)為0.575π, 分段加權為三段加權:通帶加權系數為0.977 45,過渡帶加權為9.774 5e-005,阻帶加權為1;得到了通帶紋波小于0.006 089 1dB,阻帶衰減大于67.677dB,階數為96,97個抽頭系數且奇對稱的根升余弦濾波器。采用系數奇對稱是為了保證有限沖擊響應濾波器(fir)具有嚴格的線性相位。系數進行14bit量化后,通帶紋波小于0.077 527dB,阻帶衰減大于61.115dB,如圖2。量化后的系數如下,由于對稱性只給出前49個:{-2,-2,1,0,-3,-2,3,0,-5,0,4,-3,-6,4,5,-9,-5,12,2,-17,1,19,-6,-23,12,22,-21,-20,29,11,-41,2,51,-25,-64,57,76,-106,-88,174,98,-278,-107,450,113,-826,-118,2593, 4216}。
對Nyquist濾波器量化后的系數編寫了Verilog代碼。該濾波器的輸入數據寬度為5bit,濾波輸出數據寬為14bit。采用fir直接實現結構,為提高代碼的運算速率,在分級求和中的每一級使用了寄存器;為減小在運算時溢出精度,內部乘積的寬度為19bit,求和寬度為26bit。對該設計Verilog代碼在modelsim Se 5.8 下仿真,輸入5位寬的隨機數,仿真輸出得到的數據在matlab下調用,得到幅頻特性,如圖3,可以看到該濾波器的頻譜特性非常理想(注:圖2在0~π歸一化,圖3在0~2π歸一化)。
在quartus 4.1環境下,調用器件為stratix ep1s25f780c05的庫,經過綜合后該代碼需要4300 LE(logic element),約77 400 邏輯門;由于要對星座映射后得到的I路和Q路正交信號分別濾波,而2倍采樣率濾波器為上采樣,在輸入數據間進行了插零,所以實際的濾波器運算在每個時鐘下只利用了一半的抽頭系數,因而可以將IQ兩路合為一路,用一個濾波器實現IQ兩路濾波,其實現框圖如4。
從圖4中可以看到,乘和運算ab兩部分對按序移入97個寄存器的偶數和奇數部分的數據分別進行計算。用IQ_syn作為選擇信號,當其為0時,將乘和運算a部送給I路, 將乘和運算b部送給Q路,而當它為1時,將乘和運算a部送給Q路, 將乘和運算b部送給I路,這樣經過IQ合路共用一個Nyquist濾波器,修改后的代碼經過仿真,性能不變,綜合后大約4 700LE,只增加約300LE,大大節約了硬件資源。同理后面的兩個半帶濾波器也進行了復用,進一步節約了硬件資源。
2.2 2個級連2倍采樣率半帶濾波器
由于Nyquist濾波后的信號要與NCO產生的正交信號相乘,信號必須在數字域中內插與產生正交信號的NCO輸入速率相一致,參照一些文獻介紹的內插濾波器設計,采用級連兩個半帶濾波器,以及3或4個級聯積分梳妝(CIC)濾波器,在實現復雜度和性能上是一種比較好的實現方式。
根據半帶濾波器的特性:第一個2倍內插半帶濾波器的設計參數:Wp為0.25π,Ws=π-Wp=0.75π(由于前面Nyquist濾波器作了2倍采樣,所以歸一化通帶頻率為:(1/2)*(1/2)π), 通帶紋波為0.01dB,采用等波動最小階設計法,得到14階、15個抽頭系數中心對稱的半帶濾波器。實際上半帶濾波器有一半系數為零,所以只需要其一半的乘加器,對系數14bit量化,其值為h:{-31,0,168,0,-593,0,2 502,4 096,2 502,0,-593,0,168,0,-31},得到幅頻特性如圖5(b) ,阻帶外衰減大于65dB。
對量化后半帶濾波器系數編寫Verilog代碼,在modelsim Se 5.8下仿真,輸入14位寬的隨機數,仿真輸出得到的數據在Matlab下調用,其濾波后的幅頻特性如圖5(a);由于半帶濾波的輸入14bit寬,所以內部乘積為28bit寬,求和為32bit寬,Verilog代碼經過綜合后約需要930 LE,約16740邏輯門。
同理第二個半帶濾波器的設計參數:Wp為0.125π,Ws=0.875π,通帶紋波為0.01dB, 得到最小6階,7個抽頭系數, 對系數14bit量化,其值為h:{-288,0,2 334,4 098,2 334,0,-288},阻帶外衰減大于60dB;對實現的Verilog代碼經過綜合后約需要476LE,約8568 邏輯門(注:圖5(b)在0~π歸一化,圖5(a)在0~2π歸一化)。
2.3 級連型積分梳妝(CIC)濾波器
因CIC濾波器就是級連簡單整系數矩形窗濾波器,它的系數全為整數1,其階數與轉換因子R一致,所以CIC濾波器的系統函數為:,頻率相應為:
。這里分別給出轉換因子為3和4的頻譜,如圖6(注:圖6在0~2π歸一化)。可以看到帶外抑制分別為38dB、45dB,因為在CIC濾波前,已經作了8倍內插,當轉換因子為3的3倍內插時,可以看到在通帶(1/8×1/3=0.041 7)內,其頻譜傾斜小于0.25dB;當轉換因子為4的4倍內插時,可以看到在通帶(1/8×1/4=0.031 3)內,其頻譜傾斜也小于0.25dB,而DVB-C標準中允許的帶內波動小于0.4dB。因此,CIC濾波所引起的通帶傾斜在可接受的范圍,不必進行CIC濾波補償。
2.4 數字壓控振蕩器(NCO)和實時相位補償計算
經過CIC濾波后出來的IQ兩路符號速率被內插到原始符號速率的24倍或者32倍,該速率與NCO的系統速率一致。該信號與數字壓控振蕩產生的正交信號相乘,產生了正交的調制到中頻的數字信號。這里數字壓控振蕩器產生正交信號的原理就是通常的數字信號直接合成(DDS)技術。由于輸入的符號率是可變的,所以送給NCO的系統時鐘也可變,并由可編程的PLL(相位鎖定環)根據輸入符號率調整,包括對CIC內插倍數的控制,使得NCO的輸入時鐘始終滿足工作要求,同時控制NCO的頻率相位控制字來達到輸出穩定的中頻。其原理框圖見圖1。其補償的相位控制字inc_phase(16位寬)的計算原理如下:
inc_phase=(2N×Fm)/fs; fs=Fts×(8/M)×K×L
在這里,N為相位控制字的字寬16,Fm為NCO輸出的正交信號的頻率,需要調制輸出的中頻為36.65MHz, fs為NCO工作的系統頻率,Fts為TS輸入的字節速率,M為相應的2M正交幅度調制(QAM),K為CIC濾波前內插因子為8,L為CIC的內插轉換因子為3或者4;假設M為6,L為4,將以上的值代入可得以下的公式:
inc_phase=(56 294)/Fts;
Fts的速率為2.25M~5.25Mbps,取小數位寬為10位,整數位寬為3位,共13位寬度,即表示誤差為1kHz以下。在做除法運算時,被除數放大 210與除數對齊,其輸出中頻誤差小于1kHz,滿足實際應用對中頻調制器的要求。在Fts的計算當中,筆者采用本地產生的1kHz信號作為TS輸入時鐘的計數使能信號,計數精度小于1kHz,其計數器的寬度等于上面除法寬度,為13位,將得到的值與(56 294×210位寬為26位無符號數)相除,得到的商從低位向高位取16位,送給inc_phase,作為中頻補償值。同理 L=3,用以下式子inc_phase=(42221)/Fts計算,得到的值作為中頻補償值。
2.5 反SINC濾波器
當數字信號要變回模擬信號、送給D/A變換器時,由于數模轉換器的采樣和零階保持帶來SINC效應,改變了在通帶內頻譜特性,所以在送給D/A轉換前,要做相應的反SINC濾波。
調制信號的表示:S(ω)=αSα(ω)e-jωτ/2;Sα(ω)=sin(ωτ/2) /(ωτ/2);α=τ/Ts; τ是采樣脈沖寬度;Ts=1/fs=2π/ωs是采樣周期; 通常τ=Ts,因此有:S(ω)=sin(ωTs/2)/(ωTs/2)e-jωTs/2= sinc(ωTs/2)e-jωTs/2。
反SINC頻譜函數為:|H(ω)|=1/|sinc(ωTs/2)|,0≤ω≤ωs/2。
選擇頻率補償范圍為:DC~0.4fs;紋波系數0.01dB,設計了一個11階的濾波器,其系數做13比特量化,即:{-8,32,-90,206,-609,6304,-609,206,-90,32,-8},可以把系數放到matlab里面看它的頻譜特性。
3 控制部分
整個控制部分包括:(1)對輸入TS流的速率檢測;(2)實時計算可配置PLL的鏈路數據,輸出系統所需要的分配時鐘;(3)調整補償的頻率控制字給NCO,使得輸出穩定的中頻正交信號;其中(1)、(3)部分上面已經介紹。對(2)部分,系統工作需要的各個同步時鐘包括:信道編碼時鐘、星座映射時鐘、后面的多級內插濾波用的時鐘(Nyquist濾波時鐘,兩個半帶濾波時鐘,CIC濾波時鐘)。對于信道編碼時鐘,假定輸入的TS包是204字節,那么在RS編碼時就不用進行碼率變換;對于星座映射時鐘,因映射點數的變化,致使碼率發生變化,時鐘也相應發生變化。對于后面的多級內插濾波用的時鐘,它們和星座映射時鐘構成簡單整數倍關系,倍數由內插倍數決定。在復位后,首先計算TS流時鐘,用得到的該數據去初始化PLL的各級時鐘鏈路,完成后即得到了系統內部需要的工作時鐘。這里筆者調用了FPGA專用庫(stratix ep1s25f780c05的庫)的可配置PLL,詳細使用可以參照Altera 公司的技術手冊和幫助文檔。
4 整個模塊的仿真、綜合和調試
這里對整個模塊作了前后仿真,將所寫的各個模塊的Verilog代碼聯合測試仿真,測試是在modsim 5.8se環境下進行的,前級濾波器輸入的數據是5bit隨機數,周期是320ns,經過32倍內插,變為10ns,濾波器輸出速率變為100MHz/s,等于NCO的系統時鐘頻率,這樣兩路IQ信號可以直接與NCO輸出的正余弦相乘,相加(注意實際使用的D/A器件有接受有符號數據和無符號數據區分,所以需在送給D/A之前轉換一致,本文使用14寬的,AD公司的可以轉換有符號數的芯片,所以與本文數據格式一致,不用轉換到無符號格式),將仿真的輸出數據在Matlab下分析頻譜,如圖7。系統速率是100MHz, 調制中頻是36.65MHz,其中基帶比特速率18.75Mbps,基帶經過64QAM映射后符號率是3.125Mbps。從圖7中可以看到,超外帶寬(加上0.15滾降)是3.59375MHz,有效超外帶寬(為超外帶寬一半)是1.796875MHz。進行了32倍內插后,大大壓縮了有效帶寬,這樣7MHz以下的符號率就可以容易地調制到中頻上。從圖7中可以看到,基帶信號在分級內插下如何提高到與調制信號一樣的速率,最(接上頁)
終經過NCO調制后,可以看到信號頻譜從基帶搬到了所要求的中頻點,整個基帶信號帶外抑制大于50dB,很好地抑制了鏡像頻譜,可以滿足大多數的調制系統要求。
本文比較全面地論述了DVB-C的信道編碼和調制方面的細節和難點,重點放在了中頻調制部分,在對整個代碼作綜合后,需要11 000個左右LE。要整個符號率都能調制,NCO后端速率高于168MHz/s;筆者對代碼進行了優化,例如對CIC濾波器中的多級求和抽取加入了寄存器和對反SINC濾波器系數采用CSD表示,用簡單的移位加法代替乘法運算,綜合后速率可達182MHz/s,這樣整個DVB-C的符號率都可以調制。經過EFA的QAM分析儀測試,指標優于現在同類產品。不足之處是在使用FPGA的PLL時,有些時鐘速率的分頻和倍頻值的表示由于舍入誤差影響,某些速率誤差大一些。
這里綜合利用Matlab工具、modsim仿真工具、quartus 4.1 EDA軟件開發,在Altera公司推出的高端FPGA芯片EP1S25f780-5的驗證板上仿真驗證;這樣從理論到代碼實現,從代碼調試到仿真和測試,是一種比較快捷的開發驗證手段,大大縮短了實現周期。
參考文獻
1 王 方.多采樣率數字濾波器的設計與實現.無線電通信技術, 2000;26(4)
2 趙民建.全數字多星座,可變符號率QAM調制器.電路與系統學報, 2001;6(1)
3 Shen,Bo Fudan UNIV. An X_SIN(X) FIR digital filter for DVB-C DAVIC modulator. Shanghai:China 2001 IEEE 0-7803-6677-8/01
4 Digital Video Broadcasting (DVB);Framing structure, channel coding and modulation for cable systems.En300 429 V1.2.1(1998-04) dvb-c
5 Koukourlis C.S. A general purpose differential digital modu-lator implementation incorporating a direct digital synthesis method. member, IEEE eee transactions on broadcasting, December 1993;39(4)
6 胡廣書. 數字信號處理——理論,算法與實現. 北京:清華大學出版社, 1997
7 Bernard Sklar(美)著,徐平平譯.數字通信——基礎與應用(第二版).北京:電子工業出版社,2002
8 貝斯(美)著,劉俊,胡永生譯.數字信號處理的FPGA實現.北京:清華大學出版社,2002