《FPGA數(shù)字信號處理設(shè)計(jì)流程》課件第6章_第1頁
《FPGA數(shù)字信號處理設(shè)計(jì)流程》課件第6章_第2頁
《FPGA數(shù)字信號處理設(shè)計(jì)流程》課件第6章_第3頁
《FPGA數(shù)字信號處理設(shè)計(jì)流程》課件第6章_第4頁
《FPGA數(shù)字信號處理設(shè)計(jì)流程》課件第6章_第5頁
已閱讀5頁,還剩108頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章應(yīng)用實(shí)例6.1數(shù)字振蕩器6.2有限脈沖響應(yīng)(FIR)濾波器6.3CORDIC算法的原理與運(yùn)用6.4時(shí)延數(shù)字正切鎖相環(huán)6.5本章小結(jié)

6.1數(shù)?字?振?蕩?器

6.1.1用IIR濾波器實(shí)現(xiàn)振蕩器

我們可以使用IIR濾波器生成正弦波,例如如圖6.1.1所示二階IIR濾波器。圖6.1.1用IIR濾波器實(shí)現(xiàn)振蕩器結(jié)構(gòu)圖濾波器的輸出為:(6.1.1)分別對等式兩邊進(jìn)行Z變換,可以寫成:(6.1.2)傳遞函數(shù)可以寫成:(6.1.3)(6.1.4)給定b是一個(gè)實(shí)數(shù),于是p1和p2和可以寫成下列極數(shù)形式:(6.1.5)考慮到公式(6.1.3)的分子為1,分母為二階多項(xiàng)式,且最終要輸出正弦波,因此要求兩個(gè)極點(diǎn)位于S坐標(biāo)的單位圓上,同時(shí)用頻率來表示極點(diǎn)數(shù)值可得如下等式:(6.1.6)(6.1.7)

1.用8位的IIR濾波器實(shí)現(xiàn)正弦振蕩器

打開實(shí)例“sine_wave_iir_8bit.mdl”,位于“C:\SG\example\Oscillators\”路徑下,在本實(shí)例中,實(shí)現(xiàn)一個(gè)IIR濾波器,工作在采樣頻率fs?=?100MHz上,并假定圖6.1.1中的b=1.75,其數(shù)據(jù)位寬為8位,如圖6.1.2所示。圖6.1.2用8位的IIR濾波器實(shí)現(xiàn)正弦振蕩器結(jié)構(gòu)圖于是系統(tǒng)的傳遞函數(shù)為:圖6.1.3Z域分析圖假定模型sine_wave_iir_8bit.mdl中的所有模塊和仿真結(jié)果都是理想的,那么輸出的應(yīng)是8.04MHz的正弦波,對模型sine_wave_iir_8bit.mdl進(jìn)行仿真后可以得到如圖6.1.4所示的仿真結(jié)果。圖6.1.48位的IIR濾波器實(shí)現(xiàn)正弦振蕩器的仿真結(jié)果在使用FPGA進(jìn)行設(shè)計(jì)開發(fā)時(shí)除了考慮設(shè)計(jì)的性能,還需要考慮硬件資源的使用情況。好的設(shè)計(jì)能使用極少的資源獲得很高的性能,但當(dāng)模塊功能比較復(fù)雜時(shí),性能和資源是難以兼顧的,通常在滿足設(shè)計(jì)要求的基礎(chǔ)上要求盡量減少硬件資源的使用。同樣的模塊設(shè)計(jì)要求,使用不同的硬件資源就有不同的實(shí)現(xiàn)方式、不同的性能和不同的資源使用量,遇到這類情況就需要根據(jù)整個(gè)系統(tǒng)的情況,決定使用何種實(shí)現(xiàn)方式。以此IIR濾波器為例,其中包含有兩個(gè)乘法單元,可以使用FPGA上的嵌入式硬件乘法器實(shí)現(xiàn)或用片上的基本邏輯單元來構(gòu)成。需要注意的是,在本書使用的Spartan-3EFPGA上一共只有20個(gè)18×18位的嵌入式硬件乘法器,是相對比較稀缺的資源,本例中僅用到8位位寬,又沒有充分發(fā)揮嵌入式硬件乘法器的全部性能,如果使用片上的邏輯單元來實(shí)現(xiàn)乘法器又需要使用較多的資源,且性能沒有使用嵌入式硬件乘法器好,此時(shí)就需要從系統(tǒng)設(shè)計(jì)的角度考慮選擇哪種實(shí)現(xiàn)方式。表6.1.1和表6.1.2為實(shí)現(xiàn)IIR濾波器時(shí)使用嵌入式硬件乘法器和不使用嵌入式硬件乘法器兩種情況下的硬件資源使用量。表中沒有給出CLB的使用量,CLB相對而言還是比較大的邏輯單元,并不能很好地反映資源的使用情況。對比表6.1.1和表6.1.2中的數(shù)據(jù)不難發(fā)現(xiàn):

