一種plc程序執行器ip核的製作方法
2023-05-21 11:04:51 1
專利名稱:一種plc程序執行器ip核的製作方法
技術領域:
本發明涉及一種片上實現的程序執行模塊,特別是一種PLC程序執行器IP核。
背景技術:
隨著自動控制技術的發展,可編程邏輯控制器(PLC)已經越來越多的應用在各個行業領域中,標準化水平越來越高。目前,已形成了 PLC控制器典型結構、程式語言、通信、用戶使用導則等系列國際標準(IEC61131)。其中,以程式語言標準(IEC61131-3)最為廣泛應用,所有可編程控制器均需要支持該標準支持的五種語言,包括IL、ST、LD、FBD和SFC。其中IL語言即指令表語句,最接近PLC機器語言的語言(類似彙編語言),其它四種為高級語言。普遍的,組態編程軟體在編譯以該五種語言編成的程序時,會將程序均轉換成以IL語言為描述的中間代碼。可以將中間代碼下載到PLC中按句進行解釋並執行(解釋型),也可以將中間代碼直接編譯成PLC的本地代碼下載運行。對於解釋執行方式,它的每一條PLC程序在執行前都需要進行複雜的軟體解釋工作,一條IL指令需要約5句 20句C語言程序來進行解釋,進一步需要約20條 100條精減指令集指令(以ARM指令集為例)。所以解釋型執行方式運行速度慢,只能用於中、低檔PLC。對於編譯執行方式,PLC的編程者需要提前將PLC程序針對指定的CPU處理器型號用指定的編譯器和編譯環境參數進行編譯方能正確下載運行,即只能用特定的編程軟體才能對PLC進行編程。替換一種MCU處理器晶片,或僅升級一個PLC內部組件,原有的組態編程軟體可能就無法再適用。所以其通用性差,產品的應用和升級成本高。此外,與解釋執行方式類似的是,編譯型執行方式雖然將PLC程序編譯為本地代碼,但仍需要採用通用處理器的精減指令集格式,每一條IL指令可能需要3-10條本地彙編指令;即使由其它PLC語言(如FBD、ST)直接編譯為本地彙編指令(不經由IL中間代碼),本地彙編畢竟非面向PLC程序的指令集結構,仍不可避免地有效率的損失。另一方面,在以MCU為處理核心的PLC控制器結構中,無論解釋型還是編譯型,都需要佔用大量MCU的工作,而MCU通常還需要完成其它重要任務(如通訊、顯示),PLC任務的執行和響應速度也因此受MCU其它工作的影響,難以保障其實時性和可靠性。
發明內容
為了克服現有技術的缺陷,本發明提供了一種PLC程序執行器IP核,其通過總線接口掛接在片上總線上,所述片上總線上同時掛接有MCU和存儲器,包括總線接口模塊、程序計數模塊、取指令模塊、尋址模塊、取數據模塊、執行模塊以及程序棧,所述總線接口模塊分別與所述程序計數模塊、讀指令模塊、尋址模塊、取數據模塊以及執行模塊連接,所述總線接口模塊包括多個寄存器;
其中,所述總線接口模塊通過所述多個寄存器接收所述MCU寫入的程序執行信息; 所述程序計數模塊更新程序的執行指令地址並交由所述取指令模塊;
所述取指令模塊根據所述執行指令地址從所述存儲器中獲取執行指令並分析和處理所述執行指令;
所述尋址模塊用於獲取所述執行指令的實際地址;
所述取數據模塊用於獲取所述執行指令的被操作數;
所述指令執行模塊完成對所述執行指令的執行,所述執行指令包括跳轉指令;
所述程序棧用於保存所述跳轉指令的地址。較佳地,所述PLC程序為與IL語言直接對應的指令集程序。較佳地,所述多個寄存器包括代碼段首地址寄存器、數據段首地址寄存器、程序計數寄存器、指令寄存器、控制寄存器以及狀態寄存器。較佳地,所述代碼段首地址寄存器與所述數據段首地址寄存器分別接收所述MCU寫入的需要執行的程序的代碼段首地址與該代碼段對應的數據段首地址,所述控制寄存器接收所述MCU寫入的啟動程序的命令。較佳地,所述取指令模塊將所述代碼段首地址載入所述程序計數寄存器,所述程序計數模塊將所述代碼段首地址交由所述取指令模塊,所述取指令模塊根據所述地址通過片上總線在所述存儲器中取出指令存入所述指令寄存器並分析該指令。較佳地,所述執行指令的被操作數為立即數或無操作數時,所述取指令模塊將所述執行指令交由所述指令執行模塊;所述執行指令的被操作數以偏移量的形式需要尋址獲得時,所述取指令模塊將該執行指令的被操作數交由所述尋址模塊。較佳地,所述尋址模塊通過該執行指令段表和偏移量信息尋得被操作數的實際地址,並交由所述取數據模塊;所述取數據模塊取出被操作數,並同該指令一同交由所述指令執行模塊。較佳地,所述指令執行單元根據該執行指令的類型進行處理:當所述指令執行模塊完成的是單條指令的執行時,則在所述狀態寄存器中設置指令完成標誌,並向程序計數模塊發送完成信號,程序計數寄存器自加I;當所述指令執行模塊無法完成指令的執行時,則在所述狀態寄存器中設置對應錯誤標誌,執行停止,同時發送中斷信號;當所述指令寄存器中的指令為跳轉指令(JMP)時,所述尋址模塊所尋得地址為跳轉點地址,將該跳轉地址載入到所述程序計數寄存器中,完成跳轉指令的執行;當所述指令寄存器中的指令為調用指令(CAL)時,所述尋址模塊所尋得地址為調用點地址,此時所述程序計數模塊將所述程序計數寄存器的值壓入所述程序棧中,並將所述尋址模塊尋得的跳轉地址載入到所述程序計數寄存器中,完成該調用指令的執行。較佳地,所述PLC程序為與IL語言直接對應的指令集程序。較佳地,所述PLC程序為與IL語言直接對應的指令集程序。較佳地,其順序讀取程序的IL指令。較佳地,其通過所述片上總線主動訪問或配置其它IP核或接受其它IP核的訪問或配置,所述片上總線為AMBA、CoreConnect> Wishbone、OCP、Avalon片上總線中的一種。較佳地,一種PLC程序執行器IP核的工作方法,該IP核通過總線接口掛接在片上總線上,所述片上總線上同時掛接有MCU和存儲器,其特徵在於,包括總線接口模塊、程序計數模塊、取指令模塊、尋址模塊、取數據模塊、執行模塊以及程序棧,所述總線接口模塊分別與所述程序計數模塊、讀指令模塊、尋址模塊、取數據模塊以及執行模塊連接,所述總線接口模塊包括代碼段首地址寄存器、數據段首地址寄存器、程序計數寄存器、指令寄存器、控制寄存器以及狀態寄存器;
該IP核的工作方法為:
(1)(MCU)向所述代碼段首地址寄存器、數據段首地址寄存器內分別寫入需要執行的程序的代碼段首地址與該代碼段對應的數據段首地址,並向所述控制寄存器寫入啟動程序的命令;
(2)所述程序計數寄存器載入所述代碼段首地址,所述程序計數模塊將所述代碼段首地址交由所述取指令模塊;
(3)所述取指令模塊根據所述地址通過片上總線在所述存儲器中取出指令並存入所述指令寄存器並分析該指令;
(4)當該指令的被操作數為立即數或無操作數,則所述取指令模塊將該指令交由所述指令執行模塊;當該指令的被操作數以偏移量的形式需要尋址獲得,所述指令寄存器將該指令的操作數信息交由所述尋址模塊,所述尋址模塊通過該指令段表和偏移量信息尋得被操作數的實際地址,並交由所述取數據模塊;
(5)所述取數據模塊取出被操作數,並同該指令一同交由所述指令執行模塊;
(6)所述指令執行單元根據該指令的類型進行處理:當所述指令執行模塊完成的是單條指令的執行時,則在所述狀態寄存器中設置指令完成標誌,並向程序計數模塊發送完成信號,程序計數寄存器自加1,重複(2廣(6)步驟;當所述指令執行模塊無法完成指令的執行時,則在所述狀態寄存器中設置對應錯誤標誌,執行停止,同時發送中斷信號;當所述指令寄存器中的指令為跳轉指令(JMP)時,所述尋址模塊所尋得地址為跳轉點地址,將該跳轉地址載入到所述程序計數寄存器中,繼續(2) (6)步驟;當所述指令寄存器中的指令為調用指令(CAL)時,所述尋址模塊所尋得地址為調用點地址,此時所述程序計數模塊將所述程序計數寄存器的值壓入所述程序棧中,並將所述尋址模塊尋得的跳轉地址載入到所述程序計數寄存器中,繼續(2) (6)步驟;
(7)在完成一個代碼段的執行後,所述程序計數模塊查詢所述程序棧是否為空,如仍有內容,說明已完成的代碼段是被調用的程序,彈出棧頂地址到所述程序計數寄存器,繼續(2廣(6)步驟;如所述程序棧已空,則程序完全結束,在所述狀態寄存器中設置程序完成標誌,同時發送中斷信號。與現有技術相比,本發明的有益效果如下:
1.以片上IP核的方式實現了可自主運行的IL程序執行器,使得PLC控制器對PLC程序的執行可以不再受制於MCU的型號、性能和軟體,同時以IP核形式存在的結構可以不作任何修改地集成到SoC晶片中。2.1P核執行32位定長的指令,與IEC61131-3中標範的IL指令直接對應,I條IL指令只要對應I條32位指令,在一個執行周期內完成執行,在同樣的工作頻率下,速度明顯高於基於MCU設計的PLC數倍。3.1P核以流水線的方式直接執行IL程序,提高了 IL程序的絕對速度,且與MCU的其它工作互不影響,實時性高。4.由於IL語言已標準化,與IL語言完全對應的指令集格式通用性高,可以極方便地實現PLC編程編譯軟體,其它各種程式語言可通過上位機的編程軟體編譯為IL指令並交由本IP核執行,提高了 PLC整體CPU模塊的執行速度。當然,實施本發明的任一產品並不一定需要同時達到以上所述的所有優點。
圖1為本發明實施例的結構示意圖。
具體實施例方式下方結合附圖和具體實施例對本發明做進一步的描述。本發明提供了一種PLC程序執行器IP核,其通過總線接口掛接在片上總線上,所述片上總線上同時掛接有MCU和存儲器,包括總線接口模塊、程序計數模塊、取指令模塊、尋址模塊、取數據模塊、執行模塊以及程序棧,所述總線接口模塊分別與所述程序計數模塊、讀指令模塊、尋址模塊、取數據模塊以及執行模塊連接,所述總線接口模塊包括多個寄存器。
實施例如圖1所示,為本發明的一較佳實施例,在本例中總線接口模塊為AHB接口模塊,其通過所述片上總線主動訪問或配置其它IP核或接受其它IP核的訪問或配置,所述片上總線可以是AMBA、CoreConnect> Wishbone、OCP、Avalon等SoC片上總線的一種,此處僅具此5例總線,本發明並不局限於本例中的5中總線,此處僅距離說明。本例以AMBA總線為例。本發明實施例提供了一種PLC程序執行器IP核,該IP核作為片上實現的集成電路IP核掛接在SoC晶片的AMBA總線2上,其通過AHB接口模塊I掛接在AMBA總線2上,AMBA總線2上同時掛接有MCU3和存儲器模塊4,該IP核包括AHB接口模塊1、程序計數模塊6、取指令模塊5、尋址模塊9、取數據模塊10與指令執行模塊8,AHB接口模塊I分別與程序計數模塊6、取指令模塊5、尋址模塊9、取數據模塊10以及指令執行模塊8連接,AHB接口模塊I包括代碼段首地址寄存器、數據段首地址寄存器、程序計數寄存器、指令寄存器、控制寄存器以及狀態寄存器;
該IP核的工作流程為:
(OMCU3向代碼段首地址寄存器、數據段首地址寄存器內分別寫入需要執行的程序的代碼段首地址與該代碼段對應的數據段首地址,並向所述控制寄存器寫入啟動程序的命令;
(2)所述程序計數寄存器載入所述代碼段首地址,程序計數模塊6將所述代碼段首地址交由取指令模塊5 ;
(3)取指令模塊5根據所述地址通過AMBA總線2在存儲器模塊4中取出指令並存入指令寄存器並分析該指令;
(4)當該指令的被操作數為立即數或無操作數,則取指令模塊5將該指令交由指令執行模塊8;當該指令的被操作數以偏移量的形式需要尋址獲得,所述指令寄存器將該指令的操作數信息交由所述尋址模塊9,尋址模塊9通過該指令段表和偏移量信息尋得被操作數的實際地址,並交由取數據模塊10 ;
(5)取數據模塊10取出數據,並同該指令一同交由指令執行模塊8;
(6)指令執行模塊8根據該指令的類型進行處理:當指令執行模塊8完成的是單條指令的執行時,則在所述狀態寄存器中設置指令完成標誌,並向程序計數模塊6發送完成信號,程序計數寄存器自加1,重複(2廣(6)步驟;當指令執行模塊8無法完成指令的執行時,則在所述狀態寄存器中設置對應錯誤標誌,執行停止,同時發送中斷信號;當所述指令寄存器中的指令為跳轉指令(JMP)時,尋址模塊9所尋得地址為跳轉點地址,將該跳轉地址載入到所述程序計數寄存器中,繼續(2廣(6)步驟;當所述指令寄存器中的指令為調用指令(CAL)時,尋址模塊9所尋得地址為調用點地址,此時程序計數模塊6將所述程序計數寄存器的值壓入程序棧7中,並將尋址模塊9尋得的跳轉地址載入到所述程序計數寄存器中,繼續(2) (6)步驟;
(7)在完成一個代碼段的執行後,程序計數模塊6查詢程序棧7是否為空,如仍有內容,說明已完成的代碼段是被調用的程序,彈出棧頂地址到所述程序計數寄存器,繼續(2廣(6)步驟;如程序棧7已空,則程序完全結束,在所述狀態寄存器中設置程序完成標誌,同時發送中斷信號。其中,本IP核所執行程序的指令集是與IL指令直接對應的32位定長指令集,IL語言程序執行器IP核可以自主的順序讀取並執行整段IL指令程序;其中高8位用與表徵IL指令碼,另24位用於表徵該指令碼的具體參數(如被操作數類型)和被操作數,被操作數可以是立即數,也可以是存放在存儲器中以段號和段內偏移量為表徵的命令碼或數據。在具體實現中,指令執行模塊還可以分為解碼、運算等子級流水線,尋址模塊還可以分為段地址尋址、目標地址尋址等子級流水線。如下列表舉例說明各種指令的具體格式定義:
權利要求
1.一種PLC程序執行器IP核,其通過總線接口掛接在片上總線上,所述片上總線上同時掛接有MCU和存儲器,其特徵在於,包括總線接口模塊、程序計數模塊、取指令模塊、尋址模塊、取數據模塊、執行模塊以及程序棧,所述總線接口模塊分別與所述程序計數模塊、讀指令模塊、尋址模塊、取數據模塊以及執行模塊連接,所述總線接口模塊包括多個寄存器; 其中,所述總線接口模塊通過所述多個寄存器接收所述MCU寫入的程序執行信息; 所述程序計數模塊更新程序的執行指令地址並交由所述取指令模塊; 所述取指令模塊根據所述執行指令地址從所述存儲器中獲取執行指令並分析和處理所述執行指令; 所述尋址模塊用於獲取所述執行指令的實際地址; 所述取數據模塊用於獲取所述執行指令的被操作數; 所述指令執行模塊完成對所述執行指令的執行,所述執行指令包括跳轉指令; 所述程序棧用於保存所述跳轉指令的地址。
2.如權利要求1所述的PLC程序執行器IP核,其特徵在於,所述多個寄存器包括代碼段首地址寄存器、數據段首地址寄存器、程序計數寄存器、指令寄存器、控制寄存器以及狀態寄存器。
3.如權利要求2所述的PLC程序執行器IP核,其特徵在於,所述代碼段首地址寄存器與所述數據段首地址寄存器分別接收所述MCU寫入的需要執行的程序的代碼段首地址與該代碼段對應的數據段首地址,所述控制寄存器接收所述MCU寫入的啟動程序的命令。
4.如權利要求2所述的PLC程序執行器IP核,其特徵在於,所述取指令模塊將所述代碼段首地址載入所述程序計數寄存器,所述程序計數模塊將所述代碼段首地址交由所述取指令模塊,所述取指令模塊根據所述地址通過所述片上總線在所述存儲器中取出指令存入所述指令寄存器並分析該指令。
5.如權利要求4所述的PLC程序執行器IP核,其特徵在於,所述執行指令的被操作數為立即數或無操作數時,所述取指令模塊將所述執行指令交由所述指令執行模塊;所述執行指令的被操作數以偏移量的形式需要尋址獲得時,所述取指令模塊將該執行指令的被操作數交由所述尋址模塊。
6.如權利要求5所述的PLC程序執行器IP核,其特徵在於,所述尋址模塊通過該執行指令段表和偏移量信息尋得被操作數的實際地址,並交由所述取數據模塊;所述取數據模塊取出被操作數,並同該指令一同交由所述指令執行模塊。
7.如權利要求6所述的PLC程序執行器IP核,其特徵在於,所述指令執行單元根據該執行指令的類型進行處理:當所述指令執行模塊完成的是單條指令的執行時,則在所述狀態寄存器中設置指令完成標誌,並向程序計數模塊發送完成信號,程序計數寄存器自加I ;當所述指令執行模塊無法完成指令的執行時,則在所述狀態寄存器中設置對應錯誤標誌,執行停止,同時發送中斷信號;當所述指令寄存器中的指令為跳轉指令JMP時,所述尋址模塊所尋得地址為跳轉點地址,將該跳轉地址載入到所述程序計數寄存器中,完成跳轉指令的執行;當所述指令寄存器中的指令為調用指令CAL時,所述尋址模塊所尋得地址為調用點地址,此時所述程序計數模塊將所述程序計數寄存器的值壓入所述程序棧中,並將所述尋址模塊尋得的跳轉地址載入到所述程序計數寄存器中,完成該調用指令的執行。
8.如權利要求1所述的PLC程序執行器IP核, 其特徵在於,所述PLC程序為與IL語言直接對應的指令集程序。
9.如權利要求8所述的PLC程序執行器IP核,其特徵在於,所述指令是與IL指令直接對應的32位定長指令,其中高8位用於表徵指令碼,另24位表徵該指令碼的具體參數和被操作數。
10.如權利要求8所述的PLC程序執行器IP核,其特徵在於,其順序讀取程序的IL指令。
11.如權利要求1所述的PLC程序執行器IP核,其特徵在於,其通過所述片上總線主動訪問或配置其它IP核或接受其它IP核的訪問或配置,所述片上總線為AMBA、CoreConnect、Wishbone、OCP、Avalon片上總線中的一種。
12.—種PLC程序執行器IP核,其通過總線接口掛接在片上總線上,所述片上總線上同時掛接有MCU和存儲器,其特徵在於,包括總線接口模塊、程序計數模塊、取指令模塊、尋址模塊、取數據模塊、執行模塊以及程序棧,所述總線接口模塊分別與所述程序計數模塊、讀指令模塊、尋址模塊、取數據模塊以及執行模塊連接,所述總線接口模塊包括代碼段首地址寄存器、數據段首地址寄存器、程序計數寄存器、指令寄存器、控制寄存器以及狀態寄存器; 該IP核的工作方法為: (1)MCU向所述代碼段首地址寄存器、數據段首地址寄存器內分別寫入需要執行的程序的代碼段首地址與該代碼段對應的數據段首地址,並向所述控制寄存器寫入啟動程序的命令; (2)所述程序計數寄存器載入所述代碼段首地址,所述程序計數模塊將所述代碼段首地址交由所述取指令模塊; (3)所述取指令模塊根據所述地址通過片上總線在所述存儲器中取出指令並存入所述指令寄存器並分析該指令; (4)當該指令的被操作數為立即數或無操作數,則所述取指令模塊將該指令交由所述指令執行模塊;當該指令的被操作數以偏移量的形式需要尋址獲得,所述指令寄存器將該指令的操作數信息交由所述尋址模塊,所述尋址模塊通過該指令段表和偏移量信息尋得被操作數的實際地址,並交由所述取數據模塊; (5)所述取數據模塊取出被操作數,並同該指令一同交由所述指令執行模塊; (6)所述指令執行單元根據該指令的類型進行處理:當所述指令執行模塊完成的是單條指令的執行時,則在所述狀態寄存器中設置指令完成標誌,並向程序計數模塊發送完成信號,程序計數寄存器自加1,重複(2廣(6)步驟;當所述指令執行模塊無法完成指令的執行時,則在所述狀態寄存器中設置對應錯誤標誌,執行停止,同時發送中斷信號;當所述指令寄存器中的指令為跳轉指令JMP時,所述尋址模塊所尋得地址為跳轉點地址,將該跳轉地址載入到所述程序計數寄存器中,繼續(2) (6)步驟;當所述指令寄存器中的指令為調用指令CAL時,所述尋址模塊所尋得地址為調用點地址,此時所述程序計數模塊將所述程序計數寄存器的值壓入所述程序棧中,並將所述尋址模塊尋得的跳轉地址載入到所述程序計數寄存器中,繼續(2) (6)步驟; (7)在完成一個代碼段的執行後,所述程序計數模塊查詢所述程序棧是否為空,如仍有內容,說明已完成的代碼段是被調用的程序,彈出棧頂地址到所述程序計數寄存器,繼續(2廣(6)步驟;如所述程序棧已空,則程序完全結束,在所述狀態寄存器中設置程序完成標誌,同時發送中斷信號。
13.如權利要求12所述的方法,其特徵在於,其通過所述片上總線主動訪問或配置其它IP核或接受其它IP核的訪問或配置,所述片上總線為AMBA、CoreConnect> Wishbone、OCP、Avalon片上 總線中的一種。
全文摘要
本發明公開了一種PLC程序執行器IP核,其通過總線接口掛接在片上總線上,所述片上總線上同時掛接有MCU和存儲器,其包括總線接口模塊、程序計數模塊、讀指令模塊、尋址模塊、取數據模塊與執行模塊,所述總線接口模塊包括多個寄存器,PLC程序為IL語言程序,以32位定長指令集格式存儲,該IP通過總線接口掛接在片上總線上,通過寄存器接收控制信號,從同樣掛接在片上總線上的存儲器中讀取IL指令並通過各模塊與寄存器配合執行指令。本發明以更快的速度和更高的效率進行PLC程序的執行,同時IP核結構的設計避免了依靠MCU執行而帶來的性能影響和硬體相關等缺點,接口開放易移植。
文檔編號G06F9/30GK103207771SQ20131008780
公開日2013年7月17日 申請日期2013年3月19日 優先權日2013年3月19日
發明者楊大勝, 潘再生, 張偉寧 申請人:浙江中控研究院有限公司