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

下載本文檔

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

文檔簡介

1、畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)(論文)題目 基于FPGA的微處理器設(shè)計(jì)姓 名:學(xué) 號:學(xué) 院:專 業(yè):年 級指導(dǎo)教師: ABSTRACT摘 要本文使用結(jié)構(gòu)化編程方法,將微處理器內(nèi)核按照功能劃分為不同的模塊,采用VHDL語言設(shè)計(jì)每一個模塊的內(nèi)部功能和外圍接口,設(shè)計(jì)實(shí)現(xiàn)了一種基于FPGA芯片的微處理器系統(tǒng)。該微處理器主要由控制器、運(yùn)算器和寄存器組成,具有指令控制、操作控制、時間控制和數(shù)據(jù)加工等基本功能,可實(shí)現(xiàn)四位操作數(shù)的各種運(yùn)算,其指令長度為16位定長,采用了直接尋址方式。最后采用QUARTUSII對設(shè)計(jì)進(jìn)行了仿真測試,結(jié)果表明設(shè)計(jì)實(shí)現(xiàn)了微處理器的主要功能。關(guān) 鍵 字:FPGA,微處理器,VHDLABSTR

2、ACTA microprocessor on FPGA is realized by using structured programming. This microprocessor core is divided into several different function modules which are designed using VHDL.The microprocessor consists of controller, arithmetic unit and registers. It realizes the instruction control, operation

3、control, time sequence control and data processing functions. The direct addressing mode is adopted. The various operations for 4bit operand can be achieved. Its instruction length is 16 bit.The design is simulated by using QUARTUSII, and the results show that the main functions of a microprocessor

4、are achieved.Key Words: FPGA, CPU, VHDLII目錄目 錄摘 要IABSTRACTII第1章 緒論11.1 背景11.2 微處理器的概況11.3 課題研究方法及技術(shù)背景11.3.1 研究方法11.3.2 技術(shù)背景21.4 課題工作內(nèi)容3第二章 微處理器體系結(jié)構(gòu)42.1 CPU的功能和構(gòu)成42.2 指令系統(tǒng)分析52.2.1 RISC 與總線結(jié)構(gòu)52.2.2 指令系統(tǒng)62.3 指令時序分析82.3.1 RISC與流水線82.3.2 程序計(jì)數(shù)器與流水線82.4 CPU整體結(jié)構(gòu)即設(shè)計(jì)思想92.4.1 CPU的外部引腳規(guī)劃92.4.2 CPU的整體框圖102.4.3 C

5、PU結(jié)構(gòu)的層次劃分11第三章 CPU數(shù)據(jù)通路設(shè)計(jì)123.1 程序計(jì)數(shù)器模塊PC123.2 程序存儲器PC_RAM133.3 指令寄存器模塊143.4 時鐘發(fā)生器模塊143.5 寄存器堆TRAM153.6 ALU模塊16第四章 CPU控制單元的設(shè)計(jì)184.1 控制器Control模塊184.2 有限狀態(tài)機(jī)FSM模塊194.2.1 有限狀態(tài)機(jī)194.2.2 利用的VHDL語言進(jìn)行狀態(tài)機(jī)描述19第五章 RISC CPU的仿真驗(yàn)證215.1 各模塊的組合215.2 綜合RTL電路圖215.3 RISCCPU的功能仿真驗(yàn)證245.3.1 算術(shù)運(yùn)算類指令驗(yàn)證245.3.2 邏輯運(yùn)算類指令驗(yàn)證255.3.3

6、 移位類指令驗(yàn)證255.3.4 LD數(shù)據(jù)輸出指令仿真265.3.5 ST運(yùn)算數(shù)據(jù)存儲仿真265.4 總結(jié)27第六章 總結(jié)和展望28參考文獻(xiàn)29致謝錯誤!未定義書簽。附錄30山東大學(xué)威海分校畢業(yè)設(shè)計(jì)(論文)第1章 緒論1.1 背景隨著數(shù)字通信和工業(yè)控制領(lǐng)域的高速發(fā)展,超大規(guī)模集成電路的集成度和工藝水平不斷提高,要求專用集成電路(ASIC)的功能越來越強(qiáng),功耗越來越低,生產(chǎn)周期越來越短,這些都對芯片設(shè)計(jì)提出了巨大的挑戰(zhàn),傳統(tǒng)的芯片設(shè)計(jì)方法已經(jīng)不能適應(yīng)復(fù)雜的應(yīng)用需求了,將整個應(yīng)用電子系統(tǒng)集成在一個芯片中(SOC), 已成為現(xiàn)代電子系統(tǒng)設(shè)計(jì)的趨勢。簡單來說,SOC是一種將多個獨(dú)立的VLSI設(shè)計(jì)拼合在一

7、起,來形成某一應(yīng)用所需的全部功能的集成電路,以其高集成度、低功耗等優(yōu)點(diǎn)越來越受歡迎1。中國的電子信息產(chǎn)業(yè)現(xiàn)在增長迅速,主要集中在移動通信設(shè)備、數(shù)據(jù)通信設(shè)備、計(jì)算機(jī)及消費(fèi)產(chǎn)品領(lǐng)域??紤]到我國電子信息市場的特殊性,即巨大的移動通信和數(shù)字家電市場的核心芯片主要依賴進(jìn)口的狀況。巨大的市場的需求決定了開發(fā)SOC的必要性,現(xiàn)在數(shù)字家電的片上系統(tǒng)研究己經(jīng)成為研究的熱點(diǎn)之一。研究SOC的設(shè)計(jì)方法和驗(yàn)證方法具有很大的現(xiàn)實(shí)意義2-3。其中CPU是SOC的重要組成部分,可以完成簡單的數(shù)據(jù)處理,內(nèi)存的調(diào)度,中斷處理等操作。隨著百萬門級的FPGA芯片、功能復(fù)雜的IP核、可重構(gòu)的嵌入式處理器核以及各種強(qiáng)大EDA的開發(fā)工具

