【文章內(nèi)容簡(jiǎn)介】
實(shí)現(xiàn)同步或異步FIFO,具體的設(shè)計(jì)時(shí)可采用兩種方式,一是在原理圖或 VHDL 語(yǔ)言輸入方式下調(diào)用庫(kù)元件 LPM_FIFO+,再對(duì)端口和參數(shù)進(jìn)行編輯即可 。方法二是對(duì) FIFO進(jìn)行 編程,完成相應(yīng)的功能。 圖 為向?qū)傻?FIFO 符號(hào), FIFO 深度為 1024,寬度為 8。 4 圖 FIFO 原理圖 FIFO 只是對(duì)數(shù)據(jù)的一個(gè)緩存作用,進(jìn)取什么數(shù)據(jù),出來(lái)什么數(shù)據(jù),對(duì)其進(jìn)行功能仿真,仿真圖如圖 所示,當(dāng)進(jìn)去 10101111 八位數(shù)據(jù)時(shí),出來(lái) q也是八位 10101111 數(shù)據(jù)。 圖 FIF0 功能仿真 A/D 轉(zhuǎn)換器 A/D轉(zhuǎn)換器 要用 AD9059芯片, 采樣時(shí)間長(zhǎng)度 ts=512us 。于 AD9059 的介紹, AD9059 5 是 8 位單片雙通道模數(shù)轉(zhuǎn)換器,主要由 2個(gè)跟蹤 /保持電路 (T/H)、 2 個(gè)模數(shù)轉(zhuǎn)換器 (ADCA、 ADCB)和一個(gè) 的基準(zhǔn)電源等組成,具有高速、高性能、低功耗及易使用等特性, 60MSPS 的編碼速率和 120MHz 的最大功率模擬帶寬使其在多路數(shù)據(jù)采樣系統(tǒng)中表現(xiàn)出優(yōu)秀的動(dòng)態(tài)性能。大部分情況下, AD9059 僅需要一個(gè)單極性的 5V 電源和一個(gè)編碼時(shí)鐘即能正常工作 . 這是主要關(guān)于 A/D轉(zhuǎn)換器方面的要求。 FIR濾波器 濾波器 目的 :對(duì)于理想的線性相位濾波器,濾波器輸出等于輸入在時(shí)間上的移位,可達(dá)到無(wú)失真?zhèn)鬏?.介紹關(guān)于 FIR濾波器相關(guān)的知識(shí): 3 FIR 濾波器 濾波器的原理 數(shù)字濾波器通常都是應(yīng)用于修正或改變時(shí)域或頻域中信號(hào)的屬性。最為普通的數(shù)字濾波器就是線性時(shí)間不變量 (linear timeinvariant, LTI)濾波器。 LTI與其輸入信號(hào)之間相互作用,經(jīng)過(guò)一個(gè)稱為線性卷積的過(guò)程。表示為 y f x??,其中 f是濾波器的脈沖響應(yīng), x是輸入信號(hào),而 y是卷積輸出。線性卷積過(guò)程的正式定義如下: [ ] [ ] [ ] [ ] [ ] [ ] [ ]kky n x n f n x n f n k x n k f n??? ? ? ? ? ??? ( 31) LTI 數(shù)字濾波器通常分成有限脈沖響應(yīng) (finite impulse response,也就是FIR)和無(wú)限脈沖響應(yīng) (infinite impulse response,也就是 IIR)兩大類。顧名思義, FIR 濾波器由有限個(gè)采樣值組成,將上述卷積的數(shù)量降低到在每個(gè)采用時(shí)刻為有限個(gè)。而 IIR 濾波器需要執(zhí)行無(wú)限數(shù)量次卷積。研究數(shù)字濾波器的動(dòng)機(jī)就在于它們正日益成為一種主要的 DSP 操作。數(shù)字濾波器正在迅速的代替?zhèn)鹘y(tǒng)的模擬濾波器,后者是利用 RLC 元器件和運(yùn)算放大器實(shí)現(xiàn)的。模擬原型設(shè)計(jì)只能應(yīng)用在 IIR 設(shè)計(jì)之中,而 FIR 通常采用直接的計(jì)算機(jī)規(guī)范和算法進(jìn)行分析的。 6 濾波器的實(shí)現(xiàn) 原理圖法設(shè)計(jì) FIR 濾波器 其中我們要用到的是 線性相位濾波器,實(shí)現(xiàn)的方法主要有兩種方法:一是原理圖法;二是編程法 :原理圖法:調(diào)用 加法器 LPM ADD_SUB 和乘法器 LPM_ MuLT ,其中原理圖如圖 。 圖 FIR 濾波器 原理圖 兩路數(shù)據(jù)經(jīng)過(guò)乘法器,再進(jìn)行擴(kuò)展 2 位數(shù)據(jù),這是為了防止數(shù)據(jù)溢出,在經(jīng)過(guò)加法器,截取累加和的高 8位,作為濾波器的最終結(jié)果。 編程法設(shè)計(jì) FIR 濾波器 編程法:對(duì)濾波器進(jìn)行編程,完成實(shí)驗(yàn)?zāi)康摹R韵率菍?shí)驗(yàn)源程序: library ieee。 use 。 use 。 use 。 PACKAGE coeffs is type coef_arr is array(0 to 2) of signed(8 downto 0)。 constant coeffs:coef_arr:=(111111001,111111011,000001101)。 end coeffs。 7 library ieee。 use 。 use 。 use 。 use 。 entity fir is port(clk,reset:in std_logic。 sample:in signed(7 downto 0)。 result:out signed(16 downto 0))。 進(jìn)行相關(guān)的定義; end fir。 architecture beh OF fir is begin process(clk,reset) type shift_arr is array (4 downto 0) of signed (7 downto 0)。 variable tmp,old:signed (7 downto 0)。 variable pro:signed (16 downto 0)。 variable acc:signed (16 downto 0)。 variable shift:shift_arr。 begin if reset=39。039。 then result=(others=39。039。)。 for i in 0 to 3 loop shift(i):=(others=39。039。)。 end loop。 ELSIF clk39。EVEN