張云佐
(桂林電子科技大學 研究生學院,廣西 桂林 541004)
SDR基于通用硬件平臺,通過軟件提供多服務、多標準、多模式、可重構的無線電通信。核心思想是最大限度地用易于重構的數字電路代替模擬電路來構建通信系統以適應其智能化的發展趨勢[1]。SDR有多種具體應用,從功能上可以細分為單用戶型、多用戶型等類型。多用戶型SDR是指一套SDR系統可以實現對多個用戶的數據進行合成后再用一個信道進行傳輸,可以有效提高傳輸容量、效率、信道利用率。其首要問題是解決各用戶數據碼流的綜合與分解。
對于高速數據碼流的綜合與分解已經有了相當成熟的數字復、分接技術與理論,但對零次群數據碼流的研究較少。在SDR內部有大量的低速信息需要傳輸[2],多支路信息在同一信道進行有效傳輸就必須對數據進行打包(綜合)處理。要實現傳輸設備和數據終端間的速率和容量的匹配,解決現有部分傳輸設備和終端設備之間不兼容的問題,就要做到設備的輸入端支持多種速率的數據輸入。基于這種發展需求,本文設計實現了可進行數據綜合的新型自適應系統,具有很高的經濟價值,對SDR關鍵技術的研究有重要的推動作用。
數據綜合系統在SDR中的功能是完成數據的綜合與分解,以達到將多路低速數據無損合成、實現高效率傳送的目的。在發送端,主要是對多個用戶的低速數據進行合成后,形成一路高速碼流發送出去;在接收端,對經過解調后的數字信號進行分解,分別送達相應用戶終端,完成多用戶通信。
本設計基于FPGA,采用新型算法設計實現了自適應數據綜合系統,自動識別支路數據速率,動態分配傳輸信道,操作靈活,性能穩定,便于修改電路結構,節約系統資源、具有較高的實用性和可靠性。系統結構框圖如圖1所示。

系統主要由FPGA、外部標準接口、微控制器以及人機交互設備等部分組成。通過JTAG,AS,PS等下載模式可以對系統進行配置或軟件更新。
FPGA對輸入的支路數據進行自適應處理,并送入綜合模塊和管理模塊;綜合后的數據進行組幀、接口選擇和數據處理后發射出去;系統提供了DUC、RS-232、3G、以太網等多種標準的接口。
對接收到的數據下變頻處理后送入幀同步模塊,在管理模塊的控制下分解成各支路數據進行輸出;管理模塊是系統的控制中心,協調FPGA內部各模塊的工作、把FPGA內部狀態信息送入微控制器處理后進行顯示,同時接收外部輸入設備的控制。
支路數據的時鐘提取是數據綜合系統自適應性實現的前提,只有提取到精確時鐘才能對待傳輸數據進行碼速調整和自適應綜合。鎖相環時鐘提取技術已經相當成熟,并在工程實踐中得到了廣泛應用。但它基于閉環結構按步進行相位調節,同步時間與調整精度相互制約,無法滿足數據綜合系統對速率變化較大的支路數據自適應的需求。本文基于開環結構,充分利用支路數據碼元跳變邊沿所攜帶的時鐘信息,采用最窄脈沖檢測、實時鑒相和動態分頻技術進行時鐘提取,滿足了設計需求。
基于FPGA進行時鐘提取,最簡單的辦法就是利用FPGA的片上鎖相環。但這種鎖相環要求的輸入時鐘范圍是10~100 MHz,無法滿足低速率支路數據的時鐘提取。自主設計的鎖相時鐘提取電路結構如圖2所示。首先,將輸入的歸零碼元進行過零提取,整形為不歸零碼,再與本地分頻后的時鐘進行鑒相,輸出超前或滯后脈沖,脈沖寬度的大小由兩者的相位相差決定[3]。本地晶體振蕩器產生高頻率時鐘,經分解成2路相位差為180°的窄脈沖信號,分別與滯后或超前脈沖作用,實現對脈沖的增添或減少控制,最后經分頻,再與輸入的碼元進行相位比較,不斷重復相位比較,脈沖增減控制,最終實現本地時鐘與碼元發送時鐘的同頻同相,提取出支路數據時鐘。

提高本地高頻時鐘的頻率可以有效提高調節精度,但減小了調節步進值;失步后,需要重新按步反饋調整,同步速度慢。接收碼元出現連“0”或連“1”的情況下,鎖定時間會很長。但反饋結構具有失鎖后的自我調節性,碼元相位出現抖動時,仍然可以輸出穩定的時鐘。
基于開環結構,充分利用碼元跳變沿攜帶的時鐘相位信息,用計數器值來計量最窄碼元寬度,實時鑒相和選擇替換相結合進行設計,既實現了時鐘的精確快速提取,又保留了鎖相環的自我調節性[4]。具體實現如圖3所示。