8、的迅速發(fā)展,使得設(shè)計(jì)者在EDA工具的幫助下完成整個系統(tǒng)從行為算法級到物理結(jié)構(gòu)級的全部設(shè)計(jì),并最終將一個電子系統(tǒng)集成到一片F(xiàn)PGA中,即SOPC??梢?,SOPC是基于FPGA解決方案的SOC,是SOC發(fā)展的新階段。1.2 微處理器的概況微處理器是計(jì)算機(jī)系統(tǒng)中非常之重要的核心組成部分,它用來控制計(jì)算機(jī)的各種操作過程,通常也被稱為CPU,即中央處理器。隨著科學(xué)技術(shù)的迅速發(fā)展,微處理器的發(fā)展也是非常迅速,它的處理能力已經(jīng)由過去的4位發(fā)展到現(xiàn)在的64位,運(yùn)算能力和處理能力大大提高,應(yīng)用領(lǐng)域也從計(jì)算機(jī)系統(tǒng)擴(kuò)展到各個相關(guān)領(lǐng)域,例如通信、航天和工業(yè)控制等。通常,微處理器按照處理能力可以劃分為4位、8位、16位

9、、32位和64位微處理器,它的處理能力是逐步提高的。但是,在微控制器的發(fā)展過程中,8位機(jī)始終是嵌入式低端應(yīng)用的主要機(jī)型4?,F(xiàn)今市場上流行的典型的8位微控制器,可以在各種FPGA上實(shí)現(xiàn),設(shè)計(jì)靈活方便而且易于進(jìn)行功能擴(kuò)展。因此研究8位CPU內(nèi)核具有廣泛的現(xiàn)實(shí)意義,由于其具有較高的處理性能和較少的資源占用,故具有更加廣泛的應(yīng)用前景。1.3 課題研究方法及技術(shù)背景1.3.1 研究方法本課題使用硬件描述語言VHDL采用自頂向下的設(shè)計(jì)方法設(shè)計(jì)一個滿足要求的8位CPU內(nèi)核及外部接口,使用EDA軟件QUARTUSII軟件完成編碼、仿真驗(yàn)證。自頂向下的設(shè)計(jì)方法就是設(shè)計(jì)者首先從整體上規(guī)劃整個系統(tǒng)的功能和性能,然后

10、利用功能分割手段對系統(tǒng)進(jìn)行劃分,分解為規(guī)模較小、功能較簡單的局部模塊,并確立它們之間的相互關(guān)系,將設(shè)計(jì)由上至下進(jìn)行層次化和模塊化,即分層次、分模塊地對電子系統(tǒng)進(jìn)行設(shè)計(jì)和仿真。不難看出,采用自頂向下的設(shè)計(jì)方法實(shí)際上就是基于芯片的系統(tǒng)設(shè)計(jì)方法,這種方法有助于在設(shè)計(jì)早期發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)中的錯誤,提高設(shè)計(jì)成功率。1.3.2 技術(shù)背景 1. 硬件描述語言VHDL 如今,大多數(shù)的EDA工具都采用VHDL作為主要的硬件描述語言,這主要源于VHDL強(qiáng)大的自身功能和特點(diǎn),下面介紹一下VHDL的優(yōu)點(diǎn)。(1) 具有強(qiáng)大的描述能力VHDL既可以描述系統(tǒng)級電路,也可以描述門電路;既可以采用行為描述、寄存器描述或者結(jié)構(gòu)描述,

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

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

13、流水線;(2) 控制電路簡單,多采用硬連線方式來實(shí)現(xiàn)。因?yàn)椴恍枰~外的存取微程序存儲器來完成指令的執(zhí)行,因此可以直接使用硬連線方式來設(shè)計(jì);(3) 指令定長,指令格式簡單,指令編碼固定。這樣字段固定,使操作碼得譯碼與操作數(shù)的存取可以同時執(zhí)行,使得控制單元的設(shè)計(jì)簡單化;(4) ALU指令和訪存指令分開,并且訪存種類很少。(5) 以寄存器對寄存器的運(yùn)算為主。寄存器對寄存器的運(yùn)算有助于減少對存儲器的訪問次數(shù),提高數(shù)據(jù)的存取速度7-8。1.4 課題工作內(nèi)容本文一共分為七章。各章節(jié)內(nèi)容安排如下:第一章 緒論。第二章 微處理器的體系結(jié)構(gòu)。研究了CPU的整體設(shè)計(jì),指令系統(tǒng)和時序分析以及流水線的實(shí)現(xiàn)。第三章 C

14、PU數(shù)據(jù)通路設(shè)計(jì)。詳細(xì)介紹了通路模塊中的程序計(jì)數(shù)器、指令寄存器、程序存儲器等的具體設(shè)計(jì)和功能實(shí)現(xiàn)。第四章 CPU控制單元的設(shè)計(jì)。詳細(xì)介紹了控制單元中的控制器和狀態(tài)機(jī)的設(shè)計(jì)和功能實(shí)現(xiàn)。第五章 CPU的仿真驗(yàn)證。驗(yàn)證CPU的部分功能。第六章 總結(jié)和展望。第二章 微處理器體系結(jié)構(gòu)2.1 CPU的功能和構(gòu)成CPU是計(jì)算機(jī)的核心組成部分。計(jì)算機(jī)進(jìn)行信息處理可分為以下兩個步驟9。(1) 將數(shù)據(jù)和程序(即指令序列)輸入到計(jì)算機(jī)的存儲器中;(2) 從第一條指令的地址開始執(zhí)行該程序,得到所需的結(jié)果,結(jié)束運(yùn)行。 CPU的作用是協(xié)調(diào)和控制計(jì)算機(jī)的各個部件,并執(zhí)行程序的指令序列,使其有條不紊的進(jìn)行,因此必須具備以下基

