《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于CPLD的多路可控脈沖發(fā)生器設(shè)計(jì)
基于CPLD的多路可控脈沖發(fā)生器設(shè)計(jì)
2014年微型機(jī)與應(yīng)用第15期
駱國(guó)慶,俞建定,王 銀
寧波大學(xué) 信息科學(xué)與工程學(xué)院,浙江 寧波
摘要: 針對(duì)伺服電機(jī)控制系統(tǒng)中的脈沖發(fā)送需求問(wèn)題,提出了一種利用DDS技術(shù),以單片機(jī)和CPLD為硬件基礎(chǔ)的脈沖輸出頻率、個(gè)數(shù)可控的脈沖發(fā)生器設(shè)計(jì)方案。利用Quartus II軟件進(jìn)行了波形仿真并分析了結(jié)果。研究結(jié)果表明,采用該方案實(shí)現(xiàn)的脈沖發(fā)生器具有體積小、成本低和可靠性高等特點(diǎn),而且該脈沖發(fā)生器控制簡(jiǎn)單,輸出脈沖頻率控制精度高,滿足了伺服電機(jī)控制系統(tǒng)中的脈沖發(fā)送需求。
Abstract:
Key words :

  摘  要: 針對(duì)伺服電機(jī)控制系統(tǒng)中的脈沖發(fā)送需求問(wèn)題,提出了一種利用DDS技術(shù),以單片機(jī)和CPLD為硬件基礎(chǔ)的脈沖輸出頻率、個(gè)數(shù)可控的脈沖發(fā)生器設(shè)計(jì)方案。利用Quartus II軟件進(jìn)行了波形仿真并分析了結(jié)果。研究結(jié)果表明,采用該方案實(shí)現(xiàn)的脈沖發(fā)生器具有體積小、成本低和可靠性高等特點(diǎn),而且該脈沖發(fā)生器控制簡(jiǎn)單,輸出脈沖頻率控制精度高,滿足了伺服電機(jī)控制系統(tǒng)中的脈沖發(fā)送需求。

  關(guān)鍵詞: CPLD;DDS;脈沖發(fā)生器

  隨著工業(yè)自動(dòng)化的發(fā)展,伺服電機(jī)的應(yīng)用越來(lái)越廣泛。伺服電機(jī)主要靠脈沖來(lái)定位,其基本的工作原理是伺服電機(jī)接收到1個(gè)脈沖,旋轉(zhuǎn)1個(gè)脈沖對(duì)應(yīng)的角度來(lái)實(shí)現(xiàn)位移,而脈沖的頻率會(huì)影響電機(jī)旋轉(zhuǎn)速度[1]。同時(shí),自動(dòng)化過(guò)程中,常常需要多個(gè)伺服電機(jī)的聯(lián)合運(yùn)動(dòng)。因此,研究能夠輸出多路頻率、脈沖數(shù)可控的脈沖發(fā)生器就很有必要。由于復(fù)雜可編程邏輯器件(CPLD)具有I/O口多、設(shè)計(jì)靈活、集成度高和穩(wěn)定性好的優(yōu)點(diǎn)[2],因此,本設(shè)計(jì)以CPLD為硬件平臺(tái),實(shí)現(xiàn)了一種脈沖頻率、脈沖個(gè)數(shù)都可控的脈沖發(fā)生器。

  1 脈沖發(fā)生器整體系統(tǒng)框圖


001.jpg


  根據(jù)要求所需,設(shè)計(jì)了圖1所示的脈沖發(fā)生器系統(tǒng)。上位機(jī)發(fā)送脈沖頻率、個(gè)數(shù)等命令,通過(guò)RS485通信給單片機(jī),單片機(jī)再將命令通過(guò)數(shù)據(jù)總線傳遞給CPLD,CPLD的I/O輸出多路可控脈沖信號(hào)。本設(shè)計(jì)中,CPLD為整個(gè)脈沖發(fā)生器系統(tǒng)的核心所在。

  2 脈沖發(fā)生器的設(shè)計(jì)原理

