林創(chuàng)華,蔡晨暉
(佛山科學(xué)技術(shù)學(xué)院自動(dòng)化系,廣東佛山528000)
實(shí)驗(yàn)用FPGA運(yùn)動(dòng)控制原型系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
林創(chuàng)華,蔡晨暉
(佛山科學(xué)技術(shù)學(xué)院自動(dòng)化系,廣東佛山528000)
摘要:根據(jù)當(dāng)前FPGA市場(chǎng)快速繁榮發(fā)展及其工業(yè)應(yīng)用迅速普及的需求,設(shè)計(jì)了一種實(shí)驗(yàn)用基于FPGA的三軸運(yùn)動(dòng)控制原型系統(tǒng)。該系統(tǒng)采用Altera的cycloneIVE系列芯片,使用Verilog HDL語(yǔ)言,在DE2—115FPGA開(kāi)發(fā)板上實(shí)現(xiàn)電機(jī)起停控制、電機(jī)正反轉(zhuǎn)控制、調(diào)速控制、PWM產(chǎn)生、LCD顯示等模塊的功能,有助于學(xué)生掌握FPGA的設(shè)計(jì)與開(kāi)發(fā),并可作為運(yùn)動(dòng)控制實(shí)驗(yàn)課程的參考。
關(guān)鍵詞:FPGA;運(yùn)動(dòng)控制;Verilog HDL
近年來(lái),運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)與實(shí)驗(yàn)成為電子技術(shù)實(shí)驗(yàn)課程的一個(gè)重要內(nèi)容[1-2]。FPGA作為一種靈活性好、功能強(qiáng)大、易于開(kāi)發(fā)的可編程器件,在運(yùn)動(dòng)控制領(lǐng)域得到廣泛應(yīng)用。例如,文獻(xiàn)[3-12]均采用FPGA作為其運(yùn)動(dòng)控制器的核心模塊來(lái)實(shí)現(xiàn)運(yùn)動(dòng)控制。
面對(duì)工業(yè)領(lǐng)域普及和深入廣泛的應(yīng)用,在高校加強(qiáng)基于FPGA運(yùn)動(dòng)控制系統(tǒng)的實(shí)驗(yàn)與開(kāi)發(fā)成為不可忽視的事情。為此,筆者適時(shí)地在電子技術(shù)實(shí)驗(yàn)中開(kāi)展基于FPGA的運(yùn)動(dòng)控制系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)的研究,旨在提高學(xué)生對(duì)FPGA的認(rèn)識(shí)和了解,并強(qiáng)化他們基于FPGA的設(shè)計(jì)與開(kāi)發(fā)能力。
作為一種實(shí)驗(yàn)用原型系統(tǒng),最主要的特征就是可展示性與示教性,這是實(shí)驗(yàn)系統(tǒng)區(qū)別于一般工業(yè)應(yīng)用系統(tǒng)的根本?;诖嗽O(shè)計(jì)了一個(gè)基于Altera公司cycloneIVE芯片的FPGA運(yùn)動(dòng)控制原型系統(tǒng),該原型系統(tǒng)具備一般FPGA運(yùn)動(dòng)控制的全部要素并可完成各種示教工作。
軟件系統(tǒng)是驅(qū)動(dòng)硬件系統(tǒng)作業(yè)的核心,F(xiàn)PGA系統(tǒng)也如此。Altera的FPGA開(kāi)發(fā)需要利用QuartusII綜合環(huán)境,使用VHDL語(yǔ)言或者Verilog HDL語(yǔ)言編程。
本文主要介紹采用Verilog HDL編程實(shí)現(xiàn)所設(shè)計(jì)的實(shí)驗(yàn)用三軸運(yùn)動(dòng)控制原型系統(tǒng)的驅(qū)動(dòng)和調(diào)試。主要包括在DE2—115FPGA開(kāi)發(fā)板上電機(jī)起停控制、電機(jī)正反轉(zhuǎn)控制、調(diào)速控制、PWM產(chǎn)生、LCD顯示等模塊的功能實(shí)現(xiàn)。
從硬件層面來(lái)看,一個(gè)運(yùn)動(dòng)控制系統(tǒng)必須具備幾個(gè)核心模塊:基本輸入與輸出模塊、電機(jī)的驅(qū)動(dòng)與控制模塊、信號(hào)燈的控制模塊、時(shí)鐘模塊與電源管理(PWM)模塊。而根據(jù)自身需求選擇合適的開(kāi)發(fā)板、
芯片以及元器件,設(shè)計(jì)出硬件的驅(qū)動(dòng)電路尤為重要。
從軟件層面來(lái)看,必須首先做好開(kāi)發(fā)環(huán)境的搭建,包括所選芯片的配置工作以及代碼下載方式的選擇;然后選擇合適的編程語(yǔ)言,根據(jù)硬件層面的功能需求進(jìn)行程序的編寫。
1.1系統(tǒng)總體設(shè)計(jì)
根據(jù)硬件層面的需求,本文設(shè)計(jì)出了最簡(jiǎn)單的實(shí)驗(yàn)用運(yùn)動(dòng)控制原型系統(tǒng),如圖1所示。
圖1 系統(tǒng)基本結(jié)構(gòu)
圖1中各組成的功能分別如下所述。
(1)驅(qū)動(dòng)電路。驅(qū)動(dòng)電路A、B及C融合了PWM功能。
(2)LED指示。LED實(shí)現(xiàn)信號(hào)燈控制。
(3)配置接口。配置接口用來(lái)配置FPGA,主要有AS和JTAG兩種配置模式:1)AS主動(dòng)配置,將程序配置到芯片EPCS64中;2)將JTAG配置到FPGA中。
(4)Key鍵。Key0到Key3按鍵是對(duì)跳變沿敏感加入施密特觸發(fā)器消除抖動(dòng)的按鍵。
(5)SW鍵。SW0到SW2為對(duì)電平敏感的撥動(dòng)開(kāi)關(guān)。
按鍵與開(kāi)關(guān)主要實(shí)現(xiàn)對(duì)電機(jī)的控制,其功能定義如表1所示。
表1 按鍵、開(kāi)關(guān)和指示燈說(shuō)明
1.2開(kāi)發(fā)板與電機(jī)的選擇
1.2.1開(kāi)發(fā)板與芯片的選擇
根據(jù)FPGA的發(fā)展現(xiàn)狀,目前有DE2-115實(shí)驗(yàn)板。該實(shí)驗(yàn)板采用Altera公司的cycloneIVE芯片,晶振的頻率是50 MHz,芯片最高頻率可達(dá)到240 MHz,具有速度快且生成的硬件電路各功能模塊為并行狀態(tài),易于體現(xiàn)FPGA并行流水作業(yè)特征。
1.2.2電機(jī)的選擇
選擇直流行星齒輪電機(jī),該電機(jī)轉(zhuǎn)速計(jì)算公式為
式(1)中,n為電機(jī)轉(zhuǎn)速,U為電樞端電壓,I為電樞電流,R為電樞電路總電阻,φ為每極磁通量,K為電動(dòng)機(jī)結(jié)構(gòu)參數(shù)。
由式(1)可以看出,n與U、I有關(guān),即可控量只有這兩個(gè)。這樣可以通過(guò)調(diào)節(jié)U、I這兩個(gè)量來(lái)改變n。而I又與U有關(guān),因此可通過(guò)調(diào)節(jié)U來(lái)改變電機(jī)n。
1.3硬件驅(qū)動(dòng)電路設(shè)計(jì)
1.3.1PWM的設(shè)計(jì)與實(shí)現(xiàn)
PWM可由模擬與數(shù)字兩種模式實(shí)現(xiàn)。模擬方式主要采用比較器和鋸齒波發(fā)生器產(chǎn)生脈沖寬度調(diào)制波實(shí)現(xiàn)PWM,系統(tǒng)原理和波形如圖2所示。
圖2 硬件PWM原理
從圖2可看出,如輸入信號(hào)如果大于鋸齒波信號(hào),比較器輸出正常數(shù)A,否則輸出0。因此比較器輸出一列下降沿調(diào)制的脈沖寬度調(diào)制波。
數(shù)字PWM基本原理如圖3所示。在時(shí)鐘脈沖的作用下,循環(huán)計(jì)數(shù)器的輸出逐次增大,數(shù)字調(diào)制信號(hào)用一個(gè)寄存器來(lái)控制,并不斷與循環(huán)計(jì)數(shù)器的輸出進(jìn)行比較,當(dāng)調(diào)制信號(hào)大于循環(huán)計(jì)數(shù)器的輸出時(shí),比較器輸出高電平,否則輸出低電平。通過(guò)改變控制寄存器的值,就可以控制高電平的大小,即改變?cè)谝粋€(gè)計(jì)數(shù)周期占空比,因而產(chǎn)生出不同的脈沖寬度調(diào)制波。用不同的脈沖寬度波,作為驅(qū)動(dòng)器的輸入,用來(lái)改變電機(jī)的電壓,從而達(dá)到調(diào)速的目的。
硬件實(shí)現(xiàn)PWM需要額外的硬件資源,通過(guò)比較可知,數(shù)字PWM只需要調(diào)節(jié)控制器的數(shù)值,就可得到不同的脈沖寬度調(diào)制波形,因此本研究采用數(shù)字PWM技術(shù)。
1.3.2驅(qū)動(dòng)電路簡(jiǎn)介
本研究采用H型電路,其原理如圖4所示。
圖4 驅(qū)動(dòng)電路原理
由圖1可以看出,當(dāng)IN1與IN2之間有電壓差時(shí),經(jīng)過(guò)L298N放大,輸出OUT1和OUT2,把輸出接在電機(jī)的兩端就可以驅(qū)動(dòng)電機(jī)。改變輸入電壓差的極性,就可以改變電機(jī)的正反轉(zhuǎn)。這種設(shè)計(jì)的好處是,可以通過(guò)編程改變輸出接口的電壓以實(shí)現(xiàn)電機(jī)轉(zhuǎn)速、正轉(zhuǎn)與反轉(zhuǎn)。
1.4軟件開(kāi)發(fā)
1.4.1編程語(yǔ)言的選擇
硬件描述語(yǔ)言(HDL)是一種用形式化方法來(lái)描述數(shù)字電路和系統(tǒng)的語(yǔ)言。Verilog HDL和VHDL最大的差別在語(yǔ)法上,Verilog HDL是一種類C語(yǔ)言,而VHDL是一種ADA(Action Data Automation,行動(dòng)數(shù)據(jù)自動(dòng)化)語(yǔ)言??紤]到學(xué)生具有C語(yǔ)言基礎(chǔ),易于掌握Verilog HDL語(yǔ)言,本設(shè)計(jì)選用Verilog HDL語(yǔ)言編程。
1.4.2配置芯片
EPCS64屬于Altera的串行配置器件系列,是可編程邏輯工業(yè)領(lǐng)域中最低成本的配置器件。EPCS64擁有包括在系統(tǒng)可編程(ISP)、Flash存儲(chǔ)器訪問(wèn)接口、節(jié)省單板空間的小外形集成電路(SOIC)封裝等高級(jí)特征,使得串行配置器件成為CycloneRII和Cyclone FPGA系列產(chǎn)品在大容量及價(jià)格敏感的應(yīng)用環(huán)境下的完美補(bǔ)充。Altera的系列串行配置器件EPCS64也為StratixRII系列器件提供了一種低成本、小型化的解決方案。FPGA配置芯片選用EPCS64,具有64M的存儲(chǔ)空間,可以支持FPGA的AS配置模式。為此,采用EPCS64配置方式。
1.4.3下載方式的選擇
FPGA器件主要有3種配置下載方式:主動(dòng)配置方式(AS)、被動(dòng)配置方式(PS)和常用的(JTAG)配置方式,本設(shè)計(jì)主要使用的是AS和JTAG兩種方式。
AS和JTAG是兩種主要的FPGA配置方式,各有其特點(diǎn),AS掉電可以儲(chǔ)存數(shù)據(jù),上電的時(shí)候FPGA從配置器件中讀取程序;JTAG配置方式時(shí)間比較快,直接配置在FPGA中。由于FPGA是基于ARM結(jié)構(gòu),掉電失去數(shù)據(jù),所以在測(cè)試和板級(jí)調(diào)試的時(shí)候采用JTAG配置方式,等確定程序完成好后采用AS配置方式。
完成了硬件系統(tǒng)設(shè)計(jì)及軟件配置后,關(guān)鍵一步就是軟件編程。這是學(xué)生將來(lái)從事FPGA開(kāi)發(fā)的基礎(chǔ)。為此,下面重點(diǎn)介紹時(shí)鐘分頻、電機(jī)控制、PWM以及LED顯示這幾個(gè)模塊。
2.1時(shí)鐘分頻模塊
時(shí)鐘分頻模塊主要產(chǎn)生一個(gè)分頻時(shí)鐘,定義了一個(gè)17位的寄存器,每當(dāng)有一個(gè)時(shí)鐘上升,計(jì)數(shù)器的值加1,當(dāng)計(jì)數(shù)器的值大于48 000時(shí),分頻脈沖為高電平,小于48 000,則為低電平。FPGA的時(shí)鐘為50 MHz,周期為20 μs,經(jīng)過(guò)分頻電路產(chǎn)生的分頻時(shí)鐘的周期約為2.6 ms,這樣的分頻時(shí)鐘可以作為后來(lái)的按鍵檢測(cè)和驅(qū)動(dòng)LED的時(shí)鐘信號(hào)。其代碼如下:
always@(posedge clock)
begin
clk_1k=(counter>=17’d48000);
if(clk_1k)
counter<=17’d0;
else
counter<=counter+1’b1;
end
2.2電機(jī)按鍵控制模塊
電機(jī)按鍵控制模塊主要控制電機(jī)的起停,每當(dāng)按鍵key1[2]按下時(shí),PWM取反,從而用這個(gè)控制信號(hào)去控制PWM模塊的輸出,從而達(dá)到控制電機(jī)起停的目的。其代碼如下:
always @(posedge clk_1k)
begin
if(key[3])
pwm_en=1;
else
pwm_en=0;
end
2.3電機(jī)調(diào)速
電機(jī)主要用于調(diào)速。如果按下啟動(dòng)開(kāi)關(guān),且按下應(yīng)許設(shè)置開(kāi)關(guān),進(jìn)入設(shè)置程序,按下key1[0],dutycycle寄存器的值加1,按下key1[1],duty-cycle寄存器的值減1,用duty-cycle寄存器值作為PWM的比較寄存器的值,每次按鍵按下改變寄存器的值,從而就可以改變PWM的占空比,達(dá)到調(diào)速的目的。
本設(shè)計(jì)中,duty-cycle寄存器為4為寄存器,有16個(gè)值,可以實(shí)現(xiàn)16個(gè)檔位的調(diào)速,寄存器的位寬越寬,可以實(shí)現(xiàn)的調(diào)速等級(jí)越多,調(diào)速越平滑。在此選用那個(gè)16個(gè)檔位的調(diào)速,是為了使調(diào)速效果更明顯,便于調(diào)試和觀察。設(shè)計(jì)有3臺(tái)電機(jī),必須設(shè)定3個(gè)調(diào)速寄存器與3個(gè)設(shè)定開(kāi)關(guān),這樣打開(kāi)相應(yīng)的電機(jī)設(shè)置開(kāi)關(guān),進(jìn)入設(shè)置,就可以實(shí)現(xiàn)各自的調(diào)速,互不影響。根據(jù)速度合成的原理,3個(gè)電機(jī)的速度不同,只要調(diào)節(jié)它們的速度,就可以在空間走出不同的軌跡。其代碼如下:
always @(posedge clk_1k)
begin
if(key[0]&! key1[0])
begin
duty_cycle1 <= duty_cycle1 + 1’b1;
end
f(key[0]&! key1[1])
begin
duty_cycle1<= duty_cycle1 - 1’b1;
end
end
2.4正反轉(zhuǎn)控制
當(dāng)按下Key1[3]時(shí),moto_dir電平反轉(zhuǎn),可以用moto_dir控制PWM的輸出反轉(zhuǎn)。當(dāng)moto_dir為1時(shí),motoa1端輸出pwm,moto_b1輸出低電平;當(dāng)moto_dir為0時(shí),motoa1輸出為0,motob1輸出為PWM,從而實(shí)現(xiàn)電平反轉(zhuǎn),電機(jī)實(shí)現(xiàn)正反轉(zhuǎn),其他兩臺(tái)電機(jī)原理相同。其代碼如下:
always @(posedge key1[3])
begin
moto_dir<= ~moto_dir;
end
assign motoa1 = moto_dir ? pwm_in1: 1’b0;
assign motob1 = moto_dir? 1’b0 : pwm_in1;
assign motoa2 = moto_dir ? pwm_in2: 1’b0;
assign motob2 = moto_dir? 1’b0 : pwm_in2;
assign motoa3 = moto_dir ? pwm_in3: 1’b0;
assign motob3 = moto_dir? 1’b0 : pwm_in3-
2.5PWM產(chǎn)生模塊
計(jì)數(shù)寄存器位寬為17位,計(jì)數(shù)周期約為2.6 ms,當(dāng)計(jì)數(shù)器的高4位小于duty_cycle(比較寄存器)的時(shí),輸出高電平,或者就輸出低電平。當(dāng)duty_cycle值增大的時(shí)候,輸出的高電平占空比增大,電機(jī)的
轉(zhuǎn)速增加;當(dāng)duty_cycle值減小的時(shí)候,輸出高電平占空比減小,電機(jī)減速。其代碼如下:
always @(posedge clock)
begin
if(pwm_en&(counter1[16:13]<=duty_cycle1))
pwm_out1 <= 1’b1;
else
pwm_out1 <= 1’b0;
end
2.6LED指示模塊
LED指示模塊用來(lái)控制LED燈的顯示。其代碼如下:
always @(posedge clk_1k)
begin
if(key[0])
led0=1;
if(key[1])
led1=1;
if(key[2])
led2=1;
end
按照硬件設(shè)計(jì)原理,選配好所需器件、連接線,連接成基礎(chǔ)硬件電路后,采用QuartusII進(jìn)行開(kāi)發(fā),經(jīng)綜合粘貼后生成RTL文件上傳到FPGA。讓學(xué)生參與調(diào)試,最后實(shí)現(xiàn)所設(shè)計(jì)的各個(gè)功能。圖5是最終實(shí)現(xiàn)的FPGA原型系統(tǒng)。
圖5 實(shí)現(xiàn)的FPGA原型系統(tǒng)
該是真正實(shí)現(xiàn)數(shù)控系統(tǒng)的基礎(chǔ),也是后續(xù)工作的參考。系統(tǒng)實(shí)現(xiàn)了預(yù)期的設(shè)計(jì)并且能夠讓學(xué)生親身體驗(yàn)FPGA的開(kāi)發(fā),可達(dá)到預(yù)期的要求。當(dāng)然,本設(shè)計(jì)還有值得改進(jìn)的地方,例如增加一個(gè)速度反饋
實(shí)現(xiàn)閉環(huán)控制、LED速度與FPGA速度匹配、更好的軟件控制界面等。為此,在試驗(yàn)中將這些作為問(wèn)題提出,啟發(fā)學(xué)生的探索求索思維。總之,通過(guò)這樣的原型系統(tǒng),讓學(xué)生親身參與方案制定、設(shè)計(jì)、調(diào)試,學(xué)生對(duì)FPGA實(shí)驗(yàn)與開(kāi)發(fā)將收到事半功倍的效果。
參考文獻(xiàn):
[1]趙金.運(yùn)動(dòng)控制技術(shù)綜合實(shí)驗(yàn)教程[M].武漢:華中科技大學(xué)出版社, 2010.
[2]李萍,厲虹,侯懷昌.電氣工程及其自動(dòng)化專業(yè)運(yùn)動(dòng)控制系統(tǒng)課程實(shí)驗(yàn)教學(xué)改革探討[J].教育理論與實(shí)踐, 2010(15): 61- 63.
[3]易德福,王小椿.基于FPGA與PC- 104的CNC多軸運(yùn)動(dòng)控制器設(shè)計(jì)[J].組合機(jī)床與自動(dòng)化加工技術(shù), 2006(1): 65- 68.
[4]尚雅層,雷兵豐,來(lái)躍深.基于DSP和FPGA的開(kāi)放式數(shù)控系統(tǒng)運(yùn)動(dòng)控制的設(shè)計(jì)與仿真[J].西安工業(yè)大學(xué)學(xué)報(bào), 2007 (2): 130- 134.
[5]閆華,左健民,汪木蘭.采用FPGA技術(shù)實(shí)現(xiàn)DDA插補(bǔ)算法的研究[J].現(xiàn)代制造工程, 2007(9): 51- 53.
[6]章明,馬偉,李濟(jì)順,等.基于DSP和FPGA的數(shù)控系統(tǒng)運(yùn)動(dòng)控制的設(shè)計(jì)[J].電工技術(shù), 2008(10): 43- 45.
[7]魏立軍.基于DSP和FPGA的數(shù)控系統(tǒng)研究與開(kāi)發(fā)[D].南京:南京航空航天大學(xué), 2008.
[8]擺銀龍,趙方,鄭小梅.基于DSP和FPGA的嵌入式同步控制器實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù), 2009(6): 28- 30.
[9]汪木蘭.基于FPGA/CPLD數(shù)控系統(tǒng)插補(bǔ)智能芯片設(shè)計(jì)[J].中國(guó)制造業(yè)信息化, 2006, 35(21): 23- 37.
[10]劉海平.基于FPGA數(shù)控精插補(bǔ)芯片的設(shè)計(jì)[D].南京:南京理工大學(xué), 2008.
[11]劉劍文,劉士榮,吳秋軒,等.基于FPGA的一種連續(xù)插補(bǔ)器的設(shè)計(jì)與實(shí)現(xiàn)[J].科技通報(bào), 2010, 26(5): 42- 46.
[12]楊雪峰.基于FPGA的運(yùn)動(dòng)控制卡的研究與開(kāi)發(fā)[D].南京:南京航空航天大學(xué), 2010.
[13]陸俊,陳安明.基于FPGA技術(shù)的高速數(shù)控DDA插補(bǔ)器的設(shè)計(jì)與研究[J].組合機(jī)床與自動(dòng)化加工技術(shù), 2010(10): 15- 19.
【責(zé)任編輯:任小平renxp90@163.com】
Software design and development of three- axis motion control based on FPGA
LINChuang- hua, CAI Chen- hui
(Department of Automation Engineering, Foshan University, Foshan 528000, China)
Abstract:According to the rapid development of FPGA market and increasing requirements of industrial applications, a 3- axle FPGA motion- control system for school experiments is designed. The system uses Altera’s cycloneIVE chipsets and Verilog HDLlanguage torealize the function ofmanymodules on the DE2- 115FPGA development board, including motor’s start and stop control, motor’s reversing control and speed control, PWM generation, the LCD displayand soon. The systemis helpful for students toknowthe development of FPGA, and alsoprovides a good reference for motion control course.
Keywords:FPGA; motion control; Verilog HDL
作者簡(jiǎn)介:林創(chuàng)華(1970-),男,廣東揭陽(yáng)人,佛山科學(xué)技術(shù)學(xué)院實(shí)驗(yàn)師。
基金項(xiàng)目:國(guó)家星火計(jì)劃資助項(xiàng)目(2013GA780052);廣東省教育廳特色創(chuàng)新資助項(xiàng)目(2014KTSCX156);佛山市科技發(fā)展專項(xiàng)資金資助項(xiàng)目(2011AA100021);佛山市產(chǎn)學(xué)研資助項(xiàng)目(2012HC100131);佛山科技創(chuàng)新平臺(tái)資助項(xiàng)目(2013AG10007);禪城區(qū)產(chǎn)學(xué)研資助項(xiàng)目(2012B1011,2013B1018);禪城區(qū)科技計(jì)劃資助項(xiàng)目(2013A1021)
收稿日期:2014-12-10
中圖分類號(hào):TP332.3
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1008- 0171(2015)04- 0039- 07
佛山科學(xué)技術(shù)學(xué)院學(xué)報(bào)(自然科學(xué)版)2015年4期