使用片上Slices等邏輯單元實(shí)現(xiàn)乘法器需要占用較多的資源。

模塊的邏輯功能主要由LUTs來實(shí)現(xiàn)。

乘法計(jì)算比加法計(jì)算要復(fù)雜很多,因而實(shí)現(xiàn)乘法器需要使用更多的資源。

時(shí)延環(huán)節(jié)由觸發(fā)器來實(shí)現(xiàn)。

使用片上嵌入式硬件乘法器實(shí)現(xiàn)乘法器能獲得較高的處理速度。

2.用12位的IIR濾波器實(shí)現(xiàn)正弦振蕩器

打開實(shí)例“sine_wave_iir_12bit.mdl”(位于“C:\SG\example\Oscillators\”路徑下),在本實(shí)例中,實(shí)現(xiàn)一個(gè)采樣頻率fs?=?100MHz的IIR濾波器,并假定圖6.1.1中的b=1.75,其數(shù)據(jù)位寬為12位,如圖6.1.5所示。圖6.1.512位的IIR濾波器實(shí)現(xiàn)正弦振蕩器結(jié)構(gòu)圖對此模型可以采用前面對8位的IIR濾波器類似的分析方式,并進(jìn)行仿真,得到如圖6.1.6所示的Simulink中的仿真結(jié)果。圖6.1.612位的IIR濾波器實(shí)現(xiàn)正弦振蕩器的仿真結(jié)果圖6.1.6為生成正弦波經(jīng)快速傅立葉變換后得到的信號頻譜圖。本模型是一個(gè)12位的IIR濾波器,相對于前面8位的IIR濾波器,其在數(shù)值的量化過程中的誤差要小,因而在仿真結(jié)果中可以很明顯地看到信號純度更高,諧波較少,具有更高的性能。

同樣將SystemGenerator導(dǎo)出的工程文件在ISE中完成布局布線后得到如表6.1.3和表6.1.4所示的結(jié)果。

對比表6.1.3和表6.1.4中的數(shù)據(jù)不難發(fā)現(xiàn):

加法器所需資源關(guān)于數(shù)據(jù)位呈寬線性增長,漲幅較小。

如果不使用硬件乘法器,乘法器所需資源關(guān)于數(shù)據(jù)位寬呈指數(shù)級增長,漲幅較大。

數(shù)據(jù)吞吐量影響處理速度,且需要更多的硬件資源。6.1.2用查表法實(shí)現(xiàn)數(shù)控振蕩器

數(shù)控振蕩器通常用查找表來實(shí)現(xiàn),定步長的不斷讀取正弦查找表中的數(shù)值來生成正弦波,當(dāng)讀到表單末尾時(shí)再從頭開始,從而產(chǎn)生一個(gè)周期信號,如圖6.1.7所示。圖6.1.7用查表法實(shí)現(xiàn)數(shù)控振蕩器結(jié)構(gòu)圖圖中輸入的頻率控制信號為一常值,則輸出的正弦波頻率不變,當(dāng)頻率控制信號變化時(shí)輸出的正弦波的頻率也隨之改變。給到正弦查找表的地址為三角波信號,由一個(gè)累加器生成,累加器包括一個(gè)寄存器和一個(gè)加法器,并將計(jì)算結(jié)果的小數(shù)部分丟棄,保留整數(shù)部分作為地址。累加器的輸入即為頻率控制信號,此頻率控制信號又可理解為單步步長或相位移。假定作為地址的整數(shù)部分有n位,正弦查找表的深度為N,要求2n=N,即當(dāng)輸入的頻率控制量為1時(shí)將正弦查找表中的所有數(shù)據(jù)逐個(gè)全部輸出。并假定此振蕩器工作在頻率為fclk的時(shí)鐘上,輸入頻率控制量為δ,則其輸出正弦波的頻率為:

