亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)堆棧存儲(chǔ)電路及微控制器的制作方法

文檔序號(hào):6599141閱讀:191來源:國知局
專利名稱:數(shù)據(jù)堆棧存儲(chǔ)電路及微控制器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)堆棧存儲(chǔ)電路及微控制器。
背景技術(shù)
堆棧的進(jìn)棧與出棧操作作為一種數(shù)據(jù)處理方式,在微控制器中被廣泛采用。堆棧主要包括程序堆棧和數(shù)據(jù)堆棧,其中,程序堆棧幾乎應(yīng)所有的微控制器中,主要程序跳轉(zhuǎn)或中斷處理時(shí),對(duì)當(dāng)前程序地址的保存及恢復(fù)。由于早期較為低端的微控制器需要處理的數(shù)據(jù)處理量相對(duì)較少,而應(yīng)用程序結(jié)構(gòu)又相對(duì)簡單,因此很少涉及到數(shù)據(jù)堆棧。但隨著微控制器的廣泛應(yīng)用,以及應(yīng)用系統(tǒng)復(fù)雜度的提升,使得數(shù)據(jù)處理量和應(yīng)用程序結(jié)構(gòu)的復(fù)雜度增力口,特別是高級(jí)語言開發(fā)環(huán)境的使用,要經(jīng)常保存和恢復(fù)大量的函數(shù)變量;在這種情況下, 由于數(shù)據(jù)堆棧能夠方便地實(shí)現(xiàn)大量數(shù)據(jù)的保護(hù)和恢復(fù),因此,越來越多的微控制器開始應(yīng)用數(shù)據(jù)堆棧,同時(shí)對(duì)數(shù)據(jù)堆棧操作方式也在不斷改進(jìn),以提升保存和恢復(fù)大量的函數(shù)變量進(jìn)行效率。圖4為現(xiàn)有技術(shù)的中低端微控制器的堆棧結(jié)構(gòu)示意圖。如圖4所示,在現(xiàn)有技術(shù)中,對(duì)于中低端微控制器,很少采用硬件結(jié)構(gòu)的數(shù)據(jù)堆棧,而多以片內(nèi)通用數(shù)據(jù)存儲(chǔ)器作為硬件基礎(chǔ),并通過軟件的方式模擬數(shù)據(jù)堆棧的操作。具體地,將通用數(shù)據(jù)存儲(chǔ)器的一段地址空間的存儲(chǔ)器作為數(shù)據(jù)堆棧;用某個(gè)通用數(shù)據(jù)存儲(chǔ)器或寄存器作為堆棧指針,存儲(chǔ)當(dāng)前棧頂?shù)牡刂?,并且所有的進(jìn)棧與出棧操作都是通過普通的存儲(chǔ)器轉(zhuǎn)移或運(yùn)算指令來完成。在這些中低端微控制器中,由于數(shù)據(jù)堆棧需占用通用數(shù)據(jù)存儲(chǔ)器的部分?jǐn)?shù)據(jù)空間,很難保證該數(shù)據(jù)堆棧中被保護(hù)的數(shù)據(jù)與該通用數(shù)據(jù)存儲(chǔ)器其他數(shù)據(jù)的相對(duì)獨(dú)立性。具體地,在執(zhí)行相關(guān)程序而調(diào)用該通用數(shù)據(jù)存儲(chǔ)器的其他數(shù)據(jù)時(shí),很有可能會(huì)誤操作數(shù)據(jù)堆棧中的內(nèi)容, 從而造成數(shù)據(jù)堆棧中所保護(hù)的數(shù)據(jù)被改寫,因此具有上述數(shù)據(jù)堆棧的低端微控制器構(gòu)架形式存在數(shù)據(jù)安全性差的缺點(diǎn)。圖5為現(xiàn)有技術(shù)的中高端微控制器中的堆棧結(jié)構(gòu)示意圖。如圖5所示,對(duì)于中高端微控制器,則多采用硬件結(jié)構(gòu)的數(shù)據(jù)堆棧,為獨(dú)立的數(shù)據(jù)堆棧存儲(chǔ)器。具體地,通過設(shè)置讀或?qū)懣刂萍拇嫫魉ǖ臄?shù)據(jù)堆棧讀或?qū)懣刂莆?,?duì)讀或?qū)懢彌_寄存器暫存準(zhǔn)備進(jìn)棧的數(shù)據(jù)或出棧讀出的數(shù)據(jù)進(jìn)行操作;由特定的硬件寄存器作為堆棧指針,存儲(chǔ)當(dāng)前棧頂?shù)牡刂罚?以進(jìn)行進(jìn)棧或出棧操作。在這些中高端微控制器的數(shù)據(jù)堆棧相關(guān)構(gòu)架中,由于需通過讀或?qū)懣刂萍拇嫫骱妥x或?qū)懢彌_寄存器間接地對(duì)數(shù)據(jù)堆棧進(jìn)行操作,而使得進(jìn)棧與出棧操作執(zhí)行效率不高。

