国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用CORDIC算法提取脈內(nèi)特征在FPGA上的實現(xiàn)

2016-05-14 09:17王煒珽張文旭陶東香
現(xiàn)代電子技術(shù) 2016年9期

王煒珽 張文旭 陶東香

摘 要: 介紹了坐標(biāo)旋轉(zhuǎn)數(shù)字計算(CORDIC)算法的原理,給出了利用CORDIC算法提取信號脈內(nèi)特征的迭代公式,在此基礎(chǔ)上實現(xiàn)了用該算法的流水型迭代結(jié)構(gòu)提取瞬時幅度、相位和頻率的FPGA電路,解決了電路中的時鐘與寄存器配置、數(shù)據(jù)的補碼格式和相位累加等問題。通過在硬件芯片上的下載驗證,表明電路結(jié)構(gòu)合理、測試有效,滿足設(shè)計要求。

關(guān)鍵詞: 坐標(biāo)旋轉(zhuǎn)數(shù)字計算; 脈內(nèi)特征; FPGA設(shè)計; 補碼

中圖分類號: TN79?34 文獻標(biāo)識碼: A 文章編號: 1004?373X(2016)09?0001?05

Abstract:The principle of the coordinated rotation digital computer (CORDIC) algorithm is introduced. The iterative formula of the signal in?pulse characteristics extracted by CORDIC algorithm is proposed. On this basis, the FPGA circuit of extracting the instantaneous amplitude, phase and frequency by pipeline iterative structure of the algorithm was realized. The problems of clock and register configuration, data′s complementary code format and phase accumulation in the circuit were solved. The downloading verification on hardware chip shows that the circuit structure is reasonable, and test is effective. The circuit can satisfy the design requirement.

Keywords: coordinated rotation digital computor; in?pulse characteristics; FPGA design; complementary code

0 引 言

現(xiàn)代電子戰(zhàn)中,提取輻射源信號脈內(nèi)特征已成為許多電子偵查設(shè)備必備的功能,在此,僅以針對輻射源的測向技術(shù)為例,如比幅法需要知道脈沖的幅度信息、干涉儀法需要知道高精度的脈內(nèi)瞬時相位和頻率等。坐標(biāo)旋轉(zhuǎn)數(shù)字計算(Coordinated Rotation Digital Computer,CORDIC)算法是各種用來提取脈內(nèi)特征的方法中較為常見的一種。該算法最早由J.Volder等人在1959年提出[1],最初用它進行坐標(biāo)變換。其基本思想是通過多次的迭代實現(xiàn)方向反復(fù)搖擺、數(shù)值逐次遞減以逼近最終需要到達的角度,同時計算出與該角度有關(guān)的某些復(fù)雜函數(shù)運算結(jié)果。統(tǒng)一的CORDIC算法由J.S.Walther在1971年提出[2],他將圓周、線性、雙曲線三種算法和旋轉(zhuǎn)、矢量兩種模式統(tǒng)一到一個迭代方程中,為實現(xiàn)多模式共存的CORDIC算法硬件結(jié)構(gòu)奠定了理論基礎(chǔ)。CORDIC因能通過簡單的移位和加減操作就能實現(xiàn)乘除、開方、三角變換、對數(shù)、指數(shù)等原本需要大量乘法器的運算,所以非常適合用FPGA設(shè)計實現(xiàn)[3?5]。

本文在分析圓周CORDIC算法原理的基礎(chǔ)上,給出了利用CORDIC算法提取信號脈內(nèi)特征的迭代公式,實現(xiàn)了用該算法的流水型迭代結(jié)構(gòu)提取瞬時幅度、相位和頻率的FPGA電路,在電路的設(shè)計過程中解決了電路中的時鐘與寄存器配置、數(shù)據(jù)的補碼格式和相位累加等問題。在信號分選、脈沖識別、輻射源定位等技術(shù)領(lǐng)域有一定的實用價值。

1 圓周CORDIC算法原理

兩種方法的主要區(qū)別在于:前者計算的瞬時頻率仍在[-π,π]之間,但要加入判斷電路;而后者的計算結(jié)果在[0,2π]之間,但在硬件電路中實現(xiàn)取模運算非常簡單,有時甚至都不需要運算。由于圓周矢量模式CORDIC算法是對同相正交分量的計算,因此檢測輸出的頻率可能出現(xiàn)負頻率。這在硬件電路中用補碼表示負數(shù)的方法即可解決,因為正余弦函數(shù)的周期對稱特性使弧度在[0,2π]之間的取值本身就是其在[-π,π]之間取值的補碼形式。分別利用式(9)和式(10)對2.1節(jié)仿真得到的瞬時相位求瞬時角頻率,Matlab仿真結(jié)果如圖3所示,其中圖3(a)是存在相位卷繞的結(jié)果,圖3(b)是用第二種方法解相位卷繞并將補碼換算為正常負數(shù)的結(jié)果。從圖3可見仿真結(jié)果正確地檢測出了瞬時角頻率,且符合上行LFM規(guī)律。