1.用查找表實(shí)現(xiàn)數(shù)控振蕩器

打開實(shí)例“nco.mdl”(位于“C:\SG\example\Oscillators\”路徑下),在本實(shí)例中,用查找表實(shí)現(xiàn)數(shù)控振蕩器,系統(tǒng)的時(shí)鐘頻率為50MHz,地址位寬為6,輸入頻率控制量為1.28,于是其輸出頻率為:Hz=1MHz圖6.1.8設(shè)定Convert模塊參數(shù)用ROM模塊作為正弦查找表,其深度(Depth)要與地址位寬一致,如圖6.1.9所示。圖6.1.9設(shè)定ROM模塊參數(shù)Basic欄參數(shù)由圖可知,正弦的幅值為0.5,于是定義正弦查找表的輸出為帶6位小數(shù)位且位寬為6的帶符號數(shù),如圖6.1.10所示。圖6.1.10設(shè)定Rom模塊OutputType欄參數(shù)圖6.1.11用查找表實(shí)現(xiàn)數(shù)控振蕩器Simulink仿真結(jié)構(gòu)圖圖6.1.12用查找表實(shí)現(xiàn)數(shù)控振蕩器的仿真結(jié)果圖6.1.13用查找表實(shí)現(xiàn)數(shù)控振蕩器的頻譜圖

2.直接數(shù)字綜合器

在SystemGenerator的XILINXBlockset庫中的DSP子庫中提供有直接數(shù)字綜合器(DirectDigitalSynthesizer,DDS)模塊,也可用來生成正弦波,其原理與6.2.1節(jié)中用查找表實(shí)現(xiàn)數(shù)控振蕩器的原理相同,但在資源使用量和性能方面進(jìn)行了優(yōu)化,結(jié)構(gòu)圖如圖6.1.14所示。圖6.1.14直接數(shù)字綜合器Simulink仿真結(jié)構(gòu)圖圖6.1.15直接數(shù)字綜合器仿真結(jié)果表6.1.7和表6.1.8為正弦查找表在FPGA硬件實(shí)現(xiàn)時(shí)分別使用BlockRAM及Distributedmemory時(shí)的硬件資源使用情況。

圖6.1.13與圖6.1.15所示的仿真結(jié)果幾乎是完全一致的,亦即兩者生成的正弦波幾乎完全一致。對比表6.1.5~6.1.8四個(gè)表中的數(shù)據(jù)不難發(fā)現(xiàn),無論是由BlockRAM還是由Distributedmemory實(shí)現(xiàn)的,DDS模塊的使用使得設(shè)計(jì)性能有了極大提高,并減少了硬件邏輯資源的使用量。使用DDS模塊本質(zhì)上是調(diào)用了可配置的DDSIP核,正如第5章中闡述的,調(diào)用相關(guān)功能的IP核可快速獲得現(xiàn)有IP核的功能,對具有一定規(guī)格的類似功能模塊不需要重復(fù)開發(fā),IP核已針對特定結(jié)構(gòu)進(jìn)行了優(yōu)化;但I(xiàn)P核并不是總能滿足設(shè)計(jì)要求,需要熟悉IP核的參數(shù)和信號,以達(dá)到設(shè)計(jì)要求。 6.2有限脈沖響應(yīng)(FIR)濾波器

在介紹這一部分實(shí)驗(yàn)之前,首先要引入圖論的一些相關(guān)知識,這是分析這部分實(shí)驗(yàn)的基礎(chǔ),有助于理解時(shí)延分析。對于一個(gè)FPGA設(shè)計(jì)而言,其運(yùn)行速度是由整個(gè)設(shè)計(jì)中的最大邏輯延時(shí)決定的,假如將設(shè)計(jì)分割為兩個(gè)模塊,如圖6.2.1所示。圖6.2.1設(shè)計(jì)模塊分割圖6.2.1中,虛線所示即為通過兩個(gè)模塊的最長路徑,它決定了整個(gè)設(shè)計(jì)的運(yùn)行速度。為了保持系統(tǒng)的平衡,在流入割集的分支上加一個(gè)延時(shí)單元,流出割集的分支上加一個(gè)超前單元,如圖6.2.2所示。圖6.2.2設(shè)計(jì)割集于是得到如圖6.2.3所示結(jié)果。

