基于FPGA的IIR濾波器設(shè)計(jì)_第1頁
基于FPGA的IIR濾波器設(shè)計(jì)_第2頁
基于FPGA的IIR濾波器設(shè)計(jì)_第3頁
基于FPGA的IIR濾波器設(shè)計(jì)_第4頁
基于FPGA的IIR濾波器設(shè)計(jì)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 基于FPGA的IIR濾波器設(shè)計(jì)摘 要:數(shù)字信號(hào)處理在科學(xué)和工程技術(shù)許多領(lǐng)域中得到廣泛的應(yīng)用,與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得較高的選擇性,故本課題采用一種基于FPGA的IIR數(shù)字濾波器的設(shè)計(jì)方案,首先分析了IIR數(shù)字濾波器的原理及設(shè)計(jì)方法,然后通過MAX+PLUS的設(shè)計(jì)平臺(tái),采用自頂向下的模塊化設(shè)計(jì)思想將整個(gè)IIR數(shù)字濾波器分為:時(shí)序控制、延時(shí)、補(bǔ)碼乘加和累加四個(gè)功能模塊。分別對各模塊采用VHDL進(jìn)行描述后,進(jìn)行了仿真和綜合。仿真結(jié)果表明,本課題所設(shè)計(jì)的IIR數(shù)字濾波器運(yùn)算速度較快,系數(shù)改變靈活,有較好的參考價(jià)值。關(guān)鍵詞:電子設(shè)計(jì)自動(dòng)化,IIR數(shù)字濾波器,現(xiàn)場可編

2、程門陣列,硬件描述語言第42頁 共38頁The design for IIR digital filter based on FPGAAbstract: Digital signal processing is widely used in lots of fields, such as in science and project technique. Compared with FIR digital filter, IIR digital filter can get high selectivity with low factorial. A kind of IIR digital f

3、ilter design method was introduced in the paper, which is based on FPGA. By used the design plant of MAX+PLUS, we adopt blocking method named “Top-down ” and divide the entire IIR digital filter into four blocks, which are Clock control, Time delay, Multiply-addition and Progression. After described

4、 with VHDL, we do emulate and synthesis to each block. The result shows that, the introduced IIR digital filter runs fast, and the coefficient changes agility. It has high worth for consulting.Key words: Electronic Design Automation, IIR Digital Filter, Field Programmable Gate Array, very High Speed

5、 Integrated Circuit Hardware Description Language (VHDL)目 錄序言1第1章 IIR數(shù)字濾波器及其硬件實(shí)現(xiàn)方法21.1 IIR數(shù)字濾波器概念21.1.1 IIR數(shù)字濾波器的原理21.1.2 IIR數(shù)字濾波器的基本結(jié)構(gòu)21.1.3 IIR數(shù)字濾波器的設(shè)計(jì)方法31.2 IIR數(shù)字濾波器的硬件實(shí)現(xiàn)方案4第2章 EDA技術(shù)和可編程邏輯器件82.1 電子設(shè)計(jì)自動(dòng)化EDA技術(shù)82.2 可編程邏輯器件82.2.1 可編程邏輯器件簡介82.2.2 使用FPGA器件進(jìn)行開發(fā)的優(yōu)點(diǎn)92.2.3 FPGA設(shè)計(jì)的開發(fā)流程92.3 硬件描述語言VHDL及數(shù)字系統(tǒng)設(shè)計(jì)

6、方法102.3.1 硬件描述語言VHDL簡介102.3.2 利用VHDL設(shè)計(jì)數(shù)字系統(tǒng)10第3章 IIR數(shù)字濾波器的設(shè)計(jì)與仿真結(jié)果分析113.1 IIR數(shù)字濾波器各模塊的設(shè)計(jì)與仿真結(jié)果分析113.1.1 時(shí)序控制模塊的設(shè)計(jì)與仿真結(jié)果分析113.1.2 延時(shí)模塊的設(shè)計(jì)與仿真結(jié)果分析123.1.3 補(bǔ)碼乘加模塊的設(shè)計(jì)與仿真結(jié)果分析123.1.4 累加模塊的設(shè)計(jì)與仿真結(jié)果分析143.1.5 頂層模塊設(shè)計(jì)143.2 IIR數(shù)字濾波器的仿真與結(jié)果分析153.2.1 IIR數(shù)字濾波器的系統(tǒng)設(shè)計(jì)153.2.2 IIR數(shù)字濾波器的系統(tǒng)仿真與結(jié)果分析163.2.3 高階IIR數(shù)字濾波器的實(shí)現(xiàn)17結(jié)束語19參考文獻(xiàn)

7、20致 謝21附錄1 各模塊VHDL程序22附錄2 英文翻譯29 基于FPGA的IIR濾波器設(shè)計(jì)序 言隨著EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大和深入,EDA技術(shù)在電子信息、通信、自動(dòng)控制及計(jì)算機(jī)應(yīng)用等領(lǐng)域的重要性日益突出。這些技術(shù)的使用使得現(xiàn)代電子產(chǎn)品的體積減小、性能增強(qiáng)、集成化程度提高,與此同時(shí)其可編程能力也得以提高。在使用EDA進(jìn)行電子設(shè)計(jì)時(shí),設(shè)計(jì)人員可按照“自頂向下”的設(shè)計(jì)方法,對整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,采用硬件描述語言(DHL)完成系統(tǒng)行為級(jí)設(shè)計(jì),最后通過綜合器和適配器生成最終的目標(biāo)器件。VHDL語言是EDA設(shè)計(jì)中常用的一種IEEE標(biāo)準(zhǔn)語言,其具有覆蓋面廣、描述能力強(qiáng)、可讀性好、支

