基于FPGA的微處理器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第1頁(yè)
基于FPGA的微處理器設(shè)計(jì)畢業(yè)設(shè)計(jì)_第2頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA的微處理器設(shè)計(jì)畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)(論文)題目基于FPGA的微處理器設(shè)計(jì)摘要ABSTRACTii本文使用結(jié)構(gòu)化編程方法,將微處理器內(nèi)核按照功能劃分為不同的模塊,采用 VHD 語(yǔ)言設(shè)計(jì)每一個(gè)模塊的內(nèi)部功能和外圍接 口,設(shè)計(jì)實(shí)現(xiàn)了一種基于 FPGA 芯片的微處理器系統(tǒng)。矚慫潤(rùn)厲釤瘞睞櫪廡賴。該微處理器主要由控制器、運(yùn)算器和寄存器組成,具有指令控制、操作控制、時(shí)間控制和數(shù)據(jù)加工等基本功能,可實(shí)現(xiàn)四位 操作數(shù)的各種運(yùn)算,其指令長(zhǎng)度為16 位定長(zhǎng),采用了直接尋址方式。最后采用 QUARTUSI 對(duì)設(shè)計(jì)進(jìn)行了仿真測(cè)試,結(jié)果表明設(shè)計(jì) 實(shí)現(xiàn)了微處理器的主要功能 。聞創(chuàng)溝燴鐺險(xiǎn)愛(ài)氌譴凈。關(guān)鍵字:FP

2、GA 微處理器,VHDLABSTRACTIIIABSTRACTA microprocessor on FPGA is realized by using structuredprogram ming. This microprocessor core is divided into several different fun cti on modules which are desig ned using VHDL.殘騖 樓諍錈瀨濟(jì)溆塹籟。The microprocessor con sists of con troller, arithmetic unit andregisters. It

3、realizes the instruction control, operation control, timesequenee control and data processing functions. The directaddressing mode is adopted. The various operations for 4bit opera ndcan be achieved. Its in structi on len gth is 16 bit.釅錒極額閉鎮(zhèn)檜豬訣錐。The design is simulated by using QUARTUSII, and the r

4、esultsshow that the main functions of a microprocessor are achieved.彈貿(mào)攝爾霽斃攬磚鹵廡。Key Words:FPGA,CPU,VHDL目錄目 錄摘 要.II謀蕎摶篋飆鐸懟類蔣薔。ABSTRACT. III廈礴懇蹣駢時(shí)盡繼價(jià)騷。第 1 章 緒論.1煢楨廣鰳鯡選塊網(wǎng)羈淚。1.1 背景.1鵝婭盡損鵪慘歷蘢鴛賴。1.2 微處理器的概況.1籟叢媽羥為贍債蟶練淨(jìng)。1.3 課題研究方法及技術(shù)背景 .2預(yù)頌圣鉉儐歲齦訝驊糴。1.3.1 研究方法. 2滲釤嗆儼勻諤鱉調(diào)硯錦。1.3.2 技術(shù)背景 . 2鐃誅臥瀉噦圣騁貺頂廡。1.4 課題工作內(nèi)容

5、 .3擁締鳳襪備訊顎輪爛薔。第二章微處理器體系結(jié)構(gòu) .4贓熱俁閫歲匱閶鄴鎵騷。2.1 CPU 的功能和構(gòu)成 .4壇搏鄉(xiāng)囂懺蔞鍥鈴氈淚。2.2 指令系統(tǒng)分析 .5蠟變黲癟報(bào)倀鉉錨鈰贅。2.2.1 RISC 與總線結(jié)構(gòu).5買鯛鴯譖曇膚遙閆擷凄。2.2.2 指令系統(tǒng) . 6綾鏑鯛駕櫬鶘蹤韋轔糴。2.3 指令時(shí)序分析 .8驅(qū)躓髏彥浹綏譎飴憂錦。2.3.1 RISC 與流水線 .8貓蠆驢繪燈鮒誅髏貺廡。2.3.2 程序計(jì)數(shù)器與流水線 .9鍬籟饗逕瑣筆襖鷗婭薔。2.4 CPU 整體結(jié)構(gòu)即設(shè)計(jì)思想 .9構(gòu)氽頑黌碩飩薺齦話騖。2.4.1 CPU 的外部引腳規(guī)戈 U .9輒嶧陽(yáng)檉籪癤網(wǎng)儂號(hào)澩。2.4.2 CPU

6、 的整體框圖 . 10堯側(cè)閆繭絳闕絢勵(lì)蜆贅。2.4.3 CPU 結(jié)構(gòu)的層次戈 U 分 . 11識(shí)饒鎂錕縊灩筧嚌儼淒。第三章 CPU 數(shù)據(jù)通路設(shè)計(jì).12凍鈹鋨勞臘錯(cuò)癇婦脛糴。3.1 程序計(jì)數(shù)器模塊 PC.12恥諤銪滅縈歡煬鞏鶩錦。3.2 程序存儲(chǔ)器 PC_RAM.13鯊腎鑰詘漣鉀溈懼統(tǒng)庫(kù)。3.3 指令寄存器模塊.14碩癘鄴頏謅攆檸攜驤蘞。3.4 時(shí)鐘發(fā)生器模塊.15閿擻輳嬪諫遷擇植秘騖。3.5 寄存器堆 TRAM.15氬嚕躑竄貿(mào)懇彈濾頷澩。3.6 ALU 模塊 .16釷鵒資贏車贖孫滅獅贅。第四章 CPU 控制單元的設(shè)計(jì).18慫闡譜鯪逕導(dǎo)嘯畫長(zhǎng)涼。4.1 控制器 Control 模塊.19諺辭調(diào)擔(dān)

7、鈧諂動(dòng)禪瀉類。4.2 有限狀態(tài)機(jī) FSM 模塊. 19嘰覲詿縲鐋囁偽純鉿錈。4.2.1 有限狀態(tài)機(jī) . 19熒紿譏鉦鏌觶鷹緇機(jī)庫(kù)。4.2.2 利用的 VHDL 語(yǔ)言進(jìn)行狀態(tài)機(jī)描述 .20鶼漬螻偉閱劍鯫腎邏蘞。第五章 RISC CPU 勺仿真驗(yàn)證 .21紂憂蔣氳頑薟驅(qū)藥憫騖。5.1 各模塊的組合 .21穎芻莖峽餑億頓裊賠瀧。5.2 綜合 RTL 電路圖 . 22濫驂膽閉驟羥闈詔寢賻。5.3 RISCCPU 勺功能仿真驗(yàn)證 . 25銚銻縵嚌鰻鴻鋟謎諏涼。5.3.1 算術(shù)運(yùn)算類指令驗(yàn)證 .25擠貼綬電麥結(jié)鈺贖嘵類。5.3.2 邏輯運(yùn)算類指令驗(yàn)證 .26賠荊紳諮侖驟遼輩襪錈。5.3.3 移位類指令驗(yàn)證

8、. 26塤礙籟饈決穩(wěn)賽釙冊(cè)庫(kù)。5.3.4 LD 數(shù)據(jù)輸出指令仿真 .27裊樣祕(mì)廬廂顫諺鍘羋藺。目錄5.3.5 ST 運(yùn)算數(shù)據(jù)存儲(chǔ)仿真 .27倉(cāng)嫗盤紲囑瓏詁鍬齊驚。目錄5.4 總結(jié).28第六章總結(jié)和展望. 29參考文獻(xiàn).30綻萬(wàn)璉轆娛閬蟶鬮綰瀧。驍顧燁鶚巰瀆蕪領(lǐng)鱺賻?,嶀暈R曖惲錕縞馭篩涼。鎦詩(shī)涇艷損樓紲鯗餳類。櫛緶歐鋤棗鈕種鵑瑤錟。致謝.錯(cuò)誤!未定義書簽。附錄.31山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)1第 1 章緒論1.1 背景隨著數(shù)字通信和工業(yè)控制領(lǐng)域的高速發(fā)展, 超大規(guī)模集成電路的集成度和工 藝水平不斷提高,要求專用集成電路(ASIC)的功能越來(lái)越強(qiáng),功耗越來(lái)越低,生 產(chǎn)周期越來(lái)越短,這些都對(duì)芯

