機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
利用FPGA與單片機(jī)相結(jié)合設(shè)計(jì)的波形發(fā)生器
利用FPGA與單片機(jī)相結(jié)合設(shè)計(jì)的波形發(fā)生器
 更新時(shí)間:2008-8-3 15:56:19  點(diǎn)擊數(shù):9
【字體: 字體顏色


    摘要:利用FPGA與單片機(jī)相結(jié)合的方法,使用單片機(jī)控制FPGA產(chǎn)生頻率為10Hz~20kHz的正弦波,鋸齒波,三角波和四路分別占空比0到100%可調(diào)的PWM波形。該波形發(fā)生器以單片機(jī)(MCS8031)為中心控制單元,由上位機(jī)界面,波形發(fā)生模塊和D/A轉(zhuǎn)換模塊組成。采用DDS(直接數(shù)字頻率合成)技術(shù),通過(guò)VHDL語(yǔ)言,單片機(jī)C語(yǔ)言,VC++語(yǔ)言實(shí)現(xiàn)了對(duì)正弦波,鋸齒波,三角波頻率以及四路PWM波占空比的設(shè)置和發(fā)生。
關(guān)鍵詞: FPGA;單片機(jī);VHDL;DDS

1 引言


可編程邏輯器件(PLD)及EDA技術(shù)的應(yīng)用成為電子系統(tǒng)設(shè)計(jì)的潮流。FPGA是一種新興的可編程邏輯器件(PLD),與其它PLD相比,具有更高的密度、更快的工作速度和更大的編程靈活性。單片機(jī)以其體積小、功能齊全、價(jià)格低廉、可靠性高等方面所具有的獨(dú)特優(yōu)點(diǎn),長(zhǎng)期以來(lái)被廣泛的應(yīng)用在各領(lǐng)域。


基于FPGA的高密度、高速度、現(xiàn)場(chǎng)可編程的能力和單片機(jī)強(qiáng)大的數(shù)據(jù)處理功能,制作了波形發(fā)生系統(tǒng),用于產(chǎn)生頻率為10Hz~20kHz的正弦波,鋸齒波,三角波和四路分別占空比0~100%可調(diào)的PWM波。


2 系統(tǒng)設(shè)計(jì)


整體設(shè)計(jì)由四個(gè)部分組成:上位機(jī)部分,單片機(jī)部分,F(xiàn)PGA部分,模擬電路部分。


波形發(fā)生器以單片機(jī)(MCS8031)為中心控制單元,由上位機(jī)控制界面,波形發(fā)生模塊和D/A轉(zhuǎn)換模塊組成,采用DDS(直接數(shù)字頻率合成)技術(shù),將要求的波形數(shù)據(jù)存儲(chǔ)于FPGA內(nèi)構(gòu)建的ROM當(dāng)中,單片機(jī)跟據(jù)上位機(jī)的命令輸出查表地址等信息至FPGA,F(xiàn)PGA產(chǎn)生相應(yīng)得波形數(shù)據(jù)經(jīng)D/A轉(zhuǎn)換器輸出。其系統(tǒng)原理框圖如下:




圖1  系統(tǒng)原理框圖


2.1 單片機(jī)部分


在設(shè)計(jì)中采用MCS8031為處理器,選擇P1.0,P1.1作為波形選擇信號(hào),P1.2作為FPGA的復(fù)位信號(hào),P2.5作為DACO832的片選端,P0口作為低8位地址和數(shù)據(jù)線。單片機(jī)接收來(lái)自上位機(jī)的命令信息后將相應(yīng)的波形設(shè)置信息輸出到FPGA,并控制DAC0832的使能。


單片機(jī)接收并處理來(lái)自上位機(jī)的數(shù)據(jù)信息流程圖如圖2所示:


 


圖2  單片機(jī)接收并處理上位機(jī)數(shù)據(jù)流程圖


2.2 FPGA部分及模擬電路部分