發(fā)明內(nèi)容
本發(fā)明提供一種數(shù)據(jù)堆棧存儲(chǔ)電路及微控制器,用以解決現(xiàn)有微控制器中由于需通過讀或?qū)懣刂萍拇嫫骱妥x或?qū)懢彌_寄存器間接地對(duì)數(shù)據(jù)堆棧進(jìn)行操作,而使得進(jìn)棧與出棧操作執(zhí)行效率不高的缺陷。本發(fā)明提供一種數(shù)據(jù)堆棧存儲(chǔ)電路,其中,包括數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆棧控制電路;所述數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆棧控制電路相連接;所述數(shù)據(jù)堆棧存儲(chǔ)器連接于數(shù)據(jù)總線;所述數(shù)據(jù)堆??刂齐娐愤B接于控制總線;
且數(shù)據(jù)堆棧控制電路用于根據(jù)所述控制總線中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者用于根據(jù)所述控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。本發(fā)明提供一種微控制器,包括控制器,其中,還包括數(shù)據(jù)堆棧存儲(chǔ)電路;所述控制器連接于控制總線,且所述控制器用于通過分析進(jìn)棧指令的操作碼,以生成第一控制信號(hào)集合并發(fā)送至所述控制總線;或者,用于通過分析出棧指令的操作碼,以生成第二控制信號(hào)集合并發(fā)送至所述控制總線;所述數(shù)據(jù)堆棧存儲(chǔ)電路包括數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐?;所述數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐废噙B接;所述數(shù)據(jù)堆棧存儲(chǔ)器連接于數(shù)據(jù)總線;所述數(shù)據(jù)堆棧控制電路連接于所述控制總線;且數(shù)據(jù)堆??刂齐娐酚糜诟鶕?jù)所述第一控制信號(hào)集合中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者用于根據(jù)所述第二控制信號(hào)集合中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。本發(fā)明的數(shù)據(jù)堆棧存儲(chǔ)電路及微控制器,通過數(shù)據(jù)堆棧存儲(chǔ)電路所包括的數(shù)據(jù)堆??刂齐娐犯鶕?jù)控制總線中的進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者根據(jù)所控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至數(shù)據(jù)總線中的技術(shù)方案,解決了現(xiàn)有微控制器中由于需通過讀或?qū)懣刂萍拇嫫骱妥x或?qū)懢彌_寄存器間接地對(duì)數(shù)據(jù)堆棧進(jìn)行操作,而使得進(jìn)棧與出棧操作執(zhí)行效率不高的缺陷,實(shí)現(xiàn)了進(jìn)棧和出棧操作通過各自所對(duì)應(yīng)的相關(guān)指令即可完成的目的,省去了讀或?qū)懣刂萍拇嫫骷白x或?qū)懢彌_寄存器復(fù)雜的芯片構(gòu)架形式,且提高了對(duì)數(shù)據(jù)堆棧進(jìn)行進(jìn)棧與出棧操作的執(zhí)行效率。


