<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)和AD9858的4頻點(diǎn)快速跳頻設(shè)計(jì)

          基于51單片機(jī)和AD9858的4頻點(diǎn)快速跳頻設(shè)計(jì)

          作者: 時(shí)間:2011-12-29 來源:網(wǎng)絡(luò) 收藏

          在電子系統(tǒng)中,常常需要應(yīng)用頻率合成技術(shù)來實(shí)現(xiàn)跳頻源設(shè)計(jì)。頻率合成指對(duì)一個(gè)高穩(wěn)定的參考頻率進(jìn)行各種技術(shù)處理,以生成一系列穩(wěn)定的頻率輸出。目前應(yīng)用最廣的是鎖相環(huán)(PLL)頻率合成技術(shù),它是通過改變PLL中的分頻比N來實(shí)現(xiàn)跳頻的,但PLL無法避免環(huán)路鎖定時(shí)間縮短與頻率分辨率提高及雜散減小之間的矛盾,因此很難同時(shí)滿足高速跳頻和細(xì)步長(zhǎng)、低雜散的要求。直接數(shù)字頻率合成(DDS)是一種新的頻率合成技術(shù)。它具有頻率分辨率高、頻率切換快、頻率切換時(shí)相位連續(xù)等優(yōu)點(diǎn),因而被廣泛應(yīng)用于雷達(dá)跳頻、通信、電子對(duì)抗等系統(tǒng)中。

          基本原理

          DDS的原理框圖如圖1所示。相位累加器在A位頻率控制字FCW的控制下,以參考時(shí)鐘頻率fc為采樣率來產(chǎn)生待合成信號(hào)相位的數(shù)字線性序列,然后將其高P位作為地址碼,通過查詢正弦表ROM產(chǎn)生S位對(duì)應(yīng)信號(hào)波形的數(shù)字序列S(n),再由數(shù)模轉(zhuǎn)換器將其轉(zhuǎn)化為階梯模擬電壓波形,最后由低通濾波器LPF平滑為正弦波輸出。



          頻率控制字FCW和時(shí)鐘頻率fc共同決定了DDS的輸出信號(hào)頻率fo 。其關(guān)系是:

          輸出頻率:f0=FCW fc/2A

          頻率的分辨率為:fo=fc/2A 2 AD9858的特點(diǎn)及送數(shù)方式

          AD9858的主要特點(diǎn):

          ● 具有1千兆次/秒的采樣速率;

          ● 具有高達(dá)2GHz的輸入時(shí)鐘(通過2分頻);

          ● 集成有10位D/A轉(zhuǎn)換器;

          ● 內(nèi)含32位可編程頻率寄存器;

          ● 帶有8位并行及SPI串行控制接口;

          ● 具有自動(dòng)頻率掃描功能;

          ● 內(nèi)帶4個(gè)頻率寄存器;

          ● 采用3.3V低電源供電;

          ● 電荷泵獨(dú)立供電電壓可達(dá)5V;

          ● 集成有2GHz混頻器。

          由于DDS產(chǎn)生的頻率是由頻率控制字FCW控制的,改變相應(yīng)頻率的控制字即可獲得所需頻率。因此DDS的送數(shù)方法是實(shí)現(xiàn)DDS跳頻源的關(guān)鍵之一。其內(nèi)部結(jié)構(gòu)框圖如圖2所示。

          AD9858有并行和串行兩種送數(shù)方式。數(shù)據(jù)從用戶傳輸?shù)剑模模悠骷诵男枰獌蓚€(gè)步驟。在寫操作時(shí),不管是用并行送數(shù)方式還是串行送數(shù)方式,用戶都要首先將數(shù)據(jù)寫入I/O緩沖器。只有當(dāng)數(shù)據(jù)從I/O緩沖器鎖入存儲(chǔ)寄存器,DDS的核心才接收到數(shù)據(jù)。在AD9858中,觸發(fā)FUD腳或者改變預(yù)編程的Profile都可以使I/O緩沖器中的數(shù)據(jù)進(jìn)入DDS的核心存儲(chǔ)寄存器。

          (1)并行送數(shù)模式時(shí),系統(tǒng)應(yīng)激活八個(gè)雙向數(shù)據(jù)口(D0~D7)、六個(gè)地址輸入口(ADDR5~ADDR0)、一個(gè)讀口(RD)和一個(gè)寫口(WR),寄存器的選擇由寄存器圖提供的地址決定。讀寫功能由RD和WR脈沖觸發(fā)控制,但這兩個(gè)功能不能同時(shí)起作用。讀寫的數(shù)據(jù)可通過D0~D7腳傳輸。



          (2)串行送數(shù)模式包括兩個(gè)階段。第一階段由一個(gè)8位的指令周期構(gòu)成。最高位是標(biāo)志位,用于確定是讀操作還是寫操作,低六位是串行送數(shù)目標(biāo)寄存器的地址。第二階段就是送數(shù)據(jù)給寄存器。

          許多時(shí)候DDS都要求,而頻率的快速變化則要求寄存器的頻率控制字快速更新,因此,通常都要求DDS選用并行送數(shù)。相對(duì)于ADI公司以往的DDS芯片而言?AD9858的優(yōu)勢(shì)在于它具有四個(gè)頻率寄存器及四個(gè)相位補(bǔ)償寄存器?這使得它可以方便快速的產(chǎn)生跳頻信號(hào)以及四相碼編碼調(diào)制信號(hào)?而且它轉(zhuǎn)換時(shí)間極短。這是因?yàn)樘l的頻率控制字已經(jīng)送入DDS核心寄存器中的四組控制寄存器,頻點(diǎn)之間的選擇是依靠外部選擇信號(hào)PS1和PS0來實(shí)現(xiàn)的。

          3 基于AD9858的設(shè)計(jì)

          3.1 跳頻電路

          送數(shù)及四頻點(diǎn)的切換通過單片機(jī)來完成。89C51單片機(jī)可在5V電壓下工作,但實(shí)驗(yàn)證明,3.3V供電時(shí),89C51單片機(jī)的工作也是完全正常的,采用單片機(jī)和DDS芯片AD9858設(shè)計(jì)的跳頻原理圖如圖3。

          3.2 軟件程序設(shè)計(jì)

          根據(jù)AD9858的時(shí)序特點(diǎn),可將單片機(jī)的P1.0和P1.1分別與RD和WR相連。這樣,編程時(shí)就可以對(duì)頻率控制字和相位補(bǔ)償字的地址列表作如下具體設(shè)置:

          FTW0_1 EQU 00101011B

          FTW0_2 EQU 00101111B

          FTW0_3 EQU 00110011B

          FTW0_4 EQU 00110111B

          POW0_1 EQU 00111011B

          POW0_2 EQU 00111111B

          最低兩位分別是RD和WR,初始化時(shí)將其均置為高位。三到六位才是送數(shù)的地址。一個(gè)頻點(diǎn)的送數(shù)程序如下:

          MOV P3, 40H

          MOV P1, #FTW0_1

          CLR WR_

          SETB WR_

          SETB FUD

          CLR FUD

           

          MOV P3, 40H

          MOV P1, #FTW0_2

          CLR WR_

          SETB WR_

          SETB FUD

          CLR FUD

           

          MOV P3,40H

          MOV P1, #FTW0_3

          CLR WR_

          SETB WR_

          SETB FUD

          CLR FUD

           

          MOV P3, #40H

          MOV P1, #FTW0_4

          CLR WR_

          SETB WR_

          SETB FUD

          CLR FUD

          ;

          MOV P3, #00H

          MOV P1, #POW0_1

          CLR WR_

          SETB WR_

          SETB FUD

          CLR FUD

          ;

          MOV P3, #00H

          MOV P1, #POW0_2

          CLR WR_

          SETB WR_

          SETB FUD

          CLR FUD

          設(shè)計(jì)時(shí),應(yīng)先將8位頻率控制字送入單片機(jī)的P3口,再將這8位的地址送入P1口。由于送8位地址的同時(shí)也將WR置為高位。因此,將WR置低就可將8位控制字和6位地址送入DDS緩沖器。由于頻率的更新只需FUD一個(gè)上升沿,所以將FUD置為高位就可將8位數(shù)據(jù)送入指定的頻率寄存器(初始化已將FUD置為低位),最后再將FUD置為低位,以為后邊的頻率更新設(shè)置上升沿做準(zhǔn)備。

          通過一個(gè)簡(jiǎn)單的程序可將一個(gè)頻點(diǎn)的控制字送入DDS的存儲(chǔ)寄存器。再通過相同的地址列表和送數(shù)方式就可將所需要的其它三個(gè)頻點(diǎn)送入DDS的存儲(chǔ)寄存器。這樣,通過外部選擇信號(hào)PS1和PS0就可以快速在這四個(gè)頻點(diǎn)間進(jìn)行切換。

          由于AD9858內(nèi)部的頻率寄存器有限,因此,在跳頻的頻點(diǎn)較多時(shí),每次跳頻都需要改變頻率控制字。DDS的實(shí)際跳頻時(shí)間包括送數(shù)和內(nèi)部切換時(shí)間。如果使用內(nèi)部寄存器通過PS1和PS0來控制切換頻率,則跳頻時(shí)間只有內(nèi)部切換時(shí)間,所以,這種跳頻是相當(dāng)快的。



          4 實(shí)驗(yàn)及測(cè)試結(jié)果

          實(shí)驗(yàn)表明(該實(shí)驗(yàn)采用400MHz低相噪時(shí)鐘):AD9858的內(nèi)部切換時(shí)間僅為納秒級(jí)。該實(shí)驗(yàn)使用周期邏輯電平控制 PS1和PS0,并通過對(duì)PS1和PS0信號(hào)的選擇來實(shí)現(xiàn)頻率的切換。最后使用高頻示波器來測(cè)試跳頻時(shí)間。

          筆者進(jìn)行的第一個(gè)實(shí)驗(yàn)是將一個(gè)寄存器的頻點(diǎn)FCW設(shè)為00000000H(0MHz),另一個(gè)寄存器的頻點(diǎn)FCW設(shè)為20000000H(125MHz)。測(cè)試結(jié)果為:從0MHz跳頻到125MHz所用的時(shí)間為17.6ns。

          第二個(gè)實(shí)驗(yàn)是將一個(gè)寄存器的頻點(diǎn)FCW設(shè)為19999999H(100MHz),另一寄存器的頻點(diǎn)FCW設(shè)為20000000H(125MHz)。測(cè)試結(jié)果為:從100MHz跳頻到125MHz所用的時(shí)間為33.6ns。

          5 結(jié)論

          從兩次測(cè)試的結(jié)果來看利用AD9858內(nèi)部寄存器來實(shí)現(xiàn)是完全可行的。由于測(cè)試過程中存在數(shù)據(jù)傳輸延遲,PS0和PS1控制電平的上升沿,所以測(cè)試存在一定的誤差,實(shí)際跳頻時(shí)間應(yīng)比測(cè)試結(jié)果更短一些。

          由于AD9858內(nèi)部只有四個(gè)頻率寄存器,所以跳頻的點(diǎn)有限。在跳頻點(diǎn)不需要很多、跳頻時(shí)間要求很短時(shí),此方法優(yōu)越性十分明顯。



          關(guān)鍵詞: DDS AD9858 快速跳頻

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();