002.jpg

  CPLD部分的硬件結(jié)構(gòu)如圖2所示。設(shè)計(jì)所用的CPLD芯片為Altera公司的EPM1270T144,采用VHDL語(yǔ)言,外部晶振時(shí)鐘頻率為25 MHz。CPLD內(nèi)部有預(yù)分頻、地址譯碼模塊、輸入緩沖、DDS分頻模塊及計(jì)數(shù)器模塊,數(shù)據(jù)、地址復(fù)用總線位寬8位。

  2.1 地址譯碼模塊

  CPLD中設(shè)計(jì)了三路脈沖輸出,這就使得計(jì)數(shù)模塊、分頻模塊需要多組寄存器來(lái)存儲(chǔ)相應(yīng)的數(shù)據(jù)。因此,設(shè)計(jì)了地址譯碼模塊方便單片機(jī)與之?dāng)?shù)據(jù)通信。14、24、34(十六進(jìn)制)分別對(duì)應(yīng)計(jì)數(shù)器模塊內(nèi)三個(gè)脈沖個(gè)數(shù)寄存器的地址,可讀寫(xiě)寄存器的值;10、20、30(十六進(jìn)制)分別是DDS分頻模塊內(nèi)三個(gè)頻率控制字M的寄存器地址,可寫(xiě)入寄存器的值;地址96(十六進(jìn)制)對(duì)應(yīng)的寄存器低三位控制三路脈沖輸出使能。

  2.2 輸入輸出緩沖

  為構(gòu)成芯片內(nèi)部的總線系統(tǒng),使數(shù)據(jù)的寫(xiě)入讀出都能正確,輸入輸出緩沖采用雙向端口的總線電路。設(shè)計(jì)程序如下:

  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;

  單片機(jī)先通過(guò)數(shù)據(jù)、地址復(fù)用總線給CPLD輸入地址,地址譯碼模塊將地址譯碼,使對(duì)應(yīng)的寄存器輸入使能;再通過(guò)輸入輸出緩沖寫(xiě)頻率、脈沖個(gè)數(shù)數(shù)據(jù)給對(duì)應(yīng)的寄存器;然后將脈沖輸出使能,即可使脈沖輸出。

  2.3 DDS分頻模塊

  DDS分頻模塊用來(lái)控制輸出脈沖的頻率。DDS技術(shù)是一種從相位概念出發(fā)直接合成所需波形的頻率合成技術(shù)[3]。DDS分頻模塊由相位累加器、正余弦波形查找表ROM存儲(chǔ)器、D/A轉(zhuǎn)換器和低通濾波器構(gòu)成,其基本原理框圖如圖3所示。相位累加器在系統(tǒng)時(shí)鐘控制下產(chǎn)生正余弦波形查找表ROM的地址,相位溢出頻率即正余弦波輸出頻率。通過(guò)改變頻率控制字的大小就可以改變輸出信號(hào)的頻率。記頻率控制字為M,正余弦波相位寄存器為N位,系統(tǒng)時(shí)鐘為fc,則輸出信號(hào)的頻率fout可表示為fout=M·fc/2N。它的頻率精度是由相位累加器或者是調(diào)整字的比特?cái)?shù)決定的,即輸入的參考頻率除以2N,就決定了DDS所能夠?qū)崿F(xiàn)的頻率精度[4],因此其頻率分辨率為fmin=fc/2N。同時(shí),通過(guò)給相位累加器額外加一個(gè)相位控制字K,可以控制輸出信號(hào)的初始相位。

003.jpg

  圖3中,外部晶振fc為25 MHz,通過(guò)預(yù)分頻模塊進(jìn)行四分頻,變?yōu)?.25 MHz,作為DDS分頻模塊的輸入時(shí)鐘fc。頻率控制字M為15位,相位寄存器21位。查找表內(nèi)存放方波數(shù)據(jù)。因此,可根據(jù)上述公式計(jì)算得出輸出脈沖頻率的精度為3 Hz,變化范圍約為3 Hz~100 kHz。DDS模塊內(nèi)有三個(gè)相同的頻率控制模塊,每個(gè)模塊設(shè)計(jì)框圖如圖4所示。

