專利名稱:微控制器、執(zhí)行指令的方法及電子系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種電子系統(tǒng),尤其是關(guān)于一種微控制器及 其執(zhí)行指令的方法。
背景技術(shù):
近年來,微控制器單元(MCU, microcontroller units)在 電子產(chǎn)業(yè)中得到了廣泛的應(yīng)用。微控制器包括用于控制微處理 器行為的指令集。其中,使用精簡指令集計算(RISC, Reduced Instruction Set Computing)的微處理器得到廣泛采用。
對數(shù)據(jù)存儲器的訪問可采用直接尋址模式和間接尋址模 式。在直接尋址模式中,指令中包括一個直接訪問數(shù)據(jù)存儲器 的地址。在間接尋址模式中,指令不包含直接訪問數(shù)據(jù)存儲器 的地址。微控制器可根據(jù)指令中的偏移量和寄存器中的內(nèi)容計 算出所需的地址。因此,間接尋址模式比直接尋址模式復(fù)雜。 然而在傳統(tǒng)微控制器中,直接尋址模式的尋址空間非常有限。 例如, 一 個具有16位編碼的傳統(tǒng)指令包括8位操作碼和8位操作 數(shù)。8位操作數(shù)可包含8位地址。此時,數(shù)據(jù)存儲器的直接尋址 空間可為0~ 255。數(shù)據(jù)存儲器的其他空間可采用間接尋址進(jìn)行 訪問。
此外,傳統(tǒng)的微控制器可采用 一組8位工作寄存器或一組16 位工作寄存器來進(jìn)行算術(shù)和/或邏輯運算。然而,不能直接采用 8位工作寄存器進(jìn)行16位數(shù)據(jù)的運算,也不能直接采用16位工作 寄存器進(jìn)行8位數(shù)據(jù)的運算。因此,當(dāng)采用8位工作寄存器時, 傳統(tǒng)的微控制器需要額外的指令將16位數(shù)據(jù)轉(zhuǎn)換成8位數(shù)掩同 樣的,當(dāng)采用16位工作寄存器時,微控制器需要額外的指令將8位數(shù)據(jù)轉(zhuǎn)換成1 6位數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于提供 一 種微控制器及其執(zhí)行 指令的方法,用以節(jié)省系統(tǒng)的存儲空間,降低系統(tǒng)的復(fù)雜性和 成本。
為解決上述技術(shù)問題,本發(fā)明提供了 一種微控制器,其包
括多個主寄存器、次寄存器和中央處理單元(CPU)。多個主寄
存器分別存儲多個主數(shù)據(jù)。每個主數(shù)據(jù)具有第一寬度。次寄存 器由多個主寄存器組成,用于存儲具有第二寬度的次數(shù)據(jù)。次 數(shù)據(jù)由多個主數(shù)據(jù)組合而成。中央處理單元執(zhí)行處于第一模式
的第一指令,即讀取一個主數(shù)據(jù)進(jìn)行操作;中央處理單元還執(zhí) 行處于第二模式的第二指令,即讀取次數(shù)據(jù)進(jìn)行操作。
本發(fā)明所述的微控制器,還包括存儲器,用于存儲所述 第一指令和所述第二指令,所述第一指令根據(jù)該第一指令中的
信息指定所述多個主寄存器中的一個主寄存器,所述第二指令 根據(jù)該第二指令中的信息指定所述次寄存器。
本發(fā)明所述的微控制器,所述第二寬度等于所述多個主數(shù) 據(jù)的所述第一寬度的總和。
本發(fā)明所述的微控制器,所述第一指令包括一個操作碼, 用于表示對所述主數(shù)據(jù)執(zhí)行的操作。
本發(fā)明所述的微控制器,所述第二指令包括 一 個操作碼, 用于表示對所述次數(shù)據(jù)執(zhí)行的操作。
本發(fā)明所述的微控制器,還包括翻譯器,用于將所述第 一指令翻譯為第一機(jī)器碼,并將所述第二指令翻譯為第二機(jī)器
碼,所述中央處理單元根據(jù)所述第一機(jī)器碼讀取所述主數(shù)據(jù)進(jìn) 行操作,并根據(jù)所述第二機(jī)器碼讀取所述次數(shù)據(jù)進(jìn)行操作。本發(fā)明所述的微控制器,還包括存儲器,用于存儲直接
尋址指令,翻譯所述直接尋址指令得到的機(jī)器碼包括主地址, 用于訪問數(shù)據(jù)存儲器;及至少一個模式位,用于選擇普通直接 尋址模式或擴(kuò)展直接尋址模式,所述普通直接尋址模式是根據(jù) 所述主地址訪問所述數(shù)據(jù)存儲器,所述擴(kuò)展直接尋址模式是根 據(jù)包含所述主地址和額外地址的擴(kuò)展地址訪問所述數(shù)據(jù)存儲 器。
本發(fā)明所述的微控制器,所述額外地址存儲在所述微控制 器的一個寄存器中。
本發(fā)明還提供了一種執(zhí)行指令的方法,其包括將多個主 數(shù)據(jù)分別存儲在多個主寄存器中,其中該多個主數(shù)據(jù)的每一個 主數(shù)據(jù)具有第一寬度;將具有第二寬度的次數(shù)據(jù)存儲在由多個 主寄存器組成的次寄存器中,其中次數(shù)據(jù)由多個主數(shù)據(jù)組合而 成;執(zhí)行第一模式的第一指令,以讀取多個主數(shù)據(jù)的一個數(shù)據(jù) 進(jìn)行操作;執(zhí)行第二模式的第二指令,以讀取次數(shù)據(jù)進(jìn)行操作。
本發(fā)明所述的執(zhí)行指令的方法,所述第二寬度等于所述多 個主數(shù)據(jù)的所述第一寬度的總和。
本發(fā)明所述的執(zhí)行指令的方法,還包括根據(jù)所述第一指
令的信息指定所述多個主寄存器中的一個主寄存器;及根據(jù)所 述第二指令的信息指定所述次寄存器。
本發(fā)明所述的執(zhí)行指令的方法,還包括將所述第一指令 翻譯為第一機(jī)器碼;根據(jù)所述第一機(jī)器碼讀取所述主數(shù)據(jù)進(jìn)行 操作;將所述第二指令翻譯為第二機(jī)器碼;及根據(jù)所述第二機(jī) 器碼讀取所述次數(shù)據(jù)進(jìn)行操作。
本發(fā)明還提供了一種電子系統(tǒng),其包括功能模塊和微控 制器。微控制器用于根據(jù)第一指令和第二指令控制該功能模 塊。該微控制器包括多個主寄存器,用于分別存儲多個主數(shù)據(jù),該多個主數(shù)據(jù)的每一個主數(shù)據(jù)具有第一寬度;由該多個主 寄存器組成的次寄存器,用于存儲具有第二寬度的次數(shù)據(jù),該
次數(shù)據(jù)由多個主數(shù)據(jù)組合而成;中央處理單元,用于執(zhí)行處于 第一模式的第一指令,以讀取多個主數(shù)據(jù)的一個主數(shù)據(jù)進(jìn)行操 作,以及執(zhí)行處于第二模式的第二指令,以讀取該次數(shù)據(jù)進(jìn)行 操作。
本發(fā)明所述的電子系統(tǒng),所述微控制器還包括用于存儲所 述第一指令和所述第二指令的存儲器,所述第一指令根據(jù)該第 一指令中的信息指定所述多個主寄存器中的一個主寄存器,所
述第二指令根據(jù)該第二指令中的信息指定所述次寄存器。
本發(fā)明所述的電子系統(tǒng),所述第二寬度等于所述多個主數(shù) 據(jù)的所述第一寬度的總和。
本發(fā)明所述的電子系統(tǒng),所述第 一 指令包括 一 個操作碼, 用于表示對所述主數(shù)據(jù)執(zhí)行的操作。
本發(fā)明所述的電子系統(tǒng),所述第二指令包括 一 個操作碼, 用于表示對所述次數(shù)據(jù)執(zhí)行的操作。
本發(fā)明所述的電子系統(tǒng),所述微控制器還包括翻譯器,用 于將所述第一指令翻譯為第一機(jī)器碼,并將所述第二指令翻譯 為第二機(jī)器碼,所述中央處理單元根據(jù)所述第一機(jī)器碼讀取所 述主數(shù)據(jù)進(jìn)行操作,并根據(jù)所述第二機(jī)器碼讀取所述次數(shù)據(jù)進(jìn) 行操作。
本發(fā)明所述的電子系統(tǒng),還包括存儲器,用于存儲直接 尋址指令,翻譯所述直接尋址指令得到的機(jī)器碼包括主地址, 用于訪問數(shù)據(jù)存儲器;及至少一個模式位,用于選擇普通直接 尋址模式或擴(kuò)展直接尋址模式,所述普通直接尋址模式是根據(jù) 所述主地址訪問所述數(shù)據(jù)存儲器,所述擴(kuò)展直接尋址模式是根 據(jù)包含所述主地址和額外地址的擴(kuò)展地址訪問所述數(shù)據(jù)存儲本發(fā)明所述的電子系統(tǒng),所述額外地址存儲在所述微控制 器的一個寄存器中。
與現(xiàn)有技術(shù)相比,本發(fā)明微控制器可執(zhí)行包含不同寬度數(shù) 據(jù)的指令,并可把數(shù)據(jù)存儲在對應(yīng)寬度的寄存器中,以減少指 令總數(shù)和運行時間,從而節(jié)省了系統(tǒng)的存儲空間,減小了系統(tǒng) 的復(fù)雜性和成本,同時還提高了效率。
圖1所示為根據(jù)本發(fā)明 一 個實施例的微控制器的結(jié)構(gòu)框圖。
圖2所示為根據(jù)本發(fā)明 一 個實施例的圖1中的示例性數(shù)據(jù)存 儲器的方框圖。
圖3所示為根據(jù)本發(fā)明一個實施例的用于數(shù)據(jù)存儲器中的 寄存器的示例性編程模型的方框圖。
圖4所示為根據(jù)本發(fā)明 一 個實施例的微控制器執(zhí)行的 一 個 指令的示例性編碼。
圖5至圖11所示為根據(jù)本發(fā)明 一 個實施例的示例性算術(shù)運 算類指令的列表。
圖12至圖22所示為根據(jù)本發(fā)明 一 個實施例的示例性邏輯運 算類指令的列表。
圖23至圖26所示為根據(jù)本發(fā)明 一 個實施例的示例性數(shù)據(jù)轉(zhuǎn) 移類指令的列表。
圖27至圖28所示為根據(jù)本發(fā)明 一 個實施例的示例性位和位 測試類指令。
圖29至圖30所示為根據(jù)本發(fā)明 一 個實施例的示例性程序轉(zhuǎn) 移類指令的列表。
圖3 1所示為根據(jù)本發(fā)明 一 個實施例的示例性控制類指令。圖32所示為根據(jù)本發(fā)明 一 個實施例的微控制器的操作流程圖。
圖33所示為根據(jù)本發(fā)明 一個實施例的電子系統(tǒng)的方框圖。
具體實施例方式
以下結(jié)合附圖和具體實施例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì) 的說明,以4吏本發(fā)明的特性和優(yōu)點更為明顯。
以下將對本發(fā)明微控制器的實施例給出詳細(xì)的說明。盡管 本發(fā)明將結(jié)合一些具體實施方式
進(jìn)行闡述和說明,但需要注意 的是本發(fā)明并不僅僅只局限于這些實施方式。相反,對本發(fā)明 進(jìn)行的修改或者等同替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍 當(dāng)中。
另外,為了更好的說明本發(fā)明,在下文的具體實施方式
中 給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員將理解,沒有這些具 體細(xì)節(jié),本發(fā)明同樣可以實施。在另外一些實例中,對于大家 熟知的方法、流程、元件和電^各未作詳細(xì)描述,以1更于凸顯本 發(fā)明的主旨。
本發(fā)明的 一 個實施例提供了 一種微控制器。該微控制器可 應(yīng)用于各種電子設(shè)備中以控制電子設(shè)備的運作。電子設(shè)備包括 但不限于通信設(shè)備、汽車、安全系統(tǒng)、電池系統(tǒng)、熱水器和恒 溫調(diào)節(jié)器等。
圖1所示為根據(jù)本發(fā)明 一 個實施例的微控制器10 0的結(jié)構(gòu)框 圖。在一個實施例中,微控制器100包括中央處理單元(CPU, Central processing unit) 102,指令存儲器104,程序存儲器106 和數(shù)據(jù)存儲器108。在一個實施例中,指令存儲器104可用于存 儲包含多個指令的指令集,并可集成在譯碼器(未在圖l中示出) 中。為了執(zhí)行指令集中的一條指令,譯碼器可獲取該指令的信息。微控制器100可釆用 一種哈佛架構(gòu)(Harvard architecture), 即程序存儲器106和數(shù)據(jù)存儲器108是分開的。程序存儲器106 可為可編程閃速存儲器,用于存儲用戶編寫的程序。數(shù)據(jù)存儲 器108可包括-猙態(tài)隨才幾存儲器(SRAM, static random access memory),用于存儲執(zhí)行程序所需的數(shù)據(jù)。微控制器100還包括 程序存儲器總線112和數(shù)據(jù)存儲器總線114,分別用于訪問程序 存儲器106和數(shù)據(jù)存儲器108。當(dāng)執(zhí)行一個指令時,CPU 102可 通過數(shù)據(jù)存儲器總線114讀取存儲在數(shù)據(jù)存儲器108上的數(shù)據(jù), 并可通過程序存儲器總線112讀取存儲在程序存儲器106上的下 一條指令。
圖2所示為根據(jù)本發(fā)明一個實施例的微控制器100 (如圖1 所示)的數(shù)據(jù)存儲器108的示范框圖。在一個實施例中,數(shù)據(jù)存 儲器108可包括但不局限于內(nèi)部寄存器、特殊功能寄存器、輸入 /輸出(I/O, input/output)寄存器和靜態(tài)隨機(jī)存儲器(SRAM)。 數(shù)據(jù)存儲器108在不同的應(yīng)用中具有不同的結(jié)構(gòu)。在一個實施例 中,內(nèi)部寄存器在微控制器100執(zhí)行一條指令(例如,算術(shù)運算 指令,邏輯運算指令等)時被訪問,特殊功能寄存器用于控制 外圍硬件,1/0寄存器用于I/0操作,SRAM用于存儲數(shù)據(jù)。
如圖2的例子所示,內(nèi)部寄存器映射到數(shù)據(jù)存儲器108中的 地址為0000H 000CH,例如,寄存器R0L的地址為0000H,寄 存器R0H的地址為0001H,寄存器R1L的地址為0002H,寄存器 R1H的地址為0003H,寄存器IXL的地址為0004H,寄存器IXH 的地址為0005H,寄存器IYL的地址為0006H,寄存器IYH的地 址為0007H,寄存器PCL的地址為0008H,寄存器PCH的地址為 0009H ,寄存器SPL的地址為000AH ,寄存器SPH的地址為 OOOBH,寄存器CC的地址為000CH。在一個實施例中,寄存器 ROL也可在算術(shù)和邏輯運算中用作通用累加器(A ,accumulator),特殊功能寄存器(比如接口寄存器,ADC和計 數(shù)器的控制寄存器等)和I/O寄存器映射到數(shù)據(jù)存儲器108中的 地址為000DH 00DFH。 SRAM是一個內(nèi)部通用數(shù)據(jù)SRAM,映 射到凄丈才居存^諸器108中的J也址OOEOH FFFFH。 SRAM的大小可才艮 據(jù)具體應(yīng)用的需要作改變。
圖3所示為根據(jù)本發(fā)明的一個實施例的微控制器IOO(如圖1 所示)中數(shù)據(jù)存儲器108中的寄存器的示例性編程模型300。編 程模型300包括內(nèi)部寄存器302 332 (例如,圖2的數(shù)據(jù)存儲器 108中的內(nèi)部寄存器)。更具體的說,編程模型300包括工作寄存 器302 318(例如R0H 302, R0L304, R1H306, R1L308, IXH312, IXL314, IYH316, IYL318),用于存儲運算(例如, 算術(shù)和邏輯運算)所需的數(shù)據(jù)。編程模型300還包括用于指示微 控制器正在執(zhí)行指令序列中哪一條指令的程序計數(shù)(PC, program counter )寄存器(例如,PCH322和PCL324 ),用于指 示微控制器的堆棧(SP, stack pointer )中最頂端數(shù)據(jù)項的堆棧 指針寄存器(例如,SPH326和SPL328 ),以及用于存儲條件碼 (CC, condition code )當(dāng)前值的條件碼寄存器332。
在一個實施例中,內(nèi)部寄存器(例如,寄存器302 ~ 332 ) 為主寄存器。優(yōu)點在于,多個主寄存器302 332可構(gòu)成次寄存 器。在一個實施例中,主寄存器302 332構(gòu)成了一組次寄存器 342 - 354。具體的說,主寄存器ROH 302和主寄存器R0L 304構(gòu) 成次寄存器RO 342,主寄存器R1H 306和主寄存器R1L 308構(gòu)成 次寄存器R1 344,主寄存器IXH 312和主寄存器IXL 314構(gòu)成次 寄存器IX 346,主寄存器IYH 316和主寄存器IYL 318構(gòu)成次寄 存器IY 348,主寄存器PCH 322和主寄存器PCL 324構(gòu)成次寄存 器PC 352,主寄存器SPH 326和主寄存器SPL 328構(gòu)成次寄存器 SP 354。主寄存器302 ~ 332可分別存儲多個主數(shù)據(jù)。每一個主數(shù)據(jù) 具有第一寬度,例如,8位。每一個次寄存器342 354由多個主 寄存器(例如,在圖3的例子中為兩個主寄存器)組成,并可存 儲具有第二寬度(比如16位)的次數(shù)據(jù)。次數(shù)據(jù)是由多個主 數(shù)據(jù)組合而成。例如,次寄存器342中的次數(shù)據(jù)是由主寄存器302 中的主數(shù)據(jù)和主寄存器304中的主數(shù)據(jù)組合而成。優(yōu)點在于, CPU 102可執(zhí)行處于第一模式的第一指令,即讀取主數(shù)據(jù)進(jìn)行 運算;CPU 102也可執(zhí)行處于第二模式的第二指令,即讀取次 數(shù)據(jù)進(jìn)行運算。根據(jù)指令中包含的信息,該第一指令可指定一 個或多個主寄存器,該第二指令可指定一個或多個次寄存器。
在一個實施例中,次寄存器的寬度等于構(gòu)成該次寄存器的 多個主寄存器的總寬度。在一個實施例中,工作寄存器302 318 的寬度為8位,可用作工作字節(jié)寄存器。而且,次寄存器342 ~ 348的寬度為16位,可用作工作字寄存器。因此,可通過直接讀 取字節(jié)寄存器(比如,主寄存器)中的數(shù)據(jù)來執(zhí)行字節(jié)操作指 令(比如ADDR Ra, Rb),且可通過直接讀取字寄存器(比 如,次寄存器)中的數(shù)據(jù)來執(zhí)行字操作指令(比如ADDWRRi, Rj)。
在一個實施例中,指令可包括寄存器的地址,例如,A, Ra, Rb, Ri和Rj。 Ra和Rb可表示源工作字節(jié)寄存器的地址,在 機(jī)器碼編碼中表示為"xxx"。在字節(jié)操作中,可根據(jù)Ra和Rb的 值來選擇和訪問主寄存器302 318。 Ri和Rj可表示源工作字寄 存器的地址,在機(jī)器碼編碼中表示為"xx"。在字操作中,可根 據(jù)Ri和Rj的值來選擇和訪問次寄存器342 ~ 348。
例如,在一個實施例中, 一個指令可被翻譯器(例如,匯 編程序或C編譯器)翻譯為16位機(jī)器碼 aabb ccee。 值
得注意的是,本發(fā)明的實施例中描述的機(jī)器碼可為二進(jìn)制碼,文中所示的字母或符號(例如,aaaa aaaa aabb ccee )僅作說明 使用。在一個實施例中,位[15] 位[6](aaaa aaaa aa)部分指示指 令執(zhí)行的操作,位[5] 位[3](bbc)部分指示第 一主寄存器的地 址,位[2] 位
(cee)部分指示第二主寄存器的地址。因此,當(dāng) 執(zhí)行該指令時,第 一主寄存器(bbc)和第二主寄存器(cee)被訪 問。在另一個實施例中,位[15] 位[4](aaaa aaaa aabb)部分指示 指令執(zhí)行的操作,位[3] 位[2](cc)部分指示第 一次寄存器的地 址,位[l] 位
(ee)部分指示第二次寄存器的地址。因此,當(dāng) 執(zhí)行該指令時,第一次寄存器(cc)和第二次寄存器(ee)被訪問。
示例性指令"ADDR Ra, Rb"的操作是將主寄存器Ra和Rb 中的兩個8位的^:據(jù)相加。該指令的4幾器碼為"1001 1010 OOaa abbb",其中"IOOI 1010 OO,,表示字節(jié)加法運算,"aaa,,表示主寄 存器Ra的地址,"bbb,,表示主寄存器Rb的地址。因此,Ra中的 數(shù)據(jù)和Rb中的數(shù)據(jù)相加,并根據(jù)目標(biāo)位(例如,位[6])將所得 的結(jié)果寫入寄存器Ra。示例性指令"ADDWR Ri, Rj"的操作是 將次寄存器Ri和Rj中的兩個16位的數(shù)據(jù)相加。該指令的機(jī)器碼 為"IOOI 1111 0000 iijj,,,其中"IOOI 1111 0000,,表示字力。法運 算,"ii,,表示次寄存器Ri的地址,"jj"表示次寄存器Rj的地址。 因此,Ri中的數(shù)據(jù)和Rj中的數(shù)據(jù)相加,并^4居目標(biāo)位(例如, 位[4])將所得的結(jié)果寫入寄存器Ri。
因此,微控制器可執(zhí)行包含不同寬度數(shù)據(jù)的指令,并可把 數(shù)據(jù)存儲在對應(yīng)寬度的寄存器中。執(zhí)行結(jié)果可根據(jù)情況寫入主 寄存器或次寄存器。在一個實施例中,不需要額外的轉(zhuǎn)換指令 和轉(zhuǎn)換操作,比如將16位數(shù)據(jù)轉(zhuǎn)換為8位,或反向轉(zhuǎn)換等。因 此,減少了指令總數(shù)和運行時間。
在 一 個實施例中,內(nèi)部寄存器302 ~ 3 1 8還可根據(jù)不同應(yīng)用 的需要具有其他寬度(例如,16位或32位)。因此,次寄存器342 ~348可具有32位或64位的寬度。
同理,次寄存器PC 352和SP 354也可根據(jù)不同應(yīng)用的需要 改變寬度的大小。在一個實施例中,次寄存器PC 352和SP 354 可為16位寬度,其中分別包括8位的主寄存器PCH 322和PCL 324,以及SPH 326禾口SPL 328,用于支持包含64K4旨令的禾呈序。
另外,條件碼寄存器332可為8位寬度。在一個實施例中, 條件碼寄存器332包括進(jìn)位/借位(BC)標(biāo)志位,零(ZE )標(biāo) 志位,負(fù)(NZ)標(biāo)志位,溢出(OV)標(biāo)志位,符號測試(ST) 位,用于半字節(jié)或半字操作的半進(jìn)位/借位(HC)標(biāo)志位,用 于字操作的字進(jìn)位/借位(HC)標(biāo)志位,以及全局中斷允許/禁 止(IE )位。
圖4所示為根據(jù)本發(fā)明一個實施例的微控制器100 (如圖1 所示)執(zhí)行的一個指令的示例性編碼(機(jī)器碼)400。翻譯器(例 如,匯編程序或C編譯器)可將該指令翻譯成機(jī)器碼,例如 一個16位的機(jī)器碼。機(jī)器碼400包括才栗作碼410和才喿作數(shù)420。操 作碼410具有可擴(kuò)展的寬度(例如,在一個實施例中為7位),用 于表示該指令執(zhí)行的操作。操作數(shù)420可表示指令操作的數(shù)據(jù), 例如參數(shù),主寄存器的地址,次寄存器的地址等。在一個實 施例中,機(jī)器碼400還包括一個目的地址位(例如,位[8]),用 于指示結(jié)果目的地址。優(yōu)點在于,根據(jù)翻譯得到的機(jī)器碼400, CPU 102可從主寄存器中讀取主數(shù)據(jù),也可從次寄存器中讀取 次數(shù)據(jù)。
微控制器100可采用多種尋址模式,包括但不局限于固定尋 址模式、文字尋址模式、寄存器尋址模式、直接尋址模式和間 接尋址模式等。在一個實施例中,固定尋址的指令除有明確定 義外不需要地址。文字尋址的指令包含可用于數(shù)學(xué)運算的文字 常數(shù)區(qū)。例如, 一個指令可包含參數(shù)k,該參數(shù)k可為8位并可直接用于運算。
如果一個指令采用寄存器尋址模式,該指令指定一個或多 個包含執(zhí)行該指令所需數(shù)據(jù)的寄存器。該指令可指定一個或多
個主寄存器302 ~ 318,或一個或多個次寄存器342 348。根據(jù) 指令指定的寄存器,能直接完成所需操作。
在一個實施例中,執(zhí)行直接尋址的指令需要訪問與該指令 中包含的地址對應(yīng)的數(shù)據(jù)存儲器。直接尋址指令可包括操作數(shù) @f,表示數(shù)據(jù)存儲器中一個寄存器的8位地址。在一個16位機(jī) 器碼(例如,圖4的才幾器碼400 )中,位[7] 位
可用于訪問地 址從0到255的數(shù)據(jù)存儲器。
示例性指令"ADDM A, @f ,d,,的操作是將累加器A (例如, 圖2中寄存器R0L )中的數(shù)據(jù)和直接尋址模式下的數(shù)據(jù)存儲器 (例如,圖2中SRAM)中地址為(f)中的數(shù)據(jù)相加,并根據(jù) 指令中的目的地址位"d"將加法結(jié)果寫入累加器A或數(shù)據(jù)存儲 器中地址為(f)的寄存器。
優(yōu)點在于,數(shù)據(jù)存儲器的直接尋址空間可得到擴(kuò)展。在一 個實施例中,一個指令的機(jī)器碼400可包括用于訪問數(shù)據(jù)存儲器 的地址和至少一個用于選擇普通直接尋址模式或擴(kuò)展直接尋址 模式的模式位。普通直接尋址模式是指根據(jù)指令中的地址訪問 數(shù)據(jù)存儲器,而擴(kuò)展直接尋址模式則是根據(jù)由指令中的地址和 一個額外地址組成的擴(kuò)展地址訪問數(shù)據(jù)存儲器。額外地址可存 儲于微控制器的寄存器中。寄存器中的額外地址和指令中的地 址共同構(gòu)成擴(kuò)展地址。于是可根據(jù)擴(kuò)展地址訪問數(shù)據(jù)存儲器 108。
例如,機(jī)器碼400的位[7] ~位[5]可用作模式位。在一個實 施例中,如果位[7] ~位[5]取值為從"000,,到"110"(即,"000", "001", "010", "011", "100", "101",或"110"),則表明執(zhí)行普通直接尋址模式。此時位[7] ~位
可用于訪問數(shù)據(jù)存儲器中
地址從0到223中的內(nèi)容。在一個實施例中,如果位[7] 位[5] 取值為"lll", 則表明執(zhí)行擴(kuò)展直接尋址模式。此時, 一個寄 存器(例如,圖3中寄存器IXH312)的8位數(shù)據(jù)和機(jī)器碼400(如 圖4)的位[4] ~位
組成一個13位的地址,可用于直接訪問數(shù) 據(jù)存儲器中8K字節(jié)的空間。因此,直接尋址空間實現(xiàn)了擴(kuò)展。
微控制器10 0也可執(zhí)行間接尋址模式的指令。變址寄存器可 被應(yīng)用于間接尋址,例如,寄存器IX 346或IY 348。間接尋址 的指令還包括一個偏移量。通過將變址寄存器中的內(nèi)容加上或 減去偏移量提供變址地址,則可根據(jù)該變址地址訪問數(shù)據(jù)存儲 器108。在一個實施例中,偏移量可為一個5位的可與變址寄存 器中的內(nèi)容相加的立即數(shù)(例如,用offs5[rx]表示)。在另一個 實施例中,偏移量可為 一 個3位的自動偏移后增量(OPI , offset-post-increment)。變址地址是變址寄存器的值加上3位的 偏移量。在另 一個實施例中,偏移量可為一個3位的自動偏移前 減量(OPD, offset-pre-decrement)。變址地址等于變址寄存器 的值減去3位偏移量。
間接尋址的指令可包括操作數(shù),如q, rx, r, @offs5[rx], @offs3[rx], @offs5[IY], @offs3[IY〗,@offs3[IX〗,p, c, e, n等。參數(shù)q可表示變址模式選擇位。在一個實施例中,當(dāng)q等于 0時,則選擇自動偏移后增量(OPI);當(dāng)q等于l時,則選擇自 動偏移前減量(OPD)。參數(shù)rx可指定一個變址寄存器(例如, IX或IY),參數(shù)r可表示寄存器選擇位。在一個實施例中,當(dāng)r 等于0時,則選擇寄存器IX;當(dāng)r等于l時,則選擇寄存器IY。
參數(shù)(^offs5[rx]可為基于參數(shù)r所選的變址寄存器(例如, IX或IY)的5位偏移量,在編碼中可由"ooooo"表示。參數(shù) ⑨offs3[rx]可為基于參數(shù)r所選的變址寄存器(例如,IX或IY)的3^f立 <扁移量,在編石馬中可由"ooo "表示。參數(shù)⑨offs5[IY]可為 基于寄存器IY的5位偏移量,在編碼中可由"ooooo"或"yyyyy" 表示。參數(shù)(^offs3[IY]可為基于寄存器IY的3位偏移量,在編碼 中可由"ooo"或"yyy"表示。參數(shù)@offs3 [IX]可為基于寄存器IX 的3位偏移量,在編碼中可由"ooo"或"xxx"表示。
參數(shù)p可為字節(jié)選擇位,用于以字節(jié)為單位裝載程序存儲器 的數(shù)據(jù)。在一個實施例中,當(dāng)p等于0時,則選擇程序存儲器中 數(shù)據(jù)的高字節(jié);當(dāng)p等于l時,則選擇程序存儲器中數(shù)據(jù)的低字
節(jié)
參數(shù)c可為用于選擇清零或置位操作的選擇位。在一個實施 例中,當(dāng)c等于O時,則選擇清零操作;當(dāng)c等于l時,則選擇置 位操作。參數(shù)e可為一個3位數(shù)據(jù),用于8位數(shù)據(jù)中的位位置(bit position)選擇,編碼中可用"eee,,表示。參數(shù)n可為一個8位的 變址數(shù),用于轉(zhuǎn)移(branch)、相對調(diào)用和相對轉(zhuǎn)移操作。
如前述圖l所示,微控制器100包括指令存儲器104,用于存 儲指令集。指令集中的每個指令都包括操作碼和操作數(shù)。其中, 操作碼用于表示對應(yīng)指令執(zhí)行的操作,操作數(shù)用于表示執(zhí)行對 應(yīng)指令所需的數(shù)據(jù)。
指令集中的指令可從多個指令列表中進(jìn)行選擇,以下將結(jié) 合圖5至圖31進(jìn)行描述。圖5至圖11所示為根據(jù)本發(fā)明的實施例 的示例性算術(shù)運算類指令。算術(shù)運算類指令包括ADD為無 進(jìn)位加法指令(例如,字節(jié)類無進(jìn)位加法和字類無進(jìn)位加法), ADC為帶進(jìn)位加法指令(例如,字節(jié)類帶進(jìn)位加法和字類帶進(jìn) 位加法),SUB為無借位減法指令(例如,字節(jié)類無借位減法和 字類無借位減法),SBC為帶借位減法指令(例如,字節(jié)類帶借 位減法和字類帶借位減法),INC為力口1指令(例如,字節(jié)類加l 和字類加l), DEC為減1指令(例如,字節(jié)類減l和字類減l),CMP為無符號數(shù)比較指令(例如,字節(jié)類比較和字類比較),
MUL為無符號數(shù)乘法指令(例如,字節(jié)類乘法和字類乘法),
等其他指令。
圖12至圖22所示為根據(jù)本發(fā)明的實施例所述的示例性邏輯 運算類指令。邏輯運算類指令包括邏輯AND指令(例如,字 節(jié)類AND和字類AND),邏輯OR指令(例如,字節(jié)類OR和字類 OR),邏輯異或(XOR)指令(例如,字節(jié)類XOR和字類XOR), RLC為帶進(jìn)位循環(huán)左移指令(例如,字節(jié)類RLC和字類RLC), RRC為帶進(jìn)位循環(huán)右移指令(例如,字節(jié)類RRC和字類RRC), RLNC為無進(jìn)位循環(huán)左移指令(例如,字節(jié)類RLNC和字類 RLNC), RRNC為無進(jìn)位循環(huán)右移指令(例如,字節(jié)類RRNC 和字類RRNC), SWAP為半字節(jié)或半字交換指令(例如,字節(jié) 類SWAP和字類SWAP ), NOT為取反指令(例如,字節(jié)類NOT 和字類NOT), NEG為二進(jìn)制補(bǔ)碼指令(例如,字節(jié)類NEG和字 類NEG), CLR為數(shù)據(jù)存儲器清零指令(例如,字節(jié)類CLR和字 類CLR), SET為數(shù)據(jù)存儲器置位指令(例如,字節(jié)類SET和字 類SET),等其他指令。
圖23至圖26所示為根據(jù)本發(fā)明的實施例的示例性數(shù)據(jù)轉(zhuǎn)移 類指令。數(shù)據(jù)轉(zhuǎn)移類指令包括MOV指令(例如,字節(jié)類MOV 和字類MOV), LPX指令,LPD指令,LPW指令,PUSH指令(例 如,字節(jié)類PUSH和字類PUSH), POP指令(例如,字節(jié)類POP 和字類POP)等。
圖27至圖28所示為根據(jù)本發(fā)明的實施例的示例性位和位測 試類指令。位和位測試類指令包括BSC為工作字節(jié)寄存器和 數(shù)據(jù)存儲器的位清零或置位指令,BCSCC為條件碼寄存器的位 清零或置位指令,BTG為工作字節(jié)寄存器和數(shù)據(jù)存儲器的位觸 發(fā)指令。圖29至圖30所示為根據(jù)本發(fā)明的實施例的示例性程序轉(zhuǎn)移 類指令。程序轉(zhuǎn)移類指令包括SKP指令用作當(dāng)工作字節(jié)寄存 器和數(shù)據(jù)存儲器的位e清零或置位時跳過,SKPCC指令用作當(dāng) 條件碼寄存器的位e清零或置位時跳過,BRACC指令用作當(dāng)條 件碼寄存器的位e清零或置位時轉(zhuǎn)移,RJMP為無條件相對轉(zhuǎn)移 指令,IJMP為變址方式的轉(zhuǎn)移指令,RCALL為子程序相對調(diào)用 指令,ICALL為子程序變址方式調(diào)用指令,CTBL為表函數(shù)調(diào)用 指令,JTBL為基于查找表的轉(zhuǎn)移指令,RET為子程序返回指令, RETD指令用作子程序返回一個立即數(shù)據(jù),RETI為中斷返回指 令等。
圖31所示為根據(jù)本發(fā)明的實施例的示例性控制類指令???制類指令包括空操作指令NOP, ^木眠指令SLEEP, WTDCLR 為監(jiān)視定時器清零指令,TRAP為專用軟件中斷指令,等其他指
在實際應(yīng)用中,可從圖5至圖31中的指令列表中選出特定的 指令構(gòu)造專用指令集。因此,可根據(jù)各種應(yīng)用情況選擇特定的 指令構(gòu)造滿足需要的指令集(例如,圖5至圖31中的S0, Sl,
S2, S3)。微控制器100可采用由所需指令組成的特定指令集, 而非各類指令列表中的所有指令。這樣的設(shè)計可減小用于存儲 指令集的指令存儲器空間,從而減小系統(tǒng)的復(fù)雜性和成本。
圖32所示為根據(jù)本發(fā)明 一 個實施例的微控制器IOO的操作 流程圖500。圖32將結(jié)合圖l和圖3進(jìn)行描述。在步驟502中,將 多個主數(shù)據(jù)分別存儲于多個主寄存器(例如,主寄存器302和 304 )中,每個主數(shù)據(jù)具有第一寬度。在步驟504中,將具有第 二寬度的次數(shù)據(jù)存儲于次寄存器(例如,包含主寄存器302和304 的次寄存器342 )中。次數(shù)據(jù)是由多個主數(shù)據(jù)組合而成。在步驟 506中,CPU 102可執(zhí)行第一模式的第一指令,即讀取多個主數(shù)據(jù)(例如,主寄存器302和304中的主數(shù)據(jù))中的一個主數(shù)據(jù)進(jìn) 行操作。在步驟508中,CPU 102可執(zhí)行第二模式的第二指令, 即讀取次數(shù)據(jù)進(jìn)行操作。
圖33所示為根據(jù)本發(fā)明 一 個實施例的采用微控制器1 OO(如 圖l所示)的電子系統(tǒng)600的方框圖。電子系統(tǒng)600包括電源602, 微控制器IOO,以及由微控制器100控制的功能模塊606。在一個 實施例中,電源602提供電能給微控制器100和功能模塊606。在 一個實施例中,微控制器100采用本發(fā)明前文所示的結(jié)構(gòu),用于 根據(jù)一個程序包含的多個指令來控制功能模塊606。例如,微控 制器1 OO可被用于電池管理系統(tǒng)。微控制器1 OO可用作控制功能 模塊,比如電池充/放電電路或電池單元均銜-模塊。
因此,本發(fā)明公開了具有多個指令的微控制器IOO。微控制 器100包括主寄存器(例如,8位寬的寄存器)和由主寄存器組 成的次寄存器(例如,16位寬的寄存器)。因此,可直接采用主 寄存器或次寄存器來執(zhí)行需要8位或16位數(shù)據(jù)的指令。可將眾多
指令中的特定指令選出組成專用指令集。因此,指令集的大小 是可改變的,可根據(jù)不同的應(yīng)用來構(gòu)造所需的指令集。此外, 數(shù)據(jù)存儲器中的直接尋址空間可通過使用擴(kuò)展直接尋址模式進(jìn) 行擴(kuò)展,即采用寄存器(例如,寄存器IXH)中的額外地址進(jìn) 行擴(kuò)展。因此,降低了系統(tǒng)的復(fù)雜性和成本,同時還提高了效 率。
上文具體實施方式
和附圖僅為本發(fā)明的常用實施例。顯然, 在不脫離權(quán)利要求書所界定的本發(fā)明精神和發(fā)明范圍的前提下 可以有各種增補(bǔ)、修改和替換。本領(lǐng)域技術(shù)人員應(yīng)該理解,本 發(fā)明在實際應(yīng)用中可根據(jù)具體的環(huán)境和工作要求在不背離發(fā)明 準(zhǔn)則的前提下在形式、結(jié)構(gòu)、布局、比例、材料、元素、組件 及其它方面有所變化。因此,在此4皮露的實施例僅用于說明而非限制,本發(fā)明的范圍由權(quán)利要求書及其合法等同物界定,而 不限于此前的描述。
權(quán)利要求
1. 一種微控制器,其特征在于,包括多個主寄存器,用于分別存儲多個主數(shù)據(jù),所述多個主數(shù)據(jù)的每一個主數(shù)據(jù)具有第一寬度;由所述多個主寄存器組成的次寄存器,用于存儲具有第二寬度的次數(shù)據(jù),所述次數(shù)據(jù)由所述多個主數(shù)據(jù)組合而成;及中央處理單元,用于執(zhí)行處于第一模式的第一指令,以讀取所述多個主數(shù)據(jù)的一個主數(shù)據(jù)進(jìn)行操作,以及執(zhí)行處于第二模式的第二指令,以讀取所述次數(shù)據(jù)進(jìn)行操作。
2. 根據(jù)權(quán)利要求l所述的微控制器,其特征在于,還包括存儲器,用于存儲所述第一指令和所述第二指令,所述第 一指令根據(jù)該第一指令中的信息指定所述多個主寄存器中的一個主寄存器,所述第二指令根據(jù)該第二指令中的信息指定所述 次寄存器。
3. 根據(jù)權(quán)利要求l所述的微控制器,其特征在于,所述第 二寬度等于所述多個主數(shù)據(jù)的所述第一寬度的總和。
4. 根據(jù)權(quán)利要求l所述的微控制器,其特征在于,所述第 一指令包括一個操作碼,用于表示對所述主數(shù)據(jù)執(zhí)行的操作。
5. 根據(jù)權(quán)利要求l所述的微控制器,其特征在于,所述第 二指令包括一個操作碼,用于表示對所述次數(shù)據(jù)執(zhí)行的操作。
6. 根據(jù)權(quán)利要求l所述的微控制器,其特征在于,還包括 翻譯器,用于將所述第一指令翻譯為第一機(jī)器碼,并將所述第二指令翻譯為第二機(jī)器碼,所述中央處理單元根據(jù)所述第 一機(jī)器碼讀取所述主數(shù)據(jù)進(jìn)行操作,并根據(jù)所述第二機(jī)器碼讀 取所述次數(shù)據(jù)進(jìn)行操作。
7. 根據(jù)權(quán)利要求l所述的微控制器,其特征在于,還包括 存儲器,用于存儲直接尋址指令,翻譯所述直接尋址指令得到的機(jī)器碼包括主地址,用于訪問數(shù)據(jù)存儲器;及至少一個模式位,用于選擇普通直接尋址模式或擴(kuò)展 直接尋址模式,所述普通直接尋址模式是根據(jù)所述主地址訪問 所述數(shù)據(jù)存儲器,所述擴(kuò)展直接尋址模式是根據(jù)包含所述主地 址和額外地址的擴(kuò)展地址訪問所述數(shù)據(jù)存儲器。
8. 根據(jù)權(quán)利要求7所述的微控制器,其特征在于,所述額 外地址存儲在所述微控制器的一個寄存器中。
9. 一種執(zhí)行指令的方法,其特征在于,包括 將多個主數(shù)據(jù)分別存儲在多個主寄存器中,所述多個主數(shù)據(jù)的每一個主數(shù)據(jù)具有第一寬度;將具有第二寬度的次數(shù)據(jù)存儲在由所述多個主寄存器組成 的次寄存器中,所述次數(shù)據(jù)由所述多個主數(shù)據(jù)組合而成;執(zhí)行第一模式的第一指令,以讀取所述多個主數(shù)據(jù)的一個 主數(shù)據(jù)進(jìn)行操作;及執(zhí)行第二模式的第二指令,以讀取所述次數(shù)據(jù)進(jìn)行操作。
10. 根據(jù)權(quán)利要求9所述的執(zhí)行指令的方法,其特征在于, 所述第二寬度等于所述多個主數(shù)據(jù)的所述第一寬度的總和。
11. 根據(jù)權(quán)利要求9所述的執(zhí)行指令的方法,其特征在于, 還包括根據(jù)所述第一指令的信息指定所述多個主寄存器中的一個 主寄存器;及根據(jù)所述第二指令的信息指定所述次寄存器。
12. 根據(jù)權(quán)利要求9所述的執(zhí)行指令的方法,其特征在于, 還包括將所述第一指令翻譯為第一機(jī)器碼;根據(jù)所述第 一機(jī)器碼讀取所述主數(shù)據(jù)進(jìn)行操作; 將所述第二指令翻譯為第二機(jī)器碼;及根據(jù)所述第二機(jī)器碼讀取所述次數(shù)據(jù)進(jìn)行操作。
13. —種電子系統(tǒng),其特征在于,包括 功能模塊;及微控制器,用于根據(jù)包含第一指令和第二指令的程序控制 所述功能模塊,所述微控制器包括多個主寄存器,用于分別存儲多個主數(shù)據(jù),所述多個主數(shù)據(jù)的每一個主數(shù)據(jù)具有第一寬度;由所述多個主寄存器組成的次寄存器,用于存儲具有 第二寬度的次數(shù)據(jù),所述次數(shù)據(jù)由所述多個主數(shù)據(jù)組合而成; 及中央處理單元,用于執(zhí)行處于第一模式的所述第一指 令,以讀取所述多個主數(shù)據(jù)的一個主數(shù)據(jù)進(jìn)行操作,也用于執(zhí) 行處于第二模式的所述第二指令,以讀取所述次數(shù)據(jù)進(jìn)行操作。
14. 根據(jù)權(quán)利要求13所述的電子系統(tǒng),其特征在于,所述 微控制器還包括用于存儲所述第一指令和所述第二指令的存儲 器,所述第一指令根據(jù)該第一指令中的信息指定所述多個主寄 存器中的一個主寄存器,所述第二指令根據(jù)該第二指令中的信 息指定所述次寄存器。
15. 根據(jù)權(quán)利要求13所述的電子系統(tǒng),其特征在于,所述第二寬度等于所述多個主數(shù)據(jù)的所述第一寬度的總和。
16. 根據(jù)權(quán)利要求13所述的電子系統(tǒng),其特征在于,所述 第一指令包括一個操作碼,用于表示對所述主數(shù)據(jù)執(zhí)行的操作。
17. 根據(jù)權(quán)利要求13所述的電子系統(tǒng),其特征在于,所述 第二指令包括一個操作碼,用于表示對所述次數(shù)據(jù)執(zhí)行的操作。
18. 根據(jù)權(quán)利要求13所述的電子系統(tǒng),其特征在于,所述 微控制器還包括翻譯器,用于將所述第一指令翻譯為第一機(jī)器 碼,并將所述第二指令翻譯為第二機(jī)器碼,所述中央處理單元根據(jù)所述第一機(jī)器碼讀取所述主數(shù)據(jù)進(jìn)行操作,并根據(jù)所述第 二機(jī)器碼讀取所述次數(shù)據(jù)進(jìn)行操作。
19. 根據(jù)權(quán)利要求13所述的電子系統(tǒng),其特征在于,還包括存儲器,用于存儲直接尋址指令,翻譯所述直接尋址指令得到的機(jī)器碼包括主地址,用于訪問數(shù)據(jù)存儲器;及至少一個模式位,用于選擇普通直接尋址模式或擴(kuò)展 直接尋址模式,所述普通直接尋址模式是根據(jù)所述主地址訪問所述數(shù)據(jù)存儲器,所述擴(kuò)展直接尋址模式是根據(jù)包含所述主地 址和額外地址的擴(kuò)展地址訪問所述數(shù)據(jù)存儲器。
20. 根據(jù)權(quán)利要求19所述的電子系統(tǒng),其特征在于,所述 額外地址存儲在所述微控制器的 一 個寄存器中。
全文摘要
本發(fā)明公開了一種微控制器、執(zhí)行指令的方法及電子系統(tǒng)。該微控制器包括多個主寄存器、次寄存器和中央處理單元。多個主寄存器分別存儲多個主數(shù)據(jù)。每個主數(shù)據(jù)具有第一寬度。次寄存器由多個主寄存器組成,用于存儲具有第二寬度的次數(shù)據(jù)。次數(shù)據(jù)由多個主數(shù)據(jù)組合而成。中央處理單元執(zhí)行處于第一模式的第一指令,即讀取一個主數(shù)據(jù)進(jìn)行操作;中央處理單元還執(zhí)行處于第二模式的第二指令,即讀取次數(shù)據(jù)進(jìn)行操作。微控制器可執(zhí)行包含不同寬度數(shù)據(jù)的指令,并可把數(shù)據(jù)存儲在對應(yīng)寬度的寄存器中,以減少指令總數(shù)和運行時間,從而節(jié)省了系統(tǒng)的存儲空間,減小了系統(tǒng)的復(fù)雜性和成本,同時還提高了效率。
文檔編號G06F9/30GK101436120SQ20081014629
公開日2009年5月20日 申請日期2008年8月18日 優(yōu)先權(quán)日2007年8月17日
發(fā)明者曾曉軍 申請人:凹凸電子(武漢)有限公司