數字濾波器將輸入碼元中的毛刺濾除掉,狀態轉移保證了在碼元出現連“0”或連“1”時仍然有固定的邊沿短脈沖輸出,去抖動模塊對前向抖動和后向抖動分別處理,消除了抖動累積。本設計與傳統設計方法相比,可以快速精確地提取到支路數據時鐘,并進行實時輸出;同時,這種電路結構更節省系統資源。
2.2.1 鑒相器的實現
充分利用支路數據碼元的跳變沿特性,先將碼元輸入到2個相連的移位寄存器;在高頻時鐘的驅動下,2個寄存器輸出值相位相差1個高頻時鐘周期的大小,2個值經過邏輯運算,便可鑒別出碼元的上升沿和下降沿。核心部分的實現代碼如下:

當輸入的數據碼流有上升沿或下降沿時,邊沿檢測電路便輸出寬度為1個高速時鐘周期的脈沖。
2.2.2 最窄脈沖檢測
碼元寬度等于支路數據的整數倍時鐘周期,檢測出最窄碼元并以其跳變沿作為閘門信號去控制高頻時鐘驅動的計數器,用此計數值對本地高頻時鐘進行分頻,便可提取出支路數據的時鐘。
由于高速時鐘的頻率與數據碼流時鐘頻率的n倍有一些差異,因此,該電路要根據數據碼流的邊沿來控制n分頻器的置位,不斷調整分頻器輸出的相位,使得n分頻器輸出的時鐘頻率的平均值正好是數據碼流時鐘的頻率。調整n分頻器置位值,可以改變提取時鐘與數據碼流間的相位關系。這樣提取的時鐘可以很好地跟蹤數據碼流的抖動,改善系統的抖動容限性能,由此引起的提取時鐘的抖動對綜合系統的性能無影響。
最窄脈沖檢測是一個實時動態進行的過程,計數器值的大小代表了碼元寬度。先將2個跳變沿之間計數器值保存到寄存器cnt_reg2中,后續計數器值cnt_reg1與cnt_reg2進行比較,cnt_reg2中保存較小計數值,并開始下一輪的計數。核心部分的實現代碼如下:

需要特別注意的是:寄存器cnt_reg2的初始化值不能為0或者太小,要根據設計需求進行設置以保證其值大于最窄碼元寬度的計數值。
2.2.3 動態分頻
將cnt_reg2中的數值送入分頻器,作為對本地高頻時鐘的分頻系數。每當本地時鐘上升沿來到時,count計數加1,當計數值達到cnt_reg2保存的值的一半時,輸出電平反轉。在這里對cnt_reg2值進行奇數、偶數單獨處理,保證了提取時鐘的精度和輸出占空比為50%的時鐘。核心部分的實現代碼如下:

由于cnt_reg2中的數值是動態更新的,所以分頻器也要根據cnt_reg2中的數值變化動態進行分頻。
FPGA內部電路的傳輸特性,會使提取的時鐘稍微延遲于輸入碼元。在這里設置一級觸發器,用提取的時鐘對輸入碼元進行觸發,實現輸出時鐘與輸出碼元的精確同步。
2.2.4 動態碼速調整
碼速調整是把參與綜合的各異源支路碼流調整成同步碼流。本設計的支路數據速率未知,因此碼速調整也是一個動態調整的過程。圖4為正碼速調整的原理框圖。
由于需要用到數據緩沖器,為了保證緩沖區換頁正確,一般用綜合器時鐘去讀入各支路信息,當支路速率與合路速率相差過大時,集中寫入緩沖區時會出現重復寫入現象,即1 bit碼元可能會被寫入2次以上,導致綜合錯誤。在這里,將碼元進行“1”位保護后可避免重復讀入,即將碼元的“1”位按讀入時鐘寬度縮短。

碼速恢復是把接收到的解調后的合路信號分解成參與綜合的各異源支路碼流,并輸出到終端用戶。碼速恢復中主要用到了多數判決法和有限狀態自動機模型。有限狀態自動機原理如圖5所示。
該算法不僅利用了前面若干幀的碼速恢復狀態和先驗的概率統計分布[5],而且考慮了低次群路的同步碼誤碼情況這個后驗信息,可以大大增強碼速恢復判斷的正確性。
2.2.5 信道自動分配
經多年探索,我國已經統一采用以2 048 kbit/s為基群的數字速率系列,針對此速率系列,向下兼容的數字終端設備速率一般為以64 kbit/s為基礎的倍數關系數字傳輸速率。
根據工程經驗,將綜合器的支路數定為最大8路,速率定為具有代表性的64/128/256/512/1 024 kbit/s,而群路信息則設置為不小于各支路信息速率的總和,可為128/256/512/1 024/2 048 kbit/s,在群路速率大于等于各支路信息速率總和的情況下,動態分配信道,支路數在1~8之間動態變化。
2.2.6 系統測試結果與分析
在Quartus II 9.0中編輯程序,編譯通過后,設置參數,進行仿真,關鍵部分仿真波形如圖6a所示。可見,輸出碼元與輸出時鐘達到完全同步,邊沿無相位延遲,且時鐘動態跟蹤碼元相位。把綜合與分解集成在一起的系統程序下載到FPGA中進行自環測試,用信號源作為支路數據輸入,在輸出端用示波器觀測可以得到如圖6b所示波形,改變輸入信號頻率,輸出信號隨之變化,驗證了系統自適應的正確性。系統檢測到輸入碼元的最窄脈沖,即可提取到精確時鐘,十分迅速。