9、片設(shè)計(jì)提出了巨大的挑戰(zhàn), 傳統(tǒng)的芯片設(shè)計(jì)方法已 經(jīng)不能適應(yīng)復(fù)雜的應(yīng)用需求了,將整個(gè)應(yīng)用電子系統(tǒng)集成在一個(gè)芯片中(SOC) ,已成為現(xiàn)代電子系統(tǒng)設(shè)計(jì)的趨勢(shì)。簡(jiǎn)單來(lái)說(shuō),SOC 是一種將多個(gè)獨(dú)立的 VLSI 設(shè)計(jì)拼合在一起,來(lái)形成某一應(yīng)用所需的全部功能的集成電路,以其高集成度、低功耗等優(yōu)點(diǎn)越來(lái)越受歡迎。轡燁棟剛殮攬瑤麗鬮應(yīng)。中國(guó)的電子信息產(chǎn)業(yè)現(xiàn)在增長(zhǎng)迅速, 主要集中在移動(dòng)通信設(shè)備、數(shù)據(jù)通信設(shè) 備、計(jì)算機(jī)及消費(fèi)產(chǎn)品領(lǐng)域??紤]到我國(guó)電子信息市場(chǎng)的特殊性, 即巨大的移動(dòng) 通信和數(shù)字家電市場(chǎng)的核心芯片主要依賴進(jìn)口的狀況。巨大的市場(chǎng)的需求決定了 開(kāi)發(fā) SOC的必要性,現(xiàn)在數(shù)字家電的片上系統(tǒng)研究己經(jīng)成為研究的熱

10、點(diǎn)之一。研究 SOC 的設(shè)計(jì)方法和驗(yàn)證方法具有很大的現(xiàn)實(shí)意義2-3。其中 CPU 是 SOC 的重要組成部分,可以完成簡(jiǎn)單的數(shù)據(jù)處理,內(nèi)存的調(diào)度,中斷處理等操作。隨著百萬(wàn)門 級(jí)的FPGA 芯片、功能復(fù)雜的 IP 核、可重構(gòu)的嵌入式處理器核以及各種強(qiáng)大 EDA 的開(kāi)發(fā)工具的迅速發(fā)展,使得設(shè)計(jì)者在 EDA 工具的幫助下完成整個(gè)系統(tǒng)從行為算 法級(jí)到物理結(jié)構(gòu)級(jí)的全部設(shè)計(jì),并最終將一個(gè)電子系統(tǒng)集成到一片F(xiàn)PGA 中,即SOPC。可見(jiàn),SOPC 是基于 FPGA 解決方案的 SOC,是 SOC 發(fā)展的新階段。峴揚(yáng)爛 滾澗輻灄興渙藺。1.2 微處理器的概況微處理器是計(jì)算機(jī)系統(tǒng)中非常之重要的核心組成部分,它用

11、來(lái)控制計(jì)算機(jī)的 各種操作過(guò)程,通常也被稱為 CPU 即中央處理器。隨著科學(xué)技術(shù)的迅速發(fā)展, 微處理器的發(fā)展也是非常迅速,它的處理能力已經(jīng)由過(guò)去的4 位發(fā)展到現(xiàn)在的 64位,運(yùn)算能力和處理能力大大提高,應(yīng)用領(lǐng)域也從計(jì)算機(jī)系統(tǒng)擴(kuò)展到各個(gè)相關(guān)領(lǐng) 域,例如通信、航天和工業(yè)控制等。通常,微處理器按照處理能力可以劃分為4位、8 位、16 位、32 位和 64 位微處理器,它的處理能力是逐步提高的。但是,在 微控制器的發(fā)展過(guò)程中,8 位機(jī)始終是嵌入式低端應(yīng)用的主要機(jī)型4。詩(shī)叁撻訥燼憂毀 厲鋨驁?,F(xiàn)今市場(chǎng)上流行的典型的 8 位微控制器,可以在各種 FPGA 上實(shí)現(xiàn),設(shè)計(jì)靈活 方便而且易于進(jìn)行功能擴(kuò)展。因此研究

12、 8 位 CPU 內(nèi)核具有廣泛的現(xiàn)實(shí)意義,由于其 具有較高的處理性能和較少的資源占用,故具有更加廣泛的應(yīng)用前景。則鯤愜韋瘓賈暉園棟瀧。1.3 課題研究方法及技術(shù)背景1.3.1 研究方法山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)2本課題使用硬件描述語(yǔ)言 VHD 采用自頂向下的設(shè)計(jì)方法設(shè)計(jì)一個(gè)滿足要求 的 8位 CPU 內(nèi)核及外部接口,使用 EDA 軟件 QUARTUSII 軟件完成編碼、仿真驗(yàn)證。 自頂向下的設(shè)計(jì)方法就是設(shè)計(jì)者首先從整體上規(guī)劃整個(gè)系統(tǒng)的功能和性能,然后利用功能分割手段對(duì)系統(tǒng)進(jìn)行劃分,分解為規(guī)模較小、功能較簡(jiǎn)單的局部模塊, 并確立它們之間的相互關(guān)系,將設(shè)計(jì)由上至下進(jìn)行層次化和模塊化,即分層次

13、、 分模塊地對(duì)電子系統(tǒng)進(jìn)行設(shè)計(jì)和仿真。 不難看出,采用自頂向下的設(shè)計(jì)方法實(shí)際 上就是基于芯片的系統(tǒng)設(shè)計(jì)方法,這種方法有助于在設(shè)計(jì)早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)中的 錯(cuò)誤,提高設(shè)計(jì)成功率。脹鏝彈奧秘孫戶孿釔賻。1.3.2 技術(shù)背景1.硬件描述語(yǔ)言 VHDL如今,大多數(shù)的 EDA 工具都采用 VHDL 作為主要的硬件描述語(yǔ)言,這主要 源于VHD 強(qiáng)大的自身功能和特點(diǎn),下面介紹一下 VHDL 的優(yōu)點(diǎn)。鰓躋峽禱紉誦幫廢掃減。(1) 具有強(qiáng)大的描述能力VHDL 既可以描述系統(tǒng)級(jí)電路,也可以描述門電路;既可以采用行為描述、 寄存器描述或者結(jié)構(gòu)描述,可以方便地建立電子系統(tǒng)模型。稟虛嬪賑維嚌妝擴(kuò)踴糶。(2) 具有共享與復(fù)用

14、能力VHDL 采用基于庫(kù)的設(shè)計(jì)方法,從而大大減少了工作量,縮短了開(kāi)發(fā)周期。(3) 具有獨(dú)立于器件和工藝設(shè)計(jì)的能力VHDL 獨(dú)立于器件的特點(diǎn)可以使設(shè)計(jì)人員集中精力來(lái)進(jìn)行電子系統(tǒng)的設(shè)計(jì) 和性能優(yōu)化,而不需要考慮其他問(wèn)題。(4) 具有良好的可移植能力。VHDL 的可移植性源于它是一種標(biāo)準(zhǔn)化得硬件語(yǔ)言,因此同一個(gè)設(shè)計(jì)描述 可以被不同的工具所支持。(5) 具有向 ASIC 移植的能力。2.CISC 指令集和 RISC 指令集CISC 是一種為了便于編程和提高內(nèi)存訪問(wèn)效率的芯片設(shè)計(jì)體系。早期的計(jì) 算機(jī)使用匯編語(yǔ)言編程,由于內(nèi)存速度慢且價(jià)格昂貴,使得 CISC 體系得到了用 武之地。它的設(shè)計(jì)目的是要用最少的

15、機(jī)器語(yǔ)言指令來(lái)完成所需的計(jì)算任務(wù)。 后來(lái) 功能需求越來(lái)越豐富,因此越來(lái)越多的復(fù)雜指令被加入到指令系統(tǒng)中, 但是還必 須保持著前向的兼容性。內(nèi)容的不斷擴(kuò)充和兼容性的考慮,導(dǎo)致龐大的 CISC 指 令系統(tǒng)形成了。在20 世紀(jì) 90 年代中期之前,大多數(shù)的微處理器都采用 CISC 體 系包括 In tel 的 80 x86和 Motorola 的 6sK 系列等。陽(yáng)簍埡鮭罷規(guī)嗚舊巋錟。CISC 體系結(jié)構(gòu)幾乎沒(méi)有考慮流水線的因素,使得指令執(zhí)行起來(lái)耗時(shí)而且尋 址復(fù)雜。 1975 年, IBM 的設(shè)計(jì)師提出了一種新的體系結(jié)構(gòu)和指令集設(shè)計(jì)方案,這就是 RISC體系結(jié)構(gòu)。典型的 RISC 處理器具有以下特點(diǎn):