8、持大規(guī)模設(shè)計(jì)及邏輯單元利用等優(yōu)點(diǎn),因此受到越來越多的電子工程師的青睞1。本次設(shè)計(jì)采用EDA技術(shù)中的模塊化設(shè)計(jì)思想,就IIR數(shù)字濾波器中的一些關(guān)鍵電路進(jìn)行設(shè)計(jì),主要內(nèi)容包括:時(shí)序控制模塊、延時(shí)模塊、補(bǔ)碼乘加模塊、累加模塊和IIR數(shù)字濾波器的頂層設(shè)計(jì)。分別對各模塊采用VHDL進(jìn)行描述后,進(jìn)行了仿真和綜合,取得了較好的設(shè)計(jì)效果。實(shí)驗(yàn)結(jié)果表明,本課題所設(shè)計(jì)的IIR數(shù)字濾波器具有運(yùn)算速度快,系數(shù)改變靈活方便等特點(diǎn)。第1章 IIR數(shù)字濾波器及其硬件實(shí)現(xiàn)方法1.1 IIR數(shù)字濾波器概念數(shù)字濾波器是完成信號(hào)濾波處理功能的,用有限精度算法實(shí)現(xiàn)的離散時(shí)間線性非時(shí)變系統(tǒng)2。輸入一組數(shù)字量,通過運(yùn)算輸出的是另一組數(shù)字

9、量。數(shù)字濾波器具有穩(wěn)定性好、精度高、靈活性大等突出優(yōu)點(diǎn)。隨著數(shù)字技術(shù)的發(fā)展,用數(shù)字技術(shù)設(shè)計(jì)濾波器的功能越來越受到人們的注意和廣泛的應(yīng)用。1.1.1 IIR數(shù)字濾波器的原理一個(gè)數(shù)字濾波器的系統(tǒng)函數(shù)可以表示為2:= (1.1.1)直接由得出表示輸入輸出關(guān)系的常系數(shù)線性差分方程為: (1.1.2)式中、為濾波系數(shù),當(dāng)均為零時(shí),該濾波器為FIR數(shù)字濾波器,當(dāng)不均為零時(shí),則為IIR數(shù)字濾波器。與FIR數(shù)字濾波器相比,IIR數(shù)字濾波器可以用較低的階數(shù)獲得高的選擇性,所用的存儲(chǔ)單元少,成本低、信號(hào)延遲小,并且IIR數(shù)字濾波器可以借助于模擬濾波器的設(shè)計(jì)成果,設(shè)計(jì)工作量相對較小,為此,本文就IIR數(shù)字濾波器進(jìn)行

10、相關(guān)討論。 1.1.2 IIR數(shù)字濾波器的基本結(jié)構(gòu)IIR數(shù)字濾波器有直接型、級(jí)聯(lián)型和并聯(lián)型三種基本結(jié)構(gòu)2。由IIR數(shù)字濾波器的階差分方程(1.1.2)式可知,設(shè)=2,則網(wǎng)絡(luò)結(jié)構(gòu)如圖1-1所示。x(n)a0b1a2b0a1y(n)z-1z-1圖1-1 直接型結(jié)構(gòu) 1.1.3 IIR數(shù)字濾波器的設(shè)計(jì)方法IIR數(shù)字濾波器的設(shè)計(jì)方法通常有模擬轉(zhuǎn)換法、零極點(diǎn)累試法和優(yōu)化設(shè)計(jì)法2。1. IIR數(shù)字濾波器的模擬轉(zhuǎn)換設(shè)計(jì)法利用模擬濾波器成熟的理論和設(shè)計(jì)方法來設(shè)計(jì)IIR數(shù)字濾波器是經(jīng)常使用的方法。設(shè)計(jì)過程是:按照技術(shù)要求設(shè)計(jì)一個(gè)模擬濾波器,得到濾波器的傳輸函數(shù),再按一定的轉(zhuǎn)換關(guān)系將轉(zhuǎn)換成數(shù)字濾波器的系統(tǒng)函數(shù)。將

11、傳輸函數(shù)從s平面轉(zhuǎn)移到z平面的方法有多種,但工程上常用的是脈沖響應(yīng)不變法和雙線性變換法。2. IIR數(shù)字濾波器的零極點(diǎn)累試法上述介紹的模擬轉(zhuǎn)換設(shè)計(jì)法實(shí)際上是數(shù)字濾波器的一種間接設(shè)計(jì)方法,而且幅度特性受到所選模擬濾波器特性的限制。例如巴特沃斯低通幅度特性是單調(diào)下降,而切比雪夫低通特性帶內(nèi)或帶外有上、下波動(dòng)等,對于要求任意幅度特性的濾波器,則不適合采用這種方法。下述介紹的在數(shù)字域直接設(shè)計(jì)IIR數(shù)字濾波器的設(shè)計(jì)方法,其特點(diǎn)是適合設(shè)計(jì)任意幅度特性的濾波器。在IIR數(shù)字濾波器的直接設(shè)計(jì)法中零極點(diǎn)累試法較為常用,設(shè)單位脈沖響應(yīng)的零極點(diǎn)表達(dá)式為2: (1.1.3)按照(1.1.3)式,系統(tǒng)特性取決于系統(tǒng)零極

12、點(diǎn)的分布,通過分析,我們知道系統(tǒng)極點(diǎn)位置主要影響系統(tǒng)幅度特性峰值位置及其尖銳程度,零點(diǎn)位置主要影響系統(tǒng)幅度特性的谷值位置及其凹下的程度;且通過零極點(diǎn)分析的幾何作圖法可以定性地畫出其幅度特性。上面的結(jié)論及方法提供了一種直接設(shè)計(jì)濾波器的方法。這種設(shè)計(jì)方法是根據(jù)其幅度特性先確定零極點(diǎn)位置,再按照確定的零極點(diǎn)寫出其系統(tǒng)函數(shù),畫出其幅度特性,并與希望的進(jìn)行比較,如不滿足要求。可通過移動(dòng)零極點(diǎn)位置或增加(減少)零極點(diǎn),進(jìn)行修正。3.優(yōu)化設(shè)計(jì)法IIR 數(shù)字濾波器除模擬轉(zhuǎn)換設(shè)計(jì)法和零極點(diǎn)累試法外,還有一種直接在頻域或者時(shí)域中進(jìn)行設(shè)計(jì),聯(lián)立方程后需要計(jì)算機(jī)作輔助運(yùn)算的方法,即所謂的優(yōu)化設(shè)計(jì)法。1.2 IIR數(shù)字