15、本功能:取指令:當(dāng)程序已在存儲器中時,首先根據(jù)程序入口地址取出一條程序,為此要發(fā)出指令的地址及相關(guān)的控制信號;分析指令:即指令譯碼,既對當(dāng)前所取的指令進(jìn)行分析,指出它要求什么操作,并產(chǎn)生相應(yīng)的操作所需要的控制命令;執(zhí)行指令:根據(jù)分析指令時產(chǎn)生的“操作命令”形成相應(yīng)的操作控制序列,通過運(yùn)算器、存儲器及輸入輸出的執(zhí)行,實(shí)現(xiàn)每條指令的功能,其中包括對運(yùn)算結(jié)果的處理及下條指令地址的形成。將CPU的功能進(jìn)一步細(xì)化,可以概括如下。(1) 能對指令進(jìn)行譯碼并執(zhí)行規(guī)定動作;(2) 可以進(jìn)行算術(shù)和邏輯運(yùn)算;(3) 能與存儲器和外設(shè)交換數(shù)據(jù);(4) 提供整個系統(tǒng)所需的控制。盡管各種CPU的性能指標(biāo)和結(jié)構(gòu)細(xì)節(jié)各不相

16、同,但它們所能完成的基本功能相同,簡化CPU內(nèi)部結(jié)構(gòu)如圖2-1所示。圖2-1 簡化CPU內(nèi)部結(jié)構(gòu)2.2 指令系統(tǒng)分析指令系統(tǒng)結(jié)構(gòu)是微處理器體系結(jié)構(gòu)的一個重要部分,是微處理器設(shè)計(jì)的基礎(chǔ)。指令格式、尋址方式和指令系統(tǒng)是指令系統(tǒng)結(jié)構(gòu)的重要方面。目前主流CPU指令可以分為RISC和CISC,由上節(jié)介紹可知,RISC微處理器指令系統(tǒng)的指令種類少而經(jīng),尋址方式簡單,指令格式固定,所以本次設(shè)計(jì)采用RISC指令系統(tǒng)2.2.1 RISC 與總線結(jié)構(gòu)早期的計(jì)算機(jī)一般都采用馮.諾依曼(Von Neumann)結(jié)構(gòu),CISC架構(gòu)的微處理器常采用這種結(jié)構(gòu)。它是在同一個存儲空間取指令和數(shù)據(jù),采用單地址總線結(jié)構(gòu),即程序存儲

17、器和數(shù)據(jù)存儲器共用一條地址總線,限制了工作帶寬,使得控制電路復(fù)雜,功耗較大10-11。結(jié)構(gòu)見圖2-2所示:圖 2-2 馮.諾依曼結(jié)構(gòu)圖 這種結(jié)構(gòu)有兩個明顯的缺點(diǎn):(1) CPU中控制器和運(yùn)算器的速度必須與存儲器的速度相匹配;(2) 指令和數(shù)據(jù)的流動都通過同一條總線,使指令和數(shù)據(jù)的獨(dú)立性消弱;目前,RISC架構(gòu)的微處理器都采用哈佛結(jié)構(gòu),這種結(jié)構(gòu)具有分離地址總線的兩個存儲器,其中一個放程序,另一個放數(shù)據(jù),其指令和數(shù)據(jù)空間完全分開,可以同時訪問,且一次讀出,簡化控制電路,提高數(shù)據(jù)的吞吐率12。結(jié)構(gòu)如圖2-3所示。 圖2-3 哈佛結(jié)構(gòu)圖這種結(jié)構(gòu)的優(yōu)點(diǎn)是:(1) 允許數(shù)據(jù)從程序存儲器傳遞到SRAM,該功

18、能也允許從程序存儲器 中讀取數(shù)據(jù)表。這對現(xiàn)代微控制器應(yīng)用十分重要,因?yàn)闉榱耸沟綦?后數(shù)據(jù)表不丟失,就要將它放在程序存儲器中,RISC架構(gòu)很好地解 決了這個問題。(2) 讀取指令和存儲器數(shù)據(jù)交換可以在多步流水線中同時進(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ù)總線分開,可以使用不同位寬的指令和數(shù)據(jù),還有一個最大好處就是可以預(yù)取指令,這樣對流水線是很有用的。其次,該微處理器實(shí)現(xiàn)了兩級指令流水線,采用哈佛結(jié)構(gòu)可使流水實(shí)現(xiàn)的難度大為降低,在采用流水線后,能夠有效地提高指令的執(zhí)行速度。再次,該

19、微處理器采用了硬布線邏輯代替微程序控制的方法,提高了指令的執(zhí)行速度和效率。2.2.2 指令系統(tǒng)本文設(shè)計(jì)的微控制器采用兩級流水線、指令長固定、指令密度適中、控制單元簡單的類似RISC指令集,本文自定義指令集,該指令集僅有20條指令,尋址方式簡單。每條指令的字長都是16位,包含足夠的信息:指令操作碼,源操作數(shù)地址,目的操作數(shù)地址,立即數(shù)13-14。1、 指令集表1 是本文所涉及的CPU所有指令的一個集合指令名稱指令操作影響標(biāo)志位周期算術(shù)與邏輯類指令A(yù)DD R1,R2Add Two RegisterC1SUB R1,R2Sub Two RegisterZ1AND R1,R2And Two Regis

20、terZ1OR R1,R2Or Two RegisterZ1位操作指令LSL R1Logical Shift LeftNone1LSR R1Logical Shift RightNone1數(shù)據(jù)傳送類指令MOV R1,#IIMove Between RegisterNone1LD R1Load Immediate from RegisterNone1SD R1Store Result to RegisterNone1停機(jī)指令SLEEPSleep(Wait for )NoneAny2、尋址方式本文指令系統(tǒng)的尋址方式為下面兩種直接尋址方式:(1) 單一寄存器尋址。操作數(shù)在目的寄存器;(2) 雙寄存器