圖1為本發(fā)明數(shù)據(jù)堆棧存儲(chǔ)電路的結(jié)構(gòu)示意圖;圖2為本發(fā)明微控制器實(shí)施例一的結(jié)構(gòu)示意圖;圖3為本發(fā)明微控制器實(shí)施例二的結(jié)構(gòu)示意圖;圖4為現(xiàn)有技術(shù)的中低端微控制器的堆棧結(jié)構(gòu)示意圖;圖5為現(xiàn)有技術(shù)的中高端微控制器的堆棧結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明中的附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行描述。圖1為本發(fā)明數(shù)據(jù)堆棧存儲(chǔ)電路的結(jié)構(gòu)示意圖。如圖1所示,本實(shí)施例的數(shù)據(jù)堆棧存儲(chǔ)電路包括數(shù)據(jù)堆棧存儲(chǔ)器101和數(shù)據(jù)堆??刂齐娐?02,該數(shù)據(jù)堆棧存儲(chǔ)器101和數(shù)據(jù)堆??刂齐娐?02相連接,其中,數(shù)據(jù)堆棧存儲(chǔ)器101連接于數(shù)據(jù)總線,數(shù)據(jù)堆??刂齐娐?02連接于控制總線,且數(shù)據(jù)堆??刂齐娐?02包括進(jìn)??刂齐娐纺K1021和出??刂齐娐纺K1022。其中,數(shù)據(jù)堆棧存儲(chǔ)器101是專用來存放數(shù)據(jù),而不是存放程序地址的; 且數(shù)據(jù)堆棧存儲(chǔ)器與程序保護(hù)棧、通用數(shù)據(jù)寄存器堆是相互獨(dú)立的,對(duì)數(shù)據(jù)堆棧存儲(chǔ)器101 的操作需通過進(jìn)棧指令(在程序語言中可標(biāo)識(shí)為PUSH指令)和出棧指令(在程序語言中可標(biāo)識(shí)為POP指令)來進(jìn)行,而不能用控制器的普通讀寫操作來對(duì)數(shù)據(jù)堆棧存儲(chǔ)器101進(jìn)行操作。在進(jìn)棧操作的過程中,數(shù)據(jù)堆棧控制電路102中的進(jìn)??刂齐娐纺K1021根據(jù)控制總線中的進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂,其中已準(zhǔn)備好壓棧的數(shù)據(jù)可以為尋址IO 口而獲得的數(shù)據(jù)、中斷操作中所需保護(hù)的數(shù)據(jù)或者尋址數(shù)據(jù)存儲(chǔ)器而獲得的數(shù)據(jù);在出棧操作的過程中,數(shù)據(jù)堆棧控制電路102中的出??刂齐娐纺K1022根據(jù)控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂彈出至數(shù)據(jù)總線中。在實(shí)際應(yīng)用中,數(shù)據(jù)堆棧存儲(chǔ)器101可為一個(gè)獨(dú)立的存儲(chǔ)器,或者為一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器的組合,或者為至少一個(gè)獨(dú)立的存儲(chǔ)器和至少一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間的組合,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器中部分存儲(chǔ)空間的組合。進(jìn)一步地,本實(shí)施例的數(shù)據(jù)堆棧存儲(chǔ)電路還包括硬件堆棧指針103,該硬件堆棧指針103連接于控制總線和數(shù)據(jù)堆棧存儲(chǔ)器101,且硬件堆棧指針103在進(jìn)??刂齐娐纺K 1021根據(jù)控制總線中的進(jìn)棧操作信號(hào)將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂后,可根據(jù)所述控制總線中的硬件堆棧指針加1信號(hào)而自行加1 ;或者在出??刂齐娐纺K1022根據(jù)控制總線中的出棧操作信號(hào)將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂彈出至數(shù)據(jù)總線后,可根據(jù)所述控制總線中的硬件堆棧指針減1信號(hào)而自行減1。再進(jìn)一步地,本實(shí)施例的數(shù)據(jù)堆棧存儲(chǔ)電路還包括溢出標(biāo)志寄存器104,該溢出標(biāo)志寄存器104連接于硬件堆棧指針103,且該溢出標(biāo)志寄存器104包括上溢標(biāo)志位1041和下溢標(biāo)志位1042 ;在進(jìn)棧操作過程中,通過比較電路將當(dāng)前的硬件堆棧指針103與上限值進(jìn)行比較以監(jiān)測(cè)硬件堆棧指針103的狀態(tài),當(dāng)該硬件堆棧指針103從最高地址加1而跳回最低地址時(shí),上溢標(biāo)志位1041自動(dòng)置1,且該上限值為數(shù)據(jù)堆棧存儲(chǔ)器101的最高地址;在出棧操作過程中,通過比較電路將當(dāng)前的硬件堆棧指針103與下限值進(jìn)行比較以監(jiān)測(cè)硬件堆棧指針103的狀態(tài),當(dāng)該硬件堆棧指針103從最低地址減1而跳回最高地址時(shí),下溢標(biāo)志位1042自動(dòng)置1,且該下限值為數(shù)據(jù)堆棧存儲(chǔ)器101的最低地址。本實(shí)施例的數(shù)據(jù)堆棧存儲(chǔ)電路,通過數(shù)據(jù)堆??刂齐娐犯鶕?jù)控制總線中的進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者根據(jù)所控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至數(shù)據(jù)總線中的技術(shù)方案,解決了現(xiàn)有微控制器中由于需通過讀或?qū)懣刂萍拇嫫骱妥x或?qū)懢彌_寄存器間接地對(duì)數(shù)據(jù)堆棧進(jìn)行操作,而使得進(jìn)棧與出棧操作執(zhí)行效率不高的缺陷,實(shí)現(xiàn)了進(jìn)棧和出棧操作通過各自所對(duì)應(yīng)的相關(guān)指令即可完成的目的,省去了讀或?qū)懣刂萍拇嫫骷白x或?qū)懢彌_寄存器復(fù)雜的芯片構(gòu)架形式,且提高了對(duì)數(shù)據(jù)堆棧進(jìn)行進(jìn)棧與出棧操作的執(zhí)行效率圖2為本發(fā)明微控制器實(shí)施例一的結(jié)構(gòu)示意圖。如圖2所示,本實(shí)施例的微控制器包括控制器201和數(shù)據(jù)堆棧存儲(chǔ)電路202,其中,該控制器201連接于控制總線,且控制器 201包括程序存儲(chǔ)器、指令寄存器、指令譯碼器和控制邏輯電路;數(shù)據(jù)堆棧存儲(chǔ)電路202包括數(shù)據(jù)堆棧存儲(chǔ)器101和數(shù)據(jù)堆??刂齐娐?02,該數(shù)據(jù)堆棧存儲(chǔ)器101和數(shù)據(jù)堆??刂齐娐?02相連接,且數(shù)據(jù)堆棧存儲(chǔ)器101連接于數(shù)據(jù)總線,數(shù)據(jù)堆棧控制電路102連接于控制總線,且數(shù)據(jù)堆棧控制電路102包括進(jìn)??刂齐娐纺K1021和出??刂齐娐纺K1022。 其中,數(shù)據(jù)堆棧存儲(chǔ)器101是專用來存放數(shù)據(jù),而不是存放程序地址的;且數(shù)據(jù)堆棧存儲(chǔ)器與程序保護(hù)棧、通用數(shù)據(jù)寄存器堆是相互獨(dú)立的,對(duì)數(shù)據(jù)堆棧存儲(chǔ)器101的操作需通過進(jìn)棧指令(在程序語言中可標(biāo)識(shí)為PUSH指令)和出棧指令(在程序語言中可標(biāo)識(shí)為POP指令)來進(jìn)行,而不能用控制器201的普通讀寫操作來對(duì)數(shù)據(jù)堆棧存儲(chǔ)器101進(jìn)行操作。進(jìn)一步地,數(shù)據(jù)堆棧存儲(chǔ)電路202還包括硬件堆棧指針103和該溢出標(biāo)志寄存器104,其中硬件堆棧指針103連接于控制總線和數(shù)據(jù)堆棧存儲(chǔ)器101,該溢出標(biāo)志寄存器 104連接于硬件堆棧指針103,且溢出標(biāo)志寄存器104包括上溢標(biāo)志位1041和下溢標(biāo)志位 1042 ;在進(jìn)棧操作過程中,控制器201的指令寄存器從程序存儲(chǔ)器讀取的進(jìn)棧指令(在程序語言中可標(biāo)識(shí)為PUSH指令),然后通過指令譯碼器對(duì)指令寄存器中進(jìn)棧指令所包括的操作碼進(jìn)行譯碼以生成第一控制信號(hào)集合,并由控制邏輯電路通過控制總線發(fā)送到相關(guān)的模塊電路以達(dá)到控制的目的,該第一控制信號(hào)集合至少包括進(jìn)棧操作信號(hào)和硬件堆棧指針加1信號(hào);數(shù)據(jù)堆??刂齐娐?02中的進(jìn)??刂齐娐纺K1021根據(jù)該進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂,其中已準(zhǔn)備好壓棧的數(shù)據(jù)可以為尋址IO 口而獲得的數(shù)據(jù)、中斷操作中所需保護(hù)的數(shù)據(jù)或者尋址數(shù)據(jù)存儲(chǔ)器而獲得的數(shù)據(jù);并且,硬件堆棧指針103在進(jìn)??刂齐娐纺K1021根據(jù)進(jìn)棧操作信號(hào)將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂后,可根據(jù)所述控制總線中的硬件堆棧指針加1信號(hào)自行加1,而指向新的棧頂;對(duì)于硬件堆棧指針103的每次加1的動(dòng)作, 都通過比較電路將當(dāng)前的硬件堆棧指針103與上限值進(jìn)行比較以監(jiān)測(cè)硬件堆棧指針103的狀態(tài),當(dāng)該硬件堆棧指針103從最高地址加1而跳回最低地址時(shí),上溢標(biāo)志位1041自動(dòng)置 1,且該上限值為數(shù)據(jù)堆棧存儲(chǔ)器101的最高地址。在出棧操作過程中,控制器201的指令寄存器從程序存儲(chǔ)器讀取的出棧指令(在程序語言中可標(biāo)識(shí)為POP指令),然后通過指令譯碼器對(duì)指令寄存器中出棧指令所包括的操作碼進(jìn)行譯碼以生成第二控制信號(hào)集合,并由控制邏輯電路通過控制總線發(fā)送到相關(guān)的模塊電路以達(dá)到控制的目的,該第二控制信號(hào)集合至少包括出棧操作信號(hào)和硬件堆棧指針減ι信號(hào);數(shù)據(jù)堆??刂齐娐?02中的出??刂齐娐纺K1022根據(jù)該出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂彈出至數(shù)據(jù)總線中,并可由第二控制信號(hào)集合中的控制信號(hào)控制相關(guān)電路模塊接收該彈出至數(shù)據(jù)總線的數(shù)據(jù);并且,硬件堆棧指針 103在出??刂齐娐纺K1022根據(jù)出棧操作信號(hào)將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂彈出至數(shù)據(jù)總線后,可根據(jù)控制總線中的硬件堆棧指針減1信號(hào)自行減1,而指向新的棧頂;對(duì)于硬件堆棧指針103的每次減1的動(dòng)作,都通過比較電路將當(dāng)前的硬件堆棧指針103與下限值進(jìn)行比較以監(jiān)測(cè)硬件堆棧指針103的狀態(tài),當(dāng)該硬件堆棧指針103從最低地址減1而跳回最高地址時(shí),下溢標(biāo)志位1042自動(dòng)置1,且該下限值為數(shù)據(jù)堆棧存儲(chǔ)器 101的最低地址。在實(shí)際應(yīng)用中,數(shù)據(jù)堆棧存儲(chǔ)器101可為一個(gè)獨(dú)立的存儲(chǔ)器,或者為一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器的組合,或者為至少一個(gè)獨(dú)立的存儲(chǔ)器和至少一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間的組合,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器中部分存儲(chǔ)空間的組合。本實(shí)施例的微控制器,通過數(shù)據(jù)堆棧存儲(chǔ)電路所包括的數(shù)據(jù)堆??刂齐娐犯鶕?jù)控制總線中的進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者根據(jù)所控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至數(shù)據(jù)總線中的技術(shù)方案,解決了現(xiàn)有微控制器中由于需通過讀或?qū)懣刂萍拇嫫骱妥x或?qū)懢彌_寄存器間接地對(duì)數(shù)據(jù)堆棧進(jìn)行操作,而使得進(jìn)棧與出棧操作執(zhí)行效率不高的缺陷,實(shí)現(xiàn)了進(jìn)棧和出棧操作通過各自所對(duì)應(yīng)的相關(guān)指令即可完成的目的,省去了讀或?qū)懣刂萍拇嫫骷白x或?qū)懢彌_寄存器復(fù)雜的芯 片構(gòu)架形式,且提高了對(duì)數(shù)據(jù)堆棧進(jìn)行進(jìn)棧與出棧操作的執(zhí)行效率。圖3為本發(fā)明微控制器實(shí)施例二的結(jié)構(gòu)示意圖。結(jié)合圖2和圖3所示,本實(shí)施例的微控制器在上述實(shí)施例的基礎(chǔ)上還包括地址選擇器203和數(shù)據(jù)存儲(chǔ)器204,其中,地址選擇器203連接于控制器201、地址總線和控制總線;數(shù)據(jù)存儲(chǔ)器204連接于控制總線、數(shù)據(jù)總線和地址總線;在本實(shí)施例中主要描述尋址數(shù)據(jù)存儲(chǔ)器204的數(shù)據(jù),并將該數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的進(jìn)棧操作過程;以及描述將數(shù)據(jù)堆棧存儲(chǔ)器101中彈出的數(shù)據(jù),保存至數(shù)據(jù)存儲(chǔ)器204中的出棧操作過程;具體地,在進(jìn)棧操作過程中,控制器201的指令寄存器從程序存儲(chǔ)器讀取的進(jìn)棧指令(在程序語言中可標(biāo)識(shí)為PUSH指令),然后通過指令譯碼器對(duì)指令寄存器中進(jìn)棧指令所包括的操作碼進(jìn)行譯碼以生成第一控制信號(hào)集合,并由控制邏輯電路通過控制總線發(fā)送到相關(guān)的模塊電路以達(dá)到控制的目的,該第一控制信號(hào)集合包括進(jìn)棧操作信號(hào)、硬件堆棧指針加1 信號(hào)、第一地址譯碼操作信號(hào)和讀數(shù)據(jù)存儲(chǔ)器信號(hào),并且控制器201的指令譯碼器將進(jìn)棧指令所包括的第一操作數(shù)發(fā)送給地址選擇器203 ;地址選擇器203根據(jù)第一地址譯碼操作信號(hào),對(duì)控制器201所發(fā)送的第一操作數(shù)進(jìn)行譯碼,以生成第一數(shù)據(jù)存儲(chǔ)器地址并發(fā)送至地址總線上;數(shù)據(jù)存儲(chǔ)器204根據(jù)讀數(shù)據(jù)存儲(chǔ)器信號(hào)和第一數(shù)據(jù)存儲(chǔ)器地址,將準(zhǔn)備壓棧的數(shù)據(jù)寫入數(shù)據(jù)總線上;且數(shù)據(jù)堆??刂齐娐?02中的進(jìn)棧控制電路模塊1021根據(jù)進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂,其中已準(zhǔn)備好壓棧的數(shù)據(jù)為尋址IO 口而獲得的數(shù)據(jù);硬件堆棧指針103則在進(jìn)??刂齐娐纺K1021 根據(jù)進(jìn)棧操作信號(hào)將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂后, 可根據(jù)所述控制總線中的硬件堆棧指針加1信號(hào)自行加1,而指向新的棧頂;對(duì)于硬件堆棧指針103的每次加1的動(dòng)作,都通過比較電路將當(dāng)前的硬件堆棧指針103與上限值進(jìn)行比較以監(jiān)測(cè)硬件堆棧指針103的狀態(tài),當(dāng)該硬件堆棧指針103從最高地址加1而跳回最低地址時(shí),上溢標(biāo)志位1041自動(dòng)置1,且該上限值為數(shù)據(jù)堆棧存儲(chǔ)器101的最高地址。在出棧操作過程中,控制器201的指令寄存器從程序存儲(chǔ)器讀取的出棧指令(在程序語言中可標(biāo)識(shí)為POP指令),然后通過指令譯碼器對(duì)指令寄存器中出棧指令所包括的操作碼進(jìn)行譯碼以生成第二控制信號(hào)集合,并由控制邏輯電路通過控制總線發(fā)送到相關(guān)的模塊電路以達(dá)到控制的目的,該第二控制信號(hào)集合包括出棧操作信號(hào)、硬件堆棧指針減1 信號(hào)、第二地址譯碼操作信號(hào)和寫數(shù)據(jù)存儲(chǔ)器信號(hào),并且控制器201的指令譯碼器將進(jìn)棧指令所包括的第二操作數(shù)發(fā)送給地址選擇器203 ;數(shù)據(jù)堆??刂齐娐?02中的出棧控制電路模塊1022根據(jù)該出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂彈出至數(shù)據(jù)總線中;地址選擇器203根據(jù)第二地址譯碼操作信號(hào),對(duì)控制器201所發(fā)送的第二操作數(shù)進(jìn)行譯碼,以生成第二數(shù)據(jù)存儲(chǔ)器地址并發(fā)送至地址總線上;數(shù)據(jù)存儲(chǔ)器204根據(jù)寫數(shù)據(jù)存儲(chǔ)器信號(hào)和第二數(shù)據(jù)存儲(chǔ)器地址,從數(shù)據(jù)總線上讀入已彈出棧的數(shù)據(jù);硬件堆棧指針103則在出??刂齐娐纺K1022根據(jù)出棧操作信號(hào)將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器101的棧頂彈出至數(shù)據(jù)總線后,可根據(jù)硬件堆棧指針減1信號(hào)自行減1,而指向新的棧頂;對(duì)于硬件堆棧指針103 的每次減1的動(dòng)作,都通過比較電路將當(dāng)前的硬件堆棧指針 103與下限值進(jìn)行比較以監(jiān)測(cè)硬件堆棧指針103的狀態(tài),當(dāng)該硬件堆棧指針103從最低地址減1而跳回最高地址時(shí),下溢標(biāo)志位1042自動(dòng)置1,且該下限值為數(shù)據(jù)堆棧存儲(chǔ)器101的最低地址。本實(shí)施例的微控制器,通過數(shù)據(jù)堆棧存儲(chǔ)電路所包括的數(shù)據(jù)堆??刂齐娐犯鶕?jù)控制總線中的進(jìn)棧操作信號(hào),將數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者根據(jù)所控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至數(shù)據(jù)總線中的技術(shù)方案,解決了現(xiàn)有微控制器中由于需通過讀或?qū)懣刂萍拇嫫骱妥x或?qū)懢彌_寄存器間接地對(duì)數(shù)據(jù)堆棧進(jìn)行操作,而使得進(jìn)棧與出棧操作執(zhí)行效率不高的缺陷,實(shí)現(xiàn)了進(jìn)棧和出棧操作通過各自所對(duì)應(yīng)的相關(guān)指令即可完成的目的,省去了讀或?qū)懣刂萍拇嫫骷白x或?qū)懢彌_寄存器復(fù)雜的芯片構(gòu)架形式,且提高了對(duì)數(shù)據(jù)堆棧進(jìn)行進(jìn)棧與出棧操作的執(zhí)行效率。最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種數(shù)據(jù)堆棧存儲(chǔ)電路,其特征在于,包括數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐?; 所述數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐废噙B接;所述數(shù)據(jù)堆棧存儲(chǔ)器連接于數(shù)據(jù)總線;所述數(shù)據(jù)堆??刂齐娐愤B接于控制總線;且數(shù)據(jù)堆棧控制電路用于根據(jù)所述控制總線中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者用于根據(jù)所述控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)堆棧存儲(chǔ)電路,其特征在于,所述數(shù)據(jù)堆棧存儲(chǔ)器為一個(gè)獨(dú)立的存儲(chǔ)器,或者為一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器的組合,或者為至少一個(gè)獨(dú)立的存儲(chǔ)器和至少一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間的組合,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器中部分存儲(chǔ)空間的組合。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)堆棧存儲(chǔ)電路,其特征在于,所述數(shù)據(jù)堆??刂齐娐钒ㄟM(jìn)??刂齐娐纺K和出棧控制電路模塊;所述進(jìn)??刂齐娐纺K用于根據(jù)所述控制總線中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂;所述出??刂齐娐纺K用于根據(jù)所述控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)堆棧存儲(chǔ)電路,其特征在于,還包括硬件堆棧指針,所述硬件堆棧指針連接于所述控制總線和所述數(shù)據(jù)堆棧存儲(chǔ)器;所述硬件堆棧指針用于在所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)被壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂后,根據(jù)所述控制總線中的硬件堆棧指針加1信號(hào)而自行加1 ;或者在已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線后,根據(jù)所述控制總線中的硬件堆棧指針減1信號(hào)而自行減1。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)堆棧存儲(chǔ)電路,其特征在于,還包括溢出標(biāo)志寄存器,所述溢出標(biāo)志寄存器連接于所述硬件堆棧指針,且所述溢出標(biāo)志寄存器包括上溢標(biāo)志位和下溢標(biāo)志位。
6.一種微控制器,包括控制器,其特征在于,還包括數(shù)據(jù)堆棧存儲(chǔ)電路;所述控制器連接于控制總線,且所述控制器用于通過分析進(jìn)棧指令的操作碼,以生成第一控制信號(hào)集合并發(fā)送至所述控制總線;或者,用于通過分析出棧指令的操作碼,以生成第二控制信號(hào)集合并發(fā)送至所述控制總線;所述數(shù)據(jù)堆棧存儲(chǔ)電路包括數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆棧控制電路;所述數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐废噙B接;所述數(shù)據(jù)堆棧存儲(chǔ)器連接于數(shù)據(jù)總線;所述數(shù)據(jù)堆棧控制電路連接于所述控制總線;且數(shù)據(jù)堆棧控制電路用于根據(jù)所述第一控制信號(hào)集合中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者用于根據(jù)所述第二控制信號(hào)集合中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。
7.根據(jù)權(quán)利要求6所述的微控制器,其特征在于,還包括地址選擇器,所述地址選擇器連接于所述控制器、所述地址總線和所述控制總線;所述地址選擇器用于根據(jù)所述第一控制信號(hào)集合中的第一地址譯碼操作信號(hào),對(duì)所述控制器所發(fā)送的進(jìn)棧指令中的第一操作數(shù)進(jìn)行譯碼,以生成第一數(shù)據(jù)存儲(chǔ)器地址并發(fā)送至所述地址總線上;或者用于根據(jù)所述第二控制信號(hào)集合中的第二地址譯碼操作信號(hào),對(duì)所述控制器所發(fā)送的出棧指令中的第二操作數(shù)進(jìn)行譯碼,以生成第二數(shù)據(jù)存儲(chǔ)器地址并發(fā)送至所述地址總線上。
8.根據(jù)權(quán)利要求7所述的微控制器,其特征在于,還包括數(shù)據(jù)存儲(chǔ)器,所述數(shù)據(jù)存儲(chǔ)器連接于所述控制總線、所述數(shù)據(jù)總線和所述地址總線;所述數(shù)據(jù)存儲(chǔ)器用于根據(jù)所述第一控制信號(hào)集合中的讀數(shù)據(jù)存儲(chǔ)器信號(hào)和第一數(shù)據(jù)存儲(chǔ)器地址,將準(zhǔn)備壓棧的數(shù)據(jù)寫入所述數(shù)據(jù)總線上;或者用于根據(jù)所述第二控制信號(hào)集合中的寫數(shù)據(jù)存儲(chǔ)器信號(hào)和第二數(shù)據(jù)存儲(chǔ)器地址, 從所述數(shù)據(jù)總線上讀入已彈出棧的數(shù)據(jù)。
9.根據(jù)權(quán)利要求6所述的微控制器,其特征在于,所述數(shù)據(jù)堆??刂齐娐钒ㄟM(jìn)棧控制電路模塊和出??刂齐娐纺K;所述進(jìn)??刂齐娐纺K用于根據(jù)所述第一控制信號(hào)集合中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂;所述出棧控制電路模塊用于根據(jù)所述第二控制信號(hào)集合中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。
10.根據(jù)權(quán)利要求6所述的微控制器,其特征在于,還包括硬件堆棧指針,所述硬件堆棧指針連接于所述控制總線和所述數(shù)據(jù)堆棧存儲(chǔ)器;所述硬件堆棧指針用于在所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)被壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂后,根據(jù)所述控制總線中的硬件堆棧指針加1信號(hào)而自行加1 ;或者在已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線后,根據(jù)所述控制總線中的硬件堆棧指針減1信號(hào)而自行減1。
11.根據(jù)權(quán)利要求10所述的微控制器,其特征在于,還包括溢出標(biāo)志寄存器,所述溢出標(biāo)志寄存器連接于所述硬件堆棧指針,且所述溢出標(biāo)志寄存器包括上溢標(biāo)志位和下溢標(biāo)志位。
12.根據(jù)權(quán)利要求6所述的微控制器,其特征在于,所述數(shù)據(jù)堆棧存儲(chǔ)器為一個(gè)獨(dú)立的存儲(chǔ)器,或者為一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器的組合, 或者為至少一個(gè)獨(dú)立的存儲(chǔ)器和至少一個(gè)獨(dú)立的存儲(chǔ)器的部分存儲(chǔ)空間的組合,或者為至少兩個(gè)獨(dú)立的存儲(chǔ)器中部分存儲(chǔ)空間的組合。
全文摘要
本發(fā)明提供一種數(shù)據(jù)堆棧存儲(chǔ)電路及微控制器,該數(shù)據(jù)堆棧存儲(chǔ)電路包括數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐?;所述數(shù)據(jù)堆棧存儲(chǔ)器和數(shù)據(jù)堆??刂齐娐废噙B接;所述數(shù)據(jù)堆棧存儲(chǔ)器連接于數(shù)據(jù)總線;所述數(shù)據(jù)堆??刂齐娐愤B接于控制總線;且數(shù)據(jù)堆棧控制電路用于根據(jù)所述控制總線中的進(jìn)棧操作信號(hào),將所述數(shù)據(jù)總線中已準(zhǔn)備好壓棧的數(shù)據(jù)壓入所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂,或者用于根據(jù)所述控制總線中的出棧操作信號(hào),將已準(zhǔn)備好彈棧的數(shù)據(jù)從所述數(shù)據(jù)堆棧存儲(chǔ)器的棧頂彈出至所述數(shù)據(jù)總線中。本發(fā)明實(shí)現(xiàn)了進(jìn)棧和出棧操作通過指令可完成的目的,提高了對(duì)數(shù)據(jù)堆棧進(jìn)行進(jìn)棧與出棧操作的執(zhí)行效率。
文檔編號(hào)G06F12/06GK102193868SQ20101012319
公開日2011年9月21日 申請(qǐng)日期2010年3月10日 優(yōu)先權(quán)日2010年3月10日
發(fā)明者史衛(wèi)東, 岳衛(wèi)杰, 潘松, 許云峰 申請(qǐng)人:上海海爾集成電路有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1