13、濾波器的硬件實(shí)現(xiàn)方案濾波器的實(shí)現(xiàn)主要包括兩大類:DSPTMS320系列芯片的實(shí)現(xiàn)和ISP器件的實(shí)現(xiàn)(主要包括FPGA和CPLD)。其中利用DSPTMS320系列芯片實(shí)現(xiàn)濾波時(shí)速度較慢,而利用ISP器件實(shí)現(xiàn)時(shí),其運(yùn)算速度比DSP器件要快好多倍。FPGA的實(shí)現(xiàn)包括其自帶的核的實(shí)現(xiàn)方法和自編程實(shí)現(xiàn)方法。核的實(shí)現(xiàn)方法雖然好用并且結(jié)構(gòu)縝密,但一般情況下使用的權(quán)限都會(huì)受到注冊購買的限制,因此基于FPGA的自編程實(shí)現(xiàn)方法成了濾波器實(shí)現(xiàn)的首選3。以下簡要介紹IIR數(shù)字濾波器的設(shè)計(jì)方案和基于FPGA的實(shí)現(xiàn)方法4。1.方案一:直接相乘累加式對于二階的IIR數(shù)字濾波器,其傳遞函數(shù)為: (1.2.1)濾波器信號(hào)流圖見

14、圖1-1,在第n時(shí)刻,是當(dāng)時(shí)的輸入樣本; 是n時(shí)刻的IIR濾波器的輸出: (1.2.2)因此,可以用硬件乘法器和硬件加法器來實(shí)現(xiàn)乘法和加法。由式(1.2.2)可以看出,按照這種設(shè)計(jì)方法,要用到5個(gè)乘法器和6個(gè)加法器。對于FPGA的設(shè)計(jì)來說,這種方法的缺點(diǎn)是比較耗費(fèi)資源。2.方案二:基于ROM查表法的VHDL結(jié)構(gòu)化設(shè)計(jì)采用ROM查表的方法,主要是為了避免使用硬件乘法器。二階IIR的一般表示形式為: (1.2.3)其中是輸入序列,是輸出序列,和是系數(shù)。假設(shè)輸入序列為位2的補(bǔ)碼,并以定點(diǎn)表示,并<1,對于可以表示為: (1.2.4)式中:表示的第位,上標(biāo)為0的是符號(hào)位,因此可以定義一個(gè)5bit

15、為變量的函數(shù)為: (1.2.5)由此可以得到:- (1.2.6)由于函數(shù)僅有32種可能取值,因此可以設(shè)計(jì)一個(gè)32*b位的ROM構(gòu)成的如圖1-3描述的基于ROM的實(shí)現(xiàn)結(jié)構(gòu)。數(shù)據(jù)輸入串行移入SR1和SR2,由抽頭處得到,每計(jì)算出一個(gè)值后,便并行加載到SR3中,然后串行移入SR4,并在抽頭處得到和。ROM的輸入地址由組成。按此方法設(shè)計(jì)的優(yōu)點(diǎn)是避免了占主要運(yùn)算量的乘法運(yùn)算,節(jié)省了FPGA的硬件資源,缺點(diǎn)與FIR濾波器利用ROM方法設(shè)計(jì)相同,即使用不夠靈活。當(dāng)系數(shù)發(fā)生變化時(shí),更改ROM內(nèi)的數(shù)據(jù)十分不便,特別是當(dāng)階數(shù)比較大時(shí),ROM內(nèi)的數(shù)據(jù)較多,程序外的運(yùn)算量也很大,修改數(shù)據(jù)更為不便。 圖1-2 ROM查

16、表法實(shí)現(xiàn)框圖3.方案三:基于ROM查表法的改進(jìn)型設(shè)計(jì)此方法結(jié)合了直接相乘累加式和ROM查表法的優(yōu)點(diǎn),使得設(shè)計(jì)靈活,設(shè)計(jì)周期短,節(jié)省資源。二階IIR的一般表示形式為: (1.2.6)這里是輸入序列,是輸出序列,和是系數(shù)。設(shè)輸入序列為位2的補(bǔ)碼,并以定點(diǎn)表示,并<1,對于可以表示為: (1.2.7)式中:表示的第位,上標(biāo)為0的是符號(hào)位,因此可以定義一個(gè)5bit為變量的函數(shù)為: (1.2.8)同理可得: (1.2.9)由此可以得到: (1.2.10)令,可以推出: (1.2.11)從式(1.2.11)中可以看出,可以用一個(gè)五路8位*1位乘法器在8個(gè)時(shí)鐘周期內(nèi)實(shí)現(xiàn)上述算式。其加法可以直接調(diào)用軟件

17、的庫實(shí)現(xiàn)。本方案實(shí)現(xiàn)結(jié)構(gòu)如圖1-3所示。X(n)X(n-1)X(n-2)X(n-1)X(n-2)輸入b0kb1ka0ka2ka1k輸出Y(n)累 加 器 圖1-3 改進(jìn)型實(shí)現(xiàn)框圖圖1-3中的作為FPGA接口上的A/D器件的轉(zhuǎn)換數(shù)據(jù)輸入寄存器,各寄存器內(nèi)的數(shù)據(jù)與各自的系數(shù)的最高位相乘后,送入累加器相加,并且其和向左移一位,以實(shí)現(xiàn)乘2運(yùn)算。下一個(gè)時(shí)鐘,寄存器內(nèi)數(shù)據(jù)與其系數(shù)的次高位相乘,再送入累加器與其數(shù)據(jù)相加,再左移一位。接下的6個(gè)時(shí)鐘進(jìn)行類似的操作。第8個(gè)時(shí)鐘后,累加器將其數(shù)據(jù)輸出,即,并對累加器清零,同時(shí)將寄存器數(shù)據(jù)送入寄存器,將寄存器數(shù)據(jù)送入寄存器,同理,。接著再進(jìn)行下一次運(yùn)算。對上述三種方