16、溈氣嘮戇萇鑿鑿櫧諤應(yīng)。(1) 指令功能簡(jiǎn)單,各指令的復(fù)雜度分布均衡,有利于形成流水線;(2)控制電路簡(jiǎn)單,多采用硬連線方式來(lái)實(shí)現(xiàn)。因?yàn)椴恍枰~外的存取微程序存儲(chǔ)器來(lái)完成指令的執(zhí)行,因此可以直接使用硬連線方式來(lái)設(shè)計(jì);鋇嵐縣緱虜榮產(chǎn)濤團(tuán)藺。(3)指令定長(zhǎng),指令格式簡(jiǎn)單,指令編碼固定。這樣字段固定,使操作碼得譯碼與操作數(shù)的存取可以同時(shí)執(zhí)行,使得控制單元的設(shè)計(jì)簡(jiǎn)單化;懨俠劑鈍觸樂(lè)鷴燼觶騮。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)3(4)ALU 指令和訪存指令分開(kāi),并且訪存種類很少。(5)以寄存器對(duì)寄存器的運(yùn)算為主。寄存器對(duì)寄存器的運(yùn)算有助于減少對(duì)存 儲(chǔ)器的訪問(wèn)次數(shù),提高數(shù)據(jù)的存取速度7-8。謾飽兗爭(zhēng)詣繚鮐癩別

17、濾。1.4 課題工作內(nèi)容本文一共分為七章。各章節(jié)內(nèi)容安排如下:第一章緒論。第二章微處理器的體系結(jié)構(gòu)。研究了 CPU 的整體設(shè)計(jì),指令系統(tǒng)和時(shí)序分 析以及流水線的實(shí)現(xiàn)。第三章 CPU 數(shù)據(jù)通路設(shè)計(jì)。詳細(xì)介紹了通路模塊中的程序計(jì)數(shù)器、指令寄 存器、程序存儲(chǔ)器等的具體設(shè)計(jì)和功能實(shí)現(xiàn)。第四章 CPU 控制單元的設(shè)計(jì)。詳細(xì)介紹了控制單元中的控制器和狀態(tài)機(jī)的 設(shè)計(jì)和功能實(shí)現(xiàn)。第五章 CPU 的仿真驗(yàn)證。驗(yàn)證 CPU 的部分功能。第六章總結(jié)和展望。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)4第二章微處理器體系結(jié)構(gòu)2.1CPU的功能和構(gòu)成CPU 是計(jì)算機(jī)的核心組成部分。計(jì)算機(jī)進(jìn)行信息處理可分為以下兩個(gè)步驟9(1) 將數(shù)

18、據(jù)和程序(即指令序列)輸入到計(jì)算機(jī)的存儲(chǔ)器中;(2) 從第一條指令的地址開(kāi)始執(zhí)行該程序,得到所需的結(jié)果,結(jié)束運(yùn)行。CPU 的作用是協(xié)調(diào)和控制計(jì)算機(jī)的各個(gè)部件,并執(zhí)行程序的指令序列,使 其有條不紊的進(jìn)行,因此必須具備以下基本功能:?jiǎn)J鉉們歟謙鴣餃競(jìng)蕩賺。取指令:當(dāng)程序已在存儲(chǔ)器中時(shí),首先根據(jù)程序入口地址取出一條程序, 為此要發(fā)出指令的地址及相關(guān)的控制信號(hào);分析指令:即指令譯碼,既對(duì)當(dāng)前所取的指令進(jìn)行分析,指出它要求什么 操作,并產(chǎn)生相應(yīng)的操作所需要的控制命令;執(zhí)行指令:根據(jù)分析指令時(shí)產(chǎn)生的“操作命令”形成相應(yīng)的操作控制序列, 通過(guò)運(yùn)算器、存儲(chǔ)器及輸入輸出的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中包括對(duì)運(yùn)算

19、結(jié)果的處理及下條指令地址的形成?,撝C齷蘄賞組靄縐嚴(yán)減。將 CPU 的功能進(jìn)一步細(xì)化,可以概括如下。(1) 能對(duì)指令進(jìn)行譯碼并執(zhí)行規(guī)定動(dòng)作;(2) 可以進(jìn)行算術(shù)和邏輯運(yùn)算;(3) 能與存儲(chǔ)器和外設(shè)交換數(shù)據(jù);(4) 提供整個(gè)系統(tǒng)所需的控制。盡管各種 CPU 的性能指標(biāo)和結(jié)構(gòu)細(xì)節(jié)各不相同, 但它們所能完成的基本功 能相同,簡(jiǎn)化 CPU 內(nèi)部結(jié)構(gòu)如圖 2-1 所示。CPU內(nèi)M總線算術(shù)和邏輯卑兀算術(shù)和邏輯卑兀山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)5圖 2-1 簡(jiǎn)化 CPU 內(nèi)部結(jié)構(gòu)2.2 指令系統(tǒng)分析指令系統(tǒng)結(jié)構(gòu)是微處理器體系結(jié)構(gòu)的一個(gè)重要部分,是微處理器設(shè)計(jì)的基 礎(chǔ)。指令格式、尋址方式和指令系統(tǒng)是指令系統(tǒng)結(jié)

20、構(gòu)的重要方面。目前主流CPU指令可以分為 RISC 和 CISC,由上節(jié)介紹可知,RISC 微處理器指令系統(tǒng)的指令 種類少而經(jīng),尋址方式簡(jiǎn)單,指令格式固定,所以本次設(shè)計(jì)采用RISC 指令系統(tǒng)納疇鰻吶鄖禎銣膩鰲錟。2.2.1 RISC 與總線結(jié)構(gòu)早期的計(jì)算機(jī)一般都采用馮.諾依曼(Von Neuma nn)結(jié)構(gòu),CISC 架構(gòu)的微 處理器常采用這種結(jié)構(gòu)。它是在同一個(gè)存儲(chǔ)空間取指令和數(shù)據(jù),采用單地址總線 結(jié)構(gòu),即程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共用一條地址總線, 限制了工作帶寬,使得控 制電路復(fù)雜,功耗較大10-11。結(jié)構(gòu)見(jiàn)圖 2-2 所示:風(fēng)攆鮪貓鐵頻鈣薊糾廟。這種結(jié)構(gòu)有兩個(gè)明顯的缺點(diǎn):(1) CPU 中控

21、制器和運(yùn)算器的速度必須與存儲(chǔ)器的速度相匹配;(2) 指令和數(shù)據(jù)的流動(dòng)都通過(guò)同一條總線,使指令和數(shù)據(jù)的獨(dú)立性消弱;目前,RISC 架構(gòu)的微處理器都采用哈佛結(jié)構(gòu),這種結(jié)構(gòu)具有分離地址總線的兩個(gè)存儲(chǔ)器,其中一個(gè)放程序,另一個(gè)放數(shù)據(jù),其指令和數(shù)據(jù)空間完全分開(kāi), 可以同時(shí)訪問(wèn),且一次讀出,簡(jiǎn)化控制電路,提高數(shù)據(jù)的吞吐率12。結(jié)構(gòu)如圖 2-3 所示。滅曖駭諗鋅獵輛覯餿藹。CPU指令存儲(chǔ)器指令存儲(chǔ)器 * * 控制器控制器圖 2-2 馮.諾依曼結(jié)構(gòu)圖山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)6運(yùn)算器運(yùn)算器 * *- 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)7圖 2-3 哈佛結(jié)構(gòu)圖這種結(jié)構(gòu)的優(yōu)點(diǎn)是:(1)允許