3 流水型CORDIC電路在FPGA上的實現(xiàn)

3.1 CORDIC算法迭代結(jié)構(gòu)分析

CORDIC算法原理簡單且易于理解和仿真,其難點在于如何設(shè)計合理的迭代結(jié)構(gòu)來實現(xiàn)運算過程。迭代類算法通常有兩種結(jié)構(gòu)實現(xiàn),即循環(huán)反饋型迭代結(jié)構(gòu)(簡稱循環(huán)結(jié)構(gòu))和流水型迭代結(jié)構(gòu)(流水結(jié)構(gòu))。循環(huán)結(jié)構(gòu)是指通過單級算法單元實現(xiàn)多次迭代計算,將每次的計算結(jié)果反饋回本級進行下一次計算,如此循環(huán)[L]次以得到最終結(jié)果。流水結(jié)構(gòu)是指通過多級算法單元實現(xiàn)多次迭代計算,將每級的計算結(jié)果輸入到次級進行下一次計算,經(jīng)過[L]級后得到最終結(jié)果。兩種結(jié)構(gòu)都必須在延遲[L]個時鐘后完成計算。循環(huán)結(jié)構(gòu)的優(yōu)點是相對簡單、硬件資源需求低;而流水結(jié)構(gòu)恰恰相反。循環(huán)結(jié)構(gòu)的缺點是每隔[L]個時鐘才能進行一次計算,其運算速率是時鐘頻率的[1L;]流水結(jié)構(gòu)沒有此問題,其運算速率等于時鐘頻率。在實際應(yīng)用中,應(yīng)根據(jù)設(shè)計要求、結(jié)構(gòu)特點,選擇適當(dāng)?shù)膶崿F(xiàn)結(jié)構(gòu)[4]。圓周矢量模式CORDIC算法循環(huán)迭代結(jié)構(gòu)如圖4所示,其中符號“>>”表示移位。CORDIC算法的循環(huán)結(jié)構(gòu)稍作改進即可作為流水結(jié)構(gòu)的單級計算單元使用。

3.2 電路的具體設(shè)計

為保證提取的信號脈內(nèi)特征的實時性,本文設(shè)計的CORDIC算法電路采用流水結(jié)構(gòu),設(shè)計過程中有以下三方面的技術(shù)問題需要重點解決:

(1) 時鐘與寄存器的配置問題

考慮到一個時鐘脈沖有兩個邊沿,當(dāng)輸入的同相正交數(shù)據(jù)在第0個脈沖上升沿到達時,為確保數(shù)據(jù)的穩(wěn)定性,可利用第0個脈沖的下降沿承接并寄存輸入數(shù)據(jù),再到第1個脈沖上升沿到達時計算出結(jié)果并交給下一級的寄存器,此刻本級的寄存器便可準(zhǔn)備好在第1個脈沖下降沿到達時承接新的數(shù)據(jù)。以此可實現(xiàn)數(shù)據(jù)的逐級流水計算,最終在延遲了[L]個脈沖上升沿后,CORDIC模塊可輸出與第0個脈沖上升沿數(shù)據(jù)對應(yīng)的幅度和相位值。

由于VHDL語言規(guī)定一個寄存器只能受一個時鐘脈沖邊沿的控制,所以CORDIC模塊每級運算單元設(shè)計了兩個寄存器:一個是用來承接上級數(shù)據(jù)的流水寄存器,由下降沿控制;另一個是用來輸出加減法結(jié)果的加法寄存器,由上升沿控制。差分模塊同樣需要兩個寄存器,但他的輸入數(shù)據(jù)寄存器可用CORDIC模塊第[L]個加法輸出寄存器替代,這也使差分模塊只需CORDIC模塊后的0.5個周期就可得到瞬時頻率。各級寄存器與時鐘的配置設(shè)計思路如圖5所示。具體的實現(xiàn)電路中采取[L=12]的流水級,輸出的幅度和相位數(shù)據(jù)相對于輸入的同相正交數(shù)據(jù)延遲了12個時鐘周期,瞬時頻率數(shù)據(jù)則延遲了12.5個時鐘周期。

(2) 實現(xiàn)用補碼表示數(shù)據(jù)的問題