18、法相比較而言,方案三實(shí)現(xiàn)較為方便簡潔,在節(jié)省了FPGA硬件資源的同時(shí),使得設(shè)計(jì)靈活,設(shè)計(jì)周期大為縮短,故本設(shè)計(jì)在方案三為基礎(chǔ)上作改進(jìn)后,來實(shí)現(xiàn)IIR數(shù)字濾波器的。第2章 EDA技術(shù)和可編程邏輯器件2. 1 電子設(shè)計(jì)自動(dòng)化EDA技術(shù)EDA是Electronic Design Automation的縮寫,意為電子設(shè)計(jì)自動(dòng)化,即利用計(jì)算機(jī)自動(dòng)完成電子系統(tǒng)的設(shè)計(jì)?;仡櫧?0年的電子設(shè)計(jì)技術(shù)的發(fā)展歷程,可將EDA技術(shù)分為三個(gè)階段4:七十年代為CAD(Computer Aide Design)階段。這個(gè)階段主要分別研制了一個(gè)個(gè)單獨(dú)的軟件工具,主要有電路模擬、邏輯模擬、版圖編輯、PCB布局布線等,通過計(jì)算機(jī)

19、的使用,從而可以把設(shè)計(jì)人員從大量繁瑣、重復(fù)的計(jì)算和繪圖工作中解脫出來。八十年代為CAE階段。這個(gè)階段在集成電路與電子系統(tǒng)方法學(xué),以及設(shè)計(jì)工具集成方面取得了眾多成果,與CAD相比,除了純粹的圖形繪制功能外,又增加了電路功能設(shè)計(jì)和結(jié)構(gòu)設(shè)計(jì),并且通過電氣連接網(wǎng)絡(luò)表將兩者結(jié)合在一起,實(shí)現(xiàn)了工程設(shè)計(jì)。九十年代為EDA階段,盡管CAD/CAE技術(shù)取得了巨大的成功,但在整個(gè)設(shè)計(jì)過程中,自動(dòng)化和智能化程度還不高,各種EDA軟件界面千差萬別,學(xué)習(xí)實(shí)用困難直接影響到設(shè)計(jì)環(huán)節(jié)間的銜接?;谝陨喜蛔悖藗冮_始追求貫穿整個(gè)設(shè)計(jì)過程的自動(dòng)化,即電子系統(tǒng)設(shè)計(jì)自動(dòng)化。2. 2可編程邏輯器件2.2.1可編程邏輯器件簡介可編程陣

20、列邏輯器件PAL(Programmable Array Logic)和通用陣列邏輯器件GAL(Generic Array Logic)都屬于簡單PLD。隨著技術(shù)的發(fā)展,簡單PLD在集成度和性能方面的局限性也暴露出來。其寄存器、I/O引腳、時(shí)鐘資源的數(shù)目有限,沒有內(nèi)部互連,因此包括復(fù)雜可編程邏輯器件CPLD(Complex PLD)和現(xiàn)場可編程門陣列器件FPGA(Field Programmable Gate Array)在內(nèi)的復(fù)雜PLD迅速發(fā)展起來,并向著高密度、高速度、低功耗以及結(jié)構(gòu)體系更靈活、適用范圍更廣闊的方向發(fā)展。FPGA具備陣列型PLD的特點(diǎn),結(jié)構(gòu)又類似掩膜可編程門陣列,因而具有更高

21、的集成度和更強(qiáng)大的邏輯實(shí)現(xiàn)功能,使設(shè)計(jì)變得更加靈活和易實(shí)現(xiàn)。相對于 CPLD,它還可以將配置數(shù)據(jù)存儲(chǔ)在片外的EPROM或者計(jì)算機(jī)上,設(shè)計(jì)人員可以控制加載過程,在現(xiàn)場修改器件的邏輯功能,即所謂的現(xiàn)場可編程。所以FPGA得到了更普遍的應(yīng)用。2.2.2使用FPGA器件進(jìn)行開發(fā)的優(yōu)點(diǎn)使用FPGA器件設(shè)計(jì)數(shù)字電路,不僅可以簡化設(shè)計(jì)過程,而且可以降低整個(gè)系統(tǒng)的體積和成本,增加系統(tǒng)的可靠性。使用FPGA器件設(shè)計(jì)數(shù)字系統(tǒng)電路的主要優(yōu)點(diǎn)如下:1.增大功能密集度功能密集度是指在給定的空間能集成的邏輯功能數(shù)量。可編程邏輯芯片內(nèi)的組件門數(shù)高,一片F(xiàn)PGA可代替幾十片乃至上百片中小規(guī)模的數(shù)字集成電路芯片。用FPGA實(shí)現(xiàn)

22、數(shù)字系統(tǒng)時(shí)用的芯片數(shù)量少,從而減少印刷板面積和數(shù)目,最終導(dǎo)致系統(tǒng)規(guī)模的減小。2.縮短設(shè)計(jì)周期由于FPGA器件集成度高,使用時(shí)印刷線路板電路布局布線簡單。FPGA器件的可編程性和靈活性,決定了用它設(shè)計(jì)一個(gè)系統(tǒng)所需時(shí)間比傳統(tǒng)方法大為縮短。3.工作速度快FPGA/CPLD器件的工作速度快,一般可以達(dá)到幾百兆赫茲,遠(yuǎn)遠(yuǎn)大于DSP器件。使用FPGA器件后實(shí)現(xiàn)系統(tǒng)所需要的電路級(jí)數(shù)少,因而整個(gè)系統(tǒng)的工作速度會(huì)得到提高。2.2.3 FPGA設(shè)計(jì)的開發(fā)流程設(shè)計(jì)開始需利用EDA工具的文本或圖形編輯器將設(shè)計(jì)者的設(shè)計(jì)意圖用文本方式(如VHDL程序)或圖形方式(原理圖、狀態(tài)圖等)表達(dá)出來。完成設(shè)計(jì)描述后即可通過編譯器進(jìn)

