機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
基于FPGA的QPSK信號源的設(shè)計與實現(xiàn)
基于FPGA的QPSK信號源的設(shè)計與實現(xiàn)
 更新時間:2008-8-3 15:42:18  點擊數(shù):4
【字體: 字體顏色


    前言

調(diào)相脈沖信號可以獲得較大的壓縮比,它作為一種常用的脈沖壓縮信號,在現(xiàn)代雷達及通信系統(tǒng)中獲得了廣泛應(yīng)用。隨著近年來軟件無線電技術(shù)和電子技術(shù)的發(fā)展,DDS(直接數(shù)字頻率合成)用于實現(xiàn)信號產(chǎn)生的應(yīng)用越來越廣。DDS技術(shù)從相位的概念出發(fā)進行頻率合成,它采用數(shù)字采樣存儲技術(shù),可以產(chǎn)生點頻、線性調(diào)頻、ASK、PSK及FSK等各種形式的信號,其幅度和相位一致性好,具有電路控制簡單、相位精確、頻率分辨率高、頻率切換速度快、輸出信號相位噪聲低、易于實現(xiàn)全數(shù)字化設(shè)計等突出優(yōu)點。

目前,DDS的ASIC芯片如AD公司的AD9852、AD9854等,對于相位調(diào)制信號,可方便地產(chǎn)生BPSK,但 是,對QPSK或8PSK等則實現(xiàn)困難,它們對控制更新脈沖要求極高,一旦偏差超過DDS內(nèi)極高的系統(tǒng)時鐘,輸出相位就會錯誤。本文介紹了一種通過FPGA實現(xiàn)QPSK或更高階PSK信號的方法,可靈活地通過上位機的PCI總線控制參數(shù),產(chǎn)生不同載波頻率、不同脈沖寬度、不同占空比、不同重復(fù)周期等的QPSK信號,對雷達等系統(tǒng)的設(shè)計者具有很好的借鑒意義。

QPSK信號源的設(shè)計方案

DDS原理

DDS是一種全數(shù)字化的頻率合成器,由相位累加器、正弦波形ROM存儲器、D/A轉(zhuǎn)換器和低通濾波器構(gòu)成,其基本原理如圖1。

輸出信號的頻率為fout=fclk?Δφ/2N,而最小頻率分辨率為Δfo=fomin=fo/2N,可見改變頻率控制字N即可改變輸出信號的頻率。當(dāng)參考時鐘頻率給定后,輸出信號的頻率取決于頻率的控制字,頻率分辨率取決于累加器的位數(shù),相位分辨率取決于ROM的地址線位數(shù),幅度量化取決于ROM的數(shù)據(jù)字長和D/A轉(zhuǎn)換器的位數(shù)。

為了提高DDS輸出信號的頻譜指標(biāo)和降低正弦的ROM存儲器,近來發(fā)展了如在相位截斷后加數(shù)字反sinc濾波,利用三角函數(shù)對稱性只存取1/4周期查找表,基于CORDIC、泰勒級數(shù)加權(quán)的頻率合成方法等技術(shù)。

QPSK信號源的設(shè)計方案

在FPGA中,通過正弦查找表和相位累加器實現(xiàn)DDS,通過計數(shù)器實現(xiàn)QPSK信號的起停控制。在計數(shù)器計數(shù)到零時,設(shè)置標(biāo)志位,讀取寄存器中的QPSK控制碼,從而設(shè)置初始相位。在計數(shù)到根據(jù)QPSK脈沖寬度設(shè)定的值后,計數(shù)器置0并重新開始計數(shù)。運行完設(shè)置碼元的個數(shù)及次數(shù)后,使能輸出禁止標(biāo)志位。

QPSK信號的重復(fù)周期也通過計數(shù)器實現(xiàn)。根據(jù)周期的范圍和系統(tǒng)時鐘,設(shè)置計數(shù)器的位數(shù)并使其滿足要求。在計數(shù)器計數(shù)到設(shè)定值后,清除輸出禁止的標(biāo)志位。需要注意的是周期計數(shù)器應(yīng)該與QPSK碼元寬度計數(shù)器同步。

QPSK信號參數(shù)控制通過PCI總線實現(xiàn),包括QPSK信號的開始、結(jié)束、碼元個數(shù)、次數(shù)、碼字以及QPSK信號重復(fù)周期等。在FPGA內(nèi)通過寄存器讀取、保存參數(shù)。

硬件設(shè)計

系統(tǒng)組成與結(jié)構(gòu)

FPGA選用XILINX公司Spartan3系列的XC3S1000,為100萬門大規(guī)?删幊唐骷。它內(nèi)部具有432kbit的Block Ram和120kbit的Distributed Ram;4個時鐘管理單元DCM;24個乘法器。配置采用XILINX的專用PROM XCF04S,4M位的串行Flash PROM。XC3S1000通過XCF04S實現(xiàn)主串配置,M0、M1、M2均置低。系統(tǒng)框圖如圖2。

高速DAC選用AD公司的AD9767,它是雙通道14位精度的高速CMOS DAC。它內(nèi)部集成1.2V的電壓基準(zhǔn),SFDR和IMR可達83dBc,最高轉(zhuǎn)換率為125MSPS,滿量程電流可調(diào)范圍為2mA~20mA,兩路D/A輸出后經(jīng)兩片高速、寬帶放大器AD8047放大,然后經(jīng)濾波器輸出,AD8047增益為1,實現(xiàn)電流到電壓的轉(zhuǎn)換。

