多級流水CPU設計 微控制器課程設計

2023-01-07 15:51:03 字數 3364 閱讀 8170

(指導教師用表)

指導教師簽字:

系主任簽字:

主管教學院長簽字:

摘要本學期計算機體系課程設計題目是多級流水cpu設計。以計算機硬體為主,兼顧計算機軟體和計算機應用技術。在教師指導下,靈活運用所學到的基礎知識和主要專業知識,自己設計、製作、除錯,完成16位五級流水cpu的實際。

本組設計並最終在fpga實驗平台上實現乙個cpu晶元,具有五級流水。採用流水處理技術解決了流水線技術中的結構相關、資料相關和控制相關。設計了指令系統、指令格式、定址方式、暫存器結構、資料表示方式、儲存器系統,運算器、控制器和流水線結構等。

用vhdl硬體語言進行邏輯設計,採用先進的工具軟體進行模擬和測試,測試通過之後**到fpga晶元中,並在測試平台上通過規定測試程式的測試。

關鍵字:流水線;fpga;五級流水

目錄1. 本實驗需要自己設計並最終用fpga實現乙個cpu晶元。利用已有的計算機組成原理知識,以及對計算機系統結構的初步學習,設計乙個包括指令系統、定址方式、暫存器組、儲存系統、流水線結構等的cpu。

設計的cpu必須具有復位功能,以便使用tec-ca實驗台上的「cpu復位」按鈕對cpu復位,使cpu處於除錯前的初始狀態。cpu復位脈衝按負脈衝設計。

2. 熟練掌握vhdl硬體描述語言,對cpu的各個功能模組進行**編寫,並學會將各個功能部分組織連線成乙個完整cpu體系結構。

3. 學會利用先進的硬體設計工具軟體quartus ii對程式進行**和除錯。並熟練掌握fpga-cpu在「tec-ca開放式cpu實驗教學系統」上的除錯方法。

4. 在完成實驗的過程中鍛鍊和提高實際動手能力、創新思維、團隊合作精神等方面的能力。

1. 總體描述

fpga-cpu設計平台能夠支援**到fpga中的cpu的單步除錯和連續執行。使用者用vhdl編寫的cpu**通過編譯之後,可以**到設計平台上的fpga晶元中。fpga-cpu的執行通過執行預先寫到外部儲存器中的程式來實現。

使用debugcontroller程式對外部儲存器進行讀寫操作,並能監控fpga-cpu的狀態和通過設定斷點除錯fpga-cpu正在執行的程式。這套實驗環境為實驗者提供了最大的自由度來寫出具有自己風格的cpu軟核,並在測試執行平台上除錯和執行。

2. 硬體環境

整個硬體平台主要有pc監控系統、外部程式儲存器、fpga-cpu及其**相關電路,以及控制電路組成。其中pc監控系統主要是由監控軟體debugcontroller及相關通訊介面等構成,提供一整套的執行和除錯功能。

3. 軟體環境

quartus-7.0

我們使用該軟體完成編碼工作,並在active-hdl功能模擬通過後,進行有效的時序模擬。最終燒片等都用該軟體。

除錯程式debugcontroller

使用該軟體對外部儲存器進行讀寫操作,並能監控fpga-cpu的狀態和通過設定斷點除錯fpga-cpu正在執行的程式。

流水線處理技術是在重疊、先行控制的基礎上發展起來的,包括指令控制功能和功能處理過程都可採用流水處理。

在先行控制方式中將一條指令的執行分為「分析」和「執行」兩個子過程。這兩個子過程分別使用指令分析器和運算器兩個獨立的部件來完成。所以可以利用多條指令執行時,在時間上相互錯開,輪流重疊地利用這兩個獨立部件,來加快程式的執行速度。

若實現「分析」與「執行」中的每乙個子過程都需要δt1=t/2時間,則4條指令流水執行只需5δt1,比起4條指令順序執行所需的8δt1時間少了近一半。

如果將指令的「分析」子過程再進一步劃分成「指令解碼」和「取運算元」兩個子過程,分別由「解碼」和「取數」兩個獨立的子部件執行,並使所有子部件的經過時間都改進成δt2=t/4,指令執行順序如圖2-1所示。

圖表 21指令執行順序圖

圖2-2是指令流水執行的時空圖。圖中橫座標為時間,縱座標為空間(即各個子過程),標有數字的方格說明占用該空間與時間的任務號,在本例中表示機器處理的第1、第2、第3、第4、第5條指令,最多可以有4條指令在不同的部件中同時進行處理。這樣計算機每隔δt2就能輸出一條指令的執行結果。