23、行排錯(cuò)編譯,變成特定的文本格式,為下一步的綜合做準(zhǔn)備。編譯形成標(biāo)準(zhǔn)VHDL文件后,在綜合前即可以對所描述的內(nèi)容進(jìn)行功能仿真,又可稱為前仿真。由于此時(shí)的仿真只是根據(jù)VHDL的語義進(jìn)行的,與具體電路沒有關(guān)系,仿真過程不涉及具體器件的硬件特性,如延遲特性。設(shè)計(jì)的第三步是綜合,將軟件設(shè)計(jì)與硬件的可實(shí)現(xiàn)性掛鉤,這是軟件化為硬電路的關(guān)鍵步驟。綜合后,可生成VHDL網(wǎng)表文件,利用網(wǎng)表文件進(jìn)行綜合后仿真。綜合通過后必須利用FPGA布局/布線適配器將綜合后的網(wǎng)表文件針對某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,這個(gè)過程叫做實(shí)現(xiàn)過程。布局布線后應(yīng)進(jìn)行時(shí)序仿真。時(shí)序仿真中應(yīng)將布局布線后的時(shí)延文件反標(biāo)到設(shè)計(jì)中,使仿真既包含

24、門時(shí)延,又包含線時(shí)延的信息。與前面各種仿真相比,這種仿真包含的時(shí)延信息最為全面、準(zhǔn)確,能較好地反映芯片的實(shí)際工作情況。如果以上的所有過程,都沒有發(fā)現(xiàn)問題,即滿足原設(shè)計(jì)要求,就可以將適配器產(chǎn)生的配置/下載文件通過編程器或下載電纜載入目標(biāo)芯片中。2.3 硬件描述語言VHDL及數(shù)字系統(tǒng)設(shè)計(jì)方法2.3.1 硬件描述語言VHDL簡介硬件描述語言(Very High Speed Integrated Circuit Hardware Description Language, VHDL)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,包括系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門級(jí)多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描

25、述形式的混合描述,因此VHDL幾乎覆蓋了以往各種硬件描述語言的功能。它主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口,非常適用于可編程邏輯芯片的應(yīng)用設(shè)計(jì)。與其它的HDL相比,VHDL具有更強(qiáng)大的行為描述能力,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。2.3.2利用VHDL設(shè)計(jì)數(shù)字系統(tǒng)利用VHDL語言設(shè)計(jì)數(shù)字系統(tǒng)硬件電路,與傳統(tǒng)的設(shè)計(jì)方法相比,具有以下優(yōu)點(diǎn):1.采用自頂向下(TOP-DOWN)的設(shè)計(jì)方法。自頂向下是指從系統(tǒng)總體要求出發(fā),在頂層進(jìn)行功能方框圖的劃分和結(jié)構(gòu)設(shè)計(jì)。由于設(shè)計(jì)的主要仿真和調(diào)試過程在高層次上完成,這一方面有利于提高了設(shè)計(jì)的效率。2.降低了硬件電路的設(shè)計(jì)難度。在使用VHDL

26、語言設(shè)計(jì)硬件電路時(shí),可以免除編寫邏輯表達(dá)式或真值表的過程,使得設(shè)計(jì)難度大大下降,從而也縮短了設(shè)計(jì)周期。3.主要設(shè)計(jì)文件是用VHDL語言編寫的源程序。在傳統(tǒng)的硬件電路設(shè)計(jì)中,最后形成的主要文件是電路原理圖,而采用VHDL語言設(shè)計(jì)系統(tǒng)硬件電路時(shí)主要的設(shè)計(jì)文件是VHDL語言編寫的源程序。4.方便ASIC移植。VHDL語言的效率之一,就是如果你的設(shè)計(jì)是被綜合到一個(gè)FPGA或CPLD的話,則可以使你設(shè)計(jì)的產(chǎn)品以最快的速度上市。當(dāng)產(chǎn)品的產(chǎn)量達(dá)到相當(dāng)?shù)臄?shù)量時(shí),采用VHDL進(jìn)行的設(shè)計(jì)很容易轉(zhuǎn)換成專用集成電路來實(shí)現(xiàn)。所以本次設(shè)計(jì)采用利用VHDL語言的數(shù)字系統(tǒng)設(shè)計(jì)方法。第3章IIR數(shù)字濾波器的設(shè)計(jì)與仿真結(jié)果分析3

27、.1 各模塊的設(shè)計(jì)與仿真結(jié)果分析本課題在實(shí)現(xiàn)方案三的基礎(chǔ)上,結(jié)合參考文獻(xiàn)4-6將IIR濾波器的硬件系統(tǒng)分為四個(gè)模塊:時(shí)序控制、延時(shí)、補(bǔ)碼乘加和累加模塊。以下就各個(gè)模塊的實(shí)現(xiàn)及仿真作簡要的分析。3.1.1 時(shí)序控制模塊的設(shè)計(jì)與仿真結(jié)果分析時(shí)序控制模塊主要用來產(chǎn)生對其它模塊的時(shí)序控制信號(hào)。模塊的符號(hào)如圖3-1(a)所示,輸入信號(hào)CLK是時(shí)鐘信號(hào),RES是復(fù)位信號(hào),CLK_REG及CLK_REGBT是輸出信號(hào)。圖3-1(a) 時(shí)序控制模塊圖圖3-1(b) 時(shí)序控制模塊仿真圖時(shí)序控制模塊仿真如圖3-2(b)所示,其中counter為程序內(nèi)部計(jì)數(shù)信號(hào),在clk的上升延到來時(shí),counter以6個(gè)時(shí)鐘為周

