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

采用risc結(jié)構(gòu)的單片機的制作方法

文檔序號:6608482閱讀:404來源:國知局
專利名稱:采用risc結(jié)構(gòu)的單片機的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種單片微型計算機,特別是涉及一種采用RISC (Reduced Instruction Set Computer精簡指令集計算機)結(jié)構(gòu)的單片 機,該單片機支持MCS-51系列單片機指令。
背景技術(shù)
單片微型計算機簡稱單片機,是微型計算機的一個重要分支,也是一 種非?;钴S且頗具生命力的機種。單片機特別適用于控制領(lǐng)域,故又稱為 微控制器。
MCS-51系列單片機是Intel公司推出的8位單片機,在嵌入式系統(tǒng) 與裝備制造行業(yè)有廣泛的應(yīng)用。隨著電子行業(yè)的高速發(fā)展,各個行業(yè)對單 片機的運行速度要求越來越高,傳統(tǒng)的MCS-51單片機已逐漸不能滿足用 戶的需求。
Intel—MCS51系列單片機的指令處理涉及如下時間概念,時鐘周期、 機器周期、指令周期。
時鐘周期T又稱為振蕩周期,通常由內(nèi)部振蕩方式和外部振蕩方式兩 種電路形式得到。例如,某單片機使用的時鐘頻率為lMHz,則它的時鐘 周期應(yīng)為lus。
機器周期定義為實現(xiàn)特定功能所需要的時間,通常由若干時鐘周期構(gòu) 成。MCS-51系列單片機的機器周期是固定的,均由12個時鐘周期T組
成,分為6個狀態(tài)(S1 S6),每個狀態(tài)又分為P1和P2兩拍。因此,一 個機器周期中的12個時鐘周期可以表示為S1P1, S1P2, S2P1, S2P2,…, S6P2。
指令周期是時序中最大的時間單位,定義為執(zhí)行一條指令所需要的時 間。由于機器執(zhí)行不同指令所需要的時間不同,因此不同指令所包含的機 器周期數(shù)也不相同。通常,包含一個機器周期的指令稱為單周期指令,包 含兩個機器周期的指令稱為雙周期指令,包含四個機器周期的指令稱為四 周期指令。
Intel—MCS51系列單片機采用的是CISC (Complex Instruction Set Computer復(fù)雜指令集計算機),其指令的字節(jié)數(shù)不固定,分為單字節(jié)指令、 雙字節(jié)指令和三字節(jié)指令。執(zhí)行任何一條指令時都可以分為取指令階段和 執(zhí)行指令階段。在取指令階段可以把程序計數(shù)器PC中的地址送到程序儲 存器,并從中取出需要執(zhí)行指令的操作碼和操作數(shù)。指令執(zhí)行階段可以對 指令操作碼進(jìn)行譯碼,以產(chǎn)生一系列控制信號完成指令的執(zhí)行。

圖1給出 了 MCS-51系列單片機的取指令階段/執(zhí)行指令階段時序。由圖1可見,ALE (鎖存允許)引腳上出現(xiàn)的信號是周期性的,每個機器周期內(nèi)出現(xiàn)兩次高 電平,出現(xiàn)時刻為S1P2和S4P2,持續(xù)時間為一個狀態(tài)S。 ALE信號每出 現(xiàn)一次,CPU就進(jìn)行一次取指令操作,但由于不同指令的字節(jié)數(shù)和機器周 期數(shù)不同,因此取指令操作也隨指令不同而有小的差異。
單字節(jié)單指令周期指令的執(zhí)行時序這類指令的指令碼只有一個字 節(jié),存放在程序存儲器ROM中,單片機從取出指令碼到完成指令的執(zhí)行僅 需要一個機器周期。圖1中,單片機在ALE第一次有效(S1P1)時從ROM中讀出指令碼,把它送到指令寄存器,接著開始執(zhí)行指令階段。在執(zhí)行期
間,CPU —方面在ALE第二次有效(S4P2)時封鎖程序計數(shù)器PC加"1", 使第二次讀操作無效;另一方面在時鐘周期S6P2時完成指令的執(zhí)行。這 樣完成一句單字節(jié)單指令周期指令所需要的時間為單片機時鐘周期的12 倍。
雙字節(jié)單指令周期指令的執(zhí)行時序MCS-51系列單片機在執(zhí)行這類 指令時需要分兩次從ROM中讀出指令碼。圖1中,機器在ALE第一次有效
(S1P1)時從ROM中讀出指令碼,CPU進(jìn)行譯碼后便知道是雙字節(jié)指令, 故使程序計數(shù)器PC加"1",并在ALE第二次有效時讀出指令的第二字節(jié)
(程序計數(shù)器PC加"1"),最后在時鐘周期S6P2時完成指令的執(zhí)行。這 樣完成一句雙字節(jié)單周期指令所需要的時間為單片機時鐘周期的12倍。
單字節(jié)雙指令周期指令的執(zhí)行時序MCS-51系列單片機在執(zhí)行這類 指令時(參見圖1), CPU在機器周期的第一狀態(tài)SI期間從程序存儲器ROM 中讀出指令操作碼,進(jìn)行譯碼后便知道是單字節(jié)雙周期指令,故控制器自 動封鎖后面的連續(xù)三次讀操作,并在第二機器周期的時鐘周期S6P2時完 成指令的執(zhí)行。這樣完成一句單字節(jié)雙周期指令所需要的時間為單片機時 鐘周期的24倍。
MCS-51系列單片機的運行速度由于取指令階段和執(zhí)行指令階段的時 序一定,因此很難提高其運行速度,無法適應(yīng)現(xiàn)代技術(shù)的發(fā)展,滿足工控 系統(tǒng)對單片機運行速度提高的需求。
要提高現(xiàn)有MCS-51系列單片機運行速度,也可以采用改變指令系統(tǒng) 的RISC結(jié)構(gòu)實現(xiàn),但是人們無法利用以前MCS-51系列單片機的程序資源,
而且必須熟悉新的指令系統(tǒng)。因此在人們己經(jīng)熟悉MCS-51系列單片機指 令系統(tǒng)的情況下,不利于與現(xiàn)有技術(shù)的兼容和推廣應(yīng)用。

