• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      獨立分量分析中NLPCA-RLS算法IP核的設(shè)計

      2012-05-04 08:08:44徐長輝
      計算機工程與設(shè)計 2012年6期
      關(guān)鍵詞:狀態(tài)機分量運算

      徐長輝,李 宏,常 帥

      (西北工業(yè)大學 電子信息學院,陜西 西安710129)

      0 引 言

      盲信號分離是指在信號混迭參數(shù)未知的情況下,從多個混合在一起的觀測信號中恢復(fù)出源信號。通常,觀測信號來自一組傳感器,每個傳感器的接收信號是源信號的不同組合。獨立分量分析是在盲源分離研究中發(fā)展起來的一種多通道信號處理技術(shù),近年來,該技術(shù)在語音降噪、通信、生物醫(yī)學信號處理、圖像處理中的巨大優(yōu)勢引起了廣泛的關(guān)注。

      隨著FPGA技術(shù)的快速發(fā)展,有關(guān)獨立分量分析算法硬件實現(xiàn)的方案也不斷涌現(xiàn)。2006年Shyu和Li首先通過硬件描述語言(HDL)實現(xiàn)了FastICA算法,之后對該方案進行改進,實現(xiàn)了算法的流水線操作[1-2]。獨立分量分析的信息極大化算法和 EASI(equivariant adaptive separation via independence)等其他算法硬件方案的研究也已完成[3-6]。隨著相關(guān)算法和技術(shù)的不斷完善,獨立分量分析在工程實際中的應(yīng)用研究也已展開,Huang等人實現(xiàn)了四通道腦電信號的實時分離[7],而Thuong在FPGA中將獨立分量分析算法應(yīng)用于音頻水印技術(shù)[8]。在ICA眾多算法中,NLPCA-RLS算法是一種隨機在線算法,更適用于對實時性處理要求較高的場合。本文研究了非線性主分量分析算法的原理、主要功能和分離過程,依照算法的流程進行了功能模塊的劃分,利用Simulink/DSP builder與QuartusII組合開發(fā)工具及Altera CycloneIII硬件仿真平臺,首次完成了NLPCA-RLS算法硬件IP的實現(xiàn)方案,并將其應(yīng)用于語音信號的分離與降噪中。

      1 獨立分量分析的基本模型及NLPCA-RLS算法

      1.1 獨立分量分析的基本模型

      獨立分量分析是一種基于統(tǒng)計量的信號處理方法,它將多通道觀測信號按照統(tǒng)計獨立的原則進行優(yōu)化運算,分解成若干相互獨立的成分。其模型可描述為[9]

      式中:x(t)——觀測信號矢量,s(t)——統(tǒng)計獨立的源信號矢量,A——混合矩陣。獨立分量分析的目的是在s(t)和A均未知的條件下,尋求解混矩陣W,使得

      如圖1所示。

      圖1 獨立分量分析模型

      根據(jù)Darmois定理[10],在如下兩個假設(shè)成立的條件下:

      (1)源信號各分量之間統(tǒng)計獨立;

      (2)源信號分量中最多只有一個高斯分量;

      如果我們能找到矩陣W,使得(2)中的y(t)各分量統(tǒng)計獨立,那么y(t)即為s(t)的一個拷貝,即

      式中:∧——一個對角矩陣,P——一個置換矩陣。即通過獨立分量分析得到的分離信號y(t),與源信號s(t)之間存在幅值和排列的不確定性。

      1.2 NLPCA-RLS算法

      NLPCA算法是獨立分量分析的一種典型算法,它是在主分量分析(principal component analysis,PCA)中引入非線性函數(shù)而得。PCA的一個基本概念是最小均方誤差壓縮,即對于隨機輸入向量x,尋找標準正交基向量W,使得x和它在該標準正交基向量張成的子空間上的投影之間的均方誤差最小,其目標函數(shù)為

      當我們對于白化后的x用非線性函數(shù)g(Wx)代替(Wx),即用x在子空間上的非線性投影代替線性投影,上述方程的解在一定程度上能夠使y=W*x的各分量獨立[11],這種方法叫做NLPCA算法。

      NLPCA-RLS算法是在NLPCA算法中采用近似遞歸最小二乘。使用下標t代表迭代步數(shù),對輸入數(shù)據(jù)x(t),迭代算法如下

      式中:向量變量q(t),h(t),m(t),r(t)及矩陣變量P(t)——算法內(nèi)部的輔助變量,g——NLPCA指標中的非線性函數(shù),此處取反正切函數(shù)。參數(shù)β是一值接近1的“遺忘常量”。符號Tri的數(shù)學意義是只計算矩陣的上三角部分,然后將上三角部分求轉(zhuǎn)置并復(fù)制到下三角部分。經(jīng)過迭代之后的矩陣W 即為式(2)中的解混矩陣。

      上述NLPCA-RLS算法的完整實現(xiàn)步驟如圖2所示。

      圖2 NLPCA-RLS算法流程

      由于使用近似遞歸最小二乘方法,算法可以根據(jù)輸入數(shù)據(jù)決定學習速率參數(shù)。相比于其他算法,NLPCA-RLS具有更快的收斂速度[12]。

      2 基于DSP builder的硬件設(shè)計

      2.1 設(shè)計工具與流程

      目前出現(xiàn)的基于FPGA的DSP開發(fā)工具,使得設(shè)計者能夠遵循類似于軟件設(shè)計流程的開發(fā)方法進行FPGA的設(shè)計。尤其當設(shè)計包含諸多數(shù)學算法時,可使效率大為提高。

      本文利用 Matlab、DSP Builder、Modelsim、QuartusII等組合工具完成整個設(shè)計。①在Matlab/Simulink中進行設(shè)計輸入,即在Matlab的Simulink環(huán)境中建立模型文件,用圖形方式調(diào)用DSP Builder和其他Simulink庫中的圖形模塊,構(gòu)成系統(tǒng)級和算法級設(shè)計框圖,或稱Simulink設(shè)計模型。②利用Simulink的圖形化仿真、分析功能,分析此設(shè)計模型的正確性,完成模型仿真。③由于EDA工具軟件不能直接處理Matlab的模型文件,需要通過DSP builder中的SignalCompiler模塊將模型文件自動轉(zhuǎn)換成通用的硬件描述語言文件,即VHDL文件。第四步,對以上頂層設(shè)計產(chǎn)生的VHDL文件在Modelsim中進行RTL級仿真。④對功能仿真正確的硬件代碼在Quartus中進行綜合、編譯、時序仿真并下載到FPGA中進行驗證。

      2.2 整體設(shè)計方案及技術(shù)指標

      本方案基于2x2的數(shù)據(jù)模型搭建,即源信號向量s(t)維數(shù)為2,混合后的信號向量x(t)維數(shù)為2。為減少復(fù)雜度,所處理數(shù)據(jù)采用24位固定點類型,其中整數(shù)部分占12比特,小數(shù)部分占12比特。數(shù)據(jù)處理采用批處理模式。根據(jù)MATLAB計算機仿真可知,算法在200次迭代之內(nèi)即可收斂,每個數(shù)據(jù)RAM的大小由算法的總迭代步數(shù)決定, 即為200x24bit。設(shè)計框圖及關(guān)鍵信號連接如圖3所示。

      圖3 NLPCA-RLS算法硬件實現(xiàn)框架

      其中,SCU(System Contrl Unit)模塊控制系統(tǒng)的復(fù)位、啟動、運行及算法迭代流程的狀態(tài)機。程序運行時,待分離的兩路混合信號x(t)數(shù)據(jù)首先分別載入輸入端兩個雙端口RAM(RAM_IN_1和RAM_IN_2)中,接著NLPCA_RLS算法模塊計算出分離矩陣W?;旌闲盘柵c分離矩陣W 相乘后得到分離后的信號y(t),該數(shù)據(jù)存入輸出端雙端口RAM(RAM_OUT_1和RAM_OUT_2)中。在down_o=1,即運算完成后,外部控制器可讀取輸出端RAM中的數(shù)據(jù)。

      2.3 遞歸最小二乘迭代算法的實現(xiàn)

      由于系統(tǒng)級開發(fā)工具DSP Builder有專用模塊供調(diào)用,可大大提高開發(fā)速度,因此算法模塊采用該工具進行建模。圖3給出的迭代算法主要涉及三個方面:迭代流程的控制,矩陣乘法運算和反正切函數(shù)運算。其中矩陣乘法采用FPGA中的專用乘法模塊和加法模塊實現(xiàn)。各模塊的在DSP builder中的具體建模方法如下:

      (1)算法流程控制

      本文中采用有限狀態(tài)機的方式來控制算法頂層的迭代與循環(huán),如圖4所示。

      圖4 算法流程控制狀態(tài)機

      程序啟動后首先進入Idel狀態(tài);在外部輸入信號start_i置1時跳轉(zhuǎn)到Clear狀態(tài),此時模塊中的乘法器和加法器進行一次復(fù)位,完成后進入Load狀態(tài);在Load狀態(tài)下,迭代式(5)中的W 和P矩陣將上一次迭代后的值載入,作為本次迭代的起始值(若為第一次迭代,則載入初值);Calc狀態(tài)下程序進行一次迭代運算,當運算結(jié)束后狀態(tài)機進入Save狀態(tài);Save狀態(tài)將本次計算得到的W 和P保存起來,之后程序判斷迭代次數(shù)是否達到,如果沒有達到,狀態(tài)機跳轉(zhuǎn)至Clear狀態(tài)繼續(xù)進行下一次迭代運算;否則跳轉(zhuǎn)到Down狀態(tài),并將down_o信號置1,告知外部模塊運算已完成。外部模塊將運算結(jié)果讀取之后復(fù)位start_i信號,狀態(tài)機返回Idel狀態(tài)。

      (2)矩陣乘法的實現(xiàn)

      式(5)中涉及多個2位矩陣乘法運算,其一般格式為

      圖5即為式(6)在DSP builder中的具體實現(xiàn)方案,圖中的乘法器單元可選用Altera FPGA的專用乘法器單元LPM-MULT,它是一個參數(shù)化的宏函數(shù)[13]。圖中各運算單元均使用統(tǒng)一的使能信號(ena)與異步清零信號(aclr),便于頂層狀態(tài)機控制整個流程。使用該矩陣乘法單元實現(xiàn)的整個算法流程,每次獨立迭代運算共需22個系統(tǒng)時鐘周期。

      圖5 Simulink中二維矩陣乘法的實現(xiàn)

      (3)反正切函數(shù)的實現(xiàn)

      反正切函數(shù)q=atan(y)相對比較復(fù)雜,如果通過計算的方式實現(xiàn)必然會占用較多的資源,同時延緩算法的速度。本方案采用查表法實現(xiàn),查找表地址位寬為8,輸出數(shù)據(jù)位寬為14,故可存放128個14位固定點類型數(shù)據(jù)。變量y在之前的運算中已將范圍限制在 [-4,4],因此我們在8位地址線的查找表中線性存放 [-4,4]的反正切函數(shù)值。根據(jù)計算可得,查找表的地址add與輸入變量y的關(guān)系為

      在實際設(shè)計中,我們依然采用LPM參數(shù)化宏模塊例化LUT(lookup-table),即將生成的反正切函數(shù)數(shù)據(jù)存放在由嵌入式RAM構(gòu)成的ROM中,這樣可以節(jié)省大量邏輯單元。圖6給出了反正切函數(shù)模塊的實現(xiàn)框圖。

      圖6 Simulink中反正切函數(shù)的實現(xiàn)

      3 系統(tǒng)仿真與分析

      3.1 系統(tǒng)性能指標

      按照DSP Builder的設(shè)計流程,首先在Simulink中對設(shè)計模塊進行仿真。然后進行編譯綜合,選用Altera CycloneIII EP3C25芯片開發(fā)板進行硬件仿真。該IP核在QuartusII中綜合后的結(jié)果見表1。系統(tǒng)采用批處理模式,每次處理200個數(shù)據(jù),輸入輸出數(shù)據(jù)寬度為24位。由于每次迭代運算需22個時鐘周期,因此在系統(tǒng)輸入時鐘頻率為50MHz時,對外部數(shù)據(jù)的處理速率約為1MHz,完全可以實現(xiàn)常規(guī)采樣率下語音信號的實時處理。

      表1 FPGA硬件資源占用

      3.2 系統(tǒng)盲信號分離功能驗證

      實驗中分別采用周期信號與語音信號驗證IP核的有效性。在周期信號的驗證中,我們將一段正弦信號與方波信號進行混合,混合矩陣為混合后的信號如圖7(a)所示。為了便于仿真,我們將上述待處理的混合信號數(shù)據(jù)寫入hex文件,作為輸入端RAM的初始化數(shù)據(jù)。圖7(b)顯示了該IP核對混合信號的處理結(jié)果,可以看出,程序能夠正確的提取出原始正弦信號與方波信號。

      圖7 周期信號分離試驗

      接下來,我們采用一路真實的語音信號與一路白噪聲信號的混合進行驗證。語音信號來源于SPIB(Signal Processing Information Base)數(shù)據(jù)庫[14],采樣率為44kHz,采樣點數(shù)為200個?;旌暇仃嚾詾榉蛛x結(jié)果如圖8所示。其中,圖8(a)所示為語音信號與周期信號的混合信號,圖8(b)所示為混合信號經(jīng)IP核處理后復(fù)原出的原語音信號和白噪聲信號。

      從以上仿真結(jié)果中我們可以看出,無論對于人工合成的周期信號還是真實語音信號,該IP核都能很好的完成NLPCA-RLS算法,對滿足盲信號模型數(shù)據(jù)進行處理,達到分離的目的。

      3.3 系統(tǒng)準確性驗證

      為了評價算法的性能,通常需要相應(yīng)的性能指標。在獨立分量分析算法中,誤差指數(shù)E[15]是衡量算法收斂精度的常用指標,它用來表征算法對信道矩陣的估計值與真實值之間的相似性,相似性越大,E越小,信號分離性能越好

      式中:cij——矩陣C=WA 的第i行、第j列的元素,A——信道混合矩陣,W——信道解混矩陣。

      圖8 語音信號分離試驗

      在語音信號分離實驗中,我們記錄了誤差指數(shù)E隨算法收斂次數(shù)的變化,并將其與算法的matlab仿真結(jié)果進行了對比。為避免數(shù)據(jù)隨機性帶來的誤差,結(jié)果取1000次非重復(fù)實驗平均值,如圖9所示。

      圖9 IP核與matlab結(jié)果比較

      從圖9中可以看出,隨著收斂次數(shù)的增加,E逐漸收斂,并與matlab結(jié)果趨近。但由于在硬件設(shè)計中為提高運算速度,所有數(shù)據(jù)均采用24bit固定點類型,存在舍入誤差,因此最終結(jié)果與matlab理論值之間亦存在一定誤差。

      4 結(jié)束語

      本文提出了一種獨立分量分析中NLPCA-RLS算法的硬件方案,以IP核的形式在FPGA中實現(xiàn)。相比于傳統(tǒng)基于FastICA算法的模型,該方案不需要在每次迭代過程中使用全部樣本數(shù)據(jù),大大減少了對硬件資源中存儲空間的占用。系統(tǒng)建模時采用了Altera優(yōu)化的IP核和庫函數(shù),可以更好的發(fā)揮FPGA的數(shù)據(jù)處理能力。所有數(shù)據(jù)均采用24位固定點類型,既滿足常規(guī)數(shù)據(jù)處理精度要求,又提高了運算速度。使用VHDL語言編寫的頂層系統(tǒng)狀態(tài)機,使各運算模塊更加簡潔高效,數(shù)據(jù)處理速率能達到1MHz。系統(tǒng)能夠準確完成盲信號分離功能,滿足工程設(shè)計中對實時性的要求,具有較高的實用價值。

      [1]Shyu K K,LI M H.FPGA implementation of FastICA based on floating point arithmetic design for real-time blind source separation [C].International Joint Conference on the Neural Networks,2006:2785-2792.

      [2]Shyu K K,LI M H,WU Y T,et al.Implementation of Pipelined FastICA on FPGA for Real-Time Blind Source Separation[J].IEEE Transactions on Neural Networks,2008,19(6):958-970.

      [3]DU H,QI H,WANG X.Comparative study of VLSI solutions to independent component analysis [J].IEEE Trans Ind Electron,2007,54(1):548-558.

      [4]Charoensak C,Sattar F.Design of low-cost FPGA hardware for real-time ICA-based blind source separation algorithm [J].EURASIP Journal on Applied Signal Processing,2005,doi>10.1155/ASP.2005.3076.

      [5]Kim S J,Ken Umeno,Ryo Takahashi.FPGA implementation of EASI algorithm [J].IEICE Electron.Express,2007,22:707-711.

      [6]Moreno L N O,Arce M A A,Lamont J G.Implementation of infomax ICA algorithm for blind source separation [C].Electronics,Robotics and Automotive Mechanics Conference,2008:447-451.

      [7]HUANG W H,HUNG S H,CHUNG J F,et al.FPGA implementation of 4-channel ICA for on-line EEG signal separation [C].Biomedical Circuits and Systems Conference,2008:65-68.

      [8]Thuong L T,Dien V N,LAN N H,et al.Independent component analysis applied to watermark extraction and its implemented model on FPGAs [C].Fifth IEEE International Symposium on Electronic Design,Test&Applications,2010:71-76.

      [9]Hyvarinen A,Karhunen J,Erkki O.Independent component analysis[D].周宗譚,董國華,徐昕,等譯.北京:電子工業(yè)出版社,2007.

      [10]Pierre Comon,Christian Jutten.Handbook of blind source separation:Independent component analysis and applications[D].Academic Press,2010.

      [11]Aleksandr Nikolaevich Gorban,Donald C Wunsch.Principal manifolds for data visualization and dimension reduction [D].Berlin Heidelberg:Springer-Verlag,2007.

      [12]ZHANG Zhilin,PI Yiming,SUN Zhijian.Independent component analysis based denoising technology [J].Journal of UEST of China,2005,34(3):296-299(in Chinese). [張智林,皮亦鳴,孫志堅.基于獨立分量分析的降噪技術(shù) [J].電子科技大學學報,2005,34(3):296-299.]

      [13]PAN Song,HUANG Jiye.EDA technology and VHDL [D].Beijing:Tsinghua University Press,2007(in Chinese).[潘松,黃繼業(yè).EDA技術(shù)與VHDL[D].北京:清華大學出版社,2007.]

      [14]Signal processing society and the national science foundation.signal processing information base(SPIB)[EB/OL].http://www.spib.rice.edu/spib/select_noise.html,1995.

      [15]MA Jiancang,NIU Yilong,CHEN Haiyang.Blind singal processing.beijing:National defence industial press,2006:88-89(in Chinese). [馬建倉,牛奕龍,陳海洋.盲信號處理[D].北京:國防工業(yè)出版社,2006:88-89.]

      猜你喜歡
      狀態(tài)機分量運算
      重視運算與推理,解決數(shù)列求和題
      帽子的分量
      有趣的運算
      一物千斤
      智族GQ(2019年9期)2019-10-28 08:16:21
      基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
      論《哈姆雷特》中良心的分量
      分量
      “整式的乘法與因式分解”知識歸納
      撥云去“誤”學乘除運算
      FPGA設(shè)計中狀態(tài)機安全性研究
      黑龍江科學(2011年2期)2011-03-14 00:39:36
      瑞丽市| 平和县| 西丰县| 双牌县| 鹿邑县| 旅游| 布拖县| 南通市| 霍城县| 交口县| 朝阳县| 繁昌县| 涞水县| 南开区| 当雄县| 淮南市| 韶关市| 长春市| 临高县| 莱阳市| 育儿| 青州市| 南充市| 苍梧县| 澜沧| 惠东县| 微博| 周宁县| 东至县| 祥云县| 平谷区| 景德镇市| 瑞昌市| 定州市| 五河县| 星座| 永吉县| 凤山市| 仪陇县| 马尔康县| 恩施市|