在大多數(shù)的A/D轉(zhuǎn)換器和處理器中,負數(shù)都是用補碼格式表示的[11]。補碼的優(yōu)點是做加定點數(shù)的減法運算時方便,無論正負數(shù)都可以直接相加,由于硬件電路中數(shù)的位數(shù)通常是固定的,所以加減運算時數(shù)據(jù)溢出會被直接去掉不影響最后結(jié)果[12],這相當(dāng)于做了一次求模運算。補碼在表示負數(shù)和正數(shù)時均保持了數(shù)的單調(diào)增的變化規(guī)律,因此在做移位運算時要根據(jù)正負采取不同的方式。圓周矢量模式CORDIC算法每級迭代都是驅(qū)動正交分量[yi]向0逼近,所以對于正數(shù)采取數(shù)據(jù)右移并在高位補“0”的方法,對于負數(shù)仍是數(shù)據(jù)右移但在高位補“1”。其中[yi]可能在正負之間反復(fù)搖擺,所以對其移位要有判斷程序,對[yi]正負的判斷在求[di]時已經(jīng)完成,拿來直接用即可。根據(jù)式(7)可知[xi]在第1級迭代結(jié)束后就已經(jīng)被限定為正數(shù)了,且移位是從第3級迭代開始的,而其[xL]輸出的是沒有正負的幅度,因此對[xi]的移位都可按照正數(shù)執(zhí)行。

對于[zi]而言,輸入為0且沒有移位的操作,只是根據(jù)[yi]的正或負逐級加上或減去一個相應(yīng)的無極性原碼表示的相位常數(shù)。由于弧度表示相位時本身就體現(xiàn)了補碼的特性,用無極性的原碼表示相位時可認(rèn)為[φ(n)∈][0,2π],用補碼表示相位時可認(rèn)為[φ(n)∈[-π,π]。]同理,對于差分模塊的瞬時角頻率也是如此,故無需做專門處理即可滿足式(10)的要求。

針對輸出數(shù)據(jù)的瞬時幅度采用無極性的原碼表示,其值帶有處理增益[KC,]且[KC]趨近于1.646 8,因此幅度的位數(shù)與[xi]的位數(shù)相同,本文所設(shè)計的電路不再做其他處理。

(3) 當(dāng)[x0,y0]均為0時,瞬時相位的累加問題

可見,此時瞬時相位輸出了一個非0的角度。對于同相正交分量來講,[yi,xi]均為0的情況表示信號的瞬時幅度也為0,因此可引入一個幅度閾值,通過對比[xL]與閾值的大小消除該現(xiàn)象,同時該閾值可做噪聲抑制門限用。

3.3 設(shè)計驗證與分析

為適應(yīng)更高的數(shù)據(jù)流速,實現(xiàn)運算速率與時鐘頻率的一致,本文針對圖5所示的流水結(jié)構(gòu)設(shè)計實現(xiàn)了FPGA電路并在Altera公司生產(chǎn)的EP4CE15F17C8芯片上進行了驗證。該FPGA電路包括CORDIC和差分兩個模塊,均借助QuartusⅡ軟件和VHDL語言設(shè)計[13]。

模塊例化集成后的原理結(jié)構(gòu)設(shè)計圖如圖6所示,其中CORDIC模塊由12級流水單元構(gòu)成。該電路輸入端的[xi](同相分量),[yi](正交分量)和輸出端的Aout(瞬時幅度)的位寬18位,輸出端的pnout(瞬時相位)和fnout(瞬時頻率)位寬20位,時鐘clk外接100 MHz的頻率源,與時鐘異步的使能端en在高電平有效。[xi,yi,]pnout,fnout的數(shù)據(jù)格式為補碼,Aout的數(shù)據(jù)格式是無極性的原碼。

啟動編譯器,編譯成功后得到的資源需求分析如圖7所示,該電路結(jié)構(gòu)占用了1 291個邏輯單元(LE),其中用到的寄存器為1 216個。

為了驗證電路效果,輸入仿真數(shù)據(jù)并利用Quartus Ⅱ自帶的嵌入式邏輯分析儀(Signal Tap Ⅱ)進行數(shù)據(jù)的實時監(jiān)測和采集。Signal Tap Ⅱ能夠?qū)y到的信號樣本暫存在EP4CE15F17C8內(nèi)嵌的RAM中,然后再通過JTAG端口將樣本送回QuartusⅡ進行顯示、分析,同時還能將采集的樣本數(shù)據(jù)轉(zhuǎn)換為txt格式文件輸出,以供其他仿真軟件如Matlab進行進一步的運算分析。輸入數(shù)據(jù)如表2所示。

