專利名稱:一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及微控制器算術(shù)邏輯單元,具體來(lái)說(shuō),涉及利用模塊與操作碼復(fù)用,降低 硬件資源消耗、節(jié)省芯片面、低成本的一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元。
背景技術(shù):
微控制器(MCU,Micro Control Unit)是把中央處理器(CPU),一定容量的存 儲(chǔ)器 和若干輸入/輸出端口等部件集成在一塊小硅片上的微型計(jì)算機(jī),又稱單片機(jī)。微控制器 自20世紀(jì)70年代問(wèn)世以來(lái),被廣泛地應(yīng)用于科研、生產(chǎn)、生活及其他各個(gè)領(lǐng)域,已對(duì)人類社 會(huì)的發(fā)展產(chǎn)生了很大的影響。尤其是美國(guó)Intel公司生產(chǎn)的MCS-51系列微控制器,由于其 具有集成度高、處理功能強(qiáng)、可靠性好、系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、價(jià)格低廉、易于使用等優(yōu)點(diǎn),迅速占 領(lǐng)了工業(yè)測(cè)控和自動(dòng)化工程應(yīng)用的主要市場(chǎng),在全世界已經(jīng)得到廣泛的應(yīng)用,并取得了令 人矚目的成果。算術(shù)邏輯單元(ALU)是微控制器的中央處理器的一個(gè)核心組成部分,用于完成各 種算術(shù)與邏輯運(yùn)算。算術(shù)邏輯單元不僅能完成8位數(shù)據(jù)加(帶進(jìn)位加)、減(帶借位減)、 乘、除、加1、減1及B⑶加法的十進(jìn)制調(diào)整等算術(shù)運(yùn)算,還能進(jìn)行邏輯“與”、“或”、“異或”、 求補(bǔ)、清零等邏輯運(yùn)算,并具有數(shù)據(jù)傳送,程序轉(zhuǎn)移等功能。此外,MCS-51微控器的算術(shù)邏 輯單元還具有一般微計(jì)算機(jī)算術(shù)邏輯單元所不具備的功能,即位操作處理,可對(duì)直接尋址 的位變量進(jìn)行處理,如置位、清零、取反、測(cè)試轉(zhuǎn)移以及邏輯與、或等位操作,使用戶在編程 時(shí)可利用指令完成原來(lái)單憑復(fù)雜的硬件邏輯所完成的功能,并可方便的設(shè)置標(biāo)志位等。現(xiàn)有的算術(shù)邏輯單元設(shè)計(jì)中,有以下兩種缺點(diǎn)對(duì)算術(shù)邏輯單元的每一種操作都 進(jìn)行單獨(dú)編碼,導(dǎo)致算術(shù)邏輯單元操作碼過(guò)多,譯碼器復(fù)雜度增大;對(duì)加、減、乘、除功能,分 別由加法器、減法器、乘法器、除法器4個(gè)單獨(dú)的功能模塊來(lái)實(shí)現(xiàn),導(dǎo)致算術(shù)邏輯單元結(jié)構(gòu) 冗余,硬件資源消耗高。總之,現(xiàn)有的算術(shù)邏輯單元設(shè)計(jì),往往只注重功能的實(shí)現(xiàn),而欠缺對(duì) 芯片面積優(yōu)化方面的考慮,致使算術(shù)邏輯單元硬件資源消耗高,芯片面積大,實(shí)現(xiàn)成本高。
發(fā)明內(nèi)容
針對(duì)以上不足,本發(fā)明提供通過(guò)采用功能模塊復(fù)用與操作碼復(fù)用方法,優(yōu)化算術(shù) 邏輯單元的系統(tǒng)結(jié)構(gòu),節(jié)省硬件資源消耗,減少芯片面積,從而最終達(dá)到降低芯片成本的目 的一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元。本發(fā)明是這樣實(shí)現(xiàn)的一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元,由譯 碼控制器、加法器、乘法控制器、除法控制器、十進(jìn)制數(shù)調(diào)整器、邏輯運(yùn)算器,位處理器和數(shù) 據(jù)通路選擇器組成,譯碼控制器對(duì)輸入的算術(shù)邏輯單元操作碼進(jìn)行譯碼,并根據(jù)操作碼為 加法器,乘法控制器,除法控制器,十進(jìn)制調(diào)整器,邏輯運(yùn)算器,位處理器這6種運(yùn)算模塊分 配源操作數(shù)、源操作數(shù)和源標(biāo)志位,運(yùn)算模塊根據(jù)兩個(gè)源操作數(shù)和源標(biāo)志位進(jìn)行相應(yīng)運(yùn)算, 并產(chǎn)生運(yùn)算結(jié)果;數(shù)據(jù)通路選擇器根據(jù)譯碼控制器器的控制信號(hào),選擇其中一組運(yùn)算結(jié)果 輸出,輸出信號(hào)包括目的操作數(shù)、目的操作數(shù)(僅乘除法有)和目的標(biāo)志位。能夠?qū)崿F(xiàn)各種算術(shù)運(yùn)算、邏輯運(yùn)算、字節(jié)交換操作與位操作等。本發(fā)明的有益效果本發(fā)明通過(guò)采用操作碼復(fù)用,功能模塊復(fù)用的方法,優(yōu)化算術(shù) 邏輯單元的系統(tǒng)結(jié)構(gòu),節(jié)省硬件資源消耗,減少芯片面積,在保證功能正確的前提下達(dá)到了 降低芯片成本的目的。
圖1為本發(fā)明的一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元算術(shù)邏輯單 元整體示意圖;圖2為本發(fā)明一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元執(zhí)行乘法指令 時(shí)的數(shù)據(jù)通路示意圖;圖3為本發(fā)明一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元執(zhí)行除法指令 時(shí)的數(shù)據(jù)通路示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元進(jìn)行 進(jìn)一步闡述。一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元,如圖1所示,包括譯碼控制 器10、數(shù)據(jù)通路選擇器20,加法器30,乘法控制器40,除法控制器50,十進(jìn)制調(diào)整器60,邏 輯運(yùn)算器70和位處理器80 ;譯碼控制器10對(duì)輸入的算術(shù)邏輯單元操作碼進(jìn)行譯碼,并根 據(jù)操作碼為加法器30,乘法控制器40,除法控制器50,十進(jìn)制調(diào)整器60,邏輯運(yùn)算器70,位 處理器80這6種運(yùn)算模塊分配源操作數(shù)1、源操作數(shù)2和源標(biāo)志位,運(yùn)算模塊根據(jù)兩個(gè)源 操作數(shù)和源標(biāo)志位進(jìn)行相應(yīng)運(yùn)算,并產(chǎn)生運(yùn)算結(jié)果,而數(shù)據(jù)通路選擇器20則根據(jù)譯碼控制 器器10的控制信號(hào),選擇其中一組運(yùn)算結(jié)果輸出,輸出信號(hào)包括目的操作數(shù)1、目的操作數(shù) 2(僅乘除法有)和目的標(biāo)志位。能夠?qū)崿F(xiàn)各種算術(shù)運(yùn)算、邏輯運(yùn)算、字節(jié)交換操作與位操作寸。所述譯碼控制器10,用于對(duì)算術(shù)邏輯單元操作碼進(jìn)行譯碼,并根據(jù)不同的操作碼, 對(duì)其他各個(gè)模塊發(fā)出相應(yīng)的控制信號(hào)。本發(fā)明算術(shù)邏輯單元操作碼采用復(fù)用設(shè)計(jì),使兩種 操作復(fù)用一個(gè)操作碼,可減少算術(shù)邏輯單元操作碼個(gè)數(shù),從而降低譯碼控制器的復(fù)雜度和 硬件資源消耗。所述加法器30,用于完成8位數(shù)據(jù)的加法運(yùn)算,可獨(dú)立完成加法操作(ADD),帶 進(jìn)位加法操作(ADDC)和增量操作(INC)。此外,減法運(yùn)算采用補(bǔ)碼相加法實(shí)現(xiàn),減法操作 (SUB),帶借位減法操作(SUBB)和減量操作(DEC),采用譯碼控制器對(duì)減數(shù)求補(bǔ)后,與被減 數(shù)通過(guò)該加法器相加的方法得到結(jié)果。所述乘法控制器40,用于與譯碼控制器10以及加法器30—起,共同完成乘法操作 (MUL)。乘法操作中,乘法運(yùn)算采用移位相加法實(shí)現(xiàn),乘法控制器用于移位與控制,加法器用 于加法運(yùn)算,而譯碼控制器用于控制乘法控制器與加法器協(xié)同工作。所述除法控制器50,用于與譯碼控制器10以及加法器30 —起,共同完成除法操 作(DIV)。除法操作中,除法運(yùn)算采用恢復(fù)余數(shù)法實(shí)現(xiàn),除法控制器用于移位與控制,加法器 用于與譯碼控制 器一起實(shí)現(xiàn)減法運(yùn)算,而譯碼控制器用于控制除法控制器與加法器協(xié)同工作。所述十進(jìn)制調(diào)整器60,用于對(duì)B⑶加法的結(jié)果進(jìn)行十進(jìn)制調(diào)整。所述邏輯運(yùn)算器70,用于完成各種邏輯運(yùn)算,包括與、或、異或、清零、取反等操作。所述位處理器80,用于完成各種位操作,包括位的與、或、清零、取反、置位等操作。所述數(shù)據(jù)通路選擇器20,用于根據(jù)譯碼控制器的控制信號(hào),來(lái)選擇輸出端口的數(shù) 據(jù)源。本發(fā)明通過(guò)采用操作碼復(fù)用,功能模塊復(fù)用的方法,優(yōu)化算術(shù)邏輯單元的系統(tǒng)結(jié) 構(gòu),節(jié)省硬件資源消耗,減少芯片面積,在保證功能正確的前提下達(dá)到了降低芯片成本的目 的。 1、操作碼復(fù)用算術(shù)邏輯單元共有34種算術(shù)或邏輯操作,按照常規(guī)的譯碼器設(shè)計(jì)方法,算術(shù)邏輯 單元操作碼(alu_0p)的最佳位數(shù)η應(yīng)滿足以下公式2η_1 < 34 < 2η可解得η的最佳值為6,使32 < 34 < 64,即須用6位操作碼對(duì)算術(shù)邏輯單元每種 操作進(jìn)行編碼。而本發(fā)明在通過(guò)細(xì)致剖析算術(shù)邏輯單元操作的數(shù)據(jù)流行為,采用操作碼復(fù) 用方法,使算術(shù)邏輯單元操作碼僅為5位就可以實(shí)現(xiàn)算術(shù)邏輯單元34種操作的編碼。操作 碼復(fù)用的基本思想是對(duì)兩種不同的操作使用一個(gè)共同的操作碼,而不對(duì)功能的正確性產(chǎn) 生任何影響。在算術(shù)邏輯單元操作中,字節(jié)清零操作(alu_CLR)將目的操作數(shù)1清零,但不影響 目的狀態(tài)字(PSW);進(jìn)位標(biāo)志清零操作(alu_CLR_Cy),則將目的狀態(tài)字(PSW)的進(jìn)位標(biāo)志 (Cy)清零,但不影響目的操作數(shù)1。由于上述兩種操作的所影響的輸出無(wú)交疊之處,故對(duì)它 們采用相同的算術(shù)邏輯單元操作碼“5’ bOOOOl”。接下來(lái)說(shuō)明中央處理器(CPU)將如何根據(jù)同一操作碼區(qū)分兩種不同的操作。當(dāng)中 央處理器執(zhí)行指令“CLR A”或“CLR C”時(shí),中央處理器的譯碼器將數(shù)據(jù)“5,bOOOOl”傳送 到算術(shù)邏輯單元的操作碼端口,算術(shù)邏輯單元的譯碼控制器10控制邏輯運(yùn)算器進(jìn)行字節(jié) 清零操作(alu_CLR),同時(shí)控制位處理器(80)進(jìn)行進(jìn)位標(biāo)志清零操作(alu_CLR_Cy)。兩種 操作并行執(zhí)行后,數(shù)據(jù)通路選擇器20將字節(jié)清零操作的結(jié)果傳送到目的操作數(shù)1,將進(jìn)位 標(biāo)志清零的結(jié)果傳送到目的狀態(tài)字(PSW)。中央處理器執(zhí)行上述兩種指令時(shí)的不同之處在 于執(zhí)行指令“CLR C”時(shí),譯碼器發(fā)出的狀態(tài)字更新信號(hào)(pSW_Set)有效,影響狀態(tài)字,但不 將算術(shù)邏輯單元目標(biāo)操作數(shù)1取出;而執(zhí)行指令“CLR A”時(shí),將算術(shù)邏輯單元目標(biāo)操作數(shù)1 取出,但狀態(tài)字更新信號(hào)(pSW_Set)無(wú)效,不影響狀態(tài)字。也即,執(zhí)行指令“CLR C”的操作 結(jié)果是將狀態(tài)字的進(jìn)位標(biāo)志清零,但不影響其它;而執(zhí)行“CLR A”的操作結(jié)果是將累加 器(A)清零,但不影響其它。這表明在采用同一算術(shù)邏輯單元操作碼的前提下,兩條指令 執(zhí)行時(shí)都實(shí)現(xiàn)了正確功能。當(dāng)然并不是每?jī)煞N算術(shù)邏輯單元操作都可以進(jìn)行操作碼復(fù)用,只有當(dāng)兩種操作對(duì) 目的操作數(shù)和目的狀態(tài)的影響無(wú)交疊部分時(shí)才能復(fù)用同一操作碼。本發(fā)明在34種操作中 取出7對(duì)操作進(jìn)行操作碼復(fù)用,即采用27個(gè)操作碼實(shí)現(xiàn)了對(duì)34種操作的編碼,使操作碼從 6位編碼降到了 5位編碼。通過(guò)操作碼復(fù)用,減少算術(shù)邏輯單元操作碼個(gè)數(shù),可降低譯碼控 制器以及算術(shù)邏輯單元外圍模塊的實(shí)現(xiàn)復(fù)雜度和硬件資源消耗,從而降低芯片實(shí)現(xiàn)成本。
2.功能模塊復(fù)用功能模塊復(fù)用的基本思想是若多個(gè)父功能模塊中都要需要實(shí)現(xiàn)某一子功能,則不必為每個(gè)功能模塊分別設(shè)置獨(dú)立的子功能模塊,而是只設(shè)置一個(gè)子功能模塊,通過(guò)設(shè)計(jì) 數(shù)據(jù)通路使所有父功能模塊共享這個(gè)子模塊。本方面對(duì)加法器模塊采用功能模塊復(fù)用,使加法操作(ADD)、帶進(jìn)位加法操作 (ADDC),增量操作(INC),減法操作(SUB)、帶借位減法操作(SUBB)、減量操作(DEC)、比較操 作(CMP)、乘法操作(MUL)、除法操作(DIV)共同復(fù)用同一個(gè)加法器。加法器的工作原理是 將輸入端的sl、s2和ci三者相加,相加結(jié)果出現(xiàn)在端口 dl,進(jìn)位標(biāo)志出現(xiàn)在端口 Co (其他 標(biāo)準(zhǔn)位未在圖中畫出)。下面詳細(xì)說(shuō)明加法器模塊復(fù)用的實(shí)現(xiàn)過(guò)程如算術(shù)邏輯單元的操作碼為加法操作(ADD),則譯碼控制器將源操作數(shù)1傳輸?shù)?加法器的si端,將源操作數(shù)2傳入到加法器s2端,將立即數(shù)“O”傳入加法器ci端,加法器 運(yùn)算后,相加結(jié)果出現(xiàn)在dl端,進(jìn)位標(biāo)志出現(xiàn)在Co端。如算術(shù)邏輯單元的操作碼為帶進(jìn)位加法操作(ADDC),則譯碼控制器將源操作數(shù)1 傳輸?shù)郊臃ㄆ鞯膕i端,將源操作數(shù)2傳入到加法器s2端,將源狀態(tài)字的進(jìn)位標(biāo)志傳入加法 器ci端,加法器運(yùn)算后,相加結(jié)果出現(xiàn)在dl端,進(jìn)位標(biāo)志出現(xiàn)在Co端。如算術(shù)邏輯單元的操作碼為增量操作(INC),則譯碼控制器將源操作數(shù)1傳輸?shù)?加法器的si端,將立即數(shù)“1”傳入加法器ci端,加法器運(yùn)算后,相加結(jié)果出現(xiàn)在dl端,進(jìn) 位標(biāo)志出現(xiàn)在CO端,但進(jìn)位標(biāo)志不會(huì)從算術(shù)邏輯單元輸出。如算術(shù)邏輯單元的操作碼為帶借位減法操作(SUBB),則譯碼控制器將源操作數(shù)1 傳輸?shù)郊臃ㄆ鞯膕i端,將源操作數(shù)2的反碼的傳入到加法器s2端,將源狀態(tài)字的進(jìn)位標(biāo) 志的反相后傳入加法器ci端,加法器運(yùn)算后,相加結(jié)果出現(xiàn)在dl端,進(jìn)位標(biāo)志出現(xiàn)在C0 端。帶借位減法操作(SUBB)應(yīng)實(shí)現(xiàn)dl = sl-s2-ci,須借位時(shí)C0 = 1。減法可采用補(bǔ)碼 (反碼加1)相加的方法來(lái)實(shí)現(xiàn)。本發(fā)明用加法器來(lái)實(shí)現(xiàn)減法操作,即dl = sl-s2-ci = sl+( s2+l) + ( ci+l),由于ci為1位數(shù),故 ci+Ι = ci-1。可得dl = si+ s2+ ci,co為 加法進(jìn)位,若C0 = 1,表示無(wú)借位,目的狀態(tài)字的進(jìn)位標(biāo)志Cy為0,C0 = O,表示有借位,目 的狀態(tài)字目的狀態(tài)字的進(jìn)位標(biāo)志Cy為1。如算術(shù)邏輯單元的操作碼為減量操作(DEC),則譯碼控制器將源操作數(shù)1傳輸?shù)?加法器的Sl端,將立即數(shù)“Fm”傳入加法器S2端,加法器運(yùn)算后,相加結(jié)果出現(xiàn)在dl端, 進(jìn)位標(biāo)志出現(xiàn)在CO端,但進(jìn)位標(biāo)志不會(huì)從算術(shù)邏輯單元輸出。說(shuō)明dl = sl+FFH = Sl-l, 即實(shí)現(xiàn)了減1操作。如算術(shù)邏輯單元的操作碼為比較操作(CMP),則譯碼控制器將源操作數(shù)1傳輸?shù)?加法器的si端,將源操作數(shù)2的反碼傳入加法器s2端,將立即數(shù)“1”傳入ci端。加法器 運(yùn)算后,相加結(jié)果出現(xiàn)在dl端,進(jìn)位標(biāo)志出現(xiàn)在Co端。說(shuō)明dl = sl-s2 = sl+^s2+l, co 為加法進(jìn)位,若C0 = 1,表示無(wú)借位,目的狀態(tài)字的進(jìn)位標(biāo)志Cy為0,co = 0,表示有借位, 目的狀態(tài)字的進(jìn)位標(biāo)志Cy為1。如算術(shù)邏輯單元的操作碼為乘法操作(MUL),則譯碼控制器控制下的數(shù)據(jù)通路如 附圖2所示將源操作數(shù)1接乘法控制器的si端,源操作數(shù)2接加法器s2端,加法器的dl 端接乘法控制器的s2端,將加法器si端的乘法控制器d2端,另外乘法控制器的elk端接 系統(tǒng)時(shí)鐘。實(shí)現(xiàn)乘法的算法采用移位相加法,兩個(gè)8位無(wú)符號(hào)數(shù)相乘需8次移位相加,也即需要8個(gè)時(shí)鐘來(lái)執(zhí)行,第8個(gè)時(shí)鐘之后乘法運(yùn)算結(jié)果的高8位出現(xiàn)的端口 d2,低8位出現(xiàn)在 dl,此時(shí)中央處理器會(huì)將此結(jié)果取出并保存到相應(yīng)寄存器中。
如算術(shù)邏輯單元的操作碼為除法操作(DIV),則譯碼控制器控制下的數(shù)據(jù)通路如 附圖3所示將源操作數(shù)1接除法控制器的si端,源操作數(shù)2反相后接加法器s2端,立即 數(shù)“1”接ci端,加法器的dl端接除法控制器的s2端,將加法器si端的除法控制器d2端, 另外除法控制器的elk端接系統(tǒng)時(shí)鐘。實(shí)現(xiàn)除法的算法采用恢復(fù)余數(shù)法,兩個(gè)8位無(wú)符號(hào) 數(shù)相除需8次移位運(yùn)算,也即需要8個(gè)時(shí)鐘來(lái)執(zhí)行,第8個(gè)時(shí)鐘之后除法運(yùn)算的商出現(xiàn)的端 口 dl,余數(shù)出現(xiàn)在d2,此時(shí)中央處理器會(huì)將此結(jié)果取出并保存到相應(yīng)寄存器中。
權(quán)利要求
一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元,由譯碼控制器、加法器、乘法控制器、除法控制器、十進(jìn)制數(shù)調(diào)整器、邏輯運(yùn)算器,位處理器和數(shù)據(jù)通路選擇器組成,其特征在于譯碼控制器對(duì)輸入的算術(shù)邏輯單元操作碼進(jìn)行譯碼,并根據(jù)操作碼為加法器,乘法控制器,除法控制器,十進(jìn)制調(diào)整器,邏輯運(yùn)算器,位處理器這6種運(yùn)算模塊分配源操作數(shù)、源操作數(shù)和源標(biāo)志位,運(yùn)算模塊根據(jù)兩個(gè)源操作數(shù)和源標(biāo)志位進(jìn)行相應(yīng)運(yùn)算,并產(chǎn)生運(yùn)算結(jié)果;數(shù)據(jù)通路選擇器根據(jù)譯碼控制器器的控制信號(hào),選擇其中一組運(yùn)算結(jié)果輸出,輸出信號(hào)包括目的操作數(shù)、目的操作數(shù)和目的標(biāo)志位。
2.如權(quán)利要求1所述的一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元,其特征在 于在算術(shù)邏輯單元的34種操作中取出7對(duì)操作進(jìn)行操作碼復(fù)用。
全文摘要
本發(fā)明公開(kāi)了一種基于模塊與操作碼復(fù)用的低成本算術(shù)邏輯單元,由譯碼控制器、加法器、乘法控制器、除法控制器、十進(jìn)制數(shù)調(diào)整器、邏輯運(yùn)算器,位處理器和數(shù)據(jù)通路選擇器組成。本發(fā)明的有益效果本發(fā)明通過(guò)采用操作碼復(fù)用,功能模塊復(fù)用的方法,優(yōu)化算術(shù)邏輯單元的系統(tǒng)結(jié)構(gòu),節(jié)省硬件資源消耗,減少芯片面積,在保證功能正確的前提下達(dá)到了降低芯片成本的目的。
文檔編號(hào)G06F7/57GK101847088SQ20101010938
公開(kāi)日2010年9月29日 申請(qǐng)日期2010年2月5日 優(yōu)先權(quán)日2010年2月5日
發(fā)明者丁顏玉, 林克, 胡建國(guó), 譚洪舟, 鐘偉 申請(qǐng)人:譚洪舟