21、尋址。操作數(shù)分別在目的寄存器和源操作寄存器中。3、指令格式定義正如以前所提到的,RISC總是有固定長度以便于譯碼。對設(shè)計(jì)的微處理,每個指令都是固定的16位長度,其中操作碼占用16 位指令字的高4 位。所有的指令碼都很容易譯碼。對兩個寄存器的指令,d選擇目的寄存器,:r選擇源寄存器,4位可以尋址16個寄存器,這種指令格式包括ADD,SUB,AND,OR。1514131211109876543210rrrrdddd對于僅需要一個寄存器的指令,d用來尋址目標(biāo)寄存器。這種指令格式包括LD,LSL,LSR指令。1514131211109876543210dddd對于立即數(shù)指令,指令中間8位是8位常數(shù),其

22、中H 代表常數(shù)的高四位,L代表常數(shù)的低四位,d用來尋址目的寄存器。這種指令格式包括MOV,SD。1514131211109876543210LLLLHHHHdddd4、指令編碼 確定了指令的格式,就可以對指令進(jìn)行編碼,這樣指令就有唯一的身份識別。指令編碼結(jié)果如表2所示。 表2 指令編碼指令類型指令機(jī)器碼ADD0001 0000r r r rd d d dSUB0010 0000r r r rd d d dAND0011 0000r r r rd d d dOR0100 0000r r r rd d d dLSL0101 00000000 d d d dLSR011000000000d d d

23、dMOV0111LLLLHHHHd d d dST100000000000d d d dLD100100000000d d d dSLEEP10110000000000002.3 指令時序分析2.3.1 RISC與流水線指令的執(zhí)行分成兩個階段:取指階段和執(zhí)行階段。在取指階段,指令機(jī)器碼被取到指令寄存器,控制單元通過譯碼知道這是個什么樣的指令,需要執(zhí)行什么樣的操作,需要什么操作數(shù);在執(zhí)行階段當(dāng)前指令以及取指完畢,上一條指令被執(zhí)行。這樣按順序第1條指令執(zhí)行完再取第2條指令,第2條執(zhí)行完在取第3條指令的順序執(zhí)行方式執(zhí)行一條指令最少需要兩個時鐘周期,如果執(zhí)行10條指令那么就得需要10個時鐘周期,顯然這

24、樣指令的執(zhí)行效率不高。為了解決這個問題,本次設(shè)計(jì)中引入了流水線(pipeline)操作。8位CPU采用兩級流水線技術(shù),指令的流水線可以用圖2-4來簡單的示意:圖2-4 流水線指令執(zhí)行由圖可以看出,盡管每條指令的完成需要兩個周期的時間,但是在流水線結(jié)構(gòu)中,當(dāng)前指令的取值周期和上一條指令的執(zhí)行周期在時間上是重疊的,對于這種并行操作,從平均角度來看,相當(dāng)于一個周期內(nèi)完成一條指令,因此可以大大提高指令的運(yùn)行速度15。RISC架構(gòu)的處理器,每條指令有固定的長度,指令格式只有簡單的幾種,指令功能不交叉,尋址方式也簡單,所以更加有利于實(shí)現(xiàn)流水結(jié)構(gòu)。為了降低執(zhí)行每條指令所需時鐘數(shù),本文也采用兩級流水,其功能分

25、別定義為:第一級,取指;第二級,時鐘前半周期控制器譯碼、發(fā)出控制信號,時鐘后半周期進(jìn)行對寄存器堆TRAM進(jìn)行讀操作、ALU計(jì)算。這樣,很顯然也能降低執(zhí)行指令所需的時鐘數(shù),取指、執(zhí)行只用了一個時鐘。在時鐘上升沿PC產(chǎn)生進(jìn)入PCRAM的地址,由于PCRAM 有反應(yīng)時間,經(jīng)過一段很短的時間讀出指令,在下一個時鐘上升沿到來時,指令寄存器鎖存指令,然后開始對指令進(jìn)行譯碼,并產(chǎn)生操作數(shù)、目的存儲器寄存器地址、寫信號及各種控制信號。2.3.2 程序計(jì)數(shù)器與流水線程序計(jì)數(shù)器(PC)是程序中尋址取得指令的特殊單元。正是靠PC的移動,CPU才能一條一條的執(zhí)行指令。同時,程序計(jì)數(shù)器也是和流水線密切相關(guān)的單元。在程序

26、開始執(zhí)行前,CPU將它的起始地址送入PC,當(dāng)指令執(zhí)行時,CPU 將自動修改PC 的內(nèi)容,所以PC中的內(nèi)容總是下一條指令的地址。由于指令通常是順序執(zhí)行的,所以修改的過程通常只是簡單的PC加1。表2說明了在引入流水線后PC的具體工作情況:表3 指令執(zhí)行中PC值的變化情況時鐘周期Reset周期1周期2周期3周期4PC0 1234第一條指令讀取指令0執(zhí)行指令0第二條指令讀取指令1執(zhí)行指令1第三條指令讀取指令2執(zhí)行指令2表3表明,在系統(tǒng)復(fù)位時,PC內(nèi)的值清0,第一個時鐘周期,指令寄存器取PC為0的地址的指令,同時PC的值加1;第二個時鐘周期,執(zhí)行0地址的指令,同時讀取地址1的指令,同時PC的值加1;第三

27、個時鐘周期,重復(fù)這樣的過程。這樣可以得到結(jié)論:如果當(dāng)前CPU正在執(zhí)行的是第N條指令,那么指令寄存器正在讀取的是N+1條指令,此時PC的值應(yīng)該是N+2。2.4 CPU整體結(jié)構(gòu)即設(shè)計(jì)思想在設(shè)計(jì)CPU 之前整個結(jié)構(gòu)的特性及由哪些模塊組成,這些模塊之間的互連關(guān)系以及整個CPU的最后輸出信號等都是要事先定義好的.。2.4.1 CPU的外部引腳規(guī)劃從CPU外部看整個輸入輸出如圖2-5圖2-5 CPU外部引腳信號該CPU有5個輸入引腳,1個結(jié)果輸出端口以及一個運(yùn)算溢出信號。系統(tǒng)的時鐘信號將直接驅(qū)動驅(qū)動整個CPU。WR信號是系統(tǒng)的異步指令輸入信號,高電平有效。當(dāng)WR信號有效時,整個CPU進(jìn)入指令輸入狀態(tài),當(dāng)W