22、數(shù)據(jù)從程序存儲(chǔ)器傳遞到 SRAM,該功能也允許從程序存儲(chǔ)器中讀取數(shù)據(jù)表。這對(duì)現(xiàn)代微控制器應(yīng)用十分重要,因?yàn)闉榱耸沟綦姾髷?shù)據(jù)表不丟失,就要將它放在程序存儲(chǔ)器中,RISC 架構(gòu)很好地解決了這個(gè)問(wèn)題。鐒鸝餉飾鐔閌貲諢癱騮。(2)讀取指令和存儲(chǔ)器數(shù)據(jù)交換可以在多步流水線中同時(shí)進(jìn)行,這在馮諾依曼單地址總線結(jié)構(gòu)中很難實(shí)現(xiàn)。攙閿頻嶸陣澇諗譴隴瀘?;谝陨蟽煞N體系結(jié)構(gòu)特點(diǎn)的比較,本文設(shè)計(jì)的微處理器器采用了哈佛結(jié)構(gòu) 的體系結(jié)構(gòu)。首先,哈佛結(jié)構(gòu)的指令總線和數(shù)據(jù)總線分開(kāi),可以使用不同位寬的 指令和數(shù)據(jù),還有一個(gè)最大好處就是可以預(yù)取指令,這樣對(duì)流水線是很有用的。 其次,該微處理器實(shí)現(xiàn)了兩級(jí)指令流水線, 采用哈佛結(jié)構(gòu)可

23、使流水實(shí)現(xiàn)的難度大 為降低,在采用流水線后,能夠有效地提高指令的執(zhí)行速度。再次,該微處理器 采用了硬布線邏輯代替微程序控制的方法,提高了指令的執(zhí)行速度和效率。趕輾雛紈顆鋝討躍滿賺。2.2.2 指令系統(tǒng)本文設(shè)計(jì)的微控制器采用兩級(jí)流水線、指令長(zhǎng)固定、指令密度適中、控制單 元簡(jiǎn)單的類似 RISC 指令集,本文自定義指令集,該指令集僅有 20 條指令,尋址 方式簡(jiǎn)單。每條指令的字長(zhǎng)都是 16 位,包含足夠的信息:指令操作碼,源操作數(shù) 地址,目的操作數(shù)地址,立即數(shù)13-14。夾覡閭輇駁檔驀遷錟減。1、指令集表 1 是本文所涉及的 CPU 所有指令的一個(gè)集合指令名稱指令操作影響標(biāo)志位周期算術(shù)與邏輯類指令A(yù)

24、DD R1,R2Add Two RegisterC1SUB R1,R2Sub Two RegisterZ1AND R1,R2And Two RegisterZ1OR R1,R2Or Two RegisterZ1位操作指令LSL R1Logical Shift LeftNone1LSR R1Logical Shift RightNone1數(shù)據(jù)傳送類指令MOV R1,#11Move Between RegisterNone1LD R1Load Immediate from RegisterNone1SD R1Store Result to RegisterNone1山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)

25、8停機(jī)指令SLEEPSleep(Wait for )NoneAny2、 尋址方式本文指令系統(tǒng)的尋址方式為下面兩種直接尋址方式:(1)單一寄存器尋址。操作數(shù)在目的寄存器;(2)雙寄存器尋址。操作數(shù)分別在目的寄存器和源操作寄存器中。3、 指令格式定義正如以前所提到的,RISC 總是有固定長(zhǎng)度以便于譯碼。對(duì)設(shè)計(jì)的微處 理,每個(gè)指令都是固定的 16 位長(zhǎng)度,其中操作碼占用 16 位指令字的高 4 位。所有的指令碼都很容易譯碼。對(duì)兩個(gè)寄存器的指令,d 選擇目的寄存器, r 選擇源寄存器,4 位可以尋址16 個(gè)寄存器,這種指令格式包括 ADD,SU B,AND,OR。視絀鏝鴯鱭鐘腦鈞欖糲。1514 131

26、211109876543210rrrrdddd對(duì)于僅需要一個(gè)寄存器的指令,d 用來(lái)尋址目標(biāo)寄存器。這種指令格式 包括 LD,LSL,LSR 指令。1514 131211109876543210dddd對(duì)于立即數(shù)指令,指令中間 8 位是 8 位常數(shù),其中 H 代表常數(shù)的高四位, L 代表常數(shù)的低四位,d 用來(lái)尋址目的寄存器。這種指令格式包括 MOV, SD。偽澀錕攢鴛擋緬鐒鈞錠。1514 131211109876543210LLLLHHHHdddd4、指令編碼確定了指令的格式,就可以對(duì)指令進(jìn)行編碼,這樣指令就有唯一的身 份識(shí)別。指令編碼結(jié)果如表 2 所示。表 2 指令編碼指令類型指令機(jī)器碼ADD

27、00010000r r r rd d d dSUB00100000r r r rd d d dAND00110000r r r rd d d dOR01000000r r r rd d d dLSL010100000000d d d dLSR011000000000d d d dMOV0111LLLLHHHHd d d dST100000000000d d d dLD100100000000d d d dSLEEP1011000000000000山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)92.3 指令時(shí)序分析2.3.1 RISC 與流水線指令的執(zhí)行分成兩個(gè)階段:取指階段和執(zhí)行階段。在取指階段,指令機(jī)器碼

28、 被取到指令寄存器,控制單元通過(guò)譯碼知道這是個(gè)什么樣的指令,需要執(zhí)行什緦 徑銚膾齲轎級(jí)鏜撟廟。么樣的操作,需要什么操作數(shù);在執(zhí)行階段當(dāng)前指令以及取指完畢, 上一條指令 被執(zhí)行。這樣按順序第 1 條指令執(zhí)行完再取第 2 條指令,第 2 條執(zhí)行完在取第 3 條指令的順序執(zhí)行方式執(zhí)行一條指令最少需要兩個(gè)時(shí)鐘周期,如果執(zhí)行10 條指令那么就得需要 10 個(gè)時(shí)鐘周期,顯然這樣指令的執(zhí)行效率不高。為了解決這個(gè) 問(wèn)題,本次設(shè)計(jì)中引入了流水線(pipeline)操作。8 位 CPU 采用兩級(jí)流水線技術(shù), 指令的流水線可以用圖 2-4 來(lái)簡(jiǎn)單的示意:騅憑鈳銘僥張礫陣軫藹。- -周期周期1”周期蕓,*周期3.k周

29、期丄JX取指取指執(zhí)行執(zhí)行取指取指執(zhí)行執(zhí)行取指取指執(zhí)行執(zhí)行圖 2-4 流水線指令執(zhí)行由圖可以看出,盡管每條指令的完成需要兩個(gè)周期的時(shí)間,但是在流水線結(jié) 構(gòu)中,當(dāng)前指令的取值周期和上一條指令的執(zhí)行周期在時(shí)間上是重疊的, 對(duì)于這 種并行操作,從平均角度來(lái)看,相當(dāng)于一個(gè)周期內(nèi)完成一條指令,因此可以大大 提高指令的運(yùn)行速度15。癘騏鏨農(nóng)剎貯獄顥幗騮。RISC 架構(gòu)的處理器,每條指令有固定的長(zhǎng)度,指令格式只有簡(jiǎn)單的幾種,指令功能不交叉,尋址方式也簡(jiǎn)單,所以更加有利于實(shí)現(xiàn)流水結(jié)構(gòu)。鏃鋝過(guò)潤(rùn)啟婭澗駱讕濾。為了降低執(zhí)行每條指令所需時(shí)鐘數(shù), 本文也采用兩級(jí)流水,其功能分別定義 為:第一級(jí),取指;第二級(jí),時(shí)鐘前半周