從圖6.2.3可以看出,系統(tǒng)的處理速度已經(jīng)不再是由通過兩個(gè)模塊的最長路徑?jīng)Q定的,而是由兩個(gè)模塊分別的最長路徑中的最大值來決定的,換句話說,可以將兩個(gè)模塊看成是兩個(gè)相對獨(dú)立的系統(tǒng),這兩個(gè)系統(tǒng)都有各自的最大邏輯延時(shí),其中的較大者決定當(dāng)前系統(tǒng)的最大運(yùn)行速度。圖6.2.3中虛線所示分別為兩個(gè)模塊的最長路徑,模塊二的最長路徑即為整個(gè)設(shè)計(jì)的最大邏輯延時(shí),比原有系統(tǒng)小很多。由此可以看出,通過這種方法可以將設(shè)計(jì)的運(yùn)行速度提高。

本節(jié)將主要介紹關(guān)于FIR濾波器的多種不同實(shí)施方案,為了能夠清楚地說明這些,我們僅僅以簡單的4抽頭(4tap)的FIR濾波器為例進(jìn)行實(shí)驗(yàn),如圖6.2.4所示。圖6.2.3割集后的等價(jià)設(shè)計(jì)圖6.2.4標(biāo)準(zhǔn)FIR濾波器結(jié)構(gòu)圖6.2.1標(biāo)準(zhǔn)FIR濾波器

打開C:\SG\example\FIR\FIR1\fir1.mdl。

這是一個(gè)標(biāo)準(zhǔn)的4抽頭的FIR濾波器,其結(jié)構(gòu)可以用圖6.2.4表示。

在此結(jié)構(gòu)中,我們使用了三個(gè)時(shí)延模塊,四個(gè)乘法器和三個(gè)加法器。對此FIR濾波器進(jìn)行MATLAB仿真,并在ISE中綜合,其資源使用情況及運(yùn)行速度如表6.2.1所示。6.2.2標(biāo)準(zhǔn)FIR濾波器的改進(jìn)結(jié)構(gòu)

打開C:\SG\example\FIR\FIR2\fir2.mdl。

這是一個(gè)根據(jù)原有標(biāo)準(zhǔn)FIR濾波器改進(jìn)后的結(jié)構(gòu),它是利用圖論的相關(guān)知識,將標(biāo)準(zhǔn)4抽頭的FIR進(jìn)行如下切割,在每個(gè)切割點(diǎn)處,增加一個(gè)延時(shí),可得到如圖6.2.5所示結(jié)構(gòu)。圖6.2.5改進(jìn)的標(biāo)準(zhǔn)FIR濾波器結(jié)構(gòu)圖

對比上面的FIR標(biāo)準(zhǔn)結(jié)構(gòu),改進(jìn)結(jié)構(gòu)在切割點(diǎn)處共增加了6個(gè)延時(shí),在設(shè)計(jì)中,延時(shí)是通過觸發(fā)器來實(shí)現(xiàn)的。在MATLAB中仿真,指定乘法器為8比特的乘法器,因此通過三個(gè)乘法器的數(shù)據(jù)位寬均為8。兩個(gè)位寬為8的二進(jìn)制數(shù)據(jù)相加后,需要至少9比特的延時(shí)模塊,同理,兩個(gè)9比特二進(jìn)制數(shù)據(jù)相加,需要至少10比特的延時(shí)模塊。因此設(shè)計(jì)中較標(biāo)準(zhǔn)FIR模型增加了33個(gè)觸發(fā)器。由于SystemGenerator在設(shè)計(jì)過程中的優(yōu)化作用,F(xiàn)IR的改進(jìn)形式共需要30個(gè)觸發(fā)器。在處理速度上,改進(jìn)的FIR濾波器比標(biāo)準(zhǔn)形式提高了很多,由原來的最小周期12.950ns降低到了7.609ns。這是由于,標(biāo)準(zhǔn)4抽頭的FIR濾波器結(jié)構(gòu)中的最長路徑為一個(gè)乘法器和三個(gè)加法器,如圖6.2.4中虛線所示。但是在切割后的結(jié)構(gòu)中,我們發(fā)現(xiàn),最長路徑降到了一個(gè)乘法器和一個(gè)加法器,如圖6.2.5中虛線所示,比原有標(biāo)準(zhǔn)FIR的最長路徑短很多,這使得處理速度有了很大的提高。6.2.3轉(zhuǎn)置4抽頭FIR濾波器

打開C:\SG\example\FIR\fir_transpose\fir_transpose.mdl。

