基于SPCE061A和CPLD的電動自行車充電系統(tǒng)研制
隨著電子技術(shù)、可編程邏輯器件(FPGA,CPLD)、EDA技術(shù)的飛速發(fā)展,基于硬件編程語言的自上而下(TOP-TO-DOWN)設(shè)計方法給數(shù)字系統(tǒng)的開發(fā)設(shè)計帶來了革命性變革,僅使用單片機(jī)來實現(xiàn)系統(tǒng)控制的傳統(tǒng)方法正在被越來越多的以MCU+FPGA/CPLD為核心的最新設(shè)計理念取代。采用這種混合設(shè)計方案的最大優(yōu)點(diǎn)是兩者的優(yōu)勢互補(bǔ),電路結(jié)構(gòu)簡單,這給數(shù)字電路系統(tǒng)的設(shè)計帶來極大的方便。利用CPLD控制的靈活性很容易對電路進(jìn)行在線修改,實現(xiàn)各種復(fù)雜的數(shù)字邏輯控制,這極大地擴(kuò)展了單片機(jī)的功能。而且由于硬件編程語言的靈活性及CPLD具有的在系統(tǒng)編程(In-SystemProgram)特點(diǎn),大大縮短了系統(tǒng)開發(fā)研制周期?;谏鲜鏊枷耄邪l(fā)了基于SPCE061A和CPLD的電動自行車充電系統(tǒng)。
1 系統(tǒng)硬件設(shè)計
1.1 系統(tǒng)組成及功能
該充電系統(tǒng)由凌陽SPCE061A單片機(jī)、充電器、按鍵、CPLD、ACM12864液晶顯示器、上位機(jī)、語音電路等組成。充電器采用恒流、恒壓、浮充三階段充電方法對蓄電池進(jìn)行充電。SPCE061A單片機(jī)控制六個充電器對六個蓄電池同時進(jìn)行充電,同時檢測各個充電器的恒流、恒壓、浮充三個充電狀態(tài),并通過ACM12864液晶顯示器顯示各充電器的工作狀態(tài)。通過按鍵選擇各充電器的工作與停止,并可根據(jù)不同需要選擇快速充電工作方式或普通充電工作方式,對蓄電池進(jìn)行充電。系統(tǒng)上電進(jìn)入工作狀態(tài)后,當(dāng)單片機(jī)檢測到蓄電池已充滿的信號或發(fā)生其他緊急情況所產(chǎn)生的信號時,可以自動關(guān)閉充電器,實現(xiàn)充電器操作智能化。利用凌陽SPCE061A單片機(jī)的語音功能對充電過程中所出現(xiàn)的故障進(jìn)行語音提示,使設(shè)計更人性化,便于操作。充電系統(tǒng)可以和上位機(jī)進(jìn)行通訊,從而實現(xiàn)系統(tǒng)之間的聯(lián)網(wǎng),有利于系統(tǒng)功能的擴(kuò)充。其系統(tǒng)組成框圖如圖1所示。
1.2 液晶顯示電路的設(shè)計
顯示部分采用ACM12864C液晶顯示器,該模塊價格低??刂破鳛镵S0107和KS0108,工作溫度范圍:0℃~50℃,儲存溫度范圍:-20℃~70℃,自帶負(fù)電壓發(fā)生電路,單+5V供電,帶背光,可與各種微處理器直接接口,數(shù)據(jù)讀寫操作不受外部時鐘控制,不帶漢字庫,占空比為1/64,外部共有20條引腳來進(jìn)行外部接口。ACM12864C能夠充分滿足漢字顯示的要求。通過必要的程序設(shè)計,可實現(xiàn)在充電過程中通過對充電器恒流、恒壓、浮充等信號的采集,在ACM12864液晶顯示器上實時動態(tài)地顯示電池狀態(tài)。SPCE061A與ACM12864的接口如圖2所示。
1.3 鍵盤電路及I/O電路設(shè)計
本系統(tǒng)采用CPLD作為SPCE061A單片機(jī)和充電器的接口部分,實現(xiàn)I/O口擴(kuò)展,并完成鍵盤掃描功能。CPLD的使用,取代了一些專用集成電路,減少了系統(tǒng)的復(fù)雜性,提高了系統(tǒng)的集成度。本系統(tǒng)采用硬件電路來完成對鍵盤的掃描工作,當(dāng)有按鍵按下時,CPLD內(nèi)部狀態(tài)發(fā)生改變。按鍵彈起后,內(nèi)部狀態(tài)經(jīng)CPLD自動處理轉(zhuǎn)化為相應(yīng)的鍵值被送到輸出端口,供單片機(jī)掃描時取走鍵值。相對于軟件判別鍵盤工作狀態(tài),這樣不僅節(jié)省了SPCE061A的存儲空間,還極大地提高了系統(tǒng)的工作速度,更好地實現(xiàn)了實時性。
CPLD選用ALTERA公司生產(chǎn)的MAX7000S 系列中的EPM7128SLC84-15。該芯片共有84個引腳,采用EEPROM技術(shù)制作;內(nèi)含2 500個邏輯門,128個宏單元,時鐘工作頻率可達(dá)151.5MHz。通過CPLD對資源的整合,實現(xiàn)了用一片CPLD實現(xiàn)I/O電路、硬件掃描判別等,優(yōu)化了硬件的布局。如需改變系統(tǒng)的功能,只需改變相應(yīng)的源代碼而不是硬件結(jié)構(gòu),因而具有很大的靈活性。
2 系統(tǒng)軟件設(shè)計
2.1 主程序設(shè)計
本系統(tǒng)的軟件部分采用C語言和匯編語言混合編制而成,因而該程序具有功能強(qiáng)大、設(shè)計完備等特點(diǎn)。主程序主要完成如下功能:
(1)系統(tǒng)初始化和參數(shù)的設(shè)置;
(2)充電器三種工作狀態(tài)的檢測和顯示;
(3)控制各個充電器的工作和停止以及快速充電和普通充電兩種充電方式的選擇;
(4)蓄電池正反極性的判斷,極性接反時自動進(jìn)行語音報警;
(5)充電器充滿蓄電池時自動關(guān)閉充電器;出現(xiàn)異常情況時自動進(jìn)行語音報警;
(6)對快速充電時間長短進(jìn)行設(shè)定。
系統(tǒng)主程序流程圖如圖3所示。
2.2 語音播放程序設(shè)計
SPCE061A的D/A轉(zhuǎn)換通道的硬件實現(xiàn)大致有兩種方式,一種是直接采用數(shù)/模轉(zhuǎn)換器DAC方式,另一種是采用脈寬調(diào)制PWM驅(qū)動方式。SPCE061A音頻輸出的結(jié)構(gòu)就是由兩個DAC通道或一個PWM驅(qū)動通道構(gòu)成。這兩種實現(xiàn)方式實質(zhì)都為數(shù)/模轉(zhuǎn)換,都是將數(shù)字信號轉(zhuǎn)換為電流模擬信號輸出。SPCE061A的音頻輸出采用雙通道模/數(shù)轉(zhuǎn)換方式,即數(shù)字信號通過10位DAC轉(zhuǎn)換成3mA驅(qū)動的電流模擬信號輸出。語音提示輸出直接采用DAC通道,經(jīng)信號放大后,由揚(yáng)聲器輸出。語音播放流程圖如圖4所示。
程序編寫如下:
#INCLUDE “hardware.h”
# INCLUDE “S480.h”
Void Sound (unsigned int i)
{
SACM_S480_Initial(1);
SACM_S480_Volume(10);
SACM_S480_Play(i,1,0);
while(SACM_S480_Status()&0x0001);
{
SACM_S480_ServiceLoop();
}
SACM_S480_Stop();
}
2.3 CPLD程序設(shè)計
VerilogHDL語言是硬件描述語言,是描述硬件電路的功能、信號連接關(guān)系及定時關(guān)系的語言,通過語言編程來表示邏輯器件及系統(tǒng)的功能和行為。其具有設(shè)計技術(shù)齊全、方法靈活、支持廣泛、硬件描述能力強(qiáng)、與器件工藝無關(guān)、易于共享和復(fù)用等優(yōu)點(diǎn)。與VHDL相比,VerilogHDL是一種非常容易掌握的硬件描述語言,而掌握VHDL設(shè)計技術(shù)就比較困難。故采用VerilogHDL語言來設(shè)計接口電路,能充分利用VerilogHDL語言在系統(tǒng)級硬件描述上的優(yōu)點(diǎn)。
CPLD實現(xiàn)兩個多路選擇器和一個鍵盤掃描電路功能。程序各端口功能如表1所示。datain1由datain1[0]......datain1[17] 18位輸入端口組成,分為6組,每組3個端口。rs由rs[0]、rs[1]、rs[2]3位端口組成,最多可以表示8個2進(jìn)制數(shù)(本設(shè)計用到其中的6個)來表示端口選擇位。dataout1由 dataout1[0]、dataout1[1]、dataout1[2]3位組成,表示輸出端口。datain1、dataout1、rs組成一個多路選擇器,實現(xiàn)選擇輸入功能,rs的值決定選擇datain1的哪一組信號送給dataout1,由dataout1輸出。datain2由datain2[0]、 datain2[1]組成,表示輸入端口。dataout2由dataout2[0]......dataout2[11]12位輸出端口組成,分成6組,每組2位。同理,datain2、 dataout2、rs組成另一個多路選擇器,實現(xiàn)選擇輸出功能,rs的值決定選擇datain2的2位信號從dataout2的哪一組輸出。rt為控制脈沖,當(dāng)為上升沿時實現(xiàn)選擇輸入功能,當(dāng)為下降沿時實現(xiàn)選擇輸出功能。datain3為16位按鍵輸入口(低電平有效),每位代表一個按鍵。dataout3為4位按鍵值輸出端口,當(dāng)有按鍵按下時,經(jīng)CPLD內(nèi)部狀態(tài)發(fā)生改變,按鍵彈起后,內(nèi)部狀態(tài)經(jīng)CPLD自動處理轉(zhuǎn)化為相應(yīng)的鍵值從dataout3輸出(高電平有效)。如當(dāng)datain3位為1111111111111101時,表示2號鍵按下,dataout3將輸出0010,表示按鍵值為2。
3 CPLD仿真
從最初的電路設(shè)計思想到QuartusII的波形仿真、再到CPLD的芯片編程結(jié)束,開發(fā)設(shè)計流程圖如圖5所示。
在QuartusII 平臺上,對VerilogHDL程序編譯后,用Simulator對之進(jìn)行時序仿真,得到如圖6所示的結(jié)果。
由圖中可以看到各預(yù)定功能都得到了實現(xiàn),如datain3為111111011111時,dataout3輸出為0110,仿真結(jié)果完全符合電路的要求。
基于SPCE061A+CPLD設(shè)計的電動自行車充電系統(tǒng),簡化了系統(tǒng)軟硬件設(shè)計,提高了電路的穩(wěn)定性和可靠性;使系統(tǒng)設(shè)計靈活、開發(fā)周期短、集成性更強(qiáng),同時使系統(tǒng)易于升級和擴(kuò)展。經(jīng)檢驗測試,各項技術(shù)指標(biāo)均達(dá)到了設(shè)計要求。
參考文獻(xiàn)
1 張鵬舉,李樹華,竇海峰.用單片機(jī)及CPLD實現(xiàn)的多功能控制系統(tǒng)設(shè)計.內(nèi)蒙古大學(xué)學(xué)報(自然科學(xué)版),2005;36(3):316~320
2 李向舜,劉明慧.基于CPLD技術(shù)的AD轉(zhuǎn)換器接口電路設(shè)計.壓電與聲光,2005;27(4):385~389
3 李春雷,王祖強(qiáng).基于CPLD的電子存包系統(tǒng)的設(shè)計與實現(xiàn).電子技術(shù)應(yīng)用,2005;31(7):69~72
4 李小波,孫志勇,劉春生.基于CPLD和單片機(jī)的低頻信號源設(shè)計.儀器技術(shù)與傳感器, 2005;(11):46~49