30、期控制器譯碼、發(fā)出控制信號(hào),時(shí)鐘后 半周期進(jìn)行對(duì)寄存器堆 TRA 進(jìn)行讀操作、ALU 計(jì)算。這樣,很顯然也能降低執(zhí)行 指令所需的時(shí)鐘數(shù),取指、執(zhí)行只用了一個(gè)時(shí)鐘。在時(shí)鐘上升沿PC 產(chǎn)生進(jìn)入PCRAM 的地址,由于 PCRAM 有反應(yīng)時(shí)間,經(jīng)過(guò)一段很短的時(shí)間讀出指令,在 下一個(gè)時(shí)鐘上升沿到來(lái)時(shí),指令寄存器鎖存指令,然后開(kāi)始對(duì)指令進(jìn)行譯碼,并 產(chǎn)生操作數(shù)、目的存儲(chǔ)器/寄存器地址、寫信號(hào)及各種控制信號(hào)。榿貳軻謄壟該檻鯔塏賽。2.3.2 程序計(jì)數(shù)器與流水線程序計(jì)數(shù)器(PC)是程序中尋址取得指令的特殊單元。正是靠 PC 的移動(dòng),CPU才能一條一條的執(zhí)行指令。同時(shí),程序計(jì)數(shù)器也是和流水線密切相關(guān)的單元。

31、在程序開(kāi)始執(zhí)行前,CPU 將它的起始地址送入 PC,當(dāng)指令執(zhí)行時(shí),CPU 將自動(dòng) 修改 PC 的內(nèi)容,所以 PC 中的內(nèi)容總是下一條指令的地址。 由于指令通常是順序 執(zhí)行的,所以山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)10修改的過(guò)程通常只是簡(jiǎn)單的 PC 加 1。表 2 說(shuō)明了在引入流水線后 PC 的具體工作情況:邁蔦賺陘賓唄擷鷦訟湊。表 3 指令執(zhí)行中 PC 值的變化情況時(shí)鐘周期Reset周期 1周期 2周期 3周期 4PC01234第一條指令讀取指令 0執(zhí)行指令 0第二條指令讀取指令 1執(zhí)行指令 1第三條指令讀取指令 2執(zhí)行指令 2表 3 表明,在系統(tǒng)復(fù)位時(shí),PC 內(nèi)的值清 0,第一個(gè)時(shí)鐘周期,指令

32、寄存器 取 PC為 0 的地址的指令,同時(shí) PC 的值加 1;第二個(gè)時(shí)鐘周期,執(zhí)行 0 地址的 指令,同時(shí)讀取地址 1 的指令,同時(shí) PC 的值加 1;第三個(gè)時(shí)鐘周期,重復(fù)這樣 的過(guò)程。這樣可以得到結(jié)論:如果當(dāng)前 CPU 正在執(zhí)行的是第 N 條指令,那么指 令寄存器正在讀取的是 N+1條指令,此時(shí) PC 的值應(yīng)該是 N+2。嶁硤貪塒廩袞憫倉(cāng)華糲。2.4 CPU 整體結(jié)構(gòu)即設(shè)計(jì)思想在設(shè)計(jì) CPU 之前整個(gè)結(jié)構(gòu)的特性及由哪些模塊組成,這些模塊之間的 互連關(guān)系以及整個(gè) CPU 的最后輸出信號(hào)等都是要事先定義好的。2.4.1 CPU 的外部引腳規(guī)劃從 CPU 外部看整個(gè)輸入輸出如圖 2-5山東大學(xué)威海

33、分校畢業(yè)設(shè)計(jì)(論文)11R7.,.OC4wdddr7, ,0wdata15,0CPU圖 2-5 CPU 外部引腳信號(hào)該 CPU 有 5 個(gè)輸入引腳,1 個(gè)結(jié)果輸出端口以及一個(gè)運(yùn)算溢出信號(hào)。系統(tǒng) 的時(shí)鐘信號(hào)將直接驅(qū)動(dòng)驅(qū)動(dòng)整個(gè) CPU。WR 信號(hào)是系統(tǒng)的異步指令輸入信號(hào),高 電平有效。當(dāng) WR 信號(hào)有效時(shí),整個(gè) CPU 進(jìn)入指令輸入狀態(tài),當(dāng) WR 低電平時(shí) CPU 進(jìn)入指令讀取并完成指令操作的狀態(tài),當(dāng) CPU 完成全部輸入指令時(shí)進(jìn)入停 機(jī)狀態(tài),此時(shí)Start 信號(hào)重新啟動(dòng) CPU,使其進(jìn)入等待狀態(tài)。該櫟諼碼戇沖巋鳧薩錠。2.4.2CPU 的整體框圖系統(tǒng)的頂層結(jié)構(gòu)模塊圖如圖 2-6該模塊包含了系統(tǒng)的

34、主要模塊及它們之間的連接關(guān)系。 圖中的一個(gè)一個(gè)的 模塊代表了各個(gè)功能模塊,將在下面的章節(jié)中分別做詳細(xì)的設(shè)計(jì)說(shuō)明。每個(gè)模塊 都將按照 EDA 設(shè)計(jì)中自下而上的設(shè)計(jì)原則分別獨(dú)立設(shè)計(jì)。 有些模塊是比較簡(jiǎn)單的 像指令寄存器(IR),有些模塊則是比較難的像 ALU 模塊和控制單元模塊。劇妝諢貰 攖蘋塒呂侖廟。elkwr取指單元取指單元執(zhí)行單元執(zhí)行單元山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)12在設(shè)計(jì)微處理器的功能模塊之前,需要決定如何邏輯實(shí)現(xiàn)和處理器鎖存數(shù) 據(jù)。微處理器中有兩種不同的邏輯元件:(1)ALU、MUX、CONCROL 單元的元件都是組合邏輯電路。它們的輸出僅僅依賴于當(dāng)前的輸入狀態(tài),沒(méi)有內(nèi)部存儲(chǔ)功能;

35、臠龍訛驄椏業(yè)變墊羅蘄。(2)寄存器堆、臨時(shí)寄存器都是狀態(tài)單元,它的輸出不僅依賴于輸入,還有 其自身內(nèi)部的狀態(tài)。時(shí)鐘用來(lái)決定狀態(tài)何時(shí)被寫入,一個(gè)狀態(tài)可以在任意時(shí) 刻讀取。鰻順褸悅漚縫輾屜鴨騫。微處理器的時(shí)鐘采用邊沿觸發(fā)的方式, 整個(gè)系統(tǒng)采用單時(shí)鐘電路,即提供一 個(gè)系統(tǒng)時(shí)鐘,每當(dāng)時(shí)鐘邊沿到來(lái)的時(shí)候,向狀態(tài)單元寫入數(shù)據(jù)。穡釓虛綹滟鰻絲懷紆濼。整個(gè)系統(tǒng)可以分為兩個(gè)單元:取指單元,執(zhí)行單元。取指單元負(fù)責(zé)取下條指 令,執(zhí)行單元負(fù)責(zé)執(zhí)行當(dāng)前指令。取指單元和執(zhí)行單元共同構(gòu)成了CPU 的微控制單元。取指單元的第一個(gè)模塊是程序計(jì)數(shù)器(PC),PC 中是下條要執(zhí)行的指令 的地址,它是指向程序存儲(chǔ)器單元(PROM)來(lái)

36、尋址指令的。控制模塊是對(duì)從指令 寄存器(IR)送出指令進(jìn)行譯碼從而發(fā)出適當(dāng)?shù)目刂菩盘?hào)執(zhí)行程序的。隸誆熒鑒獫綱鴣攣駘賽。系統(tǒng)中包括了很多寄存器的設(shè)計(jì)包括指令寄存器 (IR),程序計(jì)數(shù)器(PC),這些寄存器大都在我們頂層可見(jiàn)的模塊的內(nèi)部, 系統(tǒng)的工作也可以看作就是數(shù)據(jù) 在這些寄存器之間的“遷移”,也即寄存器內(nèi)容的遷移。微處理器的功能就是體 現(xiàn)在這些這些數(shù)據(jù)是如何傳遞的, 在傳遞前的處理是如何處理的,所有這一系列 寄存器數(shù)據(jù)之間的遷移轉(zhuǎn)換就組成了微處理器。浹繢膩叢著駕驃構(gòu)碭湊。243 CPU 結(jié)構(gòu)的層次劃分正確合理的劃分系統(tǒng)是所有數(shù)字系統(tǒng)設(shè)計(jì)成功的關(guān)鍵。子系統(tǒng)的劃分過(guò)程就是把總體任務(wù)劃分程若干分任務(wù)