28、R低電平時CPU進(jìn)入指令讀取并完成指令操作的狀態(tài),當(dāng)CPU完成全部輸入指令時進(jìn)入停機(jī)狀態(tài),此時Start信號重新啟動CPU,使其進(jìn)入等待狀態(tài)。2.4.2 CPU的整體框圖系統(tǒng)的頂層結(jié)構(gòu)模塊圖如圖2-6圖2-6 系統(tǒng)的頂層結(jié)構(gòu)模塊圖該模塊包含了系統(tǒng)的主要模塊及它們之間的連接關(guān)系。圖中的一個一個的模塊代表了各個功能模塊,將在下面的章節(jié)中分別做詳細(xì)的設(shè)計(jì)說明。每個模塊都將按照EDA設(shè)計(jì)中自下而上的設(shè)計(jì)原則分別獨(dú)立設(shè)計(jì)。有些模塊是比較簡單的像指令寄存器(IR),有些模塊則是比較難的像ALU模塊和控制單元模塊。 在設(shè)計(jì)微處理器的功能模塊之前,需要決定如何邏輯實(shí)現(xiàn)和處理器鎖存數(shù)據(jù)。微處理器中有兩種不同的邏

29、輯元件:(1) ALU、MUX、CONCROL單元的元件都是組合邏輯電路。它們的輸出僅僅依賴于當(dāng)前的輸入狀態(tài),沒有內(nèi)部存儲功能;(2) 寄存器堆、臨時寄存器都是狀態(tài)單元,它的輸出不僅依賴于輸入,還有其自身內(nèi)部的狀態(tài)。時鐘用來決定狀態(tài)何時被寫入,一個狀態(tài)可以在任意時刻讀取。微處理器的時鐘采用邊沿觸發(fā)的方式,整個系統(tǒng)采用單時鐘電路,即提供一個系統(tǒng)時鐘,每當(dāng)時鐘邊沿到來的時候,向狀態(tài)單元寫入數(shù)據(jù)。整個系統(tǒng)可以分為兩個單元:取指單元,執(zhí)行單元。取指單元負(fù)責(zé)取下條指令,執(zhí)行單元負(fù)責(zé)執(zhí)行當(dāng)前指令。取指單元和執(zhí)行單元共同構(gòu)成了CPU的微控制單元。取指單元的第一個模塊是程序計(jì)數(shù)器(PC),PC中是下條要執(zhí)行的

30、指令的地址,它是指向程序存儲器單元(PROM)來尋址指令的??刂颇K是對從指令寄存器(IR)送出指令進(jìn)行譯碼從而發(fā)出適當(dāng)?shù)目刂菩盘枅?zhí)行程序的。系統(tǒng)中包括了很多寄存器的設(shè)計(jì)包括指令寄存器(IR),程序計(jì)數(shù)器(PC),這些寄存器大都在我們頂層可見的模塊的內(nèi)部,系統(tǒng)的工作也可以看作就是數(shù)據(jù)在這些寄存器之間的“遷移”,也即寄存器內(nèi)容的遷移。微處理器的功能就是體現(xiàn)在這些這些數(shù)據(jù)是如何傳遞的,在傳遞前的處理是如何處理的,所有這一系列寄存器數(shù)據(jù)之間的遷移轉(zhuǎn)換就組成了微處理器。2.4.3 CPU結(jié)構(gòu)的層次劃分正確合理的劃分系統(tǒng)是所有數(shù)字系統(tǒng)設(shè)計(jì)成功的關(guān)鍵。子系統(tǒng)的劃分過程就是把總體任務(wù)劃分程若干分任務(wù)的過程。

31、本設(shè)計(jì)將CPU分解為兩大子系統(tǒng):數(shù)據(jù)通路和控制通路。這種劃分將CPU的運(yùn)算、執(zhí)行單元與控制部件分離開,是非常合理、自然的。數(shù)據(jù)通路和控制通路這兩大部分又可以細(xì)化為更小的模塊,ALU模塊(算術(shù)邏輯單元)、PC_RAM模塊(程序存儲器)和IR(指令寄存器)、TRAM(寄存器堆)屬于數(shù)據(jù)通路部分,ALU內(nèi)部又包含更小的模塊(加、減、與、或、移位模塊);控制模塊屬于控制通路部分,其中控制模塊又由FSM(狀態(tài)機(jī))和CONTROL(控制器)構(gòu)成。具體的模塊功能實(shí)現(xiàn)將在下面兩章中詳細(xì)介紹。第三章 CPU數(shù)據(jù)通路設(shè)計(jì)從這一章開始將詳細(xì)介紹整個CPU的細(xì)化設(shè)計(jì)模塊。通過上一章對CPU的結(jié)構(gòu)劃分,已經(jīng)知道CPU的

32、整個設(shè)計(jì)分為兩個部分:數(shù)據(jù)通路和控制單元。在這一章中將細(xì)分?jǐn)?shù)據(jù)通路模塊,數(shù)據(jù)通路是CPU中的執(zhí)行部件,數(shù)據(jù)傳輸、存儲、處理都是在數(shù)據(jù)通路中完成的。在整個CPU的結(jié)構(gòu)框圖中,除了控制單元部分,其余部分都是數(shù)據(jù)通路部分,包括程序計(jì)數(shù)器PC、程序存儲器PC_RAM、指令寄存器IR、寄存器堆TRAM、數(shù)據(jù)選擇器ALUMUX和算術(shù)與邏輯單元ALU。設(shè)計(jì)數(shù)據(jù)通路,有兩種不同的設(shè)計(jì)方案。第一種是在所有需要傳送數(shù)據(jù)的部件創(chuàng)建一條直接通路,采用多路選擇器或者緩沖器為那些有多個數(shù)據(jù)源的寄存器從多個可能的輸入中選擇一個,這種方案適用于規(guī)模比較小的微處理器設(shè)計(jì)。另一種方案是在微處理器內(nèi)部創(chuàng)建一條總線,并且在各個部件之

