周期cpu設(shè)計(jì)參考

周期cpu設(shè)計(jì)參考

ID:23361536

大?。?002.50 KB

頁(yè)數(shù):5頁(yè)

時(shí)間:2018-11-07

周期cpu設(shè)計(jì)參考_第1頁(yè)
周期cpu設(shè)計(jì)參考_第2頁(yè)
周期cpu設(shè)計(jì)參考_第3頁(yè)
周期cpu設(shè)計(jì)參考_第4頁(yè)
周期cpu設(shè)計(jì)參考_第5頁(yè)
資源描述:

《周期cpu設(shè)計(jì)參考》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。

1、單周期CPU及其VerilogHDL設(shè)計(jì)一、指令的設(shè)計(jì)MIPS32的指令的三種格式的參考:R類型:312625212016151110650oprsrtrdsafunc6位5位5位5位5位6位I類型:312625212016150oprsrtimmediate6位5位5位16位J類型:3126250opaddress6位26位R類型指令的op為0,具體操作由func指定。rs和rt是源寄存器號(hào),rd是目的寄存器號(hào)。只有移位指令使用sa來(lái)指定移位位數(shù)。I類型指令的低16位是立即數(shù),計(jì)算時(shí)要把它擴(kuò)展到32位。依指令的不

2、同,有零擴(kuò)展和符號(hào)擴(kuò)展兩種。J類型指令右邊26位是字地址,用于產(chǎn)生跳轉(zhuǎn)的目標(biāo)地址。具體的指令格式和內(nèi)容請(qǐng)參考MIPS32。設(shè)計(jì)報(bào)告中需自行設(shè)計(jì)所有指令的二進(jìn)制格式和對(duì)應(yīng)的匯編指令格式。二、單周期CPU的設(shè)計(jì)我們把時(shí)鐘的電平從低到高變化的瞬間稱為時(shí)鐘上升沿,兩個(gè)相鄰時(shí)鐘上升沿之間的時(shí)間間隔稱為一個(gè)時(shí)鐘周期。單周期CPU指的是一條指令的執(zhí)行在一個(gè)這樣的時(shí)鐘周期內(nèi)完成,然后開(kāi)始下一條指令的執(zhí)行,即一條指令用一個(gè)周期。2.1執(zhí)行一條指令所需的硬件電路我們的目的地是要設(shè)計(jì)CPU的硬件電路,使其能夠從存儲(chǔ)器中讀出一條條指令并執(zhí)

3、行指令所描述的操作。從存儲(chǔ)器中讀取指令的動(dòng)作一般與指令本身的意義無(wú)關(guān),可以以同樣的方法把指令從存儲(chǔ)器中取出。而執(zhí)行指令則與指令本身的意義密切相關(guān),因此最重要是首先搞清楚CPU要執(zhí)行的每條指令的意義。下面以兩種類型的電路來(lái)舉例。2.1.1與取指令有關(guān)的電路指令存儲(chǔ)在存儲(chǔ)器中。CPU取指令時(shí)把程序計(jì)數(shù)器(PC)中的內(nèi)容作為存儲(chǔ)器的地址,根據(jù)它來(lái)訪問(wèn)存儲(chǔ)器,從PC值指定的存儲(chǔ)單元中取來(lái)一條32位指令。如果取來(lái)的指令執(zhí)行時(shí)沒(méi)有引起轉(zhuǎn)移,PC的值要加4;如果轉(zhuǎn)移,要把轉(zhuǎn)移的目標(biāo)地址寫(xiě)入PC,以便在下一個(gè)時(shí)鐘周期取出下一條指令

4、。圖2.1取指令時(shí)用到的硬件電路和指令寄存器如圖2.1所示,PC是一個(gè)簡(jiǎn)單的32位寄存器,由32個(gè)D觸發(fā)器構(gòu)成。指令存儲(chǔ)器(InstMem)的輸入端a是地址、輸出端do是數(shù)據(jù)輸出,即指令。圖中的加法器專供PC+4使用,它的輸出接到多路器的一個(gè)輸入端。如果取來(lái)的指令沒(méi)有引起轉(zhuǎn)移或跳轉(zhuǎn),則選擇PC+4,在時(shí)鐘上升沿處將其打入PC;若引起轉(zhuǎn)移或跳轉(zhuǎn),則用多路器選擇下一條指令該打入的PC值。2.1.2寄存器計(jì)算類型指令執(zhí)行時(shí)所需電路寄存器類型的指令有add等。如圖2.2所示是執(zhí)行它們所需的部分硬件電路。大多數(shù)MIPS指令屬

