freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于risc結(jié)構(gòu)微控制器的指令分析與軟核設(shè)計(參考版)

2025-06-26 06:52本頁面
  

【正文】 LD_MBR是數(shù)據(jù)總線內(nèi)容讀入到MBR的使能信號。WR_RAM是MBR中的數(shù)據(jù)寫入內(nèi)存的使能信號。 數(shù)據(jù)存儲器模塊。寫操作是將MBR中的數(shù)據(jù)寫入到MAR保存的地址中去。MBR與RAM的數(shù)據(jù)輸入端口相連,它被用于緩存寫入RAM中的數(shù)據(jù)。數(shù)據(jù)存儲器包含了2個寄存器,地址寄存器(MAR)和緩沖寄存器(MBR)。數(shù)據(jù)空間全部是由SRAM組成,存儲器的大小是從地址$60到地址$DF,只有Z指針可以對以上地址訪問。對數(shù)據(jù)空間的訪問可以用LD和ST指令,通過Z指進行間接尋址。 這次設(shè)計的原型——AT90S2313中包括了128Byte的SRAM存儲器。當(dāng)BCLR信號被設(shè)置成可用時,由SRSEL信號定位的標(biāo)志位將會被清零。 狀態(tài)寄存器中的每一位都可以被BCLR和BSET指令直接清零或重置。只有當(dāng)前中斷程序執(zhí)行完成后(也就是在執(zhí)行中遇到RETI指令時),I-標(biāo)志位將會被重置,此時其他的中斷請求才可以被響應(yīng)了??刂茊卧獙⑺袠?biāo)志位的使能信號送入到狀態(tài)寄存器中,只有狀態(tài)標(biāo)志位的使能信號被標(biāo)記為可用時,標(biāo)志位總線中的數(shù)據(jù)才能寫入相應(yīng)的標(biāo)志位。狀態(tài)位的傳送遵循按位傳送原則,即C標(biāo)志位總線與C標(biāo)志位相聯(lián),Z標(biāo)志位總線與Z標(biāo)志位相連,以此類推。同樣狀態(tài)寄存器中的內(nèi)容也可以傳送到通用目的寄存器中,這可通過對I/O地址$35進行讀操作來完成。通用目的寄存器中的內(nèi)容可以修改狀態(tài)寄存器。I標(biāo)志位只有在中斷時才被設(shè)置,只有I標(biāo)志位被設(shè)置后,中斷請求才能被相應(yīng)。 Bit 0 - C :進位標(biāo)志位。 Bit 2 - N :負(fù)數(shù)標(biāo)志位。 Bit 4 - S :符號位,其值總是N與V的異或。BST把寄存器的某一位拷貝到T,而BLD把T拷貝到寄存器的某一位。I在復(fù)位時清零,RETI指令執(zhí)行后置位。單獨的中斷使能由單個的控制單元控制。當(dāng)執(zhí)行BST指令時,控制單元將狀態(tài)寄存器中的T位設(shè)置為可讀入,從而使得指令得以執(zhí)行。 H-標(biāo)志位受到ADD和SUBCP類指令的影響。COM指令(邏輯類指令)一直需要設(shè)置C-標(biāo)志位。 C-標(biāo)志位是進位標(biāo)志,當(dāng)執(zhí)行ADD類指令時,當(dāng)加法器-減法器單元運算有進位時,C-標(biāo)志位就被設(shè)置。 C-標(biāo)志位,N-標(biāo)志位等同于結(jié)果中的MSB,C-標(biāo)志位等同于ORA的LSB。當(dāng)執(zhí)行邏輯類指令時該位被清0。 N-標(biāo)志位(負(fù)數(shù))于MSB第7位的值保持一至,對N標(biāo)志位的測試可以通過加法器-減法器單元,邏輯單元,和轉(zhuǎn)移指令中的運算結(jié)果檢測出第N-標(biāo)志位的值。此時,測試單元能夠直接依據(jù)Z-標(biāo)志位的數(shù)值來檢測結(jié)果。當(dāng)指令不對標(biāo)記位產(chǎn)生影響時,ALU向標(biāo)記位寄存器發(fā)送一組隨即數(shù),但是因為沒有控制單元的使能信號,這組隨即數(shù)將不被狀態(tài)寄存器寫入。也就是說,狀態(tài)寄存器中只有使能信號被標(biāo)記為可用的那一位才能讀入從ALU傳來的數(shù)值。 執(zhí)行每條指令時,ALU都會計算出7個標(biāo)志位的值并通過標(biāo)志位總線傳送進狀態(tài)寄存器中去。一個7位字長的標(biāo)志位總線被用以連接ALU與狀態(tài)寄存器,使ALU能夠直接向狀態(tài)寄存器輸送相應(yīng)標(biāo)志位的值。如果該位與SET有相同的數(shù)值,SKIP信號被標(biāo)記位可用。當(dāng)CPSE信號被標(biāo)記為可用時,ORA與ORB進行比較,當(dāng)它們的內(nèi)容相同時SKIP信號被標(biāo)記為可用。當(dāng)跳轉(zhuǎn)條件滿足時,SKIP信號就被標(biāo)記為可用,接著控制單元就會跳轉(zhuǎn)至所需的下一條。如果列表中的控制信號都未被標(biāo)記為可用,此時從數(shù)據(jù)總線中不相外送出數(shù)據(jù),僅僅是表現(xiàn)為高阻態(tài)。 以上5個單元的輸出加上ORA寄存器中的數(shù)值組成了數(shù)據(jù)總線。BLD信號被用于存儲ORA中由BITSEL中的Tflag所指出的相應(yīng)位。當(dāng)DIRSEL=1時,結(jié)果的低4位存入ORA中高四位的數(shù)值,結(jié)果的高四位是ORA低四位的數(shù)值(SWAP)。直接操作單元使用DIRSEL信號來對數(shù)據(jù)直接寫入進行控制。右移后的最高位的數(shù)值取決于RIGHTSEL信號。當(dāng)LOGICSEL為11時,對ORA進行取反操作。當(dāng)LOGICSEL信號被設(shè)置為00時,邏輯單元對ORA和ORB進行邏輯與操作。ADD信號與WCARRY信號決定了加法器-減法器中的進位。 當(dāng)加法器-減法器單元中的ADD信號被標(biāo)記為可用時,加法器-減法器單元對ORA與ORB進行加法操作。右移類指令在轉(zhuǎn)移單元(Shifter Unite)中執(zhí)行。加法器-減法器(Adder-Subtracter)單元可以執(zhí)行ADDl類指令和SUBC類指令。C2A也可以將數(shù)據(jù)總線的內(nèi)容(I/O寄存器中的數(shù)值)讀入到ORA中執(zhí)行指令單元 執(zhí)行指令單元能夠執(zhí)行7類指令,其中的5類已經(jīng)在前面的基本指令介紹中進行了討論(ADD,SUBCP,LOGIC,RIGHT和DIR),另外兩類指令分別為按位讀入指令和ORA傳送指令。C2A信號和C2B信號的主要的作用是參與數(shù)據(jù)定向傳送,數(shù)據(jù)定向傳送技術(shù)用于解決流水指令沖突(第四章曾進行過討論),當(dāng)執(zhí)行指令的目的寄存器與源寄存器是同一個寄存器時,信號C2A與C2B被用于將ALU中的結(jié)果直接寫入操作數(shù)寄存器。 取操作數(shù)單元 ORA能夠讀入Rd寄存器的數(shù)值或者是“0000 0000”,ORB能夠讀入Rr寄存器的數(shù)值,Rd寄存器的數(shù)值,立即數(shù),或是“0000 0001”。 ALU的結(jié)構(gòu)取操作數(shù)單元 。在以上這些功能單元的中,我們假設(shè)控制單元能夠在正確的時間送入正確的控制信號,從而使這些單元可以正確的運行。ALU模塊被分為4個功能單元——取操作數(shù)單元,執(zhí)行單元,跳轉(zhuǎn)測試單元和狀態(tài)標(biāo)志位計算單元。與SBI和CBI指令一樣,SBIC和SBIS指令需要2個指令周期來執(zhí)行,在第一個指令周期里I/O寄存器中的內(nèi)容被讀入ORA,在第二個指令周期中執(zhí)行跳轉(zhuǎn)測試。 ORA 傳送指令組 接下來將要討論5個跳躍指令。LDZ,LDZ+和LD將通用寄存器文件重的內(nèi)容送入到RAM中。 寄存器文件只能從數(shù)據(jù)總線中接收數(shù)據(jù),所以為了能夠?qū)⒓拇嫫魑募械臄?shù)據(jù)送入到數(shù)據(jù)總線,需要將數(shù)據(jù)先送入ALU,然后在進入數(shù)據(jù)總線。寄存器標(biāo)志位會決定寄存器中的那一位需要讀入數(shù)據(jù)。 按位讀入指令組 ,BLD指令需要用到Rd寄存器,CBI和SBI需要用到I/O寄存器。例如,一條指令需要修改標(biāo)志位C,那么狀態(tài)寄存器中的C標(biāo)志位就需要能夠被控制,以便從ALU中接收該標(biāo)志位的新數(shù)值。 在上圖中共有21條指令的操作結(jié)果會對狀態(tài)寄存器(SR)的標(biāo)志位有影響。對ORI指令的執(zhí)行,就是將Rd讀入到ORA,將立即數(shù)Imm讀入ORB,設(shè)置LOGIC信號,并將LOGICSEL信號設(shè)置為01的過程。這種組合方式使得24條指令每一條都不相同。欄目中Zero指的是“0000 0000”;One是指“0000 0001”;Imm被用來表示指令中的立即數(shù)。ORA和ORB欄羅列了操作數(shù)寄存器A和操作數(shù)寄存器B所要讀入的數(shù)據(jù)。 ALU中的基本指令組 。這些指令被分成了5類:ADD ,SUBCP, LOGIC ,RIGHT 和DIR。 ALU ALU是微控制器的重要組成部分,它可以執(zhí)行許多指令。因為指令寄存器只能指向下一條指令的目的寄存器。 一個指令周期被分為取指令和執(zhí)行指令兩個部分,在執(zhí)行指令開始時取操作數(shù),并在執(zhí)行指令結(jié)束時寫回結(jié)果。當(dāng)進行帶預(yù)減的間接尋址時,需要將Z指針中的數(shù)值減$61再送入數(shù)據(jù)總線。 通用寄存器和RAM通過地址總線相連,R30寄存器不僅能夠被用于通用寄存器,也可以被用于Z指針對RAM尋址。通用寄存器可以直接被指令寄存器尋址。下圖展示了通用寄存器(R16到R31)的結(jié)構(gòu)。 RISC ,使用5位字長地址指令。在指令寄存器模塊中只有EN信號被標(biāo)記位可用時,IR信號才能從程序存儲器中讀入數(shù)據(jù)。從而實現(xiàn)了前幾章中提到的流水指令結(jié)構(gòu)——執(zhí)行當(dāng)前指令的同時讀取下一條指令。 需要強調(diào)一點的是,在IR中暫存的指令并不是當(dāng)前正在被執(zhí)行的指令而是下一條需要執(zhí)行的指令。定義為目的寄存器(4-7位)和源寄存器(0-3位)的位被送入通用目的寄存器進行尋址。 指令寄存器(IR)被用來存放指令,它通過16位的直接總線與程序存儲器相連,并從中讀取指令。 PC信號被用于存放程序存儲器的地址。程序計數(shù)器通過直接總線與ROM相連,并用9位字長的地址來對ROM進行尋址,當(dāng)找到相應(yīng)的地址時,地址中的指令被送入指令寄存器。為了能對512個單元尋址,程序計數(shù)器需要用9位字長來定義程序存儲器的地址。因為所有的指令被設(shè)置成了固定的16位,所以ROM也被設(shè)計成16位字長,從而使得每條指令都可以在單個時鐘周期內(nèi)被讀入到指令寄存器中。 程序存儲器結(jié)構(gòu) 程序存儲器(Program ROM)被用來儲存微控制器的程序。PUSH信號被用于人棧操作,PULL信號被用于出棧操作,以上幾個信號的使用完成了程序計數(shù)器的中斷請求和中斷地址返回的功能。ADDOFFSET信號被用于跳轉(zhuǎn)標(biāo)記,當(dāng)它被標(biāo)記為可用時,PC就讀入PCB+offset,從而達(dá)到了程序計數(shù)器跳轉(zhuǎn)尋址的目的。信號EN一個使能信號,作用于所有的寄存器,像是PC,PCB,和STACK,只有當(dāng)EN信號被標(biāo)記為可用時(當(dāng)EN=1時),程序計數(shù)器的所有操作才開始被執(zhí)行。程序計數(shù)器于程序存儲器直接相連。PC,PCB,和4個堆棧(STACK0到STACK3)是9位字長的。所以由以上討論得出了一個結(jié)論——子程序調(diào)用返回的地址是PCB,而中斷請求返回地址是PCB1。也就是先前壓入堆棧中PCB的值——$22。在超時中斷被響應(yīng)后,PC讀入中斷向量地址($02),CPU開始執(zhí)行 $02 RJMP TIMER 指令,PC讀入$80,CPU開始執(zhí)行名為TIMER的子程序?,F(xiàn)在我們假設(shè),當(dāng)在執(zhí)行$21指令時,CPU響應(yīng)了超時中斷請求。PC讀入數(shù)值$50,并且CPU開始執(zhí)行名為MAKE的子程序。為了更好的解釋這個現(xiàn)象,舉例一個小程序幫助說明。所以需要規(guī)定中斷嵌套的深度為4層。這個過程叫做出棧操作。當(dāng)子程序調(diào)用或是中斷請求返回時,PC從STACK0中讀出地址,而其它棧中的地址相應(yīng)的向上傳遞一層。例如,STACK0的內(nèi)容被壓入STACK1,STACK1被壓入STACK2以此類推。程序計數(shù)器中設(shè)計了4層的后進先出的堆棧(STACK0到STACK3)結(jié)構(gòu)。所以當(dāng)響應(yīng)一個中斷請求時,PC首先讀入中斷向量的地址,然后CPU執(zhí)行相應(yīng)中斷向量地址中的指令,此時就轉(zhuǎn)入了中斷服務(wù)程序。這里一共設(shè)計了3個中斷向量,按照其中斷優(yōu)先級被分別存放在程序存儲器中的地址$000到$002。以上的設(shè)計實現(xiàn)了,程序寄存器的順序?qū)ぶ放c跳轉(zhuǎn)尋址。假設(shè)PC中暫存的是第N+2條指令的地址,程序計數(shù)器中的另一個寄存器——程序地址備份寄存器(PCB)便存入N+1指令的地址。為了描述方便,可以認(rèn)為PC就是程序計數(shù)器中指令的地址(在對程序計數(shù)器功能模塊的編寫中,我設(shè)置了一個9位的信號量——PC,事實上程序計數(shù)器讀入的指令地址,都是暫存在這個PC信號中)。在第五章對指令的流水傳遞討論中,我們得知,當(dāng)CPU正在執(zhí)行第N條指令時,程序計數(shù)器已經(jīng)指向了第N+2條指令
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1