![多級流水CPU設計單片機課程設計_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/1/8f802474-f166-4924-b68f-cbcd20f8bfb4/8f802474-f166-4924-b68f-cbcd20f8bfb41.gif)
![多級流水CPU設計單片機課程設計_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/1/8f802474-f166-4924-b68f-cbcd20f8bfb4/8f802474-f166-4924-b68f-cbcd20f8bfb42.gif)
![多級流水CPU設計單片機課程設計_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/1/8f802474-f166-4924-b68f-cbcd20f8bfb4/8f802474-f166-4924-b68f-cbcd20f8bfb43.gif)
![多級流水CPU設計單片機課程設計_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/1/8f802474-f166-4924-b68f-cbcd20f8bfb4/8f802474-f166-4924-b68f-cbcd20f8bfb44.gif)
![多級流水CPU設計單片機課程設計_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/1/8f802474-f166-4924-b68f-cbcd20f8bfb4/8f802474-f166-4924-b68f-cbcd20f8bfb45.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 (指導教師用表)學 生 姓 名指 導 教 師論文(設計)題目多級流水 cpu 設計主要研究(設計)內(nèi)容靈活運用所學到的基礎知識和主要專業(yè)知識,設計、制作、調(diào)試最終完成多級流水 cpu 的設計研究方法根據(jù)所學基礎知識和主要專業(yè)知識,設計多級流水 cpu,使用vhdl 語言。開發(fā)平臺是fpga-cpu 設計平臺,主要開發(fā)工具:quartus7.0,debugcontroller主要任務及目標1. 設計出 cpu 實現(xiàn)多級流水 2. 完成從系統(tǒng)級設計到代碼實現(xiàn)以及硬件上調(diào)試3. 完成學年論文主要參考文獻1 (美)亨尼西, (美)帕特森計算機體系結構:量化研究方法(第 3版)機械工業(yè)出版社,2003
2、2 湯志忠,楊春武.開放式實驗 cpu 設計.北京:清華大學出版社,2007論文(設計)各階段名稱日期系統(tǒng)概念設計及總體設計第 10 周代碼實現(xiàn)階段第 1114 周系統(tǒng)調(diào)試、試運行階段第 15 周進度安排論文的整理定稿第 15 周 指導教師簽字:系主任簽字:主管教學院長簽字:裝訂線河北大學 2007 屆本科生學年論文設計 學生姓名專業(yè) 年級論文(設計)題目多級流水 cpu 設計論文(設計)內(nèi)容提要論文完成的主要工作包括:(l) 綜合運用了所學知識,完成多級流水 cpu 系統(tǒng)級設計。(2) 通過 vhdl 語言實現(xiàn)邏輯設計。(3) 設計成果在 fpga 硬件平臺的運行指導教師評語成績: 指導教師
3、(簽名): 年 月 日摘要河北大學 2007 屆本科生學年論文設計本學期計算機體系課程設計題目是多級流水 cpu 設計。以計算機硬件為主,兼顧計算機軟件和計算機應用技術。在教師指導下,靈活運用所學到的基礎知識和主要專業(yè)知識,自己設計、制作、調(diào)試,完成 16 位五級流水 cpu 的實際。本組設計并最終在 fpga 實驗平臺上實現(xiàn)一個 cpu 芯片,具有五級流水。采用流水處理技術解決了流水線技術中的結構相關、數(shù)據(jù)相關和控制相關。設計了指令系統(tǒng)、指令格式、尋址方式、寄存器結構、數(shù)據(jù)表示方式、存儲器系統(tǒng),運算器、控制器和流水線結構等。用 vhdl 硬件語言進行邏輯設計,采用先進的工具軟件進行模擬和測試
4、,測試通過之后下載到 fpga 芯片中,并在測試平臺上通過規(guī)定測試程序的測試。關鍵字:流水線;fpga;五級流水河北大學 2007 屆本科生學年論文設計目目錄錄1.1.前言前言-11.11.1實驗目的實驗目的-11.21.2實驗環(huán)境實驗環(huán)境-12.2.流水線工作原理流水線工作原理-33.3.系統(tǒng)設計系統(tǒng)設計-53.13.1概念設計概念設計-53.23.2指令系統(tǒng)指令系統(tǒng)-53.33.3時序設計時序設計-64.4.結構設計結構設計-94.14.1總體邏輯結構設計總體邏輯結構設計-94.24.2分模塊結構設計分模塊結構設計-115.5.代碼實現(xiàn)及測試代碼實現(xiàn)及測試 -135.15.1代碼實現(xiàn)代碼實
5、現(xiàn)-135.25.2程序測試程序測試-195.35.3測試結果測試結果-216.6.實驗總結實驗總結 -25河北大學 2007 屆本科生學年論文設計11.1. 前言1.1 實驗目的1. 本實驗需要自己設計并最終用 fpga 實現(xiàn)一個 cpu 芯片。利用已有的計算機組成原理知識,以及對計算機系統(tǒng)結構的初步學習,設計一個包括指令系統(tǒng)、尋址方式、寄存器組、存儲系統(tǒng)、流水線結構等的 cpu。設計的 cpu 必須具有復位功能,以便使用 tec-ca 實驗臺上的“cpu 復位”按鈕對 cpu 復位,使cpu 處于調(diào)試前的初始狀態(tài)。cpu 復位脈沖按負脈沖設計。2. 熟練掌握 vhdl 硬件描述語言,對 c
6、pu 的各個功能模塊進行代碼編寫,并學會將各個功能部分組織連接成一個完整 cpu 體系結構。3. 學會利用先進的硬件設計工具軟件 quartus ii 對程序進行仿真和調(diào)試。并熟練掌握 fpga-cpu 在“tec-ca 開放式 cpu 實驗教學系統(tǒng)”上的調(diào)試方法。4. 在完成實驗的過程中鍛煉和提高實際動手能力、創(chuàng)新思維、團隊合作精神等方面的能力。1.2 實驗環(huán)境1. 總體描述fpga-cpu 設計平臺能夠支持下載到 fpga 中的 cpu 的單步調(diào)試和連續(xù)運行。用戶用 vhdl 編寫的 cpu 代碼通過編譯之后,可以下載到設計平臺上的 fpga 芯片中。fpga-cpu 的運行通過執(zhí)行預先寫
7、到外部存儲器中的程序來實現(xiàn)。使用debugcontroller 程序對外部存儲器進行讀寫操作,并能監(jiān)控 fpga-cpu 的狀態(tài)和通過設置斷點調(diào)試 fpga-cpu 正在執(zhí)行的程序。這套實驗環(huán)境為實驗者提供了最大的自由度來寫出具有自己風格的 cpu 軟核,并在測試運行平臺上調(diào)試和運行。2. 硬件環(huán)境整個硬件平臺主要有 pc 監(jiān)控系統(tǒng)、外部程序存儲器、fpga-cpu 及其下載相關電路,以及控制電路組成。其中 pc 監(jiān)控系統(tǒng)主要是由監(jiān)控軟件河北大學 2007 屆本科生學年論文設計2debugcontroller 及相關通信接口等構成,提供一整套的運行和調(diào)試功能。3. 軟件環(huán)境quartus-7.
8、0我們使用該軟件完成編碼工作,并在 active-hdl 功能模擬通過后,進行有效的時序模擬。最終燒片等都用該軟件。調(diào)試程序 debugcontroller使用該軟件對外部存儲器進行讀寫操作,并能監(jiān)控 fpga-cpu 的狀態(tài)和通過設置斷點調(diào)試 fpga-cpu 正在執(zhí)行的程序。河北大學 2007 屆本科生學年論文設計32.2. 流水線工作原理流水線處理技術是在重疊、先行控制的基礎上發(fā)展起來的,包括指令控制功能和功能處理過程都可采用流水處理。在先行控制方式中將一條指令的執(zhí)行分為“分析”和“執(zhí)行”兩個子過程。這兩個子過程分別使用指令分析器和運算器兩個獨立的部件來完成。所以可以利用多條指令執(zhí)行時,
9、在時間上相互錯開,輪流重疊地利用這兩個獨立部件,來加快程序的執(zhí)行速度。若實現(xiàn)“分析”與“執(zhí)行”中的每一個子過程都需要t1=t/2 時間,則 4 條指令流水執(zhí)行只需 5t1,比起 4 條指令順序執(zhí)行所需的 8t1 時間少了近一半。如果將指令的“分析”子過程再進一步劃分成“指令譯碼”和“取操作數(shù)”兩個子過程,分別由“譯碼”和“取數(shù)”兩個獨立的子部件執(zhí)行,并使所有子部件的經(jīng)過時間都改進成 t2=t/4,指令執(zhí)行順序如圖 2-1 所示。取取指指令令譯譯碼碼取取數(shù)數(shù)執(zhí)執(zhí)行行入入出出圖表 2-1 指令執(zhí)行順序圖圖 2-2 是指令流水執(zhí)行的時空圖。圖中橫坐標為時間,縱坐標為空間(即各個子過程) ,標有數(shù)字的
10、方格說明占用該空間與時間的任務號,在本例中表示機器處理的第 1、第 2、第 3、第 4、第 5 條指令,最多可以有 4 條指令在不同的部件中同時進行處理。這樣計算機每隔 t2 就能輸出一條指令的執(zhí)行結果。圖表 2-2指令流水執(zhí)行時空圖河北大學 2007 屆本科生學年論文設計4按此思路,流水線的定義可以具體描述為:將一個復雜的處理過程分成 m個復雜程度相當、處理時間大致相等的子過程,每個子過程由一個獨立的功能部件來完成,處理對象在各子過程連成的線路上連續(xù)流動。在同一時間,m 個獨立部件同時進行不同的操作,完成對不同子過程的處理,這種工作方式稱為流水線。在計算機流水線的實際應用過程中,為平滑緩沖各
11、子部件之間的速度差異,在子部件之間往往都要設置高速接口緩沖器或一定容量的高數(shù)緩沖器來保存中間結果。也就是通常所說的 n 級流水處理中的級間寄存器。河北大學 2007 屆本科生學年論文設計53.3. 系統(tǒng)設計3.1 概念設計指令流水的基本思路是把每條指令劃分為幾個執(zhí)行步驟,這些步驟在執(zhí)行過程中使用不同的資源從而在時間上能重疊起來,提高了整體工作負載的吞吐率。我們將每條指令劃分為“取指” 、 “譯碼” 、 “執(zhí)行” 、 “訪存” 、 “寫回”這五個執(zhí)行步驟。如圖 3-1 所示。取指令if指令譯碼id指令執(zhí)行exe存儲器讀寫 mem寄存器寫回wb圖表 3-1 多級流水 cpu 設計圖3.2 指令系統(tǒng)
12、指令系統(tǒng)設計的好壞影響整個系統(tǒng)各個方面的性能。我們采用了實驗指導書中的指令系統(tǒng)。如表 3-2 所示:匯編語句操作碼功能描述指令類型add dr,sr00000000dr+srdrsub dr,sr00000001dr-srdrdec dr00000010dr-1drinc dr00000011dr+1drcmp dr,sr00000110dr-sr 比較and dr,sr00000111dr and srdr 邏輯與or dr,sr00001000dr or srdr 邏輯或xor dr,sr00001010dr xor sr dr 異或test dr,sr00001011dr and sr,
13、 測試shl dr00001100邏輯左移,最低位補 0,最高位移入 cshr dr 00001101邏輯右移,最高位補 0,最低位移入 csar dr00001110算術右移,最高位右移,同時再用自身的值填入算術邏輯指令河北大學 2007 屆本科生學年論文設計6mov dr,sr00001111sr drload dr,sr01000001sr drstore dr,sr01000010 sr drmovi dr,imm01000011imm dr (雙字指令)pshf01000100flag 入棧popf01000101flag 出棧push sr01000110sr 入棧pop dr01
14、000111出棧 dr數(shù)據(jù)傳送指令jr adr00010000無條件跳轉到 adr , adr=原 pc 值+offsetjrc adr00010001當 c=1 時,跳轉到 adr, adr=原 pc 值+offsetjrnc adr00010010當 c=0 時,跳轉到 adr, adr=原 pc 值+offsetjrz adr00010011當 z=1 時,跳轉到 adr, adr=原 pc 值+offsetjrnz adr00010100當 z=0 時,跳轉到 adr, adr=原 pc 值+offsetjmpa adr01010000無條件跳轉到 adrret01010001子程序返
15、回call adr10000000調(diào)用首地址在 adr 的子程序(雙字指令)控制轉移指令nop11000000空操作其他halt0001000011111111停機 (jr 0xffff)圖表 3-2cpu 的指令系3.3 時序設計本次課程設計采用的五級流水時序如圖 3-3 所示,數(shù)據(jù)通路如圖 3-4 所示。clock numberinstruction number 1 2 3 4 5 6 7 8 9instruction iif id ex mem wbinstruction i+1if id ex mem wbinstruction i+2if id exmem wbinstructio
16、n i+3if idex mem wbinstruction i+4ifid ex mem wbclock numberinstruction number 1 2 3 4 5 6 7 8 9instruction iif id ex mem wbinstruction iif id ex mem wbinstruction i+1if id ex mem wbinstruction i+1if id ex mem wbinstruction i+2if id exmem wbinstruction i+2if id exmem wbinstruction i+3if idex mem wbi
17、nstruction i+3if idex mem wbinstruction i+4ifid ex mem wbinstruction i+4ifid ex mem wb圖表 3-3 五級流水時序圖河北大學 2007 屆本科生學年論文設計7cc1cc2cc3cc4cc5cc6immemregaluregimmemregaluregimmemregaluimregaluimregcc1cc2cc3cc4cc5cc6cc1cc2cc3cc4cc5cc6immemregaluregimmemregregaluregregimmemregaluregimmemregregaluregregimmem
18、regaluimmemregregaluimregaluimregregaluimregimregreg圖表 3-4 五級流水數(shù)據(jù)通路為保證指令的正確執(zhí)行。處理結構相關需要做兩項工作:沖突檢測和取指延后。1. 沖突檢測只有執(zhí)行訪存指令(load/store)時,才會出現(xiàn)沖突。因此,我們在譯碼時產(chǎn)生一個標志是否訪存的信號 wmem。含義如圖 3-5:wmem意義00寫內(nèi)存(store)01讀內(nèi)存(load)1不占用內(nèi)存圖表 3-5 wmem 控制信號通過檢查“訪存階段”的 m_wrmem 就可確定是否沖突。2. 取指延后在每次取指時,若有沖突,則往 ir 中寫入空指令(nop),并保持 pc 不
19、變,使取指延后一個節(jié)拍。在解決了結構相關、控制相關、數(shù)據(jù)相關后,五級流水時序圖最終設計如圖 3-6:河北大學 2007 屆本科生學年論文設計8取指譯碼執(zhí)行訪存寫回取指譯碼執(zhí)行訪存寫回取指譯碼執(zhí)行訪存寫回取指譯碼執(zhí)行訪存寫回取指譯碼執(zhí)行訪存寫回pc更新圖表 3-6 五級流水時序圖河北大學 2007 屆本科生學年論文設計94.4. 結構設計4.1 總體邏輯結構設計總體邏輯設計的 rtl 圖參考課本中的設計,如圖 4-1 所示。圖表 4-1各個功能部件的功能及其使用的控制信號: 1. alu:組合邏輯部件,對兩個 16 位的輸入及進位輸入 cin 可進行由 3 位控制信號控制。2. 數(shù)據(jù)選擇器 bu
20、s_mux:組合邏輯器件,其輸入包括:源寄存器數(shù)據(jù),目標寄存器數(shù)據(jù),帶符號位擴展的偏移地址,pc,以及從內(nèi)存讀取的立即數(shù)、跳轉地址等數(shù)據(jù)。在 3 位控制信號的控制下它進行 alu 模塊 a、b 端輸入的選擇。3. 程序計數(shù)器 pc:時序邏輯器件,16 位寄存器,在控制信號 pc_en 的控制下可接收 alu 的運算結果(高電平接收,否則保持不變) 。輸出送往地址寄存器(讀取指令內(nèi)容)以及數(shù)據(jù)選擇器(進行自增運算) 。河北大學 2007 屆本科生學年論文設計104. 地址寄存器 ar 和指令寄存器 ir:都是 16 位的寄存器,地址寄存器用于存放要讀寫的內(nèi)存地址單元的地址,輸出送往地址總線,輸入
21、可能為 pc 內(nèi)容,也可能為 alu 的輸出(對讀寫內(nèi)存指令) ;指令寄存器存放當前執(zhí)行指令的內(nèi)容,它的輸入來自從內(nèi)存讀取的指令和數(shù)據(jù),輸出送往控制邏輯。二者共用兩位控制信號 rec。寄存器組和寄存器的選擇:本實驗中的寄存器都為 16 位,帶有清零端和使能端,實際上在寫 vhdl 程序時,通用寄存器以及 ar、ir、pc 使用的都是同一個模板。按照我們的設計,通用寄存器共有 16 個,由指令的低 8 位的全部或其中的高 4 位或低 4 位來從寄存器組中選擇源寄存器和目的寄存器。安排寄存器選擇器件 reg_mux,為組合邏輯器件,用于輸出選定寄存器的內(nèi)容。5. 節(jié)拍發(fā)生器:時序邏輯器件,作用是用
22、多位觸發(fā)器的輸出信號的不同組合狀態(tài),來標識每條指令的執(zhí)行步驟。其功能相當于一個狀態(tài)機。前文已述,我們設計的節(jié)拍發(fā)生器共有 3 位觸發(fā)器。在編碼方面,遵循了這樣的原則:從一個狀態(tài)變到下一個狀態(tài)時,狀態(tài)發(fā)生變化的觸發(fā)器數(shù)目應盡量少。6. 控制邏輯:組合邏輯器件,前面已提到,它根據(jù)指令內(nèi)容(由 ir 提供)和指令的執(zhí)行步驟(由節(jié)拍發(fā)生器提供)及其他一些條件信號(標志寄存器輸出) ,形成并提供出計算機各部件當前時刻要用到的控制信號。根據(jù)前面所總結的全部控制信號的意義、作用和數(shù)值,可以比較容易地寫出控制邏輯部件。7. reg_out:對外輸出寄存器內(nèi)容的譯碼電路,組合邏輯器件,根據(jù)外部輸入的寄存器選擇信
23、號輸出制定的寄存器內(nèi)容(包括為了便于觀察引出的內(nèi)部信號寄存器) 。8. 時序設計:結構相關的處理和數(shù)據(jù)相關的處理。整個 cpu 由以下幾個模塊組成:1. 取指模塊(if):給出內(nèi)存地址,讀取指令并送入指令寄存器,為下一級準備數(shù)據(jù)。由于 pc 控制模塊處于取指模塊中,因此控制相關的檢測也置于取指模塊。2. 譯碼模塊(id):讀取寄存器值和指令譯碼。我們采取一次譯碼,逐級傳遞的方式,譯出后幾級流水所需的控制信號和數(shù)據(jù)(如立即數(shù)等) ,在每次時鐘上升沿到來時送入下一級。實際上,結構相關、控制相關、數(shù)據(jù)相關的檢測河北大學 2007 屆本科生學年論文設計11都可歸入譯碼部分。考慮到“相關檢測”涉及到的信
24、號分屬不同階段以及整體結構的清晰性,我們將“相關檢測”獨立出來。3. 執(zhí)行模塊(ex):完成算術邏輯運算、計算有效地址和提供數(shù)據(jù)通道。4. 訪存模塊(ma):選擇地址線的數(shù)據(jù)來源和數(shù)據(jù)線的流向。訪存和取指在功能上是獨立的,但 cpu 對外只有一條地址線和數(shù)據(jù)線的事實決定了訪存和取指是相互聯(lián)系的。當執(zhí)行 load/store 指令時,地址線由 alu 送入“訪存段”的值提供;取指時,則由 pc 提供。當寫內(nèi)存時,cpu 內(nèi)部數(shù)據(jù)送數(shù)據(jù)線;當需要讀內(nèi)存時,cpu 往數(shù)據(jù)線送高阻。5. 回寫模塊(wb):選擇回寫數(shù)據(jù)源和根據(jù)寫使能信號 wregen 將數(shù)據(jù)回寫到寄存器堆;6. hazarddetec
25、tunit 模塊:檢測結構相關;7. forwardingunit 模塊:檢測數(shù)據(jù)相關。其中由我完成取指模塊、譯碼模塊、執(zhí)行模塊。4.2 分模塊結構設計1. 取指模塊主要完成兩個任務,一是根據(jù)程序計數(shù)器 pc 里的指令地址從指令存儲器里讀取指。另一個任務主要完成 pc+1 計算和下一條指令地址的猜測。對下一條指令的猜測主要是假設分支條件不成立,猜測下一條指令地址是本指令地址的下一地址,除了對下一條指令的猜測,還完成對上一次的猜測的確認。本指令地址的確認主要是完成如果上一條指令是分支指令時,如果分支條件不成立,本指令地址猜測是正確,指令有效,繼續(xù)執(zhí)行,否則本指令無效,重新再取指。2. 譯碼模塊譯
26、碼階段,是整個系統(tǒng)中的關鍵控制階段,不但進行指令譯碼,從寄存器堆中讀取操作數(shù),而且判斷分支指令的跳轉條件,計算跳轉地址和處理數(shù)據(jù)相關性問題。這一階段主要器件有譯碼單元,寄存器堆,加法器,比較器和地址選擇器等。譯碼單元,可以說是核心控制單元,根據(jù)指令代碼譯碼成各種控制信號控制各個單元的控制,而且進行數(shù)據(jù)相關處理。河北大學 2007 屆本科生學年論文設計12執(zhí)行階段主要完成指令的邏輯運算工作,alu 根據(jù)操作控制碼對所提供的操作數(shù)進行相應的操作。讀/寫儲存階段主要完成存儲器中數(shù)據(jù)的讀取和寫入,是微處理器系統(tǒng)中比較復雜的功能,在這主要完成微處理器內(nèi)部數(shù)據(jù)存儲器的讀寫。3. 執(zhí)行模塊執(zhí)行階段主要完成指
27、令的邏輯運算工作,alu 根據(jù)操作控制碼對所提供的操作數(shù)進行相應的操作。讀/寫儲存階段主要完成存儲器中數(shù)據(jù)的讀取和寫入,是微處理器系統(tǒng)中比較復雜的功能,在這主要完成微處理器內(nèi)部數(shù)據(jù)存儲器的讀寫。結構圖如圖 4-2 所示。muxalubin 0alusrcextto17bitsextto17bits或門異或與門sarshlshrcxaluoprc,z,v,ssetflagflagaluoutcxclkimm1 0 xfffftflagmuxe_raoutforwardamuxe_rboutm_aluoutw_rbdataforwardbaluain傍傍路路模模塊塊五五級級流流水水cpu運運算算器
28、器結結構構圖圖operation mux圖表 4-2 五級執(zhí)行模塊結構圖河北大學 2007 屆本科生學年論文設計135.5. 代碼實現(xiàn)及測試5.1 代碼實現(xiàn)使用 vhdl 語言語言編寫內(nèi)部模塊,完成程序編譯后下載到硬件平臺上,通過元件的例化配置,將內(nèi)存模塊和已有的 cpu 模塊連接起來,構成一個完整的計算機系統(tǒng)。1. 取指模塊取指模塊給出內(nèi)存地址,讀取指令并送入指令寄存器,為下一級準備數(shù)據(jù)。該模塊 rtl 圖如圖 5-1 所示:a15.0b15.0out15.0adderdqpreenaclra7.0b7.0outequala7.0b7.0outequala7.0b7.0outequala7.
29、0b7.0outequala7.0b7.0outequaldqpreenaclrdqpreenaclrsel2.0data7.0outmuxsel2.0data7.0outmuxdqpreenaclrseldataadatabout0mux21seldataadatabout0mux21add016 h0001 -equal08 h13 -equal18 h14 -equal28 h10 -equal38 h11 -ir13.0ir15.14mux1pc15.0pcincsel0pcnext15.0s_selc0s_selc1s_selz0s_selz1ir15.016 h0003 -rese
30、tclkzctempcpcstallifflushe_setflag2.0pcplusoffset15.0outerdb15.0pc_addr15.0d_pcinc115.0d_ir15.0equal48 h12 -d_pcinc115.0reg0tempzmux0圖表 5-1 取指模塊 rtl 圖pc 作為程序計數(shù)器,程序計數(shù)器控制關鍵代碼如下:op = ir(15 downto 8);-操作碼with e_setflag select zz = zwhen flag_hold, tempz when others;with e_setflag select cc = cwhen flag_
31、hold, tempc when others;s_selz = 1 when( op=jrz and zz=1) -判斷是否跳轉 or ( op=jrnz and zz=0)河北大學 2007 屆本科生學年論文設計14 or op=jr else 0; s_selc = 1 when( op=jrc and cc=1) -判斷是否跳轉 or ( op=jrnc and cc=0) else 0; pcincsel = 1 when s_selz=1 or s_selc=1 else 0; s_pcinc1 = pc + x0001; with pcincsel select pcnext =
32、 s_pcinc1 when 0, pcplusoffset when 1, s_pcinc1 when others; process(reset,clk,pcstall)beginif reset = 0 thenpc = x0000; elsif falling_edge(clk) and (pcstall=0) then pc = pcnext;end if;end process;取指部分采用一個 process 來完成,關鍵代碼如下:process(reset,clk,outerdb,ifflush)beginif reset=0 thenir ir ir = nopins;end
33、 case;d_pcinc1 ctrl:=d_ir(7 downto 0)&10&1&1&001&0000&001;when subb = ctrl:=d_ir(7 downto 0)&10&1&1&001&0001&001;when dec = ctrl:=d_ir(7 downto 0)&10&1&1&100&0000&001;when inc = ctrl:=d_ir(7 downto 0)&10&1&1&010&0000&001;when andins = ctrl:=d_ir(7 downto 0)&10&1&1&001&0010&001;when cmp = ctrl:=d_ir(
34、7 downto 0)&10&0&1&001&0001&001;when test = ctrl:=d_ir(7 downto 0)&10&0&1&001&0010&001;when orins= ctrl:=d_ir(7 downto 0)&10&1&1&001&0011&001;when xorins = ctrl:=d_ir(7 downto 0)&10&1&1&001&0100&001;when shlins = ctrl:=d_ir(7 downto 0)&10&1&1&000&0101&001;when shrins = ctrl:=d_ir(7 downto 0)&10&1&1&
35、000&0110&001;when sar = ctrl:=d_ir(7 downto 0)&10&1&1&000&0111&001;when mov = ctrl:=d_ir(7 downto 0)&10&1&1&011&0000&000;when loadh= ctrl:=11111111&10&1&1&101&1000&000; imm ctrl:=11111111&10&1&1&101&1001&000; 河北大學 2007 屆本科生學年論文設計16 imm ctrl:=d_ir(7 downto 0)&01&1&0&011&0000&000;when store = ctrl:=d_
36、ir(7 downto 0)&00&0&1&000&0000&000;when jr|jrz|jrnz|jrc|jrnc = ctrl:=donothing; -若是 jr*指令,計算offset,并向 exe 插入 bubble offset ctrl:=donothing; end case;sa = ctrl(21 downto 18);sb = ctrl(17 downto 14);wrmem = ctrl(13 downto 12);wregen = ctrl(11);memtoreg= ctrl(10);alusrc = ctrl(9 downto 7);aluopr = ctrl
37、(6 downto 3);setflag = ctrl(2 downto 0);end process;流水控制信號的處理部分代碼如下:process(reset,clk)beginif reset = 0 then e_wrmem = 10; - do nothinge_wregen = 0; elsif rising_edge(clk) thene_sa = sa;e_sb = sb;e_raout = ra;e_rbout = rb;e_imm = imm;e_alusrc = alusrc;e_aluopr = aluopr;e_setflag = setflag;e_wrmem =
38、wrmem;e_wregen = wregen;e_destreg = sa;e_memtoreg = memtoreg;end if;end process;3. 執(zhí)行模塊河北大學 2007 屆本科生學年論文設計17選擇運算器 a,b 口數(shù)據(jù)來源的部分的關鍵代碼如下:with forwarda selectaluain = e_raout when 00, e_aluout when 10, w_wbdata when 01, e_raout when others;with forwardb selectalubin opr := 0&aluain;ops := zero17;when s
39、elab=opr := 0&aluain;ops := 0&alubin;when sela1=opr := 0&aluain;ops := 0&(x0001); when sel0b=opr := zero17;ops := 0&alubin;when selaf=opr := 0&aluain;ops := 1&(xffff);when selad=opr := 0&aluain;ops := 0&e_imm;when others = opr := zero17;ops := zero17;end case;case e_aluopr is -選擇 alu 的運算when aluadd
40、= aluresult := opr + ops; tempv := (not opr(15)and(not ops(15)and aluresult(15) or (opr(15)and ops(15)and (not aluresult(15); when alusub = aluresult := opr - ops; tempv := ( ops(15)and(not opr(15)and (not aluresult(15) or (not ops(15)and opr(15)and aluresult(15); when aluand = aluresult := opr and
41、ops;when aluor = aluresult := opr or ops;when aluxor = aluresult := opr xor ops;when alushl = aluresult(15 downto 1) := opr(14 downto 0); aluresult(0) := 0;cx := opr(15);when alushr = aluresult(14 downto 0) := opr(15 downto 1); aluresult(15) := 0;cx := opr(0); when alusar = aluresult(14 downto 0) :=
42、 opr(15 downto 1); aluresult(15) := opr(15); cx := opr(0);when aluloadh = aluresult := ops(8 downto 0)&opr(7 downto 0); 河北大學 2007 屆本科生學年論文設計18when aluloadl = aluresult := 0&opr(15 downto 8)&ops(7 downto 0);when others = null;end case; dout tempc := aluresult(16);when alushl|alushr|alusar = tempc :=
43、cx;when aluand|aluor|aluxor = tempc := 0; tempv:= 0; -邏輯運算,狀態(tài)位 c,z 置零when others = null;end case;i_tempc = tempc;if aluresult = zero17 thentempz := 1;else tempz := 0;end if; i_tempz (c,z,v,s) c=tempc;z = tempz;v = tempv; s (c,z,v,s) c=0; z=0; v=0; s (c,z,v,s)= tempflag; end case;end process;修改狀態(tài)寄存器部
44、分的關鍵代碼如下:writeflag:process(reset,clk)beginif reset = 0 thentempflag = 0000;elsif rising_edge(clk) thentempflag = c&z&v&s; end if;m_flag = tempflag;end process; 傳遞給 mem 部分的控制信號處理關鍵代碼如下:process(reset,clk)begin if reset=0 then m_wrmem = 10;m_wregen = 0;河北大學 2007 屆本科生學年論文設計19elsif rising_edge(clk) thenm
45、_sa = e_sa;m_aluout = dout;m_rbdata = alubin;m_wregen = e_wregen; m_memtoreg = e_memtoreg;m_destreg = e_destreg;m_wrmem = e_wrmem; end if;end process;5.2 程序測試1test1 8 位8 位乘法運算; 8bit x 8bit multiplier; 測試指令:置立即數(shù),and, 條件跳轉, 左移, 右移;main: movi r0,25 ;被乘數(shù) movi r1,6 ;乘數(shù) movi r2,0 ;結果 movi r3,8 ;循環(huán)次數(shù)loop: movi r4,1 and r4,r1 jrz 1f ;r4=0 時跳轉 add r2,r0 ;否則加到部分積1: shl r0 shr r1 dec r3 ;r3 減 1 jrnz loop halt;result:r2=0x962.test2 內(nèi)存讀寫測試河北大學 2007 屆本科生學年論文設計2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于甘肅嘉峪關的導游詞5篇
- 教育名著的讀書心得體會范文10篇
- 湘教版數(shù)學九年級上冊3.6《位似》(第2課時)聽評課記錄
- 粵教版地理八年級上冊第三章第3節(jié)《水資源》聽課評課記錄2
- 人教版數(shù)學九年級下冊《閱讀與思考 山坡的高度》聽評課記錄3
- 蘇人版道德與法治七年級下冊18.2《一諾千金》聽課評課記錄
- 2025年度廣告宣傳合同價款計算與效果評估標準
- 2025年度旅游產(chǎn)品代理合作協(xié)議
- 白鷺聽評課記錄
- 2025年度儲能電站監(jiān)理合同補充條款
- 變更監(jiān)事章程修正案范例
- 北京小客車指標租賃協(xié)議五篇
- 《Visual Basic 6.0程序設計》課件
- 平臺革命:改變世界的商業(yè)模式
- 塑膠件銅螺母扭拉力標準
- 定密管理培訓課件
- 輸液室運用PDCA降低靜脈輸液患者外滲的發(fā)生率品管圈(QCC)活動成果
- 2023-2024學年四川省涼山州小學語文二年級期末高分考試題詳細參考答案解析
- 超市商品4級分類表
- 北師大版小學六年級下冊數(shù)學全冊教學設計
- 中國古代宗教課件
評論
0/150
提交評論