欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

雙算術(shù)邏輯單元精簡指令集8位微控制器的制作方法

文檔序號:6533845閱讀:207來源:國知局
專利名稱:雙算術(shù)邏輯單元精簡指令集8位微控制器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及通用微控制器(MCU)結(jié)構(gòu)技術(shù)領(lǐng)域,特別是涉及雙算術(shù)邏輯單元(ALU)精簡指令集(RISC)的8位微控制器。適用于個人數(shù)字終端PDA,電子書,電子詞典,手寫板,MP3,工業(yè)控制等領(lǐng)域。
背景技術(shù)
隨著半導(dǎo)體技術(shù)的發(fā)展,集成電路的規(guī)模越來越大,集成度越來越高,微控制器和它的相關(guān)存儲器如閃存(Flash Memory)、電可擦除存儲器(E2PROM)、靜態(tài)隨機(jī)存儲器(SRAM)等以及外設(shè)邏輯控制器已經(jīng)可以大量集成在同一顆芯片上。而RISC的設(shè)計結(jié)構(gòu)和強(qiáng)大的電子設(shè)計自動化(EDA)方法使得設(shè)計人員的工作更加有效,程序編寫更趨容易,從而進(jìn)一步推動了微控制器成本的下降和集成度的提高。
由于采用了RISC體系構(gòu)架,程序存儲空間和數(shù)據(jù)存儲空間分離,微控制器的編程比以前更加方便,運(yùn)算速度加快,效率增高,在工藝技術(shù)高度發(fā)展,集成度已經(jīng)不成問題的今天,微控制器的應(yīng)用也就更加廣泛,現(xiàn)有RISC構(gòu)架的微控制器已經(jīng)大有取代原來復(fù)雜指令集控制器(CISC)之勢。RISC體系近年來之所以大受歡迎,可以歸因于下面幾個特點(diǎn)1)大多數(shù)指令能夠在同一時鐘周期中執(zhí)行完畢;2)指令的解碼通常是固定的,相比微編碼,執(zhí)行速度極大提高;3)指令格式是固定的,便于解碼;4)數(shù)據(jù)路徑流水化,指令能夠并行處理,提供了高度的數(shù)據(jù)同時處理能力;5)采用哈佛總線結(jié)構(gòu),程序空間、數(shù)據(jù)空間分開,結(jié)構(gòu)清晰,易學(xué)好用。RISC結(jié)構(gòu)最引人矚目的應(yīng)用是PowerPC,它是由Apple,IBM,Motorola幾家公司聯(lián)合研制的。而8位MCU的典型代表則是Microchip technology的PIC16C5X系列微控制器。該微控制器使用的是哈佛雙總線結(jié)構(gòu),在這種結(jié)構(gòu)中,數(shù)據(jù)和程序指令有其獨(dú)立的存儲器和總線。PIC16C5X使用的是一級流水線;當(dāng)一個指令正在執(zhí)行的時候,下一個指令會從程序存儲器中提前讀取出來。由于RAM可兼作寄存器,所以就沒有真正意義上的內(nèi)部寄存器。因?yàn)樗械拇鎯ζ鞫伎梢允且粋€靜態(tài)存儲器(SRAM),所以寄存器的操作就非常精簡了。
技術(shù)的發(fā)展使得人們對生活的舒適度追求更高。在很多應(yīng)用場合上述這些傳統(tǒng)微控制器的性能已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足人們對其控制性能的應(yīng)用需要,其主要矛盾集中在兩個方面一是微控制器的運(yùn)算性能差,不能滿足數(shù)據(jù)處理的要求;二是存儲區(qū)空間小,不能滿足編程的需要。因此在一些情況下,迫使人們不得不選用價格昂貴的16位、32位處理器,而這些處理器的高成本和高功耗等代價,常常會使實(shí)施項(xiàng)目的計劃流產(chǎn)。因此,8位微控制器必須要突破數(shù)據(jù)存儲空間不足、數(shù)據(jù)處理能力較弱的缺點(diǎn),給軟件設(shè)計師提供充足的程序空間,數(shù)據(jù)空間,和足夠強(qiáng)大的數(shù)據(jù)處理能力,以滿足大多數(shù)應(yīng)用的需要。另一方面,毫無疑問,在設(shè)計微控制器時,軟件所起的作用是舉足輕重的,微控制器的應(yīng)用設(shè)計是直接與軟件程序員和硬件工程師之間的界面密切相關(guān)的,即微控制器的指令集作為軟硬件工程師之間的橋梁,它設(shè)計的成功與否關(guān)乎微控制器的成敗。指令集的設(shè)計必須完備、高效,使得絕大多數(shù)運(yùn)算都可以執(zhí)行,經(jīng)常使用的功能應(yīng)該用幾個相對比較少的指令來完成。這些應(yīng)用需求使得人們希望設(shè)計出一種微控制器,以給應(yīng)用軟件研發(fā)者提供完整而又高效的指令集,并且有較高的數(shù)據(jù)處理速度和存儲空間。
發(fā)明的內(nèi)容本發(fā)明的目的在于克服現(xiàn)有8位微控制器存儲空間小、數(shù)據(jù)處理速度低的不足,提供一種雙算術(shù)邏輯單元RISC結(jié)構(gòu)的8位微控制器,以全面擴(kuò)展8位微控制器的數(shù)據(jù)空間,并且為8位微控制器增加部分16位算術(shù)指令處理能力和單周期比特操作能力,提高8位微控制器的運(yùn)算性能,形成適用于PDA,電子書,電子字典、MP3等大數(shù)據(jù)量,高運(yùn)算速度的應(yīng)用需求的高性能嵌入式微處理器。
實(shí)現(xiàn)本發(fā)明目的的關(guān)鍵技術(shù)是在原有8位RISC結(jié)構(gòu)的通用寄存器堆和通用算術(shù)邏輯單元ALU-1中,并列連接多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2,并分別在原有8位RISC結(jié)構(gòu)的指令譯碼器中設(shè)置有比特定位器和比特操作判斷器,在通用算術(shù)邏輯單元ALU-1中設(shè)置有比特運(yùn)算器。
整個控制器包括程序存儲器,用于存儲程序,通過程序指針來訪問,把程序指針指定的程序存儲器地址的指令讀出,送到指令寄存器,該程序存儲器可以是Flash、E2PROM、ROM等;程序計數(shù)器,即程序指針,用于指出將要執(zhí)行的指令在程序存儲器中存放的物理地址,它由指令譯碼器譯出信號控制在時鐘上升沿時進(jìn)行偏移運(yùn)算,完成順序加1或者跳轉(zhuǎn)到指定的位置的操作,其輸出為當(dāng)前要讀出的指令地址,該地址作為程序存儲器的地址指針,控制程序存儲器的數(shù)據(jù)輸出;指令寄存器,用于暫存從程序存儲器取得的指令,其輸出送到指令譯碼器進(jìn)行譯碼;指令譯碼器,用于將寄存在指令寄存器的指令進(jìn)行譯碼解釋,生成相應(yīng)的控制信號,控制寄存器堆、算術(shù)邏輯單元ALU的動作以及數(shù)據(jù)總線的數(shù)據(jù)流向、地址總線的選取、程序計數(shù)器的跳轉(zhuǎn),堆棧指針的移動等;比特定位器,用于對比特操作指令作比特定位運(yùn)算,確定比特位置;比特操作判斷器,用于判定當(dāng)前指令譯碼器中的指令是否是比特操作指令,確定是否把比特操作使能信號置1;堆棧指針,用于程序轉(zhuǎn)移時,保存/恢復(fù)程序指針,即在調(diào)用子程序時,保存子程序的入口地址,指定程序指針在數(shù)據(jù)存儲區(qū)中保存的地址,在保存程序指針后,堆棧指針將指向下一個堆棧位置;在子程序返回時,從指定位置恢復(fù)原來程序指針的值,返回子程序的入口地址。程序在開始的時候,需要建立堆棧,即在數(shù)據(jù)空間指定一定的地址范圍,該堆棧指針在堆棧建立后,指向堆棧底部位置,在工作狀態(tài)時當(dāng)每次進(jìn)棧操作,則堆棧指針加1,當(dāng)每次出棧操作,則堆棧指針減1;靜態(tài)隨機(jī)存儲器SRAM,用于存儲運(yùn)算過程中的數(shù)據(jù),通過多功能寄存器堆中指定的地址總線訪問,具有8位數(shù)據(jù)總線作為數(shù)據(jù)輸入輸出接口;通用寄存器堆,用作累加器,為通用算術(shù)邏輯單元ALU-1提供操作數(shù)并保存運(yùn)算結(jié)果;通用算術(shù)邏輯單元ALU-1,完成8位算術(shù)邏輯運(yùn)算和比特操作運(yùn)算;通用算術(shù)邏輯單元ALU-1中設(shè)置有比特運(yùn)算器,用于完成比特操作,即執(zhí)行比特讀出BTRAN、比特置位BSET、比特清零BCLR和比特改寫B(tài)CHN等指令;比特運(yùn)算器,用于完成比特操作,執(zhí)行比特讀出BTRAN、比特置位BSET、比特清零BCLR和比特改寫B(tài)CHN等指令;多功能寄存器堆,用于完成8位數(shù)據(jù)累加,擴(kuò)展帶寬數(shù)據(jù)累加,數(shù)據(jù)地址指針等功能,為多功能算術(shù)邏輯單元ALU-2提供操作數(shù)并保存運(yùn)算結(jié)果;多功能算術(shù)邏輯單元ALU-2,用于進(jìn)行擴(kuò)展帶寬的算術(shù)邏輯運(yùn)算和地址計算;狀態(tài)寄存器,用于對算術(shù)邏輯單元的運(yùn)算結(jié)果作出標(biāo)記;該標(biāo)記由中斷使能位I,符號位S,負(fù)數(shù)標(biāo)志N,零標(biāo)志Z,溢出標(biāo)志V,和進(jìn)位標(biāo)志C組成;狀態(tài)寄存器的內(nèi)容由ALU計算結(jié)果確定,也可以通過地址總線進(jìn)行寄存器訪問,由8位數(shù)據(jù)總線寫入或者讀出;時鐘單元,生成微控制器所需要的時鐘,主要為流水線提供流水相位時鐘、異常復(fù)位的看門狗(WDR)時鐘、節(jié)能模式的IDLE、SLEEP時鐘以及測試掃描時鐘;其他外圍接口,根據(jù)需要,配置的外圍接口可以包括定時器/計數(shù)器、模數(shù)/數(shù)模轉(zhuǎn)換、中斷單元,通用異步接收發(fā)送器(UART),比較器,串行總線(I2C),串行外設(shè)接口(SPI)及通用輸入輸出接口(GPIO)等。
上述多功能寄存器堆的構(gòu)成為雙口RAM,具有兩個輸出端口和兩個輸入端口;所述的兩個輸出端口地址分別為源操作數(shù)的地址和目的操作數(shù)的地址,由指令譯碼器控制,從指令譯碼器、地址寄存器中選擇;兩個輸出端口的輸出數(shù)據(jù)送到多功能算術(shù)邏輯單元ALU-2的輸入端口,作為多功能算術(shù)邏輯單元ALU-2的輸入選項(xiàng),數(shù)據(jù)帶寬等于擴(kuò)展帶寬。所述的兩個輸入端口,一個為8位帶寬輸入端口,一個為擴(kuò)展帶寬輸入端口,8位輸入端口的地址由指令譯碼器確定,擴(kuò)展帶寬端口的地址也由指令譯碼器確定;兩個端口的輸入數(shù)據(jù),8位帶寬輸入端口連接到8位數(shù)據(jù)總線,該多功能寄存器堆通過該8位數(shù)據(jù)端口通過8位數(shù)據(jù)總線完成外部訪問;擴(kuò)展帶寬輸入連接多功能算術(shù)邏輯單元ALU-2的輸出端口。多功能寄存器堆的工作模式有三種,一是單字節(jié)工作模式,以單字節(jié)為單元訪問,完成通用寄存器堆功能和多功能寄存器堆的外部讀寫;二是多字節(jié)工作模式,以多字節(jié)為單元訪問,用于配合多功能算術(shù)邏輯單元ALU-2完成多字節(jié)擴(kuò)展帶寬算術(shù)邏輯運(yùn)算;三是計數(shù)器工作模式,用作地址寄存器,完成地址指針運(yùn)算。多功能寄存器堆被用作地址寄存器功能時,能夠在指令執(zhí)行時,不僅可以自動根據(jù)地址帶寬的設(shè)定完成地址的運(yùn)算,而且可以和外加的分頁寄存器配合無限擴(kuò)展數(shù)據(jù)尋址空間;上述多功能算術(shù)邏輯單元ALU-2,在進(jìn)行擴(kuò)展帶寬算術(shù)邏輯運(yùn)算時,有兩個操作數(shù),一個是作為多功能寄存器堆輸出的目的操作數(shù),另一個是由指令譯碼器從多功能寄存器堆、常數(shù)(0x0,0x1,0xFF)、8位數(shù)據(jù)總線中選取的源操作數(shù),由該兩個操作數(shù)運(yùn)算的結(jié)果輸出到多功能寄存器堆。該算術(shù)邏輯單元可以在一個時鐘周期內(nèi)完成16位、24位、32位等擴(kuò)展后帶寬的算術(shù)邏輯運(yùn)算,提高數(shù)據(jù)通訊帶寬和多字節(jié)數(shù)據(jù)處理能力;進(jìn)行地址運(yùn)算,是在指令譯碼器譯碼的指令為靜態(tài)隨機(jī)存儲器SRAM的訪問指令時,由指令譯碼器譯碼的控制信號首先將算術(shù)邏輯單元ALU-2,配置成地址運(yùn)算器,將多功能寄存器堆配置為地址寄存器,然后在算術(shù)邏輯單元ALU-2執(zhí)行該訪問指令時,自動完成地址寄存器內(nèi)容的加1、遞1或者加減指令譯碼器指定的數(shù)值運(yùn)算,并將運(yùn)算結(jié)果寫回所述的地址寄存器。
上述比特定位器對比特操作指令作比特定位運(yùn)算,首先將比特操作指令中包含的比特位置信息進(jìn)行譯碼,用唯一的0或1標(biāo)定需要進(jìn)行比特操作的比特位置,然后通過比特操作使能信號控制將該比特位置信息加載到數(shù)據(jù)總線。
上述比特運(yùn)算器完成比特操作是通過指令譯碼器生成控制信號,確定出要進(jìn)行操作的寄存器和加載到數(shù)據(jù)總線的比特位置,作為通用算術(shù)邏輯單元ALU-1的兩個操作數(shù),并且控制算術(shù)邏輯單元ALU-1對該兩個操作數(shù)進(jìn)行邏輯運(yùn)算完成比特操作。
上述多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2,通過數(shù)據(jù)總線與通用寄存器堆和通用算術(shù)邏輯單元ALU-1連接。
本發(fā)明工作過程如下在系統(tǒng)復(fù)位以后,程序計數(shù)器歸零,程序指針指向程序存儲器的零地址,從零地址開始讀取指令;程序存儲器按照程序計數(shù)器指出的地址把要執(zhí)行的程序指令讀出來并送給指令寄存器,同時,程序計數(shù)器進(jìn)行計數(shù),指向下一條指令;指令寄存器在每個時鐘周期的上升沿,從程序總線讀取指令,送給指令譯碼器;指令譯碼器對指令進(jìn)行譯碼,確定要進(jìn)行的操作,生成控制信號,控制寄存器堆和算術(shù)邏輯單元的動作;寄存器堆包括通用寄存器堆和多功能寄存器堆,充當(dāng)累加器,用來給算術(shù)邏輯單元提供操作數(shù)并且保存其運(yùn)算結(jié)果;算術(shù)邏輯單元,包括通用算術(shù)邏輯單元ALU-1和多功能算術(shù)邏輯單元ALU-2,根據(jù)指令譯碼器產(chǎn)生的控制信號,選取操作數(shù),進(jìn)行相應(yīng)運(yùn)算,并影響狀態(tài)寄存器的狀態(tài)位,算術(shù)邏輯單元可以完成通常的算術(shù)運(yùn)算和邏輯運(yùn)算,也能夠完成寄存器的比特操作,以及數(shù)據(jù)從存儲器的讀出和寫入和作為程序計數(shù)器的通道,把程序計數(shù)器的內(nèi)容通過算術(shù)邏輯單元分次傳送到8位數(shù)據(jù)總線,保存到數(shù)據(jù)存儲器用于子程序的調(diào)用,或者傳遞到外部端口,用于程序的監(jiān)控與調(diào)試;在指令譯碼器進(jìn)行譯碼,算術(shù)邏輯單元進(jìn)行運(yùn)算的同時,更新后的程序計數(shù)器指定的指令被讀入指令寄存器,準(zhǔn)備下一次的指令執(zhí)行周期,如此形成了程序的執(zhí)行。
本發(fā)明由于采用雙算術(shù)邏輯單元RISC結(jié)構(gòu),可在傳統(tǒng)的中央處理器CPU構(gòu)架中嵌入16位,甚至24位、32位的一些算術(shù)邏輯操作,滿足了音頻等特殊的應(yīng)用需求,提高了系統(tǒng)的運(yùn)算能力和指令執(zhí)行速度,使16位運(yùn)算指令的執(zhí)行速度達(dá)到了1.0 IPC,同時極大的擴(kuò)展了數(shù)據(jù)空間,如表1所示。
表1 本發(fā)明與現(xiàn)有常見8位微控制器性能比較如下