28、期開始進(jìn)行計(jì)數(shù),clk_regbt每隔6個(gè)時(shí)鐘輸出一個(gè)低電平,clk_reg則每隔6個(gè)時(shí)鐘后輸出一個(gè)高電平。輸出的兩個(gè)時(shí)鐘信號(hào)正好控制延時(shí)模塊、補(bǔ)碼乘加模塊和累加模塊的模塊的運(yùn)行。符合設(shè)計(jì)要求。時(shí)序控制模塊程序見附錄1。3.1.2 延時(shí)模塊的設(shè)計(jì)與仿真結(jié)果分析延時(shí)模塊的符號(hào)如圖3-2(a)所示,其主要作用是在clk時(shí)鐘作用下將差分方程的各、值延遲一個(gè)時(shí)鐘,以實(shí)現(xiàn)一次延時(shí)運(yùn)算,即當(dāng)輸入為xn和yn時(shí),經(jīng)過一次延時(shí)后其輸出分別為x(n-1)和y(n-1).其中yout是反饋輸入信號(hào),xn是輸入信號(hào)。程序見附錄二。圖3-2(a) 延時(shí)模塊圖圖3-2(b) 延時(shí)模塊仿真圖延時(shí)模塊仿真圖如圖3-2(b)

29、所示,由圖3-4可以看出當(dāng)輸入的xn、yout都為時(shí),在時(shí)鐘信號(hào)上升沿的作用下產(chǎn)生延時(shí),經(jīng)第一個(gè)時(shí)鐘后x0、x1、x2、y0、y1的值分別為1,0,0,1,0。經(jīng)第二個(gè)時(shí)鐘后x0、x1、x2、y0、y1的值分別為2,1,0,2,1。經(jīng)第三個(gè)時(shí)鐘后x0、x1、x2、y0、y1的值分別為3,2,1,3,2。經(jīng)第四個(gè)時(shí)鐘后由此可見該模塊仿真值正確。延時(shí)模塊程序見附錄1。3.1.3 補(bǔ)碼乘加模塊的設(shè)計(jì)與仿真結(jié)果分析補(bǔ)碼乘加模塊主要用來實(shí)現(xiàn)輸入序列、與系數(shù)、分別相乘后再相加的過程。即實(shí)現(xiàn)的算法。為了避免過多地使用乘法器,本設(shè)計(jì)中乘加單元(MAC)的乘法器采用陣列乘法器,以提高運(yùn)算速度。由于Maxplus

30、的LPM庫中乘法運(yùn)算為無符號(hào)數(shù)的陣列乘法,所以使用時(shí)需要先將兩個(gè)補(bǔ)碼乘數(shù)轉(zhuǎn)換為無符號(hào)數(shù)相乘后,再將乘積轉(zhuǎn)換為補(bǔ)碼乘積輸出5。每個(gè)二階節(jié)完成一次運(yùn)算共需要6個(gè)時(shí)鐘周期,而且需采用各自獨(dú)立的MAC實(shí)現(xiàn)兩級(jí)流水線結(jié)構(gòu),即每個(gè)數(shù)據(jù)經(jīng)過兩個(gè)二階節(jié)輸出只需要6個(gè)時(shí)鐘周期。模塊的符號(hào)如圖3-3(a)所示。圖3-3(a) 補(bǔ)碼乘加模塊圖圖3-3(b) 補(bǔ)碼乘加模塊仿真圖補(bǔ)碼乘加模塊仿真圖如圖3-5所示,clk_regbt及clk_reg為輸入時(shí)鐘,由時(shí)序控制模塊提供。、為系數(shù),x0、x1、x2、y0、y1為輸入信號(hào),yout為輸出信號(hào),圖3-3(b)中75為x0、x1、x2、y0、y1的值15和系數(shù)、相乘后再

31、相加的結(jié)果,完成了補(bǔ)碼乘加的功能。補(bǔ)碼乘加模塊程序見附錄1。3.1.4 累加模塊的設(shè)計(jì)與仿真結(jié)果分析補(bǔ)碼乘加模塊所輸出的信號(hào)送入累加器后,與寄存于累加器中的上一步計(jì)算的中間結(jié)果相加,最后將此步的計(jì)算結(jié)果經(jīng)由輸出引腳輸出,所得信號(hào)即為最終結(jié)果。 即該模塊主要實(shí)現(xiàn)youtput=yout+youtput(n-1)的算法,模塊的符號(hào)如圖3-4(a)所示。圖3-4(a) 累加模塊圖圖3-4(b) 累加模塊仿真圖累加模塊仿真圖如圖3-4(b),其中res為復(fù)位信號(hào),clk為時(shí)鐘信號(hào),yout為輸入信號(hào),由補(bǔ)碼乘加模塊的輸出信號(hào)yout提供,由圖中可以看出當(dāng)輸入信號(hào)為yout=,輸出為youtput=,實(shí)

32、現(xiàn)了累加的功能。符合設(shè)計(jì)要求。累加模塊程序見附錄1。3.1.5 頂層模塊設(shè)計(jì)頂層模塊設(shè)計(jì)采用了原理圖輸入方法,原理圖輸入方式非常直觀,便于信號(hào)觀察和電路的調(diào)節(jié)。圖3-5 頂層模塊圖本課題設(shè)計(jì)的頂層文件名為iir.gdf,設(shè)計(jì)生成的邏輯符號(hào)如圖3-5所示。頂層模塊設(shè)計(jì)程序見附錄1。3.2 IIR數(shù)字濾波器的仿真與結(jié)果分析3.2.1 IIR數(shù)字濾波器的系統(tǒng)設(shè)計(jì)IIR數(shù)字濾波器頂層原理圖如圖3-6所示。為了便于理解整個(gè)系統(tǒng)的設(shè)計(jì),現(xiàn)將系統(tǒng)的運(yùn)行過程進(jìn)行說明:圖3-6 IIR數(shù)字濾波器頂層原理圖系統(tǒng)先開始處于初始狀態(tài),當(dāng)清零信號(hào)為“1”時(shí),對整個(gè)系統(tǒng)進(jìn)行清零。在清零信號(hào)為“0”的前提,時(shí)序控制模塊在時(shí)

