【文章內(nèi)容簡(jiǎn)介】
??? 根據(jù)要求,要設(shè)計(jì)一個(gè)輸入 8 位,輸出 8 位的 16 階線(xiàn)性相位 FIR 濾波器,此濾波器 Fs為 44kHz,Fc 為 。 MATLAB 設(shè)計(jì)計(jì)算濾波器系數(shù)過(guò)程如下: FIR 濾波器參數(shù)設(shè)置,因?yàn)槭?16 階,所以 Specify order 處填 15。 圖 27 FIR 濾波器的幅頻響應(yīng) 5 圖 28 FIR 濾波器的相頻響應(yīng) 圖 29 FIR 濾波器的沖激響應(yīng) 6 圖 210 FIR 濾波器系數(shù) 圖 210FIR 濾波器的系數(shù)進(jìn)行調(diào)整前 7 圖 211 FIR 濾波器的系數(shù)進(jìn)行調(diào)整后 可得 FIR 濾波器的參數(shù)為 [10 2 14 7 21 18 44 115 114 44 18 21 7 14 2 10] 根據(jù)以上所說(shuō)的該思路,可以將 FIR 濾波器的原理圖設(shè)計(jì)如圖 221: 圖 212 濾波器原理圖 8 模塊電路設(shè)計(jì) 設(shè)計(jì)的 FIR 濾波器以下四種模塊:寄存器、加法器、減法器、乘法器,組成,下面分別對(duì)這四種原件進(jìn)行設(shè)計(jì)。 寄存器 寄存器要求實(shí)現(xiàn)的功能 在正跳沿前接受輸入信號(hào),正跳沿時(shí)觸發(fā)翻轉(zhuǎn),正跳沿后輸入即被封鎖。 寄存器的 VHDL 語(yǔ)言實(shí)現(xiàn) LIBRARY IEEE。 USE 。 ENTITY dff8 IS PORT( clk : IN STD_LOGIC。 clear : IN STD_LOGIC。 Din : IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 Dout : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) )。 END dff8。 ARCHITECTURE a OF dff8 IS BEGIN PROCESS(clk,clear) BEGIN IF clear=39。139。 THEN Dout=00000000。 ELSIF clear=39。039。 THEN IF(clk39。EVENT AND clk=39。139。) THEN Dout = Din。 END IF。 9 END IF。 END PROCESS。 END a。 寄存器的模塊圖與仿真波形 圖 213 寄存器的模塊圖 圖 214 寄存器的仿真波形 加法器 加法器要求實(shí)現(xiàn)的功能 實(shí)現(xiàn)兩個(gè)二進(jìn)制數(shù)字的相加運(yùn)算。當(dāng)?shù)竭_(dá)時(shí)鐘上升沿時(shí),將兩數(shù)輸入,運(yùn)算,輸出結(jié)果。 加法器的 VHDL 語(yǔ)言實(shí)現(xiàn) LIBRARY IEEE。 USE 。 USE 。 ENTITY add is PORT(clk : in STD_LOGIC。 Din1 :in signed (7 downto 0)。 10 Din2 :in signed (15 downto 0)。 Dout:out signed (15 downto 0))。 END add121616。 ARCHITECTURE a of add is SIGNAL s1: signed(15 downto 0)。 BEGIN s1=(Din1(7)amp。Din1(7)amp。Din1(7)amp。Din1(7)amp。Din1)。 PROCESS(Din1,Din2,clk) BEGIN if clk39。event and clk=39。139。 then Dout=s1+Din2。 end if。 end process。 end a。 加法器的模塊圖與波形仿真 圖 215 加法器的模塊圖 圖 216 加法器的波形仿真 11 減法器 減法器要求實(shí)現(xiàn)的功能 由上面簡(jiǎn)化電路的需要,當(dāng)乘法器常系數(shù)為負(fù)數(shù)的,可以取該數(shù)的模來(lái)作為乘法器的輸入,其輸出作為一個(gè)減法器的輸入即可。故減法器要實(shí)現(xiàn)兩個(gè)二進(jìn)制數(shù)相減的運(yùn)算。當(dāng)?shù)竭_(dá)時(shí)鐘上升沿時(shí),將兩數(shù)輸入,運(yùn)算,輸出結(jié)果。 減法器的 VHDL 語(yǔ)言實(shí)現(xiàn) LIBRARY IEEE。 USE 。 USE 。 ENTITY sub is PORT(clk : in STD_LOGIC。 Din1 :in signed (13 downto 0)。 Din2 :in signed (15 downto 0)。 Dout :out signed(15 downto 0))。 END sub。 ARCHITECTURE a of sub is SIGNAL s1: signed(15 downto 0)。 BEGIN s1=(Din1(13)amp。Din1(13)amp。Din1)。 PROCESS(Din1,Din2,clk) BEGIN if clk39。event and clk=39。139。 then Dout=Din2s1。 end if。 end process。 end a。 12 減法器的模塊圖與仿真波形 圖 217 減法器的模塊圖 圖 218 減法器的波形仿 乘法器 乘法器要求實(shí)現(xiàn)的功能 實(shí)現(xiàn)輸入帶符號(hào)數(shù)據(jù)與固定數(shù)據(jù)兩個(gè)二進(jìn)制數(shù)的乘法運(yùn)算。當(dāng)?shù)竭_(dá)時(shí)鐘上升沿時(shí),將兩數(shù)輸入,運(yùn)算,輸出結(jié)果。 乘法器的 VHDL 語(yǔ)言實(shí)現(xiàn) LIBRARY ieee。 USE 。 USE 。 ENTITY mult is PORT ( clk : IN STD_LOGIC。 Din : IN SIGNED (8 DOWNTO 0)。 13 Dout : OUT SIGNED (12 DOWNTO 0))。 END mult。 ARCHITECTURE a OF mult IS SIGNAL s1 : SIGNED (12 DOWNTO 0)。 SIGNAL s2 : SIGNED (9 DOWNTO 0)。 SIGNAL s3 : SIGNED (12 DOWNTO 0)。 B