專利名稱:擴(kuò)展存貯空間的裝置和隨機(jī)訪問(wèn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及數(shù)字電路中存貯地址空間的擴(kuò)展裝置和方法。
背景技術(shù):
隨著人們生活水平的日益提高,對(duì)于生活和生產(chǎn)中的各類設(shè)備的要求也逐漸提高,與之相對(duì)應(yīng)的,越來(lái)越多的工業(yè)控制、醫(yī)療、通訊、消費(fèi)等電子產(chǎn)品日趨智能化,以微處理器為核心的嵌入式系統(tǒng)隨之得到日益廣泛的應(yīng)用。隨著電子產(chǎn)品數(shù)據(jù)信息的數(shù)量不斷膨脹、類型越來(lái)越多、功能應(yīng)用日趨復(fù)雜,使得嵌入式系統(tǒng)的存貯空間急劇增大。比如在一個(gè)普通的手持終端上,可能需要集成漢字輸入、記事本、數(shù)據(jù)查詢等諸多功能,而這些功能的實(shí)現(xiàn),都需要更大的存貯空間。
而一個(gè)不得不面對(duì)的現(xiàn)實(shí)是,雖然面臨著大容量存儲(chǔ)空間的現(xiàn)實(shí)需求,但是出于降低成本的考慮,工業(yè)控制、消費(fèi)性等嵌入式產(chǎn)品往往采用低廉的微處理器,這些微處理器的數(shù)據(jù)和地址線一般較少,存貯空間十分有限,為實(shí)現(xiàn)大容量存儲(chǔ)空間的需求,目前一般采用的方法主要有兩種,一種是采用SPI(Serial Peripheral Interface,串行外設(shè)接口)、I2C(IntegratedInter Connect,集成內(nèi)部互連)等串行接口存貯器,該方法只用2~4個(gè)端口線,資源占用少,但是由于串行訪問(wèn)速度較低,而且串行接口存貯器本身也是非通用器件,從而使得硬件成本大大提高;另外,存貯空間擴(kuò)展有一定的地址限制,比如I2C最大只有7/10位尋址能力。另外一種方法是采用分組方式,通過(guò)端口線作為擴(kuò)展的硬件地址線,來(lái)切換和選擇不同的存貯器空間。一個(gè)典型例子是80C51分組擴(kuò)展存貯空間的方法,由硬件端口P1作為擴(kuò)展的硬件地址線,最多使用4根P1口線,來(lái)分組切換16個(gè)代碼組,因此最大擴(kuò)展的空間為16×64KB=1MB。但是該方法的缺點(diǎn)也非常明顯,必須編譯器支持、精心安排組間切換跳轉(zhuǎn)表,否則很容易出錯(cuò),使用非常不便;另外,擴(kuò)展的尋址空間非常有限,也限制了該方法的更廣泛應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是現(xiàn)有技術(shù)存在的速度慢、成本高、使用不方便、嵌入式系統(tǒng)存貯空間擴(kuò)展有限等缺點(diǎn),以期提出一種通用、低成本、隨機(jī)訪問(wèn)、快速方便、不限擴(kuò)展空間、可以廣泛應(yīng)用于嵌入式系統(tǒng)中的擴(kuò)展存貯空間裝置及隨機(jī)訪問(wèn)方法。
本發(fā)明所構(gòu)造的擴(kuò)展存貯空間裝置包括以下部分微處理器(MCU)、計(jì)數(shù)器、擴(kuò)展存貯器、鎖存器和譯碼/時(shí)序發(fā)生器;都是現(xiàn)有的,而通常擴(kuò)展存貯器的裝置只需要微處理器和存貯器兩個(gè)部分,并行擴(kuò)展存貯器的數(shù)據(jù)/地址總線直接和微處理器相連;串行擴(kuò)展存貯器通過(guò)幾個(gè)I/O口線與處理器相連。
所述譯碼/時(shí)序發(fā)生器根據(jù)所述微處理器的命令,通過(guò)地址譯碼,得到數(shù)個(gè)端口地址,同時(shí)產(chǎn)生控制所述計(jì)數(shù)器和鎖存器的信號(hào);所述計(jì)數(shù)器的輸出作為所述擴(kuò)展存貯器的段內(nèi)地址,所述擴(kuò)展存貯器根據(jù)所述計(jì)數(shù)器的連續(xù)時(shí)鐘計(jì)數(shù)進(jìn)行地址的連續(xù)訪問(wèn),所述鎖存器的輸出作為所述擴(kuò)展存貯器的段地址,同所述計(jì)數(shù)器一起向所述擴(kuò)展存儲(chǔ)器提供地址信號(hào)。
這種裝置以微處理器的地址線寬度來(lái)劃分所述擴(kuò)展存貯器的地址段(如果微處理器地址線寬為16,則每個(gè)地址段空間為216=64KB),同一地址段內(nèi)可以連續(xù)訪問(wèn);越段訪問(wèn)時(shí)重新設(shè)置地址段地址。
所述擴(kuò)展存貯器通過(guò)唯一的端口地址訪問(wèn),其地址信號(hào)線由所述計(jì)數(shù)器和鎖存器輸出;每次訪問(wèn)前均需要置訪問(wèn)起始地址,訪問(wèn)后所述計(jì)數(shù)器加一,使得所述擴(kuò)展存貯器在下次訪問(wèn)時(shí)的地址自動(dòng)加一。
本發(fā)明還提供了一種擴(kuò)展存貯空間隨機(jī)訪問(wèn)方法,其特征在于,包括以下步驟1)系統(tǒng)訪問(wèn)計(jì)數(shù)器清零的譯碼端口,對(duì)計(jì)數(shù)器清零;2)訪問(wèn)段地址設(shè)置的譯碼端口,進(jìn)行寫(xiě)操作,寫(xiě)入的數(shù)據(jù)就是預(yù)備訪問(wèn)擴(kuò)展存貯器的段地址;3)訪問(wèn)段內(nèi)偏移地址的譯碼端口,進(jìn)行寫(xiě)操作,寫(xiě)入的數(shù)據(jù)就是預(yù)備訪問(wèn)擴(kuò)展存貯器段內(nèi)的起始地址;4)連續(xù)訪問(wèn)擴(kuò)展存貯器,讀出或者寫(xiě)入數(shù)據(jù)信息;5)如果要訪問(wèn)非連續(xù)地址空間,重復(fù)步驟3)和4);如果越段訪問(wèn),還需要重復(fù)步驟2)。
本發(fā)明通過(guò)地址譯碼的方式,鎖存器輸出高端地址信號(hào)線,計(jì)數(shù)器輸出低端地址信號(hào)線,兩者共同組成擴(kuò)展存貯器的地址總線,計(jì)數(shù)器的連續(xù)計(jì)數(shù)保證了存貯器的連續(xù)訪問(wèn)。這樣,只需要幾個(gè)譯碼地址就可以實(shí)現(xiàn)擴(kuò)展存貯空間的訪問(wèn),方便解決了微處理器地址信號(hào)線不足導(dǎo)致存貯空間擴(kuò)展的困難,不僅實(shí)現(xiàn)了擴(kuò)展存貯空間的目的,而且還具有非常高的通用性,根據(jù)有成本低廉、隨機(jī)訪問(wèn)、快速方便、擴(kuò)展空間不限等諸多優(yōu)點(diǎn),可以廣泛應(yīng)用于嵌入式系統(tǒng)中。
圖1是本發(fā)明所述擴(kuò)展存貯空間裝置結(jié)構(gòu)圖。
圖2是本發(fā)明所述擴(kuò)展存貯空間隨機(jī)訪問(wèn)方法流程圖。
圖3是作為本發(fā)明具體實(shí)施例的8051擴(kuò)展存貯器結(jié)構(gòu)框圖。
具體實(shí)施例方式
下面結(jié)合具體實(shí)施方式
對(duì)本發(fā)明所述方法進(jìn)行具體描述。本發(fā)明實(shí)際是一種通過(guò)端口尋址方式,利用計(jì)數(shù)器來(lái)擴(kuò)展嵌入式系統(tǒng)存貯空間的方法。圖1描述了本發(fā)明所述的裝置,如圖所示,MCU的地址、讀/寫(xiě)等信號(hào)進(jìn)入譯碼/時(shí)序發(fā)生器,產(chǎn)生地址鎖存器片選、計(jì)數(shù)器清零、計(jì)數(shù)器使能、計(jì)數(shù)器時(shí)鐘和存貯器片選等信號(hào);地址鎖存器片選信號(hào)進(jìn)入鎖存器,產(chǎn)生存貯器高位地址和計(jì)數(shù)器的預(yù)置數(shù)信號(hào);計(jì)數(shù)器的預(yù)置數(shù)和計(jì)數(shù)器清零、計(jì)數(shù)器使能、計(jì)數(shù)器時(shí)鐘信號(hào)共同控制計(jì)數(shù)器,保證了計(jì)數(shù)器輸出存貯器的低位地址;存貯器高位地址、低位地址以及存貯器片選信號(hào)以及MCU的數(shù)據(jù)總線共同完成擴(kuò)展存貯器的訪問(wèn)。通過(guò)計(jì)數(shù)器自動(dòng)計(jì)數(shù)實(shí)現(xiàn)連續(xù)訪問(wèn)存貯器,避免了每次訪問(wèn)時(shí)都要設(shè)置訪問(wèn)地址的冗余操作,同時(shí)硬件的自動(dòng)計(jì)數(shù)使得訪問(wèn)速度也能夠大大提高??梢钥闯?,譯碼/時(shí)序發(fā)生器是個(gè)關(guān)鍵,其邏輯關(guān)系不僅要正確無(wú)誤,同時(shí)還要滿足時(shí)序方面的要求,譯碼/時(shí)序發(fā)生器可以由門電路、GAL(Generic Array Logic,通用陣列邏輯)或者EPLD(Electrically Programmable Logic DeVice,電氣可編程邏輯器件)等實(shí)現(xiàn)。另外,裝置中的計(jì)數(shù)器也需要根據(jù)具體型號(hào)進(jìn)行選擇,如某種類型的計(jì)數(shù)器,只有當(dāng)時(shí)鐘信號(hào)的上升沿到達(dá)時(shí),才執(zhí)行清零或者預(yù)置數(shù)等相應(yīng)的操作。當(dāng)然,如果用戶覺(jué)得越段訪問(wèn)比較麻煩,可以讓擴(kuò)展存貯器的高位地址信號(hào)也由計(jì)數(shù)器輸出;這樣,在擴(kuò)展的全部存貯空間內(nèi)都可以連續(xù)訪問(wèn)。這樣操作的唯一代價(jià)就是需要增加一個(gè)計(jì)數(shù)器,該計(jì)數(shù)器需要和低位地址計(jì)數(shù)器進(jìn)行級(jí)聯(lián)。
圖2是本發(fā)明所述實(shí)現(xiàn)擴(kuò)展存貯器擴(kuò)展隨機(jī)訪問(wèn)方法的流程圖,具體步驟描敘如下
1、首先對(duì)計(jì)數(shù)器清零;2、向段地址譯碼口寫(xiě)入要訪問(wèn)的存貯空間的段地址(即高位地址);3、向段內(nèi)地址譯碼口寫(xiě)入要訪問(wèn)的存貯空間的段內(nèi)偏移地址(即低位地址);4、訪問(wèn)此存貯空間;5、如果訪問(wèn)完畢,就結(jié)束退出;否則繼續(xù)下面的步驟;6、判斷下一次訪問(wèn)是否越段,如果越了段,跳轉(zhuǎn)到步驟2繼續(xù)執(zhí)行;7、判斷下一次訪問(wèn)是否地址連續(xù),如果不連續(xù),跳轉(zhuǎn)到步驟3繼續(xù)執(zhí)行;否則跳轉(zhuǎn)到步驟4繼續(xù)執(zhí)行。
為了敘述方便,本發(fā)明以一個(gè)8位數(shù)據(jù)、16位地址的MCU系統(tǒng)為例,具體說(shuō)明如下1、譯碼/時(shí)序發(fā)生器輸入的信號(hào)是MCU的讀/寫(xiě)控制信號(hào),以及地址總線,通過(guò)譯碼和時(shí)序控制發(fā)生,輸出如下信號(hào)1)譯碼輸出信號(hào)/CS1、/CS2,作為低16位地址鎖存器的片選(這里假設(shè)鎖存器為8位位寬,因此16位地址需要2個(gè)鎖存器);高位地址(段地址)譯碼信號(hào)/CS4,作為高位地址鎖存器的片選;2)計(jì)數(shù)器譯碼信號(hào)/CS3,作為計(jì)數(shù)器的使能控制輸入;計(jì)數(shù)器清零信號(hào)CLR;計(jì)數(shù)器時(shí)鐘信號(hào)CLK;3)擴(kuò)展存貯器的譯碼信號(hào)/CS5,作為該擴(kuò)展存貯器的片選輸入。
2、低位地址鎖存器輸入的信號(hào)是/CS1和/CS2,以及MCU的地址和數(shù)據(jù)總線;輸出16位的鎖存信號(hào),姑且稱為ABCD,作為計(jì)數(shù)器的預(yù)置輸入;高地址鎖存器輸入的信號(hào)是/CS4,以及MCU的地址和數(shù)據(jù)總線;輸出8位鎖存信號(hào)SA16~SA23,作為擴(kuò)展存貯器的高位地址線;3、計(jì)數(shù)器有如下輸入信號(hào)
1)預(yù)置輸入信號(hào)ABCD,用來(lái)設(shè)置初始計(jì)數(shù)器值;2)計(jì)數(shù)器的使能控制/CS3,以便啟動(dòng)計(jì)數(shù);3)計(jì)數(shù)器清零信號(hào)CLR;4)計(jì)數(shù)器時(shí)鐘信號(hào)CLK。
輸出信號(hào)為16位輸出,姑且稱為QABCD,作為擴(kuò)展存貯器的低16位地址;4、擴(kuò)展存貯器有如下輸入信號(hào)1)片選輸入/CS5,是該擴(kuò)展存貯器訪問(wèn)譯碼口;2)低16位地址輸入QABCD,高位地址輸入SA16~SA23;當(dāng)然,還有MCU的數(shù)據(jù)總線作為輸入/輸出信號(hào)。
顯然,如果擴(kuò)展的存貯器不大于64KB,高地址鎖存器是不需要的;當(dāng)擴(kuò)展存貯器大于64KB,就需要通過(guò)向/CS4譯碼端口寫(xiě)入不同的段地址數(shù)據(jù),來(lái)選擇不同的64KB段。上面的示例方法,擴(kuò)展的存貯空間為64KB*28=16MB。顯然,如果要繼續(xù)擴(kuò)展存貯空間,可以繼續(xù)增加擴(kuò)展存貯器高位地址譯碼端口;如果增加N個(gè)譯碼端口,將為擴(kuò)展存貯器增加8*N根地址線,則存貯空間將擴(kuò)展(28)N倍。采用這種方法,存貯空間可以無(wú)限擴(kuò)展。
為敘述方便,假設(shè)有一個(gè)嵌入式設(shè)備,該設(shè)備是以8051單片機(jī)為核心的典型應(yīng)用,鍵盤輸入,液晶輸出,具備拼音輸入漢字的功能。需要對(duì)擴(kuò)展存貯器進(jìn)行擴(kuò)展,用來(lái)存貯龐大的GB2312漢字字模庫(kù)和拼音編碼檢索表。
由于8051單片機(jī)有8位數(shù)據(jù)線,16位地址線,最大尋址64KB的RAM空間和64KB的程序空間。因此,每一個(gè)段空間就是64KB,在64KB空間內(nèi)可以連續(xù)訪問(wèn),超過(guò)64KB就需要?jiǎng)澐殖刹煌亩?。利用RAM的高端空間,作為擴(kuò)展存貯器的譯碼地址,如地址0xFFF8-0xFFFF共8個(gè)端口地址,稱之為端口0,端口1直到端口7。選用如下芯片由EPLD實(shí)現(xiàn)譯碼/時(shí)序發(fā)生器,三片74573完成地址的鎖存,4片74163級(jí)聯(lián)作為16位的計(jì)數(shù)器,27C040作為擴(kuò)展存貯器。
假設(shè)現(xiàn)在要讀取27C040中0x20860處的字庫(kù)信息??梢匀绱诉M(jìn)行1)寫(xiě)端口4(段地址設(shè)置口)為數(shù)據(jù)0x02,即設(shè)置27C040段地址為0x02。
2)讀取端口0(清零口),從EPLD輸出的CLR信號(hào)使得計(jì)數(shù)器清零端有效,隨后的CLK上沿信號(hào)完成計(jì)數(shù)器的清零。
3)段內(nèi)偏移地址設(shè)置口的寫(xiě)入。寫(xiě)端口1為數(shù)據(jù)0x60,寫(xiě)端口2為數(shù)據(jù)0x08,從EPLD輸出的/CS1、/CS2信號(hào)使得74245鎖存輸出0x0860,隨后的CLK上沿信號(hào)完成計(jì)數(shù)器的預(yù)置。
4)寫(xiě)端口3(計(jì)數(shù)器使能口),從EPLD鎖存輸出的/CS3信號(hào)使得計(jì)數(shù)器使能。
5)連續(xù)讀取端口5(擴(kuò)展存貯器訪問(wèn)口)中32個(gè)字節(jié)的數(shù)據(jù),就得到了某個(gè)漢字的字模信息。
其實(shí),在多數(shù)情況下,步驟2實(shí)際上是不必要的,清零操作只是方便用戶快速返回到段內(nèi)0地址而已。擴(kuò)展存貯器的原理圖見(jiàn)圖3所示。
權(quán)利要求
1.一種擴(kuò)展存貯空間裝置,包括以下部分微處理器、計(jì)數(shù)器、擴(kuò)展存貯器、鎖存器和譯碼/時(shí)序發(fā)生器;其特征在于,還包括計(jì)數(shù)器,所述譯碼/時(shí)序發(fā)生器根據(jù)所述微處理器的命令,通過(guò)地址譯碼,得到數(shù)個(gè)端口地址,同時(shí)產(chǎn)生控制所述計(jì)數(shù)器和鎖存器的信號(hào);所述計(jì)數(shù)器的輸出作為所述擴(kuò)展存貯器的段內(nèi)地址,所述擴(kuò)展存貯器根據(jù)所述計(jì)數(shù)器的連續(xù)時(shí)鐘計(jì)數(shù)進(jìn)行地址的連續(xù)訪問(wèn),所述鎖存器同所述計(jì)數(shù)器一起向所述擴(kuò)展存儲(chǔ)器提供地址信號(hào)。
2.根據(jù)權(quán)利要求1所述的擴(kuò)展存貯空間裝置,其特征在于,以所述微處理器的地址線寬度劃分所述擴(kuò)展存貯器的地址段,同一地址段內(nèi)可以連續(xù)訪問(wèn);越段訪問(wèn)時(shí)重新設(shè)置地址段地址。
3.根據(jù)權(quán)利要求1所述的擴(kuò)展存貯空間裝置,其特征在于,所述擴(kuò)展存貯器通過(guò)唯一的端口地址訪問(wèn),其地址信號(hào)線由所述計(jì)數(shù)器和鎖存器輸出。
4.根據(jù)權(quán)利要求1所述的擴(kuò)展存貯空間裝置,其特征在于,所述譯碼/時(shí)序發(fā)生器由門電路、通用陣列邏輯或者電氣可編程邏輯器件等實(shí)現(xiàn)。
5.根據(jù)權(quán)利要求1所述的擴(kuò)展存貯空間裝置,其特征在于,所述計(jì)數(shù)包括一個(gè)高位地址計(jì)數(shù)器和低位地址計(jì)數(shù)器,二者之間進(jìn)行級(jí)聯(lián),由所述高位地址計(jì)數(shù)器輸出擴(kuò)展存貯器的高位地址信號(hào)。
6.一種擴(kuò)展存貯空間隨機(jī)訪問(wèn)方法,其特征在于,包括以下步驟1)系統(tǒng)訪問(wèn)計(jì)數(shù)器清零的譯碼端口,對(duì)計(jì)數(shù)器清零;2)訪問(wèn)段地址設(shè)置的譯碼端口,進(jìn)行寫(xiě)操作,寫(xiě)入的數(shù)據(jù)就是預(yù)備訪問(wèn)擴(kuò)展存貯器的段地址;3)訪問(wèn)段內(nèi)偏移地址的譯碼端口,進(jìn)行寫(xiě)操作,寫(xiě)入的數(shù)據(jù)就是預(yù)備訪問(wèn)擴(kuò)展存貯器段內(nèi)的起始地址;4)連續(xù)訪問(wèn)擴(kuò)展存貯器,讀出或者寫(xiě)入數(shù)據(jù)信息;5)如果要訪問(wèn)非連續(xù)地址空間,重復(fù)步驟3)和4);如果越段訪問(wèn),還需要重復(fù)步驟2)。
7.根據(jù)權(quán)利要求6所述的擴(kuò)展存貯空間隨機(jī)訪問(wèn)方法,其特征在于,擴(kuò)展存貯器每次訪問(wèn)前均需要置訪問(wèn)起始地址,訪問(wèn)后計(jì)數(shù)器加一,使得擴(kuò)展存貯器在下次訪問(wèn)時(shí)的地址自動(dòng)加一。
全文摘要
本發(fā)明公開(kāi)了一種計(jì)算機(jī)領(lǐng)域中的擴(kuò)展存貯空間裝置和隨機(jī)訪問(wèn)方法,所述裝置包括微處理器、計(jì)數(shù)器、擴(kuò)展存貯器、鎖存器和譯碼/時(shí)序發(fā)生器、計(jì)數(shù)器,所述譯碼/時(shí)序發(fā)生器根據(jù)所述微處理器的命令,通過(guò)地址譯碼,得到數(shù)個(gè)端口地址,同時(shí)產(chǎn)生控制所述計(jì)數(shù)器和鎖存器的信號(hào);所述計(jì)數(shù)器的輸出作為所述擴(kuò)展存貯器的段內(nèi)地址,所述擴(kuò)展存貯器根據(jù)所述計(jì)數(shù)器的連續(xù)時(shí)鐘計(jì)數(shù)進(jìn)行地址的連續(xù)訪問(wèn),所述鎖存器同所述計(jì)數(shù)器一起向所述擴(kuò)展存儲(chǔ)器提供地址信號(hào)。本發(fā)明具有非常高的通用性,具有成本低廉、隨機(jī)訪問(wèn)、快速方便、擴(kuò)展空間不限等諸多優(yōu)點(diǎn),可以廣泛應(yīng)用于嵌入式系統(tǒng)中。
文檔編號(hào)G06F13/00GK1731369SQ200410070510
公開(kāi)日2006年2月8日 申請(qǐng)日期2004年8月5日 優(yōu)先權(quán)日2004年8月5日
發(fā)明者熊勇, 李鵬 申請(qǐng)人:中興通訊股份有限公司