專利名稱:Arm+fpga組成的計(jì)數(shù)器裝置及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)數(shù)器裝置及其實(shí)現(xiàn)方法,特別涉及一種可編程控制器(PLC)的計(jì)數(shù)器裝置及其實(shí)現(xiàn)方法。
背景技術(shù):
隨著科學(xué)技術(shù)的不斷發(fā)展,可編程控制器(以下簡稱PLC)作為一種專為工業(yè)環(huán)境應(yīng)用而設(shè)計(jì)的電子系統(tǒng),愈來愈廣泛地被應(yīng)用。在PLC的應(yīng)用系統(tǒng)中,使用量較大的是計(jì)數(shù)周期大于PLC用戶程序掃描周期的計(jì)數(shù)器,即普通計(jì)數(shù)器,這種普通計(jì)數(shù)器的分類方法常有兩種,從停電是否保存計(jì)數(shù)值的角度來分類,分為保持型計(jì)數(shù)器和非保持型計(jì)數(shù)器;從計(jì)數(shù)方向的角度,分為增計(jì)數(shù)器和增/減可控計(jì)數(shù)器,增/減可控計(jì)數(shù)器是處于增計(jì)數(shù)還是處于減計(jì)數(shù)由指定的特殊寄存器狀態(tài)來控制,計(jì)數(shù)器屬于哪種類型則由事先設(shè)計(jì)好的計(jì)數(shù)器編號確定,每個計(jì)數(shù)器有一個軟觸頭與該計(jì)數(shù)器編號對應(yīng),如果計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值與計(jì)數(shù)器設(shè)置值相等則計(jì)數(shù)器停止計(jì)數(shù),計(jì)數(shù)器的軟觸頭處于動合狀態(tài),直到對計(jì)數(shù)器進(jìn)行復(fù)位,計(jì)數(shù)器的軟觸頭恢復(fù)常態(tài),計(jì)數(shù)器在其他狀態(tài)下其軟觸頭處于常態(tài)。通常,上述計(jì)數(shù)器是通過如下方法來實(shí)現(xiàn)PLC用戶程序執(zhí)行某一個計(jì)數(shù)器軟元件輸出指令時,首先根據(jù)輸出指令給定的計(jì)數(shù)器編號判斷是增計(jì)數(shù)器還是增/減可控計(jì)數(shù)器,對于增/減可控計(jì)數(shù)器需要判斷是處于增計(jì)數(shù)狀態(tài)還是減計(jì)數(shù)狀態(tài),依據(jù)計(jì)數(shù)器的受控情況還需進(jìn)一步判斷計(jì)數(shù)器是處于失電還是得電狀態(tài),如果處于得電狀態(tài),需要判斷計(jì)數(shù)條件是否滿足,如果計(jì)數(shù)條件不滿足,PLC用戶程序可以不對該計(jì)數(shù)器作任何操作,如果計(jì)數(shù)條件滿足需要將該計(jì)數(shù)器的計(jì)數(shù)動態(tài)參數(shù)單元中的值進(jìn)行加1或減1計(jì)算,然后與該計(jì)數(shù)器的設(shè)置值進(jìn)行比較,如果計(jì)數(shù)動態(tài)值小于/大于設(shè)置值,設(shè)置已得電計(jì)數(shù)的標(biāo)志,如果相等,則設(shè)置該計(jì)數(shù)器軟觸頭單元狀態(tài)為“1”,如果處于失電狀態(tài),清得電計(jì)數(shù)的標(biāo)志; PLC用戶程序在執(zhí)行某一個計(jì)數(shù)器的復(fù)位指令時,需要進(jìn)行以下操作清該計(jì)數(shù)器得電計(jì)數(shù)的標(biāo)志,清該計(jì)數(shù)器的軟觸頭單元內(nèi)容為“0”,以及清該計(jì)數(shù)器動態(tài)參數(shù)單元內(nèi)容。PLC執(zhí)行計(jì)數(shù)器輸出指令時,若計(jì)數(shù)器處于得電且計(jì)數(shù)條件滿足,進(jìn)行加1/減1操作之后與計(jì)數(shù)器計(jì)數(shù)的設(shè)置值相等時需要較多的操作,具體為根據(jù)輸出指令給定的計(jì)數(shù)器編號判斷計(jì)數(shù)器類型的步驟需要一到二次;需要判斷一次得電或失電的狀態(tài);如果是得電狀態(tài)還需要判斷是否滿足計(jì)數(shù)條件,若滿足計(jì)數(shù)條件需要加1 一次/減1 一次,需要判斷一次是否等于設(shè)置值,如果計(jì)數(shù)動態(tài)值等于設(shè)置值,還需設(shè)置該計(jì)數(shù)器軟觸頭單元狀態(tài)為 “1”;PLC完成執(zhí)行輸出命令的操作,需要判斷四次/五次,加1/減1 一次,設(shè)置位單元狀態(tài)一次,共計(jì)需要操作八次/九次。操作最少次數(shù)的是繼電器得電不滿足計(jì)數(shù)的狀態(tài),只需判斷二次/三次,增/減可控計(jì)數(shù)器的加1和減1操作采用補(bǔ)碼,其計(jì)數(shù)動態(tài)參數(shù)值與計(jì)數(shù)設(shè)置值大小的比較應(yīng)用補(bǔ)碼進(jìn)行比較,或?qū)⒀a(bǔ)碼轉(zhuǎn)換成原碼再進(jìn)行比較。執(zhí)行計(jì)數(shù)器復(fù)位指令時,清標(biāo)志二次,清數(shù)據(jù)一次或清數(shù)據(jù)二次;計(jì)數(shù)器在各種運(yùn)行狀態(tài)下,其執(zhí)行計(jì)數(shù)器指令操作步數(shù)不一樣,在PLC用戶程序中,計(jì)數(shù)器使用的數(shù)量越多,則PLC用戶程序的執(zhí)行周期時間變化越大,執(zhí)行計(jì)數(shù)器輸出指令占用時間也越長,導(dǎo)致影響PLC用戶程序的執(zhí)行速度,延長了 PLC用戶程序的執(zhí)行周期。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種執(zhí)行速度快、能實(shí)現(xiàn)對數(shù)量眾多的計(jì)數(shù)器進(jìn)行計(jì)數(shù)控制的ARM+FPGA組成的計(jì)數(shù)器裝置,以克服上述已有技術(shù)的不足之處。為實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案為
一種ARM+FPGA組成的計(jì)數(shù)器裝置,是以嵌入式ARM微處理器為控制核心、以FPGA進(jìn)行計(jì)數(shù)處理,包括ARM控制模塊I、FPGA計(jì)數(shù)器模塊III、存儲器模塊II、SDRAM掉電保護(hù)模塊 VI、電源模塊V以及雙口 RAM模塊IV ;ARM控制模塊I分別與上述存儲器模塊II、FPGA計(jì)數(shù)器模塊III、雙口 RAM模塊IV、SDRAM掉電保護(hù)模塊VI及電源模塊V連接,以嵌入式ARM微處理器為控制核心,構(gòu)建嵌入式實(shí)時操作系統(tǒng),進(jìn)行多任務(wù)管理和通信管理,實(shí)現(xiàn)對裝置中各個模塊信息的處理和控制;存儲器模塊II用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件、執(zhí)行用戶程序的處理信息、以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;雙口 RAM模塊IV分別與FPGA計(jì)數(shù)器模塊III和ARM控制模塊I連接,以實(shí)現(xiàn)ARM控制模塊I與FPGA計(jì)數(shù)器模塊III之間的數(shù)據(jù)傳輸;FPGA計(jì)數(shù)器模塊III用于判斷計(jì)數(shù)器的類型,實(shí)施與計(jì)數(shù)設(shè)定值的比較及計(jì)數(shù)運(yùn)算,通過對雙口 RAM模塊IV的讀寫控制,將計(jì)數(shù)器的狀態(tài)傳送至ARM控制模塊I ;SDRAM掉電保護(hù)模塊VI與FPGA計(jì)數(shù)器模塊III連接,用于避免在電源切換過程中存儲器內(nèi)容的變化,并應(yīng)用其中的電源為動態(tài)參數(shù)存儲器供電;電源模塊V為上述ARM控制模塊I、存儲器模塊II、FPGA計(jì)數(shù)器模塊IILSDRAM掉電保護(hù)模塊VI及雙口 RAM模塊IV提供變壓電源。由以上方案可見,本發(fā)明以嵌入式ARM微處理器為控制模塊,F(xiàn)PGA為計(jì)數(shù)處理模塊構(gòu)成ARM+FPGA計(jì)數(shù)器裝置,采用FPGA實(shí)現(xiàn)計(jì)數(shù)器的各種處理操作,無論計(jì)數(shù)器裝置中的計(jì)數(shù)器數(shù)量多少與否,其占用嵌入式ARM微處理器執(zhí)行用戶程序的時間都非常少,因此,可以應(yīng)用于開發(fā)可編程控制器以及大規(guī)模的計(jì)數(shù)器;同時,由于對計(jì)數(shù)器的操作,如計(jì)數(shù)功能控制、計(jì)數(shù)器狀態(tài)設(shè)置等,均由FPGA計(jì)數(shù)器模塊III完成,不占用PLC用戶程序執(zhí)行的時間,大大提高了計(jì)數(shù)器裝置的反應(yīng)速度;無論計(jì)數(shù)器處于何種運(yùn)行狀態(tài),ARM控制模塊I對每個同類型的計(jì)數(shù)器所執(zhí)行指令的操作次數(shù)是基本相同的,減少了執(zhí)行有關(guān)計(jì)數(shù)器指令時對PLC用戶程序執(zhí)行周期變化的影響。其進(jìn)一步技術(shù)方案是該ARM+FPGA組成的計(jì)數(shù)器裝置中的SDRAM掉電保護(hù)模塊VI 包括相互連接的SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器和SDRAM掉電保護(hù)電路,該SDRAM掉電保護(hù)模塊VI在電源切換過程中應(yīng)用SDRAM掉電保護(hù)電路的電源為SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器供電,以避免SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器內(nèi)容發(fā)生變化。由以上方案可見,由于計(jì)數(shù)器裝置中的計(jì)數(shù)動態(tài)參數(shù)由SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器進(jìn)行存儲,計(jì)數(shù)操作由FPGA計(jì)數(shù)器模塊III處理,該FPGA計(jì)數(shù)器模塊III從雙口 RAM模塊 IV中接收ARM控制模塊I發(fā)出的控制處理指令以進(jìn)行循環(huán)操作,因此,計(jì)數(shù)器的數(shù)量只受 SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器、計(jì)數(shù)器軟觸頭位單元和雙口 RAM模塊IV中容量和地址線的限制,只要增加SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器、計(jì)數(shù)器軟觸頭位單元和雙口 RAM模塊IV中的存儲器容量,以及增加地址線的根數(shù),計(jì)數(shù)器的個數(shù)可以成倍數(shù)的增加,其計(jì)數(shù)器裝置設(shè)置的計(jì)數(shù)器數(shù)量能夠達(dá)到數(shù)百個乃至千余個,且不需要在ARM控制模塊I的方法中編制計(jì)數(shù)參數(shù)的處理過程,只是將每個計(jì)數(shù)器作為普通存儲單元進(jìn)行讀寫和判斷操作,本發(fā)明適合需要數(shù)量眾多計(jì)數(shù)器計(jì)數(shù)與計(jì)數(shù)控制的系統(tǒng)需求,以及對計(jì)數(shù)精度要求很高的系統(tǒng),尤其適應(yīng)于PLC控制系統(tǒng)。其更進(jìn)一步技術(shù)方案是ARM控制模塊I包括嵌入式ARM微處理器、人機(jī)交互電路、控制電路、復(fù)位電路和JTAG調(diào)試接口電路;嵌入式ARM微處理器作為ARM控制模塊I的控制核心,分別與上述人機(jī)交互電路、控制電路、復(fù)位電路和JTAG調(diào)試接口電路連接,進(jìn)行多任務(wù)管理和通信管理,以實(shí)現(xiàn)對上述各電路的信息處理和控制;人機(jī)交互電路用于執(zhí)行系統(tǒng)的控制命令、控制參數(shù)的輸入以及系統(tǒng)各種參數(shù)的人機(jī)界面控制;控制電路用于系統(tǒng)數(shù)據(jù)采集及控制驅(qū)動;復(fù)位電路為系統(tǒng)電路提供復(fù)位信號JTAG調(diào)試接口電路提供調(diào)試接口,該接口與外接電路相連,以實(shí)現(xiàn)編程裝置對ARM控制模塊I的軟硬件調(diào)試。由以上方案可見,ARM控制模塊I對于PLC用戶程序使用的每個計(jì)數(shù)器,當(dāng)程序執(zhí)行某個計(jì)數(shù)器軟元件輸出指令時,首先由嵌入式ARM微處理器判斷該計(jì)數(shù)器的類型、所處的工作狀態(tài),然后從雙口 RAM模塊IV將該計(jì)數(shù)器參數(shù)存儲單元中的內(nèi)容讀入ARM控制模塊 I中并設(shè)置運(yùn)行狀態(tài)標(biāo)志,再傳輸?shù)诫p口 RAM模塊IV的該計(jì)數(shù)器參數(shù)存儲單元中,PLC用戶程序執(zhí)行時,相當(dāng)于將每個計(jì)數(shù)器只進(jìn)行讀寫和判斷操作;當(dāng)PLC用戶程序執(zhí)行應(yīng)用某個計(jì)數(shù)器軟觸頭信息進(jìn)行處理時,只需要從雙口 RAM模塊IV中讀取該計(jì)數(shù)器軟觸頭的位存儲單元內(nèi)容,如此,大大提高了運(yùn)行速度。
其更進(jìn)一步技術(shù)方案是FPGA計(jì)數(shù)器模塊III包括計(jì)數(shù)器控制器、計(jì)數(shù)器軟觸頭位單元和FPGA內(nèi)部總線;計(jì)數(shù)器控制器是FPGA計(jì)數(shù)器模塊III的控制核心,其通過FPGA內(nèi)部總線分別與計(jì)數(shù)器軟觸頭位單元、SDRAM掉電保護(hù)模塊VI以及雙口 RAM模塊IV連接,并通過雙口 RAM模塊IV與ARM控制模塊I連接;計(jì)數(shù)器控制器從ARM控制模塊I獲取計(jì)數(shù)器的運(yùn)行狀態(tài)、類型、參數(shù)信息、復(fù)位信息以及計(jì)數(shù)實(shí)時參數(shù)讀取命令,根據(jù)上述計(jì)數(shù)器的運(yùn)行狀態(tài)、各類信息及參數(shù)進(jìn)行判斷并進(jìn)行相應(yīng)處理、并將計(jì)數(shù)器處理的結(jié)果狀態(tài)傳輸給雙口 RAM 模塊IV ;計(jì)數(shù)器軟觸頭位單元模塊為計(jì)數(shù)器軟觸頭狀態(tài)的存放空間,可實(shí)現(xiàn)字尋址和位尋址。由以上方案可見,本發(fā)明采用FPGA進(jìn)行計(jì)數(shù)器功能處理,計(jì)數(shù)器控制器從ARM控制模塊I獲得計(jì)數(shù)器運(yùn)行和計(jì)數(shù)設(shè)置參數(shù)的信息或復(fù)位信息,然后據(jù)此對計(jì)數(shù)器的運(yùn)行實(shí)施計(jì)數(shù)控制,其結(jié)果再傳輸?shù)诫p口 RAM模塊該計(jì)數(shù)器參數(shù)存儲單元中,PLC用戶程序執(zhí)行時,相當(dāng)于將每個計(jì)數(shù)器只進(jìn)行讀、寫和判斷操作;另一方面,計(jì)數(shù)器的計(jì)數(shù)運(yùn)行操作、計(jì)數(shù)器軟觸頭狀態(tài)的設(shè)置由FPGA計(jì)數(shù)器模塊完成,不占用PLC用戶程序執(zhí)行的時間,提高了裝置的反應(yīng)速度。其更進(jìn)一步技術(shù)方案是,存儲器模塊II包括分別與ARM控制模塊I連接的Nor FLASH存儲器、Nand FLASH存儲器和SDRAM存儲器;Nor FLASH存儲器用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件;Nand FLASH存儲器用于存放執(zhí)行用戶程序;SDRAM存儲器用于存放計(jì)數(shù)器裝置的處理和通信信息,并為系統(tǒng)運(yùn)行和通信數(shù)據(jù)處理提供空間。由以上方案可見,采用Nor FLASH存儲器、Nand FLASH存儲器和SDRAM存儲器分別存儲代碼映像文件、存放處理信息和提供處理空間,計(jì)數(shù)器裝置在運(yùn)行時只需要從相應(yīng)的存儲器中讀數(shù)據(jù)或?qū)憯?shù)據(jù),避免由于各種操作集中在某一存儲器而造成的數(shù)據(jù)沖突情況, 從而提高了計(jì)數(shù)器裝置的運(yùn)行速度。
本發(fā)明的另一目的是提供一種應(yīng)用ARM+FPGA組成的計(jì)數(shù)器裝置來實(shí)現(xiàn)數(shù)量眾多的計(jì)數(shù)器的方法,該方法是以ARM控制模塊I中的嵌入式ARM微處理器為控制核心,F(xiàn)PGA 計(jì)數(shù)器模塊III實(shí)現(xiàn)計(jì)數(shù)處理,應(yīng)用雙口 RAM模塊IV實(shí)現(xiàn)ARM控制模塊I和FPGA計(jì)數(shù)器模塊 III之間的數(shù)據(jù)傳輸;首先由ARM控制模塊I中的嵌入式ARM微處理器進(jìn)行初始化處理,然后 ARM控制模塊I根據(jù)初始化處理的結(jié)果對相應(yīng)的計(jì)數(shù)器進(jìn)行控制操作,并通過雙口 RAM模塊IV實(shí)現(xiàn)對FPGA計(jì)數(shù)器模塊III的控制,F(xiàn)PGA計(jì)數(shù)器模塊III根據(jù)ARM控制模塊I發(fā)出的控制命令對計(jì)數(shù)器進(jìn)行相應(yīng)的控制處理;存儲器模塊II存儲目標(biāo)代碼映像文件、處理信息以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;電源模塊V在整個處理過程中為上述ARM控制模塊I、存儲器模塊II、FPGA計(jì)數(shù)器模塊III及雙口 RAM模塊IV提供變壓電源;具體包括初始化處理步驟、ARM控制步驟和FPGA控制步驟;初始化處理步驟是由ARM控制模塊I中的嵌入式ARM微處理器對雙口 RAM的每個存儲單元清零,在每次啟動PLC用戶程序時將SDRAM 計(jì)數(shù)器動態(tài)參數(shù)存儲器中非保持型計(jì)數(shù)器的動態(tài)參數(shù)存儲單元清零,并將計(jì)數(shù)器的參數(shù)、 狀態(tài)信息等傳輸?shù)诫p口 RAM模塊IV ;ARM控制步驟是由ARM控制模塊I根據(jù)上述初 始化處理的結(jié)果對其中任一使用的計(jì)數(shù)器進(jìn)行控制處理,并通過雙口 RAM模塊IV實(shí)現(xiàn)對FPGA計(jì)數(shù)器模塊III的控制操作;FPGA控制步驟是由FPGA計(jì)數(shù)器模塊III根據(jù)ARM控制模塊I發(fā)出的控制命令進(jìn)行計(jì)數(shù)器處理操作。由以上方案可見,本發(fā)明中采用ARM控制模塊I根據(jù)PLC用戶程序執(zhí)行與計(jì)數(shù)器有關(guān)的指令來進(jìn)行判斷處理與數(shù)據(jù)傳輸,對于PLC用戶程序使用的每個計(jì)數(shù)器,當(dāng)程序執(zhí)行某個計(jì)數(shù)器軟元件輸出或復(fù)位指令時,由ARM控制模塊I中的嵌入式ARM微處理器首先判斷該計(jì)數(shù)器的工作狀態(tài),然后從雙口 RAM模塊IV將該計(jì)數(shù)器參數(shù)存儲單元中的內(nèi)容讀入 ARM控制模塊I中,設(shè)置運(yùn)行狀態(tài)標(biāo)志,再傳輸?shù)诫p口 RAM模塊IV該計(jì)數(shù)器參數(shù)存儲單元中,PLC用戶程序執(zhí)行時,相當(dāng)于將每個計(jì)數(shù)器只進(jìn)行判斷和讀寫操作;計(jì)數(shù)器的計(jì)數(shù)處理過程不占用PLC用戶程序執(zhí)行的時間,大大提高了裝置的運(yùn)行速度;計(jì)數(shù)器裝置能夠按照 ARM控制模塊I讀取計(jì)數(shù)器動態(tài)參數(shù)的命令讀取計(jì)數(shù)器的動態(tài)參數(shù);同時,計(jì)數(shù)器裝置增加SDRAM動態(tài)參數(shù)存儲器和計(jì)數(shù)器軟觸頭位單元和雙口 RAM模塊IV的容量以及地址線的根數(shù),還可增加計(jì)數(shù)器的數(shù)量;而且不需要在ARM的過程中編制計(jì)數(shù)運(yùn)算和處理過程,只是將每個計(jì)數(shù)器作為普通存儲單元進(jìn)行讀寫和判斷操作,適合需要數(shù)量眾多計(jì)數(shù)器計(jì)數(shù)與計(jì)數(shù)控制的系統(tǒng)需求,以及對計(jì)數(shù)精度要求很高的系統(tǒng),尤其適應(yīng)于PLC控制系統(tǒng)。
圖1是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第一實(shí)施例的系統(tǒng)結(jié)構(gòu)框圖; 圖2是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第一實(shí)施例的電路結(jié)構(gòu)框圖3是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第一實(shí)施例的FPGA計(jì)數(shù)器模塊的結(jié)構(gòu)框
圖4是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第一實(shí)施例的計(jì)數(shù)器參數(shù)32位字長單元結(jié)構(gòu)示意圖5是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置的雙口 RAM模塊的存儲區(qū)分配示意圖; 圖6是本發(fā)明之實(shí)現(xiàn)計(jì)數(shù)器裝置的方法中ARM編譯PLC用戶程序?qū)δ骋粋€計(jì)數(shù)器處理操作流程圖;圖 是本發(fā)明之實(shí)現(xiàn)計(jì)數(shù)器裝置的方法中ARM對某一個計(jì)數(shù)器處理操作流程圖; 圖8是本發(fā)明之實(shí)現(xiàn)計(jì)數(shù)器裝置的方法中計(jì)數(shù)器控制器對計(jì)數(shù)器控制的流程圖; 圖9是本發(fā)明之實(shí)現(xiàn)計(jì)數(shù)器裝置的方法中計(jì)數(shù)器控制器對增/減可控計(jì)數(shù)器控制的流程圖10是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第二實(shí)施例的系統(tǒng)結(jié)構(gòu)框圖; 圖11是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第二實(shí)施例的電路結(jié)構(gòu)框圖; 圖12是本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置第二實(shí)施例的FPGA計(jì)數(shù)器結(jié)構(gòu)示意圖。圖中
I一ARM控制模塊,II一存儲器模塊,III一FPGA計(jì)數(shù)器模塊,IV—雙口 RAM模塊,V—電源模塊,VI—SDRAM掉電保護(hù)模塊;
II一嵌入式ARM微處理器,12—人機(jī)交互電路,13—控制電路,14一復(fù)位電路,15— JTAG調(diào)試接口電路;
21—Nor FLASH 存儲器,22 — Nand FLASH 存儲器,23 — SDRAM 存儲器; 31—計(jì)數(shù)器控制器,32—計(jì)數(shù)器軟觸頭位單元; 51—電壓轉(zhuǎn)換電路,52—外部電源;
61—SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器,62— SDRAM掉電保護(hù)電路; 其余編號意義參見說明書實(shí)施例。下面結(jié)合實(shí)施例及其附圖對本發(fā)明作進(jìn)一步說明。
具體實(shí)施例方式組成的計(jì)數(shù)器裝置實(shí)施例一
參見圖1,該計(jì)數(shù)器裝置是以嵌入式ARM微處理器為控制核心、以FPGA進(jìn)行計(jì)數(shù)處理, 包括ARM控制模塊I、FPGA計(jì)數(shù)器模塊III、存儲器模塊II、電源模塊V、雙口 RAM模塊IV及 SDRAM掉電保護(hù)模塊VI ;ARM控制模塊I分別與上述存儲器模塊II、FPGA計(jì)數(shù)器模塊III、雙口 RAM模塊IV及電源模塊V連接,以嵌入式ARM微處理器為控制核心,構(gòu)建嵌入式實(shí)時操作系統(tǒng),進(jìn)行多任務(wù)管理和通信管理,實(shí)現(xiàn)對裝置中各個模塊信息的處理和控制;存儲器模塊 II用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件、執(zhí)行用戶程序的處理信息、以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;雙口 RAM模塊IV分別與FPGA計(jì)數(shù)器模塊III和ARM 控制模塊I連接,以實(shí)現(xiàn)ARM控制模塊I與FPGA計(jì)數(shù)器模塊III之間的數(shù)據(jù)傳輸;FPGA計(jì)數(shù)器模塊III用于判斷計(jì)數(shù)器的類型,實(shí)施與計(jì)數(shù)設(shè)定值的 比較及計(jì)數(shù)運(yùn)算,通過對所述雙口 RAM模塊IV的讀寫控制,將計(jì)數(shù)器的狀態(tài)傳送至ARM,該模塊以計(jì)數(shù)器控制器31為核心,實(shí)現(xiàn)計(jì)數(shù)器的類型判斷、增計(jì)數(shù)器的加1運(yùn)算、增/減可控計(jì)數(shù)器的加1或減1、計(jì)數(shù)動態(tài)參數(shù)值與計(jì)數(shù)設(shè)置值的大小比較,增/減可控計(jì)數(shù)器的計(jì)數(shù)參數(shù)處理為補(bǔ)碼運(yùn)算,計(jì)數(shù)功能控制、計(jì)數(shù)器軟觸頭位單元32的字尋址和位尋址讀、寫功能、SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61 的讀、寫功能,雙口 RAM模塊IV的讀、寫功能;電源模塊V為上述ARM控制模塊I、存儲器模塊II、FPGA計(jì)數(shù)器模塊III及雙口 RAM模塊IV提供變壓電源;SDRAM掉電保護(hù)模塊VI與FPGA 計(jì)數(shù)器模塊III連接,該SDRAM掉電保護(hù)模塊VI包括相互連接的SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器和SDRAM掉電保護(hù)電路,SDRAM掉電保護(hù)模塊VI應(yīng)用SDRAM掉電保護(hù)電路的電源為SDRAM 計(jì)數(shù)器動態(tài)參數(shù)存儲器供電,以避免在電源切換過程中SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器內(nèi)容發(fā)生變化。
其中,該計(jì)數(shù)器裝置的具體結(jié)構(gòu)為
ARM控制模塊I包括嵌入式ARM微處理器11、人機(jī)交互電路12、控制電路13、復(fù)位電路 14和JTAG調(diào)試接口電路15,參見圖2,嵌入式ARM微處理器11作為控制核心,分別與人機(jī)交互電路12、控制電路13、復(fù)位電路14和JTAG調(diào)試接口電路15連接,進(jìn)行多任務(wù)管理和通信管理,以實(shí)現(xiàn)對各組成電路的信息處理和控制;人機(jī)交互電路12完成系統(tǒng)的控制命令和控制參數(shù)的輸入和系統(tǒng)各種參數(shù)的人機(jī)界面控制;控制電路13完成ARM控制模塊I的數(shù)據(jù)采集與控制驅(qū)動;復(fù)位電路14為系統(tǒng)電路提供復(fù)位信號;JTAG調(diào)試接口電路15提供調(diào)試接口與外接電路相連實(shí)現(xiàn)編程裝置對ARM控制模塊I的硬件和軟件的調(diào)試。嵌入式ARM 微處理器11在對PLC用戶程序的編譯階段,將每個增計(jì)數(shù)器的1個計(jì)數(shù)設(shè)置值和每個增/ 減可控計(jì)數(shù)器的2個補(bǔ)碼計(jì)數(shù)設(shè)置值傳送給雙口 RAM模塊IV,檢測計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令,按照編譯出現(xiàn)這類指令出現(xiàn)的先后順序?qū)⒃撚?jì)數(shù)器的編號傳輸給雙口 RAM模塊IV, 計(jì)數(shù)器順序編號包含在編譯后的計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令中;在PLC用戶程序的執(zhí)行過程中,執(zhí)行計(jì)數(shù)器軟元件處理指令時,ARM控制模塊I將該計(jì)數(shù)器的得電或失電、增/減可控計(jì)數(shù)器是增計(jì)數(shù)還是減計(jì)數(shù)的控制信息傳輸給雙口 RAM模塊IV,執(zhí)行計(jì)數(shù)器軟元件復(fù)位指令時,ARM控制模塊I將該計(jì)數(shù)器的復(fù)位或不復(fù)位信息傳輸給雙口 RAM模塊IV,執(zhí)行讀取計(jì)數(shù)器觸頭信息時,ARM控制模塊I直接從雙口 RAM模塊IV中讀取該計(jì)數(shù)器的觸頭狀態(tài)信息,執(zhí)行實(shí)時計(jì)數(shù)值讀取指令時,ARM控制模塊I直接從雙口 RAM模塊IV中讀取該計(jì)數(shù)器的動態(tài)計(jì)數(shù)參數(shù)。存儲器模塊II包括分別與ARM控制模塊I連接的Nor FLASH存儲器21、Nand FLASH22存儲器和SDRAM存儲器23,其結(jié)構(gòu)示意圖見圖2 ;Nor FLASH存儲器21、Nand FLASH 存儲器22和SDRAM存儲器23分別通過系統(tǒng)數(shù)據(jù)總線、地址總線和控制總線與ARM控制模塊I的嵌入式ARM微處理器11連接,實(shí)現(xiàn)ARM微處理器11對各個存儲器的操作控制,Nor FLASH存儲器21用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件,Nand FLASH存儲器 22用于存放執(zhí)行用戶程序,SDRAM存儲器23用于存放計(jì)數(shù)器裝置的處理和通信信息,并為系統(tǒng)運(yùn)行和通信數(shù)據(jù)處理提供空間。雙口 RAM模塊IV通過ARM控制模塊I的一組數(shù)據(jù)總線XI、地址總線Zl和控制總線 Yl與ARM控制模塊I的嵌入式ARM微處理器11連接,通過FPGA內(nèi)部總線的數(shù)據(jù)總線X2、 地址總線Z2和控制總線Y2與FPGA計(jì)數(shù)器模塊III連接;雙口 RAM模塊IV是ARM控制模塊I 與FPGA計(jì)數(shù)器模塊III之間數(shù)據(jù)傳輸?shù)臉蛄海脩裟軌驅(qū)崿F(xiàn)ARM控制模塊I和FPGA計(jì)數(shù)器模塊III同時對雙口 RAM模塊IV進(jìn)行讀寫操作;圖5是雙口 RAM模塊IV中的存儲器結(jié)構(gòu)示意圖。SDRAM掉電保護(hù)模塊VI包括SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61和SDRAM掉電保護(hù)電路62,SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61通過FPGA內(nèi)部總線與FPGA計(jì)數(shù)器模塊III連接, SDRAM掉電保護(hù)電路62在系統(tǒng)電源失電瞬間使SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61的片選端為高電平,避免在電源切換過程中SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61的內(nèi)容發(fā)生變化,并將 SDRAM掉電保護(hù)電路62的電源為SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61供電;在計(jì)數(shù)器裝置復(fù)位和PLC用戶程序重新啟動運(yùn)行時,ARM控制模塊I將對非保持型計(jì)數(shù)器的FPGA的SDRAM 計(jì)數(shù)器動態(tài)參數(shù)存儲器61中的存儲單元清零。
FPGA計(jì)數(shù)器模塊III包括計(jì)數(shù)器控制器31、計(jì)數(shù)器軟觸頭位單元32和FPGA內(nèi)部總線,其具體電路結(jié)構(gòu)參見圖3,計(jì)數(shù)器控制器31是FPGA計(jì)數(shù)器模塊III的控制核心,計(jì)數(shù)器控制器31通過FPGA內(nèi)部總線與計(jì)數(shù)器軟觸頭位單元32、SDRAM掉電保護(hù)模塊VI以及雙口 RAM模塊IV連接,并通過雙口 RAM模塊IV與ARM控制模塊I連接。
其中
FPGA內(nèi)部總線由32位數(shù)據(jù)總線X2,地址總線Z2及控制總線Y2組成,控制總線Y2包括計(jì)數(shù)器的讀、寫、模塊片選控制,雙口 RAM模塊IV與FPGA內(nèi)部總線相連接,雙口 RAM模塊 IV的模塊片選獨(dú)立設(shè)置與FPGA計(jì)數(shù)器控制模塊III連接,計(jì)數(shù)器軟觸頭位單元32和SDRAM 掉電保護(hù)模塊VI都是10根地址線與計(jì)數(shù)器控制器31連接,控制總線的讀、寫和模塊片選線與計(jì)數(shù)器控制器31、計(jì)數(shù)器軟觸頭位單元32、SDRAM掉電保護(hù)模塊VI和雙口 RAM模塊IV連接。計(jì)數(shù)器軟觸頭位單元32是32位字長存儲單元組成的計(jì)數(shù)器軟觸頭存儲器,參見圖4,該單元占用2個模塊地址,1個是32位字單元尋址的模塊地址,另1個是軟觸頭位單元的位模塊尋址,計(jì)數(shù)器軟觸頭位單元模塊32可以實(shí)現(xiàn)字尋址和位尋址的功能。計(jì)數(shù)器控制器31通過雙口 RAM模塊IV從ARM控制模塊I獲得計(jì)數(shù)器運(yùn)行狀態(tài)、類型及參數(shù)信息、復(fù)位信息、以及計(jì)數(shù)實(shí)時參數(shù)讀取命令;計(jì)數(shù)器控制器31處理計(jì)數(shù)器的結(jié)果狀態(tài)也傳輸給雙口 RAM模塊IV,計(jì)數(shù)器控制器31在工作時鐘脈沖的作用下,計(jì)數(shù)器控制器31依據(jù)計(jì)數(shù)器這些狀態(tài)進(jìn)行判斷,依據(jù)判斷結(jié)果進(jìn)行處理,如果某個增計(jì)數(shù)器處于未被使用或已完成一次計(jì)數(shù)操作并繼續(xù)處于得電狀態(tài),計(jì)數(shù)器控制器31對該增計(jì)數(shù)器不作任何處理;如果處于失電狀態(tài),設(shè)置該增計(jì)數(shù)器D27的位值為“0”,為增計(jì)數(shù)器軟線圈由失電轉(zhuǎn)化為得電時作好計(jì)數(shù)的準(zhǔn)備;如果處于復(fù)位狀態(tài),復(fù)位該增計(jì)數(shù)器在計(jì)數(shù)器軟觸頭位單元32中的位單元為“0”,清SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61中該增計(jì)數(shù)器的D30、D27和 D26^D0單元內(nèi)容;如果處于計(jì)數(shù)狀態(tài),計(jì)數(shù)器控制器31對SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61 的該增計(jì)數(shù)器存儲單元內(nèi)容與雙口 RAM模塊IV中的該增計(jì)數(shù)器的計(jì)數(shù)設(shè)置參數(shù)進(jìn)行比較判斷,如果SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61中該計(jì)數(shù)器的計(jì)數(shù)參數(shù)等于或大于雙口 RAM模塊IV中的該增計(jì)數(shù)器的計(jì)數(shù)設(shè)置參數(shù)時,置位該增計(jì)數(shù)器在計(jì)數(shù)器軟觸頭位單元32中的位單元為“1”,設(shè)置計(jì)數(shù)工作標(biāo)志D27為“1” ;如果小于,SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61 中該增計(jì)數(shù)器的計(jì)數(shù)參數(shù)進(jìn)行加1操作,設(shè)置計(jì)數(shù)工作標(biāo)志D27為“1”;如果該計(jì)數(shù)器為失電狀態(tài),且非復(fù)位狀態(tài),設(shè)置計(jì)數(shù)工作標(biāo)志D27為“0”;如果判斷計(jì)數(shù)器為增/減計(jì)數(shù)器型, 其判斷處理過程與增計(jì)數(shù)器的判斷處理過程基本相同,不同之處在于每個增/減計(jì)數(shù)器有兩個計(jì)數(shù)設(shè)置值,一個是增計(jì)數(shù)設(shè)置值,一個是減計(jì)數(shù)設(shè)置值,對應(yīng)有增計(jì)數(shù)動態(tài)參數(shù)和減計(jì)數(shù)動態(tài)參數(shù),這些值都是用補(bǔ)碼表示,其判斷比較和計(jì)數(shù)也都是補(bǔ)碼運(yùn)算;對2種類型計(jì)數(shù)器的讀取判斷處理操作是一個一個計(jì)數(shù)器循環(huán)進(jìn)行,每循環(huán)操作一次,將計(jì)數(shù)器軟觸頭位單元32的狀態(tài)傳輸?shù)诫p口 RAM模塊IV中,根據(jù)雙口 RAM模塊IV需要傳輸計(jì)數(shù)器實(shí)時計(jì)數(shù)值的計(jì)數(shù)器編號的順序?qū)DRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61的實(shí)時計(jì)數(shù)參數(shù)傳輸給雙口 RAM 模塊IV的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū);
計(jì)數(shù)器控制器處理計(jì)數(shù)器的結(jié)果狀態(tài)也傳輸給雙口 RAM模塊IV ;
計(jì)數(shù)器控制器在工作時鐘脈沖的作用下,依據(jù)計(jì)數(shù)器的狀態(tài)進(jìn)行判斷,依據(jù)判斷結(jié)果進(jìn)行處理如果某個增計(jì)數(shù)器處于未被使用或已完成一次計(jì)數(shù)操作并繼續(xù)處于得電狀態(tài),計(jì)數(shù)器控制器對該增計(jì)數(shù)器不作任何處理;如果處于失電狀態(tài),設(shè)置該增計(jì)數(shù)器D27的位值為“0”,為增計(jì)數(shù)器軟線圈由失電轉(zhuǎn)化為得電時作好計(jì)數(shù)的準(zhǔn)備;如果處于復(fù)位狀態(tài),復(fù)位該增計(jì)數(shù)器在計(jì)數(shù)器軟觸頭位單元中的位單元為“0”,清SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增計(jì)數(shù)器的D30、D27和D26 D0單元內(nèi)容;如果處于計(jì)數(shù)狀態(tài),計(jì)數(shù)器控制器對SDRAM 計(jì)數(shù)器動態(tài)參數(shù)存儲器的該增計(jì)數(shù)器存儲單元內(nèi)容與雙口 RAM模塊IV中的該增計(jì)數(shù)器的計(jì)數(shù)設(shè)置參數(shù)進(jìn)行比較判斷,如果SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增計(jì)數(shù)器的計(jì)數(shù)參數(shù)等于或大于雙口 RAM模塊IV中的該增計(jì)數(shù)器的計(jì)數(shù)設(shè)置參數(shù)時,置位該增計(jì)數(shù)器在計(jì)數(shù)器軟觸頭位單元中的位單元為“1”,設(shè)置計(jì)數(shù)工作標(biāo)志D27為“1”;如果小于,SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增計(jì)數(shù)器的計(jì)數(shù)參數(shù)進(jìn)行加1操作,設(shè)置計(jì)數(shù)工作標(biāo)志D27為“1”;如果該增計(jì)數(shù)器為失電狀態(tài),且非復(fù)位狀態(tài),設(shè)置計(jì)數(shù)工作標(biāo)志D27為“0” ;如果判斷計(jì)數(shù)器為增/減計(jì)數(shù)器型,其判斷處理過程與增計(jì)數(shù)器的判斷處理過程基本相同,不同之處在于每個增/減計(jì)數(shù)器有兩個計(jì)數(shù)設(shè)置值,一個是增計(jì)數(shù)設(shè)置值,一個是減計(jì)數(shù)設(shè)置值,對應(yīng)有增計(jì)數(shù)動態(tài)參數(shù)和減計(jì)數(shù)動態(tài)參數(shù),這些值都是用補(bǔ)碼表示,其判斷比較和計(jì)數(shù)也都是補(bǔ)碼運(yùn)算;
對2種類型計(jì)數(shù)器的讀取判斷處理操作是一個一個計(jì)數(shù)器循環(huán)進(jìn)行,每循環(huán)操作一次,將計(jì)數(shù)器軟觸頭位單元的狀態(tài)傳輸?shù)诫p口 RAM模塊IV中,根據(jù)雙口 RAM模塊IV需要傳輸計(jì)數(shù)器實(shí)時計(jì)數(shù)值的計(jì)數(shù)器編號的順序?qū)DRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器的實(shí)時計(jì)數(shù)參數(shù)傳輸給雙口 RAM模塊IV的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū);根據(jù)雙口 RAM模塊IV需要傳輸計(jì)數(shù)器實(shí)時計(jì)數(shù)值的計(jì)數(shù)器編號的順序?qū)DRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61的實(shí)時計(jì)數(shù)參數(shù)傳輸給雙口 RAM模塊IV的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū);
由上可見,由于計(jì)數(shù)器裝置中的計(jì)數(shù)動態(tài)參數(shù)由SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器進(jìn)行存儲,計(jì)數(shù)操作由FPGA計(jì)數(shù)器模塊III處理,該FPGA計(jì)數(shù)器模塊III從雙口 RAM模塊IV中接收 ARM控制模塊I發(fā)出的控制處理指令進(jìn)行循環(huán)操作,(處理計(jì)數(shù)器輸出指令、復(fù)位指令的結(jié)果及FPGA計(jì)數(shù)器控制器處理計(jì)數(shù)的結(jié)果狀態(tài)進(jìn)行讀取、判斷,依據(jù)判斷結(jié)果進(jìn)行處理,或設(shè)置計(jì)數(shù)器軟觸頭狀態(tài),或讀出SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中的該計(jì)數(shù)器動態(tài)參數(shù)進(jìn)行加1/減1計(jì)數(shù),判斷和處理,其中增/減可控計(jì)數(shù)器對計(jì)數(shù)參數(shù)的處理為補(bǔ)碼運(yùn)算,或不需要作任何處理,這是循環(huán)操作處理過程;)因此,計(jì)數(shù)器的數(shù)量只受SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器、計(jì)數(shù)器軟觸頭位單元和雙口 RAM容量和地址線的限制,只要增加SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器、計(jì)數(shù)器軟觸頭位單元和雙口 MM的容量,以及地址線的根數(shù),計(jì)數(shù)器的個數(shù)可以成倍數(shù)的增加,其計(jì)數(shù)器裝置設(shè)置的計(jì)數(shù)器數(shù)量能夠達(dá)到數(shù)百個,乃至千余個,而且不需要在ARM控制模塊的程序中編制計(jì)數(shù)參數(shù)的處理程序,只是將每個計(jì)數(shù)器作為普通存儲單元進(jìn)行讀寫和判斷操作,適合需要數(shù)量眾多計(jì)數(shù)器計(jì)數(shù)與計(jì)數(shù)控制的系統(tǒng)需求,以及對計(jì)數(shù)精度要求很高的系統(tǒng),尤其適應(yīng)于PLC控制系統(tǒng)。而且,ARM控制模塊執(zhí)行計(jì)數(shù)器輸出指令時,只需要判斷計(jì)數(shù)器是處于得電還是失電狀態(tài),并將其狀態(tài)傳輸給雙口 RAM ;執(zhí)行計(jì)數(shù)器復(fù)位指令時,只需要判斷計(jì)數(shù)器是復(fù)位還是不復(fù)位,并將其狀態(tài)傳輸給雙口 RAM ;執(zhí)行應(yīng)用計(jì)數(shù)器軟觸頭指令時,從雙口 MM中讀取該計(jì)數(shù)器的軟觸頭狀態(tài);增計(jì)數(shù)器的加1運(yùn)算、 增/減可控計(jì)數(shù)器的加1或減1、計(jì)數(shù)動態(tài)參數(shù)值與計(jì)數(shù)設(shè)置值的大小比較,增/減可控計(jì)數(shù)器的計(jì)數(shù)參數(shù)處理為補(bǔ)碼運(yùn)算,計(jì)數(shù)功能控制、計(jì)數(shù)器軟觸頭位單元狀態(tài)的設(shè)置均由 FPGA計(jì)數(shù)器模塊完成,不占用PLC用戶程序執(zhí)行的時間;大大提高了計(jì)數(shù)器裝置的反應(yīng)速度;無論計(jì)數(shù)器處于何種運(yùn)行狀態(tài),本計(jì)數(shù)器裝置中ARM控制模塊執(zhí)行每個增計(jì)數(shù)器輸出指令的操作次數(shù)相同,執(zhí)行每個增/減可控計(jì)數(shù)器輸出指令的操作次數(shù)相同,減少了執(zhí)行有關(guān)計(jì)數(shù)器指令時對PLC用戶程序執(zhí)行周期變化的影響。組成的計(jì)數(shù)器裝置實(shí)施例二
參見圖10、圖11、圖12,本實(shí)施例的計(jì)數(shù)器裝置結(jié)構(gòu)與實(shí)施例一中的基本類似,不同之處在于實(shí)施例一中的雙口 RAM模塊IV與FPGA計(jì)數(shù)器模塊III分別獨(dú)立設(shè)置,而本實(shí)施例中的雙口 RAM模塊IV是嵌入FPGA計(jì)數(shù)器模塊III中,以構(gòu)成帶雙口 RAM模塊的FPGA計(jì)數(shù)器模塊III’,參見圖12,本實(shí)施例之ARM+FPGA組成的計(jì)數(shù)器裝置,以嵌入式ARM微處理器為控制核心、以FPGA進(jìn)行計(jì)數(shù)處理,包括ARM控制模塊I、SDRAM掉電保護(hù)模塊VI,存儲器模塊II、 FPGA計(jì)數(shù)器模塊III,、電源模塊V,ARM控制模塊I以嵌入式ARM微處理器為控制核心,構(gòu)建嵌入式實(shí)時操作系統(tǒng),進(jìn)行多任務(wù)管理和通信管理,實(shí)現(xiàn)對裝置中各模塊及其信息的處理和控制;存儲器模塊II用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件、執(zhí)行用戶程序的處理信息、以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;FPGA計(jì)數(shù)器模塊III’包括嵌入的雙口 RAM模塊IV和FPGA計(jì)數(shù)器模塊III,F(xiàn)PGA計(jì)數(shù)器模塊III以計(jì)數(shù)器控制器31為核心, 實(shí)現(xiàn)計(jì)數(shù)器的類型判斷、增計(jì)數(shù)器的加1運(yùn)算、增/減可控計(jì)數(shù)器的加1和減1、計(jì)數(shù)動態(tài)參數(shù)值與計(jì)數(shù)設(shè)置值的大小比較,增/減可控計(jì)數(shù)器的計(jì)數(shù)參數(shù)處理為補(bǔ)碼運(yùn)算,計(jì)數(shù)功能控制、計(jì)數(shù)器軟觸頭位單元32的字尋址和位尋址讀、寫功能、SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器 61的讀、寫功能,雙口 RAM模塊IV的讀、寫功能;雙口 RAM模塊IV分別與FPGA計(jì)數(shù)器模塊III 和ARM控制模塊I連接,以實(shí)現(xiàn)ARM控制模塊I與FPGA計(jì)數(shù)器模塊III之間的數(shù)據(jù)傳輸;電源模塊V為ARM控制模塊I、存儲器模塊II、FPGA計(jì)數(shù)器模塊III,、雙口 RAM模塊IV及SDRAM 掉電保護(hù)模塊VI提供變壓后的電源;SDRAM掉電保護(hù)模塊VI與FPGA計(jì)數(shù)器模塊III’連接, SDRAM掉電保護(hù)模塊VI包括相互連接的SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61和SDRAM掉電保護(hù)電路62,該SDRAM掉電保護(hù)模塊VI可避免在電源切換過程中SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器 61的內(nèi)容發(fā)生變化,并將SDRAM掉電保護(hù)電62的電源為SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61 {共 ο本實(shí)施例的工作原理與實(shí)施例一相同,此處不再贅述。ARM+FPGA組成的計(jì)數(shù)器裝置實(shí)施例一是本發(fā)明的最佳實(shí)施例之一,作為本發(fā)明之 ARM+FPGA組成的計(jì)數(shù)器裝置實(shí)施例一和實(shí)施例二的一種變換,也可以在該計(jì)數(shù)器裝置中不設(shè)置SDRAM掉電保護(hù)電路62,同樣也可實(shí)現(xiàn)本發(fā)明的目的。作為本發(fā)明之ARM+FPGA組成的計(jì)數(shù)器裝置實(shí)施例一和實(shí)施例二的另一種變換, 該計(jì)數(shù)器裝置中還可以不設(shè)置SDRAM掉電保護(hù)電路62,SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61的功能由FPGA計(jì)數(shù)器模塊III來實(shí)現(xiàn),該變換同樣也可實(shí)現(xiàn)本發(fā)明的目的。
實(shí)現(xiàn)計(jì)數(shù)器的方法實(shí)施例
應(yīng)用上述ARM+FPGA組成的計(jì)數(shù)器裝置來實(shí)現(xiàn)計(jì)數(shù)器的方法,該方法是以ARM控制模塊I中的嵌入式ARM微處理器11為控制核心,F(xiàn)PGA計(jì)數(shù)器模塊III實(shí)現(xiàn)計(jì)數(shù)處理,應(yīng)用雙口 RAM模塊IV實(shí)現(xiàn)ARM控制模塊I和FPGA計(jì)數(shù)器模塊III之間的數(shù)據(jù)傳輸;首先由ARM控制模塊I中的嵌入式ARM微處理器11進(jìn)行初始化處理,然后ARM控制模塊I根據(jù)初始化處理的結(jié)果對相應(yīng)的計(jì)數(shù)器進(jìn)行控制操作,并通過雙口 RAM模塊IV實(shí)現(xiàn)對FPGA計(jì)數(shù)器模塊III的控制,F(xiàn)PGA計(jì)數(shù)器模塊III根據(jù)ARM控制模塊I發(fā)出的控制命令對計(jì)數(shù)器進(jìn)行相應(yīng)的控制處理;存儲器模塊II存儲目標(biāo)代碼映像文件、處理信息以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;電源模塊V在整個處理過程中為上述ARM控制模塊I、存儲器模塊II、FPGA計(jì)數(shù)器模塊III及雙口 RAM模塊IV提供變壓電源;具體包括如下步驟
初始化處理步驟ARM控制模塊I中的嵌入式ARM微處理器11對雙口 RAM模塊IV的每個存儲單元清零,在每次啟動PLC用戶程序時將SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器61中非保持型計(jì)數(shù)器的動態(tài)參數(shù)存儲單元清零,并將計(jì)數(shù)器的參數(shù)、狀態(tài)信息等傳輸?shù)诫p口 RAM模塊 IV;
ARM控制步驟ARM控制模塊I根據(jù)上述初始化處理的結(jié)果對其中任一計(jì)數(shù)器進(jìn)行控制處理,并通過雙口 RAM模塊IV實(shí)現(xiàn)對FPGA計(jì)數(shù)器模塊III的控制操作;
FPGA控制步驟 FPGA計(jì)數(shù)器模塊III根據(jù)ARM控制模塊I從雙口 RAM模塊IV發(fā)出的控制命令,進(jìn)行計(jì)數(shù)器處理操作。其中,初始化處理的具體過程為
在ARM控制模塊I中的嵌入式ARM微處理器11初始化處理過程中,對雙口 RAM模塊IV 中的每個存儲單元清零;在每次啟動PLC用戶程序時將SDRAM計(jì)數(shù)器61動態(tài)參數(shù)存儲器中非保持型計(jì)數(shù)器的動態(tài)參數(shù)存儲單元清零;嵌入式ARM微處理器11在編譯過程中,將所使用每個計(jì)數(shù)器設(shè)置的計(jì)數(shù)參數(shù)及使用狀態(tài)信息傳輸?shù)诫p口 RAM模塊IV中,嵌入式ARM微處理器11執(zhí)行用戶過程中某一個計(jì)數(shù)器的輸出、復(fù)位指令時,將該計(jì)數(shù)器的運(yùn)行狀態(tài)信息傳輸?shù)诫p口 RAM模塊IV中,執(zhí)行檢測計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令時,按照該指令出現(xiàn)順序?qū)?yīng)的計(jì)數(shù)器編號傳輸給雙口 RAM模塊IV,順序編號包含在編譯后的計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令中;嵌入式ARM微處理器11在執(zhí)行計(jì)數(shù)器指令時,將該計(jì)數(shù)器的運(yùn)行狀態(tài)信息傳輸?shù)诫p口 RAM模塊IV中,狀態(tài)信息和參數(shù)包括D31、D29、D28,D26 D0,邏輯結(jié)構(gòu)示意圖參見圖 4、圖5,其設(shè)置值參見如下描述
D31 使用標(biāo)志位,計(jì)數(shù)器在用戶程序中被使用,設(shè)置為“ 1 ”,否則為“0” ; D30 計(jì)數(shù)器軟元件得電失電標(biāo)志位,得電設(shè)置為“1”,失電設(shè)置為“0”; D29 增/減可控計(jì)數(shù)器的增/減控制位,增操作設(shè)置為“ 1 ”,減操作設(shè)置為“0” ; D28 計(jì)數(shù)器復(fù)位位,非復(fù)位狀態(tài)設(shè)置為“ 1 ”,復(fù)位狀態(tài)設(shè)置為“0” ; D26^D0 計(jì)數(shù)器的計(jì)數(shù)參數(shù)設(shè)置值。FPGA計(jì)數(shù)器模塊III在初始化過程中,對FPGA的SDRAM動態(tài)參數(shù)存儲器中的非保持型計(jì)數(shù)器的所有存儲單元清0,ARM控制模塊I在初始化過程中對雙口 RAM模塊IV的所有存儲單元清0。參見圖6,ARM控制模塊I對計(jì)數(shù)器處理操作的具體步驟如下 SlOl 某一個計(jì)數(shù)器軟元件輸出指令;
sl02 判斷是否增計(jì)數(shù)器?如果是,則進(jìn)入步驟sl04,否則進(jìn)入步驟sl03 ; sl03 根據(jù)該計(jì)數(shù)器軟元件的編號將2個計(jì)數(shù)設(shè)置值傳輸給雙口 RAM模塊IV中存儲該計(jì)數(shù)器參數(shù)相鄰的2個存儲單元,進(jìn)入步驟sl05 ;
sl04 根據(jù)該計(jì)數(shù)器軟元件的編號將計(jì)數(shù)設(shè)置值傳輸給雙口 RAM模塊IV中存儲該計(jì)數(shù)器參數(shù)的存儲單元;
sl05 :ARM控制模塊I繼續(xù)按順序編譯其他指令;
sl06 該計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令,按照編譯該指令出現(xiàn)的先后順序?qū)⒃撚?jì)數(shù)器的編號傳輸給雙口 RAM模塊IV ;
sl07 =ARM控制模塊I繼續(xù)按順序編譯其他指令。ARM控制模塊I對FPGA計(jì)數(shù)器模塊III控制的流程框圖參見圖7,圖7是ARM控制模塊I對某一個計(jì)數(shù)器處理操作流程圖,對于其他計(jì)數(shù)器的處理流程也與此相同,圖7中執(zhí)行計(jì)數(shù)器軟元件輸出指令、計(jì)數(shù)器復(fù)位指令、計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令和應(yīng)用計(jì)數(shù)器觸頭的指令在程序中出現(xiàn)的位置是根據(jù)用戶的編制確定,用戶可以根據(jù)需求編制不同順序的處理流程,不需要受到圖7中順序的制約,本實(shí)施例中的具體步驟如下
s201 執(zhí)行某一個計(jì)數(shù)器軟元件輸出指令;
s202 判斷是否屬于增計(jì)數(shù)器?如果是,進(jìn)入步驟s205,否則,進(jìn)入步驟s203 ; s203 判斷該計(jì)數(shù)器是否處于增計(jì)數(shù)操作狀態(tài)?如果不是處于增計(jì)數(shù)操作狀態(tài),則進(jìn)入步驟s204,否則進(jìn)入步驟s205 ;
s204 設(shè)置標(biāo)志位D29為“0”,進(jìn)入步驟s206 ; s205 設(shè)置標(biāo)志位D29為“1”;
s206 判斷計(jì)數(shù)器軟元件是否得電?如果軟元件得電,則進(jìn)入步驟s207,否則進(jìn)入步驟 s208 ;
s207 設(shè)置標(biāo)志位D31 D30為“11”,進(jìn)入步驟s209 ; s208 設(shè)置標(biāo)志位D31 D30為“10” ;
s209 將D31、D30、D29和D28的信息發(fā)送到所述雙口 RAM模塊IV ; s210 =ARM控制模塊I繼續(xù)按順序編譯其他指令;
s211 判斷計(jì)數(shù)器是否滿足復(fù)位條件?如果滿足,進(jìn)入步驟s212,否則,進(jìn)入步驟 s213 ;
s212 復(fù)位計(jì)數(shù)器,設(shè)置標(biāo)志位D28為“0”,進(jìn)入步驟s214 ;
s213 設(shè)置標(biāo)志位D28為“1”;
s214 將D28的信息發(fā)送到所述雙口 RAM模塊IV ;
s215 =ARM控制模塊I繼續(xù)按順序編譯其他指令;
s216 從雙口 RAM模塊IV的觸頭存儲區(qū)讀入上述過程中所需的該計(jì)數(shù)器觸頭信息; s217 =ARM控制模塊I繼續(xù)按順序編譯其他指令;
s218 判斷是否需要讀取計(jì)數(shù)器實(shí)時計(jì)數(shù)值?如果需要,則進(jìn)入步驟s219,否則,進(jìn)入步驟s220 ;
s219 從雙口 RAM模塊IV中的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū)讀入該計(jì)數(shù)器的實(shí)時計(jì)數(shù)值; s220 =ARM控制模塊I繼續(xù)按順序編譯其他指令。參見圖8,F(xiàn)PGA計(jì)數(shù)器模塊III控制的具體步驟為 s301 清計(jì)數(shù)器單元地址計(jì)數(shù)器和溢出位標(biāo)志TF ;
s302 從雙口 RAM模塊IV讀取計(jì)數(shù)器32位字長存儲單元的內(nèi)容,即讀出32位字長的計(jì)
數(shù)器信息;
s303 根據(jù)計(jì)數(shù)器單元地址計(jì)數(shù)器的值判斷是否是增計(jì)數(shù)器,如果是,則進(jìn)入步驟 s304,否則進(jìn)入圖9中所描述的增/減可控計(jì)數(shù)器的計(jì)數(shù)處理過程;
s304 獲得并判斷 D31、D30、D29、D28 和 D27 的位值,若 D31、D30、D29、D28 和 D27 的位值為“OX X X X ”或“11 X 11”,則進(jìn)入步驟s313,若D31、D30、D29、D28和D27的位值為“10X1 X ”,則進(jìn)入步驟S305,若D31、D30、D29、D28和D27的位值為“IX XOX ”,則進(jìn)入步驟 s306,若 D31、D30、D29、D28 和 D27 的位值為 “ 11 X 10” 則進(jìn)入步驟 s307 ;D31、D30、 D29、D28和D27的位值為"OX X XX",則說明計(jì)數(shù)器處于未使用狀態(tài),D31、D30、D29、D28 和D27的位值為“11 X 11”,則說明計(jì)數(shù)器此次不計(jì)數(shù);D31、D30、D29、D28和D27的位值為 “ 10 X 1 X ”說明計(jì)數(shù)器失電不計(jì)數(shù),D31、D30、D29、D28和D27的位值為“ 1 X X 0 X ”說明計(jì)數(shù)器處于復(fù)位狀態(tài),D31、D30、D29、D28和D27的位值為“ 11 X 10”說明計(jì)數(shù)器得電計(jì)一次數(shù);
s305:設(shè)置該計(jì)數(shù)器D27的位值為“0”,進(jìn)入步驟s313,此步驟是為計(jì)數(shù)器軟線圈由失電轉(zhuǎn)化為得電時作好計(jì)數(shù)的準(zhǔn)備;
s306 設(shè)置該計(jì)數(shù)器的觸頭位單元為“0”并進(jìn)入步驟s308 ;
s307 判斷SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中,該計(jì)數(shù)器的D26 D0是否等于或大于雙口 RAM模塊IV中該計(jì)數(shù)器的D26 D0的內(nèi)容,如果是,則進(jìn)入步驟s311,否則,進(jìn)入步驟s310 ; s308 將該計(jì)數(shù)器的D30和D27的位值設(shè)置為“00” ;
s309 將SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該計(jì)數(shù)器的D26 D0設(shè)置為“0”,進(jìn)入步驟 s313 ;
s310 將SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該計(jì)數(shù)器的D26 D0分別+1后,將結(jié)果返回到 SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該計(jì)數(shù)器的D26 D0,進(jìn)入步驟s312 ; s311 該計(jì)數(shù)器的觸頭位單元設(shè)置為“1”;
s312 將該計(jì)數(shù)器D27的位值設(shè)置為“1”,因?yàn)樵撚?jì)數(shù)器軟線圈繼續(xù)得電期間不需要再計(jì)數(shù);
s313 計(jì)數(shù)器單元地址計(jì)數(shù)器+1 ;
s314 判斷TF是否為1 ?如果是,則進(jìn)入步驟s315,否則,進(jìn)入步驟s302 ;TF為計(jì)數(shù)器單元地址計(jì)數(shù)器溢出標(biāo)志位;
s315 循環(huán)將每個計(jì)數(shù)器的觸頭位單元內(nèi)容傳輸給雙口 RAM觸頭存儲單元; s316 循環(huán)將SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中各計(jì)數(shù)器D27的位值設(shè)置值傳輸給雙口 RAM模塊IV中各個計(jì)數(shù)器的D27位單元;
s317 按照需傳輸計(jì)數(shù)器實(shí)時計(jì)數(shù)值的計(jì)數(shù)器編號順序?qū)DRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中的實(shí)時計(jì)數(shù)參數(shù)傳輸給雙口 RAM模塊IV中的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū),然后返回步驟 s301。 FPGA計(jì)數(shù)器模塊III控制處理中,所述增/減可控計(jì)數(shù)器的計(jì)數(shù)處理的具體步驟為
s401 判斷該增/減可控計(jì)數(shù)器的D31、D30、D29、D28和D27的位值,若D31、D30、D29、 D28 和 D27 的位值為“0 X XXX,,或“ 11X11”,則進(jìn)入步驟 s413,若D31、D30、D29、D28 和 D27 的位值為“ 10 X 1 X,,則進(jìn)入步驟s402,若D31、D30、D29、D28和D27的位值為"IX Χ0Χ", 則進(jìn)入步驟s403,若D31、D30、D29、D28和D27的位值為“11110”,則進(jìn)入步驟s404 ;若D31、 D30、D29、D28 和 D27 的位值為 “ 11010” 則進(jìn)入步驟 s405 ;D31、D30、D29、D28 和 D27 的位值為“OX X X X ”則說明該增/減可控計(jì)數(shù)器處于未使用狀態(tài),D31、D30、D29、D28和D27 的位值為“11乂11”則說明該增/減可控計(jì)數(shù)器處于此次不計(jì)數(shù)狀態(tài);復(fù)位狀態(tài),031、030、 D29、D28和D27的位值為“10X 1 X ”則說明該增/減可控計(jì)數(shù)器處于失電不計(jì)數(shù),D31、D30、D29、D28和D27的位值為“IX XOX ”說明該增/減可控計(jì)數(shù)器處于復(fù)位狀態(tài);D31、D30、 D29、D28和D27的位值為“ 11110”說明該增/減可控計(jì)數(shù)器為增計(jì)數(shù)操作狀態(tài),得電計(jì)一次數(shù);D31、D30、D29、D28和D27的位值為“ 11010”說明該增/減可控計(jì)數(shù)器為減計(jì)數(shù)操作狀態(tài),得電計(jì)一次數(shù);
s402 設(shè)置該增/減可控計(jì)數(shù)器的2個計(jì)數(shù)存儲單元D27的位值為“0”,為該增/減可控計(jì)數(shù)器軟線圈由失電轉(zhuǎn)化為得電時作好計(jì)數(shù)的準(zhǔn)備,并進(jìn)入步驟s413 ; s403 該增/減可控計(jì)數(shù)器的觸頭位單元設(shè)置為“0”,并進(jìn)入步驟s406 ; s404:判斷SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中,該增/減可控計(jì)數(shù)器參數(shù)單元中的 D26^D0是否等于或大于雙口 RAM模塊IV中該增/減可控計(jì)數(shù)器的第一個參數(shù)單元中的 D26 DO的內(nèi)容,如果是,則進(jìn)入步驟s409,否則,進(jìn)入步驟s408 ;
s405 判斷SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中,該增/減可控計(jì)數(shù)器參數(shù)單元中的 D26^D0的位值是否等于或小于雙口 RAM模塊IV中該增/減可控計(jì)數(shù)器的第二個參數(shù)單元中的D26 D0的內(nèi)容,如果是,則進(jìn)入步驟s411,否則,進(jìn)入步驟s410 ;
s406 設(shè)置SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中 該增/減可控計(jì)數(shù)器參數(shù)單元中的D30、 D27的位值為“00”;
s407 =SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0清零,并進(jìn)入步驟s413 ;
s408 =SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0補(bǔ)+1 操作后,將結(jié)果返回到SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的 D26 D0,并進(jìn)入步驟s412 ;
s409 將該增/減可控計(jì)數(shù)器的觸頭位單元設(shè)置為“1”,并進(jìn)入步驟s412 ; s410 =SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0補(bǔ) + (-1)補(bǔ)操作后,將結(jié)果返回到SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器的第二個參數(shù)單元中的D26 D0,并進(jìn)入步驟s412 ;
s411 將該增/減可控計(jì)數(shù)器的觸頭位單元設(shè)置為“1” ;
s412 設(shè)置SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中D27的位值為“1”,此步驟是使得該增/減可控計(jì)數(shù)器軟線圈繼續(xù)得電時不再計(jì)數(shù); s413 計(jì)數(shù)器單元地址計(jì)數(shù)器+2 ; s414 進(jìn)入FPGA計(jì)數(shù)器模塊III控制的s314步驟。
增/減可控計(jì)數(shù)器的2個計(jì)數(shù)設(shè)置的參數(shù)用補(bǔ)碼的方式存儲,可以理解為在編輯該過程時,已將計(jì)數(shù)器設(shè)置的2個參數(shù)化成了補(bǔ)碼表示。
權(quán)利要求
1.一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于該計(jì)數(shù)器裝置是以嵌入式ARM微處理器為控制核心、以FPGA進(jìn)行計(jì)數(shù)處理,包括ARM 控制模塊(I )、存儲器模塊(II)、FPGA計(jì)數(shù)器模塊(III)、SDRAM掉電保護(hù)模塊(VI)、電源模塊 (V)以及雙口 RAM模塊(IV);所述ARM控制模塊(I )分別與上述存儲器模塊(II)、FPGA計(jì)數(shù)器模塊(III)、雙口 RAM 模塊(IV)、SDRAM掉電保護(hù)模塊(VI)及電源模塊(V )連接,以嵌入式ARM微處理器為控制核心,構(gòu)建嵌入式實(shí)時操作系統(tǒng),進(jìn)行多任務(wù)管理和通信管理,實(shí)現(xiàn)對裝置中各個模塊信息的處理和控制;所述存儲器模塊(II)用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件、用戶程序的處理信息、以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;所述雙口 RAM模塊(IV)分別與所述FPGA計(jì)數(shù)器模塊(III)和所述ARM控制模塊(I )連接,以實(shí)現(xiàn)所述ARM控制模塊(I )與所述FPGA計(jì)數(shù)器模塊(III)之間的數(shù)據(jù)傳輸;所述FPGA計(jì)數(shù)器模塊(III)用于判斷計(jì)數(shù)器的類型,實(shí)施與計(jì)數(shù)設(shè)定值的比較及計(jì)數(shù)運(yùn)算,通過對所述雙口 RAM模塊(IV)的讀寫控制,將計(jì)數(shù)器的狀態(tài)傳送至所述ARM控制模塊 (I);所述SDRAM掉電保護(hù)模塊(VI)與所述FPGA計(jì)數(shù)器模塊(III)連接,用于避免在電源切換過程中存儲器內(nèi)容的變化,并應(yīng)用其中的電源為動態(tài)參數(shù)存儲器供電;所述電源模塊(V)為上述ARM控制模塊(I )、存儲器模塊(II)、FPGA計(jì)數(shù)器模塊(III)、 SDRAM掉電保護(hù)模塊(VI)及雙口 RAM模塊(IV)提供變壓電源。
2.如權(quán)利要求1所述一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于所述SDRAM掉電保護(hù)模塊(VI)包括相互連接的SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器和SDRAM 掉電保護(hù)電路,該SDRAM掉電保護(hù)模塊(VI)在電源切換過程中應(yīng)用所述SDRAM掉電保護(hù)電路的電源為所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器供電,以避免所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器內(nèi)容發(fā)生變化。
3.如權(quán)利要求2所述一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于所述ARM控制模塊(I )包括嵌入式ARM微處理器、人機(jī)交互電路、控制電路、復(fù)位電路和JTAG調(diào)試接口電路;所述嵌入式ARM微處理器作為ARM控制模塊(I )的控制核心,分別與上述人機(jī)交互電路、控制電路、復(fù)位電路和JTAG調(diào)試接口電路連接,進(jìn)行多任務(wù)管理和通信管理,以實(shí)現(xiàn)對上述各電路的信息處理和控制;人機(jī)交互電路用于執(zhí)行系統(tǒng)的控制命令、控制參數(shù)的輸入以及系統(tǒng)各種參數(shù)的人機(jī)界面控制;控制電路用于系統(tǒng)數(shù)據(jù)采集及控制驅(qū)動; 復(fù)位電路為系統(tǒng)電路提供復(fù)位信號;JTAG調(diào)試接口電路提供調(diào)試接口,該接口與外接電路相連,以實(shí)現(xiàn)編程裝置對所述 ARM控制模塊(I )的軟硬件調(diào)試。
4.如權(quán)利要求2所述一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于所述FPGA計(jì)數(shù)器模塊(III)包括計(jì)數(shù)器控制器、計(jì)數(shù)器軟觸頭位單元和FPGA內(nèi)部總線; 所述計(jì)數(shù)器控制器是所述FPGA計(jì)數(shù)器模塊(III)的控制核心,其通過所述FPGA內(nèi)部總線分別與所述計(jì)數(shù)器軟觸頭位單元、所述SDRAM掉電保護(hù)模塊(VI)以及所述雙口 RAM模塊連接 IV連接,并通過所述雙口 RAM模塊(IV)與所述ARM控制模塊(I )連接;所述計(jì)數(shù)器控制器從所述ARM控制模塊(I )獲取計(jì)數(shù)器的運(yùn)行狀態(tài)、類型、參數(shù)信息、 復(fù)位信息以及計(jì)數(shù)實(shí)時參數(shù)讀取命令,根據(jù)上述計(jì)數(shù)器的運(yùn)行狀態(tài)、各類信息及參數(shù)進(jìn)行判斷并進(jìn)行相應(yīng)處理、并將計(jì)數(shù)器處理的結(jié)果狀態(tài)傳輸給所述雙口 RAM模塊(IV);所述計(jì)數(shù)器軟觸頭位單元模塊為計(jì)數(shù)器軟觸頭狀態(tài)的存放空間,可實(shí)現(xiàn)字尋址和位尋址。
5.如權(quán)利要求2所述一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于所述存儲器模塊(II)包括分別與所述ARM控制模塊(I )連接的Nor FLASH存儲器、 Nand FLASH存儲器和SDRAM存儲器;所述Nor FLASH存儲器用于存儲操作系統(tǒng)及系統(tǒng)程序的目標(biāo)代碼映像文件; 所述Nand FLASH存儲器用于存放執(zhí)行用戶程序;所述SDRAM存儲器用于存放計(jì)數(shù)器裝置的處理和通信信息,并為系統(tǒng)運(yùn)行和通信數(shù)據(jù)處理提供空間。
6.如權(quán)利要求廣5中任意一項(xiàng)所述一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于 所述FPGA計(jì)數(shù)器模塊(III)與所述雙口 RAM模塊(IV)分別獨(dú)立設(shè)置。
7.如權(quán)利要求廣5中任意一項(xiàng)所述一種ARM+FPGA組成的計(jì)數(shù)器裝置,其特征在于 所述雙口 RAM模塊(IV)嵌入所述FPGA計(jì)數(shù)器模塊(III)中,構(gòu)成帶雙口 RAM模塊(IV)的FPGA計(jì)數(shù)器模塊(III,)。
8.應(yīng)用如權(quán)利要求廣5中任意一項(xiàng)所述ARM+FPGA組成的計(jì)數(shù)器裝置實(shí)現(xiàn)計(jì)數(shù)器的方法,其特征在于該方法是以所述ARM控制模塊(I )中的嵌入式ARM微處理器為控制核心,所述FPGA計(jì)數(shù)器模塊(III)實(shí)現(xiàn)計(jì)數(shù)處理,應(yīng)用所述雙口 RAM模塊(IV)實(shí)現(xiàn)所述ARM控制模塊(I )和所述FPGA計(jì)數(shù)器模塊(III)之間的數(shù)據(jù)傳輸;首先由所述ARM控制模塊(I )中的嵌入式ARM 微處理器進(jìn)行初始化處理,然后所述ARM控制模塊(I )根據(jù)所述初始化處理的結(jié)果對相應(yīng)的計(jì)數(shù)器進(jìn)行控制操作,并通過所述雙口 RAM模塊(IV)實(shí)現(xiàn)對所述FPGA計(jì)數(shù)器模塊(III)的控制,所述FPGA計(jì)數(shù)器模塊(III)根據(jù)所述ARM控制模塊(I )發(fā)出的控制命令對計(jì)數(shù)器進(jìn)行相應(yīng)的控制處理;所述存儲器模塊(II)存儲目標(biāo)代碼映像文件、處理信息以及為計(jì)數(shù)器裝置數(shù)據(jù)的處理和通信提供空間;所述SDRAM掉電保護(hù)模塊(VI)在電源切換過程中應(yīng)用其中的電源為動態(tài)參數(shù)存儲器供電;所述電源模塊(V )在整個處理過程中為上述ARM控制模塊(I )、存儲器模塊(II)、FPGA計(jì)數(shù)器模塊(III)、SDRAM掉電保護(hù)模塊(VI)及雙口 RAM模塊 (IV)提供變壓電源;具體包括如下步驟初始化處理步驟所述嵌入式ARM微處理器對雙口 RAM的每個存儲單元清零,在每次啟動PLC用戶程序時將SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中非保持型計(jì)數(shù)器的動態(tài)參數(shù)存儲單元清零,并將計(jì)數(shù)器的參數(shù)、狀態(tài)信息等傳輸?shù)剿鲭p口 RAM模塊(IV);ARM控制步驟所述ARM控制模塊(I )根據(jù)上述初始化處理的結(jié)果對其中任一計(jì)數(shù)器進(jìn)行控制處理,并通過所述雙口 RAM模塊(IV)實(shí)現(xiàn)對所述FPGA計(jì)數(shù)器模塊(III)的控制操作;FPGA控制步驟所述FPGA計(jì)數(shù)器模塊(III)根據(jù)所述ARM控制模塊(I )發(fā)出的控制命令,進(jìn)行計(jì)數(shù)器處理操作。
9.如權(quán)利要求8所述實(shí)現(xiàn)計(jì)數(shù)器的方法,其特征在于 所述初始化處理的具體過程為所述ARM控制模塊(I )在編譯過程中,將所使用每個計(jì)數(shù)器設(shè)置的計(jì)數(shù)參數(shù)及使用狀態(tài)信息傳輸?shù)剿鲭p口 RAM模塊(IV)中,并檢測計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令,按照該指令出現(xiàn)順序?qū)?yīng)的計(jì)數(shù)器編號傳輸給所述雙口 RAM模塊(IV);所述ARM控制模塊(I )在執(zhí)行計(jì)數(shù)器指令時,將該計(jì)數(shù)器的運(yùn)行狀態(tài)信息傳輸?shù)剿鲭p口 RAM模塊(IV)中。
10.如權(quán)利要求8所述實(shí)現(xiàn)計(jì)數(shù)器的方法,其特征在于 所述ARM控制模塊(I )對計(jì)數(shù)器處理操作的具體步驟為 SlOl 某一個計(jì)數(shù)器軟元件輸出指令;sl02 判斷是否增計(jì)數(shù)器?如果是,則進(jìn)入步驟sl04,否則進(jìn)入步驟sl03 ; sl03 根據(jù)該計(jì)數(shù)器軟元件的編號將2個計(jì)數(shù)設(shè)置值傳輸給所述雙口 RAM模塊(IV)中存儲該計(jì)數(shù)器參數(shù)相鄰的2個存儲單元,進(jìn)入步驟sl05 ;sl04 根據(jù)該計(jì)數(shù)器軟元件的編號將計(jì)數(shù)設(shè)置值傳輸給所述雙口 RAM模塊(IV)中存儲該計(jì)數(shù)器參數(shù)的存儲單元;sl05 =ARM控制模塊(I )繼續(xù)按順序編譯其他指令;sl06 該計(jì)數(shù)器實(shí)時計(jì)數(shù)值讀取指令,按照編譯該指令出現(xiàn)的先后順序?qū)⒃撚?jì)數(shù)器的編號傳輸給所述雙口 RAM模塊(IV);sl07 :ARM控制模塊(I )繼續(xù)按順序編譯其他指令。
11.如權(quán)利要求8所述實(shí)現(xiàn)計(jì)數(shù)器的方法,其特征在于所述ARM控制模塊(I )對FPGA計(jì)數(shù)器模塊(III)控制的具體步驟為 s201 執(zhí)行某一個計(jì)數(shù)器軟元件輸出指令;s202 判斷是否屬于增計(jì)數(shù)器?如果是,進(jìn)入步驟s205,否則,進(jìn)入步驟s203 ; s203 判斷該計(jì)數(shù)器是否處于增計(jì)數(shù)操作狀態(tài)?如果不是處于增計(jì)數(shù)操作狀態(tài),則進(jìn)入步驟s204,否則進(jìn)入步驟s205 ;s204 設(shè)置標(biāo)志位D29為“0”,進(jìn)入步驟s206 ; s205 設(shè)置標(biāo)志位D29為“1”;s206 判斷計(jì)數(shù)器軟元件是否得電?如果軟元件得電,則進(jìn)入步驟s207,否則進(jìn)入步驟 s208 ;s207 設(shè)置標(biāo)志位D31和D30的值為“11”,進(jìn)入步驟s209 ; s208 設(shè)置標(biāo)志位D31和D30的值為“10” ;s209 將標(biāo)志位D31、D30、D29和D28的信息發(fā)送到所述雙口 RAM模塊(IV); s210 =ARM控制模塊(I )繼續(xù)按順序編譯其他指令;s211 判斷計(jì)數(shù)器是否滿足復(fù)位條件?如果滿足,進(jìn)入步驟s212,否則,進(jìn)入步驟 s213 ;s212 復(fù)位計(jì)數(shù)器,設(shè)置標(biāo)志位D28為“0”,進(jìn)入步驟s214 ; s213 設(shè)置標(biāo)志位D28為“1”;s214 將標(biāo)志位D28的信息發(fā)送到所述雙口 RAM模塊(IV);s215 =ARM控制模塊(I )繼續(xù)按順序編譯其他指令;s216 從雙口 RAM模塊(IV)的觸頭存儲區(qū)讀入上述過程中所需的該計(jì)數(shù)器觸頭信息; s217 =ARM控制模塊(I )繼續(xù)按順序編譯其他指令;s218 判斷是否需要讀取計(jì)數(shù)器實(shí)時計(jì)數(shù)值?如果需要,則進(jìn)入步驟s219,否則,進(jìn)入步驟s220 ;s219 從雙口 RAM模塊(IV)中的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū)讀入該計(jì)數(shù)器的實(shí)時計(jì)數(shù)值;s220 ARM控制模塊(I )繼續(xù)按順序編譯其他指令。
12.如權(quán)利要求8所述實(shí)現(xiàn)計(jì)數(shù)器的方法,其特征在于 所述FPGA計(jì)數(shù)器模塊(III)控制的具體步驟為s301 清計(jì)數(shù)器單元地址計(jì)數(shù)器和溢出位標(biāo)志TF ; s302 從所述雙口 RAM模塊(IV)讀取計(jì)數(shù)器32位字長存儲單元的內(nèi)容; s303 根據(jù)計(jì)數(shù)器單元地址計(jì)數(shù)器的值判斷是否是增計(jì)數(shù)器,如果是,則進(jìn)入步驟 s304,否則進(jìn)入增/減可控計(jì)數(shù)器的計(jì)數(shù)處理過程;s304 獲得并判斷標(biāo)志位D31、D30、D29、D28和D27的位值,若D31、D30、D29、D28和D27 的位值為“ O X X X X ”或“ 11 X 11”,則進(jìn)入步驟s313,若D31、D30、D29、D28和D27的位值為“ 10 X 1 X ”,則進(jìn)入步驟s305,若D31、D30、D29、D28和D27的位值為"IX Χ0Χ",則進(jìn)入步驟8306,若031、030、029、028和027的位值為“11 X 10”則進(jìn)入步驟s307 ; s305 設(shè)置該計(jì)數(shù)器D27的位值為“0”,進(jìn)入步驟s313 ; s306 設(shè)置該計(jì)數(shù)器的觸頭位單元為“0”并進(jìn)入步驟s308 ;s307 判斷所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中,該計(jì)數(shù)器的D26 D0是否等于或大于所述雙口 RAM模塊(IV)中該計(jì)數(shù)器的D26 D0的內(nèi)容,如果是,則進(jìn)入步驟s311,否則,進(jìn)入步驟s310 ;s308 將該計(jì)數(shù)器的D30、D27的位值設(shè)置為“00”;s309 將所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該計(jì)數(shù)器的D26 D0設(shè)置為“0”,進(jìn)入步驟 s313 ;s310 將所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該計(jì)數(shù)器的D26 D0分別+1后,將結(jié)果返回到所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該計(jì)數(shù)器的D26 D0,進(jìn)入步驟s312 ; s311 該計(jì)數(shù)器的觸頭位單元設(shè)置為“1”; s312 將該計(jì)數(shù)器D27的位值設(shè)置為“1”; s313 計(jì)數(shù)器單元地址計(jì)數(shù)器+1 ;s314 判斷TF是否為1 ?如果是,則進(jìn)入步驟s315,否則,進(jìn)入步驟s302 ; s315 循環(huán)將每個計(jì)數(shù)器的觸頭位單元內(nèi)容傳輸給雙口 RAM觸頭存儲單元; s316 循環(huán)將所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中各計(jì)數(shù)器D27的位值設(shè)置值傳輸給所述雙口 RAM模塊(IV)中各個計(jì)數(shù)器的D27位單元;s317 按照需傳輸計(jì)數(shù)器實(shí)時計(jì)數(shù)值的計(jì)數(shù)器編號順序?qū)DRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中的實(shí)時計(jì)數(shù)參數(shù)傳輸給所述雙口 RAM模塊(IV)中的計(jì)數(shù)器實(shí)時計(jì)數(shù)值存儲區(qū),然后返回步驟s301。
13.如權(quán)利要求12所述實(shí)現(xiàn)計(jì)數(shù)器的方法,其特征在于所述FPGA計(jì)數(shù)器模塊(III)控制處理中,所述增/減可控計(jì)數(shù)器的計(jì)數(shù)處理的具體步驟為s401 判斷該增/減可控計(jì)數(shù)器的D31、D30、D29、D28和D27的位值,若D31、D30、D29、 D28 和 D27 的位值為“O X XXX,,或“ 11X11”,則進(jìn)入步驟 s413,若D31、D30、D29、D28 和 D27 的位值為“ 10 X 1 X,,則進(jìn)入步驟s402,若D31、D30、D29、D28和D27的位值為"IX Χ0Χ", 則進(jìn)入步驟s403,若D31、D30、D29、D28和D27的位值為“ 11110”,則進(jìn)入步驟s404 ;若D31、 D30、D29、D28和D27的位值為“ 11010”則進(jìn)入步驟s405 ; s402 設(shè)置該增/減可控計(jì)數(shù)器的2個計(jì)數(shù)存儲單元的D27的位值為“0”,為該增/減可控計(jì)數(shù)器軟線圈由失電轉(zhuǎn)化為得電時作好計(jì)數(shù)的準(zhǔn)備,并進(jìn)入步驟s413; s403 該增/減可控計(jì)數(shù)器的觸頭位單元設(shè)置為“0”,并進(jìn)入步驟s406 ; s404 判斷所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中,該增/減可控計(jì)數(shù)器參數(shù)單元中的 D26^D0的位值是否等于或大于所述雙口 RAM模塊(IV)中該增/減可控計(jì)數(shù)器的第一個參數(shù)單元中的D26 DO的內(nèi)容,如果是,則進(jìn)入步驟s409,否則,進(jìn)入步驟s408 ;s405 判斷所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中,該增/減可控計(jì)數(shù)器參數(shù)單元中的 D26^D0是否等于或小于所述雙口 RAM模塊(IV)中該增/減可控計(jì)數(shù)器的第二個參數(shù)單元中的D26 D0的內(nèi)容,如果是,則進(jìn)入步驟s411,否則,進(jìn)入步驟s410 ;s406 設(shè)置所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的 D30、D27的位值為“0”;s407 所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0 清零,并進(jìn)入步驟s413;s408 所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0 補(bǔ)+1操作后,將結(jié)果返回到所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0,并進(jìn)入步驟s412 ;s409 將該增/減可控計(jì)數(shù)器的觸頭位單元設(shè)置為“1”,并進(jìn)入步驟s412 ; s410 所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的D26 D0 補(bǔ)+(-1)補(bǔ)操作后,將結(jié)果返回到所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器的第二個參數(shù)單元中的D26 D0,并進(jìn)入步驟s412 ;s411 將該增/減可控計(jì)數(shù)器的觸頭位單元設(shè)置為“1” ;s412 設(shè)置所述SDRAM計(jì)數(shù)器動態(tài)參數(shù)存儲器中該增/減可控計(jì)數(shù)器參數(shù)單元中的 D27的位值為“1”;s413 計(jì)數(shù)器單元地址計(jì)數(shù)器+2 ;s414 進(jìn)入所述FPGA計(jì)數(shù)器模塊(III)控制的s314步驟。
全文摘要
本發(fā)明提供一種以ARM微處理器為控制核心、FPGA為計(jì)數(shù)處理的計(jì)數(shù)器裝置,包括ARM控制模塊、存儲器模塊、FPGA計(jì)數(shù)器模塊、雙口RAM模塊、SDRAM掉電保護(hù)模塊、電源模塊。ARM控制模塊以ARM微處理器為控制核心,對各模塊處理和控制;雙口RAM模塊分別與FPGA計(jì)數(shù)器模塊和ARM控制模塊連接,實(shí)現(xiàn)兩模塊的數(shù)據(jù)傳輸;FPGA計(jì)數(shù)器模塊以計(jì)數(shù)器控制器為核心,完成增計(jì)數(shù)器和增/減計(jì)數(shù)器判斷、計(jì)數(shù)處理及實(shí)時計(jì)數(shù)參數(shù)傳輸;電源模塊提供工作電源,SDRAM掉電保護(hù)模塊對計(jì)數(shù)動態(tài)參數(shù)掉電保護(hù);本發(fā)明還提供一種實(shí)現(xiàn)計(jì)數(shù)器的方法;本發(fā)明計(jì)數(shù)操作不占用PLC用戶程序執(zhí)行時間,可實(shí)現(xiàn)不同類型和數(shù)量的計(jì)數(shù)器。
文檔編號G06M1/00GK102254218SQ20111018455
公開日2011年11月23日 申請日期2011年7月2日 優(yōu)先權(quán)日2011年7月2日
發(fā)明者丁秋笛, 付杰, 吳筆迅, 李克儉, 羅功坤, 蔡啟仲 申請人:廣西工學(xué)院