新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CPLD在時(shí)柵位移傳感器中的應(yīng)用

CPLD在時(shí)柵位移傳感器中的應(yīng)用

作者: 時(shí)間:2017-06-06 來(lái)源:網(wǎng)絡(luò) 收藏
基于CPLD的數(shù)字信號(hào)處理電路

智能時(shí)柵位移傳感器內(nèi)部基于CPLD的數(shù)字信號(hào)處理電路。電路采用雙MCU+CPLD結(jié)構(gòu)設(shè)計(jì),內(nèi)部嵌入主從式兩塊單片機(jī),副MCU負(fù)責(zé)數(shù)據(jù)采集與預(yù)處理工作,主MCU通過(guò)接口電路與外界實(shí)現(xiàn)數(shù)據(jù)交換。動(dòng)、定測(cè)頭感應(yīng)到的微弱信號(hào)經(jīng)放大、自動(dòng)增益控制、濾波和整形等預(yù)處理電路后,得到供數(shù)字電路處理的方波信號(hào)。兩路方波信號(hào)送入CPLD進(jìn)行處理,CPLD包括雙路比相器、脈沖當(dāng)量計(jì)量電路、計(jì)數(shù)電路、總線(xiàn)收發(fā)三態(tài)控制電路等4個(gè)功能模塊。

CPLD芯片選用Altera公司的MAX7000S系列器件EPM7128SLC84,它有128個(gè)邏輯宏單元,邏輯門(mén)數(shù)為2500門(mén),在MAX+PLUSII軟件環(huán)境下,采用VHDL和原理圖輸入相結(jié)合的方法進(jìn)行設(shè)計(jì)。設(shè)計(jì)輸入完成后,進(jìn)行整體的編譯和邏輯仿真,然后進(jìn)行轉(zhuǎn)換、布局、布線(xiàn)、延時(shí)仿真生成配置文件,最后以4引腳的JTAG接口方式通過(guò)ByteBlaster下載電纜對(duì)CPLD進(jìn)行在線(xiàn)編程(ISP),完成結(jié)構(gòu)功能配置,實(shí)現(xiàn)其硬件功能,制成專(zhuān)用芯片。為了避免器件內(nèi)的設(shè)計(jì)被他人復(fù)制和取出,可通過(guò)對(duì)MAX7128S內(nèi)部的一個(gè)保密位編程,對(duì)設(shè)計(jì)進(jìn)行加密。當(dāng)對(duì)器件重新編程時(shí),保密位連同其它的編程數(shù)據(jù)均能擦除和重寫(xiě)。

動(dòng)、定測(cè)頭方波信號(hào)分別從DO_INPUT和DI_INPUT端輸入CPLD,采樣信號(hào)INT0_OUT由定測(cè)頭信號(hào)DI_INPUT反相得到,通過(guò)雙路比相器獲取動(dòng)測(cè)頭信號(hào)DO_INPUT的上、下沿至采樣時(shí)刻的相位差信號(hào)。Fai_OUT1、Fai_OUT2信號(hào)表示插入高頻細(xì)分脈沖信號(hào)后的相位差信號(hào),高頻時(shí)鐘脈沖由CLK端輸入,通過(guò)2路帶允許端的20位同步計(jì)數(shù)器分別對(duì)插入的細(xì)分脈沖進(jìn)行計(jì)數(shù)。每一個(gè)脈沖所代表的角度大小由脈沖當(dāng)量計(jì)量電路來(lái)確定,用于計(jì)算脈沖當(dāng)量的Ti_OUT1信號(hào)由DI_INPUT信號(hào)二分頻得到。

EPM7128SLC84輸出信號(hào)INT0_OUT與副MCU第12腳P3.2相連,每一脈沖下降沿觸發(fā)副MCU中斷一次。通過(guò)對(duì)各信號(hào)邏輯時(shí)序的分析,可以看出:動(dòng)、定測(cè)頭方波信號(hào)頻率為50Hz,為保證時(shí)柵位移傳感器能正常工作,MCU必須每20ms中斷一次(若信號(hào)頻率為400Hz,中斷時(shí)間間隔為2.5ms),也就是說(shuō)MCU用于處理數(shù)據(jù)的時(shí)間只有20ms。MCU做多字節(jié)除法、乘法運(yùn)算時(shí),運(yùn)行時(shí)間較長(zhǎng),且用于單片機(jī)與計(jì)算機(jī)間數(shù)據(jù)通信的時(shí)間就至少需要10ms,因此20ms時(shí)間MCU無(wú)法處理完全部工作。處理時(shí)間不夠就會(huì)導(dǎo)致死機(jī),傳感器無(wú)法工作,實(shí)踐也證明了這一點(diǎn)。

