摘要:通信系統(tǒng)中使用根升余弦濾波器作為成型濾波器,使系統(tǒng)滿足奈奎斯特準(zhǔn)則。隨著濾波器工作頻率的不斷提高,使用DSP實(shí)現(xiàn)已經(jīng)不太現(xiàn)實(shí),而FPGA的成本不斷降低,采用FPGA設(shè)計(jì)工作在高頻率的濾波器更加適合。本文介紹了一種根升余弦濾波器的FPGA實(shí)現(xiàn)方法。
關(guān)鍵詞:數(shù)學(xué)濾波;平方根;余波
中圖分類(lèi)號(hào):TB535+.2文獻(xiàn)標(biāo)識(shí)碼:A
1 基本流程及功能指標(biāo)
平方根升余弦FIR濾波器的設(shè)計(jì),首先要得出濾波器系數(shù)。使用Matlab中的rcosine函數(shù)得出濾波器系數(shù),之后編寫(xiě)VHDL程序,進(jìn)行波形仿真,驗(yàn)證結(jié)果是否符合要求。
平方根升余弦濾波器設(shè)計(jì)目標(biāo):
濾波器類(lèi)型:平方根升余弦FIR濾波器;階數(shù):32;信號(hào)傳輸速率:8.448Mbps;過(guò)采樣點(diǎn)數(shù):4Point/bit;升余弦系數(shù):0.6。
2 基本原理
在實(shí)際通信系統(tǒng)中,如果用升余弦濾波器做奈奎斯特濾波器,一般發(fā)送端的成型濾波器和接收端的匹配濾波器都采用平方根升余弦滾降濾波器。
數(shù)字濾波器的系統(tǒng)函數(shù)可以表示為:
直接得出表示輸入輸出關(guān)系的常系數(shù)線性差分方程為:
由此可以知道數(shù)字濾波器是把輸入序列經(jīng)過(guò)一定的運(yùn)算變換成輸出序列。一般普通的數(shù)字濾波器是線性時(shí)不變(LTI)濾波器,對(duì)于因果的 FIR 系統(tǒng),系統(tǒng)函數(shù)僅有零點(diǎn)(除 z=0 的極點(diǎn)外),并且系數(shù) a k全為零,所以上式簡(jiǎn)化為:
可以認(rèn)為是 x(n)與單位脈沖相應(yīng) h(n)的直接卷積。階數(shù)為 N 的 FIR 濾波器是數(shù)學(xué)表達(dá)式為:
其系統(tǒng)函數(shù)為:
其中h(n)為第 n 級(jí)系數(shù),x(n-k)為延時(shí) n 階的輸入信號(hào)。
3 實(shí)現(xiàn)結(jié)構(gòu)
由于系數(shù)是對(duì)稱(chēng)的,即 h(n)=h(N-n),可得
4 Matlab仿真
調(diào)用 matlab 中的 rcosine 計(jì)算濾波器的系數(shù),程序如下:
clear;
clc;
close all;
%% 計(jì)算系數(shù)
lpf=rcosine(1,4,'sqrt',0.6,4);
figure(1)
stem(lpf)
xlabel('n');
title('平方根升余弦濾波器沖擊響應(yīng)');
xlabel('n');
ylabel('h(n)');
%% 頻率響應(yīng)
a=[1];
[h,f]=freqz(lpf,a,33,4);
mag=abs(h);
figure(2)
plot(f,mag);
grid on
xlabel('頻率(Hz)');
ylabel('幅頻特性');
%% 濾波器系數(shù)量化
maxh=max(lpf);
%9位量化
N_9=511/maxh;
b=round(N_9*lpf);
………(部分代碼略)
5 FPGA實(shí)現(xiàn)
根據(jù)實(shí)現(xiàn)原理,F(xiàn)PGA實(shí)現(xiàn)平方根升余弦濾波器的實(shí)質(zhì)就是乘法累加器,代碼如下:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_arith.all;
use ieee.std_logic_signed.all;
library lpm;
use lpm.all;
entity filter_8xrec is
generic(
tap:integer:=31;
datain_len:integer:=10;
coeff_len:integer:=10;
dataout_len:integer:=25);
port(
clock:in std_logic;
sclr:in std_logic;
clk_ena:in std_logic;
data_ena:in std_logic;
datain:in std_logic_vector(datain_len-1 downto 0);
dataout:out std_logic_vector(dataout_len-1 downto 0));
end filter_8xrec;
architecture arch of filter_8xrec is
COMPONENT lpm_mult
…………..(部分代碼略)
6 FPGA仿真
設(shè)定輸入后,在 modelsim 中的仿真結(jié)果如下
從仿真結(jié)果圖中可以看出,由于沒(méi)有對(duì)累加輸出進(jìn)行截?cái)啵敵鑫粩?shù)為 25 位,并用輸入值進(jìn)行計(jì)算,可得仿真結(jié)果正確在 quartus 中綜合報(bào)告的結(jié)果如下:
若將仿真結(jié)果中的輸入、輸出數(shù)據(jù)用圖形表示,則如下所示:
結(jié)論
本方法采用Matlab仿真設(shè)計(jì),VHDL實(shí)現(xiàn)并使用Altera公司的FPGA進(jìn)行驗(yàn)證,設(shè)計(jì)達(dá)到預(yù)定要求。經(jīng)與我單位傳統(tǒng)設(shè)計(jì)比較(DSP實(shí)現(xiàn)),系統(tǒng)效率有了大幅度提升,表明此種FIR濾波器的實(shí)現(xiàn)方法高效可行。
參考文獻(xiàn)
[1]山蕊,將林,杜慧敏,平方根升余炫濾波器的設(shè)計(jì)與EPGA實(shí)現(xiàn).