這是一個(gè)轉(zhuǎn)置的4抽頭FIR濾波器,其結(jié)構(gòu)如圖6.2.6所示。圖6.2.6轉(zhuǎn)置FIR濾波器結(jié)構(gòu)圖線性信號流圖理論中有許多預(yù)算處理方法,可在保持輸入和輸出之間的傳輸關(guān)系不變的情況下,將信號流圖變換成不同的形式。轉(zhuǎn)置FIR就是利用流圖轉(zhuǎn)置的方法導(dǎo)出的一種轉(zhuǎn)置濾波器的結(jié)構(gòu),如圖6.2.6所示,對此結(jié)構(gòu)的FIR濾波器進(jìn)行MATLAB仿真,并在ISE中綜合,其資源使用情況及運(yùn)行速度如表6.2.3所示。

對比標(biāo)準(zhǔn)型FIR,轉(zhuǎn)置FIR濾波器雖然在延時(shí)單元的使用數(shù)量上沒有變,仍然是3個(gè),但是觸發(fā)器的使用數(shù)目卻由原來的6個(gè)增加為24個(gè)。這是因?yàn)樵谵D(zhuǎn)置FIR濾波器中,由于在經(jīng)過延時(shí)模塊之前,先通過了乘法器,在Simulink中仿真,指定乘法器為8比特的乘法器,因此通過三個(gè)乘法器的數(shù)據(jù)位寬均為8比特,所需三個(gè)延時(shí)模塊的最大位寬分別為8、9、10,經(jīng)過SystemGenerator優(yōu)化后的觸發(fā)器總個(gè)數(shù)為24個(gè)。

在處理速度上面,兩種FIR濾波器雖然只是結(jié)構(gòu)上面有所不同,但運(yùn)行速度卻相差很多。分析標(biāo)準(zhǔn)FIR的結(jié)構(gòu),從x(k)到y(tǒng)(k)的最遠(yuǎn)路徑是一個(gè)乘法器和三個(gè)加法器,而在轉(zhuǎn)置FIR中,從x(k)到y(tǒng)(k)的最遠(yuǎn)路徑只需經(jīng)過一個(gè)乘法器和一個(gè)加法器,如圖6.2.6中虛線所示,運(yùn)行速度得到了大大提高。6.2.4轉(zhuǎn)置4抽頭的FIR濾波器的變換結(jié)構(gòu)

打開C:\SG\example\FIR\fir_transpose2\fir_transpose2.mdl。

這是一個(gè)改進(jìn)的轉(zhuǎn)置FIR濾波器,其結(jié)構(gòu)如圖6.2.7所示。

此結(jié)構(gòu)為4抽頭的轉(zhuǎn)置FIR濾波器的改進(jìn)結(jié)構(gòu),即按照圖6.2.7所示將其切割,并在每一支路加上一個(gè)延時(shí),這樣,此結(jié)構(gòu)比4抽頭的轉(zhuǎn)置FIR濾波器多4個(gè)時(shí)延單元,對此結(jié)構(gòu)進(jìn)行Simulink仿真,并用ISE綜合,得到如表6.2.4所示結(jié)果。圖6.2.7改進(jìn)的轉(zhuǎn)置FIR濾波器結(jié)構(gòu)圖

對比轉(zhuǎn)置4抽頭的FIR濾波器,轉(zhuǎn)置4抽頭的FIR濾波器的變換結(jié)構(gòu)在其基礎(chǔ)上增加了四個(gè)延時(shí)單元。采用同樣的方法進(jìn)行分析,通過乘法器的數(shù)據(jù)位寬為8比特,則由乘法器直接進(jìn)入的四個(gè)延時(shí)單元的觸發(fā)器的個(gè)數(shù)均為8個(gè),另外三個(gè)延時(shí)單元的觸發(fā)器個(gè)數(shù)分別為觸發(fā)器的個(gè)數(shù),即分別為8、9、10,因此總個(gè)數(shù)從原有的24個(gè)增加到52個(gè)。

在處理速度上面,轉(zhuǎn)置4抽頭的FIR濾波器的變換結(jié)構(gòu)比轉(zhuǎn)置4抽頭的FIR濾波器有了很大的提高。分析兩種結(jié)構(gòu)的最長路徑即可發(fā)現(xiàn),在轉(zhuǎn)置FIR中,最長路徑是一個(gè)乘法器和一個(gè)加法器,但是轉(zhuǎn)置FIR的變換結(jié)構(gòu)中,最長路徑僅為一個(gè)乘法器,如圖6.2.7所示,在處理速度上有了很大的提高。6.2.5使用SystemGenerator現(xiàn)有乘加FIR模塊