PCI接口芯片采用PCI9054,是PlX公司應(yīng)用廣泛的32位、33MHz的PCI橋芯片,實現(xiàn)PCI總線和本地總線的轉(zhuǎn)換。PCI9054可工作在主、從模式,支持DMA,支持猝發(fā)操作。PCI9054的上電通過2k位的EEPROM NM93CS56配置,包括PCI9054的本地總線控制、PCI配置空間寄存器的配置等。PCI9054在PCB設(shè)計中應(yīng)注意PCI總線和時鐘的長度約束。

為了提高板上的存儲容量,F(xiàn)PGA通過CYPRESS的CY7C1372C-200擴展了(512k×36)/1M×18位的ZBT SRAM。以零等待狀態(tài)讀寫速率可達200MHz,最大訪問時間為3ns,支持Burst操作,適用高速的數(shù)據(jù)讀寫。

系統(tǒng)通過SMA外接時鐘,同時內(nèi)部50MHz晶振經(jīng)時鐘緩沖芯片CY2308輸出,分別作為PCI9054和FPGA的本地時鐘。外接時鐘的輸入阻抗為50Ω,注意通過信號源提供時鐘時應(yīng)使其峰峰值在2V以上。

復(fù)位電路采用MAXIM的看門狗及電壓監(jiān)控芯片MAX708實現(xiàn)。

電源由PCI總線提供,3.3V電壓直接從PCI總線的3.3V引出,通過凌特公司的LT1764實現(xiàn)2.5V電壓,采用TI公司的TPS54612實現(xiàn)1.2V電壓,分別作為FPGA的輔助電壓Vccaux和核電壓Vccint。TPS54612輸入電壓為3-6V,在3.3V、5V均可使用,輸出可高達6A,且開關(guān)控制器內(nèi)部集成FET場效應(yīng)管,方便應(yīng)用。AD8047的正負(fù)電壓輸入分別為+5V和-5V,分別由從PCI總線接入的+12V和-12V電壓經(jīng)穩(wěn)壓器7805和7905提供。

軟件設(shè)計

QPSK信號的生成

QPSK信號產(chǎn)生的原理在前面已作詳述,F(xiàn)PGA的外接60MHz時鐘通過內(nèi)部的時鐘管理器倍頻實現(xiàn)120MHz時鐘,通過Block RAM 資源實現(xiàn)只讀ROM,然后通過累加器進程、讀QPSK碼字進程、重復(fù)周期計數(shù)進程等實現(xiàn)DDS功能,通過乘法器還可實現(xiàn)輸出信號的幅度控制。以下是部分源程序,采用Verilog HDL語言編寫。

時鐘管理單元,使用XILINX的DCM實現(xiàn)倍頻,由60MHz變?yōu)?20MHz。

dcm60 dcmclk60 (

.CLKIN_IN(clk_in),

.RST_IN(~reset),

.CLKIN_IBUFG_OUT(clk_ibufg_out),

.CLK0_OUT(clk_0),

.CLK2X_OUT(clk_2x),

.LOCKED_OUT(locked_out60) );

單口只讀ROM,使用IP核,實現(xiàn)正弦查找表,數(shù)據(jù)寬度為14位,深度為16384字(14地址位)。ROM核接收的數(shù)據(jù)文件為COE文件,然后轉(zhuǎn)換為mif二進制文件格式,COE文件可通過C語言或MATLAB生成。ROM核的實現(xiàn)如下:

rom16384 rom16384(

.addr(dds_addr),

.clk(clk_2x),

.dout(dds_data),

.sinit(~reset),);

相位累加器位數(shù)設(shè)置為32位,系統(tǒng)時鐘120MHz,這樣可實現(xiàn)小于0.03Hz的頻率分辨率,查找表相位截取低14位。累加器進程如下:

always@(posedge clk_2x)

begin

if(dds_countT ==1'b0) //dds_countT為脈沖寬度計數(shù)器,時鐘為clk_2x。

dds_start<=1'b1;

else

dds_start<=1'b0;

if(dds_stop=1'b0 && dds_stop_set=1'b0) //dds_stop是周期起停標(biāo)志,dds_stop_set是上位機控制起停標(biāo)志

begin

if(dds_start==1'b1 )

case (psk)

2'b00:dds_acc<=phase1;

2'b01:dds_acc<=phase2;

2'b10:dds_acc<=phase3;

2'b11:dds_acc<=phase4;

endcase;

else

dds_acc<=dds_acc + dds_freq_add;//dds_freq_add對于設(shè)置的QPSK載波頻率。

end;

if(dds_countT<=countF_set && dds_countT>1) // countF_set為設(shè)置的QPSK脈沖寬度對應(yīng)的數(shù)值。

dds_addr<=dds_acc[31:18] ;

else

dds_addr<=14'b00000000000000;

end;

end;

DDS信號的控制實現(xiàn)

上位機通過PCI總線實現(xiàn)信號參數(shù)的讀寫控制。因本系統(tǒng)中只需PCI實現(xiàn)信號參數(shù)的控制,數(shù)據(jù)量不大,故配置PCI9054為PCI的從目標(biāo)(Slave),C模式。

在FPGA中實現(xiàn)參數(shù)寄存器,實時讀取PCI總線的數(shù)據(jù)并更新。FPGA本地總線的讀寫通過三態(tài)門控制。實現(xiàn)代碼如下:

assign data_inout=(enout)? data_out:32'bzzzzzzzz;

always@(clk)

begin

data_in<=data_inout;

end

讀寫實現(xiàn)通過狀態(tài)機程序?qū)崿F(xiàn),讀寫狀態(tài)流程圖如圖3。

[1] [2]  下一頁
  • 上一篇: 固定翼飛機豎直飛行控制系統(tǒng)的設(shè)計
  • 下一篇: S1D13506顯示控制器與AT91RM9200處理器的接口設(shè)計和應(yīng)用
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1