專利名稱::經(jīng)由多工器存取儲存于存儲體的數(shù)據(jù)的微控制器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種存儲器管理的方法,特別是涉及一種微處理器管理外部存儲器的方法。
背景技術(shù):
:MCS(MicroComputerSystem)是Intel公司對微處理器的總稱,而其所開發(fā)的MCS-51/52系列的微處理器更是普遍地應(yīng)用在工業(yè)界中。一般而言,微處理器只含有少量的存儲器及輸入輸出點,以MCS-51系列的微處理器為例,它有4K字節(jié)的程序存儲器、128字節(jié)的數(shù)據(jù)存儲器以及32條輸入輸出點,MCS-52系列的微處理器則是將程序存儲器增加為8K字節(jié),以及將數(shù)據(jù)存儲器增加為256字節(jié),而MCS-52與MCS-51系列的微處理器同樣是使用一個8位的中央處理單元。程序存儲器用來存放使用者所撰寫的程序,屬于只讀存儲器(ROM),數(shù)據(jù)存儲器則是隨機存取存儲器(RAM),可供中央處理單元運作時讀取或?qū)懭霐?shù)據(jù),通常是用來當(dāng)程序執(zhí)行時暫時存放數(shù)據(jù)的暫存器。MCS-51/52系列的微處理器都可以由外部擴充存儲器,最大可擴充至64K字節(jié)。然而在一些應(yīng)用之中,使用者可能會需要撰寫很大的程序碼或是使用很大的陣列表,如此一來64K字節(jié)的外部擴充程序存儲器仍然不夠使用。存儲體切換(bankswitch)是一種可以將存儲器大幅擴充的方法,使用微處理器上多出的接腳作為解碼線來對超過64K字節(jié)的存儲器作定址,若外部存儲器是一個大容量的存儲器裝置,則多出的接腳可以直接作為地址線,若外部存儲器是數(shù)個小容量的存儲器裝置,則多出的接腳可用來選擇存儲器芯片。由于微處理器最大的外部擴充存儲器為64K字節(jié),所以可用64K字節(jié)作為存儲體切換的基本單位,稱為一個頁(page)。存儲體切換最大的問題在于中斷向量表(interruptvectortable)配置的地址,因為中斷向量表通常會放在存儲器中某個特定的地址,雖然程序在運作時可以在各個頁作切換,但是當(dāng)中斷發(fā)生時,程序會立刻于所在頁中的特定地址去尋找中斷向量表,而且此時程序并無法作存儲體切換,當(dāng)程序找不到中斷向量表時,便會產(chǎn)生錯誤。一般解決這個問題的方法,便是在每個存儲體中都保留一共用區(qū)(commonarea),共用區(qū)中儲存中斷向量表、中斷服務(wù)例程(interruptserviceroutine,ISR)、通用函式庫以及存儲體切換所需的數(shù)據(jù),所以不論程序運作在那一個頁,當(dāng)程序發(fā)生中斷時,程序都可以于所在的頁中找到中斷向量表繼續(xù)程序的執(zhí)行。請參考圖1,圖1為已知外部程序存儲器12配置的示意圖。假設(shè)有一MCS-51/52系列的微處理器使用存儲體切換的方式在外部擴充512K位的存儲器12,分為8個頁,每個頁為64K位,并保留10K位的共用區(qū)用來存放中斷向量表、中斷服務(wù)例程、通用函式庫以及存儲體切換所需的數(shù)據(jù)。舉例來說,當(dāng)在第一頁的程序需要呼叫第二頁的程序時,會立即跳至共用區(qū)中讀取存儲體設(shè)定例程,存儲體設(shè)定例程會先設(shè)定所需存儲體的頁碼,因為對于微處理器而言,在共用區(qū)中改變頁碼并不會影響任何數(shù)據(jù)的地址,接著微處理器就可以依據(jù)設(shè)定的頁碼存取第二頁中所需的程序。于第二頁的程序處理完畢之后,程序會先回到共用區(qū)中,由存儲體設(shè)定例程將頁碼切換回原來的存儲體,再回到第一頁中原來程序的地址繼續(xù)執(zhí)行程序。另外,當(dāng)中斷發(fā)生時,處理器會跳至其內(nèi)部預(yù)設(shè)的向量表地址,再根據(jù)此一地址所記載的內(nèi)容,跳至中斷服務(wù)例程執(zhí)行,然后再回到原來程序的地址繼續(xù)執(zhí)行程序。因已知的方式,中斷向量表、中斷服務(wù)例程位于共用區(qū)內(nèi),所以每一頁都有相同的程序,故不需要作頁的切換。由上述可知,已知MCS-51/52系列的微處理器所提供的程序存儲器,最大只能利用擴充外部程序存儲器至64K字節(jié),但是藉由存儲體切換的技巧,使用微處理器上多出的接腳,可以再將外部程序存儲器作大幅的擴充,但是存儲體切換有個缺點,就是每個存儲體之中都必須保留一部分的空間作為共用區(qū),用來存放中斷向量表、中斷服務(wù)例程、通用函式庫以及存儲體切換所需的數(shù)據(jù),而這些數(shù)據(jù)會復(fù)制并儲存在每個存儲體的共用區(qū)之中,如此一來,存儲器的空間便無法有效的被利用。
發(fā)明內(nèi)容因此本發(fā)明的主要目的是提供一種微處理器管理外部存儲器的方法,以解決上述問題。一種可擴充存儲體的微控制器,其包含一微處理器,大于微控制器單一指令可定址空間的多個存儲體(memorybank),連接于該微處理器,用來儲存數(shù)據(jù)及程序,該多個存儲體中亦儲存著中斷服務(wù)例程(interruptserviceroutine);以及一存儲體控制電路和一多工器,連接于該微處理器及該多個存儲體之間。該多工器包含一第一輸入端,連接于該微處理器的第一輸出端,用來接收由該微處理器發(fā)出的頁面選擇訊號,該頁面選擇訊號是用來選擇存儲體;一第二輸入端,連接于該微處理器的第二輸出端,用來接收一預(yù)定的頁面選擇訊號,其是對應(yīng)于具有該中斷服務(wù)例程的存儲體;以及一選擇端,用來接收由該存儲體控制電路產(chǎn)生一選擇訊號。該存儲體控制電路根據(jù)該微處理器的中斷發(fā)生來源訊號和中斷服務(wù)例程執(zhí)行結(jié)束訊號來產(chǎn)生該選擇訊號,該多工器根據(jù)該選擇訊號來切換輸出由該微處理器的第一輸出端發(fā)出的頁面選擇訊號或該微處理器的第二輸出端發(fā)出的預(yù)定的頁面選擇訊號,使中斷發(fā)生時該微處理器可至該儲存中斷服務(wù)例程的存儲體存取數(shù)據(jù)。圖1為已知外部程序存儲器配置的示意圖。圖2為本發(fā)明微處理器的外部存儲器其存儲體配置的示意圖。圖3為本發(fā)明微處理器與外部存儲器連接的示意圖。附圖標(biāo)號說明12外部程序存儲器20微處理器22外部存儲器23存儲體控制電路24多工器具體實施方式請參考圖2,圖2為本發(fā)明微處理器的外部存儲器22其存儲體配置的示意圖。微處理器(圖未示)的外部存儲器22在使用存儲體交換的存儲器配置方式時,需在每一個存儲體中均需要復(fù)制一份共用區(qū)的數(shù)據(jù),相當(dāng)耗費存儲器空間,若可以減少共用區(qū)中存放數(shù)據(jù)的大小,就能夠大幅的節(jié)省存儲器的空間。本發(fā)明將外部存儲器22的每一個存儲體的共用區(qū)24所包含的中斷服務(wù)例程取出,也就是存儲體的共用區(qū)24不包含中斷服務(wù)例程,而僅在外部存儲器的其中一個存儲體之中儲存一份中斷服務(wù)例程26,于中斷發(fā)生時再切換至儲存中斷服務(wù)例程26的存儲體中讀取數(shù)據(jù),如此每一個存儲體的共用區(qū)就都縮小了,相對的每一個存儲體就有更多的可用空間,也能減少存儲體切換的機率。舉例來說,假設(shè)外部存儲器22的大小為512K字節(jié),分成8個存儲體,每一個存儲體的大小為64K字節(jié),而每一個存儲體需要10K字節(jié)的存儲器空間來儲存共用區(qū)數(shù)據(jù),而其中中斷服務(wù)例程就占了4K字節(jié),所以將每一個共用區(qū)中的中斷服務(wù)例程取出而僅儲存一份中斷服務(wù)例程26于存儲體的第0頁,除了存儲體的第0頁之外,每一個數(shù)據(jù)庫的可用空間由原來的54K字節(jié)增加為58K字節(jié),共增加了4K*(8-1)=28K字節(jié)的存儲器空間。因為中斷服務(wù)例程26只存在存儲體的第0頁,所以當(dāng)中斷發(fā)生時,微處理器需將工作中的數(shù)據(jù)庫切換至存儲體的第0頁作中斷處理,本發(fā)明使用一個存儲體控制電路和多工器配合微處理器的中斷發(fā)生和中斷服務(wù)例程執(zhí)行結(jié)束訊號,于中斷發(fā)生時將微處理器切換至存儲體的第0頁中執(zhí)行中斷服務(wù)例程,如此便可如上所述將中斷服務(wù)例程由外部存儲器的各個存儲體的共用區(qū)中移出,而僅儲存一份的中斷服務(wù)例程于外部存儲器其中的一個存儲體之中,詳細的說明如下。請參考圖3,圖3為本發(fā)明微處理器20與外部存儲器22連接的示意圖。微處理器20的端口0(P0)及端口2(P2)直接連接于外部存儲器22,用來定址以及存取外部存儲器22的存儲體,微處理器20的端口1(P1)經(jīng)由一多工器24連接于外部存儲器22,多工器24包含一第一輸入端、一第二輸入端、一輸出端以及一選擇端。多工器24的第一輸入端連接于微處理器的端口1,微處理器20連接外部存儲器22時,以端口1作為頁面選擇器,也就是微處理器20藉由端口1來輸出外部存儲器22的存儲體頁碼。多工器24的第二輸入端連接于一預(yù)設(shè)的存儲體頁碼訊號(Set),其中預(yù)設(shè)的存儲體頁碼為儲存中斷服務(wù)例程的存儲體頁碼。多工器24的輸出端連接于外部存儲器22,而輸出端傳送至外部存儲器22的訊號用來選擇外部存儲器22的存儲體頁碼。多工器24的選擇端連接于一存儲體控制電路23的輸出端(Sel)。該存儲體控制電路23在平常時及中斷服務(wù)例程執(zhí)行結(jié)束之后會送到低電位的狀態(tài)。多工器24根據(jù)此低電位的訊號輸出由第一輸入端所輸入的存儲體頁碼訊號,所以微處理器20可以正常的切換以及存取外部存儲器22的存儲體。但是當(dāng)微處理器20在執(zhí)行程序時收到中斷請求,存儲體控制電路23就會將輸出的電位拉高,代表發(fā)生中斷,此時多工器24會根據(jù)存儲體控制電路23的高電位訊號輸出由第二輸入端所輸入的預(yù)設(shè)的存儲體頁碼訊號,則外部存儲器22的存儲體被切換至儲存中斷服務(wù)例程的存儲體,微處理器20便可以讀取中斷服務(wù)例程作中斷處理。然而,存儲體控制電路23在中斷發(fā)生至中斷服務(wù)例程執(zhí)行結(jié)束之前,其輸出會一直維持在高電位的狀態(tài),所以多工器24也會一直輸出由第二輸入端所輸入的預(yù)設(shè)的存儲體頁碼訊號,便只能在儲存中斷服務(wù)例程的存儲體中執(zhí)行程序,也就是中斷發(fā)生時,微處理器20不可以任意的切換存儲體,如此一來,使用者就必須預(yù)先將中斷服務(wù)例程所需呼叫的函式與中斷服務(wù)例程儲存于同一個存儲體之中。由上述可知,本發(fā)明的微處理器20在連接使用存儲體交換的外部存儲器22時,將外部存儲器22的每一個存儲體的共用區(qū)的中斷服務(wù)例程取出,而僅儲存一份中斷服務(wù)例程于其中一個存儲體,此外并連接多工器24于微處理器20作為頁面選擇器的接腳與外部存儲器22之間,存儲體控制電路23根據(jù)微處理器20的中斷發(fā)生訊號及中斷服務(wù)例程執(zhí)行結(jié)束訊號,以提供多工器24來選擇輸出至外部存儲器22的存儲體頁碼訊號,存儲體控制電路23在低電位的狀態(tài)時,多工器24輸出微處理器20選擇的存儲體頁碼訊號,但是在中斷發(fā)生至中斷服務(wù)例程執(zhí)行結(jié)束之前時,存儲體控制電路23會輸出高電位,此時多工器24便會輸出預(yù)設(shè)的存儲體頁碼訊號,將微處理器20切換至儲存中斷服務(wù)例程的存儲體中作中斷處理。相較于已知技術(shù),本發(fā)明所提供的微處理器在發(fā)生中斷時,利用多工器切換存儲體,如此可將存在于每一個存儲體的共用區(qū)之中的中斷服務(wù)例程移出,減少共用區(qū)占用的空間,一方面增加了每一個存儲體的可用空間,另一方面也減少了切換存儲體的機會,提供微處理器存取外部存儲器的效率。已知技術(shù)在使用存儲體交換的方式擴充外部存儲器時,必須在每一個存儲體中都復(fù)制一份含有中斷服務(wù)例程的共用區(qū)數(shù)據(jù),而中斷服務(wù)例程占了共用區(qū)很大的一部分,相當(dāng)浪費存儲器的空間,而本發(fā)明則可以更有效的利用存儲器的空間。以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明權(quán)利要求書所做的均等變化與修飾,皆應(yīng)屬本發(fā)明專利的涵蓋范圍。權(quán)利要求1.一種可擴充存儲體的微控制器,其包含一微處理器;多個存儲體,連接于該微處理器,用來儲存數(shù)據(jù)及程序,該多個存儲體中亦儲存著中斷服務(wù)例程;一存儲體控制電路,連接于該微處理器,用來根據(jù)微處理器的中斷發(fā)生來源以及中斷服務(wù)例程執(zhí)行結(jié)束訊號或是根據(jù)該微處理器所存取的中斷相關(guān)指令來產(chǎn)生一選擇訊號;以及一多工器,連接于該微處理器及該多個存儲體之間,其包含一第一輸入端,連接于該微處理器的第一輸出端,用來接收由該微處理器發(fā)出的頁面選擇訊號,該頁面選擇訊號是用來選擇存儲體;一第二輸入端,連接于該微處理器的第二輸出端,用來接收一可被調(diào)整或預(yù)定的頁面選擇訊號,其是對應(yīng)于具有該中斷服務(wù)例程的存儲體;以及一選擇端,連接于該存儲體控制電路的輸出端,根據(jù)該選擇訊號輸出由該微處理器的第一輸出端發(fā)出的頁面選擇訊號或該微處理器的第二輸出端發(fā)出的可被調(diào)整或預(yù)定的頁面選擇訊號,使中斷發(fā)生時該微處理器可至儲存該中斷服務(wù)例程的存儲體存取數(shù)據(jù)。2.如權(quán)利要求1所述的微控制器,其中該微處理器為MCS系列的微處理器。3.如權(quán)利要求1所述的微控制器,其中該多個存儲體具有擴充性,并且多個存儲體的容量大于該微控制器單一指令可定址的空間。4.如權(quán)利要求1所述的微控制器,其中該多工器還包含第三個以上的輸入端,用來接收不同的可被調(diào)整或預(yù)定的頁面選擇訊號,其是對應(yīng)于具有不同的中斷服務(wù)例程的存儲體。5.如權(quán)利要求4所述的微控制器,其中該存儲體控制電路可根據(jù)該微處理器多種的中斷發(fā)生來源以及中斷服務(wù)例程執(zhí)行結(jié)束的訊號或是根據(jù)該微處理器所存取的中斷相關(guān)指令來產(chǎn)生多種的選擇訊號。6.如權(quán)利要求1所述的微控制器,其中每一個存儲體中皆含有一共用區(qū),該共用區(qū)中未包含中斷服務(wù)例程。7.如權(quán)利要求1所述的微控制器,其中該中斷服務(wù)例程所呼叫的函式是與該中斷服務(wù)例程儲存于同一個存儲體之中。8.一種存取連接于一微處理器的存儲器的方法,該存儲器包含多個存儲體,該方法包含(a)提供一多工器,連接于該微處理器及該多個存儲體之間;(b)將一中斷服務(wù)例程儲存于該多個存儲體的其中一個存儲體中;(c)在該微處理器未發(fā)生中斷時,使用該多工器根據(jù)該微處理器的第一輸出端發(fā)出的頁面選擇訊號選擇存取的存儲體;(d)在該微處理器發(fā)生中斷時,使用該多工器根據(jù)該微處理器的第二輸出端發(fā)出的可被調(diào)整或預(yù)定的頁面選擇訊號選擇存取該儲存中斷服務(wù)例程的存儲體。9.如權(quán)利要求8所述的方法,其中該微處理器為MCS系列的微處理器。10.如權(quán)利要求8所述的方法,其還包含將一未包含中斷服務(wù)例程的共用區(qū)儲存于每一個存儲體中。11.如權(quán)利要求8所述的方法,其另包含將該中斷服務(wù)例程所呼叫的函式儲存于同一個存儲體之中。全文摘要一種可擴充存儲體的微控制器包含一微處理器、多個存儲體、一存儲體控制電路以及一多工器。該多個存儲體的容量大于該微控制器單一指令可定址的空間,并且其中的存儲體中儲存著中斷服務(wù)例程。該存儲體控制電路根據(jù)該微處理器的中斷發(fā)生和中斷服務(wù)例程執(zhí)行結(jié)束訊號來產(chǎn)生一選擇訊號。該多工器包含一第一輸入端、一第二輸入端、一選擇端以及一輸出端,根據(jù)該存儲體控制電路由輸入端輸入的選擇訊號來輸出由該第一輸入端接收的該微處理器所發(fā)出的頁面選擇訊號,或者是由該第二輸入端接收的一預(yù)定的頁面選擇訊號,使中斷發(fā)生時該微處理器可至儲存該中斷服務(wù)例程的存儲體存取數(shù)據(jù)。文檔編號G06F9/22GK1538289SQ03110479公開日2004年10月20日申請日期2003年4月16日優(yōu)先權(quán)日2003年4月16日發(fā)明者曾寶慶,宋秉乘,陳炳盛,杜立群申請人:聯(lián)發(fā)科技股份有限公司