37、的過(guò)程。本設(shè)計(jì)將 CPU 分解為兩大子系統(tǒng):數(shù) 據(jù)通路和控制通路。這種劃分將 CPU 的運(yùn)算、執(zhí)行單元與控制部件分離開(kāi),是 非常合理、自然的。數(shù)據(jù)通路和控制通路這兩大部分又可以細(xì)化為更小的模塊,ALU 模塊(算術(shù)邏輯單元)、PC_RAM 模塊(程序存儲(chǔ)器)和 IR (指令寄存器)、 TRAM (寄存器堆)屬于數(shù)據(jù)通路部分,ALU 內(nèi)部又包含更小的模塊(加、減、與、或、移位模塊) ;控制模塊屬于控制通路部分,其中控制模塊又由FSM (狀態(tài)機(jī))和 CONTROL (控制器)構(gòu)成。具體的模塊功能實(shí)現(xiàn)將在下面兩章中詳細(xì) 介紹。鈀燭罰櫝箋礱颼畢韞糲。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)13第三章CPU數(shù)據(jù)通

38、路設(shè)計(jì)從這一章開(kāi)始將詳細(xì)介紹整個(gè) CPU 的細(xì)化設(shè)計(jì)模塊。通過(guò)上一章對(duì) CPU 的 結(jié)構(gòu)劃分,已經(jīng)知道 CPU 的整個(gè)設(shè)計(jì)分為兩個(gè)部分:數(shù)據(jù)通路和控制單元。在 這一章中將細(xì)分?jǐn)?shù)據(jù)通路模塊,數(shù)據(jù)通路是 CPU 中的執(zhí)行部件,數(shù)據(jù)傳輸、存 儲(chǔ)、處理都是在數(shù)據(jù)通路中完成的。在整個(gè) CPU 的結(jié)構(gòu)框圖中,除了控制單元 部分,其余部分都是數(shù)據(jù)通路部分,包括程序計(jì)數(shù)器 PC、程序存儲(chǔ)器 PC_RAM、 指令寄存器 IR、寄存器堆 TRAM、數(shù)據(jù)選擇器 ALUMUX 和算術(shù)與邏輯單元 AL U。愜執(zhí)緝蘿紳頎陽(yáng)灣愴鍵。設(shè)計(jì)數(shù)據(jù)通路,有兩種不同的設(shè)計(jì)方案。第一種是在所有需要傳送數(shù)據(jù)的部 件創(chuàng)建一條直接通路,采用

39、多路選擇器或者緩沖器為那些有多個(gè)數(shù)據(jù)源的寄存器 從多個(gè)可能的輸入中選擇一個(gè),這種方案適用于規(guī)模比較小的微處理器設(shè)計(jì)。另一種方案是在微處理器內(nèi)部創(chuàng)建一條總線,并且在各個(gè)部件之間使用總線傳數(shù) 據(jù)。本設(shè)計(jì)采用的是第一種方案的設(shè)計(jì)方法。下面將一一介紹數(shù)據(jù)通路的各個(gè)模 塊功能及其實(shí)現(xiàn)。貞廈給鏌綞牽鎮(zhèn)獵鎦龐。3.1 程序計(jì)數(shù)器模塊 PC程序計(jì)數(shù)器(PC)作為指向指令地址“指針”,決定著下一條要執(zhí)行的指令。正是有了 PC 的移動(dòng)和變化,CPU 才能按一定的順序或預(yù)想的情況進(jìn)行指令的執(zhí)山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)14行。程序計(jì)數(shù)器 PC 中存放指令存儲(chǔ)器的地址,當(dāng)一條指令被執(zhí)行時(shí),程序計(jì)數(shù) 器存放下一條指

40、令的地址。在正常工作的條件下,控制信號(hào)選擇PC+1 作為下一個(gè) PC 的值輸出;當(dāng)執(zhí)行 JMP 指令時(shí),選擇來(lái)自指令中的跳轉(zhuǎn)地址決定新的 PC 值,但是在本次設(shè)計(jì)中沒(méi)有涉及到。嚌鰭級(jí)廚脹鑲銦礦毀蘄。AHpc_out7, Q-nrst-pjincPC圖 3-1 PC 模塊外部接口信號(hào)圖 3-1 所示是從外部看的 PC 模塊的接口。其中輸出的 PC 是 8BitS 寬的,因 此PC 模塊可以尋址獨(dú)立的 256 個(gè)單元。PC_OUT 地址輸出信號(hào)是直接與程序存 儲(chǔ)器PCRAM 相連的。PCNC 控制信號(hào)來(lái)自控制單元,若 PC_INC 有效則 PC 將執(zhí)行加1 操作。EN 信號(hào)是程序計(jì)數(shù)器 PC 的使

41、能控制信號(hào),只有當(dāng)該信號(hào)有 效時(shí) PC 的相應(yīng)才能操作才能執(zhí)行。薊鑌豎牘熒浹醬籬鈴騫。3.2 程序存儲(chǔ)器 PC_RAM程序存儲(chǔ)器是存儲(chǔ)微處理器程序,即能執(zhí)行特定功能的一組指令組合。圖3-2 顯示了程序存儲(chǔ)器的結(jié)構(gòu)圖。在設(shè)計(jì)程序存儲(chǔ)器模塊時(shí),本文是自行設(shè)計(jì)寄存器堆型的存儲(chǔ)器,直接使用 一個(gè)數(shù)組存放二進(jìn)制數(shù)據(jù),通過(guò) VHDL 編寫一個(gè)一定長(zhǎng)度的數(shù)組實(shí)現(xiàn)。因?yàn)槌?序計(jì)數(shù)器可以尋址到 256 條指令,所以程序存儲(chǔ)器也必需可以至少存放128 條 16位的指令,這樣只需申請(qǐng)一個(gè)變量 Ram,有 256 個(gè)元素,每個(gè)元素 16 位即可。第一個(gè)數(shù)組兀素下標(biāo)表示存貯器的 0 號(hào)地址,第二個(gè)數(shù)組兀素下標(biāo)表示 1

42、號(hào)地址,以 此類推至第 256 個(gè)數(shù)組元素的下標(biāo),即 11111111 號(hào)存貯器地址。齡踐硯語(yǔ)蝸鑄轉(zhuǎn)絹攤濼。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)15程序存儲(chǔ)器是一個(gè)可讀可寫的模塊, 其輸入端口接入外圍程序和地址輸入端口,由 WR 異步控制其讀寫狀態(tài),WR 高電平有效。當(dāng) WR 有效時(shí),程序存 儲(chǔ)器為寫狀態(tài),即將輸入程序存入其輸入地址對(duì)應(yīng)的存儲(chǔ)單元中,即執(zhí)行操作ram(conv_integer(waddr) = wdata;當(dāng) WR 為低電平時(shí),程序存儲(chǔ)器處于讀狀 態(tài),其將程序計(jì)數(shù)器輸出地址PC_OUT 上 對(duì)應(yīng)的存儲(chǔ)單元中的指令輸出,即執(zhí)行操作 instruction waddr7,.0- wda

43、ta15.-0PC PM山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)16J圖 3-4 指令寄存器外部接口圖 3-4 所示,指令寄存器的指令流向是:4 位操作碼 IR 指令送往控制單元已做 譯碼使用,而根據(jù)不同指令分離出來(lái)的要操作的立即數(shù)DATA、源操作寄存器RR、目的操作寄存器 RD 送到寄存器堆 TRAM 模塊。指令寄存器外部輸入控制信 號(hào)en 是來(lái)自控制單元的輸入信號(hào),En 高電平有效,與 PC 模塊的使能 en 信號(hào)功能 上基本一致,它控制著指令寄存器是否可以從程序存儲(chǔ)器中加載指令。當(dāng) en 有效時(shí)指令寄存器才能更新來(lái)自程序存儲(chǔ)器的指令。擷偽氫鱧轍冪聹諛詼龐。3.4 時(shí)鐘發(fā)生器模塊時(shí)鐘發(fā)生器 TIM

