微控制器及其控制方法
【專利摘要】一種微控制器,包括:指令處理裝置;數據運算裝置;及控制單元控制指令處理裝置完成取指令及對指令的譯碼,控制數據運算裝置根據所述指令的譯碼或還根據所述指令進行運算,并將所述運算結果寫入所述數據運算裝置或所述指令處理裝置,其中,所述指令處理裝置包括程序計數器、程序存儲器,指令預取寄存器、指令寄存器、指令緩沖寄存器及指令譯碼器,所述程序計數器與所述程序存儲器連接,所述指令預取寄存器與所述程序存儲器、所述指令寄存器及所述指令緩沖寄存器連接,所述指令寄存器連接在所述指令預取寄存器及所述指令譯碼器之間,所述指令緩沖寄存器連接在所述指令預取寄存器及所述數據運算裝置之間,所述微控制器運行速度快且功耗小。
【專利說明】
微控制器及其控制方法
技術領域
[0001] 本發明設及一種微控制器,尤其設及一種用于胎壓監測的微控制器。
【背景技術】
[0002] 目前,汽車輪胎爆胎是突發性交通事故發生的重要原因,而造成汽車輪胎爆胎的 主要原因是汽車胎壓異常。目前大部分汽車都配置有汽車輪胎胎壓監測系統。汽車輪胎胎 壓監測系統包括輪胎壓力監測模塊和中央監視器。汽車輪胎胎壓監測系統為通過輪胎壓力 監測模塊采集汽車輪胎壓力和溫度數據,并將采集的汽車輪胎壓力和溫度數據傳送至汽車 的駕駛艙內的中央監視器來提供輪胎數據給用戶,在輪胎胎壓異常時,發出報警信號,從而 提醒駕駛者。而輪胎壓力監測模塊的核屯、為微控制器。現有通常采用8051單片機來作為輪 胎壓力監測模塊的微控制器,但是8051單片機執行一條指令的時間為12個或24個時鐘周 期,指令運行速度較慢,功耗較大。
【發明內容】
[0003] 本發明提供一種運行速度快且功耗小的微控制器及控制方法。
[0004] 本發明的實施例提供一種微控制器,包括: 數據總線; 控制單元; 指令處理裝置,所述指令處理裝置與所述控制單元連接,所述控制單元控制所述指令 處理裝置完成取指令及對指令的譯碼; 數據運算裝置,所述數據運算裝置與所述控制單元及所述數據總線連接,所述控制單 元控制所述數據運算裝置根據所述指令的譯碼或還根據所述指令進行運算,得到運算結 果,并通過所述數據總線將所述運算結果寫入所述數據運算裝置或所述指令處理裝置;及 時鐘發生器,所述時鐘發生器用于產生所述指令處理裝置、所述數據運算裝置及所述 控制單元的時鐘信號,并將所述時鐘信號輸出至所述指令處理裝置、所述數據運算裝置及 所述控制單元; 其中,所述指令處理裝置包括程序計數器、程序存儲器,指令預取寄存器、指令寄存器、 指令緩沖寄存器及指令譯碼器,所述程序計數器與所述程序存儲器連接,所述指令預取寄 存器與所述程序存儲器、所述指令寄存器及所述指令緩沖寄存器連接,所述指令寄存器連 接在所述指令預取寄存器及所述指令譯碼器之間,所述指令緩沖寄存器連接在所述指令預 取寄存器及所述數據運算裝置之間; 其中,所述指令預取寄存器存儲從所述程序存儲器中逐條讀取的指令;所述指令寄存 器存儲從所述指令預取寄存器中讀取的指令或指令的第一個字節;所述指令緩沖寄存器存 儲從所述指令預取寄存器中讀取的指令的第二個字節。
[0005] 較佳的,所述微控制器還包括地址總線及特殊功能寄存器組,所述特殊功能寄存 器組連接在所述地址總線及數據總線之間,所述控制單元將所述指令緩沖寄存器中的指令 的操作數地址或相對位移量通過所述地址總線寫入所述特殊功能寄存器組,并通過所述數 據總線將所述特殊功能寄存器組中的操作數地址對應的操作數或相對位移量傳送至數據 運算裝置,W供所述數據運算裝置進行運算。
[0006] 較佳的,所述數據運算裝置包括數據選擇器、多路選擇器及運算單元,所述數據選 擇器與所述指令緩沖寄存器及所述地址總線連接,在所述指令緩沖寄存器中的指令為操作 數時,所述控制單元通過所述多路選擇器將所述指令緩沖寄存器中的操作數傳送至所述運 算單元,在所述指令緩沖寄存器中的指令為操作數地址或相對位移量時,所述控制單元通 過所述所述數據選擇器將所述指令緩沖寄存器中的操作數地址或相對位移量通過所述地 址總線寫入所述特殊功能寄存器組。
[0007] 較佳的,所述微控制器還包括中斷控制模塊,所述中斷控制模塊包括:中斷控制寄 存器,所述控制單元通過設置所述中斷控制寄存器來允許或者不允許中斷;中斷信號寄存 器,所述控制單元在允許中斷時,從中斷源采集中斷信號,并將從所述中斷源所采集的中斷 信號存儲在所述中斷信號寄存器;優先級編碼器,所述優先級編碼器中存儲有預設的各中 斷的優先級別,所述控制單元將所述中斷信號寄存器中的中斷信號傳送至優先級編碼器, 并控制所述優先級編碼器根據預設的各中斷的優先級別來確定所采集的中斷信號的優先 級別;中斷信號緩沖器,所述控制單元將所述優先級別最高的中斷信號傳送至所述中斷信 號緩沖器;及中斷向量寄存器,所述控制單元確定中斷信號緩沖器中的優先級別最高的中 斷信號的中斷地址,并將所述中斷地址存儲在所述中斷向量寄存器。
[0008] 較佳的,所述指令包括運算指令及跳轉指令,所述跳轉指令包括雙字節的跳轉指 令及=字節的跳轉指令,所述運算指令的處理需要一個包括四個時鐘周期的指令周期,所 述雙字節的跳轉指令的處理需要一個包括五個時鐘周期的指令周期,所述=字節的跳轉指 令的處理需要一個包括六個時鐘周期的指令周期。
[0009] 本發明還提供一種控制方法,所述控制方法包括: 提供一數據總線; 提供一指令處理裝置,所述指令處理裝置包括程序計數器、程序存儲器,指令預取寄存 器、指令寄存器、指令緩沖寄存器及指令譯碼器; 提供一數據運算裝置; 提供一時鐘發生器,所述時鐘發生器產生所述指令處理裝置及所述數據運算裝置的時 鐘信號,并將所述時鐘信號輸出至所述指令處理裝置及所述數據運算裝置; 控制所述指令預取寄存器根據所述程序計數器中的地址從所述程序存儲器中獲取指 令; 控制所述指令寄存器從所述指令預取寄存器中獲取指令的第一個字節,控制所述指令 緩沖寄存器從所述指令預取寄存器中獲取指令的第二個字節,并將所述指令的第二個字節 輸出至所述數據運算裝置; 控制所述指令譯碼器對所述指令的第一個字節譯碼;及 控制所述數據運算裝置根據所述指令的第一個字節的譯碼及所述指令的第二個字節 進行運算,得到運算結果,并通過所述數據總線將所述運算結果寫入所述數據運算裝置或 所述指令處理裝置。
[0010] 較佳的,所述控制方法還包括:提供一地址總線;提供一特殊功能寄存器組;及將 所述指令緩沖寄存器中的指令的操作數地址通過所述地址總線寫入所述特殊功能寄存器 組,并通過所述數據總線將所述特殊功能寄存器組中的數據傳送至數據運算裝置,W供所 述數據運算裝置進行運算。
[0011] 較佳的,所述控制方法還包括:提供所述數據運算裝置包括數據選擇器、多路選擇 器及運算單元;在所述指令緩沖寄存器中的指令為操作數時,通過所述多路選擇器將所述 指令緩沖寄存器中的操作數傳送至所述運算單元;及在所述指令緩沖寄存器中的指令為操 作數地址或相對位移量時,通過所述所述數據選擇器將所述指令緩沖寄存器中的操作數地 址或相對位移量通過所述地址總線寫入所述特殊功能寄存器組。
[0012] 較佳的,所述控制方法還包括:所述指令為雙字節跳轉指令,在第一個時鐘周期, 控制所述指令寄存器從所述指令預取寄存器中獲取指令的第一個字節;在第二個時鐘周 期,確定是否需要跳轉,當確定需要跳轉時,將所述程序計數器中的地址傳送至所述數據運 算裝置,并將所述指令緩沖寄存器中的指令的第二個字節輸出至所述數據運算裝置;在第 =個時鐘周期,控制所述數據運算裝置根據所接收的所述程序計數器中的地址及所述指令 緩沖寄存器中的指令的第二個字節進行與運算來得到跳轉地址;在第四個時鐘周期,將所 述跳轉地址寫入所述程序計數器中,控制所述指令預取寄存器根據所述程序計數器中的跳 轉地址從所述程序存儲器中獲取指令,并將所述程序計數器中的地址加一;及在第五個時 鐘周期,將所述指令譯碼器所譯碼的信息丟棄,并等待一個時鐘周期。
[0013] 較佳的,所述控制方法還包括:提供一中斷信號寄存器;提供一優先級編碼器;提 供一中斷信號緩沖器;提供一中斷向量寄存器;提供一二級堆找;當允許中斷時,在第一個 時鐘周期,采集中斷信號,將所采集的中斷信號寫入所述中斷信號寄存器,并將所述中斷信 號從所述中斷信號寄存器傳送至所述優先級編碼器,控制所述優先級編碼器根據預設的各 中斷的優先級別來確定所述中斷信號的優先級別;在第二個時鐘周期,將優先級別高的中 斷信號送往中斷信號緩沖器;在第=個時鐘周期,根據中斷信號緩沖器中的中斷信號來確 定中斷地址,將所述中斷地址存儲在中斷向量寄存器,并將所述程序計數器中的地址壓入 所述二級堆找中進行保存,并將所述中斷地址寫入所述程序計數器;及在第四個時鐘周期, 根據所述程序計數器中的中斷地址,控制所述指令預取寄存器從所述程序存儲器中讀取指 令。
[0014] 上述發明的微控制器利用簡單的結構即可實現胎壓監測,且執行一條指令的時間 最長的為6個時鐘周期,指令運行速度快且功耗小。
【附圖說明】 [001引附圖中; 圖1是本發明一實施例的微控制器的模塊示意圖。
[0016] 圖2是本發明一實施例的微控制器的控制原理圖。
[0017] 圖3是本發明一實施例的微控制器的狀態轉換圖。
[0018] 主要元件符號說明
如下【具體實施方式】將結合上述附圖進一步說明本發明。
【具體實施方式】
[0019]下面結合附圖,通過對本發明的【具體實施方式】詳細描述,將使本發明的技術方案 及其他有益效果顯而易見。可W理解,附圖僅提供參考與說明用,并非用來對本發明加 W限 審IJ。附圖中顯示的尺寸僅僅是為便于清晰描述,而并不限定比例關系。
[0020] 請參考圖I,為本發明實施例的微控制器I的系統框圖。在本實施例中,所述微控制 器1用于胎壓監測。在其他實施例中,所述微控制器1還可用于執行其他操作。在本實施例 中,所述微控制器1從外部傳感器2處獲得數據。在本實施例中,所述數據為輪胎壓力及溫度 信息。所述微控制器1還將所獲得的數據進行處理,并將所處理的數據傳送至中央監視器3。 在本實施例中,所述微控制器1包括多個功能模塊,分別為地址總線10、數據總線20、時鐘發 生器30、指令處理裝置40、數據運算裝置50、外圍功能模塊60及控制單元70。
[0021] 請繼續參考圖2,所述時鐘發生器30用于產生微控制器1的各個功能模塊的時鐘信 號,并將所述時鐘信號輸出至對應的功能模塊。
[0022] 所述指令處理裝置40包括程序計數器41、程序存儲器42、指令預取單元43及指令 譯碼器44。所述程序計數器41與所述程序存儲器42連接,存儲需要從程序存儲器42中讀取 的指令的地址。所述程序存儲器42用于存儲在微控制器1上運行的程序代碼,所述程序代碼 由若干指令組成。所述指令包括單字節指令、雙字節指令及=字節指令。其中,所述指令大 部分為單字節指令。所述單字節指令包括運算指令。所述雙字節指令及所述=字節指令都 包括運算指令及跳轉指令。當所述指令為運算指令時,所述雙字節指令的第一個字節為操 作碼,所述雙字節指令的第二個字節為操作數或者操作數地址,所述=字節指令的第一個 字節為操作碼,所述=字節指令的第二個字節及所述=字節指令的第=個字節分別為操作 數及操作數地址之一。當所述指令為跳轉指令時,所述雙字節指令的第一個字節為操作碼, 所述雙字節指令的第二個字節為相對位移量,所述=字節指令的第一個字節為操作碼,所 述=字節指令的第二個字節及第=個字節為相對位移量。其中,數據在存儲器中存放時采 用W低字節為字地址的存放方式。
[0023] 所述指令預取單元43連接在所述程序存儲器42及所述指令譯碼器44之間,用于存 儲從所述程序存儲器42中逐條讀取的指令。所述指令預取單元43包括指令預取寄存器431、 指令寄存器432及指令緩沖寄存器433。所述指令預取寄存器431與所述程序存儲器42、所述 指令寄存器432及所述指令緩沖寄存器433連接,存儲從所述程序存儲器42中逐條讀取的指 令。所述指令寄存器432連接在所述指令預取寄存器431及所述指令譯碼器44之間,用于存 儲從所述指令預取寄存器431中讀取的指令或指令的第一個字節。其中,當指令為單字節指 令時,所述指令寄存器432存儲從所述指令預取寄存器431中讀取指令,當指令為雙字節指 令時,所述指令寄存器432存儲從所述指令預取寄存器431中讀取指令的第一個字節。所述 指令緩沖寄存器433連接在所述指令預取寄存器431及所述數據運算裝置50之間,用于存儲 從所述指令預取寄存器431中讀取的指令的第二個字節。所述指令譯碼器44用于對指令寄 存器432中存儲的內容進行譯碼,來得到譯碼信息。其中,所述存儲的內容為指令或指令的 第一個字節。所述譯碼信息為運算信息,如加、減、乘、除等,或者跳轉信息。
[0024] 所述數據運算裝置50包括數據選擇器51、工作寄存器組52、累加器53、第一多路選 擇器54,第二多路選擇器55、運算單元56及數據緩沖器57。所述數據選擇器51包括兩輸入端 及一輸出端,所述兩輸入端分別與所述指令緩沖寄存器433及所述數據緩沖器51連接,所述 輸出端與所述地址總線10連接。所述數據選擇器51用于從所述指令緩沖寄存器433及所述 數據緩沖器51通過所述兩輸入端輸入的輸入信號中選擇一輸入信號,并通過所述輸出端輸 出至所述地址總線10。
[0025] 所述工作寄存器組52與所述數據總線20連接,所述工作寄存器組52包括若干寄存 器,用于暫時存儲等待處理的數據或者已經處理過的數據。
[0026] 所述累加器53與所述數據總線20連接,用于存儲運算的操作數及運算結果。
[0027] 所述第一多路選擇器54為四選一多路選擇器。所述第一多路選擇器54具有四個輸 入端及一輸出端。所述第一多路選擇器54的四個輸入端分別與所述工作寄存器組52、所述 累加器53、所述指令緩沖寄存器433及所述程序計數器41連接。所述第一多路選擇器54的輸 出端與所述運算單元56連接。所述第一多路選擇器54用于從所述工作寄存器組52、所述累 加器53、所述指令緩沖寄存器433及所述程序計數器41通過所述四個輸入端所輸入的輸入 信號中選擇一輸入信號,并通過所述輸出端輸出至所述運算單元56。
[00%]所述第二多路選擇器55為=選一多路選擇器。所述第二多路選擇器55具有=個輸 入端及一輸出端。所述第二多路選擇器55的=個輸入端分別與所述工作寄存器組52、所述 累加器53及所述指令緩沖寄存器433連接。所述第二多路選擇器55的輸出端與所述運算單 元56連接。所述第二多路選擇器55用于從所述工作寄存器組52、所述累加器53及所述指令 緩沖寄存器433通過所述=個輸入端所輸入的輸入信號中選擇一輸入信號,并通過所述輸 出端輸出至所述運算單元56。
[0029] 所述運算單元56用于進行運算。所述數據緩沖器57連接在所述運算單元56及數據 總線20之間,用于暫時存儲所述運算單元56運算的結果。
[0030] 所述外圍功能模塊60連接在地址總線10及數據總線20之間,所述外圍功能模塊60 包括定時器61、1/0( i噸ut/output,輸入輸出)端口62、串口 63、CRC(切Clic Redundan巧 Code,循環冗余碼校驗)寄存器64及特殊功能寄存器組65。所述定時器61用于定時計數。所 述I/O端口62,用于從外部傳感器2獲取數據。所述串口63用于與支持串行總線的中央監視 器3進行通信。所述CRC寄存器64用于檢測所接收的數據是否錯誤。所述特殊功能寄存器組 65包括若干寄存器,用于分別存放從地址總線10傳送過來的數據及預先存儲的應用程序的 第一條指令的地址。
[0031] 所述控制單元70與所述指令處理裝置40、數據運算裝置50及外圍功能模塊60連 接。所述微控制器1用于控制所述指令處理裝置40、所述數據運算裝置50及所述外圍功能模 塊60的操作。所述控制單元70通過所述I/O端口 62從外部傳感器2處獲得數據。所述控制單 元70通過所述串口63將處理后的數據傳送至中央監視器3。在本實施例中,所述控制單元70 控制所述CRC寄存器對所獲取的數據進行校驗得到一校驗碼,根據所述校驗碼及預存的輪 胎編號來形成數據帖,并將所述數據帖通過所述串口 63傳送至所述中央監視器3。
[0032] 在本實施例中,當所述控制單元70控制所述譯碼器對所述指令譯碼得到的信息為 運算信息時,所述指令為運算指令,當所述控制單元70控制所述譯碼器對所述指令譯碼得 到的信息為跳轉信息時,所述指令為跳轉指令。
[0033] 在本實施例中,所述微控制器1的工作方式包括正常工作模式、空閑模式及掉電模 式。在空閑模式下,所述微控制器1的時鐘周期增大,從而降低功耗。在空閑模式下,僅有中 斷信號或者系統復位可將微控制器1從空閑模式下喚醒。在掉電模式下,所有時鐘發生器30 停止工作,更加省電。
[0034] 在本實施例中,所述定時器61還響應用戶的設置定時監督所述傳感器2,即所述定 時器61監督所述傳感器2在預定時間內是否提供響應信號給所述控制單元70。當所述微控 制器1處于空閑模式時,所述控制單元70在所述定時器61計時完成時判斷所述傳感器2是否 提供響應信號。當所述傳感器2提供響應信號時,所述微控制器I繼續處于空閑模式。在本實 施例中,當所述傳感器2不提供響應信號時,所述定時器61提供一警告信號至所述控制單元 70,所述控制單元70根據所述警告信號將所述特殊功能寄存器66中預先存儲的應用程序的 指令的地址寫入所述程序計數器41,此時,所述控制單元70繼續在所述定時器61計時完成 時判斷所述傳感器2是否提供響應信號,并在所述傳感器2不提供響應信號時,根據所述警 告信號報警。其中,所述微控制器1可W與外部的警告單元連接,并通過所述警告單元報警。 在本實施例中,所述警告單元可W為卿趴或者閃光燈等。從而,可通過2次判斷所述傳感器 是否在預定時間內提供響應信號,來防止誤判斷。顯然,在其他實施例中,所述控制單元70 可在僅通過1次判斷所述傳感器2在預定時間內沒有提供響應信號時,根據所述警告信號報 警。在本實施例中,所述微控制器1還包括中斷控制模塊80。所述外圍功能模塊60還包括二 級堆找66。所述控制單元70控制所述中斷控制模塊80被中斷源所觸發,并控制所述中斷控 制模塊80執行所述中斷源所對應的中斷程序。在本實施例中,所述中斷源包括外部中斷及 內部中斷。所述外部中斷包括低壓中斷、看口狗中斷、ADC中斷及傳感器中斷。所述內部中斷 包括定時器中斷、串口中斷及CRC中斷。所述二級堆找66用于存儲所述程序計數器41的地 址。
[0035] 所述中斷控制模塊80包括中斷控制寄存器81、中斷信號寄存器82、優先級編碼器 83、中斷信號緩沖器84及中斷向量寄存器85。所述控制單元70通過設置所述中斷控制寄存 器81來允許或者不允許中斷。如控制單元70將中斷控制寄存器81設置為T'來允許中斷,并 將中斷控制寄存器81設置為"0"來不允許中斷。僅當中斷允許且存在中斷時,系統才進入中 斷響應,當中斷不允許而存在中斷時,系統不進入中斷響應。所述中斷信號寄存器82用于存 儲從所述中斷源處采集的中斷信號,其中,所述中斷信號的數量可為一個或多個。所述優先 級編碼器83中存儲有預設的各中斷的優先級別,如所述低壓中斷具有最高的優先權等。所 述中斷信號緩沖器84用于存儲所述采集的中斷信號中的最高優先權級別的中斷信號。所述 中斷向量寄存器85用于存儲中斷信號對應的中斷地址。其中,每個中斷都有一個中斷服務 程序,所述中斷服務程序的入口地址為中斷地址。不同的中斷對應不同的中斷地址。
[0036] 下面結合微控制器1的各個功能模塊對微控制器1的控制方法進行說明,所述微控 制器1的控制方法包括運算指令的處理過程、跳轉指令的處理過程及中斷信號的處理過程。
[0037] 所述運算指令的處理需要一個包括四個時鐘周期的指令周期。下面具體說明單字 節的運算指令的處理過程: 在第一個時鐘周期,執行取指令操作:所述控制單元70控制所述指令寄存器432從所述 指令預取寄存器431中獲取當前需要執行的指令(簡稱當前指令),并將所述當前指令傳送 至所述譯碼器進行譯碼來得到運算信息,所述控制單元70還控制所述指令預取寄存器431 根據所述程序計數器41中的地址從所述程序存儲器42中獲取下一條指令。在第二個時鐘周 期,執行讀操作數操作:所述控制單元70將所述工作寄存器組52及所述累加器53中的數據 通過所述第一多路選擇器54或所述第二多路選擇器55輸出至所述運算單元56。在第=個時 鐘周期,執行運算操作:所述控制單元70控制所述運算單元56根據所述工作寄存器組52及 所述累加器53中的數據及所述譯碼器譯碼得到的運算信息進行運算。在第四個時鐘周期, 執行數據寫回操作:所述控制單元70將所運算的結果暫時存儲在所述數據緩沖器57,并將 所述運算結果從所述數據緩沖器57寫入所述工作寄存器組52及所述累加器53中。同時,所 述控制單元70還將所述程序計數器41中的地址加一。所述處理過程依序循環執行直至所述 程序存儲器42中的指令讀取完。
[0038] 雙字節的運算指令的處理過程與單字節的運算指令的處理過程相似,不同之處在 于: 在第一個時鐘周期,執行取指令操作時,所述控制單元70控制所述指令寄存器432從所 述指令預取寄存器431中獲取當前指令的第一個字節,從而所述指令預取寄存器431中為當 前指令的第二個字節,所述控制單元70還將所述指令寄存器432中的所述當前指令的第一 個字節傳送至所述譯碼器進行譯碼來得到運算信息。在第二個時鐘周期,執行讀操作數操 作時,所述控制單元70控制所述指令緩沖寄存器433從所述指令預取寄存器431中獲取當前 指令的第二個字節。當當前指令的第二個字節為操作數時,所述控制單元70通過所述第一 多路選擇器54或所述第二多路選擇器55將所述指令緩沖寄存器433中的操作數輸出至所述 運算單元56,當當前指令的第二個字節為操作數地址時,所述控制單元70通過所述數據選 擇器51將所述指令緩沖寄存器433中的操作數地址通過所述地址總線10寫入特殊功能寄存 器組65,并通過所述數據總線20從所述特殊功能寄存器組65中讀取操作數或者還通過所述 第一多路選擇器54或所述第二多路選擇器55從所述工作寄存器組52及所述累加器53中讀 取數據。所述控制單元70還控制所述指令預取寄存器431在所述指令緩沖寄存器433從所述 指令預取寄存器431中獲取當前指令的第二個字節時,從所述程序存儲器42組中獲取下一 條指令。
[0039] =字節的運算指令的處理過程與單字節的運算指令的處理過程相似,不同之處在 于: 在第一個時鐘周期,執行取指令操作時:所述控制單元70控制所述指令寄存器432從所 述指令預取寄存器431中獲取當前指令的第一個字節,并控制所述指令緩沖寄存器433從所 述指令預取寄存器431中獲取當前指令的第=個字節,從而所述指令預取寄存器431中的為 當前指令的第二個字節,所述控制單元70還將所述指令寄存器432中的當前指令的第一個 字節傳送至所述譯碼器進行譯碼來得到運算信息。在第二個時鐘周期,執行讀操作數操作 時:當當前指令的第=個字節為操作數時,所述控制單元70通過所述第一多路選擇器54或 所述第二多路選擇器55從所述指令緩沖寄存器433獲取所述操作數。當當前指令的第=個 字節為操作數地址時,所述控制單元70通過所述數據選擇器51將所述指令緩沖寄存器433 中的操作數地址通過所述地址總線10傳送至特殊功能寄存器組65,并通過所述數據總線20 從所述特殊功能寄存器組65讀取操作數地址對應的操作數。所述控制單元70還執行雙字節 的運算指令的第二個時鐘周期的操作。
[0040] 所述雙字節的跳轉指令的處理需要一個包括五個時鐘周期的指令周期。下面具體 說明雙字節的跳轉指令的處理過程: 在第一個時鐘周期,執行取指令操作:所述控制單元70控制所述指令寄存器432從所述 指令預取寄存器431中獲取當前指令的第一個字節,從而所述指令預取寄存器431中存儲的 為當前指令的第二個字節。所述控制單元70還將所述指令寄存器432中存儲的所述當前指 令的第一個字節傳送至所述譯碼器進行譯碼來得到跳轉信息。其中,所述跳轉指令的第二 個字節為相對位移量。
[0041] 在第二個時鐘周期,執行判斷是否跳轉操作:所述控制單元70控制所述指令緩沖 寄存器433從所述指令預取寄存器431中獲取當前指令的第二個字節,并根據當前累加器53 中的數據來確定是否需要跳轉。當確定不需要跳轉時,所述控制單元70不執行跳轉,而繼續 執行下一條指令。當確定需要跳轉時,所述控制單元70通過所述第一多路選擇器54將所述 程序計數器41中的地址傳送至所述運算單元56,并通過所述數據選擇器51將所述指令緩沖 寄存器433中的相對位移量通過所述地址總線10寫入所述特殊功能寄存器66,并通過所述 數據總線20將所述相對位移量提供給所述運算單元56。
[0042] 在第=個時鐘周期,執行運算操作:所述控制單元70控制所述運算單元56根據所 接收的所述程序計數器41中的地址及所述相對位移量進行與運算來得到跳轉地址。
[0043] 在第四個時鐘周期,執行數據寫回操作:所述控制單元70將運算得到的跳轉地址 暫時存儲在所述數據緩沖器57,并通過所述數據選擇器51將所述數據緩沖器57中的跳轉地 址通過所述地址總線10寫入特殊功能寄存器66,并通過所述數據總線20將所述跳轉地址寫 入所述程序計數器41中。所述控制單元70控制所述指令預取寄存器431根據所述程序計數 器41中的跳轉地址從所述程序存儲器42中獲取指令,并將所述程序計數器41中的跳轉地址 加一。
[0044] 在第五個時鐘周期,執行等待操作:所述控制單元70將所述指令譯碼器44所譯碼 的信息丟棄,并等待一個時鐘周期。隨后,微控制器1順序執行跳轉后的指令。
[0045] 所述=字節的跳轉指令的處理與雙字節的跳轉指令的處理相似,不同之處在于: 所述=字節的跳轉指令需要一個包括六個時鐘周期的指令周期。在第一個時鐘周期, 執行取指令操作時:所述控制單元70控制所述指令寄存器432從所述指令預取寄存器431中 獲取當前指令的第一個字節,并控制所述指令緩沖寄存器433從所述指令預取寄存器431中 獲取當前指令的第二個字節,從而所述指令預取寄存器431中的為當前指令的第=個字節, 所述控制單元70還將所述指令寄存器432中的當前指令的第一個字節傳送至所述譯碼器進 行譯碼來得到跳轉信息。其中,所述跳轉指令的第二個字節為相對位移量。
[0046] 在第二個時鐘周期,執行條件運算操作時:所述控制單元70通過數據選擇器51將 所述指令緩沖寄存器433中的相對位移量通過所述地址總線10寫入所述特殊功能寄存器66 中,并通過所述數據總線20傳送至運算單元56,并將所述工作寄存器組52或所述累加器53 中的數據通過所述第一多路選擇器54或所述第二多路選擇器55傳送至所述運算單元56。
[0047] 在第=個時鐘周期,執行判斷是否跳轉操作:所述控制單元70控制所述運算單元 56根據所述相對位移量及所述工作寄存器組52或所述累加器53中的數據進行與運算,并根 據所述運算結果來確定是否需要跳轉。當確定不需要跳轉時,所述控制單元70不執行跳轉, 繼續執行下一條指令。當確定需要跳轉時,所述控制單元70通過所述第一多路選擇器54將 所述程序計數器41中的地址傳送至所述運算單元56,并通過所述數據選擇器51將所述指令 緩沖寄存器433中的相對位移量通過所述地址總線10寫入所述特殊功能寄存器66中,并通 過所述數據總線20輸出至所述運算單元56。
[0048] 在第四個時鐘周期的執行運算操作過程與雙字節的跳轉指令的第=個時鐘周期 的執行運算操作過程相同,在第五個時鐘周期的執行數據寫回操作過程與雙字節的跳轉指 令的第四個時鐘周期的執行數據寫回操作過程相同,在第六個時鐘周期的執行等待操作過 程與雙字節的跳轉指令的第五個時鐘周期的執行等待操作過程相同。
[0049] 所述中斷信號的處理需要包括四個時鐘周期的指令周期。下面具體說明中斷信號 的處理過程: 在第一個時鐘周期,執行采集中斷操作:所述控制單元70采集中斷信號,將所采集的中 斷信號寫入所述中斷信號寄存器82,并將所述中斷信號從所述中斷信號寄存器82傳送至所 述優先級編碼器83,控制所述優先級編碼器83根據預設的各中斷的優先級別來確定所述中 斷信號的優先級別。
[0050] 在第二個時鐘周期,執行響應中斷操作:所述控制單元70將優先級別高的中斷信 號送往中斷信號緩沖器84。
[0051] 在第=個時鐘周期,執行保護斷點及中斷源識別操作:所述控制單元70根據中斷 信號緩沖器84中的中斷信號來確定中斷地址,并將所述中斷地址存儲在所述中斷向量寄存 器85,所述控制單元70還將所述程序計數器41中的地址壓入二級堆找66中進行保存,并將 所述中斷地址寫入所述程序計數器41中。例如,當為看口狗中斷時,所述中斷地址為復位地 址0000H,所述控制單元70將復位地址OOOOH寫入程序計數器41中,使得程序自動復位。
[0052] 在第四個時鐘周期,執行取指令操作:所述控制單元70根據所述程序計數器41中 的中斷地址,控制所述指令預取寄存器431從所述程序存儲器42中讀取指令。從而,所述控 制單元70在執行完當前指令后執行中斷服務程序。
[0053] 在本實施例中,控制單元70對中斷信號的處理為:低優先級中斷請求不能打斷高 優先級中斷請求,高優先級中斷請求可W打斷低優先級中斷請求;如果一個中斷請求已被 響應,則同級的其他中斷響應將被禁止。
[0054] 其中,當多個中斷服務程序中的一中斷服務程序執行完后,所述控制單元70將剩 余的中斷服務程序中優先級別高的中斷信號送往中斷信號緩沖器84,來繼續執行中斷服務 程序直至同時采集的所有中斷服務程序執行完。
[0055] 當多個中斷服務程序執行完而執行中斷返回指令時,所述控制單元70還執行恢復 現場操作,即,所述控制單元70將所述二級堆找66中的中斷返回地址寫入程序計數器41中, 從而在執行完中斷服務程序后,繼續執行中斷前的程序。
[0056] 當所述控制單元70在執行中斷返回程序或跳轉指令時,如果中斷源處有中斷產 生,所述控制單元70采集所述中斷并將所述中斷保存在所述中斷信號寄存器82,并等待中 斷返回或跳轉后執行中斷程序。
[0057] 請參考圖3,為微控制器1各狀態之間轉換的示意圖。其中,狀態SO、狀態S1、狀態S2 及狀態S3代表微控制器1執行運算指令時的操作。所述狀態SO、狀態S1、狀態S2及狀態S3分 別為控制單元70在執行運算指令時在第一個時鐘周期、第二個時鐘周期、第=個時鐘周期 及第四個時鐘周期所執行的操作。所述狀態SO、狀態S1、狀態S2及狀態S3順序且循環執行。 [005引其中,如圖3所示,在所述狀態S0,一箭頭指向狀態S0,表示所述微控制器1開始操 作或重啟時執行第一個時鐘周期。一箭頭從狀態SO指向狀態S0,表示所述微控制器1等待一 個時鐘周期,則狀態SO、狀態Sl、狀態S2、狀態S3及在狀態SO等待一個時鐘周期代表微控制 器1執行雙字節跳轉指令時的操作,其中,所述狀態SO、狀態Sl、狀態S2、狀態S3及在狀態SO 等待一個時鐘周期分別為控制單元70在執行雙字節跳轉指令時在第一個時鐘周期、第二個 時鐘周期、第=個時鐘周期、第四個時鐘周期及第五個時鐘周期所執行的操作。
[0059] 其中,狀態SO、狀態Sl、狀態S2、狀態S3、狀態S7及在狀態SO等待一個時鐘周期代表 微控制器1執行=字節跳轉指令時的操作,其中,狀態SO、狀態Sl、狀態S2、狀態S3、狀態S7及 在狀態so等待一個時鐘周期分別為控制單元70在執行=字節跳轉指令時在第一個時鐘周 期、第二個時鐘周期、第=個時鐘周期、第四個時鐘周期、第五個時鐘周期及第六個時鐘周 期所執行的操作。
[0060] 狀態S4表示所述控制單元70處于空閑模式。狀態S5表示微控制器1在所述空閑模 式被中斷信號喚醒,其包括如上所述的控制單元70對中斷信號的處理過程的第一個時鐘周 期、第二個時鐘周期及第=個時鐘周期。狀態S6表示微控制器1執行所述中斷程序指令,其 包括如上所述的控制單元70對中斷信號的處理過程的第四個時鐘周期。因此,微控制器1在 狀態S4下被中斷信號喚醒,進入狀態S5,來處理中斷,隨后進入狀態S6,來執行取所述中斷 程序指令,而從狀態S6到狀態SO代表執行中斷,隨后,所述狀態SO、狀態Sl、狀態S2及狀態S3 順序且循環執行直至所述中斷程序執行完成后,從所述狀態SO進入所述狀態S4,即所述微 控制器1在執行中斷程序后,繼續處于空閑模式下。
[0061] 狀態S8表示所述控制單元70根據所述定時器61所傳送的警告信息,將所述特殊功 能寄存器66中預先存儲的應用程序的第一條指令的地址(如圖2中的CPC)寫入所述程序計 數器41。隨后,所述狀態SO、狀態Sl、狀態S2及狀態S3順序且循環執行直至所述應用程序執 行完成。當在狀態SO時,如果在所述定時器61計時完成時所述傳感器2提供響應信號,則隨 后進入狀態S4,即進入空閑模式。當在狀態SO時,如果在所述定時器61計時完成時所述傳感 器2不提供響應信號,則執行報警程序的指令。
[0062] 顯然,本發明不僅局限于所述微控制器1在空閑模式下被中斷信號喚醒,其還可為 所述微控制器1在執行指令時被中斷信號打斷,來執行中斷信號,并在中斷信號執行完后繼 續執行指令。
[0063] 如此,本發明的微控制器1執行一條指令的時間最長的為6個時鐘周期,指令運行 速度快,功耗小,同時,所述微控制器1具有空閑模式及掉電模式,節省電。
[0064] W上所述僅為本發明的較佳實施例而已,并不用W限制本發明,凡在本發明的精 神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護范圍之內。
【主權項】
1. 一種微控制器,包括: 數據總線; 控制單元; 指令處理裝置,所述指令處理裝置與所述控制單元連接,所述控制單元控制所述指令 處理裝置完成取指令及對指令的譯碼; 數據運算裝置,所述數據運算裝置與所述控制單元及所述數據總線連接,所述控制單 元控制所述數據運算裝置根據所述指令的譯碼或還根據所述指令進行運算,得到運算結 果,并通過所述數據總線將所述運算結果寫入所述數據運算裝置或所述指令處理裝置;及 時鐘發生器,所述時鐘發生器用于產生所述指令處理裝置、所述數據運算裝置及所述 控制單元的時鐘信號,并將所述時鐘信號輸出至所述指令處理裝置、所述數據運算裝置及 所述控制單元; 其中,所述指令處理裝置包括程序計數器、程序存儲器,指令預取寄存器、指令寄存器、 指令緩沖寄存器及指令譯碼器,所述程序計數器與所述程序存儲器連接,所述指令預取寄 存器與所述程序存儲器、所述指令寄存器及所述指令緩沖寄存器連接,所述指令寄存器連 接在所述指令預取寄存器及所述指令譯碼器之間,所述指令緩沖寄存器連接在所述指令預 取寄存器及所述數據運算裝置之間; 其中,所述指令預取寄存器存儲從所述程序存儲器中逐條讀取的指令;所述指令寄存 器存儲從所述指令預取寄存器中讀取的指令或指令的第一個字節;所述指令緩沖寄存器存 儲從所述指令預取寄存器中讀取的指令的第二個字節。2. 如權利要求1所述的微控制器,其特征在于: 所述微控制器還包括地址總線及特殊功能寄存器組,所述特殊功能寄存器組連接在所 述地址總線及數據總線之間,所述控制單元將所述指令緩沖寄存器中的指令的操作數地址 或相對位移量通過所述地址總線寫入所述特殊功能寄存器組,并通過所述數據總線將所述 特殊功能寄存器組中的操作數地址對應的操作數或相對位移量傳送至數據運算裝置,以供 所述數據運算裝置進行運算。3. 如權利要求2所述的微控制器,其特征在于: 所述數據運算裝置包括數據選擇器、多路選擇器及運算單元,所述數據選擇器與所述 指令緩沖寄存器及所述地址總線連接,在所述指令緩沖寄存器中的指令為操作數時,所述 控制單元通過所述多路選擇器將所述指令緩沖寄存器中的操作數傳送至所述運算單元,在 所述指令緩沖寄存器中的指令為操作數地址或相對位移量時,所述控制單元通過所述所述 數據選擇器將所述指令緩沖寄存器中的操作數地址或相對位移量通過所述地址總線寫入 所述特殊功能寄存器組。4. 如權利要求1所述的微控制器,其特征在于,所述微控制器還包括中斷控制模塊,所 述中斷控制|吳塊包括: 中斷控制寄存器,所述控制單元通過設置所述中斷控制寄存器來允許或者不允許中 斷; 中斷信號寄存器,所述控制單元在允許中斷時,從中斷源采集中斷信號,并將從所述中 斷源所采集的中斷信號存儲在所述中斷信號寄存器; 優先級編碼器,所述優先級編碼器中存儲有預設的各中斷的優先級別,所述控制單元 將所述中斷信號寄存器中的中斷信號傳送至優先級編碼器,并控制所述優先級編碼器根據 預設的各中斷的優先級別來確定所采集的中斷信號的優先級別; 中斷信號緩沖器,所述控制單元將所述優先級別最高的中斷信號傳送至所述中斷信號 緩沖器;及 中斷向量寄存器,所述控制單元確定中斷信號緩沖器中的優先級別最高的中斷信號的 中斷地址,并將所述中斷地址存儲在所述中斷向量寄存器。5. 如權利要求1所述的微控制器,其特征在于: 所述指令包括運算指令及跳轉指令,所述跳轉指令包括雙字節的跳轉指令及三字節的 跳轉指令,所述運算指令的處理需要一個包括四個時鐘周期的指令周期,所述雙字節的跳 轉指令的處理需要一個包括五個時鐘周期的指令周期,所述三字節的跳轉指令的處理需要 一個包括六個時鐘周期的指令周期。6. -種控制方法,其特征在于,所述控制方法包括: 提供一數據總線; 提供一指令處理裝置,所述指令處理裝置包括程序計數器、程序存儲器,指令預取寄存 器、指令寄存器、指令緩沖寄存器及指令譯碼器; 提供一數據運算裝置; 提供一時鐘發生器,所述時鐘發生器產生所述指令處理裝置及所述數據運算裝置的時 鐘信號,并將所述時鐘信號輸出至所述指令處理裝置及所述數據運算裝置; 控制所述指令預取寄存器根據所述程序計數器中的地址從所述程序存儲器中獲取指 令; 控制所述指令寄存器從所述指令預取寄存器中獲取指令的第一個字節,控制所述指令 緩沖寄存器從所述指令預取寄存器中獲取指令的第二個字節,并將所述指令的第二個字節 輸出至所述數據運算裝置; 控制所述指令譯碼器對所述指令的第一個字節譯碼;及 控制所述數據運算裝置根據所述指令的第一個字節的譯碼及所述指令的第二個字節 進行運算,得到運算結果,并通過所述數據總線將所述運算結果寫入所述數據運算裝置或 所述指令處理裝置。7. 如權利要求6所述的控制方法,其特征在于,所述控制方法還包括: 提供一地址總線; 提供一特殊功能寄存器組;及 將所述指令緩沖寄存器中的指令的操作數地址通過所述地址總線寫入所述特殊功能 寄存器組,并通過所述數據總線將所述特殊功能寄存器組中的數據傳送至數據運算裝置, 以供所述數據運算裝置進行運算。8. 如權利要求7所述的控制方法,其特征在于,所述控制方法還包括: 提供所述數據運算裝置包括數據選擇器、多路選擇器及運算單元; 在所述指令緩沖寄存器中的指令為操作數時,通過所述多路選擇器將所述指令緩沖寄 存器中的操作數傳送至所述運算單元;及 在所述指令緩沖寄存器中的指令為操作數地址或相對位移量時,通過所述所述數據選 擇器將所述指令緩沖寄存器中的操作數地址或相對位移量通過所述地址總線寫入所述特 殊功能寄存器組。9. 如權利要求6所述的控制方法,其特征在于,所述控制方法還包括: 所述指令為雙字節跳轉指令,在第一個時鐘周期,控制所述指令寄存器從所述指令預 取寄存器中獲取指令的第一個字節; 在第二個時鐘周期,確定是否需要跳轉,當確定需要跳轉時,將所述程序計數器中的地 址傳送至所述數據運算裝置,并將所述指令緩沖寄存器中的指令的第二個字節輸出至所述 數據運算裝置; 在第三個時鐘周期,控制所述數據運算裝置根據所接收的所述程序計數器中的地址及 所述指令緩沖寄存器中的指令的第二個字節進行與運算來得到跳轉地址; 在第四個時鐘周期,將所述跳轉地址寫入所述程序計數器中,控制所述指令預取寄存 器根據所述程序計數器中的跳轉地址從所述程序存儲器中獲取指令,并將所述程序計數器 中的地址加一;及 在第五個時鐘周期,將所述指令譯碼器所譯碼的信息丟棄,并等待一個時鐘周期。10. 如權利要求6所述的控制方法,其特征在于,所述控制方法還包括: 提供一中斷信號寄存器; 提供一優先級編碼器; 提供一中斷信號緩沖器; 提供一中斷向量寄存器; 提供一二級堆棧; 當允許中斷時,在第一個時鐘周期,采集中斷信號,將所采集的中斷信號寫入所述中斷 信號寄存器,并將所述中斷信號從所述中斷信號寄存器傳送至所述優先級編碼器,控制所 述優先級編碼器根據預設的各中斷的優先級別來確定所述中斷信號的優先級別; 在第二個時鐘周期,將優先級別高的中斷信號送往中斷信號緩沖器; 在第三個時鐘周期,根據中斷信號緩沖器中的中斷信號來確定中斷地址,將所述中斷 地址存儲在中斷向量寄存器,并將所述程序計數器中的地址壓入所述二級堆棧中進行保 存,并將所述中斷地址寫入所述程序計數器;及 在第四個時鐘周期,根據所述程序計數器中的中斷地址,控制所述指令預取寄存器從 所述程序存儲器中讀取指令。
【文檔編號】G05B19/042GK106020017SQ201610320452
【公開日】2016年10月12日
【申請日】2016年5月16日
【發明人】烏力吉, 王 義, 張向民, 吳行軍, 賈雯, 王志華
【申請人】深圳清華大學研究院