波形發(fā)生采用DDS技術(shù)可以很方便地產(chǎn)生各種高質(zhì)量的波形。DDS技術(shù)是從相位概念出發(fā)之結(jié)合成所需要波形的一種頻率合成技術(shù)。以正弦波為例,首先要按照一定的采樣點(diǎn)數(shù)將正弦波形一個(gè)周期的數(shù)據(jù)信息存于ROM表中,表中包含著一個(gè)周期正弦波的數(shù)字幅度信息,每個(gè)地址對(duì)應(yīng)正弦波中0到360度范圍內(nèi)的一個(gè)相位點(diǎn)的幅度值,查找表時(shí)即是把輸入的地址相位信息映射成正弦波幅度的數(shù)字量信號(hào),以驅(qū)動(dòng)D/A轉(zhuǎn)換電路。DDS方法通過(guò)查找表輸出信號(hào)的頻率可由下式給出:


Fout=(x*[Fclk])/Y;     Y為2的N次冪;


其中頻率控制字與輸出信號(hào)的頻率成正比,因此可以通過(guò)改變尋址的步長(zhǎng)來(lái)改變輸出信號(hào)的頻率,因?yàn)樵诖_定了累加器的位寬N和尋址位寬M,以及系統(tǒng)時(shí)鐘Fclk后,隨著步長(zhǎng)X的增加,在每次累加器循環(huán)的一個(gè)周期中,輸出的M為查找表的地址個(gè)數(shù)就會(huì)減少,相應(yīng)輸出一個(gè)中期波形的時(shí)間也就會(huì)減少,輸出信號(hào)的頻率相應(yīng)增加,這就是DDS的方法。


需要注意的是,隨著步長(zhǎng)和輸出頻率的增加,輸出信號(hào)的采樣點(diǎn)數(shù)會(huì)減少,會(huì)降低產(chǎn)生波形的精度和平滑度,因此也限制了輸出信號(hào)的最高頻率,而且由采樣定理可知,所產(chǎn)生的信號(hào)頻率不能超過(guò)時(shí)鐘頻率的一半,在實(shí)際應(yīng)用中,為了保證信號(hào)的輸出質(zhì)量,輸出的頻率不要高于時(shí)鐘頻率的33%,以避免混疊或諧波落入有用輸出頻帶內(nèi)。


為了提高所產(chǎn)生的波形頻率,采用高頻率特性的FPGA(ALTERA EPF10K10LC84-4)。后級(jí)電路采用有較高的轉(zhuǎn)換速度的DAC0832作為D/A轉(zhuǎn)換。


在FPGA內(nèi)實(shí)現(xiàn)ROM表的資源是有限的,并且ROM表的大小隨著地址位數(shù)和數(shù)據(jù)位數(shù)的增加成指數(shù)遞增關(guān)系,因此在滿足采樣信號(hào)性能的前提條件下,如何減少資源的開銷就是一個(gè)重要的問(wèn)題。在實(shí)際設(shè)計(jì)時(shí),充分利用了正弦波信號(hào)周期內(nèi)的對(duì)稱性和算術(shù)關(guān)系來(lái)減少ROM表資源的開銷,因此通過(guò)一個(gè)正弦表的前1/4周期就可以通過(guò)相位變換得到其整個(gè)波形周期的采樣值,這樣就節(jié)省了將近3/4的資源。


對(duì)于PWM波部分,采用分頻器,累加器與比較器結(jié)合的方式實(shí)現(xiàn),對(duì)于各個(gè)部分采用模塊化設(shè)計(jì)分別實(shí)現(xiàn),并在頂層文件中連接在一起可以方便進(jìn)行修改,擴(kuò)展和移植。


正弦波,三角波,鋸齒波的部分VHDL源程序如下:


p_rom:process(clk,reset)


  begin


    if clk'event and clk='1' then


        clk_rom<=clk_rom + frq_data;


           case p1 is


              when "00"=>rom_address<=clk_rom( 19 downto 13)+"000000000";


              when "01"=>rom_address<=clk_rom( 19 downto 13)+"010000000";


              when "10"=>rom_address<=clk_rom( 19 downto 13)+"011111111";


              when others=>null;


           end case;


     end if;


end process p_rom;       


2.3 上位機(jī)部分


