摘 要: 針對伺服電機控制系統(tǒng)中的脈沖發(fā)送需求問題,提出了一種利用DDS技術(shù),,以單片機和CPLD為硬件基礎(chǔ)的脈沖輸出頻率,、個數(shù)可控的脈沖發(fā)生器設(shè)計方案。利用Quartus II軟件進行了波形仿真并分析了結(jié)果,。研究結(jié)果表明,,采用該方案實現(xiàn)的脈沖發(fā)生器具有體積小、成本低和可靠性高等特點,,而且該脈沖發(fā)生器控制簡單,,輸出脈沖頻率控制精度高,,滿足了伺服電機控制系統(tǒng)中的脈沖發(fā)送需求。
關(guān)鍵詞: CPLD,;DDS,;脈沖發(fā)生器
隨著工業(yè)自動化的發(fā)展,伺服電機的應(yīng)用越來越廣泛,。伺服電機主要靠脈沖來定位,,其基本的工作原理是伺服電機接收到1個脈沖,旋轉(zhuǎn)1個脈沖對應(yīng)的角度來實現(xiàn)位移,,而脈沖的頻率會影響電機旋轉(zhuǎn)速度[1],。同時,自動化過程中,,常常需要多個伺服電機的聯(lián)合運動,。因此,研究能夠輸出多路頻率,、脈沖數(shù)可控的脈沖發(fā)生器就很有必要,。由于復(fù)雜可編程邏輯器件(CPLD)具有I/O口多、設(shè)計靈活,、集成度高和穩(wěn)定性好的優(yōu)點[2],,因此,本設(shè)計以CPLD為硬件平臺,,實現(xiàn)了一種脈沖頻率,、脈沖個數(shù)都可控的脈沖發(fā)生器。
1 脈沖發(fā)生器整體系統(tǒng)框圖
根據(jù)要求所需,,設(shè)計了圖1所示的脈沖發(fā)生器系統(tǒng),。上位機發(fā)送脈沖頻率、個數(shù)等命令,,通過RS485通信給單片機,,單片機再將命令通過數(shù)據(jù)總線傳遞給CPLD,CPLD的I/O輸出多路可控脈沖信號,。本設(shè)計中,,CPLD為整個脈沖發(fā)生器系統(tǒng)的核心所在。
2 脈沖發(fā)生器的設(shè)計原理
CPLD部分的硬件結(jié)構(gòu)如圖2所示,。設(shè)計所用的CPLD芯片為Altera公司的EPM1270T144,,采用VHDL語言,外部晶振時鐘頻率為25 MHz,。CPLD內(nèi)部有預(yù)分頻,、地址譯碼模塊、輸入緩沖、DDS分頻模塊及計數(shù)器模塊,,數(shù)據(jù),、地址復(fù)用總線位寬8位。
2.1 地址譯碼模塊
CPLD中設(shè)計了三路脈沖輸出,,這就使得計數(shù)模塊,、分頻模塊需要多組寄存器來存儲相應(yīng)的數(shù)據(jù)。因此,,設(shè)計了地址譯碼模塊方便單片機與之?dāng)?shù)據(jù)通信,。14、24,、34(十六進制)分別對應(yīng)計數(shù)器模塊內(nèi)三個脈沖個數(shù)寄存器的地址,,可讀寫寄存器的值;10,、20,、30(十六進制)分別是DDS分頻模塊內(nèi)三個頻率控制字M的寄存器地址,可寫入寄存器的值,;地址96(十六進制)對應(yīng)的寄存器低三位控制三路脈沖輸出使能,。
2.2 輸入輸出緩沖
為構(gòu)成芯片內(nèi)部的總線系統(tǒng),使數(shù)據(jù)的寫入讀出都能正確,,輸入輸出緩沖采用雙向端口的總線電路,。設(shè)計程序如下:
entity bustri is
port
datain:in std_logic_vector(7 downto 0),;
rd_en:in std_logic,;
wr_en:in std_logic;
tridata:inout std_logic_vector(7 downto 0),;
dataout:out std_logic_vector(7 downto 0)),;
end bustri;
architecture one of bustri is
begin
process(wr_en,,tridata)
begin
if wr_en=′0′ then
dataout<=tridata,;
else dataout<="ZZZZZZZZ";
end if,;
end process,;
process(rd_en,datain)
begin
if(rd_en=′0′)then
tridata<=datain,;
else tridata<="ZZZZZZZZ",;
end if;
end process,;
單片機先通過數(shù)據(jù),、地址復(fù)用總線給CPLD輸入地址,地址譯碼模塊將地址譯碼,,使對應(yīng)的寄存器輸入使能,;再通過輸入輸出緩沖寫頻率,、脈沖個數(shù)數(shù)據(jù)給對應(yīng)的寄存器;然后將脈沖輸出使能,,即可使脈沖輸出,。
2.3 DDS分頻模塊
DDS分頻模塊用來控制輸出脈沖的頻率。DDS技術(shù)是一種從相位概念出發(fā)直接合成所需波形的頻率合成技術(shù)[3],。DDS分頻模塊由相位累加器,、正余弦波形查找表ROM存儲器、D/A轉(zhuǎn)換器和低通濾波器構(gòu)成,,其基本原理框圖如圖3所示,。相位累加器在系統(tǒng)時鐘控制下產(chǎn)生正余弦波形查找表ROM的地址,相位溢出頻率即正余弦波輸出頻率,。通過改變頻率控制字的大小就可以改變輸出信號的頻率,。記頻率控制字為M,正余弦波相位寄存器為N位,,系統(tǒng)時鐘為fc,,則輸出信號的頻率fout可表示為fout=M·fc/2N。它的頻率精度是由相位累加器或者是調(diào)整字的比特數(shù)決定的,,即輸入的參考頻率除以2N,,就決定了DDS所能夠?qū)崿F(xiàn)的頻率精度[4],因此其頻率分辨率為fmin=fc/2N,。同時,,通過給相位累加器額外加一個相位控制字K,可以控制輸出信號的初始相位,。
圖3中,,外部晶振fc為25 MHz,通過預(yù)分頻模塊進行四分頻,,變?yōu)?.25 MHz,,作為DDS分頻模塊的輸入時鐘fc。頻率控制字M為15位,,相位寄存器21位,。查找表內(nèi)存放方波數(shù)據(jù)。因此,,可根據(jù)上述公式計算得出輸出脈沖頻率的精度為3 Hz,,變化范圍約為3 Hz~100 kHz。DDS模塊內(nèi)有三個相同的頻率控制模塊,,每個模塊設(shè)計框圖如圖4所示,。
圖4中,設(shè)計的頻率控制字查找表是256×15的ROM存儲器,存放了在3 Hz~100 kHz范圍內(nèi)均勻采樣256個離散點的頻率,,所對應(yīng)的頻率控制字M的值,。其地址范圍為00~FF(十六進制),低地址對應(yīng)小的M值,,M值隨地址的增大而增大,。M字的位寬為15位,數(shù)據(jù)總線8位,,如正常寫數(shù)據(jù)需要寫兩次,,利用頻率控制字查找表可以更加方便地設(shè)置頻率控制字,寫一次數(shù)據(jù)就可以改變M字的值,。方波查找表內(nèi)存放的是256×1的方波數(shù)據(jù),。單片機寫入地址10、20,、30(十六進制)后,,通過8位的數(shù)據(jù)線寫00~FF(十六進制)值給頻率控制字查找表,查找表將對應(yīng)的M字傳給頻率控制字M的寄存器,。經(jīng)過相位累加器累加,,累加器的高8位作為地址送入方波查找表,查找表就可以輸出頻率不同的脈沖信號給計數(shù)器模塊,。
2.4 計數(shù)器模塊
計數(shù)器模塊用來控制輸出脈沖的個數(shù),。計數(shù)器模塊內(nèi)有三組8位的脈沖個數(shù)寄存器。脈沖個數(shù)寄存器需要被賦予目標(biāo)脈沖個數(shù),;待其他寄存器設(shè)置好后,,單片機發(fā)送使能脈沖輸出;DDS分頻模塊發(fā)送頻率不同的脈沖送入計數(shù)器模塊,;計數(shù)器模塊內(nèi)部計數(shù)變量會根據(jù)輸出的脈沖個數(shù)進行累加,,當(dāng)計數(shù)變量累加到目標(biāo)脈沖數(shù)后,,計數(shù)變量停止累加,,并且脈沖輸出也會被停止。
3 脈沖發(fā)生器總體仿真結(jié)果分析
本設(shè)計利用Quartus II軟件進行波形仿真,,仿真結(jié)果如圖5所示,。
圖5中,XOSC為外部晶振時鐘25 MHz,;ale為地址使能,,下降沿有效;rd為讀使能,,低電平有效,;wr為寫使能信號,低電平有效;AD為數(shù)據(jù)總線,,顯示方式為十六進制,;MYA為三路脈沖輸出;地址14對應(yīng)的脈沖個數(shù)寄存器及地址10對應(yīng)的頻率控制字M的寄存器,,控制MYA(0)的脈沖輸出,,地址24、20對應(yīng)的寄存器控制MYA(1)輸出,,地址34,、30對應(yīng)的寄存器控制MYA(2)的脈沖輸出。
由圖5可以看出,,地址14對應(yīng)的脈沖個數(shù)寄存器寫入的值是10,,轉(zhuǎn)換成十進制為16,MYA(0)輸出脈沖個數(shù)即為16,;地址24對應(yīng)的脈沖個數(shù)寄存器寫入的值是05,,轉(zhuǎn)換成十進制為5,MYA(1)輸出脈沖個數(shù)即為5,;地址10對應(yīng)的頻率控制字M的寄存器寫入的值是FF,,對應(yīng)的M值最大,即輸出頻率應(yīng)為100 kHz,,而圖5中,,時間長度從230 ?滋s~270 ?滋s間,MYA(0)輸出完整脈沖4個,,計算出MYA(0)輸出脈沖的周期約為10 ?滋s,,對應(yīng)頻率即為100 kHz;地址20對應(yīng)的頻率控制字M的寄存器寫入的值是7F,,對應(yīng)的M值為最大的一半,,即輸出頻率應(yīng)為50 kHz,由圖5可以看出,,MYA(1)輸出的脈沖波形頻率為MYA(0)的一半,,對應(yīng)即為50 kHz。使能脈沖輸出后,,通過寫地址30改寫MYA(2)的頻率控制字M的值由47變?yōu)?1,,MYA(2)的脈沖輸出頻率正確改變。由上述分析可得,,脈沖發(fā)生器產(chǎn)生的脈沖個數(shù),、頻率均能隨著指令的改變而正確改變。仿真結(jié)果驗證了該方案的可行性,。
本文介紹了一種利用DDS技術(shù),,通過單片機和CPLD來實現(xiàn)的脈沖輸出頻率,、個數(shù)可控的脈沖發(fā)生器設(shè)計方案,且通過軟件仿真驗證了該方案的可行性,。該方案在伺服電機的控制中也得到了實際應(yīng)用,,效果良好。采用該方案實現(xiàn)的脈沖發(fā)生器不僅具有CPLD的體積小,、成本低,、功耗低、集成度高,、系統(tǒng)穩(wěn)定性和可靠性高等特點,,而且結(jié)合了DDS技術(shù)的特點及優(yōu)勢,控制簡單,,輸出脈沖頻率控制精度高,,滿足了伺服電機控制系統(tǒng)中的脈沖發(fā)送需求。
參考文獻
[1] 劉樹聃,,王琳.基于MCU和CPLD的脈沖發(fā)生器[J].微計算機信息,,2012,28(9):121-122.
[2] 宋萬杰,,羅豐,,吳順君.CPLD技術(shù)及其應(yīng)用[M].西安:電子科技大學(xué)出版社,1999.
[3] 張楠,,張根棟.基于DDS技術(shù)的全數(shù)字QPSK調(diào)制器的設(shè)計[J].工礦自動化,,2009(7):105-107.
[4] 李濤,高德遠(yuǎn).DDS直接數(shù)字合成研究及其CPLD實現(xiàn)[J].計算機工程與應(yīng)用,,2000,,36(12):72-73
[5] 王強,陳陽.可調(diào)多脈沖時序發(fā)生電路的數(shù)字化設(shè)計[J].電子測量技術(shù),,2009,,32(8):28-31.
[6] 耶曉東.基于單片機的簡易機械手的設(shè)計[J].微計算機信息,2009,,25(5-2):230-231.
[7] Altera Corpration. MAX 7000 Programmable Logic Device Family[Z]. USA:Altera Corpration,,2003.
[8] 金西.VHDL與復(fù)雜數(shù)字系統(tǒng)設(shè)計[M].西安:西安電子科技大學(xué)出版社,2003.
[9] 游志宇,,董秀成,,杜楊,,等.單片機與FPGA/CPLD總線接口邏輯設(shè)計[J].微計算機信息,,2008(29):121-123.
[10] 梁中華,肖丹,,楊霞.一種基于CPLD的SPWM控制波形生成方法[J].沈陽工業(yè)大學(xué)學(xué)報,,2005,,27(2):187-191.
[11] 秦繼榮,沈安俊.現(xiàn)代直流伺服控制技術(shù)及其系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,,1993.
[12] 趙正新,,高超.脈沖信號源的CPLD實現(xiàn)方法[J].電子科技,2009,,22(2):47-50.