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

正文內(nèi)容

基于risc結(jié)構(gòu)微控制器的指令分析與軟核設(shè)計-文庫吧資料

2025-06-29 06:52本頁面
  

【正文】 的地址。在以下的三種情況下程序計數(shù)器中的地址不是按順序取得,而是通過讀入一個新的數(shù)值得到。但是當(dāng)遇到轉(zhuǎn)移指令時,下一個需要被執(zhí)行的指令將由當(dāng)前的轉(zhuǎn)移指令來決定,這就需要程序計數(shù)器不僅能夠順序的選取指令,還要能夠跳躍的選取指令。程序控制器的任務(wù)就是要保證指向下一條執(zhí)行指令的地址。為了保證程序能夠連續(xù)的執(zhí)行下去,微控制器需要不斷的通過程序記數(shù)器(PC)來確定下一條指令的地址。 本章主要討論數(shù)據(jù)通路中各功能模塊的設(shè)計思路和實現(xiàn)方法,下一章將重點對控制單元的設(shè)計加以研究。信號CLK被作為所有寄存器的時鐘信號,CLRN被作為所有寄存器的重置信號,當(dāng)CLRN被標(biāo)記為低電平時,所有的寄存器將被清零??刂菩盘栍煽刂茊卧獊懋a(chǎn)生,控制單元與數(shù)據(jù)通路組成了微控制器。以上這些叫做系統(tǒng)的數(shù)據(jù)通路。指令寄存器是通過PC的尋址從程序存儲器中讀入指令。當(dāng)對兩個通用寄存器進行AND操作時,在將結(jié)果寫回到目的寄存器前,將會有兩個寄存器通過組合邏輯的處理。例如,狀態(tài)寄存器能夠直接將其內(nèi)容送入通用目的寄存器,而不需要對其內(nèi)容進行預(yù)先處理,這就是寄存器直接傳送而無需組合邏輯參與的形式??梢哉J(rèn)為從圖中的一個寄存器傳送數(shù)據(jù)到另一個寄存器,期間經(jīng)過了許多次組合邏輯處理。所以說,數(shù)據(jù)怎樣被傳送;數(shù)據(jù)在傳送前怎樣被預(yù)先處理;以及不同數(shù)據(jù)在寄存器中的含義;以上的問題決定了設(shè)計的芯片是否是一個基于RISC結(jié)構(gòu)的微控制器。其中大部分的寄存器可以在頂層模塊框圖中找到,而另一些寄存器則被設(shè)計在了相應(yīng)的功能模塊之中。需要強調(diào)一點的是,PINB,PINC和PIND并不是真正的寄存器,它們只有在讀入操作數(shù)時被調(diào)用,它們可以被理解為讀入物理信號的外部引腳。指令SBIS和SBIC(I/O寄存器置位/清零既條)同樣也可以直接檢測這些寄存器中的每一個信號位。IN指令和OUT指令的實質(zhì)就是在這些控制寄存器和通用目的寄存器之間傳送數(shù)據(jù)。 I/O單元中的功能模塊都有大量的控制寄存器。這種結(jié)構(gòu)的先進性在于容易實現(xiàn)下一條指令的預(yù)先讀取,從而使指令的流水傳遞成為可能。以上就是間接存取操作的過程,它們的具體功能實現(xiàn),將會在功能模塊設(shè)計中詳細(xì)討論。對RAM尋址時可以用間接尋址,帶預(yù)減的間接尋址和帶后加的間接尋址等方式,這些內(nèi)容在第四章指令介紹中進行過詳細(xì)討論。完成所有這些操作過程需要1個時鐘周期。然后數(shù)據(jù)總線中的內(nèi)容(運算結(jié)果)被回存到寄存器文件中。通常情況下,為了執(zhí)行一條指令2個操作數(shù)被從寄存器文件中讀入到ALU。以上所提及的功能模塊都是通過直接總線方式連接的。接著程序存儲器中的指令被送入到指令寄存器當(dāng)中。取指令單元的第一個功能模塊是程序計數(shù)器(PC)。取指令單元被用于取下一條指令,執(zhí)行指令單元被用于執(zhí)行當(dāng)前指令,I/O單元提供了微控制器與外界的連接。下面我們將對整個微控制器系統(tǒng)進行概括的介紹。狀態(tài)總線被用來控制通用數(shù)據(jù)總線,它保證了正確的數(shù)據(jù)源連接到數(shù)據(jù)總線上,并將其他的數(shù)據(jù)源置為高電阻使其與總線系統(tǒng)斷開。寄存器文件只能夠從數(shù)據(jù)總線上接收數(shù)據(jù),但是其他所有的功能模塊都可以用數(shù)據(jù)總線接收或是發(fā)送數(shù)據(jù)。在設(shè)計中數(shù)據(jù)總線被設(shè)計成唯一的通用總線。直接總線連接的特點是不需要控制信號的驅(qū)動。直接總線結(jié)構(gòu)是指兩各功能模塊直接相連,它被用于特定的模塊連接。 總線為各功能模塊間提供了連接。但是有些模塊,像是ALU和控制單元,在這些模塊中包含了大量的控制信號,需要考慮的問題十分煩雜,對這些模塊的設(shè)計耗費了許多的時間,一度陷入了僵局。在頂層模塊中包括了11個功能模塊,這些功能模塊被分成了3個大的部分取指令部分,執(zhí)行指令部分,和I/O端口。引腳的具體實現(xiàn)方法和結(jié)構(gòu)詳細(xì)說明將會在端口模塊中進行討論。端口B,端口C和端口D都為8位,每一位都可以被設(shè)置為輸入或是輸出。CLOCK信號能夠直接驅(qū)動微控制器。每個I/O端口由8個單獨的I/O引腳組成。第五章 微控制器結(jié)構(gòu)設(shè)計。如果上一條指令的目的寄存器被下一條指令當(dāng)作源寄存器使用時,ALU中的計算結(jié)果將被直接送入到操作數(shù)寄存器中。因此,指令(INC R18)只是從目的寄存器中讀入了指令(LDI R18 $10)的執(zhí)行結(jié)果——10,而不是指令(LDI R18 ,R20)的結(jié)果——20。在這種方式中,第N+1條指令的操作數(shù)在第N條指令執(zhí)行的初期被存入操作數(shù)寄存器,而第N條指令執(zhí)行的結(jié)果將會在第N條指令執(zhí)行的末期寫回到目的寄存器。但實際上當(dāng)執(zhí)行完上述程序后,最終的結(jié)果是11而不是21。 R18 = R18 + 1 = $21上面這段程序所描述的是,首先是將地址10送入R18寄存器中,然后又將地址20送入R18寄存器中。 R18 = $10 LDI R18, $20 。 有一種情況,在一個程序中,如果必須等前一條指令執(zhí)行完畢后的結(jié)果,才能執(zhí)行后一條指令,那么這種數(shù)據(jù)相關(guān)指令的執(zhí)行需要特別加以討論。一直到T5時刻指令32才被執(zhí)行,與此同時指令33被讀入,PC指向指令34的地址。在T3時刻指令31被執(zhí)行,與此同時讀入指令32,程序計數(shù)器指(PC)向指令33。這種情況也會影響到指令流水線的運行。在這3個時鐘周期中第1個時鐘周期被用來向PC中裝填新的數(shù)值,而其后的兩個指令周期僅僅是處于等待狀態(tài),一直等待到新的指令被執(zhí)行。最后在T5時刻,指令73被執(zhí)行。在T3時刻指令22被讀入,PC指向要跳轉(zhuǎn)到的指令地址(指令73),此時指令21不是被執(zhí)行而是從流水線中被清洗掉。如圖,指令20需要跳轉(zhuǎn)到指令73。在這種情況下指令流水線需要重新讀入跳轉(zhuǎn)到的指令,并且需要丟棄跳轉(zhuǎn)指令之后已經(jīng)從內(nèi)存中讀入的指令。也就時說當(dāng)?shù)贜條指令被執(zhí)行時,第N+1條指令被讀取,程序計數(shù)器PC指向第N+2條指令的地址。在第三個時鐘跳變延時(T3),0指令的結(jié)果按要求被寫回,與此同時1指令正在被執(zhí)行,2指令被讀入。當(dāng)遇到第二個時鐘跳變時(T2),0指令被執(zhí)行,與此同時1指令被讀取。如圖,在RESET之后程序計數(shù)器被清零。這樣執(zhí)行一條指令只需要一個時鐘周期,按照上面的那個假設(shè),執(zhí)行1000條指令就僅僅只需要1000個時鐘周期,系統(tǒng)性能被成倍的加快。也就是說在執(zhí)行當(dāng)前指令時去讀取下一條指令。下圖展示了流水指令的傳遞形式。這就是指令的順序傳遞。假設(shè)一個指令周期有兩個部分組成(取指令Fetch和執(zhí)行指令Execute),那么順序的執(zhí)行一組連續(xù)的指令就會有以下的形式。這樣,一個指令周期就完成了。ALU對ORA和ORB執(zhí)行ADD操作,并將結(jié)果寫回到數(shù)據(jù)總線。在指令被取得后,CPU就得知了下一條要執(zhí)行的指令是ADD,操作數(shù)在R18和R20中。指令 ADD R18,R20 的意思是將寄存器R18中的數(shù)據(jù)與R20中的數(shù)據(jù)相加并將結(jié)果寫回到寄存器R18中。在執(zhí)行階段,按指令要求取得操作數(shù)并執(zhí)行指令,在執(zhí)行完指令后寫回結(jié)果。在取指令階段,指令的機器碼被讀入指令寄存器。第四章 流水指令系統(tǒng) CPU每次取出,并執(zhí)行一條指令的時間叫做指令周期。通過這一節(jié)的分析可以知,只需要設(shè)計51條指令就可以完成92條指令的所有操作。 。BSET此類似,其等同指令只是規(guī)定精確的操作范圍,這可以使得編寫程序的過程更簡便。如BCLR的指令是清楚一個標(biāo)志位,與其等同的指令CLI,CLT,CLH,CLS,CLV,CLN,CLZ,CLC,這些指令分別是對狀態(tài)寄存器8個標(biāo)志位中的第I,T,H,S,V,N,Z,C位清零。所以當(dāng)目的寄存器和源寄存器為同一個寄存器時ADD能夠執(zhí)行LSL的操作??梢哉J(rèn)為是原操作數(shù)的自加,如1000_0001邏輯左移后是0000_0010,也就是1000_0001 ADD 1000_0001 =0000_0010的運算。圖3 .2共用機器碼指令列表例如ADD指令與LSL指令共用了同一個機器代碼。事實上,這里僅有51條機器碼。BLD,BST,SBRC和SBRS等指令使用這種指令格式。(8)最后一種指令中,只需要用到寄存器中的一位,所以使用d來定義寄存器,用b來選擇寄存器中的那一位。(7)狀態(tài)寄存器指令的清零和設(shè)置位,用s(3位)來定義所需進行清零和設(shè)置具體的位置,從而可以對8位的狀態(tài)寄存器中的任意一位進行清零或設(shè)置操作。在這種方式中用了5位的字長A來定義I/O地址,所以只能尋址32個I/O地址。這種方式使用了6位字長A來定義I/O地址,從而可以對尋址64個I/O地址。 (6)I/O尋址指令有兩種格式。(the sbits addressed which bit in the status register is to be tested for the branch)7位字長的偏移量可以使得跳轉(zhuǎn)的范圍從64到63。RJMP、RCALL等指令使用這種指令格式。 (4)在無條件跳轉(zhuǎn)指令中,K被用來定義偏移量。這個指令格式與上面兩個格式有些不同的地方是,用了4位字長來表示目的寄存器,所以只能尋址16個寄存器。 (3)指令中需要調(diào)用立即數(shù)。 (2)指令只需要一個寄存器,這時就用d來選擇目的和源寄存器。每個寄存器用5位來表示,所以一共可以尋址32個寄存器。通過對指令集的分析,一共需要建立9種指令格式。 在前幾章提到,RISC指令有著固定的長度且易于解碼。 雖然這里有7種尋址方式,但是直接寄存器尋址是被應(yīng)用的最多的尋址方式。偏移量在指令中被定義。此時Z指針中的操作數(shù)地址為原地址加16這兩種尋址方式使得寄存器的內(nèi)容規(guī)律變化而不改變指令本身,從而是有效地址規(guī)律變化。此時在Z指針中的操作數(shù)地址為原地址減1。在尋址時通過Z指針中的地址去數(shù)據(jù)存儲器中找操作數(shù)。并通過IN和OUT指令對I/O寄存器進行讀出或是寫入操作。 第一個操作數(shù)包含在I/O寄存器中,地址由指令中的6位代碼組成。寄存器直接尋址是一種基本的尋址方法,其特點是操作數(shù)直接存放在目的寄存器(Rd)中。寄存器即可以存放數(shù)據(jù)又可以存放指令。 RISC微控制器被設(shè)計了7種尋址方式,用來滿足上一節(jié)指令集的執(zhí)行需要。 以上指令集的設(shè)計是基于ATMEL AVR AT90S2313微控制器的指令集,從而減少開發(fā)時間,提高設(shè)計的可靠性。數(shù)據(jù)傳輸指令LDZ、 LDZ+、 LDZ、 STZ、 STZ+、 STZ、 MOV 、LDI、 IN 、OUT 。這些指令被分成了4種類別:算術(shù)和邏輯運算指令A(yù)DD、ADC、SUB SUBI 、SBC、 SBCI、 AND、 ANDI、 OR、 ORI、 EOR、COM、 NEG、 SBR、 CBR、 INC、 DEC、 TST、 CLR、 SER。如下圖所示: 指令集Rd-目的寄存器 Rr-源寄存器K-常數(shù) k-常數(shù)表示的地址b-寄存器文件或I/O寄存器的位 s-狀態(tài)寄存器中的位Z、Y、X-R31到R26寄存器 A-I/O地址
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1