44、E_CTRL 利用時(shí)鐘信號(hào) CLK 生成從時(shí)鐘信號(hào) CLKR,并送往 CPU的寄存器堆 TRAM 中,作為其進(jìn)行讀寫操作的時(shí)鐘信號(hào)。 CLKR 是將 CLK 延遲半個(gè)周期產(chǎn)生的,有利于流水線的完成。蹤飯夢(mèng)摻釣貞綾賁發(fā)蘄。時(shí)鐘發(fā)生器的外部接口如圖 3-5。ckclkrTIME CTRL圖 3-5 時(shí)鐘發(fā)生器的外部接口3.5 寄存器堆 TRAM寄存器堆與程序存儲(chǔ)器設(shè)計(jì)相同,都是直接使用一個(gè)數(shù)組存放二進(jìn)制數(shù) 據(jù),通過(guò) VHDL 編寫一個(gè)一定長(zhǎng)度的數(shù)組實(shí)現(xiàn),同樣可以通過(guò)集成器數(shù)組 元素和輸入地址間的相互賦值實(shí)現(xiàn)“讀存儲(chǔ)器”,“寫存儲(chǔ)器”。婭鑠機(jī)職錮夾簣軒蝕騫。在本次 CPU 設(shè)計(jì)中 TRAM 模塊用以

45、完成以下幾個(gè)操作:1、 將立即數(shù)寫入指定寄存器中。2、 將指定目的操作寄存器地址中的數(shù)據(jù)讀出并輸出。3、 將指定源操作寄存器地址中的數(shù)據(jù)讀出。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)17regLTr7.,0egd7 0ram_ctrll,0data1.0RO7.O圖 3-6 寄存器堆 TRAM 卜部接口如圖 12 所示,fclkr 時(shí)鐘信號(hào)是來(lái)自時(shí)鐘發(fā)生器,控制寄存器是否能進(jìn)行讀 寫操作。在 CPU 時(shí)鐘的前半周期,控制器進(jìn)行譯碼并發(fā)出控制信號(hào),為操作的施 行鋪好路,在時(shí)鐘的后半周期,也就是從時(shí)鐘信號(hào) fclkr 的上升沿,TRAM 在控制 信號(hào) ram _ctrl、load、store 的控制下進(jìn)行