33、鐘clk上升沿的作用下產(chǎn)生兩個(gè)信號(hào)CLK_REG及CLK_REGBT,其中CLK_REG信號(hào)用來作為延時(shí)模塊、補(bǔ)碼乘加模塊和累加模塊的輸入時(shí)鐘,CLK_REGBT每隔6個(gè)時(shí)鐘產(chǎn)生一個(gè)高電平作為這三個(gè)模塊的復(fù)位信號(hào)。延時(shí)模塊在接收到CLK_REG高電平信號(hào)時(shí)清零輸出端,接收到低電平時(shí),在CLK_REGBT上升沿的作用下對輸入信號(hào)進(jìn)行延時(shí),以實(shí)現(xiàn)一次延時(shí)運(yùn)算,而后將延時(shí)信號(hào)輸出,送給補(bǔ)碼乘加模塊。補(bǔ)碼乘加模塊在接收延時(shí)信號(hào)的同時(shí)也接收讀者輸入的系數(shù)信號(hào),在CLK_REGBT上升沿的作用下實(shí)現(xiàn)系數(shù)和延時(shí)信號(hào)的補(bǔ)碼乘加運(yùn)算,而此步驟需要6個(gè)時(shí)鐘來完成,正好與時(shí)序控制模塊的輸出信號(hào)CLK_REGBT相一

34、致。補(bǔ)碼乘加模塊的輸出一部分送入延時(shí)模塊以實(shí)現(xiàn)信號(hào)的反饋,另一部分則送入到累加模塊,在累加模塊中進(jìn)行結(jié)果累加后輸出,得到最終結(jié)果。3.2.2 IIR數(shù)字濾波器的系統(tǒng)仿真與結(jié)果分析在各模塊編譯通過后將各模塊進(jìn)行了綜合,針對不同的輸入信號(hào)和不同的輸入系數(shù)對IIR數(shù)字濾波器進(jìn)行了仿真,仿真波形如圖3-7所示。并將仿真值和計(jì)算值進(jìn)行了比較,如表3.2.1中所示。(a)(b)(c)圖3-7 IIR數(shù)字濾波器仿真圖表3.2.1 濾波后輸出的數(shù)據(jù)輸入數(shù)據(jù)Xn=0,1,2,3,4,5;a0=a1=a2=b0=b1=1計(jì)算值01411244780仿真值01411254369輸入數(shù)據(jù)Xn=0,1,0,1,0,1;

35、a0=a1=a2=b0=b1=1計(jì)算值012581524仿真值012591523輸入數(shù)據(jù)Xn=0,1,0,1,0,1;a0=2,a1=a2=b0=b1=1計(jì)算值0238142234仿真值0249172741由表3.2.1可見,仿真值結(jié)果正確,只是與真值之間存在一定的誤差,仿真值越大時(shí)誤差越大,這是由于有限精度算法所引起的誤差,經(jīng)累加器累加后使得誤差變得越來越大,要解決這一問題可以通過增加二進(jìn)制位數(shù)來提高系統(tǒng)的運(yùn)算精度5。3.2.3 高階IIR數(shù)字濾波器的實(shí)現(xiàn)要實(shí)現(xiàn)一個(gè)高階IIR數(shù)字濾波器,如果采用直接型結(jié)構(gòu)實(shí)現(xiàn),需用的乘法器和延遲單元相對較多,而且分子和分母的系數(shù)相差較大,需要較多的二進(jìn)制位數(shù)

36、才能實(shí)現(xiàn)相應(yīng)的精度要求。如果采用二階節(jié)級(jí)聯(lián)實(shí)現(xiàn),一方面各基本節(jié)的零點(diǎn)、極點(diǎn)可以很方便地單獨(dú)進(jìn)行調(diào)整,另一方面可以降低對二進(jìn)制數(shù)位數(shù)的要求。以實(shí)現(xiàn)一個(gè)四階IIR數(shù)字濾波器為例,可以通過兩個(gè)二階IIR數(shù)字濾波器級(jí)聯(lián)的方式來實(shí)現(xiàn)較為簡潔。圖3-8給出了一個(gè)四階IIR數(shù)字濾波器實(shí)現(xiàn)的原理圖5,具體的工作原理與二階IIR數(shù)字濾波器類似,在此本節(jié)即不再細(xì)述。圖3-8 四階IIR數(shù)字濾波器的頂層原理當(dāng)然,更高階的IIR數(shù)字濾波器的實(shí)現(xiàn)方法與四階濾波器的實(shí)現(xiàn)方法類似,只需將多個(gè)二階IIR數(shù)字濾波器進(jìn)行級(jí)聯(lián),即可實(shí)現(xiàn)。結(jié) 束 語為期三個(gè)月的畢業(yè)設(shè)計(jì)即將結(jié)束,在這期間我經(jīng)歷了從查資料、分析課題到學(xué)習(xí)軟件、設(shè)計(jì)程序

37、、調(diào)試、總結(jié)經(jīng)驗(yàn)教訓(xùn)及書寫畢業(yè)論文的過程。本課題采用一種基于FPGA的IIR數(shù)字濾波器的設(shè)計(jì)方案,首先分析了IIR數(shù)字濾波器的原理及設(shè)計(jì)方法,然后通過MAX+PLUS的設(shè)計(jì)平臺(tái),采用模塊化、層次化的設(shè)計(jì)思想將整個(gè)IIR數(shù)字濾波器分為四個(gè)功能模塊:時(shí)序控制模塊、延時(shí)模塊、補(bǔ)碼乘加模塊、累加模塊。分別對各模塊采用語言VHDL進(jìn)行描述后,進(jìn)行了仿真和綜合。仿真結(jié)果表明,本課題所設(shè)計(jì)的IIR數(shù)字濾波器運(yùn)算速度較快。但由于有限精度算法問題致使仿真結(jié)果存在一定的誤差,針對這一問題可以通過增加二進(jìn)制位數(shù)來提高系統(tǒng)的運(yùn)算精度。由于畢業(yè)設(shè)計(jì)即將結(jié)束,沒有時(shí)間繼續(xù)完善本課題所實(shí)現(xiàn)的IIR數(shù)字濾波器的性能,在這一方

