• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      王煒珽 張文旭 陶東香

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

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

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

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

      1 圓周CORDIC算法原理

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

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

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

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

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

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

      (1) 時(shí)鐘與寄存器的配置問(wèn)題

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

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

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

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

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

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

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

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

      3.3 設(shè)計(jì)驗(yàn)證與分析

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

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

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

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

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

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

      4 結(jié) 論

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

      參考文獻(xiàn)

      [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] 閻嘯,秦開(kāi)宇,高援開(kāi),等.基于CORDIC算法的頻譜分析技術(shù)研究[J].電子科技大學(xué)學(xué)報(bào),2006,36(3):335?338.

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

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

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

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

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

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

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

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

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

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

      揭阳市| 阜宁县| 龙门县| 西华县| 江山市| 临猗县| 永年县| 噶尔县| 郸城县| 镇沅| 福安市| 大名县| 太仆寺旗| 达州市| 和林格尔县| 永顺县| 阳高县| 建宁县| 泾阳县| 怀宁县| 汽车| 汨罗市| 宁城县| 宝清县| 始兴县| 铜山县| 寻乌县| 九台市| 江阴市| 九龙县| 万全县| 和顺县| 稷山县| 皮山县| 名山县| 顺平县| 安吉县| 独山县| 沂南县| 鄂尔多斯市| 武川县|