004.jpg

  圖4中,設(shè)計(jì)的頻率控制字查找表是256×15的ROM存儲(chǔ)器,存放了在3 Hz~100 kHz范圍內(nèi)均勻采樣256個(gè)離散點(diǎn)的頻率,所對(duì)應(yīng)的頻率控制字M的值。其地址范圍為00~FF(十六進(jìn)制),低地址對(duì)應(yīng)小的M值,M值隨地址的增大而增大。M字的位寬為15位,數(shù)據(jù)總線8位,如正常寫(xiě)數(shù)據(jù)需要寫(xiě)兩次,利用頻率控制字查找表可以更加方便地設(shè)置頻率控制字,寫(xiě)一次數(shù)據(jù)就可以改變M字的值。方波查找表內(nèi)存放的是256×1的方波數(shù)據(jù)。單片機(jī)寫(xiě)入地址10、20、30(十六進(jìn)制)后,通過(guò)8位的數(shù)據(jù)線寫(xiě)00~FF(十六進(jìn)制)值給頻率控制字查找表,查找表將對(duì)應(yīng)的M字傳給頻率控制字M的寄存器。經(jīng)過(guò)相位累加器累加,累加器的高8位作為地址送入方波查找表,查找表就可以輸出頻率不同的脈沖信號(hào)給計(jì)數(shù)器模塊。

  2.4 計(jì)數(shù)器模塊

  計(jì)數(shù)器模塊用來(lái)控制輸出脈沖的個(gè)數(shù)。計(jì)數(shù)器模塊內(nèi)有三組8位的脈沖個(gè)數(shù)寄存器。脈沖個(gè)數(shù)寄存器需要被賦予目標(biāo)脈沖個(gè)數(shù);待其他寄存器設(shè)置好后,單片機(jī)發(fā)送使能脈沖輸出;DDS分頻模塊發(fā)送頻率不同的脈沖送入計(jì)數(shù)器模塊;計(jì)數(shù)器模塊內(nèi)部計(jì)數(shù)變量會(huì)根據(jù)輸出的脈沖個(gè)數(shù)進(jìn)行累加,當(dāng)計(jì)數(shù)變量累加到目標(biāo)脈沖數(shù)后,計(jì)數(shù)變量停止累加,并且脈沖輸出也會(huì)被停止。

  3 脈沖發(fā)生器總體仿真結(jié)果分析

  本設(shè)計(jì)利用Quartus II軟件進(jìn)行波形仿真,仿真結(jié)果如圖5所示。