打開C:\SG\example\FIR\fir_MAC\fir_mac.mdl。

此設(shè)計(jì)為利用SystemGenerator中現(xiàn)有的乘加FIR模塊(n-tapMACFIRfilter模塊)搭建而成。其結(jié)構(gòu)如圖6.2.8所示。圖6.2.8n-tapMACFIRfilter模塊仿真結(jié)構(gòu)圖圖6.2.9n-tapMACFIRfilter模塊內(nèi)部結(jié)構(gòu)圖在n-tapMACFIRfilter模塊的結(jié)構(gòu)中,CoefficientROM模塊定義了4抽頭的抽頭系數(shù)。此結(jié)構(gòu)不同于上述幾種結(jié)構(gòu)之處在于,其通過Counter模塊的計(jì)數(shù)控制來實(shí)現(xiàn)串行處理,由于該結(jié)構(gòu)為4抽頭的濾波器,完成一次濾波運(yùn)算需要4個(gè)時(shí)鐘周期,因此在輸出端口前使用了一個(gè)4拍的下采樣模塊,保證輸出為有效數(shù)據(jù)。結(jié)構(gòu)中的MACEngine為n-tapMACFIRfilter模塊的乘加環(huán)節(jié),其內(nèi)部結(jié)構(gòu)如圖6.2.10所示。圖6.2.10MACEngine模塊內(nèi)部結(jié)構(gòu)圖由圖6.2.10可以看出,n-tapMACFIRfilter模塊采用的是串行處理方式,僅用一個(gè)嵌入式乘法器即實(shí)現(xiàn)了4抽頭的FIR濾波器,節(jié)省了大量資源。

由于該設(shè)計(jì)中所使用的n-tapMACFIRfilter模塊是經(jīng)過優(yōu)化且具有一定通用性的模塊,通過表6.2.5可以發(fā)現(xiàn),該設(shè)計(jì)的觸發(fā)器使用量為65,多用于構(gòu)成流水線結(jié)構(gòu),其運(yùn)行速度得到了極大的提高,最大頻率提高到了206.441MHz。 6.3CORDIC算法的原理與運(yùn)用

6.3.1CORDIC算法介紹

CORDIC算法是一種計(jì)算旋轉(zhuǎn)坐標(biāo)的方法。如圖6.3.1所示,設(shè)起點(diǎn)坐標(biāo)為(,),終點(diǎn)坐標(biāo)為(,)。

由三角函數(shù)知識,得到旋轉(zhuǎn)后的新坐標(biāo)(見圖6.3.2)為:(6.3.1)圖6.3.1CORDIC旋轉(zhuǎn)坐標(biāo)示意圖圖6.3.2旋轉(zhuǎn)坐標(biāo)中后模的變化示意圖將cosθ去掉后相當(dāng)于把旋轉(zhuǎn)后矢量的模減小了,為了保證最終結(jié)果的正確,一般在結(jié)果后面將乘上一個(gè)系數(shù)K。如果把θ約束成tanθ?=2-i(i=0,1,2,L),則正切項(xiàng)的乘法就演變成簡單的二進(jìn)制的移位運(yùn)算,每旋轉(zhuǎn)一次,i加1,由于在-π/2~π/2內(nèi),無論θ正負(fù),cosθ始終是正值,因而可以將公式(6.3.1)改寫為下式:(6.3.2)所以>

事實(shí)上也就是說,假設(shè)我們從X軸開始旋轉(zhuǎn),通過一系列逐次減小的角度旋轉(zhuǎn)后,只要迭代的次數(shù)足夠多,就可以實(shí)現(xiàn)-π/2~π/2內(nèi)任意角度的旋轉(zhuǎn),并且通過加法和移位運(yùn)算得到目標(biāo)的橫坐標(biāo)和縱坐標(biāo)。每次旋轉(zhuǎn)后得到的實(shí)際矢量和目標(biāo)矢量之間的誤差角度(目標(biāo)角度減去實(shí)際角度)如下式:(6.3.3)其中,Z0為目標(biāo)矢量角度,若Zi>0,則=+1;若<0,則=?-1。實(shí)際迭代后累計(jì)角度為:(6.3.4)其中,a0=0。例如,要實(shí)現(xiàn)68°的矢量旋轉(zhuǎn),我們可以列出第i次迭代對應(yīng)的旋轉(zhuǎn)角度、旋轉(zhuǎn)方向、迭代后的實(shí)際角度和誤差角度如表6.3.1所示。

