• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. ACS880-07C
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      橫河電機-23年10月11日
      2024
      工業(yè)智能邊緣計算2024年會(huì )
      2024中國自動(dòng)化產(chǎn)業(yè)年會(huì )
      2023年工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      基于DSP混合編程的LMS自適應濾波算法實(shí)現
      • 企業(yè):《自動(dòng)化博覽》     領(lǐng)域:自動(dòng)化軟件     行業(yè):網(wǎng)絡(luò )通訊    
      • 點(diǎn)擊數:1563     發(fā)布時(shí)間:2014-07-13 17:54:48
      • 分享到:

          摘要:本文分析了LMS自適應濾波算法的基本原理,并結合2FSK信號解調的實(shí)例,在TMS320VC5416器件上分別采用C語(yǔ)言和混合編程方法對LMS自適應濾波算法進(jìn)行了實(shí)現。結果表明,采用混合編程的LMS自適應濾波實(shí)現方法具有軟件接口簡(jiǎn)單,運行速度快,易于進(jìn)行實(shí)時(shí)信號處理等特點(diǎn)。

          關(guān)鍵詞:LMS算法;DSP;混合編程

          Abstract: This paper analyzes the basic principle of LMS adaptive filtering algorithm, and combining with the example of 2FSK signal demodulation, realizes the LMS adaptive filtering algorithm adopting C language and mixed programming method on the device TMS320VC5416. The result shows that the realized method of the LMS adaptive filtering algorithm has advantages such as simple software interface, fast running speed, easily realizing real-time signal processing. 

          Key words: LMS adaptive filtering algorithm; DSP; Mixed programming

          1 引言

          在許多數字電子系統中,為了提取信號有用信息,我們可以使用數字信號處理器件(DSP)對采樣后的數字信號進(jìn)行算法處理。DSP進(jìn)行算法處理常用C語(yǔ)言或匯編語(yǔ)言進(jìn)行編程。使用C語(yǔ)言可以大大提高軟件開(kāi)發(fā)速度和可讀性,方便軟件的修改和移植,但是C代碼的效率無(wú)法與匯編代碼相比。使用匯編語(yǔ)言雖然編寫(xiě)比較繁雜,可移植性差,但可以更為合理充分利用DSP芯片提供的硬件資源,代碼效率高[1]。

          本文介紹自適應濾波(LMS)算法的基本原理,結合其在2FSK信號解調中的應用,使用C語(yǔ)言與匯編混合編程的方法在TMS320VC5416 DSP器件上進(jìn)行實(shí)現,并指出混合編程在該項應用中的優(yōu)勢。

          2 自適應濾波器的結構和算法

          2.1 自適應濾波器的結構常規濾波器具有特定的特性,輸入信號根據濾波器的特性產(chǎn)生相應的輸出。但是實(shí)際應用是反過(guò)來(lái)要求的,即對濾波器輸出的要求是明確的,而濾波器特性無(wú)法預先知道,這就必須依賴(lài)自適應濾波技術(shù)。

          自適應濾波器的權系數可以根據一種自適應算法來(lái)不斷修改,使系數的沖激響應能滿(mǎn)足給定的性能。圖1為自適應濾波器的一般形式。

                         
                                            圖1 自適應濾波器結構圖

          自適應濾波器有兩個(gè)獨立的部分:一個(gè)按理想模式設計的濾波器,一套自適應算法,用來(lái)調節濾波器權系數使濾波器性能達到要求。自適應濾波可采用FIR或者IIR結構,由于IIR濾波器存在穩定性問(wèn)題,因此一般采用FIR濾波器作為自適應濾波器的結構,自適應FIR濾波器結構可以分為三種結構類(lèi)型:橫向型結構、對稱(chēng)橫向型結構、格型結構。本文采用的是自適應濾波器設計中最常用的FIR橫向型結構。圖2為橫向濾波器的結構示意圖。

                         
                                            圖2 橫向濾波器的結構示意圖

          其中x(n)為自適應濾波器的輸入;W(n)為自適應濾波器的權值:W(n) = {W0(n),W1(n),W2(n),…,WN-1(n)};y(n)為自適應濾波器的輸出:
          

          2.2 自適應濾波器的算法

          最常用的自適應算法是最小均方誤差算法,即LMS算法(Least Mean Square),LMS算法是一種易于實(shí)現、性能穩健、應用廣泛的算法。所有的濾波器系數調整算法都是設法使y(n)接近d(n),所不同的只是對于這種接近的評價(jià)標準不同。LMS算法的目標是通過(guò)調整系數,使輸出誤差序列e(n)=d(n)-y(n)的均方值最小化,并且根據這個(gè)判據來(lái)修改權系數。誤差序列的均方值又叫“均方誤差”,即:
          

          其中R=E[x(n)xT(n)]為N*N自相關(guān)矩陣,它是輸入信號采樣值間的相關(guān)性矩陣。P=E[d(n)x(n)]為N*1互相關(guān)矢量,代表理想信號d(n)與輸入矢量的相關(guān)性。

          在均方誤差最小時(shí),可以得到W(n+1)=W(n)+2ue(n)X(n) (4)[2]

          式(1)、(2)、(4)構成了DSP實(shí)現的LMS算法。其優(yōu)點(diǎn)是:實(shí)現起來(lái)簡(jiǎn)單,不依賴(lài)模型,因此具有穩健的性能。

          3 自適應濾波算法的DSP實(shí)現

          本文以2FSK信號的解調為實(shí)例,分析LMS自適應濾波在DSP上的實(shí)現。2FSK信號的頻點(diǎn)為4kHz和6kHz,采樣頻率40kHz。其解調過(guò)程如圖3所示[3]:

                           
                                               圖3 2FSK信號解調框圖

          為了能實(shí)時(shí)解調2FSK信號,要求經(jīng)過(guò)一個(gè)碼元周期內就能對2FSK信號的該碼元進(jìn)行解碼判決,為了達到這個(gè)要求,必須在一個(gè)采樣間隔內完成對2FSK信號的兩次LMS濾波、平方和低通濾波處理。因此,要求DSP能快速實(shí)現LMS濾波。

          按照這種設計思想,我們在TMS320VC5416 上實(shí)現20階LMS算法的自適應濾波器,分別采用C語(yǔ)言和混合編程的方法來(lái)實(shí)現。圖4為DSP實(shí)現的程序流程圖,整個(gè)實(shí)現過(guò)程主要分為3步:

          (1)濾波運算的相關(guān)運算單元、寄存器以及變量的初始化;

          (2)根據輸入的采樣值計算濾波器的輸出求出誤差;

         (3)根據LMS算法的迭公式更新濾波器的參數,有新的采樣輸入后轉入下一次執行。

                             
                                     圖4 DSP實(shí)現LMS算法程序流程圖

          3.1 自適應濾波算法C語(yǔ)言實(shí)現

         在編寫(xiě)程序的初始化階段,首先應該進(jìn)行自適應系數、緩沖區、變量的初始化,并設置緩沖區的地址以及數據和程序在存儲區內的分配,基于LMS自適應算法的輸入數據逐步輸入到數據緩沖區,每輸入一個(gè)采樣數據,進(jìn)行一次LMS自適應濾波運算。因此,每次輸入的新采樣數據前,數據緩沖區高位地址的數據依次向低位地址數據移動(dòng),新采樣數據被存放在數據緩沖區的最高位地址,清除最低地址數據。x(n),y(n),d(n),w(n)分別定義為不同的存儲空間。以下是實(shí)現LMS自適應濾波的一段C語(yǔ)言代碼,省略了初始化和對濾波結果的處理。
          

          程序中最外層循環(huán)每執行一次,實(shí)現一次LMS自適應濾波運算。第{1}、{2}、{3}步分別實(shí)現公式(1)、(2)、(4)。

          3.2 自適應濾波算法混合編程實(shí)現

          用C語(yǔ)言編寫(xiě)的自適應濾波程序,結構清晰,易于編寫(xiě),可讀性強,易于維護。但是執行效率不高,由于在一個(gè)LMS算法中有多次迭代,而且隨著(zhù)FIR階數的增加,迭代的次數也會(huì )相應地增加,在一個(gè)采樣周期內實(shí)現對信號的LMS自適應濾波、平方和低通濾波還有一定的困難。因此可以采用匯編語(yǔ)言編寫(xiě)LMS算法來(lái)提高執行效率,但是匯編語(yǔ)言編寫(xiě)程序比較繁雜,可讀性差,可移植性差,不便于軟件的升級和維護。

          為了兼顧C語(yǔ)言和匯編的優(yōu)點(diǎn),避免其弊端,我們采用C語(yǔ)言與匯編語(yǔ)言混合編程的方法。獨立編寫(xiě)匯編程序和C程序,用匯編語(yǔ)言生成對運行速度要求較高的目標代碼模塊,用C語(yǔ)言編寫(xiě)主程序和對代碼效率要求不高的程序代碼,用鏈接器將C模塊和匯編模塊鏈接起來(lái)。采用這種方法,C程序可以調用匯編程序,并且可以訪(fǎng)問(wèn)匯編程序中定義的變量。

          采用C語(yǔ)言和匯編混合編程必須遵循一些有關(guān)的規則,否則會(huì )遇到一些意想不到的問(wèn)題。

          3.2.1 函數調接用接口規則

          C編譯器規定了一組嚴格的函數調用規則。除了特殊的運行支持函數外,任何被C函數所調用的函數都必須遵循這些規則,否則就會(huì )破壞C環(huán)境,造成不可預測的結果[4]。

          (1) 參數傳遞

          函數調用前,將參數以逆序壓入運行堆棧,即最右邊的參數最先入棧,然后自右向左將參數依次入棧。但是,對于
      TMS320C54X,在函數調用時(shí),第一個(gè)參數放入累加器A中進(jìn)行傳遞。若參數是長(cháng)整型和浮點(diǎn)數時(shí),則低位字先壓棧,高位字后壓棧。若參數中有結構形式,則調用函數給結構分配空間,其地址通過(guò)累加器A傳遞給被調用函數。

          (2) 結果返回

          函數調用結束后,將返回值置于累加器A中。整數和指針在累加器A的低16位中返回。浮點(diǎn)數和長(cháng)整型數在累加器A的32位中返回。

          (3) 函數調用時(shí)需注意的一些問(wèn)題

          參數不是由被調用函數彈出椎棧,而是由調用函數彈出。因此調用函數可以傳遞任意數目的參數至函數,而且函數不必知道有多少個(gè)參數傳遞。

          在匯編程序中,除了自動(dòng)初始化全局變量外,不要將.cinit段用作其它用途。C程序在boot.asm中的啟動(dòng)程序認為.cinit段中放置的全部是初始化表,因此將其它一些信息放入.cinit段將產(chǎn)生不可預料的結果。

          如果要定義在C程序中訪(fǎng)問(wèn)的匯編變量或調用的匯編子程序,則必須在匯編程序中用.global說(shuō)明為外部。|

          3.2.2 用匯編實(shí)現C語(yǔ)言函數

          用匯編語(yǔ)言實(shí)現LMS自適應濾波器的算法,并根據這些規則和接口規范,將編寫(xiě)的匯編代碼編譯成能在C語(yǔ)言下調用的函數。

          將被調用的LMS自適應濾波函數設計為int lms_asm(int x,int *w,int *des,int step),其中x表示一個(gè)新輸入的采樣數據點(diǎn),w表示存放FIR濾波器系數的首地址,des表示存放期望數據的首地址,step為步長(cháng),返回值是經(jīng)過(guò)LMS自適應濾波后對應的輸出。以下為該函數的匯編實(shí)現方法,由于篇幅限制,主要列出函數接口部分,省去了LMS自適應算法部分:
             
              
          
              

          4 DSP實(shí)現結果分析

          將采用C語(yǔ)言和采用混合編程的方法的實(shí)現LMS自適應濾波的方法進(jìn)行對比測試,測試平臺:運行于WindowsXp sp3的DSP集成開(kāi)發(fā)軟件CCS2.2,輸入信號為調制頻率為4KHz與6KHz的2FSK調制信號,采樣頻率為40kHz,DSP采用TMS320VC5416,主頻160MHz。

          根據測試平臺的特點(diǎn),兩個(gè)數據采樣點(diǎn)的間隔時(shí)間為25微秒,即4000時(shí)鐘周期,通過(guò)CCS2.2自帶的“View Clock”工具測試處理1個(gè)采樣點(diǎn)時(shí)調用“int lms_asm(int x,int *w,int *des,int step)”所消耗的時(shí)鐘周期,測試結果表明,完全使用C語(yǔ)言實(shí)現的算法完成1個(gè)采樣點(diǎn)的處理需耗用8000多時(shí)鐘周期,而采用C語(yǔ)言調用匯編算法的方法只需耗用400多時(shí)鐘周期。滿(mǎn)足DSP對采樣數據逐點(diǎn)處理的需求。

          5 結語(yǔ)

          本文并結合2fsk信號解調的實(shí)例,在TMS320VC5416器件上分別采用C語(yǔ)言和混合編程方法對LMS自適應濾波算法進(jìn)行了實(shí)現,在使用C語(yǔ)言算法時(shí),算法處理速率不能達到預定的要求,而使用匯編與C語(yǔ)言混合編程的方法,能在一個(gè)采樣周期內,完成LMS自適應算法,并且還能處理后續的平方低通濾波等解碼過(guò)程。這表明,采用混合編程的LMS自適應濾波算法具有編程與引用簡(jiǎn)單,運行速度快等特點(diǎn)。

          參考文獻:

          [1] 胡洪凱, 鄭紅, 吳冠. TMS320C54X DSP 混合編程的方法研究[J]. 電子技術(shù)應用, 2001, (8) : 68 - 70.

          [2] 姚天任, 孫洪. 現代數字信號處理[M]. 武漢: 華中科技大學(xué)出版社, 1999. 

          [3] 曹志剛, 錢(qián)亞生. 現代通信原理[M]. 北京: 清華大學(xué)出版社, 2003. 

          [4] TMS320C1x/C2x/C2xx/C5x Assemble Language Tools User's Guide[Z], Texas Instruments, 1999.

          作者簡(jiǎn)介

          黃勇(1978-),男,湖北洪湖人,工程師,碩士,現就職于中國船舶重工集團公司第七一O研究所,主要研究方向為信號處理。

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>