005.jpg

  圖5中,XOSC為外部晶振時(shí)鐘25 MHz;ale為地址使能,下降沿有效;rd為讀使能,低電平有效;wr為寫(xiě)使能信號(hào),低電平有效;AD為數(shù)據(jù)總線,顯示方式為十六進(jìn)制;MYA為三路脈沖輸出;地址14對(duì)應(yīng)的脈沖個(gè)數(shù)寄存器及地址10對(duì)應(yīng)的頻率控制字M的寄存器,控制MYA(0)的脈沖輸出,地址24、20對(duì)應(yīng)的寄存器控制MYA(1)輸出,地址34、30對(duì)應(yīng)的寄存器控制MYA(2)的脈沖輸出。

  由圖5可以看出,地址14對(duì)應(yīng)的脈沖個(gè)數(shù)寄存器寫(xiě)入的值是10,轉(zhuǎn)換成十進(jìn)制為16,MYA(0)輸出脈沖個(gè)數(shù)即為16;地址24對(duì)應(yīng)的脈沖個(gè)數(shù)寄存器寫(xiě)入的值是05,轉(zhuǎn)換成十進(jìn)制為5,MYA(1)輸出脈沖個(gè)數(shù)即為5;地址10對(duì)應(yīng)的頻率控制字M的寄存器寫(xiě)入的值是FF,對(duì)應(yīng)的M值最大,即輸出頻率應(yīng)為100 kHz,而圖5中,時(shí)間長(zhǎng)度從230 ?滋s~270 ?滋s間,MYA(0)輸出完整脈沖4個(gè),計(jì)算出MYA(0)輸出脈沖的周期約為10 ?滋s,對(duì)應(yīng)頻率即為100 kHz;地址20對(duì)應(yīng)的頻率控制字M的寄存器寫(xiě)入的值是7F,對(duì)應(yīng)的M值為最大的一半,即輸出頻率應(yīng)為50 kHz,由圖5可以看出,MYA(1)輸出的脈沖波形頻率為MYA(0)的一半,對(duì)應(yīng)即為50 kHz。使能脈沖輸出后,通過(guò)寫(xiě)地址30改寫(xiě)MYA(2)的頻率控制字M的值由47變?yōu)?1,MYA(2)的脈沖輸出頻率正確改變。由上述分析可得,脈沖發(fā)生器產(chǎn)生的脈沖個(gè)數(shù)、頻率均能隨著指令的改變而正確改變。仿真結(jié)果驗(yàn)證了該方案的可行性。

  本文介紹了一種利用DDS技術(shù),通過(guò)單片機(jī)和CPLD來(lái)實(shí)現(xiàn)的脈沖輸出頻率、個(gè)數(shù)可控的脈沖發(fā)生器設(shè)計(jì)方案,且通過(guò)軟件仿真驗(yàn)證了該方案的可行性。該方案在伺服電機(jī)的控制中也得到了實(shí)際應(yīng)用,效果良好。采用該方案實(shí)現(xiàn)的脈沖發(fā)生器不僅具有CPLD的體積小、成本低、功耗低、集成度高、系統(tǒng)穩(wěn)定性和可靠性高等特點(diǎn),而且結(jié)合了DDS技術(shù)的特點(diǎn)及優(yōu)勢(shì),控制簡(jiǎn)單,輸出脈沖頻率控制精度高,滿足了伺服電機(jī)控制系統(tǒng)中的脈沖發(fā)送需求。

  參考文獻(xiàn)

  [1] 劉樹(shù)聃,王琳.基于MCU和CPLD的脈沖發(fā)生器[J].微計(jì)算機(jī)信息,2012,28(9):121-122.

  [2] 宋萬(wàn)杰,羅豐,吳順君.CPLD技術(shù)及其應(yīng)用[M].西安:電子科技大學(xué)出版社,1999.

  [3] 張楠,張根棟.基于DDS技術(shù)的全數(shù)字QPSK調(diào)制器的設(shè)計(jì)[J].工礦自動(dòng)化,2009(7):105-107.

  [4] 李濤,高德遠(yuǎn).DDS直接數(shù)字合成研究及其CPLD實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2000,36(12):72-73

  [5] 王強(qiáng),陳陽(yáng).可調(diào)多脈沖時(shí)序發(fā)生電路的數(shù)字化設(shè)計(jì)[J].電子測(cè)量技術(shù),2009,32(8):28-31.

  [6] 耶曉東.基于單片機(jī)的簡(jiǎn)易機(jī)械手的設(shè)計(jì)[J].微計(jì)算機(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è)計(jì)[M].西安:西安電子科技大學(xué)出版社,2003.

  [9] 游志宇,董秀成,杜楊,等.單片機(jī)與FPGA/CPLD總線接口邏輯設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008(29):121-123.

  [10] 梁中華,肖丹,楊霞.一種基于CPLD的SPWM控制波形生成方法[J].沈陽(yáng)工業(yè)大學(xué)學(xué)報(bào),2005,27(2):187-191.

  [11] 秦繼榮,沈安俊.現(xiàn)代直流伺服控制技術(shù)及其系統(tǒng)設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,1993.

  [12] 趙正新,高超.脈沖信號(hào)源的CPLD實(shí)現(xiàn)方法[J].電子科技,2009,22(2):47-50.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。