專利名稱:高性能可編程控制器專用處理器體系結(jié)構(gòu)及其實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種應(yīng)用于自動(dòng)控制領(lǐng)域中的處理器,具體的說是一種高性能可編程控制器的處理器體系結(jié)構(gòu)及其實(shí)現(xiàn)方法。
背景技術(shù):
可編程控制器(PLC)是以微處理器為核心,把自動(dòng)化技術(shù)、通信技術(shù)融為一體的新型工業(yè)自動(dòng)控制裝置??删幊炭刂破饕云淇煽啃愿?、抗干擾能力強(qiáng)、實(shí)時(shí)性強(qiáng)、控制程序可變、體積小、功耗低、使用方便、易維護(hù)等特點(diǎn),廣泛應(yīng)用于工業(yè)行業(yè)的各個(gè)領(lǐng)域,如鋼鐵、 石油、化工、電力、建材、機(jī)械制造、汽車、輕紡、交通運(yùn)輸?shù)?。隨著可編程控制器國際標(biāo)準(zhǔn)IEC_61131_3的頒布,可編程控制器在系統(tǒng)結(jié)構(gòu)上, 從傳統(tǒng)的單機(jī)向多處理器發(fā)展;在控制系統(tǒng)組態(tài)上,從單機(jī)控制系統(tǒng)到分布式及過程控制系統(tǒng)發(fā)展;在編程語言上,呈多樣化及簡易化發(fā)展,創(chuàng)造了符合控制要求及通信能力的編程環(huán)境。由于信息技術(shù)的迅猛發(fā)展,可編程控制器對工業(yè)網(wǎng)絡(luò)通信能力及實(shí)時(shí)性要求越來越高。這不僅要求可編程控制器通信能力的提高,而且需求可編程控制器的核心處理器提高其處理性能?,F(xiàn)有自主研發(fā)的可編程控制器微處理器,大多采用通用微處理器或者通用處理器和布爾協(xié)處理器相結(jié)合的形式。通用處理器主要面向字節(jié)、字的處理,而可編程控制器指令主要面向比特位操作,占可編程控制器指令使用頻率的69%。這就迫切需要推出適合于可編程控制器處理特征的處理器。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的處理器速度不能充分滿足工業(yè)自動(dòng)控制領(lǐng)域有關(guān)實(shí)時(shí)性的要求,本發(fā)明要解決的技術(shù)問題是提供一種能夠很好的滿足實(shí)時(shí)性要求的高性能可編程控制器的處理器體系結(jié)構(gòu)及其實(shí)現(xiàn)方法。為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案是本發(fā)明一種高性能可編程控制器的處理器體系結(jié)構(gòu),包括PLC專用指令集處理器、通用處理器,其中PLC專用指令集處理器通過PLC專用集處理器與通用處理器的接口與通用處理器相連;所述PLC專用指令集處理器具有以下結(jié)構(gòu)指令存儲(chǔ)器、指令計(jì)數(shù)器、指令寄存器、指令譯碼器、控制單元、功能塊單元、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、寄存器組、位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、1\0數(shù)據(jù)存儲(chǔ)器、狀態(tài)寄存器,其中指令存儲(chǔ)器,存儲(chǔ)通用處理器并行編譯后的指令,在指令計(jì)數(shù)器的控制下,將指令發(fā)送至指令寄存器;指令計(jì)數(shù)器,計(jì)算下一條指令地址,實(shí)現(xiàn)指令地址的自增,并在跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制下,按照跳轉(zhuǎn)調(diào)用指令中指令地址偏移需求,改變指令地址;在位處理器的控制下,按照可跳轉(zhuǎn)位邏輯運(yùn)算指令指令地址偏移需求,改變指令地址;將自增后的指令地址、執(zhí)行跳轉(zhuǎn)調(diào)用指令后改變的指令地址及執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令后改變的指令地址,通過指令計(jì)數(shù)器中指令地址選擇,將指令存儲(chǔ)器中對應(yīng)的指令輸出至指令寄存器;指令寄存器,接收指令計(jì)數(shù)器選擇的指令存儲(chǔ)器中的指令,輸出該指令至指令譯碼器;指令譯碼器,將從指令寄存器輸入的指令進(jìn)行譯碼后,將操作碼輸出至位處理器、 跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、功能塊單元,將操作數(shù)地址輸出至寄存器組、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器及1\0存儲(chǔ)器;控制單元,向指令計(jì)數(shù)器、指令寄存器、指令譯碼器發(fā)送控制指令;接收指令譯碼器操作碼中的組碼,分別對位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元和功能塊單元進(jìn)行控制;并控制與通用處理器進(jìn)行中斷信號的接收或發(fā)送;功能塊單元,接收控制單元的控制信號和指令譯碼器的操作碼,與功能塊寄存器組進(jìn)行數(shù)據(jù)的存取操作;功能塊寄存器組,存儲(chǔ)來自功能塊單元的執(zhí)行結(jié)果,根據(jù)來自跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制信號及指令譯碼器對其的操作數(shù)地址的選擇信號,存取數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù),或取出功能塊寄存器組的數(shù)據(jù),并通過多路選擇器送至寄存器組中的累加器堆棧中;數(shù)據(jù)存儲(chǔ)器,通過跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制及指令譯碼器對其操作數(shù)地址的選擇,存取寄存器組、功能塊寄存器組的數(shù)據(jù);寄存器組,通過跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制及指令譯碼器傳來的操作數(shù)地址,選擇寄存器組中的寄存器,將該寄存器中的操作數(shù)輸出至位處理器進(jìn)行處理;或存取數(shù)據(jù)存儲(chǔ)器及1\0數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù);位處理器,通過指令譯碼器的操作碼,對來自寄存器組的操作數(shù)以及通過多路選擇器選擇的來自功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、1\0數(shù)據(jù)存儲(chǔ)器并存儲(chǔ)在寄存器組累加器堆棧中的數(shù)據(jù)進(jìn)行相應(yīng)處理,并將處理結(jié)果存儲(chǔ)到寄存器組、狀態(tài)寄存器、數(shù)據(jù)存儲(chǔ)器或1\0 數(shù)據(jù)存儲(chǔ)器中;跳轉(zhuǎn)調(diào)用指令及存取指令處理單元,接收來自控制單元的控制信號,根據(jù)指令譯碼器傳來的操作碼,分別對指令計(jì)數(shù)器進(jìn)行操作,對寄存器組、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、1\0數(shù)據(jù)存儲(chǔ)器進(jìn)行存取操作控制;1\0數(shù)據(jù)存儲(chǔ)器,接收來自跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制信號以及指令譯碼器的操作數(shù)地址選擇信號,與寄存器組、功能塊寄存器組以及1\0數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)存??;狀態(tài)寄存器,保存位處理器執(zhí)行后的狀態(tài)結(jié)果,并通過中斷方式,將狀態(tài)信號發(fā)送至通用處理器。功能塊單元中每類功能塊并行擴(kuò)展1 16個(gè)同類功能塊單元,每個(gè)功能塊具有自己的功能塊寄存器組。所述指令譯碼器譯碼使用的指令格式為位邏輯運(yùn)算指令格式、可跳轉(zhuǎn)位邏輯運(yùn)算指令格式、跳轉(zhuǎn)調(diào)用及存取指令格式以及功能塊指令格式,其中位邏輯運(yùn)算指令格式,第31 30位為組碼;第四 沈位為操作碼 ’第25位用于判斷當(dāng)前位邏輯運(yùn)算指令的操作數(shù)是否存儲(chǔ)在累加器堆棧當(dāng)中;第M位為條件位,用于對通用處理器運(yùn)算的條件使能,其值決定于存儲(chǔ)在狀態(tài)寄存器中的狀態(tài)結(jié)果;第23 16位, 用于存儲(chǔ)保存位邏輯運(yùn)算結(jié)果的寄存器地址,其寄存器地址編碼位數(shù)為8位;第15 8位, 用于存儲(chǔ)保存位邏輯運(yùn)算操作數(shù)之一的寄存器地址;第7 0位,用于存儲(chǔ)保存位邏輯運(yùn)算另一操作數(shù)的寄存器地址。可跳轉(zhuǎn)位邏輯運(yùn)算指令格式,第31 30位為組碼;第29 沈位為操作碼;第25 位決定是否跳轉(zhuǎn)的條件位;第M位為條件位,用于對通用處理器運(yùn)算的條件使能,其值決定于狀態(tài)寄存器的狀態(tài)結(jié)果;第23 8位,為跳轉(zhuǎn)偏移位,其跳轉(zhuǎn)偏移量為該可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)到可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符或累加器堆棧中的操作數(shù)出棧并求或指令的偏移量;第7 0位,為存儲(chǔ)累加器堆棧指針寄存器保存的當(dāng)前累加器堆棧值的地址;跳轉(zhuǎn)調(diào)用及存取指令格式,第31 30位為組碼;第四 沈位為操作碼;第25位, 用于區(qū)分跳轉(zhuǎn)調(diào)用指令及存取指令,當(dāng)I = 0時(shí),代表跳轉(zhuǎn)調(diào)用指令,當(dāng)I = 1時(shí),代表存取指令;第M位,為條件位,用于基于條件位跳轉(zhuǎn)偏移的跳轉(zhuǎn)調(diào)用指令,其條件位的值來自于累加器堆棧當(dāng)前值或功能塊單元輸出值或來自通用處理器的運(yùn)算結(jié)果,如通用處理器執(zhí)行比較指令后的比較結(jié)果;第23 16位,表示累加器堆棧棧頂?shù)刂坊蚣拇嫫鞯刂罚坏?5 0 位,表示跳轉(zhuǎn)調(diào)用偏移位或操作數(shù)存取地址;功能塊指令格式,第31 30位為組碼;第四 沈位為操作碼;第25位,表示復(fù)位優(yōu)先位或加計(jì)數(shù)器輸入的上升沿觸發(fā)位;第M位,表示置位優(yōu)先位或減計(jì)數(shù)器輸入的上升沿觸發(fā)位;第23位表示復(fù)位或時(shí)鐘電平;第22位,表示裝入加減計(jì)數(shù)器初始值使能位或計(jì)時(shí)器使能位;第21 11位,表示計(jì)數(shù)器當(dāng)前值或計(jì)時(shí)器當(dāng)前值;第10 0位,表示計(jì)數(shù)器予置值或計(jì)時(shí)器予置值。所述指令譯碼器譯碼使用的指令格式中組碼及操作碼表示的指令集為位邏輯運(yùn)算指令集、可跳轉(zhuǎn)位邏輯運(yùn)算指令集、跳轉(zhuǎn)調(diào)用指令集、存取指令集、功能塊指令集,其中位邏輯運(yùn)算指令集包括位與操作指令、位與非操作指令、位或操作指令、位異或操作指令以及位異或非操作指令;可跳轉(zhuǎn)位邏輯運(yùn)算指令集包括位累與操作指令、位累與非操作指令、位累或操作指令、位累或非操作指令、可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符、累加器堆棧棧頂操作數(shù)出棧并求或指令;跳轉(zhuǎn)調(diào)用指令集包括無條件跳轉(zhuǎn)指令、符合條件跳轉(zhuǎn)指令、不符合條件跳轉(zhuǎn)指令、無條件功能塊調(diào)用指令、符合條件功能塊調(diào)用指令、不符合條件功能塊調(diào)用指令、無條件從功能或功能塊返回指令、符合條件功能或功能塊返回指令、不符合條件功能或功能塊返回指令。存取指令集包括L0ADQBIT 取功能塊單元的布爾輸出值到累加器堆棧中;ST0REQBIT 將功能塊單元的布爾輸出值存儲(chǔ)到功能塊寄存器組中;L0ADNQBIT:取功能塊單元的輸出值后取反輸出到累加器堆棧中;ST0RENQBIT 將功能塊單元的輸出值取反存儲(chǔ)到功能塊寄存器組中;L0ADMBIT 從存儲(chǔ)器單元取操作數(shù)到寄存器組或功能塊寄存器組中;
ST0REMBIT 將寄存器組或功能塊寄存器組的數(shù)據(jù)直接存儲(chǔ)到存儲(chǔ)器單元中;L0ADNMBIT:從存儲(chǔ)器單元取操作數(shù)取反后存儲(chǔ)到寄存器組或功能塊寄存器組中;ST0RENMBIT 將寄存器組或功能塊寄存器組的數(shù)據(jù)取反后存儲(chǔ)到存儲(chǔ)器單元中;L0ADI0BIT 從1\0數(shù)據(jù)存儲(chǔ)器直接取數(shù)到寄存器組中;ST0REI0BIT 將寄存器組數(shù)據(jù)直接送到1\0數(shù)據(jù)存儲(chǔ)器中;L0ADNI0BIT 從1\0數(shù)據(jù)存儲(chǔ)器取的數(shù)據(jù)取反后存儲(chǔ)到寄存器組中;ST0RENI0BIT 將寄存器組數(shù)據(jù)取反后送到從1\0數(shù)據(jù)存儲(chǔ)器中;L0ADRMBIT 將寄存器組的內(nèi)部寄存器的值壓棧到累加器堆棧中;ST0RERMBIT 將累加器堆棧中的值出棧到寄存器組的內(nèi)部寄存器中;L0ADNRMBIT 將寄存器組的內(nèi)部寄存器的值取反壓棧到累加器堆棧中;ST0RENRMBIT 將累加器堆棧中的值取反出棧到寄存器組的內(nèi)部寄存器中;功能塊指令集包括置位優(yōu)先功能塊指令、復(fù)位優(yōu)先功能塊指令、上升沿檢測功能塊指令、下降沿檢測功能塊指令、加計(jì)數(shù)器功能塊指令、減計(jì)數(shù)器功能塊指令、加減計(jì)數(shù)器功能塊指令、脈沖功能塊指令、接通延時(shí)功能塊指令、斷開延時(shí)功能塊指令、實(shí)時(shí)時(shí)鐘功能塊指令。本發(fā)明一種高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法,按照該可編程控制器專用指令集處理器采用四級流水線,包括以下步驟取指階段依據(jù)指令計(jì)數(shù)器計(jì)算的指令地址,從指令存儲(chǔ)器取指令至指令寄存器當(dāng)中;譯碼階段從指令寄存器取出指令送入指令譯碼器進(jìn)行譯碼,通過指令中操作數(shù)地址,取出操作數(shù);并依據(jù)指令中組碼,將相應(yīng)的操作碼及操作數(shù)送至對應(yīng)的處理單元中;執(zhí)行階段依據(jù)指令譯碼器發(fā)出的操作碼及操作數(shù),位處理器、功能塊單元、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元給予相應(yīng)處理;如執(zhí)行的指令不是可編程控制器專用指令集處理器的指令時(shí),則由控制單元向通用處理器發(fā)出中斷請求,該可編程控制器專用指令集處理器可繼續(xù)執(zhí)行與通用處理器指令無依賴關(guān)系的指令,當(dāng)通用處理器向可編程控制器專用指令集處理器發(fā)送中斷請求時(shí),可編程控制器專用指令集處理器將保存通用處理器的執(zhí)行結(jié)果到狀態(tài)寄存器中;將存儲(chǔ)器訪問階段與執(zhí)行階段,合為執(zhí)行階段;存儲(chǔ)器訪問由跳轉(zhuǎn)調(diào)用指令及存取指令處理單元執(zhí)行;回寫階段將可編程控制器專用指令集處理器的結(jié)果,依據(jù)存取指令類型寫回累加器堆棧、內(nèi)部寄存器、數(shù)據(jù)存儲(chǔ)器內(nèi)部寄存器或1\0存儲(chǔ)器當(dāng)中。所述位處理器處理位邏輯運(yùn)算指令及可跳轉(zhuǎn)位邏輯運(yùn)算指令當(dāng)位處理器執(zhí)行位邏輯運(yùn)算指令時(shí),從累加器堆棧棧頂和寄存器組中取操作數(shù)后,進(jìn)行位邏輯運(yùn)算操作,將運(yùn)算結(jié)果存儲(chǔ)到累加器堆棧棧頂或寄存器組中;執(zhí)行完成后存儲(chǔ)位處理器的運(yùn)算結(jié)果。當(dāng)位處理器執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令時(shí),按可跳轉(zhuǎn)位邏輯運(yùn)算指令的執(zhí)行過程執(zhí)行,執(zhí)行完成后存儲(chǔ)位處理器的運(yùn)算結(jié)果;所述可跳轉(zhuǎn)位邏輯運(yùn)算指令的執(zhí)行過程為由位處理器判斷該可跳轉(zhuǎn)位邏輯指令為位累與操作指令、位累與非操作指令、位累或操作指令還是位累或非操作指令;若為位累與操作指令或位累與非操作指令,且累加器堆棧的棧頂值為0,則執(zhí)行與操作或與非操作,將執(zhí)行結(jié)果存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中跳轉(zhuǎn)條件位為 1,并設(shè)置跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符與該可跳轉(zhuǎn)位邏輯運(yùn)算指令的偏移量,執(zhí)行跳轉(zhuǎn);一次執(zhí)行過程結(jié)束。如果不滿足“位累與操作指令或位累與非操作指令,且累加器堆棧的棧頂值為0” 條件,則不執(zhí)行跳轉(zhuǎn),只執(zhí)行位累與操作或位累與非操作,并設(shè)置指令格式中跳轉(zhuǎn)條件位為 O0若為位累或操作指令或位累或非操作指令,且累加器堆棧的棧頂值為1,則執(zhí)行位累或操作或位累或非操作,將執(zhí)行結(jié)果存儲(chǔ)存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中跳轉(zhuǎn)條件位為1,設(shè)置跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算跳轉(zhuǎn)結(jié)束符指令或累加器堆棧中的操作數(shù)出棧并求或指令到該位累或操作指令的偏移量;執(zhí)行跳轉(zhuǎn);一次執(zhí)行過程結(jié)束。如果不滿足“位累或操作指令或位累或非操作指令,且累加器堆棧的棧頂值為“1” 條件,則不執(zhí)行跳轉(zhuǎn),只執(zhí)行位累或操作或位累或非操作,并設(shè)置指令格式中跳轉(zhuǎn)條件位為 O0所述可跳轉(zhuǎn)位邏輯運(yùn)算指令中的位累與操作指令、位累與非操作指令、位累或操作指令、位累或非操作指令,其執(zhí)行過程與累加器堆棧的值相關(guān),為區(qū)別于位邏輯運(yùn)算指令中的與操作指令、與非操作指令、或操作指令、或非操作指令而命名。本發(fā)明具有以下有益效果及優(yōu)點(diǎn)1.本發(fā)明通過設(shè)計(jì)符合PLC指令特征的PLC專用指令集,減少PLC處理器執(zhí)行的指令數(shù),加快可編程控制器程序的執(zhí)行速度。2.本發(fā)明通過設(shè)計(jì)嵌入在PLC專用指令集處理器中的功能塊單元及功能塊寄存器組,提高了 PLC處理器對功能塊指令的處理性能。3.本發(fā)明通過設(shè)計(jì)PLC專用指令集處理器中符合PLC高頻數(shù)據(jù)訪問特征的寄存器組、數(shù)據(jù)存儲(chǔ)器、1\0數(shù)據(jù)存儲(chǔ)器的直接存取方式,加快了 PLC數(shù)據(jù)的存取速度。4.本發(fā)明通過設(shè)計(jì)針對PLC大多采用位數(shù)據(jù)類型的特征,對寄存器組、數(shù)據(jù)存儲(chǔ)器按位編址,提高了 PLC專用指令集處理器對位數(shù)據(jù)存取的速度,相應(yīng)地提高了 PLC專用指令集處理器的處理性能。
圖1為本發(fā)明中可編程控制器專用處理器的體系結(jié)構(gòu)框圖;圖2為本發(fā)明中可編程控制器專用指令集處理器的體系結(jié)構(gòu)框圖;圖3為本發(fā)明中可編程控制器專用指令集處理器的位處理器框圖;圖4為本發(fā)明中可編程控制器專用指令集處理器的位處理器執(zhí)行過程圖;圖5為本發(fā)明中可編程控制器專用指令集處理器的可跳轉(zhuǎn)位邏輯運(yùn)算流程圖;圖6為本發(fā)明中可編程控制器專用指令集處理器的指令計(jì)數(shù)器;圖7為本發(fā)明中可編程控制器專用指令集處理器工作流程圖。
具體實(shí)施方式
本高性能可編程控制器專用處理器,擁有符合可編程控制器特征的專用指令集, 并能夠?qū)崿F(xiàn)硬件加速。通過分析可編程控制器指令,設(shè)計(jì)出專用的可編程控制器指令集,和其相對應(yīng)的可編程控制器專用處理器的體系結(jié)構(gòu),使其處理器能夠快速處理可編程控制器程序,從而提高的可編程控制器處理性能。如圖1所示,可編程控制器處理器所在片上系統(tǒng)體系結(jié)構(gòu)包括在高速總線上的可編程控制器處理器、肚hernet MAC 10/100M及高速總線仲裁器;并通過高速/低速總線橋,連接低速總線上的外設(shè),如AD、DA轉(zhuǎn)換器,通用型輸入輸出接口,計(jì)時(shí)器,計(jì)數(shù)器及中斷控制器。其中該可編程控制器處理器包括通用處理器與PLC專用指令集處理器,其接口主要通過中斷方式,利用緩沖器實(shí)現(xiàn)數(shù)據(jù)交換。其可編程控制器處理器實(shí)施過程如下通用處理器通過可編程控制器并行編譯器,將編譯好的數(shù)據(jù)存儲(chǔ)到SRAM中。待PLC專用指令集處理器初始化后,將SRAM中PLC專用指令集處理器的相關(guān)數(shù)據(jù)傳輸?shù)絇LC專用指令集處理器中的指令RAM和數(shù)據(jù)RAM中。當(dāng)PLC專用指令集處理器執(zhí)行到非PLC專用指令集中的指令時(shí),向通用處理器發(fā)出中斷,并將數(shù)據(jù)通過緩沖器發(fā)送給通用處理器。若PLC專用指令集處理器中的下一條指令與通用處理器將要執(zhí)行的指令無關(guān)時(shí),兩處理器可并行執(zhí)行;否則 PLC專用指令集處理器將等待通用處理器執(zhí)行結(jié)果。待通用處理器執(zhí)行完成后,向PLC專用指令集處理器發(fā)出中斷,并將數(shù)據(jù)傳輸?shù)骄彌_器中。如圖2所示,所述PLC專用指令集處理器具有以下結(jié)構(gòu)指令存儲(chǔ)器、指令計(jì)數(shù)器、 指令寄存器、指令譯碼器、控制單元、功能塊單元、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、寄存器組、 位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、1\0數(shù)據(jù)存儲(chǔ)器、狀態(tài)寄存器,其中指令存儲(chǔ)器,存儲(chǔ)通用處理器并行編譯后的指令,在指令計(jì)數(shù)器的控制下,將指令發(fā)送至指令寄存器;指令計(jì)數(shù)器,計(jì)算下一條指令地址,實(shí)現(xiàn)指令地址的自增,并在跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制下,按照跳轉(zhuǎn)調(diào)用指令中指令地址偏移需求,改變指令地址;在位處理器的控制下,按照可跳轉(zhuǎn)位邏輯運(yùn)算指令指令地址偏移需求,改變指令地址;將自增后的指令地址、執(zhí)行跳轉(zhuǎn)調(diào)用指令后改變的指令地址及執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令后改變的指令地址,通過指令計(jì)數(shù)器中指令地址選擇,將指令存儲(chǔ)器中對應(yīng)的指令輸出至指令寄存器;指令寄存器,接收指令計(jì)數(shù)器選擇的指令存儲(chǔ)器中的指令,輸出該指令至指令譯碼器;指令譯碼器,將從指令寄存器輸入的指令進(jìn)行譯碼后,將操作碼輸出至位處理器、 跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、功能塊單元,將操作數(shù)地址輸出至寄存器組、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器及1\0存儲(chǔ)器;控制單元,向指令計(jì)數(shù)器、指令寄存器、指令譯碼器發(fā)送控制指令;接收指令譯碼器操作碼中的組碼,分別對位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元和功能塊單元進(jìn)行控制;并控制與通用處理器進(jìn)行中斷信號的接收或發(fā)送;功能塊單元,接收控制單元的控制信號和指令譯碼器的操作碼,與功能塊寄存器組進(jìn)行數(shù)據(jù)的存取操作;功能塊寄存器組,存儲(chǔ)來自功能塊單元的執(zhí)行結(jié)果,根據(jù)來自跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制信號及指令譯碼器對其的操作數(shù)地址的選擇信號,存取數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù),或取出功能塊寄存器組的數(shù)據(jù),并通過多路選擇器送至寄存器組中的累加器堆棧中;數(shù)據(jù)存儲(chǔ)器,通過跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制及指令譯碼器對其操作數(shù)地址的選擇,存取寄存器組、功能塊寄存器組的數(shù)據(jù);寄存器組,通過跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制及指令譯碼器傳來的操作數(shù)地址,選擇寄存器組中的寄存器,將該寄存器中的操作數(shù)輸出至位處理器進(jìn)行處理;或存取數(shù)據(jù)存儲(chǔ)器及1\0數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù);位處理器,通過指令譯碼器的操作碼,對來自寄存器組的操作數(shù)以及通過多路選擇器選擇的來自功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、1\0數(shù)據(jù)存儲(chǔ)器并存儲(chǔ)在寄存器組累加器堆棧中的數(shù)據(jù)進(jìn)行相應(yīng)處理,并將處理結(jié)果存儲(chǔ)到寄存器組、狀態(tài)寄存器、數(shù)據(jù)存儲(chǔ)器或1\0 數(shù)據(jù)存儲(chǔ)器中;跳轉(zhuǎn)調(diào)用指令及存取指令處理單元,接收來自控制單元的控制信號,根據(jù)指令譯碼器傳來的操作碼,分別對指令計(jì)數(shù)器進(jìn)行操作,對寄存器組、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、1\0數(shù)據(jù)存儲(chǔ)器進(jìn)行存取操作控制。1\0數(shù)據(jù)存儲(chǔ)器,接收來自跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制信號以及指令譯碼器的操作數(shù)地址選擇信號,與寄存器組、功能塊寄存器組以及1\0數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)存取;狀態(tài)寄存器,保存位處理器執(zhí)行后的狀態(tài)結(jié)果,并通過中斷方式,將狀態(tài)信號發(fā)送至通用處理器。為了實(shí)現(xiàn)PLC專用指令集處理器,本發(fā)明設(shè)計(jì)了符合可編程控制器特征的專用指令格式和指令集,其中指令格式為位邏輯運(yùn)算指令格式、可跳轉(zhuǎn)位邏輯運(yùn)算指令格式、跳轉(zhuǎn)調(diào)用及存取指令格式以及功能塊指令格式共四種,具體為(1)位邏輯運(yùn)算指令格式(表1),第31 30位為組碼;第29 沈位為操作碼, 操作碼有四位,其可編程控制器指令表語言中的位邏輯運(yùn)算指令有AND、ANDN、0R、0RN、X0R、 M)RN,對應(yīng)的可編程控制器專用指令集處理器指令集中的指令為ANDBIT、ANDNBIT、ORBIT、 ORNBITJORBIT、X0RNBIT ;第25位用于判斷當(dāng)前位邏輯運(yùn)算指令的操作數(shù)是否存儲(chǔ)在累加器堆棧當(dāng)中,若不在累加器堆棧中,一般此指令為可跳轉(zhuǎn)位邏輯運(yùn)算指令后一個(gè)位邏輯運(yùn)算指令,其運(yùn)算結(jié)果將保存在累加器堆棧中;第M位為條件位,用于對通用處理器相關(guān)運(yùn)算的條件使能,其值決定于狀態(tài)寄存器的狀態(tài)值;第23 16位,用于存儲(chǔ)保存位邏輯運(yùn)算結(jié)果的寄存器地址,其寄存器地址編碼位數(shù)為8位;第15 8位,用于存儲(chǔ)保存位邏輯運(yùn)算操作數(shù)之一的寄存器地址(可以為寄存器組中的內(nèi)部寄存器地址、累加器堆棧指針中保存的累加器堆棧地址);第7 0位,用于存儲(chǔ)保存位邏輯運(yùn)算另一操作數(shù)的寄存器地址(可以為寄存器組中的內(nèi)部寄存器地址、累加器堆棧指針中保存的累加器堆棧地址)。(2)可跳轉(zhuǎn)位邏輯運(yùn)算指令格式(表幻,其組碼為01,其可編程控制器指令表語言中的指令包括AND(、0R、ANDN(、0RN(、)、0RLD,對應(yīng)的可編程控制器專用指令集處理器指令集中的指令為 ANDCRBIT,ORCRBIT,ANDNCRBIT,ORNCRBIT,CR,PUSHOR ;第 25 位為跳轉(zhuǎn)條件位,即該可跳轉(zhuǎn)位邏輯運(yùn)算指令滿足跳轉(zhuǎn)條件,如指令為ANDCRBIT時(shí),且累加器堆棧當(dāng)前值為0時(shí),ANDCRBIT指令后的位邏輯運(yùn)算不用執(zhí)行,并跳轉(zhuǎn)到、可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符CR指令,其可跳轉(zhuǎn)位邏輯運(yùn)算流程圖(圖幻表明了詳細(xì)執(zhí)行流程;第對位為條件位,用于對通用處理器相關(guān)運(yùn)算的條件使能,其值決定于狀態(tài)寄存器的狀態(tài)信號;第23 8 位,為跳轉(zhuǎn)偏移量,即偏移到可編程控制器專用指令集中CR及PUSHOR指令;第7 0位,為存儲(chǔ)累加器堆棧指針寄存器保存的當(dāng)前累加器堆棧值的地址。(3)跳轉(zhuǎn)調(diào)用及存取指令格式(表3),第31 30位為組碼,其組碼為10 ;第 29 沈位為操作碼;第25位,用于區(qū)分跳轉(zhuǎn)調(diào)用指令及存取指令,當(dāng)I = 0時(shí),代表指令為跳轉(zhuǎn)調(diào)用指令,其可編程控制器指令表語言中的指令包括JMP、JMPC、JMPCN、CALL、 CALLC、CALLCN、RET、RETC、RETCN,對應(yīng)的可編程控制器專用指令集處理器指令集中的指令為 JMPBIT、JMPCBIT, JMPCNBIT, CALBIT、CALCBIT、CALCNBIT、RETBIT、RETCBIT、RETCNBIT ; 當(dāng)I = 1時(shí),其可編程控制器指令表語言中的指令包括LD、LDN、ST、STN,對應(yīng)的可編程控制器專用指令集處理器指令集中的指令依據(jù)存取類型分為LOADBIT、LOADNBIT、ST0REBIT、 STORENBIT、L0ADMBIΤ、STOREMBIT、LOADNMBIT、STORENMBIT、L0ADI0BIT、STOREIOBIT、 LOADNIOBIT,ST0RENIOBIT,L0ADRMBIT,L0ADNRMBIT,ST0RERMBIT,STORENRMBIT ;第 24 位,為條件位,用于基于條件位跳轉(zhuǎn)偏移的跳轉(zhuǎn)調(diào)用指令,其條件位的值來自于累加器堆棧當(dāng)前值或功能塊單元輸出值或來自通用處理器的運(yùn)算結(jié)果,如通用處理器執(zhí)行比較指令后的比較結(jié)果;第23 16位,表示累加器堆棧棧頂?shù)刂坊蚣拇嫫鞯刂?;?5 0位,表示跳轉(zhuǎn)調(diào)用偏移位或操作數(shù)存取地址;(4)功能塊指令格式(表4)。功能塊分為觸發(fā)器、邊沿檢測、計(jì)數(shù)器、定時(shí)器,它有自身的功能塊單元寄存器組。第31 30位為組碼,其指令的組碼為11 ;第四 沈位為操作碼,其可編程控制器指令表語言中的指令包括SR、RS、R_TRIG、F_TRIG、CTU, CTD, CTUD, TP、TON、TOF, RTC,對應(yīng)的可編程控制器專用指令集處理器指令集中的指令為FB SR、FBRS, FB R_TRIG、FB F_TRIG、FB CTU、FB CTD、FB CTUD、FB TP,FB TON,FB T0F、FB RTC ;第 25 位, 表示復(fù)位優(yōu)先位或加計(jì)數(shù)器輸入的上升沿觸發(fā)位;第M位,表示置位優(yōu)先位或減計(jì)數(shù)器輸入的上升沿觸發(fā)位;第23位表示復(fù)位或時(shí)鐘電平;第22位,表示裝入加減計(jì)數(shù)器初始值使能位或計(jì)時(shí)器使能位;第21 11位,表示計(jì)數(shù)器當(dāng)前值或計(jì)時(shí)器當(dāng)前值;第10 0位,表示計(jì)數(shù)器予置值或計(jì)時(shí)器予置值。指令集共五種,具體如下(1)位邏輯運(yùn)算指令集包括位與操作指令、位與非操作指令、位或操作指令、位異或操作指令以及位異或非操作指令;該指令集依據(jù)操作數(shù)來源分為兩類第一、操作數(shù)有一方是來自累加器堆棧,另一方來自寄存器組,如ANDBIT CR, RS,Rm ;第二、操作數(shù)兩方都來自寄存器組,此位邏輯運(yùn)算指令主要位于可跳轉(zhuǎn)位邏輯運(yùn)算后的第一個(gè)位邏輯運(yùn)算, 如ANDBIT RSl,RS2,Rm。該指令集依據(jù)指令結(jié)果存儲(chǔ)地址分為兩類第一、結(jié)果存儲(chǔ)在累加器堆棧中,如ANDBIT RS1,R2,CR;第二、結(jié)果存儲(chǔ)在寄存器組的內(nèi)部寄存器當(dāng)中,如ANDBIT RSI, RS2, Rm。(2)可跳轉(zhuǎn)位邏輯運(yùn)算指令集(表6),位累與操作指令、位累與非操作指令、位累或操作指令、位累或非操作指令、可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符、累加器堆棧棧頂操作數(shù)出棧并求或指令;依據(jù)是否為位邏輯運(yùn)算指令,分兩類,第一類、位邏輯運(yùn)算指令
ANDCRBIT,ANDNCRBIT, ORCRBIT, ORNCRBIT ;第二類、可跳轉(zhuǎn)位邏輯運(yùn)算指令的結(jié)束符-CR
或PUSH0R。依據(jù)符合IEC_61131-3標(biāo)準(zhǔn)的可編程控制器指令表編程語言指令-0RLD,對應(yīng)的可編程控制器專用指令集指令為PUSH0R,用于對前幾項(xiàng)操作數(shù)輸入指令LD或LDN輸入到累加器堆棧中的值進(jìn)行或運(yùn)算,并將運(yùn)算的值輸入返回累加器堆棧當(dāng)中。(3)跳轉(zhuǎn)調(diào)用指令集(表7),包括無條件跳轉(zhuǎn)指令、符合條件跳轉(zhuǎn)指令、不符合條件跳轉(zhuǎn)指令、無條件功能塊調(diào)用指令、符合條件功能塊調(diào)用指令、不符合條件功能塊調(diào)用指令、無條件從功能或功能塊返回指令、符合條件功能或功能塊返回指令、不符合條件功能或功能塊返回指令。依據(jù)是否帶條件位分為兩類,第一類、帶條件位,包括JMPCBIT、JMPCNBIT、 CALCBIT, CALCNBIT、RETCBIT、RETCNBIT ;第二類、不帶條件位,包括 JMPBIT、CALBIT, RETBIT。(4)存取指令(表8),依據(jù)存取地址分為三類,第一類、取數(shù)地址為功能塊存儲(chǔ)單元,其指令包括L0ADQBIT、LOADNQBIT、STOREQBIT、ST0RENQBIT ;第二類、存取數(shù)地址為存儲(chǔ)器,其指令包括L0ADMBIT、STOREMBIT, LOADNMBIT、ST0RENMBIT ;第三類、存取數(shù)地址為 1\0 端口,其指令包括L0ADI0BIT、ST0REI0BIT、LOADNIOBIT、ST0RENI0BIT ;第四類、存取數(shù)地址為內(nèi)部寄存器,其指令包括L0ADRMBIT、LOADNRMBIT、STORERMBIT、ST0RENRMBIT。存取指令集包括L0ADQBIT 取功能塊單元的布爾輸出值到累加器堆棧中;STOREQBIT 將功能塊單元的布爾輸出值存儲(chǔ)到功能塊寄存器組中;LOADNQBIT:取功能塊單元的輸出值后取反輸出到累加器堆棧中;ST0RENQBIT 將功能塊單元的輸出值取反存儲(chǔ)到功能塊寄存器組中;L0ADMBIT 從存儲(chǔ)器單元取操作數(shù)到寄存器組或功能塊寄存器組中;ST0REMBIT 將寄存器組或功能塊寄存器組的數(shù)據(jù)直接存儲(chǔ)到存儲(chǔ)器單元中;LOADNMBIT:從存儲(chǔ)器單元取操作數(shù)取反后存儲(chǔ)到寄存器組或功能塊寄存器組中;ST0RENMBIT 將寄存器組或功能塊寄存器組的數(shù)據(jù)取反后存儲(chǔ)到存儲(chǔ)器單元中;L0ADI0BIT 從1\0數(shù)據(jù)存儲(chǔ)器直接取數(shù)到寄存器組中;ST0REI0BIT 將寄存器組數(shù)據(jù)直接送到1\0數(shù)據(jù)存儲(chǔ)器中;LOADNIOBIT 從1\0數(shù)據(jù)存儲(chǔ)器取的數(shù)據(jù)取反后存儲(chǔ)到寄存器組中;ST0RENI0BIT 將寄存器組數(shù)據(jù)取反后送到從1\0數(shù)據(jù)存儲(chǔ)器中;L0ADRMBIT 將寄存器組的內(nèi)部寄存器的值壓棧到累加器堆棧中;STORERMBIT 將累加器堆棧中的值出棧到寄存器組的內(nèi)部寄存器中;LOADNRMBIT 將寄存器組的內(nèi)部寄存器的值取反壓棧到累加器堆棧中;ST0RENRMBIT 將累加器堆棧中的值取反出棧到寄存器組的內(nèi)部寄存器中;(5)功能塊指令集(表9),包括置位優(yōu)先功能塊指令、復(fù)位優(yōu)先功能塊指令、上升沿檢測功能塊指令、下降沿檢測功能塊指令、加計(jì)數(shù)器功能塊指令、減計(jì)數(shù)器功能塊指令、 加減計(jì)數(shù)器功能塊指令、脈沖功能塊指令、接通延時(shí)功能塊指令、斷開延時(shí)功能塊指令、實(shí)時(shí)時(shí)鐘功能塊指令;按功能分為三大類,第一類、置位復(fù)位功能;第二類、邊沿檢測功能;第三類、計(jì)數(shù)器功能;第四類、計(jì)時(shí)器功能。為提高可編程控制器程序執(zhí)行速度,本發(fā)明設(shè)計(jì)的可編程控制器專用指令集處理器體系結(jié)構(gòu),通過對可跳轉(zhuǎn)位邏輯運(yùn)算指令的處理,可加速可編程控制器專用指令集處理器對位邏輯運(yùn)算指令的操作;并可在處理器內(nèi)執(zhí)行功能塊指令,節(jié)省了對其輸入輸出數(shù)據(jù)的存取時(shí)間,提高了可編程控制器專用指令集處理器的實(shí)時(shí)性與精確度;其寄存器組,針對該可編程控制器專用指令集處理器處理開關(guān)量數(shù)據(jù)的特點(diǎn),采用位編址方式,能夠加快數(shù)據(jù)存取的速度;針對功能塊指令數(shù)據(jù)的特征,另外設(shè)計(jì)了功能塊寄存器組;數(shù)據(jù)存儲(chǔ)器針對該可編程控制器專用指令集處理器的數(shù)據(jù)特征,分別對開關(guān)量數(shù)據(jù)及功能塊數(shù)據(jù)進(jìn)行編址。該可編程控制器專用指令集處理器包括指令存儲(chǔ)器、指令計(jì)數(shù)器、指令寄存器、指令譯碼器、控制單元、功能塊單元、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、寄存器組、位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、1\0數(shù)據(jù)存儲(chǔ)器;該處理器采用四級流水線,取指、譯碼、執(zhí)行、回寫。(1)指令存儲(chǔ)器,其指令存儲(chǔ)容量設(shè)定為64KB ;因指令格式采用32位,則一條指令需要一個(gè)字的單元存儲(chǔ),該指令存儲(chǔ)器則可存儲(chǔ)211條指令;該指令存儲(chǔ)器采用小端方式存儲(chǔ),即低地址存儲(chǔ)低端數(shù)據(jù),高地址存儲(chǔ)高端數(shù)據(jù)。(2)指令計(jì)數(shù)器(圖6),該指令計(jì)數(shù)器中當(dāng)前PC值分為三類第一,當(dāng)前PC值為下一條指令地址,即當(dāng)前PC值=上一條指令地址+4 ;第二,當(dāng)遇到可跳轉(zhuǎn)位邏輯運(yùn)算指令, 則當(dāng)前PC值=上一條指令地址+跳轉(zhuǎn)偏移量;第三,當(dāng)遇到跳轉(zhuǎn)調(diào)用指令時(shí),則當(dāng)前PC值 =上一條指令地址+跳轉(zhuǎn)調(diào)用偏移量。其可跳轉(zhuǎn)位邏輯指令的處理流程圖如圖5所示,由指令譯碼器向位處理器輸入組碼,位處理器通過組碼識別是否為可跳轉(zhuǎn)位邏輯指令;(3)控制單元,控制可編程控制專用指令集處理器的四個(gè)流水階段,即在取指階段,控制指令計(jì)數(shù)器的操作;在譯碼階段,控制指令譯碼器的操作;在執(zhí)行階段,接收指令譯碼器操作碼中的組碼,分別對位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元和功能塊單元進(jìn)行控制;并控制與通用處理器進(jìn)行中斷信號的接收或發(fā)送;在回寫階段,控制跳轉(zhuǎn)調(diào)用指令及存取指令處理單元和功能塊單元中存取指令的回寫操作。(4)功能塊單元,該功能塊單元主要處理功能塊指令,如置位優(yōu)先功能塊指令、復(fù)位優(yōu)先功能塊指令、上升沿檢測功能塊指令、下降沿檢測功能塊指令、加計(jì)數(shù)器功能塊指令、減計(jì)數(shù)器功能塊指令、加減計(jì)數(shù)器功能塊指令、脈沖功能塊指令、接通延時(shí)功能塊指令、 斷開延時(shí)功能塊指令、實(shí)時(shí)時(shí)鐘功能塊指令;其功能塊單元中每類功能塊可并行處理1 16個(gè)相同功能塊,符合可編程控制器程序需執(zhí)行多個(gè)功能塊指令的特征;功能塊單元與功能塊寄存器組相連,可節(jié)約數(shù)據(jù)存取時(shí)間,提高可編程控制器計(jì)時(shí)器的準(zhǔn)確度及可編程控制器程序執(zhí)行速度;該功能塊單元輸入信號有來自控制單元的控制信號;及來自指令譯碼器的信號,包括操作碼0P[3:0],置位優(yōu)先的信號Si、復(fù)位優(yōu)先信號R1、置位信號S、復(fù)位信號R、時(shí)鐘信號CLK、加計(jì)數(shù)器上升沿觸發(fā)信號CU、減計(jì)數(shù)器上升沿觸發(fā)信號CD、裝入加計(jì)數(shù)器LDU初始數(shù)使能信號、減計(jì)數(shù)器初始數(shù)使能信號LDD、加減計(jì)數(shù)器初始數(shù)使能信號 LDUD、脈沖功能塊使能信號INTP、接通延時(shí)功能塊使能信號ΙΝΤ0Ν、斷開延時(shí)功能塊使能信號INT0F、實(shí)時(shí)時(shí)鐘功能塊使能信號INRTC ;有來自功能塊寄存器組的信號,包括計(jì)數(shù)器予置值PV[7:0]、計(jì)時(shí)器予置值PT[7:0]、實(shí)時(shí)時(shí)鐘予置值PDT[7:0];其功能塊輸出信號為輸出到功能塊寄存器組的信號,信號包括當(dāng)前計(jì)數(shù)器值CV[7:0]、計(jì)時(shí)器結(jié)束時(shí)間ET[7:0]、 實(shí)時(shí)時(shí)鐘當(dāng)前日期和時(shí)間⑶T[7:0]。(5)功能塊寄存器組,該寄存器組分為四類,包括觸發(fā)器功能塊寄存器、邊沿檢測功能塊寄存器、計(jì)數(shù)器功能塊寄存器、計(jì)時(shí)器功能塊寄存器;每類功能塊可最多并行存儲(chǔ)十六個(gè)同類功能塊數(shù)據(jù);該寄存器組可存儲(chǔ)的數(shù)據(jù)包括各功能塊的輸入信號與輸出信號;該寄存器組可以以位或字節(jié)的方式存取數(shù)據(jù);當(dāng)該寄存器組有一功能塊寄存器數(shù)據(jù)滿時(shí),可以請求外設(shè)功能塊單元執(zhí)行,并與數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)傳輸;其編址方式,如表10所示,共用11位對寄存器組進(jìn)行編址,通過第10 9位尋址功能塊類型,第8 5位尋址第幾個(gè)功能塊單元,第4位用于對寄存器組數(shù)據(jù)存取方式編址,第3 0位尋址輸入輸出數(shù)據(jù)。(6)數(shù)據(jù)存儲(chǔ)器,其存儲(chǔ)總?cè)萘繛?4KB,分為輸入存儲(chǔ)器、輸出存儲(chǔ)器、內(nèi)部存儲(chǔ)器及功能塊存儲(chǔ)器。該存儲(chǔ)器通過十六位編址對這四種存儲(chǔ)器尋址。輸入、輸出、內(nèi)部存儲(chǔ)器主要存儲(chǔ)位數(shù)據(jù),功能塊存儲(chǔ)器主要存儲(chǔ)內(nèi)部及外設(shè)功能塊的輸入輸出數(shù)據(jù),每類功能塊數(shù)據(jù)可并行存儲(chǔ)256個(gè)。下面是對輸入、輸出及內(nèi)部存儲(chǔ)器的編址方式第15位用于區(qū)別輸入、輸出、內(nèi)部存儲(chǔ)器和功能塊存儲(chǔ)器,其值為零是則為輸入、輸出、內(nèi)部存儲(chǔ)器;第14 13位用于對輸入、輸出及內(nèi)部存儲(chǔ)器編址,輸入存儲(chǔ)器編碼為00、輸出存儲(chǔ)器編碼為01、內(nèi)部存儲(chǔ)器編碼為10 ;第12 3位用于對各存儲(chǔ)器字節(jié)尋址,第2 0位用于對存儲(chǔ)器位尋址。對功能塊存儲(chǔ)器編址(表11),第15位,其值為1,表示對功能塊存儲(chǔ)器尋址;第14 13位用于對四類功能塊的尋址,觸發(fā)器編址為00、邊沿檢測編址為01、計(jì)數(shù)器編址為10、計(jì)時(shí)器編址為11 ;第12 5位主要對指定第幾個(gè)功能塊數(shù)據(jù)尋址;第4位主要表示對存儲(chǔ)數(shù)據(jù)的尋址方式,如為位數(shù)據(jù)時(shí),則對一個(gè)字節(jié)的位進(jìn)行尋址;第3 0位表示要各輸入輸出數(shù)據(jù)的編址。(7)寄存器組,該寄存器組分為輸入寄存器、內(nèi)部寄存器、狀態(tài)寄存器、累加器堆棧、累加器堆棧指針寄存器、指令寄存器。將寄存器組分為三類進(jìn)行編址,第一類為輸入、內(nèi)部寄存器;第二類為狀態(tài)寄存器、累加器堆棧及累加器指針寄存器;第三類為指令寄存器。 對第一類寄存器編址如下第7 6位表示對三類寄存器的編址,第一類寄存器編址為00 ; 第5位表示對輸入、內(nèi)部寄存器的編址,輸入寄存器編址為0,內(nèi)部寄存器編址為1 ;第4 3表示對字節(jié)尋址;第2 0表示對位尋址。對第二類寄存器編址如下第7 6位,第二類寄存器編址為01 ;第5位表示對狀態(tài)寄存器、累加器堆棧的編址,累加器堆棧編址為0,狀態(tài)寄存器編址為1 ;第4 3表示對字節(jié)尋址;第2 0表示對位尋址。特別地規(guī)定該第二類寄存器編址中第4 3位編址為00的字節(jié)存放累加器堆棧指針寄存器數(shù)據(jù),即為累加器堆棧指針寄存器,則累加器堆棧指針寄存器地址為01000000。對第三類寄存器編址如下 第7 6位,第三類寄存器編址為01 ;第5 0表示對字節(jié)尋址,即可尋址32個(gè)字節(jié),又指令格式為32位,占4個(gè)字節(jié),則指令寄存器可存儲(chǔ)八條指令;(8)位處理器(如圖3所示),該位處理器特征是采用累加器堆棧的形式存儲(chǔ)操作數(shù),由于位處理器經(jīng)常要用到前一次甚至前幾次累加器堆棧中的操作數(shù),采用符合位處理器執(zhí)行特征的堆棧形式保存操作數(shù),并通過累加器堆棧指針寄存器中的地址來區(qū)別當(dāng)前操作數(shù)與前幾次操作數(shù)。該位處理器處理位邏輯運(yùn)算指令及可跳轉(zhuǎn)位邏輯運(yùn)算指令;采用累加器堆棧的形式存儲(chǔ)位處理器所需操作數(shù)及其運(yùn)算結(jié)果;其累加器堆棧棧頂值來自寄存器組、功能塊寄存器組、1\0數(shù)據(jù)存儲(chǔ)器及位處理器運(yùn)算結(jié)果;當(dāng)位處理器執(zhí)行位邏輯運(yùn)算指令時(shí),從累加器堆棧棧頂或寄存器組中取操作數(shù)后,進(jìn)行位邏輯運(yùn)算操作,將運(yùn)算結(jié)果存儲(chǔ)到累加器堆棧棧頂或寄存器組中。當(dāng)位處理器執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令時(shí),若該可跳轉(zhuǎn)位邏輯運(yùn)算指令為位累與運(yùn)算指令、位累與非運(yùn)算指令、位累或運(yùn)算指令、位累或非運(yùn)算指令,且滿足跳轉(zhuǎn)條件時(shí),位處理器將跳轉(zhuǎn)偏移量發(fā)送至指令計(jì)數(shù)器中,并執(zhí)行相應(yīng)的位邏輯運(yùn)算,將運(yùn)算結(jié)果保存在累加器堆棧棧頂。位處理器的運(yùn)算結(jié)果,經(jīng)跳轉(zhuǎn)調(diào)用指令及存取指令處理單元執(zhí)行存取指令后,分別存儲(chǔ)在狀態(tài)寄存器、數(shù)據(jù)存儲(chǔ)器、寄存器組中的內(nèi)部寄存器以及1\0數(shù)據(jù)存儲(chǔ)器當(dāng)中。
如圖4所示,位處理器處理位邏輯運(yùn)算指令及可跳轉(zhuǎn)位邏輯運(yùn)算指令包括以下步驟位處理器處理位邏輯運(yùn)算指令及可跳轉(zhuǎn)位邏輯運(yùn)算指令;采用累加器堆棧的形式存儲(chǔ)位處理器所需操作數(shù)及其運(yùn)算結(jié)果;其累加器堆棧棧頂值來自寄存器組、功能塊寄存器組、A數(shù)據(jù)存儲(chǔ)器及位處理器運(yùn)算結(jié)果;當(dāng)位處理器執(zhí)行位邏輯運(yùn)算指令時(shí),從累加器堆棧棧頂或寄存器組中取操作數(shù)后,進(jìn)行位邏輯運(yùn)算操作,將運(yùn)算結(jié)果存儲(chǔ)到累加器堆棧棧頂或寄存器組中;執(zhí)行完成后存儲(chǔ)位處理器的運(yùn)算結(jié)果;當(dāng)位處理器執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令時(shí),按可跳轉(zhuǎn)位邏輯運(yùn)算指令的執(zhí)行過程執(zhí)行,執(zhí)行完成后存儲(chǔ)位處理器的運(yùn)算結(jié)果;如圖5所示,跳轉(zhuǎn)位邏輯運(yùn)算指令的執(zhí)行過程為如果是可跳轉(zhuǎn)位邏輯指令,則指令譯碼器向位處理器輸入操作碼;由位處理器器判斷該可跳轉(zhuǎn)位邏輯指令是否為位累與操作指令、位累與非操作指令、位累或操作指令、位累或非操作指令;若為位累與操作指令,且累加器堆棧的棧頂值為0,則執(zhí)行與操作,將與運(yùn)算結(jié)果 “0”存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中jump condition跳轉(zhuǎn)條件位為1,設(shè)置 jump offset跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符與該位累與操作指令的偏移量;若為位累與操作指令,但不滿足累加器堆棧的棧頂值為0,則只執(zhí)行與操作,將執(zhí)行結(jié)果存儲(chǔ)在累加器堆棧中,其跳轉(zhuǎn)條件位為0,不執(zhí)行跳轉(zhuǎn)操作。若為位累與非操作指令,且累加器堆棧的棧頂值為0,則執(zhí)行與非操作,將與非運(yùn)算結(jié)果“1”存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中jumpcondition跳轉(zhuǎn)條件位為1, 設(shè)置jump offset跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符到該位累與非操作指令的偏移量;若為位累與非操作指令,但不滿足累加器堆棧的棧頂值為0,則只執(zhí)行與非操作,將執(zhí)行結(jié)果存儲(chǔ)在累加器堆棧中,其跳轉(zhuǎn)條件位為0,不執(zhí)行跳轉(zhuǎn)操作。若為位累或操作指令,且累加器堆棧的棧頂值為1,則執(zhí)行或操作,將或運(yùn)算結(jié)果 “1”存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中jump condition跳轉(zhuǎn)條件位為1,設(shè)置 jump offset跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算跳轉(zhuǎn)結(jié)束符指令或累加器堆棧中的操作數(shù)出棧并求或指令到該位累或操作指令的偏移量;若為位累與操作指令,但不滿足累加器堆棧的棧頂值為1,則只執(zhí)行或操作,將執(zhí)行結(jié)果存儲(chǔ)在累加器堆棧中,其跳轉(zhuǎn)條件位為0,不執(zhí)行跳轉(zhuǎn)操作。若為位累或非操作指令,且累加器堆棧的棧頂值為1,則執(zhí)行或非操作,將或非運(yùn)算結(jié)果“0”存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中jumpcondition跳轉(zhuǎn)條件位為1, 設(shè)置jump offset跳轉(zhuǎn)偏移量值為可編程控制器可跳轉(zhuǎn)位邏輯運(yùn)算跳轉(zhuǎn)結(jié)束符到該位累或非操作指令的偏移量;若為位累與操作指令,但不滿足累加器堆棧的棧頂值為1,則只執(zhí)行或非操作,將執(zhí)行結(jié)果存儲(chǔ)在累加器堆棧中,其跳轉(zhuǎn)條件位為0,不執(zhí)行跳轉(zhuǎn)操作。如圖7所示,本發(fā)明高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法按照該可編程控制器指令集處理器的四級流水線方式,包括以下步驟取指階段依據(jù)指令計(jì)數(shù)器計(jì)算的指令地址,從指令存儲(chǔ)器取指令至指令寄存器當(dāng)中;譯碼階段從指令寄存器取出指令送入指令譯碼器進(jìn)行譯碼,通過指令中操作數(shù)地址,取出操作數(shù);并依據(jù)指令中組碼,將相應(yīng)的操作碼及操作數(shù)送至對應(yīng)的處理單元中;執(zhí)行階段依據(jù)指令譯碼器發(fā)出的操作碼及操作數(shù),位處理器、功能塊單元、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元給予相應(yīng)處理;如執(zhí)行的指令不是可編程控制器專用指令集處理器的指令時(shí),則由控制單元向通用處理器發(fā)出中斷請求,該可編程控制器專用指令集處理器可繼續(xù)執(zhí)行與通用處理器指令無依賴關(guān)系的指令,當(dāng)通用處理器向可編程控制器專用指令集處理器發(fā)送中斷請求時(shí),可編程控制器專用指令集處理器將保存通用處理器的執(zhí)行結(jié)果到狀態(tài)寄存器中;另外存儲(chǔ)器訪問階段與執(zhí)行階段合為一個(gè)流水線階段,由跳轉(zhuǎn)調(diào)用指令及存取指令處理單元執(zhí)行存儲(chǔ)器訪問;回寫階段將可編程控制器專用指令集處理器的結(jié)果,依據(jù)存取指令類型寫回累加器堆棧、內(nèi)部寄存器、數(shù)據(jù)存儲(chǔ)器內(nèi)部寄存器或1\0存儲(chǔ)器當(dāng)中。
權(quán)利要求
1. 一種高性能可編程控制器的處理器體系結(jié)構(gòu),其特征在于包括PLC專用指令集處理器、通用處理器,其中PLC專用指令集處理器通過PLC專用集處理器與通用處理器的接口與通用處理器相連;所述PLC專用指令集處理器具有以下結(jié)構(gòu)指令存儲(chǔ)器、指令計(jì)數(shù)器、指令寄存器、指令譯碼器、控制單元、功能塊單元、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、寄存器組、位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、1\0數(shù)據(jù)存儲(chǔ)器、狀態(tài)寄存器,其中指令存儲(chǔ)器,存儲(chǔ)通用處理器并行編譯后的指令,在指令計(jì)數(shù)器的控制下,將指令發(fā)送至指令寄存器;指令計(jì)數(shù)器,計(jì)算下一條指令地址,實(shí)現(xiàn)指令地址的自增,并在跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制下,按照跳轉(zhuǎn)調(diào)用指令中指令地址偏移需求,改變指令地址;在位處理器的控制下,按照可跳轉(zhuǎn)位邏輯運(yùn)算指令指令地址偏移需求,改變指令地址;將自增后的指令地址、執(zhí)行跳轉(zhuǎn)調(diào)用指令后改變的指令地址及執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令后改變的指令地址,通過指令計(jì)數(shù)器中指令地址選擇,將指令存儲(chǔ)器中對應(yīng)的指令輸出至指令寄存器; 指令寄存器,接收指令計(jì)數(shù)器選擇的指令存儲(chǔ)器中的指令,輸出該指令至指令譯碼器;指令譯碼器,將從指令寄存器輸入的指令進(jìn)行譯碼后,將操作碼輸出至位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元、功能塊單元,將操作數(shù)地址輸出至寄存器組、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器及1\0存儲(chǔ)器;控制單元,向指令計(jì)數(shù)器、指令寄存器、指令譯碼器發(fā)送控制指令;接收指令譯碼器操作碼中的組碼,分別對位處理器、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元和功能塊單元進(jìn)行控制;并控制與通用處理器進(jìn)行中斷信號的接收或發(fā)送;功能塊單元,接收控制單元的控制信號和指令譯碼器的操作碼,與功能塊寄存器組進(jìn)行數(shù)據(jù)的存取操作;功能塊寄存器組,存儲(chǔ)來自功能塊單元的執(zhí)行結(jié)果,根據(jù)來自跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制信號及指令譯碼器對其的操作數(shù)地址的選擇信號,存取數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù),或取出功能塊寄存器組的數(shù)據(jù),并通過多路選擇器送至寄存器組中的累加器堆棧中;數(shù)據(jù)存儲(chǔ)器,通過跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制及指令譯碼器對其操作數(shù)地址的選擇,存取寄存器組、功能塊寄存器組的數(shù)據(jù);寄存器組,通過跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制及指令譯碼器傳來的操作數(shù)地址,選擇寄存器組中的寄存器,將該寄存器中的操作數(shù)輸出至位處理器進(jìn)行處理;或存取數(shù)據(jù)存儲(chǔ)器及1\0數(shù)據(jù)存儲(chǔ)器中的數(shù)據(jù);位處理器,通過指令譯碼器的操作碼,對來自寄存器組的操作數(shù)以及通過多路選擇器選擇的來自功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、1\0數(shù)據(jù)存儲(chǔ)器并存儲(chǔ)在寄存器組累加器堆棧中的數(shù)據(jù)進(jìn)行相應(yīng)處理,并將處理結(jié)果存儲(chǔ)到寄存器組、狀態(tài)寄存器、數(shù)據(jù)存儲(chǔ)器或1\0數(shù)據(jù)存儲(chǔ)器中;跳轉(zhuǎn)調(diào)用指令及存取指令處理單元,接收來自控制單元的控制信號,根據(jù)指令譯碼器傳來的操作碼,分別對指令計(jì)數(shù)器進(jìn)行操作,對寄存器組、功能塊寄存器組、數(shù)據(jù)存儲(chǔ)器、 I\0數(shù)據(jù)存儲(chǔ)器進(jìn)行存取操作控制;1\0數(shù)據(jù)存儲(chǔ)器,接收來自跳轉(zhuǎn)調(diào)用指令及存取指令處理單元的控制信號以及指令譯碼器的操作數(shù)地址選擇信號,與寄存器組、功能塊寄存器組以及1\0數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)存?。粻顟B(tài)寄存器,保存位處理器執(zhí)行后的狀態(tài)結(jié)果,并通過中斷方式,將狀態(tài)信號發(fā)送至通用處理器。
2.按權(quán)利要求1所述的高性能可編程控制器的處理器體系結(jié)構(gòu),其特征在于功能塊單元中每類功能塊并行擴(kuò)展1 16個(gè)同類功能塊單元,每個(gè)功能塊具有自己的功能塊寄存器組。
3.按權(quán)利要求1所述的高性能可編程控制器的處理器體系結(jié)構(gòu),其特征在于所述指令譯碼器譯碼使用的指令格式為位邏輯運(yùn)算指令格式、可跳轉(zhuǎn)位邏輯運(yùn)算指令格式、跳轉(zhuǎn)調(diào)用及存取指令格式以及功能塊指令格式,其中位邏輯運(yùn)算指令格式,第31 30位為組碼;第四 沈位為操作碼;第25位用于判斷當(dāng)前位邏輯運(yùn)算指令的操作數(shù)是否存儲(chǔ)在累加器堆棧當(dāng)中;第M位為條件位,用于對通用處理器運(yùn)算的條件使能,其值決定于存儲(chǔ)在狀態(tài)寄存器中的狀態(tài)結(jié)果;第23 16位,用于存儲(chǔ)保存位邏輯運(yùn)算結(jié)果的寄存器地址,其寄存器地址編碼位數(shù)為8位;第15 8位,用于存儲(chǔ)保存位邏輯運(yùn)算操作數(shù)之一的寄存器地址;第7 0位,用于存儲(chǔ)保存位邏輯運(yùn)算另一操作數(shù)的寄存器地址??商D(zhuǎn)位邏輯運(yùn)算指令格式,第31 30位為組碼;第四 沈位為操作碼;第25位決定是否跳轉(zhuǎn)的條件位;第M位為條件位,用于對通用處理器運(yùn)算的條件使能,其值決定于狀態(tài)寄存器的狀態(tài)結(jié)果;第23 8位,為跳轉(zhuǎn)偏移位,其跳轉(zhuǎn)偏移量為該可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)到可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符或累加器堆棧中的操作數(shù)出棧并求或指令的偏移量;第7 0位,為存儲(chǔ)累加器堆棧指針寄存器保存的當(dāng)前累加器堆棧值的地址;跳轉(zhuǎn)調(diào)用及存取指令格式,第31 30位為組碼;第四 沈位為操作碼;第25位,用于區(qū)分跳轉(zhuǎn)調(diào)用指令及存取指令,當(dāng)I = 0時(shí),代表跳轉(zhuǎn)調(diào)用指令,當(dāng)I = 1時(shí),代表存取指令;第M位,為條件位,用于基于條件位跳轉(zhuǎn)偏移的跳轉(zhuǎn)調(diào)用指令,其條件位的值來自于累加器堆棧當(dāng)前值或功能塊單元輸出值或來自通用處理器的運(yùn)算結(jié)果,如通用處理器執(zhí)行比較指令后的比較結(jié)果;第23 16位,表示累加器堆棧棧頂?shù)刂坊蚣拇嫫鞯刂?;?5 0 位,表示跳轉(zhuǎn)調(diào)用偏移位或操作數(shù)存取地址;功能塊指令格式,第31 30位為組碼;第四 沈位為操作碼;第25位,表示復(fù)位優(yōu)先位或加計(jì)數(shù)器輸入的上升沿觸發(fā)位;第M位,表示置位優(yōu)先位或減計(jì)數(shù)器輸入的上升沿觸發(fā)位;第23位表示復(fù)位或時(shí)鐘電平;第22位,表示裝入加減計(jì)數(shù)器初始值使能位或計(jì)時(shí)器使能位;第21 11位,表示計(jì)數(shù)器當(dāng)前值或計(jì)時(shí)器當(dāng)前值;第10 0位,表示計(jì)數(shù)器予置值或計(jì)時(shí)器予置值。
4.按權(quán)利要求3所述的高性能可編程控制器的處理器體系結(jié)構(gòu),其特征在于所述指令譯碼器譯碼使用的指令格式中組碼及操作碼表示的指令集為位邏輯運(yùn)算指令集、可跳轉(zhuǎn)位邏輯運(yùn)算指令集、跳轉(zhuǎn)調(diào)用指令集、存取指令集、功能塊指令集,其中位邏輯運(yùn)算指令集包括位與操作指令、位與非操作指令、位或操作指令、位異或操作指令以及位異或非操作指令;可跳轉(zhuǎn)位邏輯運(yùn)算指令集包括位累與操作指令、位累與非操作指令、位累或操作指令、位累或非操作指令、可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符、累加器堆棧棧頂操作數(shù)出棧并求或指令;跳轉(zhuǎn)調(diào)用指令集包括無條件跳轉(zhuǎn)指令、符合條件跳轉(zhuǎn)指令、不符合條件跳轉(zhuǎn)指令、無條件功能塊調(diào)用指令、符合條件功能塊調(diào)用指令、不符合條件功能塊調(diào)用指令、無條件從功能或功能塊返回指令、符合條件功能或功能塊返回指令、不符合條件功能或功能塊返回指令。存取指令集包括L0ADQBIT 取功能塊單元的布爾輸出值到累加器堆棧中; ST0REQBIT 將功能塊單元的布爾輸出值存儲(chǔ)到功能塊寄存器組中; L0ADNQBIT 取功能塊單元的輸出值后取反輸出到累加器堆棧中; ST0RENQBIT 將功能塊單元的輸出值取反存儲(chǔ)到功能塊寄存器組中; L0ADMBIT 從存儲(chǔ)器單元取操作數(shù)到寄存器組或功能塊寄存器組中; ST0REMBIT 將寄存器組或功能塊寄存器組的數(shù)據(jù)直接存儲(chǔ)到存儲(chǔ)器單元中; L0ADNMBIT 從存儲(chǔ)器單元取操作數(shù)取反后存儲(chǔ)到寄存器組或功能塊寄存器組中; ST0RENMBIT 將寄存器組或功能塊寄存器組的數(shù)據(jù)取反后存儲(chǔ)到存儲(chǔ)器單元中; L0ADI0BIT 從1\0數(shù)據(jù)存儲(chǔ)器直接取數(shù)到寄存器組中; ST0REI0BIT 將寄存器組數(shù)據(jù)直接送到1\0數(shù)據(jù)存儲(chǔ)器中; L0ADNI0BIT 從1\0數(shù)據(jù)存儲(chǔ)器取的數(shù)據(jù)取反后存儲(chǔ)到寄存器組中; ST0RENI0BIT 將寄存器組數(shù)據(jù)取反后送到從1\0數(shù)據(jù)存儲(chǔ)器中; L0ADRMBIT 將寄存器組的內(nèi)部寄存器的值壓棧到累加器堆棧中; ST0RERMBIT 將累加器堆棧中的值出棧到寄存器組的內(nèi)部寄存器中; L0ADNRMBIT 將寄存器組的內(nèi)部寄存器的值取反壓棧到累加器堆棧中; ST0RENRMBIT 將累加器堆棧中的值取反出棧到寄存器組的內(nèi)部寄存器中; 功能塊指令集包括置位優(yōu)先功能塊指令、復(fù)位優(yōu)先功能塊指令、上升沿檢測功能塊指令、下降沿檢測功能塊指令、加計(jì)數(shù)器功能塊指令、減計(jì)數(shù)器功能塊指令、加減計(jì)數(shù)器功能塊指令、脈沖功能塊指令、接通延時(shí)功能塊指令、斷開延時(shí)功能塊指令、實(shí)時(shí)時(shí)鐘功能塊指令。
5. 一種高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征在于按照該可編程控制器專用指令集處理器采用四級流水線,包括以下步驟取指階段依據(jù)指令計(jì)數(shù)器計(jì)算的指令地址,從指令存儲(chǔ)器取指令至指令寄存器當(dāng)中;譯碼階段從指令寄存器取出指令送入指令譯碼器進(jìn)行譯碼,通過指令中操作數(shù)地址, 取出操作數(shù);并依據(jù)指令中組碼,將相應(yīng)的操作碼及操作數(shù)送至對應(yīng)的處理單元中;執(zhí)行階段依據(jù)指令譯碼器發(fā)出的操作碼及操作數(shù),位處理器、功能塊單元、跳轉(zhuǎn)調(diào)用指令及存取指令處理單元給予相應(yīng)處理;如執(zhí)行的指令不是可編程控制器專用指令集處理器的指令時(shí),則由控制單元向通用處理器發(fā)出中斷請求,該可編程控制器專用指令集處理器可繼續(xù)執(zhí)行與通用處理器指令無依賴關(guān)系的指令,當(dāng)通用處理器向可編程控制器專用指令集處理器發(fā)送中斷請求時(shí),可編程控制器專用指令集處理器將保存通用處理器的執(zhí)行結(jié)果到狀態(tài)寄存器中;將存儲(chǔ)器訪問階段與執(zhí)行階段,合為執(zhí)行階段;存儲(chǔ)器訪問由跳轉(zhuǎn)調(diào)用指令及存取指令處理單元執(zhí)行;回寫階段將可編程控制器專用指令集處理器的結(jié)果,依據(jù)存取指令類型寫回累加器堆棧、內(nèi)部寄存器、數(shù)據(jù)存儲(chǔ)器內(nèi)部寄存器或1\0存儲(chǔ)器當(dāng)中。
6.按權(quán)利要求5所述的高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法, 其特征在于所述位處理器處理位邏輯運(yùn)算指令及可跳轉(zhuǎn)位邏輯運(yùn)算指令當(dāng)位處理器執(zhí)行位邏輯運(yùn)算指令時(shí),從累加器堆棧棧頂和寄存器組中取操作數(shù)后,進(jìn)行位邏輯運(yùn)算操作,將運(yùn)算結(jié)果存儲(chǔ)到累加器堆棧棧頂或寄存器組中;執(zhí)行完成后存儲(chǔ)位處理器的運(yùn)算結(jié)果。
7.按權(quán)利要求6所述的高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法, 其特征在于當(dāng)位處理器執(zhí)行可跳轉(zhuǎn)位邏輯運(yùn)算指令時(shí),按可跳轉(zhuǎn)位邏輯運(yùn)算指令的執(zhí)行過程執(zhí)行,執(zhí)行完成后存儲(chǔ)位處理器的運(yùn)算結(jié)果;所述可跳轉(zhuǎn)位邏輯運(yùn)算指令的執(zhí)行過程為由位處理器判斷該可跳轉(zhuǎn)位邏輯指令為位累與操作指令、位累與非操作指令、位累或操作指令還是位累或非操作指令;若為位累與操作指令或位累與非操作指令,且累加器堆棧的棧頂值為0,則執(zhí)行與操作或與非操作,將執(zhí)行結(jié)果存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中跳轉(zhuǎn)條件位為1,并設(shè)置跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算指令跳轉(zhuǎn)結(jié)束符與該可跳轉(zhuǎn)位邏輯運(yùn)算指令的偏移量,執(zhí)行跳轉(zhuǎn);一次執(zhí)行過程結(jié)束。
8.按權(quán)利要求7所述的高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法, 其特征在于如果不滿足“位累與操作指令或位累與非操作指令,且累加器堆棧的棧頂值為0”條件, 則不執(zhí)行跳轉(zhuǎn),只執(zhí)行位累與操作或位累與非操作,并設(shè)置指令格式中跳轉(zhuǎn)條件位為0。
9.按權(quán)利要求7所述的高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法, 其特征在于若為位累或操作指令或位累或非操作指令,且累加器堆棧的棧頂值為1,則執(zhí)行位累或操作或位累或非操作,將執(zhí)行結(jié)果存儲(chǔ)存儲(chǔ)在累加器堆棧的棧頂,并設(shè)置指令格式中跳轉(zhuǎn)條件位為1,設(shè)置跳轉(zhuǎn)偏移量值為可跳轉(zhuǎn)位邏輯運(yùn)算跳轉(zhuǎn)結(jié)束符指令或累加器堆棧中的操作數(shù)出棧并求或指令到該位累或操作指令的偏移量;執(zhí)行跳轉(zhuǎn);一次執(zhí)行過程結(jié)束ο
10.按權(quán)利要求9所述的高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征在于如果不滿足“位累或操作指令或位累或非操作指令,且累加器堆棧的棧頂值為“1”條件,則不執(zhí)行跳轉(zhuǎn),只執(zhí)行位累或操作或位累或非操作,并設(shè)置指令格式中跳轉(zhuǎn)條件位為0。
11.按權(quán)利要求7所述的高性能可編程控制器專用指令集處理器體系結(jié)構(gòu)的實(shí)現(xiàn)方法,其特征在于所述可跳轉(zhuǎn)位邏輯運(yùn)算指令中的位累與操作指令、位累與非操作指令、位累或操作指令、位累或非操作指令,其執(zhí)行過程與累加器堆棧的值相關(guān),為區(qū)別于位邏輯運(yùn)算指令中的與操作指令、與非操作指令、或操作指令、或非操作指令而命名。
全文摘要
本發(fā)明涉及一種高性能可編程控制器專用處理器體系結(jié)構(gòu)及其實(shí)現(xiàn)方法,體系結(jié)構(gòu)包括PLC專用指令集處理器、通用處理器,其中PLC專用指令集處理器通過PLC專用集處理器與通用處理器的接口與通用處理器相連;實(shí)現(xiàn)方法按照該可編程控制器專用指令集處理器采用四級流水線,包括取指階段、譯碼階段、執(zhí)行階段、以及回寫階段。本發(fā)明通過設(shè)計(jì)符合PLC指令特征的PLC專用指令集,減少PLC處理器執(zhí)行的指令數(shù),加快可編程控制器程序的執(zhí)行速度,提高了PLC處理器對功能塊指令的處理性能。
文檔編號G05B19/05GK102298352SQ201010210039
公開日2011年12月28日 申請日期2010年6月25日 優(yōu)先權(quán)日2010年6月25日
發(fā)明者劉志峰, 呂巖, 曾舒婷, 楊志家, 段茂強(qiáng), 謝闖 申請人:中國科學(xué)院沈陽自動(dòng)化研究所