一旦Zi

(°)迭代的次數(shù)確定了,Ki也就確定了,Ki的乘積可以在實(shí)現(xiàn)時(shí)不做處理,而是被當(dāng)作整個(gè)系統(tǒng)處理增益的一部分,實(shí)際的增益值取決于迭代次數(shù)n。當(dāng)n趨于無窮大時(shí),的極限值約為1.647。在實(shí)現(xiàn)CORDIC算法時(shí),由于當(dāng)作系統(tǒng)的處理增益不做處理,因此只需要移位、相加運(yùn)算就可完成矢量旋轉(zhuǎn),很適合在FPGA中實(shí)現(xiàn)。(6.3.5)

1.搭建CORDIC模塊的系統(tǒng)

搭建CORDIC模塊時(shí),請參看上節(jié)中的CORDIC算法介紹。迭代次數(shù)越多計(jì)算越精確,但同時(shí)消耗資源會增加而且系統(tǒng)速度也會受到影響。所以需要根據(jù)具體設(shè)計(jì)的要求來選擇迭代的次數(shù),一般來說,迭代次數(shù)不高于數(shù)據(jù)的位寬。打開C:\SG\exercise\CORDIC\CORDIC_deff_6.mdl,如圖6.3.3所示。圖6.3.3CORDIC參考系統(tǒng)從圖6.3.3可以看到,該系統(tǒng)主要分四個(gè)大的模塊:數(shù)據(jù)輸入模塊、參考設(shè)計(jì)模塊、CORDIC設(shè)計(jì)模塊和比較模塊。其中輸入數(shù)據(jù)是兩個(gè)隨機(jī)數(shù),經(jīng)過Gatewayin模塊后進(jìn)入?yún)?shù)設(shè)計(jì)模塊和CORDIC設(shè)計(jì)模塊這兩個(gè)模塊計(jì)算出來的數(shù)據(jù)進(jìn)入比較模塊,比較后的誤差值作為輸出顯示。ReferenceDesign模塊內(nèi)部結(jié)構(gòu)圖如圖6.3.4所示。圖6.3.4浮點(diǎn)數(shù)計(jì)算參考模塊從圖6.3.4看出,參數(shù)設(shè)計(jì)模塊實(shí)際是一個(gè)浮點(diǎn)數(shù)模塊,直接計(jì)算出的值作為輸出。該模塊可以脫離SysetemGenerator在Simulink中獨(dú)立運(yùn)行,仿真時(shí)作為參考模塊可以很方便地檢驗(yàn)CORDIC模塊設(shè)計(jì)的精度。CORDIC內(nèi)部結(jié)構(gòu)圖如圖6.3.5所示。

從圖6.3.5看出,CORDIC設(shè)計(jì)模塊主要由6個(gè)迭代模塊組成,每個(gè)迭代模塊只是參數(shù)設(shè)置不一樣而已。其中,常數(shù)0.72998046875是對坐標(biāo)旋轉(zhuǎn)后模變化的補(bǔ)償。圖6.3.5CORDIC算法設(shè)計(jì)模塊圖6.3.6CORDIC模塊與參考模塊的比較結(jié)果雙擊SystemGenerator圖標(biāo),得到SystemGenerator設(shè)置如圖6.3.7所示。

單擊Generate生成工程文件,然后在ISE8.2中對生成的工程文件進(jìn)行綜合,從綜合報(bào)告中得到預(yù)計(jì)的消耗資源情況,為了比較方便,具體消耗資源情況將在下一小節(jié)中與使用SystemGenerator自帶參考CORDIC模塊的系統(tǒng)消耗FPGA資源以表的形式給出。圖6.3.7SystemGenerator設(shè)置對話框

2.使用SystemGenerator自帶的參考CORDIC模塊的系統(tǒng)

