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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP與AD9852的任意信號(hào)發(fā)生器的設(shè)計(jì)

          基于DSP與AD9852的任意信號(hào)發(fā)生器的設(shè)計(jì)

          作者: 時(shí)間:2010-08-03 來源:網(wǎng)絡(luò) 收藏

          直接數(shù)字式頻率合成(DDS)技術(shù)是繼直接頻率合成和間接頻率合成之后,隨著數(shù)字集成電路和微電子技術(shù)的發(fā)展而迅速發(fā)展起來的第三代頻率合成技術(shù)。DDS技術(shù)具有相對(duì)帶寬寬、頻率轉(zhuǎn)換時(shí)間短、頻率分辨率高等優(yōu)點(diǎn),輸出相位連續(xù),頻率、相位和幅度均可實(shí)現(xiàn)程控,常用于高精度頻率合成和任意信號(hào)發(fā)生。本文在發(fā)動(dòng)機(jī)電控單元(ECU)硬件在環(huán)仿真系統(tǒng)的設(shè)計(jì)中,使用TMS320 LF2407A控制2片產(chǎn)生2路的任意信號(hào),仿真發(fā)動(dòng)機(jī)工作時(shí)的真實(shí)信號(hào)。

          1 簡(jiǎn)介

          是美國(guó)ANALOG Devices公司生產(chǎn)的新型直接數(shù)字頻率合成器,具有頻率轉(zhuǎn)化速度快、頻譜純度高、工作溫度范圍寬、集成度高等特點(diǎn)。工作電壓為3.3 V,片內(nèi)有4~20倍可編程時(shí)鐘乘法電路,系統(tǒng)最高時(shí)鐘可達(dá)300 MHz,輸出頻率可達(dá)120 MHz,頻率轉(zhuǎn)化速度小于1μs。內(nèi)部有12位D/A轉(zhuǎn)化器、48位可編程頻率寄存器和14位可編程相位寄存器,具有12位振幅調(diào)諧功能,能產(chǎn)生頻率、相位、幅度可編程控制的高穩(wěn)定模擬信號(hào)。

          是TI公司推出的一款定點(diǎn)DSP控制器,他采用高性能靜態(tài)CMOS技術(shù),使供電電壓降為3.3 V,減小了控制器的功耗;指令最短為25 ns,具有較強(qiáng)的實(shí)時(shí)控制能力;片內(nèi)有32 kB可加密的FLASH程序存儲(chǔ)器、2.5 kB的RAM,500 ns轉(zhuǎn)換時(shí)間的A/D轉(zhuǎn)換器,片上事件管理器提供了可以滿足各種電機(jī)控制要求的PWM接口和I/O功能,此外片內(nèi)還集成了SPI,SCI和CAN控制器。

          2 與AD9852的硬件接口電路

          在本系統(tǒng)中,TMS320LF2407A的功能是計(jì)算所要產(chǎn)生信號(hào)的波形參數(shù),并發(fā)送控制字到AD9852內(nèi)部的控制寄存器,以實(shí)現(xiàn)可編程的任意信號(hào)發(fā)生。數(shù)據(jù)的傳輸有串行、并行2種方式,串行傳輸速率最大為10 MHz,并行傳輸速率最大為100 MHz。為了節(jié)約DSP資源,在滿足系統(tǒng)要求的前提下,采取串口連接方式,利用TMSLF2407A片內(nèi)的串行外設(shè)接口(SPI)控制AD9852。接口電路的原理框圖如圖1所示。

          3 AD9852的工作過程

          AD9852的串行接口與TMS320LF2407A的SPI接口兼容,通過5個(gè)端口即可實(shí)現(xiàn)串行數(shù)據(jù)的傳輸控制。PRD/CSB是復(fù)用信號(hào),在串行工作狀態(tài)下CSB作為AD9852串行總線的片選信號(hào),I/O RESET是串口總線復(fù)位信號(hào),SCLK是串口時(shí)鐘信號(hào),系統(tǒng)采用的是2線串口通信模式,使用SDIO端口進(jìn)行雙向輸入輸出操作,I/O UD是更新時(shí)鐘信號(hào)。工作的時(shí)序如圖2所示。

          AD9852的周期分為2個(gè)階段,SCLK的前8個(gè)上升沿對(duì)應(yīng)于指令周期,在指令周期中,用戶向AD9852的串口控制器發(fā)送命令字來控制隨后進(jìn)行的串行數(shù)據(jù)傳輸。數(shù)據(jù)傳輸周期從SCLK的第9個(gè)上升沿開始,輸入數(shù)據(jù)在時(shí)鐘上升沿寫入,輸出的數(shù)據(jù)則在時(shí)鐘的下降沿讀出。由串口傳送的數(shù)據(jù)首先被寫入I/O緩存寄存器中,當(dāng)系統(tǒng)接收到有效的更新信號(hào)時(shí),才將這些數(shù)據(jù)寫入內(nèi)部控制寄存器組,完成相應(yīng)的功能。當(dāng)完成了通信周期后,AD9852的串口控制器認(rèn)為接下來的8個(gè)系統(tǒng)時(shí)鐘的上升沿對(duì)應(yīng)的是下一個(gè)通信周期的指令字。

          當(dāng)I/O SESET引腳出現(xiàn)一個(gè)高電平輸入時(shí),將會(huì)立即終止當(dāng)前的通信周期,當(dāng)I/O RESET引腳狀態(tài)回到低電平時(shí),AD9852串口控制器認(rèn)為接下來的8個(gè)系統(tǒng)時(shí)鐘的上升沿對(duì)應(yīng)的是下一個(gè)通信周期的指令字,這一點(diǎn)對(duì)保持通信的十分有益。

          4 2片AD9852工作

          實(shí)現(xiàn)2片AD9852輸出信號(hào)波形相位同步的關(guān)鍵是使他們工作在相同的系統(tǒng)時(shí)鐘下,每個(gè)AD9852的系統(tǒng)時(shí)鐘之間的相位誤差最大不能超過1個(gè)周期。AD9852的系統(tǒng)時(shí)鐘可由參考時(shí)鐘直接提供,或?qū)⒖紩r(shí)鐘通過內(nèi)部的時(shí)鐘倍頻器放大而成。異步的更新時(shí)鐘經(jīng)過AD9852內(nèi)部的邊沿檢測(cè)電路后與系統(tǒng)時(shí)鐘同步,形成上升沿,觸發(fā)內(nèi)部控制寄存器更新內(nèi)容。因此,要實(shí)現(xiàn)2片AD9852的同步,必須使其參考時(shí)鐘與更新信號(hào)的上升沿同步。下面是確保2片AD9852同步工作需要注意的一些要點(diǎn)。

          4.1 參考時(shí)鐘信號(hào)

          AD9852的參考時(shí)鐘有差分輸入和單端輸入2種形式,由于差分時(shí)鐘在脈沖邊沿具有更短的上升和下降時(shí)間以及最小的抖動(dòng)率,可以有效地降低2片AD9852參考時(shí)鐘間的相位誤差,因此本系統(tǒng)采用了參考信號(hào)差分輸入的方式。對(duì)于差分輸入方式,輸入端信號(hào)可以是方波或正弦波,推薦使用MAXIM公司的MAX9371,他可以將普通時(shí)鐘信號(hào)轉(zhuǎn)化成系統(tǒng)所需的差分時(shí)鐘信號(hào)。為了實(shí)現(xiàn)參考時(shí)鐘同步,令2片AD9852合用一個(gè)晶振,晶振輸出的信號(hào)先分別傳給兩個(gè)差分時(shí)鐘生成器,經(jīng)過轉(zhuǎn)化后輸入2片AD9852。為了使每片AD9852參考時(shí)鐘信號(hào)在傳輸過程中的延遲時(shí)間一致,PCB布線時(shí)必須確保時(shí)鐘信號(hào)走線距離相同。

          4.2 更新時(shí)鐘信號(hào)

          在對(duì)AD9852進(jìn)行編程時(shí),串行輸入的數(shù)據(jù)被緩存在內(nèi)部的I/O緩沖寄存器中,不會(huì)影響到AD9852的工作狀態(tài);在更新時(shí)鐘信號(hào)的上升沿到來后,觸發(fā)I/O緩沖寄存器把數(shù)據(jù)傳送給內(nèi)部控制寄存器,這時(shí)才能完成相應(yīng)功能,實(shí)現(xiàn)對(duì)輸出信號(hào)的控制。更新時(shí)鐘信號(hào)的產(chǎn)生有2種方式,一種是由AD9852芯片內(nèi)部自動(dòng)產(chǎn)生,用戶可以對(duì)更新時(shí)鐘的頻率進(jìn)行編程來產(chǎn)生固定周期的內(nèi)部更新時(shí)鐘;另一種是由用戶提供外部更新時(shí)鐘,此時(shí)AD9852I/OUD引腳為輸入引腳,由外部控制器提供信號(hào)。要實(shí)現(xiàn)2片AD9852同步,必須確保他們的更新時(shí)鐘信號(hào)的上升沿同時(shí)來臨,因此系統(tǒng)采取外部時(shí)鐘更新的方式。使用DSP的一個(gè)I/O端口與AD9852的I/O UD相連接,可以通過軟件的方式實(shí)現(xiàn)對(duì)更新時(shí)鐘信號(hào)上升沿的精確控制。對(duì)外部更新時(shí)鐘信號(hào)的布線要求同參考時(shí)鐘一樣。

          4.3 參考時(shí)鐘倍頻器

          AD9852的工作時(shí)鐘高達(dá)300 MHz,為了降低時(shí)鐘信號(hào)的干擾,系統(tǒng)應(yīng)采用低頻時(shí)鐘信號(hào)源,然后通過AD9852片內(nèi)的參考時(shí)鐘倍頻器,對(duì)外部參考時(shí)鐘實(shí)現(xiàn)4"20倍頻。參考時(shí)鐘倍頻器的鎖相環(huán)電路有2個(gè)工作狀態(tài):鎖定狀態(tài)和獲得鎖定狀態(tài)。在鎖定狀態(tài),系統(tǒng)時(shí)鐘信號(hào)和參考時(shí)鐘信號(hào)可以保持同步。但當(dāng)給AD9852發(fā)送控制指令時(shí),在其參考時(shí)鐘倍頻器工作后的短暫時(shí)間內(nèi),鎖相環(huán)不能立刻鎖定,仍然工作在獲得鎖定狀態(tài)。而此時(shí)傳送到AD9852相位累加器的系統(tǒng)時(shí)鐘周期的個(gè)數(shù)是不可控的,這可能導(dǎo)致2片AD9852的輸出信號(hào)之間相位不同步,因此系統(tǒng)初始化以后,一定要先確保鎖相環(huán)進(jìn)入鎖定狀態(tài),然后才能更新AD9852內(nèi)部的各種控制字。AD9852片內(nèi)鎖相環(huán)鎖定的典型時(shí)間約為400μs,建議至少留出1 ms時(shí)間使鎖相環(huán)進(jìn)入鎖定狀態(tài)。

          5 AD9852的控制流程

          (1)給系統(tǒng)上電,由DSP向AD9852發(fā)出復(fù)位信號(hào),此信號(hào)需要至少保持10個(gè)參考時(shí)鐘周期的高電平。

          (2)將S/P SELECT置0,選擇串行數(shù)據(jù)輸入方式。

          (3)依次給每個(gè)AD9852發(fā)送控制字,使每個(gè)AD9852工作狀態(tài)由缺省的內(nèi)部更新時(shí)鐘模式改變成外部時(shí)鐘更新模式。

          (4)將AD9852時(shí)鐘倍頻器工作的控制字依次寫入每個(gè)AD9852的I/O緩沖寄存器中,然后由DSP發(fā)出外部更新時(shí)鐘,更新每個(gè)AD9852內(nèi)部控制寄存器。

          (5) DSP發(fā)出外部更新信號(hào),至少等待1.0 ms時(shí)間使AD9852內(nèi)部鎖相環(huán)鎖定。然后由DSP發(fā)送有關(guān)信號(hào)波形參數(shù)給AD9852,對(duì)他們的內(nèi)部控制寄存器內(nèi)容進(jìn)行同步更新,使2片AD9852輸出同步的模擬信號(hào)。

          6 結(jié)語

          使用DSP控制AD9852產(chǎn)生的爆震信號(hào)和凸輪軸信號(hào),在精確度和實(shí)時(shí)性兩個(gè)方面都能夠滿足發(fā)動(dòng)機(jī)電控單元硬件在環(huán)仿真系統(tǒng)的要求。在此系統(tǒng)的基礎(chǔ)上,可以進(jìn)一步擴(kuò)展為多片DDS同步使用,適用于更多硬件在環(huán)仿真系統(tǒng)。



          評(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); })();