33、間使用總線傳數(shù)據(jù)。本設(shè)計(jì)采用的是第一種方案的設(shè)計(jì)方法。下面將一一介紹數(shù)據(jù)通路的各個模塊功能及其實(shí)現(xiàn)。3.1 程序計(jì)數(shù)器模塊PC程序計(jì)數(shù)器(PC)作為指向指令地址“指針”,決定著下一條要執(zhí)行的指令。正是有了PC的移動和變化,CPU才能按一定的順序或預(yù)想的情況進(jìn)行指令的執(zhí)行。程序計(jì)數(shù)器PC中存放指令存儲器的地址,當(dāng)一條指令被執(zhí)行時,程序計(jì)數(shù)器存放下一條指令的地址。在正常工作的條件下,控制信號選擇PC+1作為下一個PC的值輸出;當(dāng)執(zhí)行JMP指令時,選擇來自指令中的跳轉(zhuǎn)地址決定新的PC值,但是在本次設(shè)計(jì)中沒有涉及到。圖3-1 PC模塊外部接口信號圖3-1所示是從外部看的PC模塊的接口。其中輸出的PC是

34、8BitS寬的,因此PC模塊可以尋址獨(dú)立的256個單元。PC_OUT地址輸出信號是直接與程序存儲器PCRAM相連的。PC_INC控制信號來自控制單元,若PC_INC有效則PC將執(zhí)行加1操作。EN信號是程序計(jì)數(shù)器PC的使能控制信號,只有當(dāng)該信號有效時PC的相應(yīng)才能操作才能執(zhí)行。3.2 程序存儲器PC_RAM程序存儲器是存儲微處理器程序,即能執(zhí)行特定功能的一組指令組合。圖3-2顯示了程序存儲器的結(jié)構(gòu)圖。圖3-2 程序存儲器示意圖在設(shè)計(jì)程序存儲器模塊時,本文是自行設(shè)計(jì)寄存器堆型的存儲器,直接使用一個數(shù)組存放二進(jìn)制數(shù)據(jù),通過 VHDL 編寫一個一定長度的數(shù)組實(shí)現(xiàn)。因?yàn)槌绦蛴?jì)數(shù)器可以尋址到256條指令,