發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種采用RISC結(jié)構(gòu)的單片機,在保 持MCS-51系列單片機指令系統(tǒng)不變的情況下,有效地提高指令運行的速 度。
為解決上述技術(shù)問題,本發(fā)明的采用RISC結(jié)構(gòu)的單片機包括RAM 模塊,是一個256字節(jié)的隨機存取存儲器;特殊功能寄存器模塊,用于實 現(xiàn)單片機中特殊功能寄存器的功能;算術(shù)邏輯單元模塊,用組合邏輯來實 現(xiàn)二進(jìn)制數(shù)的算術(shù)運算和邏輯操作;算術(shù)邏輯單元的操作數(shù)選擇模塊,用 來給算術(shù)邏輯單元模塊提供所要進(jìn)行計算的數(shù)據(jù);進(jìn)位選擇模塊,用于給 算術(shù)邏輯單元模塊提供進(jìn)位信號;間接尋址模塊,用于處理指令中含有間 接尋址的操作;比較模塊,用于處理指令中有比較運算的操作;
其中,采用3級流水線的處理方式處理指令系統(tǒng);流水線在執(zhí)行單周 期指令的時運行,執(zhí)行雙周期指令和四周期指令時停止;
所述單片機還包括
ROM模塊,用于存放應(yīng)用程序,能夠在一個地址信號輸入后,輸出4個 連續(xù)的數(shù)據(jù);
取指令模塊,與RAM、 R0M、特殊功能寄存器和譯碼模塊連接,采用 等長指令的方式讀取指令;確定單片機程序計數(shù)器PC的值;從ROM模塊 中讀出應(yīng)用程序,完成流水線操作的第1階段取指令,將應(yīng)用程序分解成 操作碼與操作數(shù)傳輸給譯碼模塊;從中斷模塊接收到中斷信號后,返回中
斷響應(yīng)信號;
譯碼模塊從取指令模塊中取出將要執(zhí)行的操作碼與操作數(shù),根據(jù)操作
碼確定對其他模塊的控制信號,并完成流水線操作的第2階段執(zhí)行指令和 第3階段回寫內(nèi)存;譯碼模塊中的指令執(zhí)行狀態(tài)信號STATE,用于控制各 條指令的執(zhí)行階段。
本發(fā)明的有益效果是,給出了一種兼容已有MCS-51系列單片機程序 的單片機實現(xiàn)方式,在沒有改變MCS-51系列單片機指令系統(tǒng)的情況下, 指令以時鐘周期為運行單位,用等長指令的方式讀取指令,使用RISC結(jié) 構(gòu),并添加了 3級流水線來加快單片機的運行速度。指令運行速度比現(xiàn)有 MCS-51系列單片機提高8倍左右,最快可使8位MCU (微控制器)的性能 提高到80 100 MIPS (兆條指令每秒)左右,減少了冗余周期,能夠?qū)?現(xiàn)高速大量的數(shù)據(jù)流通,使單片機達(dá)到較高的性價比。
圖說明
下面結(jié)合附圖與具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明
圖1是現(xiàn)有的MCS-51系列單片機取指令階段/執(zhí)行指令階段時序圖2是本發(fā)明的實施方式中單片機內(nèi)核結(jié)構(gòu)框圖3、 4是圖2中的R0M模塊結(jié)構(gòu)圖5是本發(fā)明的實施方式中緩存器BUFFER的示意圖6是本發(fā)明的實施方式中各種指令周期的示意圖7是本發(fā)明的實施方式中運行單周期指令時控制流程示意圖8是本發(fā)明的實施方式中的中斷向量地址、中斷使能位、中斷優(yōu)先 級設(shè)定示意圖9是本發(fā)明的實施方式中實現(xiàn)中斷的電路圖。
具體實施例方式
CISC是要用最少的機器語言指令來完成所需的計算任務(wù)。比如對于 乘法運算,在CISC架構(gòu)的CPU上,可能需要這樣一條指令MUL A, B; 就可以將A和B中的數(shù)相乘并將結(jié)果儲存在A中。將A, B中的數(shù)據(jù)讀入 寄存器,相乘并將結(jié)果寫回內(nèi)存的操作全部依賴于CPU中設(shè)計的邏輯來實 現(xiàn)。
RISC架構(gòu)要求采用軟件來指定各個操作步驟。上面的例子如果要在 RISC架構(gòu)上實現(xiàn),將地址ADDRA、 ADDRB中的數(shù)據(jù)讀入寄存器,相乘和將 結(jié)果寫回內(nèi)存的操作都必須由軟件來實現(xiàn),例如MOVA, ADDRA; MOVB, ADDRB;圖L A, B; STR ADDRA, A。
本發(fā)明的實施方式中單片機使用新的內(nèi)核方案,在保持原有的 MCS-51系列單片機指令系統(tǒng)不變的情況下,用等長指令的方式處理 MCS-51系列單片機的指令,使用RISC結(jié)構(gòu),并添加3級流水線功能。
流水線是把一個重復(fù)的過程分解為若干個子過程,每個子過程可以與 其他子過程并行進(jìn)行。由于這種工作方式與工廠中的生產(chǎn)流水線十分相似, 因此稱為流水線技術(shù)。比如說進(jìn)行一個程序,把進(jìn)行取指令,執(zhí)行指令和 回寫內(nèi)存的操作分成3個子過程,這3個子過程可以并行進(jìn)行,就是一條 3級流水線。本發(fā)明的實施方式中各級流水線的功能是
取指令——從程序存儲器中取出一條指令,同時進(jìn)行指令譯碼,準(zhǔn)備 寄存器、存儲器的讀地址,讀/寫控制信號;
執(zhí)行指令——數(shù)據(jù)輸入ALU模塊進(jìn)行運算,同時準(zhǔn)備寄存器或存儲器
的寫地址;
回寫內(nèi)存——將ALU模塊輸出的運算結(jié)果寫入寄存器或存儲器中。 圖2是本發(fā)明的實施方式中單片機內(nèi)核結(jié)構(gòu)框圖。其中,各個功能模
塊均由外部的時鐘源提供時鐘信號,由外部的復(fù)位控制器提供復(fù)位信號。
每個模塊的具體功能及實現(xiàn)方法如下 1、 ROM模塊的功能及實現(xiàn)方法
ROM模塊,是用于存放應(yīng)用程序的存儲器,含有32K字節(jié),要滿足RISC 體系單片機流水線的要求,指令的操作碼和操作數(shù)必須同時輸出給IF模 塊。因此ROM模塊必須在接收到讀地址信號后的下一個周期輸出連續(xù)4 個8位的數(shù)據(jù)。
1. 1 ROM的結(jié)構(gòu)
使用FPGA (Field Programmable Gate Array現(xiàn)場可編程門陣列)內(nèi) 部的16個雙通道的隨機存取存儲器RAM組成ROM模塊。如圖3所示,所 述的雙通道RAM含有16384 bit的存儲空間,包括A、 B兩個通道。其中, WEA、 WEB分別為輸入RAM的兩個通道的寫信號。ENA、 ENB分別為輸入RAM 的兩個通道的使能信號。SSRA、 SSRB分別為輸入RAM的兩個通道的復(fù)位 信號。CLKA、 CLKB分別為輸入RAM的兩個通道的時鐘信號。ADDRA、 ADDRB 分別為輸入RAM的兩個通道的地址信號。DIA、 DIB分別為輸入RAM的兩 個通道的數(shù)據(jù)信號。D0A、 DOB分別為輸出RAM的兩個通道的數(shù)據(jù)信號。
將16個雙通道的RAM分成兩組R
R
[7]為1組、 R[1]
R[1][7]為l組。每組中各個RAM的A、 B兩個通道的地址信號 addrA和addrB分別設(shè)定同一地址。根據(jù)輸入到ROM的地址信號確定輸入
給每組中RAM的地址信號addrA和addrB的值,每組RAM都可以輸出2 個字節(jié)的數(shù)據(jù)。
圖4為ROM的結(jié)構(gòu)框圖,BIT表示ROM輸出端口的位數(shù),其范圍為0 7。 OFFSET表示ROM輸出端口的行數(shù),其范圍為0 1。 SEGMENT表示ROM 輸出端口的列數(shù),其范圍為0 16383。
1.2從R0M讀出數(shù)據(jù)的方法
當(dāng)輸入給ROM的地址address
= 0時,輸出的4個8位的數(shù)據(jù)分 別是
OFFSET = O行,SEGMENT = address[14: l]上的8位數(shù)據(jù)DATAO; OFFSET = l行,SEGMENT = address[14: l]上的8位數(shù)據(jù)DATA1; OFFSET 二 0行,SEGMENT = address [14: 1] + 1上的8位數(shù)據(jù)DATA2; OFFSET = 1行,SEGMENT = address [14: 1] + 1上的8位數(shù)據(jù)DATA3。 當(dāng)輸入給ROM的地址address
= 1時,輸出的4個8位的數(shù)據(jù)分 別是
OFFSET = l行,SEGMENT 二 address [14: l]上的8位數(shù)據(jù)DATAO;
OFFSET = 0行,SEGMENT = address[14: 1] + 1上的8位數(shù)據(jù)DATA1;
OFFSET = 1行,SEGMENT = address[14: 1] + 1上的8位數(shù)據(jù)DATA2;
OFFSET = 0行,SEGMENT = address [14: 1] + 2上的8位數(shù)據(jù)DATA3。
將所述的4個數(shù)據(jù)DATAO 、 DATA1、 DATA2和DATA3進(jìn)行輸出。這 樣,ROM模塊能夠在輸入一個地址信號address后,輸出連續(xù)4個8位數(shù) 據(jù)。
2、 IF模塊(取指令模塊)的功能及實現(xiàn)方法
IF模塊用等長指令的方式讀取指令(在本發(fā)明的實施方式中由于沒
有改變原MCS-51系列單片機的指令系統(tǒng),所以所述的指令均為原MCS-51 系列單片機的指令);確定單片機程序記數(shù)器PC的值;根據(jù)PC的值從ROM 模塊中讀出指令,完成了流水線操作的第1階段取指令,將應(yīng)用程序分解 成操作碼與操作數(shù)傳輸給Decoder模塊;接收從Decoder模塊傳輸過來的 控制信號來確定讀寫RAM的地址。接收中斷信號并返回響應(yīng)信號。 2.1、取指令過程
要實現(xiàn)RISC體系結(jié)構(gòu),必須滿足所有指令都是等長的。但是MCS-51 系列單片機采用的是CISC結(jié)構(gòu)體系,其指令是由操作碼0P1和操作數(shù) 0P2、 0P3決定的。當(dāng)指令是單字節(jié)指令時,指令等于操作碼0P1;當(dāng)指令 是雙字節(jié)指令時,指令等于操作碼0P1加上操作數(shù)0P2;當(dāng)指令是三字節(jié) 指令時,指令等于操作碼0P1加上操作數(shù)0P2和0P3。由于操作碼0P1、 操作數(shù)0P2和0P3都是8位的2進(jìn)制數(shù),這樣由操作碼和操作數(shù)組成的指 令長度是不定的。IF模塊通過對單地址多數(shù)據(jù)輸出的ROM操作實現(xiàn)對不 等長指令的一次性提取。
IF模塊從ROM模塊中讀出應(yīng)用程序, 一次讀出四個字節(jié)的數(shù)據(jù)。建立一 個8個字節(jié)緩存器BUFFER,緩存器BUFFER的結(jié)構(gòu)如圖5所示。其中,BUFFER[O] BUFFER[7]表示緩存器BUFFER中的8個8比特數(shù)據(jù)。op』os表示當(dāng)前指令的 操作碼0P1在這個緩存器BUFFER中的位置,opjos值的范圍是"0 7"; op—length表示當(dāng)前指令的長度,取值范圍是l、 2或3。 一條MCS-51系列單 片機指令最少l個字節(jié)(l個操作碼沒有操作數(shù)),最多3個字節(jié)(l個操作 碼和2個操作數(shù))。因此一次從R0M讀出的數(shù)據(jù)必須大于等于3個字節(jié),而且ROM中讀出的數(shù)據(jù)的個數(shù)是偶數(shù),所以ROM需要在一個地址信號輸入后的下 一個周期,輸出自該地址起多個連續(xù)地址存儲單元中的數(shù)據(jù)。
在單片機系統(tǒng)初始化時,op—pos的值為"00H",程序計數(shù)器PC的值為 "0000H"。緩存器BUFFER的值為"0000—0000—0000—0000H",單片機的操 作碼0P1,操作數(shù)0P2和0P3的值為"00H"。由于程序計數(shù)器PC的值為"0000H", ROM模塊就將地址是0OH 03H的數(shù)據(jù)放入IF模塊中的緩存器BUFFER的高32 位中,op』os所指向的緩存器BUFFER最低位的一個字節(jié)"0"位置的數(shù)據(jù) 作為當(dāng)前指令的操作碼0P1,由于0P1等于"00H"是空操作"NOP"指令, 該指令所對應(yīng)的op—length的值為"1"。下一個周期,op—pos等于opjos 加上op—length的值為"1" , opjos所指向的緩存器BUFFER的一個字節(jié)"l" 位置上的數(shù)據(jù)。這一位的數(shù)據(jù)仍然為"00H" , op—length的值為"1",單 片機繼續(xù)執(zhí)行空操作"N0P"指令。直到4個周期后,叩jos指向緩存器BUFFER 的第4個字節(jié),才開始真正的執(zhí)行單片機的指令。因此單片機需要4個周期 進(jìn)行程序的初始化。
操作任何一條指令時,opjos表示當(dāng)前指令的操作碼OPl在這個緩存器 BUFFER中的位置,然后根據(jù)操作碼確定op—length的值。由于0P1、 0P2和0P3 是連續(xù)的單字節(jié)數(shù)據(jù)。下面的式3表示了0P1、 0P2和0P3從緩存器BUFFER的 取值方法
當(dāng)opj)os = i , op—length的值等于"1"時 0P1 = BUFFER[i]; 0P2 = 00; 0P3 = 00。
當(dāng)opjos = i , opjength的值等于"2"時 (式3) 0P1 = BUFFER[i]; 0P2 = BUFFER[i+l]; 0P3 = 00。
當(dāng)opjos = i , op—length的值等于"3"時 0P1 二 BUFFER[i]; 0P2 二 BUFFER[i+l]; OP3 = BUFFER[i+2]。
其中,BUFFER[i]表示緩存器BUFFER的第i個字節(jié),ie[O, 7]。 2.2、確定單片機程序記數(shù)器PC的值
程序計數(shù)器PC是一個二進(jìn)制16位的程序地址寄存器,專門用來存放下 一條需要執(zhí)行指令的內(nèi)存地址。當(dāng)系統(tǒng)復(fù)位時,程序計數(shù)器PC的值為"0"。 影響PC指針的信號有opjpos、 op—length和運行轉(zhuǎn)移指令或產(chǎn)生中斷后的目 的地址。當(dāng)非跳躍轉(zhuǎn)移指令或非中斷程序運行時,當(dāng)前指令的取指令結(jié)束 后,這時判斷op』os的值加上op—length的值是否大于6;若小于等于6時, opjos的值等于前一個opjos的值加上op—length的值,然后進(jìn)行新一輪的 取指令過程;若大于6時,使程序計數(shù)器PC的值等于它的當(dāng)前值加上"4", 將當(dāng)前緩存器BUFFER高4個字節(jié)的數(shù)據(jù)放到低4個字節(jié)中去。由于程序計數(shù) 器PC的值發(fā)生了變化,從R0M模塊讀出的新的4個字節(jié)數(shù)據(jù)放到緩存器 BUFFER的高4個字節(jié)中,同時op一pos的值等于前一個(Dpjos的值加上 op—length的值減去"4",然后進(jìn)行新一輪的取指令過程。如式4所示
非跳躍轉(zhuǎn)移指令或非中斷程序運行時
當(dāng)op—pos + op—length《6時
op_pos = op_pos + op—length; PC = PC。
當(dāng)op—pos + op一length > 6時 (式4) op—pos 二 op_pos + op_length - 4 ; PC = PC + 4。 當(dāng)跳躍轉(zhuǎn)移指令或產(chǎn)生中斷
OP—POS = 4 ;
PC =跳躍轉(zhuǎn)移的目的地址或中斷向量的地址。 3、 Decoder模塊(譯碼模塊)的實現(xiàn)
Decoder模塊是本發(fā)明的實施方式中一個關(guān)鍵模塊,該模塊從IF模 塊中取出將要執(zhí)行的操作碼,根據(jù)操作碼產(chǎn)生對其他模塊的控制信號,并 在執(zhí)行指令階段和回寫內(nèi)存階段中采用了流水線機制。
MCS-51系列單片機的指令按照周期劃分可以分為單周期指令、雙周 期指令和四周期指令。在本發(fā)明的實施方式中RISC體系單片機使用3級 流水線機制,同時可以進(jìn)行取指令操作、執(zhí)行指令操作和回寫內(nèi)存。每條 指令在進(jìn)行取指令操作和回寫內(nèi)存都需要1個周期的時間,而執(zhí)行指令階 段所需要的周期數(shù)不一定相同。圖6為單周期指令、雙周期指令和4周期 指令運行的時序以及指令執(zhí)行狀態(tài)信號STATE的變化過程。
Decoder模塊中的指令執(zhí)行狀態(tài)信號STATE用于控制各條指令在流水 線操作中的各個階段,其默認(rèn)狀態(tài)為"4"。根據(jù)從IF模塊傳輸過來的操 作數(shù)對指令執(zhí)行狀態(tài)信號STATE進(jìn)行賦值。當(dāng)操作數(shù)是單周期指令時,指
令執(zhí)行狀態(tài)信號STATE保持"4"不變;當(dāng)操作數(shù)是雙周期指令時,指令 執(zhí)行狀態(tài)信號STATE的狀態(tài)依次為"4" -〉 "6" -〉 "5",每一個狀態(tài) 保持l個時鐘周期;當(dāng)操作數(shù)是四周期指令時,指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)依次為"4" -〉 "7" -〉 "6" -〉 "5",每個狀態(tài)保持1個時 鐘周期。
在本發(fā)明的實施方式中,四周期指令有5條指令 MUL AB; DIV AB; RET; RETI; LCALL address16。 雙周期指令有18條指令
ACALLaddressll; LJMP addressl6; AJMP addressll; SJMP rel; JMP @A + DPTR; CJNZ A ,#data ,rel; CJNZ A ,direct ,rel; CJNZ Rn ,#data ,rel; CJNZ Rn ,direct, rel; JZ rel; JNZ rel; DJNZ Rn, direct ,rel; DJNZ Rn , ftdata , rel; JC rel; JTC rel; JB bit,rel; JNB bit , rel; JBC bit , rel。 其余的指令都是單周期指令。
流水線只有在執(zhí)行單周期指令的時候才運行,而執(zhí)行雙周期指令和四 周期指令的時候停止。
3. 1單周期指令的實現(xiàn)
單周期指令需要3個時鐘周期才能完成。指令的第1個時鐘周期由 IF模塊進(jìn)行流水線第1階段取指令操作,指令的后2個時鐘周期在 Decoder模塊中完成。
在指令操作的第2個時鐘周期,Decoder模塊中的流水線第2階段實 現(xiàn)以下操作(1) 、選擇讀RAM模塊的地址或者寄存器,輸出給取指令模塊。
(2) 、將指令跳躍的標(biāo)志信號輸出給取指令模塊。
(3) 、當(dāng)發(fā)生指令跳躍時,將指令跳躍的目的地址輸出給取指令模塊。
(4) 、在算術(shù)比較指令中,選擇RAM的地址或者寄存器,并輸出給比 較模塊。
(5) 、將位操作的標(biāo)志信號輸出給取指令模塊。 在指令操作的第3個時鐘周期,Decoder模塊中的流水線第3階段
實現(xiàn)以下操作
(1)、選擇寫RAM模塊的地址或者寄存器,輸出給取指令模塊。 (2 )、將運行該條指令所需要的操作數(shù)輸出給算術(shù)邏輯單元的操作數(shù) 選擇模塊。
(3) 、將ALU模塊要進(jìn)行的操作符,輸出給算術(shù)邏輯單元模塊。
(4) 、產(chǎn)生寫信號,輸出給取指令模塊、特殊功能寄存器模塊、間接 尋址模塊和RAM模塊。
(5) 、選擇對特殊功能寄存器模塊中的程序狀態(tài)字PSW寄存器進(jìn)行操
作的標(biāo)志信號。
(6) 、選擇算術(shù)邏輯單元模塊計算進(jìn)位標(biāo)志位,輸出給進(jìn)位模塊。
(7 )、產(chǎn)生對特殊功能寄存器模塊中的累加器ACC或寄存器指針DPTR 進(jìn)行更新的標(biāo)志信號。
運行單周期指令時,只有當(dāng)兩條連續(xù)的指令都是單周期指令時流水線 才會啟動,直到出現(xiàn)非單周期指令為止。流水線運行時,第2條單周期指 令的流水線第1階段的工作與第1條單周期指令的流水線第2階段的工作
同時進(jìn)行,即當(dāng)?shù)?條指令在進(jìn)行執(zhí)行指令的時候,第2條指令的正在進(jìn)
行取指令操作。第2條單周期指令的流水線第3階段的工作與第1條單周 期指令的流水線第2階段的工作同時進(jìn)行,即當(dāng)?shù)?條指令在進(jìn)行回寫內(nèi) 存的時候,第2條指令的正在進(jìn)行執(zhí)行指令操作。這樣大大增加了單片機 的工作效率。具體流程如圖7所示。 3. 2雙周期指令的實現(xiàn)
當(dāng)執(zhí)行的是雙周期指令時,流水線停止,取指令操作、執(zhí)行指令操作 和回寫內(nèi)存操作不能并行進(jìn)行,只能按照順序依次進(jìn)行。雙周期指令需要 4個時鐘周期完成指令的操作。在取指令模塊中進(jìn)行取指令操作需要1個 周期,指令的后3個時鐘周期在Decoder模塊中完成。Decoder模塊中的 指令執(zhí)行狀態(tài)信號STATE的狀態(tài)依次為"4" -> "6" -> "5",每個狀 態(tài)保持一個時鐘周期。
執(zhí)行雙周期指令中的跳躍指令(如ACALL addressll; LJMP addressl65 等)。
執(zhí)行跳躍指令操作的第1個時鐘周期,在取指令模塊中進(jìn)行取指令操作。
在執(zhí)行跳躍指令操作的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)為"4",產(chǎn)生跳躍的標(biāo)志信號,并選擇跳躍的目的地址,輸出給 取指令模塊。
在執(zhí)行跳躍指令操作的第3個時鐘周期,指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)為"6",此階段算術(shù)邏輯單元模塊進(jìn)行計算或者取指令模塊進(jìn)行 信號處理。
在執(zhí)行跳躍指令操作的第4個時鐘周期,指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)為"5" , (1)選擇進(jìn)行寫的寄存器是堆棧指針,輸出給取指令模 塊。(2)將PC的值輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊。(3)將運算 符空操作,輸出給算術(shù)邏輯單元模塊。(4)將位操作的標(biāo)志信號輸出給取 指令模塊。
執(zhí)行MCS-51的雙周期指令中的比較轉(zhuǎn)移指令(如CJNZA, ftdata,rel; DJNZ Rn, direct ,rel;等)。
執(zhí)行比較轉(zhuǎn)移指令操作的第1個時鐘周期,在取指令模塊中進(jìn)行取指 令操作。
在執(zhí)行比較轉(zhuǎn)移指令操作的第2個時鐘周期,指令執(zhí)行狀態(tài)信號 STATE的狀態(tài)為"4",選擇對RAM進(jìn)行讀的地址或者寄存器,例如上兩 條指令選擇對寄存器ACC和Rn進(jìn)行讀操作,輸出給取指令模塊。
在執(zhí)行比較轉(zhuǎn)移指令操作的第3個時鐘周期,指令執(zhí)行狀態(tài)信號 STATE的狀態(tài)為"6" , (1)將指令跳躍的標(biāo)志信號輸出給取指令模塊; (2)當(dāng)發(fā)生指令跳躍時,將指令跳躍的目的地址輸出給取指令模塊;(3) 在算術(shù)比較指令中,選擇RAM的地址或者寄存器,并輸出給比較模塊;(4) 將位操作的標(biāo)志信號輸出給取指令模塊。
在執(zhí)行比較轉(zhuǎn)移指令操作的第4個時鐘周期,指令執(zhí)行狀態(tài)信號 STATE的狀態(tài)為"5",此階段算術(shù)邏輯單元模塊進(jìn)行計算或者取指令模 塊進(jìn)行信號處理。
3. 3四周期指令的實現(xiàn)
當(dāng)執(zhí)行的是四周期指令時,流水線停止,取指令操作、執(zhí)行指令操作
和回寫內(nèi)存操作不能并行進(jìn)行,只能按照順序依次進(jìn)行。四周期指令需要
5個時鐘周期完成指令的操作。IF模塊中進(jìn)行取指令操作需要一個周期, 指令的后4個時鐘周期在Decoder模塊中完成。指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)依次為"4"-> "7"—〉 "6" -> "5",每個狀態(tài)保持l個時鐘周期。
執(zhí)行四周期指令的乘除法指令。
執(zhí)行乘除法指令操作的第1個時鐘周期,在取指令模塊中進(jìn)行取指令 操作。
執(zhí)行乘除法指令的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"4",設(shè)置取指令模塊準(zhǔn)備讀取寄存器B和累加器ACC的值。
執(zhí)行乘除法指令的第3個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"7" , (1)將運行該條指令所需要的操作數(shù)(累加器ACC或RAM模塊 的值)輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊;(2)將操作符(乘法或除 法),輸出給算術(shù)邏輯單元模塊;(3)將算術(shù)邏輯單元模塊計算中產(chǎn)生的 進(jìn)位標(biāo)志位和溢出標(biāo)志,輸出給特殊功能寄存器模塊中的PSW寄存器。
執(zhí)行乘除法指令的第4個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"6",此階段算術(shù)邏輯單元模塊進(jìn)行運算。
執(zhí)行乘除法指令的第5個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"5" , (1)選擇要進(jìn)行寫的寄存器B和累加器ACC,輸出給IF模塊; (2)將運行該條指令所需要的操作數(shù)(SFR模塊中的累加器ACC和RAM 模塊)輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊;(3)將ALU模塊要進(jìn)行的 操作符(乘法或除法),輸出給ALU模塊;(4)產(chǎn)生寫信號輸出給取指令
模塊、特殊功能寄存器模塊、間接尋址模塊和RAM模塊;(5)將算術(shù)邏輯 單元模塊計算中產(chǎn)生的進(jìn)位標(biāo)志位和溢出標(biāo)志,輸出給特殊功能寄存器模 塊中的PSW寄存器;(6)產(chǎn)生對特殊功能寄存器模塊中的累加器ACC或寄 存器指針DPTR進(jìn)行更新的標(biāo)志信號。 執(zhí)行四周期指令的返回指令。
執(zhí)行返回指令操作的第1個時鐘周期,在取指令模塊中進(jìn)行取指令操作。
執(zhí)行返回指令的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "4",選擇要進(jìn)行讀的堆棧指針寄存器SP,輸出給取指令模塊。
執(zhí)行返回指令的第3個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "7" , (1)將指令跳躍的標(biāo)志信號輸出給取指令模塊;(2)當(dāng)前指令會 產(chǎn)生跳躍操作的標(biāo)志信號;(3)將指令跳躍的目的地址輸出給取指令模 塊;(4)將運行該條指令所需要的操作數(shù)(RAM中的值)輸出給算術(shù)邏輯 單元的操作數(shù)選擇模塊;(5)將操作符空操作,輸出給算術(shù)邏輯單元模塊。 執(zhí)行返回指令的第4個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "6",將指令跳躍的標(biāo)志信號和指令跳躍的目的地址,輸出給取指令模 塊。
執(zhí)行返回指令的第5個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "5",此階段算術(shù)邏輯單元模塊進(jìn)行計算或者取指令模塊進(jìn)行信號處理。 4、 RAM模塊
RAM模塊是一個256字節(jié)的隨機存取存儲器,地址范圍是00H FFH。 與MCS-51系列單片機的實現(xiàn)方法一致,功能基本相同。只是因為本發(fā)明
的實施方式中單片機內(nèi)核運用了 3級流水線,當(dāng)對同一個地址進(jìn)行了寫操 作后馬上對它進(jìn)行讀操作時,會出現(xiàn)相關(guān)現(xiàn)象。相關(guān)現(xiàn)象是指在一個流水 線系統(tǒng)中,如果第二條指令需要用到第一條指令的結(jié)果。本發(fā)明出現(xiàn)相關(guān)現(xiàn)象時,
即寫RAM模塊的地址與讀RAM模塊的地址相同,并且進(jìn)行讀RAM操作,則 讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同。
5、 SFR模塊(特殊功能寄存器模塊)
SFR模塊主要是實現(xiàn)特殊功能寄存器的功能。它與MCS-51系列單片 機的結(jié)構(gòu)與功能基本一致。本發(fā)明出現(xiàn)相關(guān)現(xiàn)象時,即寫SFR模塊的地址 與讀SFR模塊的地址相同,并且進(jìn)行讀RAM操作,則讀出的數(shù)據(jù)與寫入的 數(shù)據(jù)相同。
6、 INT模塊(中斷模塊)
INT模塊用于實現(xiàn)單片機的中斷功能,與MCS-51系列單片機的實現(xiàn)方法
和功能基本一致。本發(fā)明的實施方式中有四個中斷優(yōu)先級別的中斷結(jié)構(gòu), 可以支持10個中斷源。每個中斷源可以通過對寄存器IEN0和IEN1中的相應(yīng) 位置位或清零來使能和禁能。其中IENO中的EA位可關(guān)閉所有中斷。每個中 斷源可被單獨設(shè)置為四個中斷優(yōu)先級之一,分別通過清零或置寄存器IPO、 IPOH、 IP1、 IP1H中相應(yīng)位來實現(xiàn)(OO-最低,11-最高)。 一個中斷服務(wù)程 序可響應(yīng)更高級的中斷,但不能響應(yīng)同優(yōu)先級或低級中斷。最高級中斷服 務(wù)程序不響應(yīng)其它任何中斷,如果兩個不同中斷優(yōu)先級的中斷源同時申請 中斷時,響應(yīng)較高優(yōu)先級的中斷申請。在圖8中表示出了中斷向量的地址分 配、中斷的使能位以及中斷優(yōu)先級的設(shè)定位。圖9是實現(xiàn)中斷的電路結(jié)構(gòu)。 其中虛線部分為本發(fā)明擴充的中斷信號。7、 Alu—source—sel模塊(算術(shù)邏輯單元的操作數(shù)選擇模塊)
Alu—S0UrCe_Sel模塊是ALU模塊的一個輔助模塊,用來給ALU模塊 提供所要計算的數(shù)據(jù)。與MCS-51系列單片機的實現(xiàn)方法和功能一致。
8、 CY—SEL模塊(進(jìn)位模塊)
CY—SEL模塊是ALU模塊的一個輔助模塊,用來給ALU模塊提供進(jìn)位 信號。與MCS-51系列單片機的實現(xiàn)方法和功能一致。
9、 Indirect—addr模塊(間接尋址模塊)
Indirect—addr模塊用來處理指令中含有間接尋址的操作。與MCS-51 系列單片機的實現(xiàn)方法和功能一致。
10、 ALU模塊(算術(shù)邏輯單元模塊)
ALU模塊是用組合邏輯來實現(xiàn)二進(jìn)制數(shù)的算術(shù)運算和邏輯操作。其 中包括加法、帶進(jìn)位的加法、帶進(jìn)位的減法、乘法、除法、十進(jìn)制調(diào)整、 與操作、或操作、非操作、異或操作、左移、帶進(jìn)位的左移、右移、帶進(jìn) 位的右移、空操作、加"1"操作、減"1"操作和低四位與高四位交換操 作。與MCS-51系列單片機的實現(xiàn)方法和功能一致。
11、 Compare模塊(比較模塊)
Compare模塊來實現(xiàn)單片機中進(jìn)行數(shù)據(jù)比較的操作。與MCS-51系列 單片機的實現(xiàn)方法和功能一致。
以上的模塊組成了支持MCS-51系列單片機指令的RISC結(jié)構(gòu)的單片 機,并添加3級流水線功能,大大改善了原MCS-51系列單片^l的指令運 行速度。
權(quán)利要求
1、一種支持MCS-51指令集的RISC結(jié)構(gòu)單片機,包括RAM模塊,是一個256字節(jié)的隨機存取存儲器;特殊功能寄存器模塊,用于實現(xiàn)單片機中特殊功能寄存器的功能;算術(shù)邏輯單元模塊,用組合邏輯來實現(xiàn)二進(jìn)制數(shù)的算術(shù)運算和邏輯操作;算術(shù)邏輯單元的操作數(shù)選擇模塊,用來給算術(shù)邏輯單元模塊提供所要進(jìn)行計算的數(shù)據(jù);進(jìn)位選擇模塊,用于給算術(shù)邏輯單元模塊提供進(jìn)位信號;間接尋址模塊,用于處理指令中含有間接尋址的操作;其特征在于,采用3級流水線的處理方式處理指令系統(tǒng);流水線在執(zhí)行單周期指令的時候運行,執(zhí)行雙周期指令和四周期指令時停止;所述單片機還包括ROM模塊,用于存放應(yīng)用程序,能夠在一個地址信號輸入后,輸出4個連續(xù)的數(shù)據(jù);取指令模塊,與RAM、ROM、特殊功能寄存器和譯碼模塊連接,采用等長指令的方式讀取指令;確定單片機程序計數(shù)器PC的值;從ROM模塊中讀出應(yīng)用程序,完成流水線操作的第1階段取指令,將應(yīng)用程序分解成操作碼與操作數(shù)傳輸給譯碼模塊;從中斷模塊接收到中斷信號后,返回中斷響應(yīng)信號;譯碼模塊從取指令模塊中取出將要執(zhí)行的操作碼與操作數(shù),根據(jù)操作碼確定對其他模塊的控制信號,并完成流水線操作的第2階段執(zhí)行指令和第3階段回寫內(nèi)存;譯碼模塊中的指令執(zhí)行狀態(tài)信號STATE,用于控制各條指令的執(zhí)行階段。
2、 如權(quán)利要求1所述的單片機,其特征在于所述3級流水線中,第1階段取指令——從ROM模塊中取出一條指令,同時進(jìn)行指令譯碼, 準(zhǔn)備寄存器、存儲器的讀地址,讀/寫控制信號;第2階段執(zhí)行指令——數(shù)據(jù)輸入算術(shù)邏輯單元模塊進(jìn)行運算,同時準(zhǔn) 備寄存器或存儲器的寫地址;第3階段回寫內(nèi)存——將算術(shù)邏輯單元模塊輸出的運算結(jié)果寫入寄 存器或存儲器中。
3、 如權(quán)利要求1所述的單片機,其特征在于所述ROM模塊采用FPGA 內(nèi)部的16個雙通道的隨機存取存儲器RAM組成,將16個雙通道的RAM 分成兩組R
R
[7]為1組、R[1]
R[1][7]為1組;每組 中各個RAM的A、 B兩個通道的地址信號addrA和addrB分別設(shè)定同一地 址;根據(jù)輸入到ROM的地址信號確定輸入給每組中RAM的地址信號addrA 和addrB的值,每組RAM都可以輸出2個字節(jié)的數(shù)據(jù)。
4、 如權(quán)利要求3所述的單片機,其特征在于當(dāng)輸入給ROM的地址address
= 0時,輸出4個8位的數(shù)據(jù),分 別是OFFSET = O行,SEGMENT = address [14: l]上的8位數(shù)據(jù)DATAO; OFFSET = l行,SEGMENT = address [14: l]上的8位數(shù)據(jù)DATA1; OFFSET = 0行,SEGMENT = address [14: 1] + 1上的8位數(shù)據(jù)DATA2; OFFSET = 1行,SEGMENT = address [14: 1] + 1上的8位數(shù)據(jù)DATA3; 當(dāng)輸入給ROM的地址address
= 1時,輸出4個8位的數(shù)據(jù),分 別是OFFSET = l行,SEGMENT = address[14: l]上的8位數(shù)據(jù)DATAO; OFFSET = 0行,SEGMENT = address[14: 1] + 1上的8位數(shù)據(jù)DATAl; OFFSET = 1行,SEGMENT = address[14: 1] + 1上的8位數(shù)據(jù)DATA2; OFFSET = 0行,SEGMENT = address [14: 1] + 2上的8位數(shù)據(jù)DATA3; 將所述的4個數(shù)據(jù)DATAO 、 DATA1、 DATA2和DATA3進(jìn)行輸出; 其中,OFFSET表示ROM輸出端口的行數(shù),其范圍為0 1; SEGMENT表 示ROM輸出端口的列數(shù),其范圍為0 16383。
5、 如權(quán)利要求1所述的單片機,其特征在于 所述取指令模塊從ROM模塊中讀出應(yīng)用程序, 一次讀出四個字節(jié)的數(shù)據(jù);建立一個8個字節(jié)緩存器BUFFER,其中,BUFFER
BUFFER[7]表 示緩存器BUFFER中的8個8比特數(shù)據(jù);采用op_pOS表示當(dāng)前指令的操作 碼0P1在該緩存器BUFFER中的位置,取值范圍是"0 7" ; op—length 表示當(dāng)前指令的長度,取值范圍是l、 2或3; ROM模塊在一個地址信號輸 入后的下一個周期,輸出自該地址起多個連續(xù)地址存儲單元中的數(shù)據(jù)。
6、 如權(quán)利要求5所述的單片機,其特征在于在單片機系統(tǒng)初始化時,op—pos的值為"00H",程序計數(shù)器PC的值為 "0000H",緩存器BUFFER的值為"0000—0000—0000—0000H",單片機的操 作碼0P1,操作數(shù)OP2和OP3的值為"00H";R0M模塊將地址是00H 03H的數(shù)據(jù)放入緩存器BUFFER的高32位中, opjos所指向的緩存器BUFFER最低位的一個字節(jié)"0"位置的數(shù)據(jù)作為當(dāng)前 指令-空操作"NOP"指令的操作碼0P1,該指令所對應(yīng)的op—length的值為 "1";下一個周期,opjos的值等于前一個op—pos的值加上op—length的值為"1",叩jos所指向的緩存器BUFFER的一個字節(jié)"1"位置上的數(shù)據(jù); 這一位的數(shù)據(jù)仍然為"00H" , op—length的值為"1",單片機繼續(xù)執(zhí)行空 操作"N0P"指令;直到4個周期后,op—pos指向緩存器BUFFER的第4個字節(jié),才開始真正的執(zhí)行單片機的指令。
7、 如權(quán)利要求5所述的單片機,其特征在于操作任何一條指令時,opjos表示當(dāng)前指令的操作碼OPl在所述緩存器 BUFFER中的位置,然后根據(jù)操作碼OPl確定op—length的值;操作碼0P1,操作數(shù)0P2和0P3從緩存器BUFFER的取值方法是 當(dāng)op—pos = i , op—length的值等于"1"時0P1 = BUFFER0P2 = 00;0P3 = 00;當(dāng)op—pos = i , op—length的值等于"2"時 0P1 = BUFFER[i]; 0P2 二 BUFFER[i+l]; 0P3 二 00;當(dāng)opjos = i , op—length的值等于"3"時 0P1 = BUFFER[i]; 0P2 = BUFFER[i+l]; 0P3 = BUFFER[i+2]。其中,BUFFER[i]表示緩存器BUFFER的第i個字節(jié),iE[O, 7]。
8、 如權(quán)利要求5所述的單片機,其特征在于所述程序計數(shù)器PC 在系統(tǒng)復(fù)位時的值為"0";當(dāng)非跳躍轉(zhuǎn)移指令或非中斷程序運行時,當(dāng)前指令的取指令結(jié)束后,判斷op_pOS加上op一length的值是否大于6; 若小于等于6,op_pOS的值等于前一個op_pOS的值加上op—length的值, 然后進(jìn)行新一輪的取指令過程;若大于6,使程序計數(shù)器PC的值等于它 的當(dāng)前值加上"4",將當(dāng)前緩存器BUFFER高4個字節(jié)的數(shù)據(jù)放到低4 個字節(jié)中去,從ROM模塊讀出的新的4個字節(jié)數(shù)據(jù)放到緩存器BUFFER的 高4個字節(jié)中,同時當(dāng)前op_pOS的值等于前一個opjos的值加上 op—length的值再減去"4",然后進(jìn)行新一輪的取指令過程。
9、 如權(quán)利要求1所述的單片機,其特征在于所述譯碼模塊中的指令執(zhí)行狀態(tài)信號STATE用于控制各條指令在流水線操作中的各個階段,其默認(rèn)狀態(tài)為"4";根據(jù)從取指令模塊傳輸過來的操作數(shù)對指令執(zhí)行狀態(tài)信號STATE進(jìn)行賦值;當(dāng)操作數(shù)是單周期指令時,指令執(zhí)行狀態(tài)信號STATE保持"4"不變;當(dāng)操作數(shù)是雙周期指令時,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)依次為"4" _〉 "6" -〉 "5",每一個狀態(tài)保持1個時鐘周期;當(dāng)操作數(shù)是四周期指令時,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)依次為"4" _> "7,, _〉 "6" —> "5",每個狀態(tài)保持i個時鐘周期。
10、 如權(quán)利要求1或9所述的單片機,其特征在于所述執(zhí)行MCS-51 的單周期指令需要3個時鐘周期,指令的第1個時鐘周期由取指令模塊進(jìn) 行流水線第1階段取指令操作,指令的后2個時鐘周期在譯碼模塊中完成;在指令操作的第2個時鐘周期,譯碼模塊中的流水線第2階段實現(xiàn)以 下操作設(shè)置取指令模塊準(zhǔn)備讀取寄存器或RAM的值;將位操作的標(biāo)志信 號輸出給取指令模塊;在指令操作的第3個時鐘周期,譯碼模塊中的流水線第3階段實現(xiàn)以下操作選擇寫RAM模塊的地址或者寄存器,輸出給取指令模塊;將運 行該條指令所需要的操作數(shù)輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊;將要 進(jìn)行的操作符輸出給算術(shù)邏輯單元模塊;將產(chǎn)生的寫信號,輸出給取指令 模塊、特殊功能寄存器模塊、間接尋址模塊和RAM模塊;將對程序狀態(tài)字 PSW寄存器進(jìn)行操作的標(biāo)志信號,輸出對特殊功能寄存器模塊;選擇算術(shù) 邏輯單元模塊計算進(jìn)位的標(biāo)志位,輸出給進(jìn)位模塊;將累加器ACC或寄存 器指針DPTR進(jìn)行更新的標(biāo)志信號,輸出給特殊功能寄存器模塊。
11、 如權(quán)利要求1或9所述的單片機,其特征在于所述執(zhí)行MCS-51的雙周期指令需要4個時鐘周期,在取指令模塊中 進(jìn)行取指令操作需要一個周期,指令的后3個時鐘周期在譯碼模塊中完 成;譯碼模塊中的指令執(zhí)行狀態(tài)信號STATE的狀態(tài)依次為"4" -〉 "6" -> "5",每個狀態(tài)保持一個時鐘周期。
12、 如權(quán)利要求ll所述的單片機,其特征在于,當(dāng)執(zhí)行MCS-51的跳 躍指令需要4個時鐘周期執(zhí)行跳躍指令操作的第1個時鐘周期進(jìn)行取指令操作; 在執(zhí)行跳躍指令操作的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為"4",產(chǎn)生跳躍的標(biāo)志信號,并選擇跳躍的目的地址,輸出給取指令模塊;在執(zhí)行跳躍指令操作的第3個時鐘周期,指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)為"6",此階段算術(shù)邏輯單元模塊進(jìn)行計算或者取指令模塊進(jìn)行 信號處理;在執(zhí)行跳躍指令操作的第4個時鐘周期,指令執(zhí)行狀態(tài)信號STATE 的狀態(tài)為"5",選擇進(jìn)行寫的寄存器是堆棧指針,輸出給取指令模塊; 將程序計數(shù)器PC的值輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊;將運算符 空操作輸出給算術(shù)邏輯單元模塊;將位操作的標(biāo)志信號輸出給取指令模 塊。
13、 如權(quán)利要求ll所述的單片機,其特征在于,當(dāng)執(zhí)行MCS-51的比 較轉(zhuǎn)移指令需要4個時鐘周期執(zhí)行比較轉(zhuǎn)移指令操作的第1個時鐘周期進(jìn)行取指令操作; 在執(zhí)行比較轉(zhuǎn)移指令操作的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為"4",選擇對RAM進(jìn)行讀的地址或者寄存器,輸出給取指令模塊;在執(zhí)行比較轉(zhuǎn)移指令操作的第3個時鐘周期,指令執(zhí)行狀態(tài)信號 STATE的狀態(tài)為"6",將指令跳躍的標(biāo)志信號輸出給取指令模塊;當(dāng)發(fā) 生指令跳躍時,將指令跳躍的目的地址輸出給取指令模塊;選擇RAM的地 址或者寄存器,并輸出給比較模塊;將位操作的標(biāo)志信號輸出給取指令模 塊;在執(zhí)行比較轉(zhuǎn)移指令操作的第4個時鐘周期,指令執(zhí)行狀態(tài)信號 STATE的狀態(tài)為"5",此階段算術(shù)邏輯單元模塊進(jìn)行計算或者取指令模 塊進(jìn)行信號處理。
14、 如權(quán)利要求1或9所述的單片機,其特征在于所述執(zhí)行MCS-51的四周期指令需要5個時鐘周期,取指令模塊中進(jìn) 行取指令操作需要一個周期,指令的后4個時鐘周期在譯碼模塊中完成;指令執(zhí)行狀態(tài)信號STATE的狀態(tài)依次為"4" -〉 "7" -〉 "6" -〉 "5",每個狀態(tài)保持l個時鐘周期。
15、如權(quán)利要求14所述的單片機,特征在于,當(dāng)執(zhí)行MCS-51的乘除法指令時需要5個時鐘周期執(zhí)行乘除法指令操作的第1個時鐘周期進(jìn)行取指令操作; 執(zhí)行乘除法指令的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為"4",設(shè)置取指令模塊準(zhǔn)備讀取寄存器B和累加器ACC的值,輸出給取指令模塊;執(zhí)行乘除法指令的第3個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"7",將運行該條指令所需要的操作數(shù)輸出給算術(shù)邏輯單元的操作數(shù) 選擇模塊;輸出給算術(shù)邏輯單元模塊要進(jìn)行的操作符;將算術(shù)邏輯單元模 塊計算中產(chǎn)生的進(jìn)位標(biāo)志位和溢出標(biāo)志,輸出給特殊功能寄存器模塊中的 PSW寄存器;執(zhí)行乘除法指令的第4個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"6",將運行該條指令所需要的操作數(shù)輸出給算術(shù)邏輯單元的操作數(shù) 選擇模塊;輸出給算術(shù)邏輯單元模塊要進(jìn)行的操作符;執(zhí)行乘除法指令的第5個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài) 為"5",選擇要進(jìn)行寫的寄存器B和累加器ACC,輸出給取指令模塊; 將運行該條指令所需要的操作數(shù)輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊; 輸出給算術(shù)邏輯單元模塊要進(jìn)行的操作符;產(chǎn)生寫信號輸出給取指令模 塊、特殊功能寄存器模塊、間接尋址模塊和RAM模塊;將算術(shù)邏輯單元模 塊計算中產(chǎn)生的進(jìn)位標(biāo)志位和溢出標(biāo)志,輸出給特殊功能寄存器模塊中的PSW寄存器;產(chǎn)生對特殊功能寄存器模塊中的累加器ACC或寄存器指針DPTR進(jìn)行更新的標(biāo)志信號。
16、如權(quán)利要求14所述的單片機,其特征在于,當(dāng)執(zhí)行MCS-51的返 回指令RET/RETI時需要5個時鐘周期執(zhí)行返回指令操作的第1個時鐘周期進(jìn)行取指令操作; 執(zhí)行返回指令的第2個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "4",將寄存器SP的地址輸出給取指令模塊,并讀取寄存器SP的內(nèi)容; 執(zhí)行返回指令的第3個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "7",將指令跳躍的標(biāo)志信號輸出給取指令模塊;當(dāng)前指令會產(chǎn)生跳躍 操作的標(biāo)志信號;將指令跳躍的目的地址輸出給取指令模塊;將運行該條 指令所需要的操作數(shù)輸出給算術(shù)邏輯單元的操作數(shù)選擇模塊;執(zhí)行返回指令的第4個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "6",將指令跳躍的標(biāo)志信號和指令跳躍的目的地址,輸出給取指令模 塊;執(zhí)行返回指令的第5個時鐘周期,指令執(zhí)行狀態(tài)信號STATE的狀態(tài)為 "5",算術(shù)邏輯單元模塊進(jìn)行計算或者取指令模塊進(jìn)行信號處理。17如權(quán)利要求1所述的單片機,其特征在于所述RAM模塊在使用 流水線出現(xiàn)相關(guān)現(xiàn)象時,即寫RAM模塊的地址與讀RAM模塊的地址相同, 并且進(jìn)行讀RAM操作,則讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同。18如權(quán)利要求1所述的單片機,其特征在于所述特殊功能寄存器 模塊在使用流水線出現(xiàn)相關(guān)現(xiàn)象時,即寫寄存器的地址與讀寄存器的地址 相同,并且進(jìn)行讀操作,則讀出的數(shù)據(jù)與寫入的數(shù)據(jù)相同。
全文摘要
本發(fā)明公開了一種支持MCS-51指令集的單片機,包括ROM、取指令、RAM、算術(shù)邏輯單元、特殊功能寄存器和譯碼模塊等,采用等長指令的方式,并添加3級流水線功能。ROM用來存放用戶的應(yīng)用程序;取指令模塊提供程序計數(shù)器PC的值給ROM,從ROM中讀出應(yīng)用程序,完成了流水線操作的第1階段取指令,將應(yīng)用程序分解成操作碼與操作數(shù)傳輸給譯碼模塊;從中斷模塊接收到中斷信號后,返回中斷響應(yīng)信號。譯碼模塊從取指令模塊中取出將要執(zhí)行的操作碼與操作數(shù),根據(jù)操作碼確定對其他模塊的控制信號,并完成流水線操作的第2階段和第3階段。本發(fā)明在保持MCS-51系列單片機指令系統(tǒng)不變的情況下,能夠有效地提高指令運行的速度。
文檔編號G06F9/38GK101339498SQ20071009392
公開日2009年1月7日 申請日期2007年7月5日 優(yōu)先權(quán)日2007年7月5日
發(fā)明者倪滔雍, 沈鋮潔, 金乃詠, 菲 韓 申請人:華東師范大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
寿光市| 思南县| 四会市| 桦甸市| 卓资县| 济南市| 乐平市| 墨脱县| 象州县| 澜沧| 建平县| 长武县| 涞源县| 东阿县| 汉寿县| 敦煌市| 六盘水市| 裕民县| 麟游县| 岐山县| 苍梧县| 黄石市| 乌拉特前旗| 商南县| 平武县| 惠来县| 晋城| 屯昌县| 江源县| 陆河县| 平果县| 湘乡市| 舞钢市| 札达县| 通州市| 正镶白旗| 鹤庆县| 阿巴嘎旗| 邵阳市| 新晃| 阳谷县|