圖表 22指令流水執行時空圖

按此思路,流水線的定義可以具體描述為:將乙個複雜的處理過程分成m個複雜程度相當、處理時間大致相等的子過程,每個子過程由乙個獨立的功能部件來完成,處理物件在各子過程連成的線路上連續流動。在同一時間,m個獨立部件同時進行不同的操作,完成對不同子過程的處理,這種工作方式稱為流水線。

在計算機流水線的實際應用過程中,為平滑緩衝各子部件之間的速度差異,在子部件之間往往都要設定高速介面緩衝器或一定容量的高數緩衝器來儲存中間結果。也就是通常所說的n級流水處理中的級間暫存器。

指令流水的基本思路是把每條指令劃分為幾個執行步驟,這些步驟在執行過程中使用不同的資源從而在時間上能重疊起來,提高了整體工作負載的吞吐率。

我們將每條指令劃分為「取指」、「解碼」、「執行」、「訪存」、「寫回」這五個執行步驟。如圖3-1所示。

圖表 31多級流水cpu設計圖

指令系統設計的好壞影響整個系統各個方面的效能。我們採用了實驗指導書中的指令系統。如表3-2所示:

圖表 32cpu的指令系

本次課程設計採用的五級流水時序如圖3-3所示,資料通路如圖3-4所示。

圖表 33 五級流水時序圖

圖表 34 五級流水資料通路

為保證指令的正確執行。處理結構相關需要做兩項工作:衝突檢測和取指延後。

1. 衝突檢測

只有執行訪存指令(load/store)時,才會出現衝突。因此,我們在解碼時產生乙個標誌是否訪存的訊號wmem。含義如圖3-5:

圖表 35 wmem控制訊號

通過檢查「訪存階段」的m_wrmem就可確定是否衝突。

2. 取指延後

在每次取指時,若有衝突,則往ir中寫入空指令(nop),並保持pc不變,使取指延後乙個節拍。

在解決了結構相關、控制相關、資料相關後,五級流水時序圖最終設計如圖3-6:

圖表 36 五級流水時序圖

總體邏輯設計的rtl圖參考課本中的設計,如圖4-1所示。

圖表 41

各個功能部件的功能及其使用的控制訊號:

1. alu:組合邏輯部件,對兩個16位的輸入及進製輸入cin可進行由3位控制訊號控制。

2. 資料選擇器bus_mux:組合邏輯器件,其輸入包括:

源暫存器資料,目標暫存器資料,帶符號位擴充套件的偏移位址,pc,以及從記憶體讀取的立即數、跳轉位址等資料。在3位控制訊號的控制下它進行alu 模組a、b端輸入的選擇。

3. 程式計數器pc:時序邏輯器件,16位暫存器,在控制訊號pc_en的控制下可接收alu的運算結果(高電平接收,否則保持不變)。

輸出送往位址暫存器(讀取指令內容)以及資料選擇器(進行自增運算)。

4. 位址暫存器ar和指令暫存器ir:都是16位的暫存器,位址暫存器用於存放要讀寫的記憶體位址單元的位址,輸出送往位址匯流排,輸入可能為pc內容,也可能為alu的輸出(對讀寫記憶體指令);指令暫存器存放當前執行指令的內容,它的輸入來自從記憶體讀取的指令和資料,輸出送往控制邏輯。

二者共用兩位控制訊號rec。

微控制器課設流水廣告燈設計

sda bit p1.7 sclbit p1.6 rstbit p1.0 int key bit p3.2 mtd equ 40h mrd equ 48h disbuf equ 38h 定義zlg7290器件位址及子位址 zlg7290 equ 70h ack bit 10h sladata 50h...

微控制器課設

目錄一 引言3 二 器件介紹4 1 51微控制器89c52簡介4 2 a d轉換器晶元adc0809簡介7 3 74hc138簡介9 三 軟體的設計11 1 軟體所要實現的功能11 2 程式流程圖11 四 硬體電路設計16 五 心得體會17 六 參考文獻19 附錄一 硬體原理圖20 附錄二 課設程式...

微控制器課程設計

課程設計報告 題目微控制器控制步進電機 課程名稱微控制器原理及接 術 院部名稱 專業自動化 班級 m10自動化 學生姓名 學號課程設計地點 課程設計學時 指導教師高峰 金陵科技學院教務處制 注 根據課程設計大綱第四項具體要求撰寫課程設計報告 目錄1設計任務和要求 3 2設計思路 4 3系統硬體設計 ...