46、讀寫操作。譽(yù)諶摻鉺錠試監(jiān)鄺儕瀉。If (ris in g_edge(fclkr) the nIf (fstore = thenram (conv_in teger(fromrd)=fR0一存儲(chǔ)上條指令運(yùn)算得到的結(jié)果elsif (fromram_ctrl = 11) the n toreg_rr=ram(c onv_in teger(fromrr);toreg_rd=ram(c onv_in teger(fromrd);一一將指定寄存器的值輸出elsif (fromram_ctrl = 01) the n ram (conv_in teger(fromrd)=value2;-/存儲(chǔ)立即數(shù)到目的寄

47、存器從這段代碼可以看出,當(dāng)控制信號(hào) store 有效時(shí),TRAM 可以完成將運(yùn)算器的 結(jié)果寫入目的操作寄存器中,若無(wú)效,則判斷控制信號(hào) ram_ctrl 的值,根據(jù)不同的 控制值可以將寄存器的儲(chǔ)存值分別寫入目的操作寄存器和源操作寄存器中,可以將立即數(shù)寫入目的操作寄存器中,可以讀出指定寄存器的值并輸出。儔聹執(zhí)償閏號(hào)燴鈿膽賾。3.6 ALU 模塊ALU 單元即算術(shù)運(yùn)算單元,是 CPU 的核心處理的單元,不但能完成算術(shù)和 邏輯運(yùn)算,而且很多數(shù)據(jù)都要通過(guò) ALU 送出到輸出端口并輸出。在 ALU 中還 可以細(xì)化成兩個(gè)功能單元:取操作數(shù)單元、執(zhí)行運(yùn)算單元。取操作數(shù)單元負(fù)責(zé)對(duì) ALU 的兩個(gè)操作數(shù) A 和

48、 B 的取值,執(zhí)行運(yùn)算單元負(fù)責(zé)將取到的操作數(shù)進(jìn)行相應(yīng) 的操作。ALU 整體框圖如圖 3 7 所示??b電悵淺靚蠐淺錒鵬凜。clkrloadstorerr3. .0rd3,.,0-山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)18圖 3-7 ALU 整體結(jié)構(gòu)圖算術(shù)邏輯單元 ALU是絕大多數(shù)指令必須經(jīng)過(guò)的單元,所有的運(yùn)算都在 ALU 中完成。取操作數(shù)單元在數(shù)據(jù)選擇的控制信號(hào)控制下,可以選取一個(gè)或者兩個(gè)操 作數(shù)輸入執(zhí)行單元。在執(zhí)行運(yùn)算單元中,根據(jù)指令的類型對(duì)兩個(gè)或一個(gè) 8 位輸入 數(shù)據(jù)進(jìn)行運(yùn)算。4位算術(shù)控制輸入信號(hào) alu_ctrl 決定兩個(gè)輸入數(shù)據(jù)的算術(shù)操作類 型,可以有 16 種不同的功能組合。2 位邏輯控制輸

49、入信號(hào) Logic 決定一個(gè)輸入數(shù) 據(jù)的邏輯操作類型,可以有 4種不同的功能組合。驥擯幟褸饜兗椏長(zhǎng)絳粵。在 ALU 的設(shè)計(jì)中主要還是根據(jù)指令來(lái)的,ALU 所能執(zhí)行的指令是很多的, 基本的指令可以分為 4 類,即卩 ADD,SUB, LOGIC, LSL、LSR。指令 ADD 分 為不帶進(jìn)位和帶進(jìn)位加法操作:SUB 指令組分為執(zhí)行不帶進(jìn)位和帶進(jìn)位減法操作 LOGIC 指令組分為或和與的邏輯操作;LSL 指令組分為帶進(jìn)位的循環(huán)右移和不帶 進(jìn)位的算術(shù)右移操作;LSR 指令組分為帶進(jìn)位的循環(huán)左移和不帶進(jìn)位的算術(shù)左 移操作;在本次設(shè)計(jì)中只完成加法、減法、與、或、不帶進(jìn)位的左移和不帶進(jìn)位 的右移的運(yùn)算功能

50、,并輸出溢出信號(hào)。癱噴導(dǎo)閽騁艷搗靨驄鍵。Process (a1, b1, fromalu_ctrl , fromlogic)Beg incase fromalu_ctrl isend case;case fromlogic isend case;end process;Process (clk)beg inif (rising_edge(clk) thenif fouten =0 then Rv=ZZZZZZZZ;elsif fload =0 then Rreg_rr7lk0-reg_rd7.R7.O- -*-*廿DdEi丄.日.Jr-alu_ctrl3.,0-logic 1 0-outen-

51、loadALU圖 3-11 ALU 模塊外部接口第四章 CPU 控制單元的設(shè)計(jì)在 CPU 中還有一個(gè)重要的模塊,即控制單元模塊,其功能是得到當(dāng)前指令, 得到需要的數(shù)據(jù),在正確的時(shí)間、用正確的值設(shè)置所有相關(guān)的控制信號(hào),控制 CPU 的取指、譯碼和指令執(zhí)行等操作。因此這個(gè)模塊在整個(gè) CPU 的設(shè)計(jì)中是最關(guān)鍵的 也是最難精準(zhǔn)實(shí)現(xiàn)的模塊。欖閾團(tuán)皺鵬緦壽驏頦蘊(yùn)。流水線操作和數(shù)據(jù)通路各個(gè)模塊的所有控制信號(hào)都是來(lái)自控制單元??刂茊卧淖饔镁褪菍?duì)指令譯碼,在不同的狀態(tài)發(fā)出不同的控制信號(hào)來(lái)處理流水線過(guò) 程,另一方面在合適的時(shí)間對(duì)數(shù)據(jù)通路發(fā)出正確的控制信號(hào)來(lái)控制指令的正確執(zhí) 行。為了實(shí)現(xiàn)控制模塊的功能,可以將該模

52、塊細(xì)化為兩個(gè)部分,即控制指令操作的控制器和控制狀態(tài)轉(zhuǎn)換的有限狀態(tài)機(jī)(FSM)。遜輸吳貝義鰈國(guó)鳩猶騸。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)204.1 控制器 Control 模塊控制器則是一個(gè)微處理器的核心部件之一,在每一個(gè)時(shí)鐘周期的上升沿,指 令寄存器 IR 從內(nèi)存中讀取指令字后,送入控制器中,控制器能夠根據(jù)輸入的 4 位 操作碼進(jìn)行譯碼,為其他每個(gè)功能單元產(chǎn)生相應(yīng)的主控制信號(hào),并發(fā)出信號(hào)狀態(tài) 信號(hào)控制狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換,最終實(shí)現(xiàn)對(duì) CPU 各個(gè)功能單元的控制,實(shí)現(xiàn)指令的 順利執(zhí)行。幘覘匱駭儺紅鹵齡鐮瀉。loadouteni3 0sleepstore abselfl, ,0 ram_ctrll.Ol

53、ogic 1.-0alu_ctr3.OCONTROL圖 4-1 控制器Control外部接口控制器根據(jù) 4 位操作碼 IR 進(jìn)行譯碼, 通過(guò)指令譯碼給出其它各單元的操作控 制信號(hào),包括 ALU 單元的算術(shù)和邏輯運(yùn)算控制信號(hào)、移位控制信號(hào),操作數(shù)輸入 選擇信號(hào)、結(jié)果輸出信號(hào),TRAM 的讀寫控制、送入狀態(tài)機(jī)得停機(jī)控制信號(hào)。誦 終決懷區(qū)馱倆側(cè)澩賾。4.2 有限狀態(tài)機(jī) FSM 模塊4.2.1 有限狀態(tài)機(jī)狀態(tài)機(jī)是 CPU 的又一個(gè)控制核心部件,是實(shí)現(xiàn)高效率高可靠邏輯控制的重要 途徑,用于產(chǎn)生一系列的控制信號(hào),啟動(dòng)或停止某些部件。程序計(jì)數(shù)器PC 值的改變、指令寄存器取指令以及 CPU 的復(fù)位等操作都是由

54、狀態(tài)機(jī)來(lái)控制的。狀態(tài)機(jī) FSM的當(dāng)前狀態(tài),由變量 state 記錄。醫(yī)滌侶綃噲睞齒辦銩凜。從狀態(tài)機(jī)的信號(hào)輸出上分,有 Moore 型和 Mealy 型兩種狀態(tài)機(jī)。從輸出時(shí)序 上看,前者屬于同步狀態(tài)機(jī),而后者屬于異步狀態(tài)機(jī)。Mealy 型狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和所輸入信號(hào)決定的,它的輸出是在輸入變化后立即發(fā)生的,不依賴時(shí)鐘的同步16。Moore 型狀態(tài)機(jī)的輸出則僅由當(dāng)前狀態(tài)控制,這類狀態(tài)機(jī)在輸入發(fā)山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)21本次設(shè)計(jì)采用 2 個(gè)進(jìn)程模塊,一個(gè)模塊用同步時(shí)序描述狀態(tài)轉(zhuǎn)移;另一個(gè)模 塊用組合邏輯判斷狀態(tài)的邏輯輸出,其 VHD 代碼如下:筧驪鴨櫨懷鏇頤嶸悅廢。process (

55、clk,wr,i nput,start)beg in/第一個(gè)進(jìn)程模塊用同步時(shí)序描述狀態(tài)轉(zhuǎn)移if wr = 1 thenstate /利用 case句對(duì)每一個(gè)狀態(tài)建立一項(xiàng) case句的分支If in put =1 thenstate = tj;elsestate whe n tj =end case;end if;end process;process (state)生變化還必須等待時(shí)鐘的到來(lái),時(shí)鐘使?fàn)顟B(tài)發(fā)生變化時(shí)才導(dǎo)致輸出變化。臚當(dāng)為遙頭韙鰭啰暈糞。在本次 CPU 設(shè)計(jì)中,將采用 Mealy 型狀態(tài)機(jī)來(lái)實(shí)現(xiàn)時(shí)序和狀態(tài)的轉(zhuǎn)換。在整 個(gè)CPU 的狀態(tài)機(jī)中共設(shè)計(jì)了 3 個(gè)狀態(tài):執(zhí)行(exe)待機(jī)(s

56、p),停機(jī)(tj)。圖 16 是 各個(gè)狀態(tài)的狀態(tài)轉(zhuǎn)移圖。鴣湊鸛齏嶇燭罵獎(jiǎng)選鋸。en=(1nrst311pc incwhe n sp =whe n tj =end case;end process;第五章 RISC CPU 勺仿真驗(yàn)證5.1 各模塊的組合前面兩章將 CPU 細(xì)化為多個(gè)功能模塊,為了使其能集合成一個(gè)完整的系統(tǒng)共 同完成特定的功能執(zhí)行,各個(gè)模塊就需要組合起來(lái)配合工作。在構(gòu)建頂層文件的 方法有語(yǔ)言描述和原理圖法。原理圖法就是將 CPU 中的每個(gè)綜合模塊以元件的形 式,通過(guò)互連線將各個(gè)模塊像電路上畫原理圖一樣連接起來(lái),系統(tǒng)規(guī)模比較大時(shí),各個(gè)模塊連起來(lái)的互連線很多,操作起來(lái)很不方便,同時(shí)也

57、容易出錯(cuò)。韋鋯鯖榮擬滄閡懸贖蘊(yùn)。在本次設(shè)計(jì)中由于各個(gè)模塊的互連信號(hào)比較多, 所以將采用硬件語(yǔ)言描述的 方法將各個(gè)模塊連接起來(lái),即用 VHDL 語(yǔ)言將各個(gè)模塊組合起來(lái)從而形成一個(gè)最 頂層的模塊。濤貶騙錟晉鎩錈撳憲騙。用 VHDL 語(yǔ)言引用一個(gè)模塊時(shí)是先用 compo nen 來(lái)聲明這個(gè)模塊,模塊的接山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)23口要用 port 關(guān)鍵詞聲明,例如對(duì)程序計(jì)數(shù)器模塊的引用聲明如下:鈿蘇饌?cè)A檻榪鐵樣說(shuō)瀉。COMPONENT pc ISPORT (elk ,fe n: IN STD_LOGIC ;fromnrst : IN STD_LOGIC ; frompc_i nc : IN

58、STD_LOGIC ;pcout : out un sig ned(7 dow nto 0);END COMPONENT pc;對(duì)程序計(jì)數(shù)器模塊的聲明后再對(duì)該模塊的引用, 引用時(shí)用的關(guān)鍵詞是 PORT MAP,通過(guò)如下程序段完成模塊引用U1: pc PORT MAP (clk = clk,fen = en,fromnrst = n rst, frompc_i nc = pc_inc, pcout = pc_out);各個(gè)模塊間的互連信號(hào)是用用一 signa 類型的變量聲明的。SIGNAL en, n rst ,clkr: STD_LOGIC;SIGNAL oute n :STD_LOGIC;將

59、所有的功能模塊組合連接起來(lái)就成為一個(gè)整體,作為整個(gè)仿真的 頂層模塊。5.2 綜合 RTL 電路圖利用硬件語(yǔ)言法構(gòu)建好頂層文件, 把所有模塊組裝成了一個(gè)整體,在對(duì)這 個(gè)整體進(jìn)行編譯和綜合成功后即可對(duì)它進(jìn)行功能仿真。用 QUARTUSII 對(duì)設(shè)計(jì)模 塊進(jìn)行編譯及綜合后生成的 RTL 綜合電路圖如圖 5 1 示。購(gòu)櫛頁(yè)詩(shī)燦戶踐瀾襯鳳。山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)24on clk,fe n = en,fromnrst = n rst,frompc_i nc = pc_inc,frompc_load =pc_load,fromaddr =addr, pcout = pc_out)鄭餼腸絆頎鎦鷓鮞嚶錳

60、。U2: pc_ram PORT MAP(clk = clk,fro mnrst = n rst,pc_in = pc_out,waddr= waddr,wdata = wdata,wr = wr, toi nstructio n = in structi on);棄鈾縫遷馀氣鰷鸞覲廩。U3: ir_ram PORT MAP(clk = clk,fromi ns = in structio n,frome n = en ,tord= rd,torr = rr,todata = data,toir = ir);調(diào)誶續(xù)鷚髏鋮饅喪劉藪。U4: Tram PORT MAP(fclkr = clkr,f

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論