38、面,濾波器的性能有待提高。參考文獻(xiàn)1 劉凌,胡永生譯數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)M北京:清華大學(xué)出版社20032 丁玉美,高西全數(shù)字信號(hào)處理M西安:西安電子科技大學(xué)出版社20043 潘松,黃繼業(yè)EDA技術(shù)實(shí)用教程M北京:科學(xué)出版社20004 潘松,王國棟VHDL實(shí)用教程M成都:電子科技大學(xué)出版社20015 倪向東基于FPGA的四階IIR數(shù)字濾波器J電子技術(shù)應(yīng)用,20036 王衛(wèi)兵高階IIR數(shù)字濾波器的FPGA描述J電子元器件,2005,16期:pp3-47 黃任VHDL入門·解惑·經(jīng)典實(shí)例·經(jīng)驗(yàn)總結(jié)M北京:北京航空航天出版社20058 北京理工大學(xué)ASIC研究所VH

39、DL語言100例詳解M北京:清華大學(xué)出版社19999 Joseph B. Evans, "Efficient F1R Filter Architectures Suitable for FPGA Implementation"M IEEE Trans, Circuits and System,July 199410Javier Valls, Marcos M. Peiro, Trini Sansaloni, Eduardo Boemo, "A Study About FPGA-BasedDigital Filters"J, IEEE SIPS, pp19

40、1-201,October 1998致 謝本文是在導(dǎo)師朱幼蓮教授的精心指導(dǎo)和嚴(yán)格要求下完成的。從選題到論文的完成,都凝聚著朱幼蓮老師的辛勞和汗水。她在我這三個(gè)月的畢業(yè)設(shè)計(jì)期間給了我很多無微不至的關(guān)懷,從IIR數(shù)字濾波器的理論知識(shí)到濾波器的實(shí)現(xiàn)方法都有朱老師孜孜不倦的教誨,在朱老師的幫助下本次畢業(yè)設(shè)計(jì)才能得意順利完成。朱老師淵博的知識(shí)、嚴(yán)謹(jǐn)科學(xué)的治學(xué)態(tài)度和工作作風(fēng)將給我以后的學(xué)習(xí)和工作起著模范和激勵(lì)的作用,在此對朱幼蓮老師表示深深的敬意和衷心的感謝!此外,我在畢業(yè)設(shè)計(jì)期間還得到許多老師、同學(xué)、朋友的幫助,在此亦表示衷心的感謝!附錄1 各模塊VHDL程序時(shí)序控制模塊程序library ieee;u

41、se ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity control is port( clk,res:in std_logic; clk_reg,clk_regbt:out std_logic );end;architecture bhv of control is signal counter,count_bt:integer ; signal clk_en:std_logic; beginclk_regbt<=not clk and clk_en;

42、clk_reg<=not clk and not clk_en; process(clk,res) begin if(res='1')then counter<=0; count_bt<=0; elsif(clk'event and clk='1')then if( counter<6)then clk_en<='1' counter<=counter+1; count_bt<=count_bt-1; else counter<=0; count_bt<=0;clk_en<=&#

43、39;0' end if; end if; end process;end bhv;延時(shí)模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity delay is port (clk:in std_logic; res:in std_logic; xn:in std_logic_vector(4 downto 0); yout:in std_logic_vector(8 downto 0); x0,x1,x2:out s

44、td_logic_vector(4 downto 0); y0,y1:out std_logic_vector(8 downto 0);end delay;architecture bhv of delay issignal reg_x0,reg_x1,reg_x2:std_logic_vector(4 downto 0);signal reg_y0,reg_y1:std_logic_vector(8 downto 0);beginprocess(res,clk)beginif (res='1') then reg_x0<="00000"reg_x1&

45、lt;="00000"reg_x2<="00000"reg_y0<="000000000"reg_y1<="000000000"elsif (clk'event and clk='1') then reg_x2<=reg_x1;reg_x1<=reg_x0;reg_x0<=xn;reg_y1<=reg_y0;reg_y0<=yout; -實(shí)現(xiàn)延時(shí)end if;x0<=reg_x0;x1<=reg_x1;x2<=reg_x2;y

46、0<=reg_y0;y1<=reg_y1; end process;end bhv;補(bǔ)碼乘加模塊程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity smultadd1 is port (clk_regbt,clk_reg:in std_logic;a0,a1,a2,b0,b1,x0,x1,x2:in std_logic_vector(4 downto 0);y0,y1:in std_logic_vector(8 d

47、ownto 0);yout:out std_logic_vector(8 downto 0);end smultadd1;architecture bhv of smultadd1 issignal tan,tbn,tp2n:std_logic;signal cnt:std_logic_vector(2 downto 0);signal ta,tb,taa,tbb:std_logic_vector(3 downto 0);signal tmpa,tmpb:std_logic_vector(4 downto 0);signal tp,tpp,tppp:std_logic_vector(7 dow

48、nto 0);signal ytmp,p:std_logic_vector(8 downto 0);begin tmpa<=a0 when cnt=0 elsea1 when cnt=1 elsea2 when cnt=2 elseb0 when cnt=3 elseb1 when cnt=4 else (others=>'0');tmpb<=x0 when cnt=0 elsex1 when cnt=1 elsex2 when cnt=2 elsey0 when cnt=3 elsey1 when cnt=4 else (others=>'0&

49、#39;);ta<=tmpa(3 downto 0);tb<=tmpb(3 downto 0);tan<=tmpa(4);tbn<=tmpb(4);taa<=not ta +'1' when (tan='1') else ta; -將輸入轉(zhuǎn)換為補(bǔ)碼tbb<=not tb +'1' when (tbn='1') else tb;tp2n<=tan xor tbn;tp<=taa*tbb; -完成補(bǔ)碼相乘運(yùn)算tpp<=not tp +'1' when (tp2n='1') else tp;p<=(others=>'0') when (tmpb="00000") else tp2n&tpp;process(clk_reg,clk_regbt)beginif clk_reg='1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論