圖1是本發(fā)明的整體結(jié)構(gòu)框2是本發(fā)明多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2分別在數(shù)據(jù)帶寬擴(kuò)展為8位,16位,32位時的結(jié)構(gòu)3(a)是本發(fā)明用作8位地址寄存器的多功能寄存器堆和用作8位地址運(yùn)算的多功能算術(shù)邏輯單元ALU-2耦合生成8位頁內(nèi)地址總線,并和分頁寄存器組合生成地址總線的結(jié)構(gòu)3(b)是本發(fā)明用作16位地址寄存器的多功能寄存器堆和用作16位地址運(yùn)算的多功能算術(shù)邏輯單元ALU-2耦合生成16位頁內(nèi)地址總線,并和分頁寄存器組合生成地址總線的結(jié)構(gòu)3(c)是本發(fā)明用作32位地址寄存器的多功能寄存器堆和用作8位地址運(yùn)算的多功能算術(shù)邏輯單元ALU-2耦合生成32位頁內(nèi)地址總線,并和分頁寄存器組合生成地址總線的結(jié)構(gòu)4是本發(fā)明指令譯碼器結(jié)構(gòu)5是本發(fā)明程序計數(shù)器的結(jié)構(gòu)6是本發(fā)明的應(yīng)用實(shí)例XD0308-E的結(jié)構(gòu)框7是現(xiàn)有RISC結(jié)構(gòu)微控制器的結(jié)構(gòu)框圖具體實(shí)施方式
以下參照附圖對本發(fā)明作進(jìn)一步詳細(xì)描述如圖1所示,本發(fā)明是一個8位RISC結(jié)構(gòu)的雙算術(shù)邏輯單元微控制器,具有8位數(shù)據(jù)總線,16位程序總線,數(shù)據(jù)訪問空間理論上可以不受限制,程序訪問空間可達(dá)16MB以上。該控制器包括程序總線、程序存儲器、程序指針、堆棧指針、靜態(tài)隨機(jī)存儲器SRAM、通用寄存器堆、通用算術(shù)邏輯單元ALU-1、多功能寄存器堆、多功能算術(shù)邏輯單元ALU-2、狀態(tài)寄存器、指令譯碼器,數(shù)據(jù)總線、地址總線和定時器、比較器、通用異步收發(fā)器(UART)、通用輸入輸出接口等其它接口,其中8位數(shù)據(jù)總線分別連接通用寄存器堆、多功能寄存器堆、通用算術(shù)邏輯單元ALU-1、多功能算術(shù)邏輯單元ALU-2、狀態(tài)寄存器、SRAM等部件,該8位數(shù)據(jù)總線是微控制器的數(shù)據(jù)路徑核心。本發(fā)明就是以8位數(shù)據(jù)總線為通道展開的,發(fā)明要點(diǎn)包括能進(jìn)行比特操作的通用算術(shù)邏輯單元、多功能算術(shù)邏輯單元、通用寄存器堆、多功能寄存器堆、具有比特定位功能的指令譯碼器,堆棧嵌套技術(shù),程序計數(shù)器到數(shù)據(jù)端口的通道等。其中
程序計數(shù)器單元,負(fù)責(zé)程序存儲器內(nèi)指令的尋址,它的輸出為程序指針,在系統(tǒng)加電啟動的時候,程序指針指向程序存儲器零地址,在程序執(zhí)行過程中,每讀取一條指令,程序指針加1。當(dāng)子程序調(diào)用時,程序計數(shù)器的內(nèi)容通過數(shù)據(jù)總線被保存在堆棧指針指定的數(shù)據(jù)存儲空間。
程序存儲器,用于保存程序指令,在程序?qū)懭胪瓿梢院?,程序存儲器處于只讀狀態(tài),輸入為程序指針,連接到程序存儲器的地址總線,負(fù)責(zé)程序空間的尋址;輸出為需要執(zhí)行的當(dāng)前指令,連接到16位程序總線。
指令寄存器,按照程序指針指定的地址,指令從程序存儲器中輸出以后,輸入到指令寄存器暫存,程序指針釋放,程序計數(shù)器完成加1計數(shù),指向下一條指令,而指令寄存器中暫存的當(dāng)前指令輸出到指令譯碼器進(jìn)行譯碼。
指令譯碼器,包括通用指令譯碼器、比特定位器和比特操作判斷器,負(fù)責(zé)讀取并解釋當(dāng)前指令寄存器中暫存的指令,生成相應(yīng)的控制信號,控制寄存器堆、算術(shù)邏輯單元ALU的動作以及數(shù)據(jù)總線的數(shù)據(jù)流向、地址總線的選取、程序計數(shù)器的跳轉(zhuǎn),堆棧指針的移動等。當(dāng)從指令寄存器讀取的指令為非比特操作指令時,通用指令譯碼器譯碼比特操作無關(guān)的通用控制信號,比特控制信號無效,比特操作使能信號置0,由通用控制信號作為控制信號控制微處理器的動作;當(dāng)從指令寄存器讀取的指令為比特操作指令時,通用指令譯碼器譯碼相關(guān)的通用控制信號,比特定位器對比特操作指令作比特定位運(yùn)算,首先將比特操作指令中包含的比特位置信息進(jìn)行譯碼,用唯一的0或1標(biāo)定需要進(jìn)行比特操作的比特位置,然后通過比特操作使能信號控制將該比特位置信息加載到數(shù)據(jù)總線,并生成比特控制信號;比特操作判斷器判定當(dāng)前指令譯碼器中的指令是否是比特操作指令,確定是否把比特操作使能信號置1,由通用控制信號、比特控制信號、比特操作使能信號組合成控制信號,確定出要進(jìn)行操作的寄存器和加載到數(shù)據(jù)總線的比特位置,作為通用算術(shù)邏輯單元ALU-1的兩個操作數(shù),并且控制算術(shù)邏輯單元ALU-1對該兩個操作數(shù)進(jìn)行邏輯運(yùn)算完成比特操作。
寄存器堆,指令譯碼器根據(jù)指令生成的控制信號決定寄存器堆的工作狀態(tài)。寄存器堆由通用寄存器堆和多功能寄存器堆組成,在控制信號的控制下,寄存器堆負(fù)責(zé)給算術(shù)邏輯單元ALU提供數(shù)據(jù)并保存算術(shù)邏輯單元的運(yùn)算結(jié)果。
通用寄存器堆的構(gòu)成為由8位寄存器構(gòu)成的8位數(shù)據(jù)帶寬的雙口RAM,具有兩個輸出端口和一個輸入端口,執(zhí)行的動作由指令譯碼器決定;兩個輸出端口地址分別為源操作數(shù)的地址和目的操作數(shù)的地址,兩個輸出端口的輸出數(shù)據(jù)送到通用算術(shù)邏輯單元ALU-1的兩個輸入端口,作為通用算術(shù)邏輯單元ALU-1的輸入選項(xiàng);其輸入端口連接到8位數(shù)據(jù)總線,輸入地址由指令譯碼器確定;在工作狀態(tài),通用寄存器堆的輸入輸出地址和輸入數(shù)據(jù)由指令寄存器中寄存的指令經(jīng)過譯碼生成控制信號確定。
多功能寄存器堆的構(gòu)成為雙口RAM,具有兩個輸出端口和兩個輸入端口;兩個輸出端口地址分別為源操作數(shù)的地址和目的操作數(shù)的地址,由控制信號從指令譯碼器、地址寄存器中選擇;兩個輸出端口的輸出數(shù)據(jù)送到多功能算術(shù)邏輯單元ALU-2的輸入端口,作為多功能算術(shù)邏輯單元ALU-2的輸入選項(xiàng),數(shù)據(jù)帶寬等于擴(kuò)展帶寬。兩個輸入端口,一個為8位帶寬數(shù)據(jù)輸入端口,連接到8位數(shù)據(jù)總線,其輸入地址由指令譯碼器確定,該多功能寄存器堆由該8位數(shù)據(jù)端口通過8位數(shù)據(jù)總線完成外部訪問;一個為擴(kuò)展帶寬數(shù)據(jù)輸入端口,連接多功能算術(shù)邏輯單元ALU-2的輸出,其輸入地址由指令譯碼器確定。在工作狀態(tài),多功能寄存器堆有三種工作模式,一是單字節(jié)工作模式,以單字節(jié)為單元訪問,執(zhí)行通用8位算術(shù)邏輯指令,此時多功能寄存器堆等同通用寄存器堆功能,或者執(zhí)行多功能寄存器堆存取訪問,以字節(jié)形式完成多功能寄存器堆的對外部8位數(shù)據(jù)總線的讀寫,此工作模式為缺省工作模式;二是多字節(jié)工作模式,以多字節(jié)為單元訪問,配合多功能算術(shù)邏輯單元ALU-2執(zhí)行多字節(jié)擴(kuò)展帶寬算術(shù)邏輯運(yùn)算指令,一個周期完成多字節(jié)算術(shù)邏輯操作,并回寫到寄存器,此時多功能寄存器堆和多功能算術(shù)邏輯單元內(nèi)部耦合數(shù)據(jù)總線等于擴(kuò)展數(shù)據(jù)多字節(jié)寬度。當(dāng)指令寄存器中緩存的指令為擴(kuò)展帶寬算術(shù)邏輯運(yùn)算指令時,指令譯碼器控制多功能寄存器堆進(jìn)入多字節(jié)工作模式,多功能寄存器堆內(nèi)的寄存器以一定數(shù)目連續(xù)的寄存器為組織單元,以多字節(jié)為單元訪問,其地址為跳躍地址,跳躍的跨度由指令譯碼確定,如擴(kuò)展到16位帶寬時,其地址由指令譯碼器提供,為0x00,0x02,…,擴(kuò)展到32位帶寬時,其地址為0x00,0x04,…,多功能寄存器堆和多功能算術(shù)邏輯單元內(nèi)部耦合的數(shù)據(jù)帶寬相應(yīng)擴(kuò)展為該多字節(jié)對應(yīng)的帶寬;三是計數(shù)器工作模式,用作地址寄存器,完成地址指針運(yùn)算,地址寄存器根據(jù)需要可以設(shè)置成8位,16位,32位,……,用于完成寄存器尋址、相對尋址、絕對尋址等大數(shù)據(jù)空間的尋址方式。當(dāng)指令寄存器中緩存的指令為靜態(tài)隨機(jī)存儲器SRAM的訪問指令時,指令譯碼器控制多功能寄存器堆進(jìn)入計數(shù)器工作模式,多功能寄存器堆用作地址寄存器功能,在指令執(zhí)行時,多功能寄存器堆根據(jù)指令譯碼的控制信號選擇控制地址寄存器輸出,傳送到多功能算術(shù)邏輯單元ALU-2,并在該指令執(zhí)行周期結(jié)束時保存多功能算術(shù)邏輯單元ALU-2對地址進(jìn)行自動運(yùn)算的結(jié)果。多功能寄存器堆用作地址寄存器功能時,相應(yīng)指定的寄存器成為地址寄存器,可以設(shè)置為三組,由指令譯碼控制信號選擇其中一組地址寄存器輸出到多功能算術(shù)邏輯單元,完成自動運(yùn)算后,由多功能算術(shù)邏輯單元輸出,稱為頁內(nèi)地址總線。頁內(nèi)地址總線可以和外加的分頁寄存器配合,分頁寄存器提供地址總線的高位部分,完成頁面尋址,頁內(nèi)地址總線構(gòu)成地址總線的低位部分,完成頁內(nèi)尋址,分頁寄存器和地址寄存器兩部分合并形成地址總線無限擴(kuò)展數(shù)據(jù)尋址空間。
算術(shù)邏輯單元,指令譯碼器根據(jù)指令生成的控制信號還決定算術(shù)邏輯單元的工作狀態(tài)和操作數(shù)的選擇。算術(shù)邏輯單元分為8位通用算術(shù)邏輯單元ALU-1和多功能算術(shù)邏輯單元ALU-2,它們分別相應(yīng)的和通用寄存器堆、多功能寄存器堆耦合使用,完成數(shù)據(jù)的算術(shù)、邏輯運(yùn)算和比特運(yùn)算,微控制器指令集的區(qū)別主要由該部分體現(xiàn),指令譯碼器根據(jù)指令代碼譯出不同的控制信號,控制算術(shù)邏輯單元進(jìn)行不同的操作,從而完成了不同的指令,形成對應(yīng)的指令集。通用算術(shù)邏輯單元ALU-1完成8位的算術(shù)邏輯操作和比特操作,其源操作數(shù)來源可為通用寄存器堆、多功能寄存器堆、立即數(shù)、常數(shù)、指令譯碼器、SRAM等,其目的操作數(shù)來源為通用寄存器堆,運(yùn)算結(jié)果通過8位數(shù)據(jù)總線回寫通用寄存器堆或者SRAM。多功能算術(shù)邏輯單元ALU-2,完成擴(kuò)展帶寬的算術(shù)邏輯運(yùn)算、地址運(yùn)算和8位算術(shù)邏輯運(yùn)算。在進(jìn)行擴(kuò)展帶寬算術(shù)邏輯運(yùn)算時,有兩個操作數(shù),一個是作為多功能寄存器堆輸出的目的操作數(shù),另一個是由指令譯碼器從多功能寄存器堆,常數(shù)0x0、0x1、0xFF,8位數(shù)據(jù)總線中選取的源操作數(shù),由該兩個操作數(shù)運(yùn)算的結(jié)果輸出到多功能寄存器堆。該算術(shù)邏輯單元可以在一個時鐘周期內(nèi)完成16位、24位、32位等擴(kuò)展后帶寬的算術(shù)邏輯運(yùn)算,提高數(shù)據(jù)通訊帶寬和多字節(jié)數(shù)據(jù)處理能力;進(jìn)行地址運(yùn)算,是在指令譯碼器譯碼的指令為靜態(tài)隨機(jī)存儲器SRAM的訪問指令時,由指令譯碼器譯碼的控制信號首先將算術(shù)邏輯單元ALU-2,配置成地址運(yùn)算器,將多功能寄存器堆配置為地址寄存器,然后在算術(shù)邏輯單元ALU-2執(zhí)行該訪問指令時,自動完成地址寄存器內(nèi)容的加1、遞1或者加減指令譯碼器指定的數(shù)值運(yùn)算,并將運(yùn)算結(jié)果寫回所述的地址寄存器。
狀態(tài)寄存器,是在算術(shù)邏輯單元執(zhí)行完指令操作以后,根據(jù)運(yùn)算結(jié)果作相應(yīng)的改變,使得狀態(tài)寄存器的內(nèi)容反映當(dāng)前微控制器的狀態(tài)。狀態(tài)寄存器通過地址總線進(jìn)行寄存器訪問,由8位數(shù)據(jù)總線寫入或者讀出。
SRAM,是在程序執(zhí)行過程中,很多過程數(shù)據(jù)需要保存,這些數(shù)據(jù)通過SRAM存取指令保存在SRAM中,SRAM中通過多功能寄存器堆中指定的地址總線訪問,具有8位數(shù)據(jù)總線作為數(shù)據(jù)輸入輸出接口。
堆棧指針,是在當(dāng)程序中存在子程序調(diào)用時,而需要用到的堆棧指針。該堆棧指針用于程序轉(zhuǎn)移時,保存/恢復(fù)程序指針,即在調(diào)用子程序時,保存子程序的入口地址,指定程序指針在數(shù)據(jù)存儲區(qū)中保存的地址,在保存程序指針后,堆棧指針將指向下一個堆棧位置;在子程序返回時,從指定位置恢復(fù)原來程序指針的值,返回子程序的入口地址。程序在開始的時候,需要建立堆棧,即在數(shù)據(jù)空間SRAM中指定一定的區(qū)域作為堆棧,該堆棧指針在堆棧建立后,指向堆棧底部位置,在工作狀態(tài)時當(dāng)每次進(jìn)棧操作,則堆棧指針加1,當(dāng)每次出棧操作,則堆棧指針減1;時鐘單元提供微控制器所用到的時鐘,主要為流水線提供流水相位時鐘、異常復(fù)位的看門狗WDR時鐘、節(jié)能模式的IDLE、SLEEP時鐘以及測試掃描時鐘。本發(fā)明采用流水設(shè)計,流水相位時鐘為系統(tǒng)時鐘的一次或者多次分頻時鐘;看門狗時鐘包含一個振蕩器,獨(dú)立運(yùn)行生成看門狗時鐘;節(jié)能模式則會關(guān)閉相應(yīng)的時鐘。
其他外圍接口,包括根據(jù)需要配置的外圍接口,即定時器/計數(shù)器,模數(shù)/數(shù)模轉(zhuǎn)換,中斷單元,看門狗單元,通用異步接收發(fā)送器,比較器,串行總線,串行外設(shè)接口及通用輸入輸出接口等。外圍接口分配有各自的地址,通過數(shù)據(jù)總線、地址總線由端口訪問指令訪問。
所述的通用算術(shù)邏輯單元ALU-1與通用寄存器堆耦合使用,分別完成立即尋址算術(shù)邏輯指令、立即數(shù)運(yùn)算指令、狀態(tài)相關(guān)指令、寄存器增減指令、不回寫算術(shù)運(yùn)算指令、數(shù)據(jù)反轉(zhuǎn)指令、邏輯移位指令、存儲器訪問指令、比特操作指令的執(zhí)行。該立即尋址算術(shù)邏輯指令包括ADDB,ADCB,SUBB,SUCB,ANDB,ORB,EORB,MOVB,SNIF,這些指令有兩個操作數(shù),都來自通用寄存器堆,結(jié)果回寫到通用寄存器堆;該立即數(shù)運(yùn)算指令的執(zhí)行包括ADIB,SUIB,ANIB,ORIB,SETI,該指令有兩個操作數(shù),其中目的操作數(shù)來自通用寄存器堆,源操作數(shù)為立即數(shù),由指令譯碼器提供,結(jié)果寫回通用寄存器堆;該狀態(tài)相關(guān)指令的執(zhí)行,包括COMB,NEGB,CLRB,該批指令為單操作數(shù)指令,操作數(shù)來自通用寄存器堆,結(jié)果不回寫,僅僅影響狀態(tài)寄存器的狀態(tài)位;該寄存器增減指令的執(zhí)行,包括INC,DEC,該批指令為單操作數(shù)指令,其目的操作數(shù)來自通用寄存器堆,源操作數(shù)為常數(shù)1,結(jié)果寫回通用寄存器堆;該不回寫算術(shù)運(yùn)算指令的執(zhí)行,包括SSUB,SSUC,SADD,SADC,該批指令有兩個操作數(shù),都來自通用寄存器堆,結(jié)果不回寫,只影響狀態(tài)寄存器;該數(shù)據(jù)反轉(zhuǎn)指令包括HDSD,為單操作數(shù)指令,操作數(shù)來自通用寄存器堆,結(jié)果回寫到寄存器堆;該邏輯移位指令的執(zhí)行,包括LSL,LSH,LS1,LS1,RSL,RSH,RS0,RS1,該批指令有兩個操作數(shù),其目的操作數(shù)來自通用寄存器堆,源操作數(shù)為立即數(shù),確定移位的數(shù)量,結(jié)果回寫通用寄存器堆;該存儲器訪問指令的執(zhí)行需要和多功能算術(shù)邏輯單元ALU-2配合完成,由通用算術(shù)邏輯單元ALU-1完成數(shù)據(jù)的準(zhǔn)備,多功能算術(shù)邏輯單元ALU-2完成地址的運(yùn)算,該指令包括LD/ST,LDX/STX,LDY/STY,LDZ/STZ,LDX+/STX+,LDY+/STY+,LDZ+/STZ+,-LDX/-STX,-LDY/-STY,-LDZ/-STZ,LDXP/STXP,LDYP/STYP,LDZP/STZP,這批指令由多功能寄存器堆提供數(shù)據(jù)地址,并根據(jù)指令控制信號改變地址,執(zhí)行存儲指令時,通用算術(shù)邏輯單元不作動作,只是把寄存器讀出的數(shù)據(jù)直接放到8位數(shù)據(jù)總線,執(zhí)行讀取指令時,通用算術(shù)邏輯單元ALU-1從8位數(shù)據(jù)總線讀取數(shù)據(jù),回寫到寄存器堆;該比特操作指令的執(zhí)行,包括BTRAN、BSET、BCLR和BCHN,完成指定寄存器比特的清零、置1、讀出、修改等操作,其結(jié)果寫入通用寄存器堆并傳送到8位數(shù)據(jù)總線,供外部部件訪問。
所述的多功能算術(shù)邏輯單元ALU-2如圖2。
參照圖2,多功能算術(shù)邏輯單元ALU-2與多功能寄存器堆耦合使用,可以有多種組合形式,當(dāng)多功能寄存器堆以8比特寄存器形式構(gòu)成時,耦合帶寬為8比特,多功能算術(shù)邏輯單元ALU-2對應(yīng)為8比特ALU,以字節(jié)形式訪問多功能寄存器堆,多功能算術(shù)邏輯單元ALU-2完成8比特算術(shù)邏輯運(yùn)算,執(zhí)行通用算術(shù)邏輯指令,也完成多功能寄存器堆的讀寫,執(zhí)行存儲器訪問指令;當(dāng)多功能寄存器堆以16比特、32比特等多字節(jié)寄存器形式構(gòu)成時,耦合帶寬位為16比特,32比特等擴(kuò)展的多字節(jié)寬度,多功能算術(shù)邏輯單元ALU-2對應(yīng)為16比特,32比特多字節(jié)運(yùn)算,多功能寄存器以2個、4個字節(jié)等多字節(jié)并行輸出數(shù)據(jù),多功能算術(shù)邏輯單元ALU-2完成多字節(jié)算術(shù)邏輯運(yùn)算,執(zhí)行多字節(jié)算術(shù)邏輯指令,或者多功能算術(shù)邏輯單元ALU-2完成地址運(yùn)算,執(zhí)行存儲器訪問指令。多功能算術(shù)邏輯單元可以進(jìn)行16比特等多字節(jié)的算術(shù)邏輯運(yùn)算,使該微控制器具有在8比特操作環(huán)境中,在單周期內(nèi)完成多字節(jié)運(yùn)算的能力,從而增加該微控制器的運(yùn)算控制能力,拓展其應(yīng)用場合。
多功能算術(shù)邏輯單元ALU-2與多功能寄存器堆耦合使用,完成8比特算術(shù)邏輯運(yùn)算、地址運(yùn)算指令、多字節(jié)算術(shù)運(yùn)算指令的執(zhí)行。該8比特算術(shù)邏輯運(yùn)算指令用于8比特算術(shù)邏輯運(yùn)算,此時等同通用算術(shù)邏輯單元ALU-1,可以執(zhí)行所有通用算術(shù)邏輯指令;該擴(kuò)展帶寬多字節(jié)算術(shù)邏輯運(yùn)算,包括ADDW,ADCW,SUBW,SUCW,ANDW,ORW,EORW字算術(shù)邏輯指令的執(zhí)行,這些指令有兩個操作數(shù),都來自多功能寄存器堆,一個時鐘周期內(nèi)完成字運(yùn)算,結(jié)果寫回多功能寄存器堆;完成立即數(shù)多字節(jié)算術(shù)邏輯指令的執(zhí)行,包括ADIW,SUIW,ANIW,ORIW,SETW,這些指令有兩個操作數(shù),其中目的操作數(shù)來自多功能寄存器堆,源操作數(shù)為立即數(shù),能夠在一個時鐘周期之內(nèi)完成字運(yùn)算,結(jié)果寫回多功能寄存器堆;該多字節(jié)狀態(tài)相關(guān)指令包括COMW,NEGW,CLRW,這些指令為單操作數(shù)指令,操作數(shù)來自多功能寄存器堆,結(jié)果不回寫,僅僅影響狀態(tài)寄存器的狀態(tài)位。多功能算術(shù)邏輯單元的特殊運(yùn)算能力可以方便的支持特殊場合的寬帶運(yùn)算需求和矩陣操作等指令的設(shè)計實(shí)現(xiàn)。
多功能寄存器堆可以組織成以多個字節(jié)組合成為總線的形式,和多功能算術(shù)邏輯單元ALU-2耦合進(jìn)行地址運(yùn)算,為存儲器訪問提供了有效的尋址手段,增加了程序和數(shù)據(jù)的尋址空間,大大提高了微控制器的數(shù)據(jù)訪問能力。存儲器訪問指令和端口讀寫指令的執(zhí)行需要和通用算術(shù)邏輯單元ALU-1配合完成,由通用算術(shù)邏輯單元ALU-1完成數(shù)據(jù)的準(zhǔn)備,多功能算術(shù)邏輯單元ALU-2完成地址的運(yùn)算。該存儲器訪問指令包括LD/ST,LDX/STX,LDY/STY,LDZ/STZ,LDX+/STX+,LDY+/STY+,LDZ+/STZ+,-LDX/-STX,-LDY /-STY,-LDZ/-STZ,LDXP/STXP,LDYP/STYP,LDZP/STZP。端口讀寫指令包括PTRD、PTWR。
所述的多功能寄存器堆如圖3所示。
參照圖3,當(dāng)多功能寄存器堆完成地址寄存器功能時,可以和SRAM中指定的分頁寄存器聯(lián)合,形成擴(kuò)展的地址指針。
如圖3(a)所示,多功能寄存器堆以8比特字節(jié)形式為組織單元,配置成三個地址寄存器x,y,z,地址寄存器和參與地址運(yùn)算的立即數(shù)作為操作數(shù)輸入到多功能算術(shù)邏輯單元ALU-2進(jìn)行地址運(yùn)算,運(yùn)算結(jié)果輸出到頁內(nèi)地址總線,并回寫到地址寄存器。本發(fā)明分別把由地址寄存器x,y,z運(yùn)算的來的頁內(nèi)地址總線命名為頁內(nèi)地址總線x,y,z,作為地址總線的低位部分,用于2^8字節(jié)的頁內(nèi)尋址空間;在SRAM中,對應(yīng)三個地址寄存器x,y,z指定了三個寬度為n比特的頁面寄存器PageX,PageY,PageZ,分別作為地址總線的高位部分,對應(yīng)地址寄存器的寬度,頁內(nèi)尋址空間為2^8字節(jié);;在指令執(zhí)行時,指令譯碼器譯碼指令,生成控制信號,控制從三個地址寄存器x,y,z選擇一個作為頁內(nèi)地址總線,進(jìn)行地址運(yùn)算,從三個頁面寄存器中選擇對應(yīng)的頁面寄存器,進(jìn)行頁面尋址,頁內(nèi)地址總線和對應(yīng)的頁面寄存器耦合作為8+n位地址總線,形成(2^8)*(2^n)字節(jié)的尋址能力,完成數(shù)據(jù)空間的尋址。
如圖3(b)所示,多功能寄存器堆以16比特字形式為組織單元,配置成三個地址寄存器r,s,t,地址寄存器和參與地址運(yùn)算的立即數(shù)作為操作數(shù)輸入到多功能算術(shù)邏輯單元ALU-2進(jìn)行地址運(yùn)算,運(yùn)算結(jié)果輸出到頁內(nèi)地址總線,并回寫到地址寄存器。本發(fā)明分別把由地址寄存器r,s,t運(yùn)算的來的頁內(nèi)地址總線命名為頁內(nèi)地址總線r,s,t,作為地址總線的低位部分,對應(yīng)地址寄存器的寬度,頁內(nèi)尋址空間為2^16字節(jié);在SRAM中,對應(yīng)三個地址寄存器r,s,t指定了三個寬度為n比特的頁面寄存器PageR,PageS,PageT,分別作為地址總線的高位部分,用于2^n的頁面尋址;在指令執(zhí)行時,指令譯碼器譯碼指令,生成控制信號,控制從三個地址寄存器r,s,t選擇一個作為頁內(nèi)地址總線,進(jìn)行地址運(yùn)算,從三個頁面寄存器中選擇對應(yīng)的頁面寄存器,進(jìn)行頁面尋址,頁內(nèi)地址總線和對應(yīng)的頁面寄存器耦合作為16+n位地址總線,形成(2^16)*(2^n)字節(jié)的尋址能力,完成數(shù)據(jù)空間的尋址。
圖3(c)所示,多功能寄存器堆以32比特雙字形式為組織單元,配置成三個地址寄存器u,v,w,地址寄存器和參與地址運(yùn)算的立即數(shù)作為操作數(shù)輸入到多功能算術(shù)邏輯單元ALU-2進(jìn)行地址運(yùn)算,運(yùn)算結(jié)果輸出到頁內(nèi)地址總線,并回寫到地址寄存器。本發(fā)明分別把由地址寄存器u,v,w運(yùn)算的來的頁內(nèi)地址總線命名為頁內(nèi)地址總線u,v,w,作為地址總線的低位部分,對應(yīng)地址寄存器的寬度,頁內(nèi)尋址空間為2^32字節(jié);在SRAM中,對應(yīng)三個地址寄存器u,v,w指定了三個寬度為n比特的頁面寄存器PageU,PageV,PageW,分別作為地址總線的高位部分,用于2^n的頁面尋址;在指令執(zhí)行時,指令譯碼器譯碼指令,生成控制信號,控制從三個地址寄存器u,v,w選擇一個作為頁內(nèi)地址總線,進(jìn)行地址運(yùn)算,從三個頁面寄存器中選擇對應(yīng)的頁面寄存器,進(jìn)行頁面尋址,頁內(nèi)地址總線和對應(yīng)的頁面寄存器耦合作為32+n位地址總線,形成(2^32)*(2^n)字節(jié)的尋址能力,完成數(shù)據(jù)空間的尋址。本發(fā)明多功能寄存器堆的最佳實(shí)施方案是以16比特字形式為組織單元構(gòu)成三組獨(dú)立的16位地址寄存器,形成三個獨(dú)立的16位頁內(nèi)地址指針,訪問數(shù)據(jù)空間的低64K字節(jié),該64K字節(jié)稱為頁面,而外部分頁寄存器寬度可以根據(jù)需要配置,尋址若干個頁面,每個頁面為64K字節(jié),分頁寄存器把由16位寄存器尋址的頁面串聯(lián)起來形成更大的數(shù)據(jù)空間。這個特點(diǎn)使得8位MCU有了前所未有的尋址空間,理論上,只要分頁寄存器的寬度足夠大,數(shù)據(jù)空間可以是無限的。比如,當(dāng)分頁寄存器為4位時,存儲器可以分成16頁64K,即64K*16=1M字節(jié)的RAM;而當(dāng)分頁寄存器為8位時,存儲器可以分成256頁64K,即64K*256=16M字節(jié)的RAM。當(dāng)然,分頁寄存器可以通過判斷16位地址指針寄存器的運(yùn)算結(jié)果是否有進(jìn)位,來確定是否進(jìn)行翻頁操作。根據(jù)工業(yè)應(yīng)用的需要,本發(fā)明的最佳應(yīng)用為設(shè)計三個分頁寄存器,分別與多功能寄存器堆的三個16位地址寄存器耦合,形成三個地址指針,記錄三個數(shù)據(jù)空間位置,方便的用于矩陣運(yùn)算和其他音視頻數(shù)據(jù)控制。
所述的指令譯碼器單元如圖4所示。
參照圖4,指令譯碼器包括通用指令譯碼器、比特操作判斷器、比特定位器三部分。通用指令譯碼器負(fù)責(zé)指令的譯碼,生成控制信號;比特操作判斷器判斷是否為比特相關(guān)指令,確定是否把比特使能信號置1;比特定位器進(jìn)行確定比特位置。這樣的譯碼結(jié)構(gòu),容許在指令集中增加各種比特操作指令,如比特置1,比特清零,比特讀出,比特寫入,比特替換,比特判斷轉(zhuǎn)移等,這些指令能夠在一個時鐘周期完成寄存器的比特位操作,無需復(fù)雜的寄存器轉(zhuǎn)換和指令組合,大大方便了程序的編寫,節(jié)省了運(yùn)算時間。這批指令有BTRAN、BSET、BCLR和BCHN,在比特操作使能后,比特定位器通對指令中的若干位比特信息譯碼,進(jìn)行比特譯碼定位,把指令中包含的比特信息進(jìn)行譯碼,確定比特位置,完成以下幾種比特操作(1)生成用“1”標(biāo)定的比特定位代碼,如0000_1000,和通用算術(shù)邏輯單元ALU-1結(jié)合,作為一個操作數(shù)傳送到通用算術(shù)邏輯單元,另一個操作數(shù)為需要進(jìn)行比特操作的寄存器,通用算術(shù)邏輯單元ALU-1進(jìn)行“或”運(yùn)算,完成寄存器比特位的置1;(2)生成用“0”標(biāo)定的比特定位代碼,如1111_0111,和ALU單元結(jié)合,作為一個操作數(shù)傳送到算術(shù)邏輯單元,另一個操作數(shù)為需要進(jìn)行比特操作的寄存器,通用算術(shù)邏輯單元ALU-1做“與”運(yùn)算,完成寄存器比特位的清零;(3)生成用需要傳送的比特置“M”標(biāo)定的比特定位代碼,如0000_M0000,和ALU單元結(jié)合,作為一個操作數(shù)傳送到通用算術(shù)邏輯單元ALU-1,另一個操作數(shù)為需要進(jìn)行比特操作的寄存器,算術(shù)邏輯單元做“或”運(yùn)算,完成對寄存器M位的數(shù)值傳送,數(shù)值“M”寫入M標(biāo)定的位;(4)生成用“1”標(biāo)定的比特定位代碼,如0000_1000,和通用算術(shù)邏輯單元結(jié)合,作為一個操作數(shù)傳送到算術(shù)邏輯單元,另一個操作數(shù)為需要進(jìn)行比特操作的寄存器,算術(shù)邏輯單元進(jìn)行“與”運(yùn)算,讀取寄存器中被標(biāo)定比特數(shù)值。
上述四種比特操作而衍生的比特指令給程序控制帶來了很大方便,運(yùn)用這些指令,程序員可以很方便的控制到寄存器的每一個比特,既降低了編程的難度,又極大的提高程序的運(yùn)行效率,節(jié)約了程序空間。
此外,比特操作判斷器還完成由比特位控制的程序跳轉(zhuǎn),完成跳轉(zhuǎn)指令的執(zhí)行,包括JbEQ,JbNQ,JbGE,JbSE。指令譯碼器對指令進(jìn)行譯碼,生成跳轉(zhuǎn)的控制信號和跳轉(zhuǎn)判斷信號,比特定位器進(jìn)行比特定位,選定比特的置1或置0作為跳轉(zhuǎn)使能信號決定是否跳轉(zhuǎn),當(dāng)選定比特與約定相同時,跳轉(zhuǎn)使能,跳轉(zhuǎn)控制信號控制程序計數(shù)器做偏置運(yùn)算,指向跳轉(zhuǎn)后的新位置,當(dāng)前讀入指令寄存器的指令丟棄不予執(zhí)行,從新位置重新讀取指令譯碼執(zhí)行,此時,該跳轉(zhuǎn)指令占據(jù)兩個時鐘周期;當(dāng)選定比特與約定不同時,跳轉(zhuǎn)不使能,程序計數(shù)器順序計數(shù),指令寄存器中的指令譯碼執(zhí)行,該跳轉(zhuǎn)指令占據(jù)一個時鐘周期。跳轉(zhuǎn)指令不影響狀態(tài)寄存器的值。
所述的程序計數(shù)器如圖5所示。
參照圖5,程序計數(shù)器由計數(shù)器和運(yùn)算器組成。計數(shù)器的最佳方案為由23位寄存器構(gòu)成程序指針,形成16M字節(jié)的尋址能力;運(yùn)算器實(shí)現(xiàn)加1運(yùn)算和跳轉(zhuǎn)偏移運(yùn)算,計數(shù)器相應(yīng)完成順序計數(shù)和轉(zhuǎn)移計數(shù)。在執(zhí)行算術(shù)邏輯、比特運(yùn)算和存儲器訪問等指令時,運(yùn)算器加1,計數(shù)器作順序計數(shù),當(dāng)執(zhí)行一些分支轉(zhuǎn)移指令時,程序計數(shù)器需要跳轉(zhuǎn),運(yùn)算器進(jìn)行跳轉(zhuǎn)偏移運(yùn)算,計算要跳轉(zhuǎn)的目的地址,計數(shù)器完成轉(zhuǎn)移計數(shù)。程序計數(shù)器模塊可以完成無條件跳轉(zhuǎn)指令、子程序調(diào)用返回指令、寄存器保存/恢復(fù)指令。該無條件跳轉(zhuǎn)指令包括RGO,IGO和GO。指令譯碼器判斷讀入的指令為無條件跳轉(zhuǎn)指令,生成控制信號,控制程序計數(shù)器進(jìn)行偏置運(yùn)算,程序指針指向跳轉(zhuǎn)后的新位置,當(dāng)前讀入指令寄存器的指令丟棄不予執(zhí)行,從新位置重新讀取指令執(zhí)行,該批跳轉(zhuǎn)指令占據(jù)兩個時鐘周期。該子程序調(diào)用/返回指令包括RCALL/PCALL/CALL,RET/RETI。指令譯碼器判定讀入的指令為子程序調(diào)用指令,生成控制信號,把程序計數(shù)器的內(nèi)容按照從低到高的順序保存到堆棧指針指定的數(shù)據(jù)空間,該空間稱為堆棧。堆棧指針相應(yīng)的改變,指向下一個堆棧位置,然后程序計數(shù)器進(jìn)行跳轉(zhuǎn)運(yùn)算,跳轉(zhuǎn)到新的位置——子程序的入口位置,讀取指令,執(zhí)行,原來讀入指令寄存器的內(nèi)容丟棄,不予執(zhí)行。該指令的執(zhí)行周期由程序計數(shù)器的長度決定,當(dāng)程序計數(shù)器為三個字節(jié)時,需要三個時鐘周期,長度為四個字節(jié)時,需要四個時鐘周期。RET/RETI子程序返回指令為子程序調(diào)用指令的耦合指令,在子程序執(zhí)行結(jié)束后,子程序返回原來的父程序,此時需要恢復(fù)子程序在父程序的入口位置。指令譯碼器譯碼返回指令,生成控制信號,從堆棧指針指定的堆棧位置,逐一把原來保存在堆棧中的程序指針值讀出,從高到低,寫回程序計數(shù)器,程序返回跳轉(zhuǎn)前的位置,重新讀取指令,進(jìn)行譯碼,執(zhí)行,而子程序返回前讀入指令寄存器的指令丟棄不予執(zhí)行,堆棧指針相應(yīng)回移。該指令的執(zhí)行周期同樣由程序計數(shù)器的長度決定。該寄存器保存/恢復(fù)指令包括PUSH/POP,其中PUSH指令用來保存在程序執(zhí)行過程中需要保存的寄存器內(nèi)容,執(zhí)行該指令時,指令譯碼器生成控制信號,把寄存器的內(nèi)容通過8位數(shù)據(jù)總線傳送到堆棧指針指定的堆棧位置保存,堆棧指針指向下一個堆棧位置;POP指令用來恢復(fù)在程序執(zhí)行過程中保存的寄存器的內(nèi)容,執(zhí)行該指令時,指令譯碼器生成控制信號,把原來保存的寄存器的內(nèi)容從堆棧指針指定的堆棧位置讀出,通過8位數(shù)據(jù)總線寫回到指定的寄存器,寄存器數(shù)據(jù)恢復(fù),堆棧指針相應(yīng)修改,回移一個堆棧位置。
本發(fā)明的具體應(yīng)用實(shí)例是在電子書的微控制器XD0308-E中的應(yīng)用,如圖6所示。
參照圖6,在電子書的微控制器XD0308-E中,通用寄存器堆設(shè)計為16個8比特寄存器,對應(yīng)地址空間為0x0000~0x000F;通用算術(shù)邏輯單元ALU-1完成8比特算術(shù)邏輯運(yùn)算和比特運(yùn)算;多功能寄存器堆設(shè)計為16個8比特寄存器,對應(yīng)地址空間為0x0010~0x001F,以8比特字節(jié)帶寬形式訪問,或者以16比特字帶寬形式訪問。當(dāng)以16比特字形式訪問時,則以偶地址開始,并可以組織成三個16比特地址寄存器形式,形成64K字節(jié)的頁內(nèi)尋址空間,在SRAM中指定有10位分頁寄存器,地址寄存器和分頁寄存器構(gòu)成2^10*2^16=64M字節(jié)的數(shù)據(jù)空間尋址能力。多功能算術(shù)邏輯單元ALU-2設(shè)計為16位算術(shù)邏輯單元,可以在一個時鐘周期內(nèi)完成16位的加減法、數(shù)據(jù)轉(zhuǎn)移、數(shù)據(jù)交換,“與”、“或”等算術(shù)邏輯操作,也可以在尋址的同時進(jìn)行地址的自動運(yùn)算,無需專門指令修改地址指針,節(jié)約指令執(zhí)行周期,提高運(yùn)算效率。指令譯碼器負(fù)責(zé)指令譯碼,生成控制信號,產(chǎn)生對通用寄存器堆,多功能寄存器堆,通用算術(shù)邏輯單元ALU-1,多功能算術(shù)邏輯單元ALU-2等單元的操作控制,其中比特操作判斷器仲裁在指令寄存器中的指令是否含有比特操作,比特定位器進(jìn)行比特定位,確定要操作的比特位置,通用算術(shù)邏輯單元ALU-1設(shè)置的比特運(yùn)算器進(jìn)行比特運(yùn)算,在在一個時鐘周期內(nèi)完成寄存器的任意位置比特的讀寫。本應(yīng)用實(shí)例中,該控制器的操作流程為控制器復(fù)位->程序計數(shù)器清零->從程序區(qū)讀取指令->指令暫存/程序計數(shù)器加1->指令譯碼->生成控制信號->選擇寄存器堆->選擇ALU單元->執(zhí)行運(yùn)算->結(jié)果回寫->讀取下一條指令。采用0.18um工藝加工時,該流程工作的XD0308-E運(yùn)算速度可達(dá)200MIPS,即每秒可以執(zhí)行200M條指令;16位運(yùn)算,寄存器任意比特修改等復(fù)雜指令的執(zhí)行速度達(dá)到1.0IPC,即每時鐘周期執(zhí)行1條指令,運(yùn)算能力有了極大的提高,處理能力是傳統(tǒng)的CISC結(jié)構(gòu)8位微控制器8051的100倍以上,可以充分滿足Ebook,MP3,手寫板等應(yīng)用。
本發(fā)明實(shí)例通過實(shí)際流片,對樣片進(jìn)行編程測試可以得出如下數(shù)據(jù)(1)本應(yīng)用實(shí)例XD0308-E與市場其他產(chǎn)品的性能比較如表2表2 XD0308-E與現(xiàn)有其他產(chǎn)品的性能比較

