新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于定點DSP的軟件鎖相環的設計和實現

        基于定點DSP的軟件鎖相環的設計和實現

        作者: 時間:2008-09-11 來源:網絡 收藏
        低軌小衛星通信是近年來衛星通信應用中一個方興未艾的重要領域,“創新一號”小衛星是我國研制的具有完全自主知識產權的存儲與轉發通信小衛星,cascom手持終端是專門為這顆小衛星研制的低功耗地面手持通信終端,支持調制數據速率達76.8kbps的BPSK窄帶信道。基于TI公司的低功耗16位定點數字信號處理器TMS320VC5510(最高運算能力為200MIPS),完全用軟件實現低中頻數字接收機,其中包括執行載波恢復功能的軟件鎖相環SPLL(Software Phase-Locked Loops)。在用浮點算法實現軟件鎖相環時,由于TMS320VC5510是一個定點DSP處理器,沒有浮點處理單元,只能用編譯器產生模擬浮點運算的指令,運算量需要67.2MIPS,效率很低,因此需要一種能在TMS320VC5510上執行的定點算法,有效地降低運算量。本文提出了一種48位定點擴展精度算法實現SPLL,提高了效率,減少了運算量,同時保證了環路計算的精度和動態范圍。

        1 軟件鎖相環

        1.1 軟件鎖相環的結構

        圖1表示軟件數字接收機中的解調器。它包括一個由改進的costas環路[1]構成的載波跟蹤環路。

        采樣后的中頻信號經過數字混頻,濾掉高頻分量,通過改進的costas環路產生控制信號,控制數控振蕩器(NCO)得到新的本振參考信號。其中的相位檢測器和環路濾波器結構如圖2所示。

        1.2 軟件鎖相環的設計

        由圖2可見,SPLL的計算由計算相位誤差和更新環路中間變量、輸出控制信號兩部分組成。算法描述可用偽碼表示:

        算法描述中的中斷周期就是環路采樣時間間隔。

        中斷發生后,第一步讀取基帶同相項數據和正交項數據

        A是基帶信號幅度,θe是相位誤差。第二步計算硬判決的同相數據乘以相位誤差。

        由式(3)、(5)和(6)得:

        即把同相數據硬判決后結果乘以正交項數據后再乘以歸一化因子K_norm。K_norm初始值由I_baseband和Q_baseband的初始值決定,

        由于定時恢復環路和AGC(自動增益控制)環路的作用,K_norm在解調過程中近似保持恒定。第三步更新環路中間變量s_pll(n),

        f0是固定的NCO中心頻率。至此,一次完整的SPLL計算完成。

        在第三步和第四步計算中,環路濾波器系數C1,C2可以通過環路采樣時間間隔T(或者環路更新時間間隔)、環路自由頻率ωn及環路阻尼系數ζ確定,如下兩式[2]:

        Kd為相位檢測器的增益,由于在實現軟件鎖相環時,基帶信號的同相和正交分量都經過歸一化處理,故Kd=1;K0為數控振蕩器的增益,K0=2πT。T為調制數據速率的倒數(1/76800),ζ一般取0.707。在啟動載波恢復之前有一個頻率捕獲過程,通過1024點的FFT,可保證接收的中頻信號與本振信號之間的頻率差Δf0最大不超過75Hz。另外系統設計要求SPLL的捕獲時間(pull in time)小于50ms,由此可以確定環路自由頻率ωn。ωn>150(radHz),取ωn=300(radHz)。將K0、Kd、ζ、ωn、T代入式(3)、(4)得,C1=67.3273309,C2=0.1859953。

        2 48位定點擴展精度算法

        圖3描述的算法在TMS320VC5510上用C語言直接利用浮點運算實現時,只能通過C編譯器產生模擬浮點運算的定點指令。這種方法效率很低,每次環路計算需耗費875個指令周期。在調制數據速率為76.8kbps的數字接收機中,需要67.2MIPS的運算量。為了降低環路計算的運算量,同時保持浮點運算具有動態范圍大、精度高的優點,筆者提出了一種48位定點擴展精度計算的方法。參加運算的每個操作數由三個16位定點數W2、W1、W0級聯表示,其中高16位為二進制補碼的整數部分,低32位為二進制補碼的小數部分,符號位在最高位,也可稱為Q15.32格式,如圖3所示。

        一個Q15.32數的表示范圍是(-32768,32768),小數分辨率是遠遠超過16位定點表示的精度,以下用加(ADD_48)、減(SUB_48)、乘(MULT_48)三種基本運算來說明定點擴展精度算法。操作數X由X2、X1、X0構成,操作數Y由Y2、Y1、Y0構成,結果W由W2、W1、W0構成。執行48位加法運算時,W2W1W0=X2X1X0+Y2Y1Y0,首先把小數部分X1X0和Y1Y0相加,結果保存到W1W0中,產生的進位位CARRY與X2、Y2相加,結果保存到W2。執行48位減法運算時,W2W1W0=X2X1X0-Y2Y1Y0,首先X1X0減去Y1Y0,結果保存到W1W0,產生借位位BORROW,再由X2減去Y2和借位位BORROW,結果保存到W2。兩個Q15.32數相乘時,乘積是一個Q30.64數,出于前面實現SPLL時對動態范圍和計算精度的要求,該Q30.64數可以雙向截位為Q15.32的48位定點數。具體做法是保留符號位和整數部分的低15位以及小數部分的高32位。48位定點數的乘法由圖4所示。

        除了以上加、減、乘三種基本運算外,48位定點擴展精度算法還包括取負(NEG_48)、數據拷貝(MOVE_48)兩種操作。取負操作即將X1X0取負,結果保存到W1W0,產生借位位BORROW,再用0減去X2和借位位BORROW,結果保存到W2;數據拷貝,即把X1X0拷貝到W1W0,X2拷貝到W2

        在TMS320VC5510可編程DSP的基礎上,利用48位定點擴展精度算法實現SPLL。在實現過程中,采取了模塊化的思路。首先,把SPLL整個環路計算封裝成一個可調用的C語言函數。函數參數包括C1、C2、K_norm、基帶信號的I及Q分量、環路中間變量、調整頻率。DSP的中斷例程(ISR)可以直接調用環路計算函數,而且通過輸入不同的C1、C2,適用于不同的載波恢復環路中。另外,在函數內部用匯編語言進行編程,以充分利用DSP的計算能力,把48位定點擴展精度算法的五個基本操作封裝成用匯編指令寫的宏(macro),對照計算流程,調用這些宏,完成SPLL的核心計算部分。經統計,每次環路計算需132個指令周期,總的運算量10.1MIPS,是浮點算法運算量(67.2MIPS)的14%。

        用48位擴展精度算法實現軟件接收機中的SPLL,解決了浮點算法運算量大的問題,同時還具備浮點算法動態范圍大、精度高的優點,已經成功應用于“創新一號”小衛星地面手持低功耗通信終端中。另外,本文提出的SPLL實現算法,通過修改環路濾波器系數,也可以應用在其他軟件接收機中,具有很好的擴展性。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新邵县| 吉木萨尔县| 南乐县| 万安县| 德江县| 汾阳市| 沈阳市| 东丰县| 交城县| 天水市| 拜城县| 从江县| 沂源县| 东乌珠穆沁旗| 赣榆县| 连南| 东台市| 榆林市| 阿鲁科尔沁旗| 安新县| 洛阳市| 福泉市| 磴口县| 海阳市| 余庆县| 宁强县| 山阴县| 怀远县| 潮安县| 益阳市| 彭水| 兴海县| 嘉义县| 弥渡县| 延安市| 潮州市| 靖江市| 福建省| 宁河县| 通海县| 永川市|