為了方便設(shè)計(jì)者使用SystemGenerator進(jìn)行數(shù)字系統(tǒng)設(shè)計(jì),SystemGenerator系統(tǒng)在XILINXReferenceBlockset目錄下提供了一些常用的數(shù)字處理模塊,只需要簡單的參數(shù)設(shè)置就可直接調(diào)用。本實(shí)驗(yàn)中就是調(diào)用其中的CORDIC計(jì)算模塊替代上節(jié)中搭建的CORDIC計(jì)算模塊,從試驗(yàn)中大家可以加深對系統(tǒng)自帶數(shù)字處理模塊的理解。

打開C:\SG\exercise\CORDIC\CORDIC_model_deff_6.mdl。

該系統(tǒng)與上面實(shí)驗(yàn)不同的地方在于用SystemGenerator中XILINXReferenceBlockset\圖6.3.8用SystemGenerator系統(tǒng)自帶CORDIC模塊算法實(shí)現(xiàn)圖圖6.3.9自帶CORDIC模塊與參考模塊的比較結(jié)果生成工程文件綜合后,從綜合報(bào)告中得到耗費(fèi)資源的情況,與搭建CORDIC計(jì)算模塊的系統(tǒng)所耗費(fèi)的資源進(jìn)行比較,如表6.3.2所示。 6.4時(shí)延數(shù)字正切鎖相環(huán)

如圖6.4.1所示為傳統(tǒng)的數(shù)字正切鎖相環(huán)(DigitalTanlockLoop,DTL)的結(jié)構(gòu)圖,由一個(gè)Hilbert轉(zhuǎn)換器即90°的相位變換器、兩個(gè)采樣器、一個(gè)鑒相器、一個(gè)數(shù)字環(huán)路濾波器和一個(gè)數(shù)控振蕩器構(gòu)成。兩個(gè)采樣器受控于數(shù)字振蕩器,同時(shí)對輸入信號進(jìn)行采樣,采樣器的輸出信號具有90°的相位差。鑒相器的鑒相功能由函數(shù)實(shí)現(xiàn),相位差經(jīng)由數(shù)字濾波器濾波后作為數(shù)字振蕩器的控制信號決定輸出正弦波的周期。不難發(fā)現(xiàn),當(dāng)輸入信號發(fā)生頻率或相位有跳變時(shí)鑒相器輸出的相位差信號也會變化,數(shù)字濾波器的輸出控制信號以及數(shù)字振蕩器的輸出信號周期也會隨之改變,因此兩個(gè)采樣器的采樣率是隨輸入信號而改變的,最終達(dá)到與輸入信號同頻率即信號頻率鎖定。圖6.4.1時(shí)延數(shù)字正切鎖相環(huán)結(jié)構(gòu)圖在FPGA實(shí)現(xiàn)數(shù)字正切鎖相環(huán)時(shí),首先需要將模擬模塊Hilbert轉(zhuǎn)換器用一個(gè)時(shí)延環(huán)節(jié)替換,其余部分保持不變,因此稱此鎖相環(huán)為時(shí)延數(shù)字正切鎖相環(huán)(Time-delayDigitalTanlockLoop,TDTL),得到如圖6.4.2所示結(jié)構(gòu)圖。圖6.4.2時(shí)延數(shù)字正切鎖相環(huán)結(jié)構(gòu)圖6.4.1零階時(shí)延數(shù)字正切鎖相環(huán)

打開實(shí)例“TDTL_zero_order.mdl”,位于“C:\SG\example\TDTL\”路徑下。本例實(shí)現(xiàn)一個(gè)零階時(shí)延數(shù)字正切鎖相環(huán),如圖6.4.3所示。圖6.4.3零階時(shí)延數(shù)字正切鎖相環(huán)Simulink仿真結(jié)果圖由圖6.4.3可見,用CORDICATAN模塊計(jì)算arctan[x(k)/y(k)],以實(shí)現(xiàn)鑒相器;以兩個(gè)帶使能端的寄存器實(shí)現(xiàn)采樣器;用一個(gè)時(shí)延環(huán)節(jié)實(shí)現(xiàn)90°相位的延遲。系統(tǒng)時(shí)鐘為50MHz,要求鎖定的輸入信號為以200kHz正弦信號,并在0.0002秒時(shí)跳變到220kHz的正弦信號。因此選擇延遲量為62(≈50MHz/200kHz×4)個(gè)時(shí)鐘周期。濾波器的結(jié)構(gòu)如圖6.4.4所示。圖6.4.4零階濾波器結(jié)構(gòu)圖此實(shí)例實(shí)現(xiàn)的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論