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

正文內(nèi)容

基于risc結(jié)構(gòu)微控制器的指令分析與軟核設(shè)計-預(yù)覽頁

2024-07-18 06:52 上一頁面

下一頁面
 

【正文】 尋址又可細分為4種方式:單寄存器直接尋址、雙寄存器直接尋址、I/O直接尋址、數(shù)據(jù)直接尋址。在CPU的指令集中包括了該CPU可執(zhí)行的所有指令,因為指令集決定了微控制器中數(shù)據(jù)通路和所有功能模塊的結(jié)構(gòu),所以本章中對指令集的學(xué)習(xí)是及其必要的。跳轉(zhuǎn)指令RJMP、 RCALL、 RET 、RETI、 CPSE、 CP 、CPC 、CPI、 SBRC、 SBRS、 SBIC、 SBIS、 BRBS、 BRBC、 BREQ 、BRNE、 BRCS、 BRCC、 BRSH 、BRLO、 BRMI、 BRPL、 BRGE、 BRLT、 BRHS、 BRHC、 BRTS、 BRTC、 BRVS、 BRVC、 BRIE、 BRID。RISC微控制器的特點之一就是大部分指令可以在一個時鐘周期內(nèi)執(zhí)行完成,但是跳轉(zhuǎn)指令LD(間接取數(shù))ST(間接存數(shù))和少數(shù)其他的指令是在多個時鐘周期內(nèi)完成的。因此當(dāng)操作數(shù)或某條指令存放在存儲單元時,其存儲單元的編號就是該操作數(shù)或指令在存儲器中的地址。第二個操作數(shù)保存在Rd或Rr中。 這種尋址方式是在執(zhí)行前先將Z指針減1。 在這種尋址方式中程序計數(shù)器(PC)中的地址為PC+偏移量。而其它的尋址方式只有在訪問I/O設(shè)備,訪問SRAM和執(zhí)行跳轉(zhuǎn)指令時才被用到。 (1)指令需要用到兩個寄存器,d 被用來選擇目的寄存器,r被用來選擇源寄存器。這種指令格式包括了NEG,ST和IN等指令。使用這種指令格式的有CPI,SUBI,SBCI,ORI,ANDI和LDI等指令。 (5)在有條件跳轉(zhuǎn)指令中,k被用來定義偏移量,s位被用來選擇狀態(tài)寄存器中的那一位被用來對跳轉(zhuǎn)進行測試。第一種是用A來定義I/O地址并用d來選擇的相應(yīng)的目的寄存器。CBI,SBI,SBIC和SBIS等指令使用這種指令格式。因為在設(shè)計中通用寄存器被定義為8位的所以b只需要3位就可以選擇寄存器8位中的相關(guān)位。這是因為有41條指令通用了其他指令的機器代碼。ADD(不帶進位的加)的操作是Rd←Rr +Rd。所以可以作為BCLR的等同指令。另外41條等同指令用括號列出在相應(yīng)指令的右側(cè)。在設(shè)計中,指令周期被分成了2個部分,取指令和執(zhí)行指令。 指令周期 為了更好的理解指令周期的概念,舉一個具體的例子加以說明。在執(zhí)行階段(第2個時鐘跳變時),R18和R20中的內(nèi)容被存入操作數(shù)寄存器A(ORA)和操作數(shù)寄存器B(ORB),這兩個寄存器直接與ALU相連。 指令的流水傳遞 為了體現(xiàn)流水指令的先進性,先做如下假設(shè)。但當(dāng)指令流水傳遞時,系統(tǒng)的性能可以大幅度的提升。 當(dāng)指令按流水方式傳遞時,在每一個時鐘周期都會有一個指令被執(zhí)行。當(dāng)遇到RESET之后的第一個時鐘跳變(T1)時,0地址中指令被讀取,與此同時程序計數(shù)器加1,指向地址1。此時PC指向地址3。為了更好的理解這個思想,我們舉例說明。在T4時刻,指令73被讀取,此時指令22依然要從流水線中被清洗掉。 在一些指令中,比如LD(間接取數(shù))和ST(間接存數(shù)),這些指令需要兩個時鐘周期來執(zhí)行。在T4時刻,依然執(zhí)行指令31,程序計數(shù)器(PC)不增加1,也不讀入新的指令。有一段程序: LDI R18, $10 。最后使地址R18自加1使地址20變?yōu)榈刂?1。所以在上面這個程序中, 指令(LDI R18 $20)執(zhí)行的初期,當(dāng)其執(zhí)行結(jié)果20還未寫入到目的寄存器——R18時,下一條指令(INC R18)已經(jīng)將原來存入R18中的操作數(shù)——10讀入了操作數(shù)寄存器。當(dāng)然這需要特別的控制邏輯用于沖突檢測和數(shù)據(jù)的定向傳送。所以3個I/O端口一共組成了24個I/O引腳。引腳D7可以被用作外部中斷或外部時鐘中斷。其中的一些模塊,像是指令寄存器和狀態(tài)寄存器設(shè)計思路比較清晰,且易于實現(xiàn)。在這里基本上有兩種總線結(jié)構(gòu)——直接總線連接和通用總線連接。 通用總線被多個功能模塊所共享。在微控制器中,控制信號被用來控制正確的數(shù)據(jù)流向,從而保證在每一個時刻數(shù)據(jù)總線只有唯一的一個數(shù)據(jù)來源。整個系統(tǒng)能夠被分為3個部分,取指令單元、執(zhí)行指令單元和I/O單元。在程序計數(shù)器中包含了下一條要執(zhí)行指令的地址,程序計數(shù)器指向程序存儲器(program ROM),通過其中的地址在程序存儲器中查找相應(yīng)的指令。執(zhí)行指令單元被用來對大多數(shù)的指令進行執(zhí)行。同時ALU也產(chǎn)生狀態(tài)寄存器的標志位并將其直接送入狀態(tài)寄存器中。需要強調(diào)的是,在RAM和寄存器文件之間,讀取指令只能夠?qū)?shù)據(jù)進行傳送,在執(zhí)行指令時,Z指針中包含了RAM的地址,一個讀取操作通過數(shù)據(jù)總線將RAM中的數(shù)據(jù)送入通用目的寄存器,一個存儲操作將通用目的寄存器中的數(shù)據(jù)送入ALU,接著ALU將數(shù)據(jù)送入數(shù)據(jù)總線并存入RAM中。在設(shè)計中RAM的初始值被設(shè)置為0。下圖中灰色部分的控制寄存器($00$1F)能夠直接被指令SBI和CBI(對I/O相應(yīng)的位設(shè)置/清零)按位操作bitaccessible。 I/O單元地址空間 微控制器的設(shè)計中包括了許多寄存器,有指令寄存器(IR),指令備份寄存器(IBR),程序計數(shù)器(PC),通用目的寄存器(GPR),內(nèi)存地址寄存器(MAR),所有的I/O控制寄存器等,則這里程序計數(shù)器PC被當(dāng)成了一個特殊的寄存器。也就是說,一系列的寄存器間傳送形成了微控制器的功能。然而,當(dāng)Z指針中的數(shù)值需要預(yù)先減1再送入內(nèi)存地址寄存器(MAR)時,在這種情況下的組合邏輯就是減法器。綜上所述,微控制器設(shè)計的實質(zhì)就是就是設(shè)計出所有的相關(guān)邏輯單元并用寄存器將其相互連接起來。了解系統(tǒng)中的寄存器是十分有必要的,下圖羅列了所有的功能模塊和與其有關(guān)的寄存器。 程序記數(shù)器(Program Counter).。因為大多數(shù)指令都是按照順序來執(zhí)行的,所以在程序計數(shù)器中,地址改變的過程通常只是在每個時鐘跳變時對PC加1。首先,當(dāng)遇到帶條件或是不帶條件的跳轉(zhuǎn)指令時;其次,當(dāng)遇到中斷請求時;最后,當(dāng)遇到子程序返回或是中斷服務(wù)返回時。于是PC+1就是指下一個要執(zhí)行指令的地址。當(dāng)有中斷請求時,程序計數(shù)器需要讀入中斷向量的地址。 中斷向量表堆棧被用于存儲子程序調(diào)用返回的地址和中斷請求。這個過程被叫做壓棧操作。當(dāng)子程序調(diào)用或是中斷請求多于4層時,最早被壓入堆棧的返回地址將會丟失。當(dāng)在執(zhí)行 $21 rcall make 指令時,PCB中的數(shù)值變?yōu)?22并將其壓入堆棧中。此時存入PCB中的數(shù)值依然時$22,并被壓入了堆棧中。那么下一條要執(zhí)行的指令就是 $22 DEC R26,這是一個錯誤的順序,$21 RCALL MAKE指令因為剛才的中斷而還沒有被執(zhí)行到。所以程序計數(shù)器可以對512個單元進行尋址。這個信號確保了2個時鐘周期指令的流水執(zhí)行。當(dāng)以上信號都沒有被標記為可用時,PC就執(zhí)行自加1操作,也就是程序計數(shù)器的順序?qū)ぶ?。程序存儲器的大小被定義為512個單元,這就意味著該存儲器可以儲存512條指令。與程序計數(shù)器不同的是,程序存儲器不需要時鐘信號的驅(qū)動。只有當(dāng)EN信號標記為可用時,指令寄存器才會將新的指令從程序存儲器中讀入,接著指令被送入控制單元去解碼,定義成立即數(shù)的位(指令中0-3,8-11位)被送去ALU參與運算。這個設(shè)計思想保證了在當(dāng)前指令執(zhí)行時,控制單元對下一條執(zhí)行指令解碼的要求。IMM_VALUE信號用于向ALU傳送立即數(shù),RD,RR信號分別用于存放目的寄存器和源寄存器的地址。 通用寄存器中目的寄存器和源寄存器與ALU保持連通。RAM的起始地址是$60,但是目標設(shè)備需要RAM的起始地址是$0,所以,地址總線中傳遞的數(shù)據(jù)是Z指針中的數(shù)值(地址)減去$60。此時要想使ALU中的結(jié)果寫入正確的目的寄存器,就必須通過控制單元得到目的寄存器的地址,而不是從指令寄存器中得到。在ALU中一些指令是直接執(zhí)行的,而另一些則是通過ALU間接執(zhí)行。這是一個寄存器文件控制信號。 每一條指令都由(Proup,ExtraSignal,WR_RegSSignal,ORA,ORB)這些信號組成其特有的組合。其它所有的指令都可以根據(jù)圖中的組合來被執(zhí)行。當(dāng)標志位不受指令影響時,控制單元將不會對狀態(tài)寄存器中的相應(yīng)位加以控制,此時從ALU送入狀態(tài)寄存器中的數(shù)值就不會被寫入。SBI和CBI指令需要2個指令周期,在第一個指令周期中,I/O寄存器中的數(shù)據(jù)通過數(shù)據(jù)總線被讀取到ORA中,在第二個指令周期里0或1給寫入相應(yīng)的位,并且將結(jié)果通過數(shù)據(jù)總線寫會到I/O寄存器當(dāng)中去。在以上操作中Rd被讀取到ORA,ALU執(zhí)行了一個傳遞操作,將ORA中的內(nèi)容送入了數(shù)據(jù)總線。 。下面將用4個部分對這4個功能單元進行詳細的討論。ORA和ORB通過ASEL信號和BSEL信號選取。執(zhí)行指令單元被按照功能被分成了5個部分。直接單元(Direct Unit)被用于執(zhí)行DIR組中的指令;按位讀取單元(Bit Loader)被用于執(zhí)行按位讀取組中的指令。 -減法器的進位 邏輯單元通過LOGICSEL信號對其操作進行控制。 轉(zhuǎn)移單元執(zhí)行右移操作。當(dāng)DIRSEL=0時,直接控制單元將ORB與結(jié)果相連接(LDI,MOV指令)。CBISBI信號被用于存儲ORA中右BITSEL所指出的,相應(yīng)位,和SET的數(shù)值。 跳轉(zhuǎn)測試單元 跳轉(zhuǎn)指令被跳轉(zhuǎn)測試單元執(zhí)行,用于測試跳轉(zhuǎn)所需的條件。SKIPTEST信號用于測試BITSEL信號所定義的ORA中的相應(yīng)位。標志位總線只有7位而不是8位是因為第I位標志不會受指令的影響。這些使能信號是由控制單元產(chǎn)生的,ALU只需要負責(zé)將正確的標記位數(shù)值送入標志位總線,至于狀態(tài)寄存器中的相應(yīng)位是否會改寫,這將由控制單元來決定。只有ADD,SUBCP,LOGIC和RIGHT指令組中的指令可以對Z-標志位產(chǎn)生影響。在右移指令中,數(shù)據(jù)表中的布爾方程是N-標志位 197。右移類指令向右移動ORA一位,和ORA的LSB都需要設(shè)置C標志位。 T-標志位與BITSEL在ORA中指出的位的值相等。如果I清零,則不論單獨中斷標志置位與否,都不會產(chǎn)生中斷。 Bit 5 - H :半加標志位。 Bit 1 - Z :0標志位。 狀態(tài)寄存器只有在以下幾中情況下才會被修改。 狀態(tài)寄存器通過標志位總線從ALU接收7位字長的標志位。 當(dāng)一個中斷請求被響應(yīng)時,控制單元需要在執(zhí)行中斷服務(wù)程序之前對I-標志位清零,所以當(dāng)前中斷服務(wù)程序執(zhí)行完之前,其他的中斷請求將不會被響應(yīng)。狀態(tài)寄存器通過BCLR,BSET和SRSEL信號進行控制。如圖所示,32個通用目的寄存器和64個I/O寄存器也同樣被映射在數(shù)據(jù)空間中。 。MBR通過數(shù)據(jù)總線接收數(shù)據(jù)。RD_RAM信號是內(nèi)存數(shù)據(jù)讀入到數(shù)據(jù)總線的使能信號。 I/
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1