利用Windows系統(tǒng)中提供的串行通訊功能完備的ActiveX控件即MSComm控件實(shí)現(xiàn)與單片機(jī)的通信。MSComm控件具有編程容易實(shí)現(xiàn),簡(jiǎn)捷方便等優(yōu)點(diǎn),但僅在對(duì)話框中使用。根據(jù)波形發(fā)生器的特點(diǎn)和要求,MSComm控件可以完全實(shí)現(xiàn)要求。


像其他控件一樣,通信空間也是用一系列的屬性和用戶接口,控件提供了許多屬性,大部分屬性僅和Modem有關(guān),下面將常用的屬性做一下簡(jiǎn)要說(shuō)明:


CommPort:設(shè)置并返回通信口號(hào),缺省值為COM1。


Settings:設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位的字符串。其中波特率的范圍為300b/s到19200b/s。


PortOpcn:設(shè)置并返回通信口的狀態(tài),同時(shí)用來(lái)打開和關(guān)閉通信口。


InputLen:決定每次Input讀入的字符個(gè)數(shù),缺省為0,表示讀取接收緩沖區(qū)的全部?jī)?nèi)容。


Input:讀入并清除接收緩沖區(qū)的字符。


InBuferCount:返回接收緩沖區(qū)已接收的字符數(shù),通過(guò)置0可清除接收緩沖區(qū)。


Output:將發(fā)送的字符串或數(shù)組寫到發(fā)送緩沖區(qū)。


InputMode:定義Inpput屬性獲得數(shù)據(jù)的方式。


Rthreshold:設(shè)置、返回在通信控件置ComEvRecieve并激發(fā)OnComm事件前要接收的字符數(shù)。


SThreshold:設(shè)置、返回通信控件置ComEvSend并激發(fā)OnComm事件前發(fā)送緩沖區(qū)中的最少字符數(shù)。


另外,由于在VC界面中出現(xiàn)的是10到20k的整型數(shù)據(jù),因此需要將此頻率數(shù)據(jù)轉(zhuǎn)換成16位的頻率控制字送給單片機(jī),轉(zhuǎn)換程序如下:


void CWaveDlg::CalculateFreq(unsigned  int unFreq)


{


              double m;


        m=unFreq*0.0001024;


           m=m*1024;


           CommandMCU.uchLowData= (unsigned char) m%256;


           CommandMCU.uchHighData=m/256;


           return;


}


3 結(jié)束語(yǔ)


本文作者創(chuàng)新點(diǎn):采用了直接數(shù)字頻率合成(DDS)技術(shù),經(jīng)過(guò)仿真,電路測(cè)試,輸出波形上完全達(dá)到了設(shè)計(jì)的要求。與以往的采取波形存儲(chǔ)和波形復(fù)現(xiàn)方式的波形發(fā)生器相比,基于DDS的波形發(fā)生器可以很方便的實(shí)現(xiàn)頻率的調(diào)制功能,產(chǎn)生的波形可以達(dá)到很高的頻率分辨率,輸出頻率的轉(zhuǎn)換速度快,而且在頻率轉(zhuǎn)換時(shí),DDS輸出波形的相位是連續(xù)的。


 


參考文獻(xiàn):


1.王鳳臣,李慶瑞等.基于DDS的波形發(fā)生器在HIRFL-CSR電源控制系統(tǒng)中的應(yīng)用[J].微計(jì)算機(jī)信息,2006,22:3-5


2.段傳華.直接數(shù)字頻率合成器的原理及應(yīng)用[J].電訊技術(shù),1995年10月,35(5).


3.侯博亨等.VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì).成都電子科技大學(xué)出版社.1997.


4.徐志軍等.CPLD/FPGA的開發(fā)與應(yīng)用.北京:電子工業(yè)出版社.2002

[1]


  • 上一篇: 利用FPGA與單片機(jī)相結(jié)合設(shè)計(jì)的波形發(fā)生器
  • 下一篇: 基于DSP的無(wú)線網(wǎng)絡(luò)的移動(dòng)終端硬件平臺(tái)設(shè)計(jì)方案
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

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

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

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