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

正文內(nèi)容

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

2024-07-20 06:52 本頁面
 

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