由表2可見,XD0308-E運(yùn)算速度最快,其最高工作頻率是AVR系列的15倍以上,是PIC八位系列、80/89C51系列的8倍;XD0308-E程序空間是其它微處理器的200倍以上,數(shù)據(jù)空間是其它微處理器的1000倍,可以很方便的滿足電子詞典、電子書、MP3等應(yīng)用對高處理性能、大數(shù)據(jù)空間的要求。
(2)本應(yīng)用實(shí)例XD0308-E與現(xiàn)有的8位微處理器在音頻應(yīng)用時的程序空間的需求和處理性能比較如表3。
表3 XD0308-E與現(xiàn)有的8位微處理器的性能比較

從表3可以得出以下結(jié)論(1)8MHz的XD0308-E微處理器的處理速度相當(dāng)于235MHz的89C51微處理器的處理速度;(2)8MHz的XD0308-E處理速度比20MHz的PIC1616C74速度高出6.25倍;(3)在相同工作頻率條件下,XD0308-E的功耗比AVR要低五分之一,程序空間需求小三分之一。
以上比較數(shù)據(jù)表明,采用本發(fā)明的XD0308-E在設(shè)計程序,特別是音頻相關(guān)程序設(shè)計時,代碼效率很高,在速度上比PIC、AVR系列微處理器更快,功耗上則比PIC、AVR系列微處理器更低,可廣泛用于個人數(shù)字終端PDA,電子書,電子詞典,手寫板,MP3,工業(yè)控制等領(lǐng)域。
對于本領(lǐng)域的專業(yè)人員來說,在了解了本發(fā)明內(nèi)容和原理后,能夠在不背離本發(fā)明的原理和范圍的情況下,根據(jù)本發(fā)明的方法進(jìn)行形式和細(xì)節(jié)上的各種修正和改變,但是這些基于本發(fā)明的修正和改變?nèi)栽诒景l(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種雙算術(shù)邏輯單元精簡指令集8位微控制器,包括程序總線、程序存儲器、程序指針、堆棧指針、靜態(tài)隨機(jī)存儲器SRAM、通用寄存器堆、通用算術(shù)邏輯單元ALU-1、多功能寄存器堆、多功能算術(shù)邏輯單元ALU-2、狀態(tài)寄存器、指令譯碼器,數(shù)據(jù)總線、地址總線,其特征在于(1)通用寄存器堆和通用算術(shù)邏輯單元ALU-1并列連接有多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2,該多功能寄存器堆用于完成8位數(shù)據(jù)累加,擴(kuò)展帶寬數(shù)據(jù)累加,數(shù)據(jù)空間地址指針等功能,并為多功能算術(shù)邏輯單元ALU-2提供操作數(shù),保存其運(yùn)算結(jié)果;該多功能算術(shù)邏輯單元ALU-2用于完成擴(kuò)展帶寬的算術(shù)邏輯運(yùn)算、地址運(yùn)算和8位算術(shù)邏輯運(yùn)算;(2)指令譯碼器中設(shè)置有比特定位器和比特操作判斷器,該比特定位器用于對比特操作指令作比特定位運(yùn)算,確定比特位置;該比特操作判斷器,用于判定當(dāng)前指令譯碼器中的指令是否是比特操作指令,確定是否把比特操作使能信號置1;(3)通用算術(shù)邏輯單元ALU-1中設(shè)置有比特運(yùn)算器,用于完成比特操作,即執(zhí)行比特讀出BTRAN、比特置位BSET、比特清零BCLR和比特改寫B(tài)CHN等指令。
2.根據(jù)權(quán)利要求1所述的微控制器,其特征在于多功能寄存器堆的結(jié)構(gòu)為雙口RAM,即具有兩個輸出端口和兩個輸入端口;所述的兩個輸出端口的輸出數(shù)據(jù)送到多功能算術(shù)邏輯單元ALU-2的輸入端口,作為多功能算術(shù)邏輯單元ALU-2的輸入選項(xiàng),數(shù)據(jù)帶寬等于擴(kuò)展帶寬;所述的兩個輸入端口,一個為8位帶寬輸入端口,連接到8位數(shù)據(jù)總線,一個為擴(kuò)展帶寬輸入端口,接多功能算術(shù)邏輯單元ALU-2的輸出端口。
3.根據(jù)權(quán)利要求1或2所述的微控制器,其特征在于多功能寄存器堆的輸出端口地址由指令譯碼器控制,從指令譯碼器、地址寄存器中選擇,8位輸入端口的地址由指令譯碼器確定,擴(kuò)展帶寬端口的地址為地址寄存器。
4.根據(jù)權(quán)利要求1或2所述的微控制器,其特征在于多功能寄存器堆的工作模式有三種,一是單字節(jié)工作模式,以單字節(jié)為單元訪問,完成通用寄存器堆功能和多功能寄存器堆的外部讀寫;二是多字節(jié)工作模式,以多字節(jié)為單元訪問,用于配合多功能算術(shù)邏輯單元ALU-2完成多字節(jié)擴(kuò)展帶寬算術(shù)邏輯運(yùn)算;三是計數(shù)器工作模式,用作地址寄存器,完成地址指針運(yùn)算。
5.根據(jù)權(quán)利要求1所述的微控制器,其特征在于多功能算術(shù)邏輯單元ALU-2,在進(jìn)行擴(kuò)展帶寬算術(shù)邏輯運(yùn)算時,有兩個操作數(shù),一個是作為多功能寄存器堆輸出的目的操作數(shù),另一個是由指令譯碼器從多功能寄存器堆、常數(shù)、8位數(shù)據(jù)總線中選取的源操作數(shù),將所述兩個操作數(shù)運(yùn)算的結(jié)果輸出到多功能寄存器堆。
6.根據(jù)權(quán)利要求1所述的微控制器,其特征在于多功能算術(shù)邏輯單元ALU-2進(jìn)行地址運(yùn)算,是在指令譯碼器譯碼的指令為靜態(tài)隨機(jī)存儲器SRAM的訪問指令時,由指令譯碼器譯碼的控制信號首先將算術(shù)邏輯單元ALU-2,配置成地址運(yùn)算器,將多功能寄存器堆配置為地址寄存器,然后在算術(shù)邏輯單元ALU-2執(zhí)行該訪問指令時,自動完成地址寄存器內(nèi)容的加1、遞1或者加減指令譯碼器指定的數(shù)值運(yùn)算,并將運(yùn)算結(jié)果寫回所述的地址寄存器。
7.根據(jù)權(quán)利要求1所述的微控制器,其特征在于比特定位器對比特操作指令作比特定位運(yùn)算,首先將比特操作指令中包含的比特位置信息進(jìn)行譯碼,用唯一的0或1標(biāo)定需要進(jìn)行比特操作的比特位置,然后通過比特操作使能信號控制將該比特位置信息加載到數(shù)據(jù)總線。
8.根據(jù)權(quán)利要求1所述的微控制器,其特征在于比特運(yùn)算器完成比特操作是通過指令譯碼器生成控制信號,確定出要進(jìn)行操作的寄存器和加載到數(shù)據(jù)總線的比特位置,作為通用算術(shù)邏輯單元ALU-1的兩個操作數(shù),并且控制通用算術(shù)邏輯單元ALU-1對該兩個操作數(shù)進(jìn)行邏輯運(yùn)算完成比特操作。
9.根據(jù)權(quán)利要求1所述的微控制器,其特征在于多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2,通過數(shù)據(jù)總線與通用寄存器堆和通用算術(shù)邏輯單元ALU-1連接。
全文摘要
本發(fā)明公開了一種雙算術(shù)邏輯單元精簡指令集8位微控制器。主要解決現(xiàn)有8位微控制器數(shù)據(jù)處理能力差,數(shù)據(jù)空間小的不足。采用在現(xiàn)有8位RISC結(jié)構(gòu)的通用寄存器堆和通用算術(shù)邏輯單元ALU-1中,并列連接多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2,并分別在原有RISC結(jié)構(gòu)的指令譯碼器中設(shè)置比特定位器和比特操作判斷器,在通用算術(shù)邏輯單元ALU-1中設(shè)置比特運(yùn)算器的結(jié)構(gòu),通過多功能寄存器堆和多功能算術(shù)邏輯單元ALU-2耦合,增加8比特微處理器對多字節(jié)數(shù)據(jù)的運(yùn)算能力和數(shù)據(jù)處理能力,并提供數(shù)據(jù)空間的寄存器尋址方式,擴(kuò)大數(shù)據(jù)尋址空間。本發(fā)明的數(shù)據(jù)存儲空間達(dá)到64M,16位運(yùn)算指令的執(zhí)行速度達(dá)到1.0 IPC,可用于個人數(shù)字終端PDA,電子書,手寫板,MP3,工業(yè)控制等領(lǐng)域。
文檔編號G06F9/38GK1766834SQ200510041649
公開日2006年5月3日 申請日期2005年1月20日 優(yōu)先權(quán)日2005年1月20日
發(fā)明者史江一, 郝躍, 馬曉華, 馬佩軍, 劉鋒 申請人:西安電子科技大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
宣汉县| 饶河县| 蓬安县| 上高县| 壤塘县| 安康市| 铜山县| 富裕县| 尤溪县| 金湖县| 峨边| 定边县| 寻乌县| 历史| 泽普县| 宜阳县| 明星| 平潭县| 高台县| 安陆市| 石阡县| 米泉市| 牙克石市| 临夏市| 冀州市| 襄汾县| 多伦县| 沙雅县| 边坝县| 白银市| 肇州县| 射洪县| 武鸣县| 天镇县| 仁怀市| 滕州市| 郸城县| 德阳市| 荣昌县| 正阳县| 藁城市|