




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于FPGA的CIC數(shù)字濾波器的設(shè)計(jì)摘要:級(jí)聯(lián)積分梳狀(Cascade Integrator Comb,CIC)濾波器是數(shù)字系統(tǒng)中實(shí)現(xiàn)大采樣率變化的多速率濾波器,已經(jīng)證明是在高速抽取和插值系統(tǒng)中非常有效的單元,在數(shù)字下變頻(DDC)和數(shù)字上變頻(DUC)系統(tǒng)中有廣泛的應(yīng)用。它不包含乘法器,只是由加法器,減法器和寄存器組成,而且需要的加法器的數(shù)目也減少了許多,因此CIC濾波器比FIR和IIR濾波器更節(jié)省資源,并且實(shí)現(xiàn)簡(jiǎn)單而高速。本文主要討論了CIC濾波器的基本原理和基于FPGA的仿真實(shí)現(xiàn)方法,具體是采用Verilog HDL語(yǔ)言編程,將濾波器分為積分器模塊和梳狀器模塊2個(gè)部分,對(duì)每個(gè)模塊進(jìn)行具體
2、的功能分析和設(shè)計(jì)實(shí)現(xiàn),最后通過(guò)Modelsim仿真對(duì)濾波器的性能進(jìn)行分析,驗(yàn)證了設(shè)計(jì)的正確性。關(guān)鍵詞:CIC濾波器;抽??;FPGA;Verilog HDLthe Design of Cascade Integrator Comb Filter Based on FPGAAbstract: CIC (Cascade Integrator Comb, CIC) filter is a digital system to achieve large changes in multi-rate sampling rate filter, which has been proven to be a ve
3、ry effective unit in the high-speed extraction and interpolation system. It is widely used in the digital down conversion (DDC ) and digital up conversion (DUC) systems. It does not contain the multiplier, but just composes by adders, subtractors and registers, and the number of needing adders is re
4、duced a lot. So it takes fewer resources than FIR filter and IIR filter. And the speed of CIC filter is very high and it is also very convenient to realize. This article discusses the basic principles of CIC filter and the simulation way based on FPGA. The modules were described with Verilog HDL. Fi
5、rstly, the filter was divided into two parts which were integration module and the comb module. Then the function of each module were analyzed and designed. Finally the performance of the filter was analyzed under ModelSim and the correctness of the design was verified.Keywords:CIC filter; Decimatio
6、n; FPGA; Verilog HDL1. 引言:數(shù)字濾波是數(shù)字信號(hào)分析中最重要的組成部分之一,數(shù)字濾波與模擬濾波相比,具有精度和穩(wěn)定性高,系統(tǒng)函數(shù)容易改變,靈活性高,不存在阻抗匹配問(wèn)題,便于大規(guī)模集成,可實(shí)現(xiàn)多維濾波等優(yōu)點(diǎn)。級(jí)聯(lián)積分梳狀(Cascade integrator comb,CIC)濾波器,是由Hogenauer引入的一種非常有效的高分解速率的數(shù)字濾波器結(jié)構(gòu),已經(jīng)證明是在高速抽取和插值系統(tǒng)中非常有效的單元。它具有較好的抗混疊和抗鏡像性能;它不包含乘法器,只是由加法器,減法器和寄存器組成,而且需要的加法器的數(shù)目也減少了許多,因此CIC濾波器比FIR和IIR濾波器更節(jié)省資源,并且實(shí)現(xiàn)
7、簡(jiǎn)單而高速;無(wú)需存儲(chǔ)濾波器的系數(shù),結(jié)構(gòu)規(guī)則易于拓展,無(wú)需外部控制,抽取倍數(shù)可變,對(duì)提高實(shí)時(shí)性和簡(jiǎn)化硬件有重要意義。CIC濾波器的應(yīng)用范圍非常的廣泛:由于其具有較好的抗混疊和抗鏡像性能,可以實(shí)現(xiàn)任意采樣率的轉(zhuǎn)換,因此被用在軟件無(wú)線電接收機(jī)中;用于正交多速率調(diào)制系統(tǒng)中,但又不僅僅是局限在調(diào)制器中,只要CIC濾波器之前或之后有FIR濾波器,對(duì)CIC濾波器的通帶衰減進(jìn)行補(bǔ)償以后,都能夠以很小的代價(jià)換取最大的硬件資源節(jié)省1;在全數(shù)字接收機(jī)中的應(yīng)用,CIC濾波器與HB濾波器共同實(shí)現(xiàn)了數(shù)字抽取濾波器,從輸入的寬帶高數(shù)據(jù)流的數(shù)字信號(hào)中提取所需的窄帶信號(hào),并在低通濾波器的作用下,下變頻為數(shù)字基帶信號(hào)2;在ADC
8、中頻信號(hào)處理模塊中的應(yīng)用,用CIC濾波器來(lái)匹配噪聲抑制濾波器,并對(duì)采樣后的數(shù)據(jù)再進(jìn)行下采樣,以降低噪聲和后端硬件成本3;在無(wú)線通信中的應(yīng)用,如:蜂窩式無(wú)限電通信;CIC濾波器由于其結(jié)構(gòu)的獨(dú)有特性,已經(jīng)成為了許多新型高性能器件的核心部件。因此研究它具有很重要的實(shí)用意義。本文是要設(shè)計(jì)一個(gè)基于現(xiàn)場(chǎng)可編程門陣列(FPGA),用Verilog HDL語(yǔ)言編程實(shí)現(xiàn)的級(jí)聯(lián)積分梳狀(Cascade integrator comb,CIC)數(shù)字濾波器。主要內(nèi)容包括:架構(gòu)設(shè)計(jì)、接口邏輯設(shè)計(jì)、FSM設(shè)計(jì)、編碼實(shí)現(xiàn)、功能仿真等。2. 設(shè)計(jì)平臺(tái)介紹:系統(tǒng)設(shè)計(jì)需要使用Verilog HDL(Hardware Descri
9、ptions Language)、ModelSim 6.0、FPGA(Field Programmable Gates Array)現(xiàn)場(chǎng)可編程門陣列。2.1 Verilog HDL簡(jiǎn)介:Verilog HDL是一種硬件描述語(yǔ)言(HDL: Hardware Description Language),用于從算法級(jí)、門級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模。被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于簡(jiǎn)單的門和完整的電子數(shù)字系統(tǒng)之間。數(shù)字系統(tǒng)能夠按層次描述,并可在相同描述中顯式地進(jìn)行時(shí)序建模。以文本形式來(lái)描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語(yǔ)言,用它表示邏輯電路圖、邏輯表達(dá)式以及數(shù)字邏輯系統(tǒng)所完成的邏輯功能
10、。2.2 Modelsim簡(jiǎn)介:Modelsim仿真工具是Model公司開(kāi)發(fā)的。它支持Verilog VHDL以及他們的混合仿真,它可以將整個(gè)程序分步執(zhí)行,使設(shè)計(jì)者直接看到他的程序下一步要執(zhí)行的語(yǔ)句,而且在程序執(zhí)行的任何步驟任何時(shí)刻都可以查看任意變量的當(dāng)前值,可以在Dataflow窗口查看某一單元或模塊的輸入輸出的連續(xù)變化等。ModelSim是業(yè)界最優(yōu)秀的HDL語(yǔ)言仿真器 。它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器。全面支持VHDL和Verilog語(yǔ)言的IEEE 標(biāo)準(zhǔn),支持C/C+功能調(diào)用和調(diào)試。2.3 FPGA簡(jiǎn)介:現(xiàn)場(chǎng)可編程門陣列FPGA(Fiel
11、d Programmable Gates Array)是近10年加入到用戶可編程技術(shù)行列中的器件?,F(xiàn)場(chǎng)可編程陣列在器件的選擇和內(nèi)部的互聯(lián)上提供了更大的自由度。FPGA的結(jié)構(gòu)類似于掩膜可編程門陣列(MPGA),由邏輯功能塊排列成陣列組成,并由可編程的內(nèi)部連線連接這些邏輯功能塊來(lái)實(shí)現(xiàn)不同的設(shè)計(jì)4。FPGA是由掩膜可編程門陣列和可編程邏輯器件兩者特性結(jié)合演變而來(lái)的,所以FPGA既具有門陣列的高密度和通用性,又具有可編程邏輯器件的用戶可編程特性。對(duì)于ASIC設(shè)計(jì),采用FPGA在實(shí)現(xiàn)小型化,集成化和高可靠性的同時(shí),還減少了風(fēng)險(xiǎn),降低了成本,縮短了周期。2.3.1 FPGA基本原理:FPGA就結(jié)構(gòu)上而言,
12、主要由三個(gè)部分主成:可編程邏輯塊CLB(Configurable Logic Blocks),可編程輸入/輸出模塊IOB(Input/Output Block),可編程互連資源PIR(Programmable Interconnect Resource)等三種可編程電路。圖1所示為FPGA平面結(jié)構(gòu)示意圖5。CLB是實(shí)現(xiàn)邏輯功能的基本單元,它們通常規(guī)則地排列成一個(gè)陣列,散步于整個(gè)芯片中;IOB主要完成芯片上的邏輯與外部引腳接口,它們通常排列在芯片的四周;PIR包括各種長(zhǎng)度的連線線段和一些可編程連接開(kāi)關(guān),它們將各個(gè)CLB之間或CLB與IOB之間以及IOB之間連接起來(lái),構(gòu)成特定功能的電路。其中,CL
13、B主要由邏輯函數(shù)發(fā)生器,觸發(fā)器,數(shù)據(jù)選擇器等電路組成,邏輯函數(shù)發(fā)生器主要由查找表LUT(Look Up Table)構(gòu)成;IOB主要由輸入觸發(fā)器,輸入緩存器圖1. FPGA的平面結(jié)構(gòu)示意圖Fig.1 The schematic diagram of FPGA和輸出觸發(fā)/鎖存器,輸出緩存器組成,每個(gè)IOB控制一個(gè)引腳,它們可配置為輸入,輸出或雙向I/O功能;PIR由許多金屬線段構(gòu)成,這些金屬線段帶有可編程開(kāi)關(guān),通過(guò)自動(dòng)布線實(shí)現(xiàn)各種電路的連接。2.3.2 FPGA系統(tǒng)設(shè)計(jì)流程:FPGA系統(tǒng)設(shè)計(jì)流程包括硬件和軟件設(shè)計(jì)流程。首先確定系統(tǒng)功能,并對(duì)關(guān)鍵部分予以仿真。在確定系統(tǒng)功能并劃分功能塊之后,根據(jù)不
14、同的結(jié)構(gòu)和算法,確定不同的資源消耗。由上述過(guò)程可以確定系統(tǒng)設(shè)計(jì)需要消耗的門數(shù),存儲(chǔ)器的大小。根據(jù)系統(tǒng)設(shè)計(jì)要求,對(duì)系統(tǒng)時(shí)序和時(shí)鐘率進(jìn)行考察和估計(jì),可以確定所需器件的速度級(jí)別。根據(jù)系統(tǒng)外部接口的要求,確定接口時(shí)序和芯片引腳資源消耗情況。在上述過(guò)程完成以后,考慮系統(tǒng)功能和性能的可擴(kuò)展性,確定器件型號(hào)。型號(hào)確定之后,需要確定配置方式,因?yàn)椴煌吞?hào)的器件,其配置方式是有很大差異的。硬件設(shè)計(jì)和軟件設(shè)計(jì)可以同時(shí)進(jìn)行。系統(tǒng)設(shè)計(jì)在經(jīng)過(guò)設(shè)計(jì),改進(jìn),查錯(cuò),再設(shè)計(jì),再改進(jìn),再查錯(cuò)的螺旋型過(guò)程后,即可完成系統(tǒng)所有的設(shè)計(jì),進(jìn)入產(chǎn)品生產(chǎn)6。如圖2所示為FPGA系統(tǒng)設(shè)計(jì)流程:系統(tǒng)功能定義和邏輯功能劃分設(shè)計(jì)模塊的初步規(guī)劃邏輯模
15、塊的劃分以及模塊接口的定義器件選型設(shè)計(jì)時(shí)序的初步規(guī)劃模塊A設(shè)計(jì)模塊合并,仿真與測(cè)試器件定型,調(diào)試,生產(chǎn)模塊C設(shè)計(jì)模塊B設(shè)計(jì)圖2. FPGA設(shè)計(jì)流程Fig.2 The design process of FPGA3. CIC濾波器的基本原理:3.1 多速率信號(hào)處理原理:所謂多速率信號(hào)處理是指改變信號(hào)的采樣率,實(shí)質(zhì)上是對(duì)采樣后的離散序列重采樣的過(guò)程,包括抽取和內(nèi)插兩種情況。使采樣率降低的采樣率轉(zhuǎn)換稱為抽??;使采樣率升高的采樣率轉(zhuǎn)換稱為內(nèi)插。3.1.1 整數(shù)倍抽取:整數(shù)M倍抽取是指原始抽樣序列x(n)每隔(M-1)個(gè)取一個(gè),形成一個(gè)新序列XM(n),XM(n)=x(Mn),正整數(shù)M為抽取因子。M倍抽
16、取器符號(hào)如圖3所示,設(shè)序列x(n)的頻譜為x(ejw),求得序列XM(n)的傅里葉變換,表明抽取后序列XM(n)的頻譜為原序列x(n)的頻譜經(jīng)頻移和M倍展寬后的M個(gè)頻譜的疊加和。根據(jù)Nyquist采樣定理,若序列x(n)的采樣率為fs,則模擬信號(hào)的最高頻率(無(wú)模糊帶寬)fHfs2,否則x(n)的頻譜會(huì)發(fā)生混疊。當(dāng)以M倍抽取率對(duì)x(n)進(jìn)行抽取后得到的抽取序列XM(n)之取樣率為fsM,其無(wú)模糊帶寬為fs(2M),所以當(dāng)x(n)中含有大于fs(2M)的分量時(shí),XM(n)的頻譜必然產(chǎn)生混疊,無(wú)法從XM(n)中恢復(fù)x(n)中頻率小于fs(2M)的低頻信號(hào)分量。如果先用一個(gè)數(shù)字濾波器(歸一化帶寬B=M
17、)對(duì)X(ejw)進(jìn)行濾波得到V(ejw),該信號(hào)只含有小于M頻率分量,再對(duì)V(ejw)進(jìn)行M倍抽取,就可以避免頻譜混疊。一個(gè)完整的M倍抽取器結(jié)構(gòu)如圖4所示: M圖3. M倍抽取器符號(hào)Fig.3The symbol of M times extractor M圖4. M倍抽取器結(jié)構(gòu)Fig.4The structure of M times extractor3.1.2 整數(shù)倍內(nèi)插:整倍數(shù)內(nèi)插是指在原始抽樣序列的相鄰兩抽樣點(diǎn)之間插入(L-1)個(gè)零值,設(shè)原始抽樣序列為x(n),則內(nèi)插后的序列為 內(nèi)插器符號(hào)如圖5所示。設(shè)序列x(n)的頻譜為x(ejw),求得序列XL(n)的傅里葉變換XL(ejw)=X
18、(ejwL),表明內(nèi)插后序列xL(n)的頻譜為原序列x(n)的頻譜經(jīng)L倍壓縮得到的。因此,xL(ejw)中不僅含有x(ejw)的基帶分量(wM,而且還含有其高頻分量(w>L)。對(duì)內(nèi)插后的信號(hào)進(jìn)行低通濾波,就可以從內(nèi)插信號(hào)頻譜中恢復(fù)出原始基帶譜,使內(nèi)插序列中的(L-1)個(gè)零值都變?yōu)閤(n)的準(zhǔn)確值,所以經(jīng)過(guò)內(nèi)插提高信號(hào)時(shí)域分辨率。完整的L倍內(nèi)插器結(jié)構(gòu)如圖6所示: L 圖5. L倍內(nèi)插器符號(hào)Fig.5 The symbol of L times interpolator L圖6. L倍內(nèi)插器結(jié)構(gòu)Fig.6 The structure of M times interpolator3.2 單級(jí)
19、CIC濾波器:CIC濾波器是由積分器(Integrator)和梳狀(Comb)濾波器兩部分級(jí)聯(lián)而成的,根據(jù)其結(jié)構(gòu)的不同,可分別實(shí)現(xiàn)抽取(Decimation)功能和插值(Interpolation)功能。如圖7和圖8所示:MZ-1Z-DM圖7. 單級(jí)CIC抽取濾波器結(jié)構(gòu)圖Fig.7 The structure of single-stage CIC decimation filter LZ-DLZ-1圖8. 單級(jí)CIC插值濾波器結(jié)構(gòu)圖Fig.8 The structure of single-stage CIC interpolation filter積分部分的積分器是單極點(diǎn)的IIR濾波器,并
20、且反饋系數(shù)為1,狀態(tài)方程如下: (1)積分器也可看成是累加器,根據(jù)Z變換,積分器的傳輸函數(shù)為: (2)梳狀器是一個(gè)對(duì)稱的FIR濾波器,其狀態(tài)方程表示為: (3)式中,D是設(shè)計(jì)參數(shù),稱為微分延遲,其傳輸函數(shù)為: (4)則單級(jí)CIC濾波器的傳遞函數(shù)為: (5)其傳遞函數(shù)的頻率響應(yīng)為: (6)CIC濾波器的幅頻特性如圖9所示,其中0,2/DM為其主瓣,其他的區(qū)間成為旁瓣:圖9. CIC濾波器的幅頻特性Fig.5 The frequency-amplitude characteristic of CIC filter由圖中可以看出,隨著頻率的增大,旁瓣電平不斷減小,當(dāng)DM>>1時(shí),第一旁瓣
21、的電平為2DM/3,它與主瓣電平的差值為: (7)可見(jiàn)單級(jí)CIC濾波器的旁瓣電平較大,阻帶衰減較差。為降低旁瓣電平,可以采用多級(jí)CIC濾波器級(jí)聯(lián)的辦法來(lái)實(shí)現(xiàn)。假設(shè)有N級(jí)級(jí)聯(lián),則阻帶衰減為單級(jí)衰減的N倍,即13.36*N(DB)。3.3 多級(jí)CIC濾波器:多級(jí)CIC濾波器的傳遞函數(shù)為7: (8)其中,N為CIC濾波器的級(jí)數(shù),D為梳狀部分延遲因子,M為抽取因子。濾波器的頻率響應(yīng)為: (9)令w1表示通帶截止頻率,w2表示阻帶截止頻率,在抽取后,對(duì)有用信號(hào)產(chǎn)生混疊的阻帶帶寬為w1,則有。則N級(jí)CIC濾波器的阻帶衰減為: (10)定義帶寬比例因子b為信號(hào)帶寬與抽取后輸出采樣率的比值,即b=w1DM/2
22、,則: (11)N級(jí)CIC濾波器的通帶波紋為: (12)由(11)式可知,濾波器的阻帶衰減隨著N的增加而增加。所以多級(jí)CIC濾波器的阻帶衰減遠(yuǎn)遠(yuǎn)優(yōu)于單級(jí)CIC濾波器。一般來(lái)說(shuō)阻帶衰減達(dá)到70dB左右就能基本滿足實(shí)際要就。并且由(12)式可知,隨著N的增大,通帶波紋也會(huì)增大,所以CIC濾波器的級(jí)數(shù)是有限的。多級(jí)CIC濾波器的性能由3個(gè)參數(shù)N,D,M決定。級(jí)數(shù)N可以用來(lái)控制阻帶衰減,N越大阻帶衰減越大,通帶內(nèi)的混疊就越小,但是由于N級(jí)CIC濾波器的帶內(nèi)容差是單級(jí)時(shí)的N倍,增大阻帶衰減的同時(shí)會(huì)增大帶內(nèi)容差,所以N不可太大,一般不超過(guò)5級(jí)。延遲因子D決定零點(diǎn)的位置,D的增大可以有效的減少通帶內(nèi)的混疊,
23、但是D太大會(huì)導(dǎo)致通帶內(nèi)主瓣衰減過(guò)大,所以一般D取1或2,抽取因子M決定了抽取后信號(hào)的采樣頻率,它同延遲因子一起決定了主瓣和旁瓣的寬度。通常情況下,根據(jù)工程要求來(lái)確定抽取因子M,然后對(duì)通帶帶寬,通帶衰減,和混疊特性進(jìn)行折衷考慮來(lái)確定延遲因子D和濾波器的級(jí)數(shù)N。4. 詳細(xì)設(shè)計(jì):首先構(gòu)造一個(gè)3級(jí)的CIC抽取濾波器,只需把3級(jí)積分器的輸出和3級(jí)梳狀器的輸入串聯(lián)起來(lái),就構(gòu)成了3級(jí)的CIC濾波器。圖10為3級(jí)CIC抽取濾波器的結(jié)構(gòu)圖,而內(nèi)插濾波器的級(jí)聯(lián)方式與抽取器相反。為了能夠更加直觀的觀察多級(jí)CIC濾波器的幅頻特性,特在MATLAB中對(duì)3級(jí)的CIC抽取濾波器的幅頻特性進(jìn)行了繪制(抽取因子M為16,梳狀部
24、分延遲D為2),并且與單級(jí)的CIC濾波器進(jìn)行比較,所得到的圖形為圖11。MX(n)-1-1-1-1-1-1圖10. 3級(jí)CIC抽取濾波器的結(jié)構(gòu)圖Fig.10 The structure of three stages CIC decimation filter圖11. CIC濾波器幅頻特性圖Fig.11 The frequency-amplitude characteristic of CIC filter從圖11中可以看出:CIC濾波器是低通濾波器,3級(jí)CIC濾波器比單級(jí)的CIC濾波器的性能更好,主瓣電平比旁瓣電平高大概40dB,說(shuō)明阻帶衰減比較快;而單級(jí)的CIC濾波器的旁瓣只比主瓣低13.
25、36dB,阻帶衰減很差。因此多級(jí)CIC濾波器的性能比單級(jí)的要好,MATLAB幅頻特性程序見(jiàn)附錄1。多級(jí)CIC濾波器結(jié)構(gòu)簡(jiǎn)單,而且可以很方便地實(shí)現(xiàn)速率變換,在濾波器的兩個(gè)部分之間,速率發(fā)生了變化。對(duì)于CIC的抽取濾波器而言,在最后一級(jí)積分器的輸出端,采樣速率由變?yōu)?M。在設(shè)計(jì)CIC濾波器的過(guò)程中應(yīng)注意的問(wèn)題就是防止積分器的數(shù)據(jù)發(fā)生溢出,可以采取以下兩個(gè)方法,并且不會(huì)影響濾波的正確性:(1) 所采用的數(shù)據(jù)編碼具有如下特點(diǎn):當(dāng)從高端溢出時(shí)返回到低端,從低端溢出時(shí)返回到高端,其實(shí)質(zhì)是對(duì)數(shù)據(jù)求模;(2) 寄存器所存數(shù)值的大小大于,等于整個(gè)濾波器最后輸出地?cái)?shù)值范圍。第一個(gè)條件采用二進(jìn)制補(bǔ)碼形式實(shí)現(xiàn)(在Mo
26、delsim中會(huì)自動(dòng)將負(fù)數(shù)用二進(jìn)制補(bǔ)碼表示)。下面分析如何實(shí)現(xiàn)第二個(gè)條件:為了得到CIC濾波器的幅頻響應(yīng),將帶入系統(tǒng)的傳遞函數(shù),即式(8),為了表示方便把表示成的形式,其中稱為相對(duì)于的歸一化頻率,將它帶入(8)式可得N級(jí)CIC濾波器的幅頻響應(yīng): (13)從式(13)可知,N級(jí)CIC濾波器級(jí)聯(lián)的最大幅度增益為: (14)由于DM的值很大,N級(jí)CIC濾波器級(jí)聯(lián)的的值也很大,所以在設(shè)計(jì)過(guò)程中為了防止溢出,必須相應(yīng)的擴(kuò)大數(shù)據(jù)的位數(shù),以減少誤差。如果為輸入數(shù)據(jù)的位數(shù),那么最大內(nèi)部位寬為: (15)其中為最大動(dòng)態(tài)范圍的增長(zhǎng)。為防止數(shù)據(jù)溢出,最大限度的節(jié)省FPGA的硬件資源,應(yīng)該把積分器的積分部分和梳狀的寄
27、存器位寬擴(kuò)展到Bout位8。設(shè)計(jì)的時(shí)候從CIC濾波器的功能要求出發(fā),將該濾波器分為三個(gè)部分:積分部分:實(shí)現(xiàn)了三個(gè)積分器;抽取部分:實(shí)現(xiàn)了下采樣功能;梳狀部分:實(shí)現(xiàn)了三個(gè)梳狀器,再分析各個(gè)模塊所實(shí)現(xiàn)的功能,并對(duì)這三個(gè)模塊進(jìn)行詳細(xì)的設(shè)計(jì)。4.1 前端設(shè)計(jì):首先對(duì)CIC濾波器的各個(gè)參數(shù)進(jìn)行設(shè)定:濾波器的輸入數(shù)據(jù)為8位,級(jí)數(shù)N為3,梳狀部分的延遲D為2,抽取因子為16 ,并且由(15)式可計(jì)算出它的最大內(nèi)部位寬為23。根據(jù)精度要求,輸出可以取小于23,本設(shè)計(jì)中取23位。然后從CIC濾波器的功能要求出發(fā),將該濾波器的輸入信號(hào)設(shè)為以下幾個(gè):reset, clk, x_in, 其中reset是復(fù)位信號(hào)(防止
28、程序運(yùn)行過(guò)程中產(chǎn)生隨機(jī)數(shù)),clk是輸入的時(shí)鐘信號(hào),x_in是所輸入的8位的數(shù)據(jù)。輸出信號(hào)為:y_out,它表示所輸出的23位的數(shù)據(jù)。則端口列表為:input reset; input clk; input 7:0 x_in; output 22:0 y_out; 寄存器型的變量可以理解為實(shí)際電路中的寄存器,它具有記憶特性,是一種存儲(chǔ)元件,在輸入信號(hào)消失后它可以保持原有的數(shù)值不變。寄存器型變量一般使用關(guān)鍵字reg進(jìn)行定義,并且在定義時(shí)可以加入位寬,位寬為1的變量也稱為標(biāo)量,位寬大于1的變量稱為矢量。由于在Verilog HDL中默認(rèn)的變量類型是wire型,所以如果某個(gè)變量的類型需要為寄存器型,
29、則必須在程序中加以定義,而且值得注意的是,任何在always塊內(nèi)被賦值的變量都必須是寄存器型9。在本設(shè)計(jì)中,需定義如下變量:reg derived_clk; reg3:0 counter; reg22:0 IntReg01:0,IntReg11:0,IntReg21:0,IntReg3; reg22:0 ComReg02:0,ComReg12:0,ComReg22:0,ComReg3; 4.2 積分器模塊設(shè)計(jì):三級(jí)的CIC濾波器前面的積分部分是由三個(gè)一級(jí)的積分器級(jí)聯(lián)而成,是一類IIR濾波器,但是它沒(méi)有前饋,而只有回饋部分。分別用寄存器:IntReg01:0,IntReg11:0,IntReg2
30、1:0來(lái)表示第一,第二,第三個(gè)一級(jí)積分器,積分器的輸出放在寄存器IntReg3中。積分器實(shí)現(xiàn)的關(guān)鍵是如何實(shí)現(xiàn)輸入信號(hào)的延時(shí),本設(shè)計(jì)是通過(guò)將輸入信號(hào)放在寄存器中,經(jīng)過(guò)一個(gè)單位的延時(shí)以后再調(diào)用這個(gè)寄存器中的值,從而實(shí)現(xiàn)延時(shí)的,積分器模塊的實(shí)現(xiàn)如下:/積分器實(shí)現(xiàn)模塊always (posedge clk) /時(shí)鐘上升沿有效 begin: INTEGRATOR/復(fù)位時(shí)所有的寄存器輸出為0 if(!reset) begin IntReg00 <=0; IntReg01 <=0; IntReg10 <=0; IntReg11 <=0; IntReg20 <=0; IntReg
31、21 <=0; IntReg3 <=0; end else begin IntReg007:0 <= x_in; /將輸入信號(hào)賦值給IntReg0的低八位 IntReg01 <= IntReg00; /*將IntReg00賦值給IntReg01相當(dāng)于延時(shí)*/ IntReg10 <= IntReg01 + IntReg00; IntReg11 <= IntReg10; IntReg20 <= IntReg11 + IntReg10; IntReg21 <= IntReg20; IntReg3 <= IntReg21 + IntReg20;en
32、d end4.3 抽取器模塊設(shè)計(jì):改變系統(tǒng)的抽樣頻率有兩種方法:其中減少抽樣率的過(guò)程成為信號(hào)的“抽取”,也稱為“抽樣率壓縮”;增加抽樣率的過(guò)程稱為信號(hào)的“插值”,亦稱為“抽樣率擴(kuò)張”。抽取器的主要作用是轉(zhuǎn)換抽樣率,使系統(tǒng)工作在多抽樣率狀態(tài)。本設(shè)計(jì)中所要用到的是抽樣壓縮,其定義如下:當(dāng)信號(hào)的抽樣數(shù)據(jù)量太大時(shí),可以在每A個(gè)抽樣中取一個(gè),或者說(shuō)每隔A-1個(gè)抽樣取出一個(gè),以便減小數(shù)據(jù)量,A是整數(shù),稱為抽取因子,這樣的抽取稱為整數(shù)倍抽取10。本設(shè)計(jì)中抽取器的實(shí)現(xiàn)主要是通過(guò)一個(gè)計(jì)數(shù)器來(lái)實(shí)現(xiàn)的,因?yàn)槌槿∫蜃訛?6,所以定義了一個(gè)4位的計(jì)數(shù)器reg 3:0 counter,其具體的實(shí)現(xiàn)模塊如下: /計(jì)數(shù)器al
33、ways (posedge clk)beginif(!reset)counter <= 0;else begin if(counter>=10) /生成下采樣后的時(shí)鐘 derived_clk = 1; else derived_clk = 0; counter = counter + 1; endend4.4 梳狀器模塊設(shè)計(jì):梳狀濾波器的積分器是一類FIR濾波器,由于這種濾波器每個(gè)抽頭系數(shù)非“0”,即“1”,因此僅需延時(shí)器和加法器就可以實(shí)現(xiàn)。它是由三個(gè)單級(jí)的微分器級(jí)聯(lián)而成的,分別用ComReg02:0,ComReg12:0,ComReg22:0來(lái)表示依次第一,第二,第三個(gè)一級(jí)的微分
34、器,梳狀器的輸出放在寄存器ComReg3中。實(shí)現(xiàn)它的關(guān)鍵也是延時(shí)部分的實(shí)現(xiàn),但是跟積分器不同的是,梳狀器的延時(shí)是兩個(gè)時(shí)間單位,因此要將信號(hào)連續(xù)賦值給兩個(gè)寄存器來(lái)實(shí)現(xiàn)延時(shí)。其具體的實(shí)現(xiàn)模塊如下:/梳狀器實(shí)現(xiàn)模塊 always (posedge derived_clk)begin:COMB if(!reset) begin ComReg00 <= 0; ComReg01 <= 0; ComReg02 <= 0; ComReg10 <= 0; ComReg11 <= 0; ComReg12 <= 0; ComReg20 <= 0; ComReg21 <
35、= 0; ComReg22 <= 0; ComReg3 <= 0;end else begin ComReg00 <= IntReg3; ComReg01 <= ComReg00; ComReg02 <= ComReg01; /延時(shí)兩個(gè)時(shí)間單位 ComReg10 <= ComReg00 - ComReg02; ComReg11 <= ComReg10; ComReg12 <= ComReg11; ComReg20 <= ComReg10 - ComReg12; ComReg21 <= ComReg20; ComReg22 <=
36、ComReg21; ComReg3 <= ComReg20 - ComReg22; end end將上述三個(gè)模塊綜合起來(lái),就形成了一個(gè)完整的Verilog HDL的CIC濾波器的程序見(jiàn)附錄2。5. 在Modelsim環(huán)境下的功能仿真:驗(yàn)證是保證設(shè)計(jì)在功能上的正確性的一個(gè)過(guò)程,要對(duì)所設(shè)計(jì)的程序進(jìn)行仿真驗(yàn)證就要編寫一個(gè)Testbench文本,即測(cè)試平臺(tái)。簡(jiǎn)單來(lái)說(shuō),在仿真的時(shí)候Testbench用來(lái)產(chǎn)生測(cè)試激勵(lì)給待驗(yàn)證設(shè)計(jì)(DUV),或者稱為待測(cè)設(shè)計(jì)(DUT),同時(shí)檢查DUV的輸出是否與預(yù)期的一致,達(dá)到驗(yàn)證設(shè)計(jì)功能的目的。圖12為基于Testbench的仿真流程:激勵(lì)(stimlus)實(shí)例化D
37、UT(Design Under Test)自動(dòng)比較測(cè)試結(jié)果的正確性使用波形工具比較仿真波形在終端上顯示仿真的值,或者存成文件圖12. 基于Testbench的仿真流程Fig.12 The simulation flow chart of Testbench從圖中可以清晰地看出Testbench的主要功能:(1) 為DUT(Design Under Test,待測(cè)設(shè)計(jì))提供激勵(lì)信號(hào);(2) 正確實(shí)例化DUT;(3) 將仿真數(shù)據(jù)顯示在終端或者存為文件,也可以顯示在波形窗口中以供分析檢查;一個(gè)Testbench設(shè)計(jì)好以后,可以為芯片設(shè)計(jì)的各個(gè)階段服務(wù),比如在對(duì)RTL代碼,綜合網(wǎng)表和布線之后的網(wǎng)表進(jìn)行
38、仿真的時(shí)候,都可以采用同一個(gè)Testbench11。將實(shí)現(xiàn)CIC濾波器功能的設(shè)計(jì)呈現(xiàn)在Modelsim環(huán)境下進(jìn)行波形仿真,經(jīng)過(guò)多次的調(diào)試和程序修改后,運(yùn)行的仿真波形圖可將CIC濾波器的功能表示出來(lái)。圖13為CIC濾波器在Modelsim環(huán)境下進(jìn)行波形仿真: 圖13. Modelsim波形仿真Fig.13 The wave Simulation of Modelsim線網(wǎng)型(net)的變量可以理解為實(shí)際電路中的導(dǎo)線,通常用于表示結(jié)構(gòu)體之間的物理連接,就不可以存儲(chǔ)任何值,并且一定要受到驅(qū)動(dòng)器額驅(qū)動(dòng)才有效。一個(gè)線網(wǎng)型變量可能同時(shí)受到幾個(gè)驅(qū)動(dòng)源的驅(qū)動(dòng),此時(shí)該線網(wǎng)型變量的取值由邏輯強(qiáng)度較高的驅(qū)動(dòng)源決定;
39、如果多個(gè)驅(qū)動(dòng)源的邏輯強(qiáng)度相同,則取值為不定態(tài),這和實(shí)際電路模型的情況是完全相符的。本設(shè)計(jì)中y_out被申明為wire型,因此在剛開(kāi)始仿真的一段時(shí)間里y_out的輸出值為不定態(tài)x。為了便于觀察將波形進(jìn)行縮小,并且將時(shí)間軸右移一些得到圖14所示的波形圖:圖14. Modelsim波形仿真Fig.14 The wave Simulation of Modelsim通過(guò)觀察波形可以知道,每16個(gè)時(shí)鐘周期,y_out輸出一個(gè)數(shù)值,實(shí)現(xiàn)了抽取率為16的功能,基本實(shí)現(xiàn)了CIC抽取濾波器的功能。在利用Modelsim進(jìn)行仿真的過(guò)程中,首先利用MATLAB產(chǎn)生一個(gè)周期為16的正弦波,并從中采樣了4096個(gè)點(diǎn)存儲(chǔ)
40、在sin.txt中,然后將這些數(shù)據(jù)導(dǎo)入測(cè)試程序中,因此為了能夠更加直觀的觀察濾波器的功能,將輸入和輸出的數(shù)據(jù)模擬表示為圖15。從圖15中可以看出:輸出的波形較輸入波形有一段時(shí)間的延時(shí),波形前面一段輸出的是直線,是由于積分器和梳狀器的延時(shí)所導(dǎo)致的輸出的不定態(tài)X,但輸出波形整體上也是一個(gè)正弦波,和輸入波形保持一致,并且是呈階梯狀的,其中每一個(gè)階梯就是一個(gè)抽取因子。Testbench測(cè)試文件見(jiàn)附錄3,正弦波數(shù)據(jù)產(chǎn)生程序見(jiàn)附錄4。圖15. Modelsim波形仿真Fig.15 The wave Simulation of Modelsim6. 結(jié)束語(yǔ):CIC濾波器結(jié)構(gòu)簡(jiǎn)單,僅有兩個(gè)功能模塊,能夠節(jié)省資
41、源,并且在工程上易于實(shí)現(xiàn),是一種經(jīng)濟(jì)型濾波器。濾波是只做加法運(yùn)算,無(wú)需一般的FIR濾波器所需的乘法運(yùn)算,大大簡(jiǎn)化了計(jì)算量,從而降低了后續(xù)電路的處理速度。文中敘述了CIC濾波器的基本原理及其多級(jí)CIC濾波器的具體設(shè)計(jì),仿真結(jié)果證明了設(shè)計(jì)方案的正確性和可行性。CIC濾波器是多速率信號(hào)處理中的一種重要的部件,在軟件無(wú)線電中起到了重要的作用,研究它具有重要意義。(Hogenauer還引入了“剪除”理論對(duì)每一級(jí)的位寬進(jìn)行裁剪,在實(shí)際的應(yīng)用中,考慮到資源和速度的問(wèn)題,CIC濾波器應(yīng)采用剪除理論來(lái)實(shí)現(xiàn),文中未做介紹。)參考文獻(xiàn): 1. ZHANG JIAN.CHEN Yan.WANG Hua. Perfor
42、mance Analysis of Cascaded Integrator-Comb Filter in Modulator J.Transaction of Beijing Institute of Technology.2006.26(04).345-3482. 劉福奇.劉 波.Verilog HDL應(yīng)用程序設(shè)計(jì)實(shí)例精講M.北京:電子工業(yè)出版社.2009.11.189-2053. QainLinjun.Design of CIC Filter Baced on ADC J.Electronic Component &. Device Applications.2009.11(01)
43、.44-464. 高明倫. Verilog與PC機(jī)接口電路設(shè)計(jì)M.合肥:安徽科學(xué)技術(shù)出版社.2002.62-635. 朱明程.現(xiàn)場(chǎng)可編程門陣列器件M.北京:電子工業(yè)出版社.1994.12-326. 葉淦華.FPGA嵌入式應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例M.北京:中國(guó)電力出版社.2005.40-417. 劉 凌.胡永生譯.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)M.北京:清華大學(xué)出版社.2002.134-1398. ZhuGuojun.ZhangHao.ZhangZhijun.Implementation of CIC Filter Based on FPGA J.Electronic Science and Techn
44、ology.2006(11).19-229. 王 冠.黃 熙.王 鷹. Verilog HDL與數(shù)字電路設(shè)計(jì)M.北京:機(jī)械工業(yè)出版社.2005.30-3210. 程佩青.數(shù)字信號(hào)處理教程M.北京:清華大學(xué)出版社.2000.122-12811. 吳繼華,王 城.設(shè)計(jì)與驗(yàn)證-Verilog HDLM.北京:人民郵電出版社.2006.159-161附錄1:%單級(jí)CIC濾波器參數(shù)m1=2; %延遲因子n1=1; %濾波器階數(shù)r1=32; %抽取因子%三級(jí)CIC濾波器的參數(shù)m2 = 2;n2= 3;r2= 32; dw=0.01;w=0:dw:1*pi; %計(jì)算濾波器的頻率響應(yīng)h1= exp(i*n1*
45、w/2*(1-r1*m1).*(sin(r1*m1*w/2)./sin(w/2).n1;%計(jì)算濾波器的頻率響應(yīng)h2=exp(i*n2*w/2*(1-r2*m2).*(sin(r2*m2*w/2)./sin(w/2).n2; plot(w/pi,20*log10(abs(h1),'m'); %繪制單級(jí)CIC濾波器的幅頻特性hold on;plot(w/pi,20*log10(abs(h2),'b:'); %繪制3級(jí)CIC濾波器的幅頻特性grid on; legend('single stage','three-stage',2)xl
46、abel('Normalized Frequency Relative to the High Sampling Rate(timespirad/sample)');ylabel('Magnitude (dB)');title('Frequency Response'); 附錄2:/三級(jí)CIC抽取濾波器源代碼:module cic3(clk,reset,x_in,y_out);input reset, clk; /輸入時(shí)鐘 input 7:0 x_in; /輸入8位數(shù)據(jù)output 22:0 y_out; /輸出22位數(shù)據(jù)reg derived_
47、clk;reg 3:0 counter;reg 22:0 IntReg01:0,IntReg11:0,IntReg21:0,IntReg3; reg 22:0 ComReg02:0,ComReg12:0,ComReg22:0,ComReg3; /計(jì)數(shù)器always (posedge clk)begin:COUNTERif(!reset)counter <= 0;else begin if(counter>=10) /生成下采樣后的時(shí)鐘 derived_clk = 1; else derived_clk = 0; counter = counter + 1; endend/積分器實(shí)現(xiàn)
48、模塊always (posedge clk) begin: INTEGRATOR if(!reset) begin IntReg00 <=0; IntReg01 <=0; IntReg10 <=0; IntReg11 <=0; IntReg20 <=0; IntReg21 <=0; IntReg3 <=0; end else begin IntReg007:0 <= x_in; IntReg01 <= IntReg00; IntReg10 <= IntReg01 + IntReg00; IntReg11 <= IntReg10;
49、 IntReg20 <= IntReg11 + IntReg10; IntReg21 <= IntReg20; IntReg3 <= IntReg21 + IntReg20;end end/梳狀器實(shí)現(xiàn)模塊 always (posedge derived_clk)begin:COMB if(!reset) begin ComReg00 <= 0; ComReg01 <= 0; ComReg02 <= 0; ComReg10 <= 0; ComReg11 <= 0; ComReg12 <= 0; ComReg20 <= 0; ComReg
50、21 <= 0; ComReg22 <= 0; ComReg3 <= 0;end else begin ComReg00 <= IntReg3; ComReg01 <= ComReg00; ComReg02 <= ComReg01; ComReg10 <= ComReg00 - ComReg02; ComReg11 <= ComReg10; ComReg12 <= ComReg11; ComReg20 <= ComReg10 - ComReg12; ComReg21 <= ComReg20; ComReg22 <= ComReg21; ComReg3 <= ComReg20 - ComReg22; end endassign y_out = ComReg3;endmodule 附錄1:/Testbench測(cè)試文件源代碼: timescale 1ns/10ps /定義時(shí)間精度module cic3_test; /定義測(cè)試模塊reg reset,clk;reg 7:0 x_in;wire 22:0 y_out;reg 7:0 data0:4096; /定義一個(gè)8bit X4096的數(shù)組 integer i, w_file;parameter
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- fms考試題及答案
- 智能算法檢測(cè)中的自適應(yīng)技術(shù)探討考核試卷
- 矩陣宣傳面試題及答案
- 汽車S店空調(diào)設(shè)備安全規(guī)范考核試卷
- javaweb面試題及答案
- 百威亞太面試題及答案
- 足球思維測(cè)試題及答案
- 《推銷實(shí)務(wù)》課件 項(xiàng)目6 處理顧客異議-維系推銷顧客關(guān)系
- 《數(shù)據(jù)流通區(qū)塊鏈智能合約API技術(shù)規(guī)范》征求意見(jiàn)稿
- 改善政務(wù)服務(wù)助力統(tǒng)一大市場(chǎng)
- 廣東省2025年中考英語(yǔ)模擬試卷試題及答案詳解
- 人工智能在股票預(yù)測(cè)中的應(yīng)用-全面剖析
- 2025年病例書寫規(guī)范
- 課題申報(bào)書:基于OBE理念指導(dǎo)下的課程內(nèi)容設(shè)計(jì)及其考核體系研究
- 代扣代繳費(fèi)用合同范例
- 溫州市鹿城區(qū)2025年六年級(jí)下學(xué)期小升初招生數(shù)學(xué)試卷含解析
- 特種設(shè)備事故應(yīng)急處置
- 《剪映+即夢(mèng)Dreamina:AI文案、圖片與視頻生成技巧大全》 課件全套 第1-14章 通過(guò)剪映生成AI文案-AI商業(yè)設(shè)計(jì)與視頻實(shí)戰(zhàn)
- 手提式國(guó)產(chǎn)汽油發(fā)電機(jī)安全操作規(guī)程
- 安徽省合肥市廬陽(yáng)區(qū)南門小學(xué)-2024-2025年第一學(xué)期辦公室工作總結(jié)(層峰辟新天)【課件】
- 國(guó)家社科基金申報(bào)經(jīng)驗(yàn)分享-課件
評(píng)論
0/150
提交評(píng)論