解決這一問(wèn)題的方法通常是采取硬件分頻,信號(hào)分頻后,相應(yīng)周期加倍,供MCU處理數(shù)據(jù)的時(shí)間加長(zhǎng)。但在本設(shè)計(jì)中,無(wú)論是將動(dòng)、定測(cè)頭方波信號(hào)同時(shí)分頻或僅將引起MCU中斷的信號(hào)分頻,均無(wú)法保證同時(shí)采集到正確的3個(gè)數(shù)據(jù)。

基于此,本文提出采用“軟件分頻”來(lái)解決這一問(wèn)題,這也是采用雙MCU的關(guān)鍵原因之一。中斷信號(hào)INT0_OUT每20ms觸發(fā)副MCU中斷一次,每4次中斷采集一次數(shù)據(jù),前面3次中斷時(shí)副MCU通過(guò)程序判斷中斷次數(shù)而進(jìn)行相應(yīng)處理,為第4次中斷時(shí)采集數(shù)據(jù)作準(zhǔn)備,第4次中斷時(shí)在中斷服務(wù)程序中采集數(shù)據(jù),包括φ1、φ2和Ti等3個(gè)參數(shù)。其中,φ1、φ2和Ti分別代表一個(gè)信號(hào)周期內(nèi)插入Fai_OUT1、Fai_OUT2和Ti_OUT1中的時(shí)鐘脈沖個(gè)數(shù)。副MCU對(duì)數(shù)據(jù)進(jìn)行預(yù)處理后,通過(guò)P3.1腳觸發(fā)主MCU中斷,接收副MCU傳送的數(shù)據(jù),這樣,主MCU每80ms中斷一次,供主MCU處理數(shù)據(jù)的時(shí)間增加為80ms,相當(dāng)于4分頻,但并沒(méi)有改變各信號(hào)時(shí)序。這一思想在信號(hào)頻率提高到400Hz或更高后仍然適用,只需對(duì)軟件作少量改動(dòng)即可。

通過(guò)以上分析,不難看出:CPLD邏輯功能仿真波形為硬件電路和程序的正確設(shè)計(jì)與優(yōu)化提供了依據(jù),具有邏輯分析儀的功能,為設(shè)計(jì)者帶來(lái)了方便,這充分體現(xiàn)了采用CPLD設(shè)計(jì)數(shù)字電路的優(yōu)點(diǎn)。

總線(xiàn)收發(fā)三態(tài)控制電路實(shí)現(xiàn)副MCU在讀取φ1、φ2和Ti時(shí)分時(shí)復(fù)用20位數(shù)據(jù)總線(xiàn)D19~D0。副MCU每讀一個(gè)數(shù)據(jù),先通過(guò)使能端EN讓計(jì)數(shù)器停止計(jì)數(shù),再通過(guò)RD端打開(kāi)三態(tài)門(mén)讀取數(shù)據(jù),讀完數(shù)據(jù)后關(guān)閉三態(tài)門(mén),并通過(guò)CLR端將計(jì)數(shù)器清零,為下一次讀取數(shù)據(jù)做準(zhǔn)備。副MCU對(duì)采集到的數(shù)據(jù)進(jìn)行預(yù)處理后,送給主MCU。圖1中,副MCU的P3.0腳與主MCU的P2.0腳相連是為了實(shí)現(xiàn)數(shù)據(jù)傳輸過(guò)程中2塊MCU間的通信握手,數(shù)據(jù)準(zhǔn)備就緒后,主MCU打開(kāi)三態(tài)總線(xiàn)緩沖74LS244,從P0口讀取數(shù)據(jù)。

數(shù)據(jù)采集與預(yù)處理軟件設(shè)計(jì)

如前所述,數(shù)據(jù)采集與預(yù)處理在副MCU中斷0服務(wù)程序內(nèi)完成,程序流程圖如圖3所示。程序設(shè)計(jì)中采用了前面介紹的軟件分頻技術(shù),流程圖中φ代表不受預(yù)處理電路中整形芯片門(mén)限電壓影響的準(zhǔn)確相位角。

結(jié)束語(yǔ)

PM7128SLC84在智能時(shí)柵位移傳感器數(shù)字電路設(shè)計(jì)中取得了很好的應(yīng)用效果,實(shí)現(xiàn)了硬件設(shè)計(jì)軟件化,使用可編程邏輯器件技術(shù)避免了復(fù)雜的PCB布線(xiàn),帶來(lái)不僅在成本、開(kāi)發(fā)周期、可靠性等方面的優(yōu)勢(shì),而且大大增強(qiáng)了硬件模塊的柔性,通過(guò)編程來(lái)很方便地修改硬件電路結(jié)構(gòu),功耗也大大降低。但在使用CPLD器件時(shí)也發(fā)現(xiàn)了一些問(wèn)題,如EPM7128SLC84對(duì)信號(hào)毛刺很敏感,因此,對(duì)信號(hào)的前置處理和電路設(shè)計(jì)提出了更高要求。


評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