5、于三操作數(shù)指令。指令格式中的rs和rt是兩個(gè)5位的寄存器號(hào),由它們從寄存器堆(Regfile)中讀出兩個(gè)32位的數(shù)據(jù)。由于寄存器號(hào)有5位,所以能從32個(gè)寄存器中選出一個(gè)。32個(gè)寄存器合在一起稱為寄存器堆(RegisterFile)。從寄存器堆讀出的兩個(gè)32位數(shù)據(jù)分別被送到ALU的a和b的輸入端。圖2.2執(zhí)行寄存器計(jì)算類型指令所需電路具體的計(jì)算由ALU完成。ALU的計(jì)算控制碼aluc由控制部件(ControlUnit)產(chǎn)生。這里的控制部件是簡(jiǎn)單的組合電路,輸入信號(hào)是指令的操作碼op和功能碼func,輸出信號(hào)3個(gè),它們

6、分別是ALU的操作碼aluc、計(jì)算結(jié)果是否寫(xiě)入寄存器堆的控制信號(hào)wreg和下一條指令的地址選擇信號(hào)pcsource。ALU的計(jì)算結(jié)果要寫(xiě)入寄存器堆。到底要寫(xiě)入32個(gè)寄存器中的哪一個(gè),由5位目的寄存器號(hào)rd指定。2.2寄存器堆設(shè)計(jì)寄存器堆有兩個(gè)讀端口和一個(gè)寫(xiě)端口。每個(gè)端口都有一個(gè)5位寄存器號(hào),用于指定一個(gè)寄存器;還有32位的數(shù)據(jù)端,用于寫(xiě)數(shù)據(jù)。寄存器堆的參考電路如圖2.3,其中,dec5e是一個(gè)帶有使能端的5-32譯碼器,mux32x32是一個(gè)32位的32選1的多路器,reg32由許多D觸發(fā)器組成??梢杂霉δ苊枋鲲L(fēng)格

7、的VerilogHDL代碼來(lái)實(shí)現(xiàn),關(guān)鍵部分是類似于二維數(shù)組的寄存器變量:reg[31:0]register[1:31](寄存器0的內(nèi)容永遠(yuǎn)是0)。圖2.3寄存器堆regfile的電路圖2.3數(shù)據(jù)存儲(chǔ)器和指令存儲(chǔ)器設(shè)計(jì)我們利用XilinxISE自帶的IP核實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)器和指令存儲(chǔ)器的設(shè)計(jì)。在使用IP核時(shí),可以將其作為一個(gè)黑盒子,只關(guān)注核的功能和參數(shù)配置,不需要了解核內(nèi)部的實(shí)現(xiàn)電路。下面以指令存儲(chǔ)器的設(shè)計(jì)為例。2.3.1指令存儲(chǔ)器的設(shè)計(jì)1、雙擊“ISEDesignSuite14.2”啟動(dòng)軟件,建立好project。2、

8、編輯初始化存儲(chǔ)器的文檔。在工程目錄下生成一個(gè)txt文檔,內(nèi)容格式為:圖2.4初始化ROM的文件格式文件前兩行是格式說(shuō)明,第一行說(shuō)明數(shù)據(jù)格式是16進(jìn)制,第二行說(shuō)明是初始向量,每個(gè)單元內(nèi)的數(shù)據(jù)用逗號(hào)隔開(kāi),結(jié)束用分號(hào)。這里的數(shù)據(jù)是機(jī)器指令代碼。完成后將后綴改成.coe。3、在工程管理區(qū)任意位置單擊鼠標(biāo)右鍵,在彈出的菜單中選擇NewSource命令。在彈出如圖2.5

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。