基于CPLD+MCU的新型光柵數(shù)顯系統(tǒng)設(shè)計(jì)
3.3 clk的取值
由于CPLD的采樣時(shí)鐘clk必須大于8倍光柵尺輸出的正交脈沖,因此系統(tǒng)不會(huì)丟失信號(hào)。該系統(tǒng)設(shè)計(jì)使用40 MHz有源晶體振蕩器作為CPLD的采樣時(shí)鐘源,可記錄的最大光柵傳感器輸出信號(hào)頻率為5 MHz。如果使用50線/mm的光柵尺,經(jīng)過CPLD的四裂相細(xì)分后,計(jì)算該光柵尺接該系統(tǒng)的最大不漏數(shù)加工速度為20 μm×5 MHz=100 m/s,最小分辨率為5μm。遠(yuǎn)遠(yuǎn)超出機(jī)床運(yùn)行的極限速度,完全滿足實(shí)際需求。
3.4 EPM240簡(jiǎn)介
選用Altera公司的 EPM240作為CPLD,EPM240是MAX II系列器件中的一員。MAX II CPLD系列的體系結(jié)構(gòu)使其在所有CPLD系列器件的單位I/O引腳的功耗和成本最低;支持高達(dá)300 MHz的內(nèi)部時(shí)鐘頻率,面向通用低密度邏輯應(yīng)用,MAX II CPLD可替代高功耗和高成本ASSP以及標(biāo)準(zhǔn)邏輯CPLD。
EPM240含有240個(gè)邏輯單元(LE),等效于192個(gè)宏單元;8 192 bit的用戶Flash存儲(chǔ)器,可滿足用戶小容量信息存儲(chǔ)要求;最大用戶I/O數(shù)為80,最快速度為4.5 ns,完全滿足系統(tǒng)設(shè)計(jì)要求。
4 MCU掉電數(shù)據(jù)存儲(chǔ)
掉電數(shù)據(jù)存儲(chǔ)是系統(tǒng)設(shè)計(jì)的另一重要功能,要求高可靠性。系統(tǒng)在掉電時(shí)應(yīng)保存光柵尺的當(dāng)前位置信息,下次開機(jī)時(shí)通過調(diào)用上次掉電時(shí)保存的位置信息恢復(fù)系統(tǒng)。因此,掉電瞬間,掉電報(bào)警電路將迅速響應(yīng),向MCU發(fā)出報(bào)警信號(hào);MCU檢測(cè)到報(bào)警信號(hào)后,馬上進(jìn)行相應(yīng)處理,將當(dāng)時(shí)光柵尺的當(dāng)前位置信息存入EEPROM。其硬件電路如圖4所示。
為了提高M(jìn)CU的掉電響應(yīng)速度,增強(qiáng)系統(tǒng)可靠性,系統(tǒng)設(shè)計(jì)采用新的增強(qiáng)型51單片機(jī)STC-89C516RD。該器件具有1 KB RAM和高達(dá)64 KB大容量ROM,ISP功能,指令周期有6clock和12clock兩種可選模式。使用20 MHz晶體振蕩器,采用6clock模式燒寫時(shí),單指令周期的程序執(zhí)行時(shí)間僅為0.3μs,比普通51單片機(jī)在最高24 MHz晶體振蕩器下的運(yùn)行速度要快得多。因此,大大縮短了掉電數(shù)據(jù)存儲(chǔ)程序的執(zhí)行時(shí)間。
4.1 掉電報(bào)警電路
選用超小型高精度電壓檢測(cè)器S80848,內(nèi)部檢測(cè)電壓固定為4.8 V,精度為±2%,最大響應(yīng)時(shí)間為60μs。S80848采用標(biāo)準(zhǔn)5 V供電,電源正常時(shí)輸出高電平;當(dāng)電源電壓降至4.8 V時(shí),則輸出低電平。將S80848的輸出腳連接至MCU的INT0,并將MCU的INT0設(shè)置為電平觸發(fā)。因此,電源電壓只要低于4.8 V就會(huì)使MCU進(jìn)入INT0中斷,MCU在中斷程序中保存位置信息。
4.2 EEPROM選取
當(dāng)MCU對(duì)EEPROM的寫操作完成后,EEP-ROM需用10 ms的最大自寫入時(shí)間將信息寫入存儲(chǔ)單元。為了使用更多的時(shí)間用于EEPROM自寫入,選用低壓EEPROM,即AT24C64-2.7 V,其工作電壓為5.5 V~2.7 V,容量為64 KB,每頁(yè)為32 B,最大寫入次數(shù)為1 000 000。
4.3 掉電時(shí)間計(jì)算
選用工作電壓為4.5 V~5.5 V的STC89C516RD。當(dāng)電源電壓降至4.5 V以下時(shí),MCU不能可靠工作。MCU的INT0的中斷服務(wù)程序只能使用電源電壓從4.8 V降至4.5 V的這段時(shí)間,所有處理必須在該段時(shí)間內(nèi)完成。因此中斷程序設(shè)計(jì)時(shí)應(yīng)盡量考慮使其執(zhí)行時(shí)間最短,中斷應(yīng)先將所有存儲(chǔ)的數(shù)據(jù)存入一個(gè)數(shù)組,然后將該數(shù)組的所有元素寫入AT24C64,當(dāng)然該數(shù)組的元素?cái)?shù)必須小于AT24C64一頁(yè)的長(zhǎng)度,即必須小于32 B。
當(dāng)輸出電壓為5 V時(shí),最大電流為Imax=0.8 A,等效負(fù)載R=5/I=6.25 Ω,與5 V電源并聯(lián)的電容C=4 700μF,則系統(tǒng)時(shí)間常數(shù)為τ=RC=0.029 s。設(shè)發(fā)生掉電t=0,根據(jù)公式u(t)=Vccexp(-t/τ)=5exp(-t/0.029)可知:t=1 183μs時(shí),電源電壓Vcc從5 V降至4.8 V;t=3 055μs時(shí),Vcc降至4.5 V;t=17 869μs時(shí),Vcc降到2.7 V。MCU的中斷服務(wù)程序時(shí)間為3 055-1 183=1872μs,故大于實(shí)測(cè)中斷服務(wù)程序時(shí)間1 350μs;EEPROM自寫入有效時(shí)間為17 869-3 055=14 814μs,故完全滿足EEPROM寫入要求。
4.4 中斷服務(wù)程序
為了避免MCU頻繁寫入EEPROM,使用次數(shù)超出最大有效寫入次數(shù),中斷程序?qū)χ袛噍斎胍_上的電平進(jìn)行必要濾波。濾波算法為:系統(tǒng)進(jìn)入中斷程序后,首先關(guān)閉中斷,然后連續(xù)10次判斷INT0的電平,如果每次判斷得到的電平 值都為低,則繼續(xù)往下執(zhí)行中斷服務(wù)程序,只要有一次為高則立即退出中斷服務(wù)程序。完成寫入數(shù)據(jù),要確保INT0上的低電平解除后再返回中斷,否則等待,直至低電平解除。中斷服務(wù)程序流程圖如圖5所示。
5 結(jié)束語
詳細(xì)介紹光柵數(shù)顯系統(tǒng)設(shè)計(jì),采用CPLD可大大簡(jiǎn)化系統(tǒng)硬件設(shè)計(jì),降低系統(tǒng)成本,增強(qiáng)系統(tǒng)可靠性和靈活性。選用STC89C516RD,可避免擴(kuò)展外部存儲(chǔ)器,從而簡(jiǎn)化單片機(jī)的外圍電路設(shè)計(jì)。
參考文獻(xiàn)
[1]凌 睿,高富強(qiáng). 基于CPLD的光柵尺位移測(cè)量系統(tǒng)[J].自動(dòng)化與儀器儀表,2005(1):40-42.
[2]Altera.Behavioral Counter[DB/OL].http://www.altera.com.cn/support/examples/vhdl/v_counters.html,2006.
[3]Altera.MAXII器件簡(jiǎn)介[DB/OL]. http://www.altera.com.cn/products/devices/cpld/max2/mx2-index.jsp,2007.
[4]宏晶科技. STC89C156RD Datasheet[DB/OL].http://www.mcu-memory.com/datasheet/stc/STC89C51-?? MCU.pdf, 2006.
[5]Seiko Instrument. S-808 Series Datasheet[DB/OL].http://www.beejo.co.kr/imge/pdf/s808-e.pdf,2006.
評(píng)論