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