亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于DSP混合編程的LMS自適應(yīng)濾波算法實(shí)現(xiàn)

        2014-05-29 09:40:12黃勇吳運(yùn)金宋俊才中國船舶重工集團(tuán)公司第七一研究所湖北宜昌443003
        自動化博覽 2014年5期
        關(guān)鍵詞:信號結(jié)構(gòu)

        黃勇,吳運(yùn)金,宋俊才(中國船舶重工集團(tuán)公司第七一○研究所,湖北 宜昌 443003)

        1 引言

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

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

        2 自適應(yīng)濾波器的結(jié)構(gòu)和算法

        2.1 自適應(yīng)濾波器的結(jié)構(gòu)

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

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

        圖1 自適應(yīng)濾波器結(jié)構(gòu)圖

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

        圖2 橫向?yàn)V波器的結(jié)構(gòu)示意圖

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

        2.2 自適應(yīng)濾波器的算法

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

        代入y(n)的表達(dá)式(1)有:

        其中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)性。

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

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

        3 自適應(yīng)濾波算法的DSP實(shí)現(xiàn)

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

        圖3 2FSK信號解調(diào)框圖

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

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

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

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

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

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

        3.1 自適應(yīng)濾波算法C語言實(shí)現(xiàn)

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

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

        3.2 自適應(yīng)濾波算法混合編程實(shí)現(xiàn)

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

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

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

        3.2.1 函數(shù)調(diào)接用接口規(guī)則

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

        (1) 參數(shù)傳遞

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

        (2) 結(jié)果返回

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

        (3) 函數(shù)調(diào)用時需注意的一些問題

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

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

        如果要定義在C程序中訪問的匯編變量或調(diào)用的匯編子程序,則必須在匯編程序中用.global說明為外部。

        3.2.2 用匯編實(shí)現(xiàn)C語言函數(shù)

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

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

        4 DSP實(shí)現(xiàn)結(jié)果分析

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

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

        5 結(jié)語

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

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

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

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

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

        猜你喜歡
        信號結(jié)構(gòu)
        《形而上學(xué)》△卷的結(jié)構(gòu)和位置
        信號
        鴨綠江(2021年35期)2021-04-19 12:24:18
        完形填空二則
        論結(jié)構(gòu)
        中華詩詞(2019年7期)2019-11-25 01:43:04
        新型平衡塊結(jié)構(gòu)的應(yīng)用
        模具制造(2019年3期)2019-06-06 02:10:54
        孩子停止長個的信號
        論《日出》的結(jié)構(gòu)
        基于LabVIEW的力加載信號采集與PID控制
        一種基于極大似然估計的信號盲抽取算法
        創(chuàng)新治理結(jié)構(gòu)促進(jìn)中小企業(yè)持續(xù)成長
        国产精品久久久亚洲第一牛牛| 久久精品国产只有精品96| 性欧美videofree高清精品| 岛国AV一区二区三区在线观看| 国产极品喷水视频| 日韩精品免费在线视频一区| 欧洲多毛裸体xxxxx| 久久综合精品国产丝袜长腿| 欧美久久中文字幕| 亚洲av无一区二区三区综合| 内射夜晚在线观看| 日本三级欧美三级人妇视频| 久久熟女五十路| 国产精品又爽又粗又猛又黄| 亚洲av中文无码字幕色本草| 人妻少妇精品中文字幕av蜜桃| av无码天一区二区一三区| 午夜福利麻豆国产精品| 中文字幕第八页| 色偷偷亚洲女人的天堂| 日本人妻伦理在线播放| 欧美丰满熟妇xxxx性| 国产视频导航| 亚洲国产精一区二区三区性色| 日韩人妻系列在线观看| 99久久婷婷国产综合精品青草免费| 日韩精品无码久久久久久| AV无码专区亚洲AVL在线观看 | 亚洲av第一页国产精品| av无码精品一区二区乱子| 国产三级c片在线观看| 精品卡一卡二乱码新区| 少妇人妻偷人精品免费视频| 本道无码一区二区久久激情 | 亚洲av色av成人噜噜噜| 久久狠狠色噜噜狠狠狠狠97| 国产白嫩美女在线观看| 亚洲欧美日韩一区在线观看| 开心激情视频亚洲老熟女| 无码精品人妻一区二区三区av| 久久久精品免费观看国产|