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

正文內(nèi)容

基于risc結(jié)構(gòu)微控制器的指令分析與軟核設(shè)計(jì)(編輯修改稿)

2025-07-20 06:52 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 3時(shí)刻指令22被讀入,PC指向要跳轉(zhuǎn)到的指令地址(指令73),此時(shí)指令21不是被執(zhí)行而是從流水線(xiàn)中被清洗掉。在T4時(shí)刻,指令73被讀取,此時(shí)指令22依然要從流水線(xiàn)中被清洗掉。最后在T5時(shí)刻,指令73被執(zhí)行。所以可以看出一個(gè)跳轉(zhuǎn)指令需要3個(gè)時(shí)鐘周期來(lái)完成。在這3個(gè)時(shí)鐘周期中第1個(gè)時(shí)鐘周期被用來(lái)向PC中裝填新的數(shù)值,而其后的兩個(gè)指令周期僅僅是處于等待狀態(tài),一直等待到新的指令被執(zhí)行。 在一些指令中,比如LD(間接取數(shù))和ST(間接存數(shù)),這些指令需要兩個(gè)時(shí)鐘周期來(lái)執(zhí)行。這種情況也會(huì)影響到指令流水線(xiàn)的運(yùn)行。如圖所示指令31是2個(gè)時(shí)鐘周期的指令。在T3時(shí)刻指令31被執(zhí)行,與此同時(shí)讀入指令32,程序計(jì)數(shù)器指(PC)向指令33。在T4時(shí)刻,依然執(zhí)行指令31,程序計(jì)數(shù)器(PC)不增加1,也不讀入新的指令。一直到T5時(shí)刻指令32才被執(zhí)行,與此同時(shí)指令33被讀入,PC指向指令34的地址。在這種情況下流水線(xiàn)需要保持一個(gè)時(shí)鐘周期。 有一種情況,在一個(gè)程序中,如果必須等前一條指令執(zhí)行完畢后的結(jié)果,才能執(zhí)行后一條指令,那么這種數(shù)據(jù)相關(guān)指令的執(zhí)行需要特別加以討論。有一段程序: LDI R18, $10 。 R18 = $10 LDI R18, $20 。 R18 = $20 INC R18 。 R18 = R18 + 1 = $21上面這段程序所描述的是,首先是將地址10送入R18寄存器中,然后又將地址20送入R18寄存器中。最后使地址R18自加1使地址20變?yōu)榈刂?1。但實(shí)際上當(dāng)執(zhí)行完上述程序后,最終的結(jié)果是11而不是21。之所以出現(xiàn)這種現(xiàn)象的原因是指令流水傳遞方式造成的。在這種方式中,第N+1條指令的操作數(shù)在第N條指令執(zhí)行的初期被存入操作數(shù)寄存器,而第N條指令執(zhí)行的結(jié)果將會(huì)在第N條指令執(zhí)行的末期寫(xiě)回到目的寄存器。所以在上面這個(gè)程序中, 指令(LDI R18 $20)執(zhí)行的初期,當(dāng)其執(zhí)行結(jié)果20還未寫(xiě)入到目的寄存器——R18時(shí),下一條指令(INC R18)已經(jīng)將原來(lái)存入R18中的操作數(shù)——10讀入了操作數(shù)寄存器。因此,指令(INC R18)只是從目的寄存器中讀入了指令(LDI R18 $10)的執(zhí)行結(jié)果——10,而不是指令(LDI R18 ,R20)的結(jié)果——20。為了解決這個(gè)問(wèn)題,需要用到一種叫做定向傳送的技術(shù)。如果上一條指令的目的寄存器被下一條指令當(dāng)作源寄存器使用時(shí),ALU中的計(jì)算結(jié)果將被直接送入到操作數(shù)寄存器中。當(dāng)然這需要特別的控制邏輯用于沖突檢測(cè)和數(shù)據(jù)的定向傳送。第五章 微控制器結(jié)構(gòu)設(shè)計(jì)。如圖所示,微控制器有兩個(gè)輸入引腳和3個(gè)雙向I/O端口。每個(gè)I/O端口由8個(gè)單獨(dú)的I/O引腳組成。所以3個(gè)I/O端口一共組成了24個(gè)I/O引腳。CLOCK信號(hào)能夠直接驅(qū)動(dòng)微控制器。RESET信號(hào)用于復(fù)位,當(dāng)RESET信號(hào)標(biāo)記為可用時(shí),微控制器被初始化,這個(gè)過(guò)程無(wú)需CLOCK信號(hào)驅(qū)動(dòng)。端口B,端口C和端口D都為8位,每一位都可以被設(shè)置為輸入或是輸出。引腳D7可以被用作外部中斷或外部時(shí)鐘中斷。引腳的具體實(shí)現(xiàn)方法和結(jié)構(gòu)詳細(xì)說(shuō)明將會(huì)在端口模塊中進(jìn)行討論。 ,圖中簡(jiǎn)化了總線(xiàn)結(jié)構(gòu),用每個(gè)框圖代表了一個(gè)微控制器的功能模塊。在頂層模塊中包括了11個(gè)功能模塊,這些功能模塊被分成了3個(gè)大的部分取指令部分,執(zhí)行指令部分,和I/O端口。其中的一些模塊,像是指令寄存器和狀態(tài)寄存器設(shè)計(jì)思路比較清晰,且易于實(shí)現(xiàn)。但是有些模塊,像是ALU和控制單元,在這些模塊中包含了大量的控制信號(hào),需要考慮的問(wèn)題十分煩雜,對(duì)這些模塊的設(shè)計(jì)耗費(fèi)了許多的時(shí)間,一度陷入了僵局。另外各功能模塊間的數(shù)據(jù)流向和總線(xiàn)結(jié)構(gòu)也需要認(rèn)真考慮,這也是微控制器設(shè)計(jì)的一大難點(diǎn)。 總線(xiàn)為各功能模塊間提供了連接。在這里基本上有兩種總線(xiàn)結(jié)構(gòu)——直接總線(xiàn)連接和通用總線(xiàn)連接。直接總線(xiàn)結(jié)構(gòu)是指兩各功能模塊直接相連,它被用于特定的模塊連接。設(shè)計(jì)中有許多的直接總線(xiàn)連接,例如:程序計(jì)數(shù)器(program couner)與程序存儲(chǔ)器(program rom)之間的連接;程序存儲(chǔ)器和指令寄存器之間的連接;寄存器文件和ALU之間的連接。直接總線(xiàn)連接的特點(diǎn)是不需要控制信號(hào)的驅(qū)動(dòng)。 通用總線(xiàn)被多個(gè)功能模塊所共享。在設(shè)計(jì)中數(shù)據(jù)總線(xiàn)被設(shè)計(jì)成唯一的通用總線(xiàn)。數(shù)據(jù)總線(xiàn)被通用目的寄存器,ALU,狀態(tài)寄存器,SRAM和所有的I/O端口所共享。寄存器文件只能夠從數(shù)據(jù)總線(xiàn)上接收數(shù)據(jù),但是其他所有的功能模塊都可以用數(shù)據(jù)總線(xiàn)接收或是發(fā)送數(shù)據(jù)。在微控制器中,控制信號(hào)被用來(lái)控制正確的數(shù)據(jù)流向,從而保證在每一個(gè)時(shí)刻數(shù)據(jù)總線(xiàn)只有唯一的一個(gè)數(shù)據(jù)來(lái)源。狀態(tài)總線(xiàn)被用來(lái)控制通用數(shù)據(jù)總線(xiàn),它保證了正確的數(shù)據(jù)源連接到數(shù)據(jù)總線(xiàn)上,并將其他的數(shù)據(jù)源置為高電阻使其與總線(xiàn)系統(tǒng)斷開(kāi)。當(dāng)ALU作為數(shù)據(jù)源時(shí),如果沒(méi)有控制邏輯來(lái)為數(shù)據(jù)的目的地產(chǎn)生使能信號(hào),使數(shù)據(jù)可以被正確的接收,那么數(shù)據(jù)總線(xiàn)將被ALU產(chǎn)生的數(shù)據(jù)所淹沒(méi),其余功能模塊將無(wú)法使用數(shù)據(jù)總線(xiàn)。下面我們將對(duì)整個(gè)微控制器系統(tǒng)進(jìn)行概括的介紹。整個(gè)系統(tǒng)能夠被分為3個(gè)部分,取指令單元、執(zhí)行指令單元和I/O單元。取指令單元被用于取下一條指令,執(zhí)行指令單元被用于執(zhí)行當(dāng)前指令,I/O單元提供了微控制器與外界的連接。取指令單元和執(zhí)行指令單元組成了微控制器的中央處理單元。取指令單元的第一個(gè)功能模塊是程序計(jì)數(shù)器(PC)。在程序計(jì)數(shù)器中包含了下一條要執(zhí)行指令的地址,程序計(jì)數(shù)器指向程序存儲(chǔ)器(program ROM),通過(guò)其中的地址在程序存儲(chǔ)器中查找相應(yīng)的指令。接著程序存儲(chǔ)器中的指令被送入到指令寄存器當(dāng)中??刂茊卧x取指令寄存器中的內(nèi)容并對(duì)指令解碼,接著控制單元標(biāo)記相應(yīng)的控制信號(hào)用于指令的執(zhí)行。以上所提及的功能模塊都是通過(guò)直接總線(xiàn)方式連接的。執(zhí)行指令單元被用來(lái)對(duì)大多數(shù)的指令進(jìn)行執(zhí)行。通常情況下,為了執(zhí)行一條指令2個(gè)操作數(shù)被從寄存器文件中讀入到ALU。接著ALU對(duì)操作數(shù)進(jìn)行運(yùn)算并將運(yùn)算結(jié)果送入到數(shù)據(jù)總線(xiàn)中。然后數(shù)據(jù)總線(xiàn)中的內(nèi)容(運(yùn)算結(jié)果)被回存到寄存器文件中。同時(shí)ALU也產(chǎn)生狀態(tài)寄存器的標(biāo)志位并將其直接送入狀態(tài)寄存器中。完成所有這些操作過(guò)程需要1個(gè)時(shí)鐘周期。微控制器微LD(間接取數(shù))和ST(間接存數(shù))指令設(shè)置了一個(gè)訪(fǎng)問(wèn)內(nèi)存的通道,在微控制器中對(duì)RAM的直接尋址是不允許的,只有通過(guò)Z指針(寄存器R30)對(duì)RAM進(jìn)行間接尋址。對(duì)RAM尋址時(shí)可以用間接尋址,帶預(yù)減的間接尋址和帶后加的間接尋址等方式,這些內(nèi)容在第四章指令介紹中進(jìn)行過(guò)詳細(xì)討論。需要強(qiáng)調(diào)的是,在RAM和寄存器文件之間,讀取指令只能夠?qū)?shù)據(jù)進(jìn)行傳送,在執(zhí)行指令時(shí),Z指針中包含了RAM的地址,一個(gè)讀取操作通過(guò)數(shù)據(jù)總線(xiàn)將RAM中的數(shù)據(jù)送入通用目的寄存器,一個(gè)存儲(chǔ)操作將通用目的寄存器中的數(shù)據(jù)送入ALU,接著ALU將數(shù)據(jù)送入數(shù)據(jù)總線(xiàn)并存入RAM中。以上就是間接存取操作的過(guò)程,它們的具體功能實(shí)現(xiàn),將會(huì)在功能模塊設(shè)計(jì)中詳細(xì)討論。為了實(shí)現(xiàn)取指令和執(zhí)行指令,這兩個(gè)過(guò)程的流水操作,內(nèi)存單元采用了程序和數(shù)據(jù)分開(kāi)存放的結(jié)構(gòu),程序被存入了程序存儲(chǔ)器ROM,而數(shù)據(jù)被存放在數(shù)據(jù)存儲(chǔ)器RAM。這種結(jié)構(gòu)的先進(jìn)性在于容易實(shí)現(xiàn)下一條指令的預(yù)先讀取,從而使指令的流水傳遞成為可能。在設(shè)計(jì)中RAM的初始值被設(shè)置為0。 I/O單元中的功能模塊都有大量的控制寄存器。在這些模塊之間,數(shù)據(jù)通過(guò)通用數(shù)據(jù)總線(xiàn)被接收或發(fā)送。IN指令和OUT指令的實(shí)質(zhì)就是在這些控制寄存器和通用目的寄存器之間傳送數(shù)據(jù)。下圖中灰色部分的控制寄存器($00$1F)能夠直接被指令SBI和CBI(對(duì)I/O相應(yīng)的位設(shè)置/清零)按位操作bitaccessible。指令SBIS和SBIC(I/O寄存器置位/清零既條)同樣也可以直接檢測(cè)這些寄存器中的每一個(gè)信號(hào)位。在設(shè)計(jì)中,列表中灰色部分的控制寄存器全部被設(shè)計(jì)成位了I/O端口控制寄存器。需要強(qiáng)調(diào)一點(diǎn)的是,PINB,PINC和PIND并不是真正的寄存器,它們只有在讀入操作數(shù)時(shí)被調(diào)用,它們可以被理解為讀入物理信號(hào)的外部引腳。 I/O單元地址空間 微控制器的設(shè)計(jì)中包括了許多寄存器,有指令寄存器(IR),指令備份寄存器(IBR),程序計(jì)數(shù)器(PC),通用目的寄存器(GPR),內(nèi)存地址寄存器(MAR),所有的I/O控制寄存器等,則這里程序計(jì)數(shù)器PC被當(dāng)成了一個(gè)特殊的寄存器。其中大部分的寄存器可以在頂層模塊框圖中找到,而另一些寄存器則被設(shè)計(jì)在了相應(yīng)的功能模塊之中。整個(gè)系統(tǒng)的工作就是使數(shù)據(jù)在這些寄存器之間進(jìn)行傳遞,一些數(shù)據(jù)不需要預(yù)先處理就可以進(jìn)行傳遞,而另一些數(shù)據(jù)在處理后才能傳入下一個(gè)寄存器,也就是被這些寄存器間的組合邏輯進(jìn)行處理。所以說(shuō),數(shù)據(jù)怎樣被傳送;數(shù)據(jù)在傳送前怎樣被預(yù)先處理;以及不同數(shù)據(jù)在寄存器中的含義;以上的問(wèn)題決定了設(shè)計(jì)的芯片是否是一個(gè)基于RISC結(jié)構(gòu)的微控制器。也就是說(shuō),一系列的寄存器間傳送形成了微控制器的功能。,可以認(rèn)為從圖中的一個(gè)寄存器傳送數(shù)據(jù)到另一個(gè)寄存器,期間經(jīng)過(guò)了許多次組合邏輯處理。 現(xiàn)在對(duì)寄存器傳送這個(gè)概念舉例說(shuō)明。例如,狀態(tài)寄存器能夠直接將其內(nèi)容送入通用目的寄存器,而不需要對(duì)其內(nèi)容進(jìn)行預(yù)先處理,這就是寄存器直接傳送而無(wú)需組合邏輯參與的形式。然而,當(dāng)Z指針中的數(shù)值需要預(yù)先減1再送入內(nèi)存地址寄存器(MAR)時(shí),在這種情況下的組合邏輯就是減法器。當(dāng)對(duì)兩個(gè)通用寄存器進(jìn)行AND操作時(shí),在將結(jié)果寫(xiě)回到目的寄存器前,將會(huì)有兩個(gè)寄存器通過(guò)組合邏輯的處理。在設(shè)計(jì)中存儲(chǔ)器(程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器)可以被看作時(shí)一種組合邏輯,程序計(jì)數(shù)器(PC)通過(guò)程序存儲(chǔ)器的處理找到指令并將數(shù)據(jù)傳遞到指令寄存器中。指令寄存器是通過(guò)PC的尋址從程序存儲(chǔ)器中讀入指令。綜上所述,微控制器設(shè)計(jì)的實(shí)質(zhì)就是就是設(shè)計(jì)出所有的相關(guān)邏輯單元并用寄存器將其相互連接起來(lái)。以上這些叫做系統(tǒng)的數(shù)據(jù)通路??刂菩盘?hào)被用來(lái)決定寄存器間數(shù)據(jù)傳遞的發(fā)生??刂菩盘?hào)由控制單元來(lái)產(chǎn)生,控制單元與數(shù)據(jù)通路組成了微控制器。了解系統(tǒng)中的寄存器是十分有必要的,下圖羅列了所有的功能模塊和與其有關(guān)的寄存器。信號(hào)CLK被作為所有寄存器的時(shí)鐘信號(hào),CLRN被作為所有寄存器的重置信號(hào),當(dāng)CLRN被標(biāo)記為低電平時(shí),所有的寄存器將被清零。 功能模塊總攬微控制芯片包括兩個(gè)部分,一部分是數(shù)據(jù)通路,另一部分是控制單元。 本章主要討論數(shù)據(jù)通路中各功能模塊的設(shè)計(jì)思路和實(shí)現(xiàn)方法,下一章將重點(diǎn)對(duì)控制單元的設(shè)計(jì)加以研究。 程序記數(shù)器(Program Counter).。為了保證程序能夠連續(xù)的執(zhí)行下去,微控制器需要不斷的通過(guò)程序記數(shù)器(PC)來(lái)確定下一條指令的地址。在程序執(zhí)行時(shí),需要將程序中存儲(chǔ)第一條指令內(nèi)存單元地址送入PC(具體實(shí)現(xiàn)時(shí)是存放在程序計(jì)數(shù)器中的一個(gè)9位地址寄存器),此時(shí)PC的內(nèi)容是程序存儲(chǔ)器的地址,在該地址中對(duì)應(yīng)存放的是程序的第一條指令。程序控制器的任務(wù)就是要保證指向下一條執(zhí)行指令的地址。因?yàn)榇蠖鄶?shù)指令都是按照順序來(lái)執(zhí)行的,所以在程序計(jì)數(shù)器中,地址改變的過(guò)程通常只是在每個(gè)時(shí)鐘跳變時(shí)對(duì)PC加1。但是當(dāng)遇到轉(zhuǎn)移指令時(shí),下一個(gè)需要被執(zhí)行的指令將由當(dāng)前的轉(zhuǎn)移指令來(lái)決定,這就需要程序計(jì)數(shù)器不僅能夠順序的選取指令,還要能夠跳躍的選取指令。為了能夠完成上述功能,在程序計(jì)數(shù)器中設(shè)置了堆棧STACK來(lái)保存中斷請(qǐng)求和跳轉(zhuǎn)指令所返回的地址,設(shè)置了備用寄存器(PCB),用來(lái)保存PC中每次最新讀
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1