35、所以程序存儲器也必需可以至少存放 128 條16 位的指令,這樣只需申請一個變量 Ram,有256個元素,每個元素16 位即可。第一個數(shù)組元素下標(biāo)表示存貯器的0 號地址,第二個數(shù)組元素下標(biāo)表示1 號地址,以此類推至第256個數(shù)組元素的下標(biāo),即11111111 號存貯器地址。程序存儲器是一個可讀可寫的模塊,其輸入端口接入外圍程序和地址輸入端口,由 WR 異步控制其讀寫狀態(tài),WR 高電平有效。當(dāng) WR 有效時,程序存儲器為寫狀態(tài),即將輸入程序存入其輸入地址對應(yīng)的存儲單元中, 即執(zhí)行操作 ram(conv_integer(waddr) = wdata;當(dāng) WR 為低電平時,程序存儲器處于讀狀態(tài),其將

36、程序計(jì)數(shù)器輸出地址 PC_OUT上 對應(yīng)的存儲單元中的指令輸出,即執(zhí)行操作instruction = ram(conv_integer(pc_in)。這樣就可以通過存貯器數(shù)組元素和輸入地址間的相互賦值實(shí)現(xiàn)“讀存儲器”,“寫存儲器”,既簡單又容易實(shí)現(xiàn)。圖3-3程序存儲器外部接口信號程序存儲器模塊的外部接口信號如圖3-3所示,其中讀狀態(tài)地址來自PC模塊,輸出指令直接送往指令寄存器模塊,寫狀態(tài)地址來自CPU輸入地址,寫入指令存儲到對應(yīng)地址單元中。3.3 指令寄存器模塊指令寄存器在時鐘上升沿鎖入從程序存儲器PC_RAM中讀取的指令,并保持到時鐘的下一個上升沿,一條指令的執(zhí)行從指令寄存器鎖入指令開始。所

37、以指令寄存器的作用是暫時存放取到的指令,是從程序存儲器到控制單元和ALU模塊中的中間緩沖模塊。通過上一章的流水線分析部分、指令時序分析部分和程序存儲器模塊分析部分可以得到,在指令寄存器模塊中,當(dāng)前存放的并不是CPU正在執(zhí)行的指令,而是下一條指令。同樣道理可知,送入控制單元并進(jìn)行指令譯碼也是下一條指令。這是由兩級流水線的架構(gòu)決定的,在兩級流水線中,CPU在執(zhí)行當(dāng)前指令的同時指令寄存器取到下一條指令,并且控制器將下一條指令進(jìn)行譯碼。圖3-4指令寄存器外部接口圖3-4所示,指令寄存器的指令流向是:4位操作碼IR指令送往控制單元已做譯碼使用,而根據(jù)不同指令分離出來的要操作的立即數(shù)DATA、源操作寄存器

38、RR、目的操作寄存器RD送到寄存器堆TRAM模塊。指令寄存器外部輸入控制信號en是來自控制單元的輸入信號,En高電平有效,與PC模塊的使能en信號功能上基本一致,它控制著指令寄存器是否可以從程序存儲器中加載指令。當(dāng)en有效時指令寄存器才能更新來自程序存儲器的指令。3.4 時鐘發(fā)生器模塊時鐘發(fā)生器TIME_CTRL利用時鐘信號CLK生成從時鐘信號CLKR,并送往CPU的寄存器堆TRAM中,作為其進(jìn)行讀寫操作的時鐘信號。CLKR是將CLK延遲半個周期產(chǎn)生的,有利于流水線的完成。時鐘發(fā)生器的外部接口如圖3-5。圖3-5 時鐘發(fā)生器的外部接口3.5 寄存器堆TRAM 寄存器堆與程序存儲器設(shè)計(jì)相同,都是

39、直接使用一個數(shù)組存放二進(jìn)制數(shù)據(jù),通過 VHDL 編寫一個一定長度的數(shù)組實(shí)現(xiàn),同樣可以通過集成器數(shù)組元素和輸入地址間的相互賦值實(shí)現(xiàn)“讀存儲器”,“寫存儲器”。在本次CPU設(shè)計(jì)中TRAM模塊用以完成以下幾個操作:1、 將立即數(shù)寫入指定寄存器中。2、 將指定目的操作寄存器地址中的數(shù)據(jù)讀出并輸出。3、 將指定源操作寄存器地址中的數(shù)據(jù)讀出。 圖3-6 寄存器堆TRAM外部接口 如圖12所示,fclkr時鐘信號是來自時鐘發(fā)生器,控制寄存器是否能進(jìn)行讀寫操作。在CPU時鐘的前半周期,控制器進(jìn)行譯碼并發(fā)出控制信號,為操作的施行鋪好路,在時鐘的后半周期,也就是從時鐘信號fclkr的上升沿,TRAM在控制信號ra

40、m _ctrl、load、store的控制下進(jìn)行讀寫操作。If (rising_edge(fclkr) then If (fstore =1) then ram (conv_integer(fromrd)=fR0 /存儲上條指令運(yùn)算得到的結(jié)果 elsif (fromram_ctrl = 11) thentoreg_rr=ram(conv_integer(fromrr); toreg_rd=ram(conv_integer(fromrd); /將指定寄存器的值輸出 elsif (fromram_ctrl = 01) then ram (conv_integer(fromrd)=value2; /

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

42、相應(yīng)的操作。ALU整體框圖如圖37所示。圖3-7 ALU整體結(jié)構(gòu)圖算術(shù)邏輯單元ALU 是絕大多數(shù)指令必須經(jīng)過的單元,所有的運(yùn)算都在ALU 中完成。取操作數(shù)單元在數(shù)據(jù)選擇的控制信號控制下,可以選取一個或者兩個操作數(shù)輸入執(zhí)行單元。在執(zhí)行運(yùn)算單元中,根據(jù)指令的類型對兩個或一個8位輸入數(shù)據(jù)進(jìn)行運(yùn)算。4 位算術(shù)控制輸入信號alu_ctrl決定兩個輸入數(shù)據(jù)的算術(shù)操作類型,可以有16 種不同的功能組合。2位邏輯控制輸入信號Logic決定一個輸入數(shù)據(jù)的邏輯操作類型,可以有4種不同的功能組合。在ALU的設(shè)計(jì)中主要還是根據(jù)指令來的,ALU所能執(zhí)行的指令是很多的,基本的指令可以分為4類,即ADD,SUB,LOGIC

43、,LSL、LSR。指令A(yù)DD分為不帶進(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)算功能,并輸出溢出信號。Process (a1, b1, fromalu_ctrl , fromlogic) Begin case fromalu_ctrl is end case; case fromlogic is end case;end process;Pro

44、cess (clk) begin if (rising_edge(clk) then if fouten =0 then R=ZZZZZZZZ; elsif fload =0 then R=r1(7 downto 0); else R=a1(7 downto 0); 由這段代碼可以看出ALU模塊是雙進(jìn)程模塊,操作數(shù)運(yùn)算是不受時鐘控制的,由控制信號直接控制并計(jì)算。但是結(jié)果輸出是在下一個時鐘信號的上升沿進(jìn)行的,這樣可以控制輸出的時間,保證其輸出正確,而且輸出控制信號outen控制CPU是否輸出數(shù)據(jù),若outen控制信號有效,則再判斷需要輸出何種類型的數(shù)據(jù),若load控制信號有效則將輸入數(shù)據(jù)直接輸出

45、,完成從指定寄存器讀出數(shù)據(jù)的操作,若無效則將算術(shù)或邏輯運(yùn)算的結(jié)果輸出。ALU模塊外部接口如圖3-9所示。圖3-11 ALU模塊外部接口第四章 CPU控制單元的設(shè)計(jì)在CPU中還有一個重要的模塊,即控制單元模塊,其功能是得到當(dāng)前指令,得到需要的數(shù)據(jù),在正確的時間、用正確的值設(shè)置所有相關(guān)的控制信號,控制CPU的取指、譯碼和指令執(zhí)行等操作。因此這個模塊在整個CPU的設(shè)計(jì)中是最關(guān)鍵的也是最難精準(zhǔn)實(shí)現(xiàn)的模塊。流水線操作和數(shù)據(jù)通路各個模塊的所有控制信號都是來自控制單元??刂茊卧淖饔镁褪菍χ噶钭g碼,在不同的狀態(tài)發(fā)出不同的控制信號來處理流水線過程,另一方面在合適的時間對數(shù)據(jù)通路發(fā)出正確的控制信號來控制指令的正

46、確執(zhí)行。為了實(shí)現(xiàn)控制模塊的功能,可以將該模塊細(xì)化為兩個部分,即控制指令操作的控制器和控制狀態(tài)轉(zhuǎn)換的有限狀態(tài)機(jī)(FSM)。4.1 控制器Control模塊控制器則是一個微處理器的核心部件之一,在每一個時鐘周期的上升沿,指令寄存器IR 從內(nèi)存中讀取指令字后,送入控制器中,控制器能夠根據(jù)輸入的4位操作碼進(jìn)行譯碼,為其他每個功能單元產(chǎn)生相應(yīng)的主控制信號,并發(fā)出信號狀態(tài)信號控制狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換,最終實(shí)現(xiàn)對CPU各個功能單元的控制,實(shí)現(xiàn)指令的順利執(zhí)行。圖4-1 控制器Control外部接口控制器根據(jù)4位操作碼IR進(jìn)行譯碼,通過指令譯碼給出其它各單元的操作控制信號,包括ALU 單元的算術(shù)和邏輯運(yùn)算控制信號、

47、移位控制信號,操作數(shù)輸入選擇信號、結(jié)果輸出信號,TRAM 的讀寫控制、送入狀態(tài)機(jī)得停機(jī)控制信號。4.2 有限狀態(tài)機(jī)FSM模塊4.2.1 有限狀態(tài)機(jī)狀態(tài)機(jī)是CPU的又一個控制核心部件,是實(shí)現(xiàn)高效率高可靠邏輯控制的重要途徑,用于產(chǎn)生一系列的控制信號,啟動或停止某些部件。程序計(jì)數(shù)器PC值的改變、指令寄存器取指令以及CPU的復(fù)位等操作都是由狀態(tài)機(jī)來控制的。狀態(tài)機(jī)FSM的當(dāng)前狀態(tài),由變量state記錄。從狀態(tài)機(jī)的信號輸出上分,有Moore型和Mealy型兩種狀態(tài)機(jī)。從輸出時序上看,前者屬于同步狀態(tài)機(jī),而后者屬于異步狀態(tài)機(jī)。Mealy型狀態(tài)機(jī)的輸出是當(dāng)前狀態(tài)和所輸入信號決定的,它的輸出是在輸入變化后立即發(fā)

48、生的,不依賴時鐘的同步16。Moore型狀態(tài)機(jī)的輸出則僅由當(dāng)前狀態(tài)控制,這類狀態(tài)機(jī)在輸入發(fā)生變化還必須等待時鐘的到來,時鐘使?fàn)顟B(tài)發(fā)生變化時才導(dǎo)致輸出變化。在本次CPU設(shè)計(jì)中,將采用Mealy型狀態(tài)機(jī)來實(shí)現(xiàn)時序和狀態(tài)的轉(zhuǎn)換。在整個CPU的狀態(tài)機(jī)中共設(shè)計(jì)了3個狀態(tài):執(zhí)行(exe),待機(jī)(sp),停機(jī)(tj)。圖16是各個狀態(tài)的狀態(tài)轉(zhuǎn)移圖。圖4-2 狀態(tài)轉(zhuǎn)移圖4.2.2 利用的VHDL語言進(jìn)行狀態(tài)機(jī)描述本次設(shè)計(jì)采用2個進(jìn)程模塊,一個模塊用同步時序描述狀態(tài)轉(zhuǎn)移;另一個模塊用組合邏輯判斷狀態(tài)的邏輯輸出,其VHDL代碼如下:process (clk,wr,input,start)begin /第一個進(jìn)程模

49、塊用同步時序描述狀態(tài)轉(zhuǎn)移if wr = 1 thenstate / 利用case語句對每一個狀態(tài)建立一項(xiàng)case語句的分支 If input =1 thenstate = tj;elsestate when tj = end case;end if;end process;process (state)begin /第二個模塊用組合邏輯判斷狀態(tài)的邏輯輸出case state is /當(dāng)狀態(tài)發(fā)生改變時,利用case語句輸出對應(yīng)狀態(tài)的信號when exe =when sp =when tj =end case;end process;第五章 RISC CPU的仿真驗(yàn)證5.1 各模塊的組合前面兩章將

50、CPU細(xì)化為多個功能模塊,為了使其能集合成一個完整的系統(tǒng)共同完成特定的功能執(zhí)行,各個模塊就需要組合起來配合工作。在構(gòu)建頂層文件的方法有語言描述和原理圖法。原理圖法就是將CPU中的每個綜合模塊以元件的形式,通過互連線將各個模塊像電路上畫原理圖一樣連接起來,系統(tǒng)規(guī)模比較大時,各個模塊連起來的互連線很多,操作起來很不方便,同時也容易出錯。在本次設(shè)計(jì)中由于各個模塊的互連信號比較多,所以將采用硬件語言描述的方法將各個模塊連接起來,即用VHDL語言將各個模塊組合起來從而形成一個最頂層的模塊。用VHDL語言引用一個模塊時是先用component來聲明這個模塊,模塊的接口要用port關(guān)鍵詞聲明,例如對程序計(jì)數(shù)

51、器模塊的引用聲明如下:COMPONENT pc IS PORT ( clk ,fen: IN STD_LOGIC ; fromnrst : IN STD_LOGIC ; frompc_inc : IN STD_LOGIC ; pcout : out unsigned(7 downto 0) ) ; END COMPONENT pc;對程序計(jì)數(shù)器模塊的聲明后再對該模塊的引用,引用時用的關(guān)鍵詞是 PORT MAP,通過如下程序段完成模塊引用: U1: pc PORT MAP (clk = clk,fen = en,fromnrst = nrst,frompc_inc = pc_inc, pcout

52、 = pc_out);各個模塊間的互連信號是用用signal類型的變量聲明的。SIGNAL en, nrst ,clkr: STD_LOGIC; SIGNAL outen :STD_LOGIC;將所有的功能模塊組合連接起來就成為一個整體,作為整個仿真的頂層模塊。5.2 綜合RTL電路圖利用硬件語言法構(gòu)建好頂層文件,把所有模塊組裝成了一個整體,在對這個整體進(jìn)行編譯和綜合成功后即可對它進(jìn)行功能仿真。用QUARTUSII對設(shè)計(jì)模塊進(jìn)行編譯及綜合后生成的RTL綜合電路圖如圖51示。圖51 RTL綜合電路圖綜合后的電路結(jié)構(gòu)由程序計(jì)數(shù)器PC模塊、程序存儲器PC_RAM模塊、指令寄存器IR_RAM模塊、寄存器堆TRAM模塊、數(shù)據(jù)選擇器ALUMUX模塊、運(yùn)算器ALU模塊、控制器CONTROL模塊、狀態(tài)機(jī)FSM模塊和時鐘發(fā)生器TIME_CTRL模塊組成。各模塊的輸出信號說明如表4所示。表4 各模塊引腳說明模塊產(chǎn)生信號功能程序計(jì)數(shù)器PCPC_OUT送入PC_RAM中提取對應(yīng)地址指令程序存儲

溫馨提示

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

評論

0/150

提交評論