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

正文內容

基于risc結構微控制器的指令分析與軟核設計(文件)

2025-07-11 06:52 上一頁面

下一頁面
 

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