綜合考慮系統對速度、資源、功耗的要求,以及后續的功能擴展,本設計采用Altera公司的FPGA Cyclone III芯片EP3C40Q240C8。硬件電路主要包括FPGA供電模塊、各種標準接口以及下載模塊的設計。
本設計采用的FPGA正常工作時需要3種電源,其中內核為1.2 V,I/O接口為3.3 V,FPGA內部鎖相環為2.5 V。為滿足設計需求,本設計采用2種電路供電,采用LT1959芯片將5 V電源轉換成1.2 V電源輸出,為芯片內核供電。采用AS1117將5 V電源轉換成3.3 V和2.5 V,為電源供電。LT1959的調試電路圖如圖7所示。

經測試在輸出端可以得到1.2 V的電壓,其峰峰值為30 mV,Cyclone III芯片正常工作允許的電壓波動最小值為50 mV,滿足要求。
圖8所示為AS117的通用調試電路,在實際調試中,采用5 V-2.5 V的AS1117,5 V-3.3 V的AS1117芯片各1片。在實際調試中,分別得到2.501 V和3.298 V的輸出電壓,在芯片允許的電壓范圍內,可以滿足系統需求。

本設計能實現JTAG,AS,PS這3種下載模式[6],其設計電路圖如圖9所示。
設計PCB時,為了便于系統測試,3種下載模式單獨設計,并用跳線進行選擇設置。

軟件采用Verilog語言,基于數字復、分接[7]的經典理論和自主設計的新型算法進行設計,核心部分框圖如圖10所示。
軟件主要包括自適應調整、數據恢復、誤碼測試、前向糾錯以及同步綜合與分解等部分。同步綜合與分解是數據綜合系統的核心;自適應調整和數據恢復是系統設計的創新點所在;前向糾錯主要用來提高數據復接系統的穩定性和可靠性,是對復接過程中產生的錯誤的及時修改與完善;誤碼測試[8]是將當前系統誤碼情況處理并送到人機界面進行顯示,表征系統當前的可靠程度;同步時鐘提取是實現正確分接的重要前提;各個系統模塊協調工作共同完成自適應數據綜合的功能。

基于FPGA,采用自適應新型算法設計實現了SDR中的數據綜合系統。主要功能及特點如下:
1)實現了非標準支路碼流的自適應綜合,碼速自動識別、支路通道動態分配。
2)設計實現的新型時鐘提取方案,具有快速同步、自我調節和節省資源等特點。
3)開機后系統進行自我檢測、同步自動恢復并且實時檢測誤碼,穩定性好。
4)具有完善的人機界面、多種功能可選,接口標準,通用性強。
5)與現有的SDR技術產品接口兼容,可直接應用。6)系統功能可隨時通過軟件更新。
以上功能均已通過硬件實現,驗證了系統設計的可行性和可靠性。
測試儀器包括函數信號發生器、頻譜儀、數字電壓表、示波器等。測試結果如下:
1)復接總路信號速率≤2.048 MHz;
2)合路接口類型:10MbaseT,IEEE802.11b,DDS模塊接口,3G標準接口;
3)輸入支路碼流速率:50 bit/s~2 000 kbit/s;
4)支路通道數:1~8路(根據支路速率動態分配)。
以上測試結果達到了系統設計的指標需求。
針對多用戶型SDR提出的新型快速的時鐘提取方案,快速準確地實現了支路數據時鐘提取,滿足了數據綜合系統自適應性的預期設計要求。系統具備開放性、靈活性和軟件可移植性,廣泛應用于辦公室、家庭等各種中、低速數據傳輸和交換設備中,有良好的應用前景,具有較大的商業應用價值。
另外,本文提出的時鐘提取方法在SDH系統以及ATM系統中都有著廣泛的應用前景。
[1]楊小牛,樓才義,徐建良.軟件無線電原理及應用[M].北京:電子工業出版社,2001.
[2]向新.軟件無線電原理與技術[M].西安:西安電子科技大學出版社,2008.
[3]段吉海,黃智偉.基于CPLD/FPGA的數字通信系統建模與設計[M].北京:電子工業出版社,2004.
[4]ZHANG Ruiyuan,GEORGE S L R.Fast acquisition clock and data recovery circuit with low jitter[J].IEEE Journal of Solid-State Circuits,2006,41(5):1016-1024.
[5]孔凡青.時分復用設備動態幀結構技術[J].無線電通信技術,2005,31(4):12-14.
[6]Altera Corporation.Altera configuration handbook[EB/OL].[2010-09-28].http://www.altera.com/literature/lit-config.jsp.
[7]陳建,楊秀芝.TS流復用器的時分復用設計[J].電視技術,2009,33(10):13-14.
[8]孫玉.數字復接技術[M].北京:人民郵電出版社,1991.