為了更好地觀察時鐘的上下邊沿對模塊的控制情況,利用一個數(shù)字鎖相環(huán)將時鐘倍頻到200 MHz,每個clk時鐘周期內(nèi)包含2個樣本采集點。啟動Signal Tap Ⅱ,測試得到的波形效果如圖8所示。圖8中多位數(shù)據(jù)除Aout采用“Unsigned Line Chart”格式顯示外,其他均采用“Signed Line Chart”格式顯示。從波形效果上看,按表中數(shù)據(jù)依次循環(huán)的輸入正交同相分量時,電路輸出了瞬時的幅度、相位和頻率。調(diào)幅信號的瞬時幅度為一頻率較低的正弦信號,其他兩種的瞬時幅度為一矩形脈沖信號。線性調(diào)頻信號的瞬時相位、頻率很好地體現(xiàn)了上行LFM的特點。從圖8中還可以看出從同相正交分量數(shù)據(jù)輸入到幅度、相位輸出之間間隔24個樣本采樣點,即輸出比輸入延遲了12個clk時鐘周期,但輸出與輸入數(shù)據(jù)的流速是相同的,這說明電路中實現(xiàn)了12級流水計算單元。

對比圖9、圖10可看出,圖10中當(dāng)[xi=0]且[yi=0]時,Aout輸出為0,用其控制pnout輸出為1(用于調(diào)試測試數(shù)據(jù),使用時可設(shè)為0或其他值,閾值的選取視擬抑制的噪聲幅度決定)。圖10中當(dāng)[xi=0]且[yi=0]時,輸出補碼格式的相位值為-495 666,折算成歸一化弧度相位為-0.945 4π,這與式(12)一致。

4 結(jié) 論

本文設(shè)計的流水型結(jié)構(gòu)電路實現(xiàn)了利用圓周矢量模式CORDIC算法檢測中頻脈沖信號的瞬時幅度、相位和頻率,解決了時鐘與寄存器配置、數(shù)據(jù)的補碼格式和相位累加等問題。通過在硬件芯片上的下載驗證,表明電路結(jié)構(gòu)合理、測試有效,滿足設(shè)計要求。

參考文獻

[1] VOLDER J E. The CORDIC trigonometric computing technique [J]. IEEE transactions on computers, 1959, 8: 330?334.

[2] WALTHER J S. A unified algorithm for elementary function [C]// Proceedings of 1971 Spring Joint Computer Conference. [S.l.]: ACM, 1971: 379?385.

[3] 閻嘯,秦開宇,高援開,等.基于CORDIC算法的頻譜分析技術(shù)研究[J].電子科技大學(xué)學(xué)報,2006,36(3):335?338.

[4] 張俊濤,王紅倉.基于FPGA的CORDIC算法通用IP核設(shè)計[J].微計算機信息,2008,24(7):238?240.

[5] 陳婧.改進型CORDIC算法的研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(24):165?167.

[6] 孔德元.針對正弦余弦計算的CORDIC算法優(yōu)化及其FPGA實現(xiàn)[D].長沙:中南大學(xué),2008.

[7] 金鋒,佘世剛,王鍇,等.基于System Generator的PM信號CORDIC算法鑒相的仿真與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(5):96?98.

[8] 閆溫合,胡永輝,李瑾琳.應(yīng)用于數(shù)字下變頻中CORDIC算法的FPGA實現(xiàn)[J].時間頻率學(xué)報,2014,37(1):34?40.

[9] 胡愛明,胡可欣.一種雷達信號類型識別方法[J].現(xiàn)代電子技術(shù),2006,29(14):123?126.

[10] 張文旭.被動雷達導(dǎo)引頭數(shù)字信道化接收機研究及實現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2009.

[11] 維納 K 英格爾,約翰 G 普羅克斯.數(shù)字信號處理(Matlab版)[M].劉樹棠,陳志剛,譯.3版.西安:西安交通大學(xué)出版社,2013.

[12] 杜勇.數(shù)字濾波器的Matlab與FPGA實現(xiàn)[M].北京:電子工業(yè)出版社,2012.

[13] 陳欣波.Altera FPGA工程師成長手冊[M].北京:清華大學(xué)出版社,2012.

盐山县| 黄骅市| 肥东县| 山西省| 海南省| 沙坪坝区| 新泰市| 新晃| 普陀区| 桐梓县| 台江县| 疏附县| 灵石县| 海淀区| 辛集市| 龙海市| 黑龙江省| 泗阳县| 新巴尔虎左旗| 和龙市| 三河市| 两当县| 台江县| 遂昌县| 邯郸市| 简阳市| 武乡县| 高密市| 玛纳斯县| 随州市| 丘北县| 印江| 壶关县| 嘉荫县| 恩平市| 汉源县| 神木县| 安顺市| 石渠县| 安阳县| 静安区|