一種基于FPGA的自適應(yīng)譜線增強(qiáng)系統(tǒng)的設(shè)計(jì)
3.1 TLC5510的控制
TLC5510是8位高速模數(shù)轉(zhuǎn)換器,以流水線的工作方式進(jìn)行采樣,在每一個時鐘周期啟動1次采樣、完成1次采樣,采樣在時鐘下降沿進(jìn)行,經(jīng)過2.5個時鐘周期后輸出轉(zhuǎn)換結(jié)果。設(shè)計(jì)中根據(jù)采樣時序,用狀態(tài)機(jī)來描述采樣控制過程,實(shí)現(xiàn)了采樣的控制。實(shí)現(xiàn)狀態(tài)交替的VHDL代碼如下:
實(shí)現(xiàn)采樣數(shù)據(jù)輸出的VHDL代碼如下:
3.2 采樣信號延遲
為了實(shí)現(xiàn)延時,FPGA片內(nèi)開辟了3個緩沖區(qū),分別是輸入、時延、權(quán)值緩沖區(qū)。采樣后的數(shù)據(jù)首先存入片內(nèi)數(shù)據(jù)緩存FIFO,進(jìn)入待命狀態(tài)。時延緩沖區(qū)實(shí)現(xiàn)△長度的時延,權(quán)值緩沖區(qū)儲存權(quán)值。其中,時延緩沖區(qū)和輸入緩沖區(qū)地址是連續(xù)的。時延緩沖區(qū)的長度由延遲△決定,輸入緩沖區(qū)和權(quán)值緩沖區(qū)的長度由權(quán)值的維數(shù)決定。緩沖區(qū)的實(shí)現(xiàn)是在VHDL語言編寫的程序中定義存儲數(shù)據(jù)的向量,這些數(shù)據(jù)向量的數(shù)據(jù)類型定義如下:
其中:ARRAY_N1BIF定義的是濾波器參數(shù)向量的數(shù)據(jù)類型;ARRAY_N1BIYX定義的延遲后信號向量的數(shù)據(jù)類型;ARRAY_N1BIT定義的是輸入信號向量的數(shù)據(jù)類型;ARRAY_N2BIT定義的是譜線增強(qiáng)后信號向量的數(shù)據(jù)類型;W1是采樣數(shù)據(jù)的寬度,這里為8;Delay是延時長度;L是濾波器階數(shù)。
3.3 LMS算法核心模塊
這是設(shè)計(jì)的核心部分也是設(shè)計(jì)中的難點(diǎn)。用FPGA實(shí)現(xiàn)復(fù)雜數(shù)字信號處理并不像DSP中那樣簡單,需要考慮時序同步、數(shù)據(jù)寬度以及如何舍入。該設(shè)計(jì)采用16階自適應(yīng)濾波器實(shí)現(xiàn)ALE,濾波器初始權(quán)值全部為0,按照式(3)的算法進(jìn)行迭代更新,算法實(shí)現(xiàn)中用到大量乘法運(yùn)算。調(diào)用芯片內(nèi)部嵌入的乘法器宏功能模塊lpm_mult使實(shí)現(xiàn)這些乘法運(yùn)算更加快速、高效的方案。lpm_mult模塊輸入采樣的8位數(shù)據(jù),因?yàn)樵诔朔ㄟ\(yùn)算中2個8位二進(jìn)制數(shù)相乘得到的結(jié)果是1個16位二進(jìn)制數(shù),所以設(shè)計(jì)中將處理結(jié)果輸出為16位二進(jìn)制數(shù)。為了提高自適應(yīng)濾波速度,設(shè)計(jì)中采用流水線的濾波器結(jié)構(gòu)。流水線結(jié)構(gòu)能夠顯著地提高處理的速度,但是要消耗更多的硬件資源,特別是硬件乘法器,如果LMS FIR濾波器的長的為L則需要2L個通用乘法器。設(shè)計(jì)中L=16,片內(nèi)有36個片內(nèi)乘法器可以勝任處理要求。編譯結(jié)果顯示片內(nèi)應(yīng)用于LMS核心算法的其他資源消耗全部小于或等于總消耗的6%,其余資源可以用于片內(nèi)的采樣、輸出等時序控制。LMS算法硬件實(shí)現(xiàn)的流水線結(jié)構(gòu)框圖如圖5所示。
評論