2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  本科畢業(yè)論文</b></p><p><b> ?。?0 屆)</b></p><p>  EDA嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊</p><p>  所在學(xué)院 </p><p>  專業(yè)班級

2、 電子信息工程 </p><p>  學(xué)生姓名 學(xué)號 </p><p>  指導(dǎo)教師 職稱 </p><p>  完成日期 年 月 </p><p><b>  誠 信 聲 明<

3、;/b></p><p>  我聲明,所呈交的論文是本人在老師指導(dǎo)下進(jìn)行的研究工作及取得的研究成果。據(jù)我查證,除了文中特別加以標(biāo)注和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得______或其他教育機(jī)構(gòu)的學(xué)位或證書而使用過的材料。我承諾,論文中的所有內(nèi)容均真實、可信。</p><p>  論文作者簽名: 簽名日期: 年 月

4、日</p><p><b>  授 權(quán) 聲 明</b></p><p>  學(xué)校有權(quán)保留送論文交的原件,允許論文被查閱和借閱,學(xué)??梢怨颊撐牡娜炕虿糠謨?nèi)容,可以影印、縮印或其他復(fù)制手段保存論文,學(xué)校必須嚴(yán)格按照授權(quán)對論文進(jìn)行處理,不得超越授權(quán)對論文進(jìn)行任意處置。</p><p>  論文作者簽名: 簽名日期:

5、年 月 日</p><p>  EDA嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊</p><p><b>  摘 要</b></p><p>  基于自主設(shè)計的FPGA---SP6開發(fā)板的綜合模塊設(shè)計。本論文主要介紹一款采用自定義指令集的16位RISC MCU的設(shè)計與實現(xiàn)。采用硬件描述語言VHDL進(jìn)行RTL級描述,自頂向下流程和模塊化的方法進(jìn)

6、行設(shè)計。整體上分為5級流水:取指、譯碼、執(zhí)行、存儲、回寫。可以執(zhí)行算術(shù)運算、邏輯運算、讀寫存儲器、IO口操作。設(shè)計了16級堆棧,可實現(xiàn)函數(shù)多級調(diào)用。該RISC CPU采用哈佛結(jié)構(gòu),有效的避免了流水線中的結(jié)構(gòu)冒險。分析了該設(shè)計中的流水線所遇到的冒險問題,采取了一定的解決方案。并使用仿真工具M(jìn)odelsim對個別模塊進(jìn)行了前、后仿真,ISE軟件綜合布局布線,并在Xilinx Spartan6 LX9芯片上經(jīng)過驗證。實現(xiàn)簡易計算器效果。<

7、;/p><p>  關(guān)鍵詞:FPGA,spartan6,綜合模塊,RISC,流水線,VHDL,EDA案例設(shè)計</p><p>  The case design Based on embedded experimental board of EDA---Integrated design</p><p><b>  Abstract</b><

8、;/p><p>  The Integrated design based on the FPGA experimental board which desi- gned by ourself. This paper mainly introduces the principle and implementation</p><p>  of a 16

9、bit RISC  MCU with  self-defined instruction set. Using a hardware description language VHDL to RTL description, top-down flow and modular de-sign. On the whole the CPU is divided i

10、nto five levels pipeline : Instruction Fetch, Instruction Decode,execution,Memory Access, Write Back.You can perform arithmetic, logic, read and write memory,IO operation. The design have&#

11、160;16  level stack which can realize the function of  Nested functions.The RISC CPU adop-te  the Harvard structure, effec</p><p>  Keywords: FPGA,spartan6,integrated modul

12、es,RISC,pipeline,VHDL</p><p><b>  目錄</b></p><p><b>  摘 要III</b></p><p>  AbstractIV</p><p><b>  目錄V</b></p><p><

13、b>  1 緒論7</b></p><p>  1.1課題的來源7</p><p>  1.2課題的意義7</p><p>  1.3 FPG案例開發(fā)國內(nèi)外發(fā)展現(xiàn)狀8</p><p>  1.4 RISC CPU國內(nèi)外發(fā)展現(xiàn)狀9</p><p>  1.5課題研究的主要內(nèi)容9</p&

14、gt;<p>  2方案設(shè)計與總體設(shè)計10</p><p>  2.1 RISC CPU的方案設(shè)計10</p><p>  2.2方案評價10</p><p>  2.3 流水線11</p><p>  2.3.1 流水線的簡單介紹11</p><p>  2.3.1 流水線的冒險分析及處理

15、12</p><p>  2.4 RISC CPU的總體設(shè)計14</p><p>  3 FPGA設(shè)計17</p><p>  3.1 頂層模塊的設(shè)計17</p><p>  3.1.1 分頻模塊17</p><p>  3.1.2 程序存儲器18</p><p>  3.1.3 I

16、F/ID流水線寄存器18</p><p>  3.1.4 DEC解碼器19</p><p>  3.1.7 ID/EXE流水線寄存器22</p><p>  3.1.8 ALU算術(shù)邏輯單元:22</p><p>  3.1.9 EXM/MEM流水線寄存器23</p><p>  3.1.10 RAM數(shù)據(jù)存儲器

17、23</p><p>  3.1.12 多路選擇器24</p><p>  3.1.13 MEM/WB流水線寄存器24</p><p>  3.1.14 堆棧的設(shè)計:24</p><p>  3.1.15 控制器25</p><p>  3.2 整體測試25</p><p><

18、b>  結(jié)論26</b></p><p><b>  參考文獻(xiàn)27</b></p><p><b>  致謝28</b></p><p><b>  附錄29</b></p><p><b>  1 緒論</b></p>

19、;<p><b>  1.1課題的來源</b></p><p>  隨著計算機(jī)科技的發(fā)展,在計算機(jī)指令系統(tǒng)的發(fā)展與優(yōu)化過程中,出現(xiàn)了兩種不同的優(yōu)化方向,一個方向為CISC,另一個方向為RISC。CISC(復(fù)雜指令系統(tǒng)計算機(jī))是早期大多數(shù)微處理器所采用的體系,如摩托羅拉公司的68k系列和Intel公司的80x86等。早期的電腦所使用的是組合語言編程,價格昂貴記憶體速度又慢,這也是

20、CISC得以發(fā)展的一個重要原因。</p><p>  自20世紀(jì)70年代中期就職于IBM公司的John Cocke(約翰·科克,IBM的資深研究員,為IBM計算機(jī)市場的開拓和計算機(jī)科學(xué)技術(shù)的發(fā)展起到至關(guān)重要的作用)首先提出著名的28定律之后,這一理論得到了加州大學(xué)伯克利分校的D Patterson和斯坦福大學(xué)的J Hennessy關(guān)注,他們對此定律、想法作了進(jìn)一步研究,提出了一種有別于傳統(tǒng)CISC構(gòu)架的

21、新型計算機(jī)體系結(jié)構(gòu),即RISC構(gòu)架。RISC是一種新的芯片體系,目的是為了提高處理器運行的速度。并且它的關(guān)鍵在于流水線的操作,使得一個時鐘周期內(nèi)可以完成多條指令,這是提高處理速度的本質(zhì)原因。從20世紀(jì)80年初興起至今,RISC技術(shù)在計算機(jī)領(lǐng)域一直伴隨著其發(fā)展,尤其是在嵌入式微處理器方面,RISC體系結(jié)構(gòu)無論是在深度還是廣度上都得以充分的應(yīng)用。這些嵌入式微處理器在工業(yè)控制、無線網(wǎng)絡(luò)、多媒體處理等實時系統(tǒng)中被廣泛地應(yīng)用,并且扮演著重要的角色

22、[1]。</p><p>  FPGA現(xiàn)場可編程門陣列,憑借著其強(qiáng)大的功能和并行處理優(yōu)勢被稱為在CPU、DSP之后又一系統(tǒng)核心。FPGA直接操控邏輯門級,操控的層次更加深入,設(shè)計的自由度也更大,理論上只要FPGA里面的集成規(guī)模足夠大,它可以實現(xiàn)任何的數(shù)字系統(tǒng),當(dāng)然也包括單片機(jī)甚至是CPU,因此本文基于此用FPGA實現(xiàn)一個簡單的自制CPU。</p><p><b>  1.2課題的

23、意義</b></p><p>  數(shù)字電路的發(fā)展速度已經(jīng)是其他事物所不能比擬的,大容量并輔以高速度的可編程邏輯器件不斷的推陳出新,使得SOC(片上操作系統(tǒng))系統(tǒng)成為了新寵,它是將整個應(yīng)用電子系統(tǒng)集成在一塊面積相當(dāng)小的硅芯片上。另一方面,相應(yīng)公司所推出的各樣開發(fā)平臺越來越人性化,只要掌握一種硬件描述語言就能夠在較短的時間內(nèi)設(shè)計出較為復(fù)雜的電子系統(tǒng),這有利于縮短設(shè)計周期,加快產(chǎn)品的上市速度,給電子市場帶來

24、了巨大的變革。嵌入式系統(tǒng)由于其明顯的優(yōu)勢已經(jīng)在各行各業(yè)得到廣泛應(yīng)用,在軍事領(lǐng)域,醫(yī)療影像,數(shù)字通信,工業(yè)控制等方面都能看到嵌入式系統(tǒng)的身影。SOC模塊化設(shè)計的關(guān)鍵乃在于各類嵌入式核、IP模塊的實現(xiàn),而在這其中MCU核的設(shè)計占據(jù)了舉足輕重的地位,因為幾乎在所有的系統(tǒng)應(yīng)用中,都會以MCU為控制的核心[2]。RISC(Reduced Instruction Set Computer,精簡指令集計算機(jī))處理機(jī)經(jīng)常作為核心部件廣泛應(yīng)用于嵌入式系統(tǒng)

25、和SOC(System on Chip,片上系統(tǒng))等信息系統(tǒng)中,因此其設(shè)計技術(shù)也是集成電路設(shè)計領(lǐng)域的核心技術(shù)而受到廣泛重視[3]。</p><p>  RISC CPU與生活密切相關(guān),它已經(jīng)進(jìn)入消費電子的各個領(lǐng)域,ARM、MIPS、PowerPC等處理器都屬于RISC家族的一部分,在國際市場上RISC處理器占有巨大的份額,RISC的研發(fā)也是一個非常熱門的領(lǐng)域,只有理解RISC的原理才能更好地認(rèn)識和掌握已有的RIS

26、C架構(gòu)的處理器[4]。</p><p>  1.3 FPG案例開發(fā)國內(nèi)外發(fā)展現(xiàn)狀 </p><p>  近年來,電子設(shè)計自動化(EDA,Electronic Design Automatic)技術(shù)飛速發(fā)展,并已逐漸成為現(xiàn)代電子技術(shù)的核心。隨著EDA開發(fā)工具功能的不斷完善,使得現(xiàn)場可編程門陣列(FPGA,F(xiàn)ield Programmable Gate Array)技術(shù)得到廣泛的應(yīng)用,并成為當(dāng)

27、今電子設(shè)計領(lǐng)域中應(yīng)用最廣泛的可編程邏輯器件之一。由于FPGA具有編程靈活、設(shè)計周期短、可靠性高、開發(fā)費用低、風(fēng)險小等優(yōu)點,所以非常適合在實驗室中使用[5]。 </p><p>  由于傳統(tǒng)的電子實驗信息量少、效率低、可靠性差、針對性強(qiáng),已經(jīng)不能適應(yīng)電子技術(shù)的高速發(fā)展要求,因此,F(xiàn)PGA教學(xué)系統(tǒng)迅速發(fā)展起來。目前,國內(nèi)外很多大學(xué)都開始了相關(guān)的FPGA課程:加拿大多倫多大學(xué)早在80年代中期就投入到FPGA的教學(xué)研究當(dāng)

28、中,并公開了FPGA芯片的研究方法和相關(guān)的工具;美國斯坦福大學(xué)直接用Xilinx大學(xué)計劃提供的開發(fā)板進(jìn)行教學(xué)研究;麻省理工大學(xué)根據(jù)自身要求,開發(fā)出了一款基于Xilinx芯片的FPGA實驗板,供學(xué)生使用;伯克利大學(xué)的天文望遠(yuǎn)鏡系統(tǒng)采用FPGA技術(shù)分析搜集到的無線電,來判斷是否有外星人;亞利桑那大學(xué)也在硬件教學(xué)實驗中加入了FPGA和EDA的內(nèi)容。</p><p>  在國內(nèi),由于種種原因,F(xiàn)PGA的研究仍處于起步階段

29、,但是很多大學(xué)已經(jīng)開設(shè)了FPGA相關(guān)課程。它們主要是和Xilinx公司組建聯(lián)合實驗室,由Xilinx公司免費提供大量的FPGA開發(fā)平臺及套件,給學(xué)生進(jìn)行FPGA基礎(chǔ)教學(xué)實驗,比如浙江大學(xué)、清華大學(xué)、復(fù)旦大學(xué)等知名學(xué)府。隨著FPGA知識的普及, 大多數(shù)高校開始了從事FPGA應(yīng)用方面的研究,比如上海交通大學(xué)用FPGA做人臉識別的項目,西安交通大學(xué)用FPGA來做機(jī)器人,北京工業(yè)大學(xué)用FPGA給玩具做語音識別,天津工業(yè)大學(xué)用FPGA進(jìn)行信號傳輸

30、與處理,等等。</p><p>  1.4 RISC CPU 國內(nèi)外發(fā)展現(xiàn)狀 </p><p>  1964年CDC公司推出的CDC6600是第一個超級計算機(jī),具備了RISC的一些基本特征。1975年Cocke到IBM的Yorktown研究中心開始研制IBM 801,801是最早開始設(shè)計的RISC處理器,Cocke獲得了Eckert-Mauchly和Turing獎。 </p>

31、;<p>  經(jīng)過半個世紀(jì)的發(fā)展。目前,比較有影響的 RISC 處理器產(chǎn)品有 Compaq 公司的 Alpha,HP 公司的 PA-RISC,IBM 公司的 Power PC,MIPS 公司的 MIPS 和 Sun 公司的 Sparc。</p><p>  隨著我國信息化進(jìn)程的不斷推進(jìn),計算機(jī)技術(shù)還將對我國的生產(chǎn)力的發(fā)展產(chǎn)生日益深遠(yuǎn)的影響。近年來我國在CPU設(shè)計領(lǐng)域取得了一些重大突破,相繼研制出龍芯

32、系列、方舟系列高性能CPU,此外位于臺灣的威盛電子也是較大的處理器生產(chǎn)商。然而我國的CPU設(shè)計及制造技術(shù)與國外相比還有很大差距,我國信息產(chǎn)業(yè)中與 CPU 相關(guān)的許多核心技術(shù)及產(chǎn)品仍然主要依賴進(jìn)口,不僅經(jīng)濟(jì)上受制于人,而且信息系統(tǒng)的安全乃至國家安全也面臨威脅。FPGA 技術(shù)自20世紀(jì)80年代中期出現(xiàn)至今,引起了電子設(shè)計技術(shù)的深刻變革,也成為現(xiàn)代電子設(shè)計技術(shù)的核心。因此,基于FPGA技術(shù)的CPU設(shè)計具有較高的研究價值[6]。</p&g

33、t;<p>  1.5課題研究的主要內(nèi)容 </p><p>  本課題擬在FPGA開發(fā)板上設(shè)計一個RISC CPU,一個五級流水線的RISC CPU。設(shè)計包括主體設(shè)計,指令集設(shè)計,流水線冒險分析與解決,各功能模塊的簡要說明。最終實現(xiàn)一個簡單的計算器。</p><p>  1、流水線冒險分析及處理。</p><p>  2、設(shè)計五級流水的RISC CPU

34、。</p><p>  3、LCD12864顯示實驗。簡單計算器的實現(xiàn)。</p><p>  2方案設(shè)計與總體設(shè)計</p><p>  2.1 RISC CPU的方案設(shè)計</p><p>  圖 2-1 總體設(shè)計方案圖</p><p>  SOC包括硬件和軟件設(shè)計兩部分,在硬件設(shè)計中,一般采用Top-down的流程

35、進(jìn)行設(shè)計,將系統(tǒng)按功能進(jìn)行劃分,在確定各個模塊的功能后,開始編寫代碼實現(xiàn)相應(yīng)的功能,并進(jìn)行功能驗證,當(dāng)所有模塊的功能符合要求后,依據(jù)頂層總體設(shè)計框圖,將各功能模塊連接起來,最后通過軟硬件的協(xié)同調(diào)試,證明系統(tǒng)功能的完備性[8]。</p><p><b>  2.2方案評價</b></p><p><b>  一、CPU的選取</b></p&g

36、t;<p>  方案一:選用8位的字長,數(shù)據(jù)總線為8位。數(shù)據(jù)處理的能力較弱,性能較差,資源占有率較小。</p><p>  方案二:選用16位的字長,數(shù)據(jù)總線為16位。數(shù)據(jù)處理的能力較強(qiáng),性能較好,資源占有率適中。</p><p>  方案三:選用32位的字長,數(shù)據(jù)總線為32位。數(shù)據(jù)處理的能力最強(qiáng),性能最好,資源占有率較大。</p><p>  通過比

37、較三個方案的特點,最終選用16位CPU。</p><p><b>  二、指令的選取</b></p><p>  方案一:選用已有的指令集,比如ARM指令集或MIPS指令集。采用已有的指令集可以直接使用現(xiàn)成的編譯環(huán)境,指令比較豐富、全面。但是部分指令較為復(fù)雜,不易實現(xiàn),或能被別的指令組合代替,有一定的局限性。</p><p>  方案二:選用自

38、定義指令集,即選取最常用的指令。針對具體的功能,設(shè)計指令集。這種方式實現(xiàn)起來比較方便,編程能夠做到心中有數(shù)。</p><p>  通過比較兩種方案的特點,最終選用自定義指令集。</p><p><b>  三、指令長度的選定</b></p><p>  方案一:選用固定的指令長度。一般的CPU的指令長度都是固定的,如8位、16位、32位等。這些

39、指令長度都是8的倍數(shù),這樣便于數(shù)據(jù)存儲在數(shù)據(jù)存儲器中,也便于地址對齊。但使用固定指令長度,CPU設(shè)計中就會有一定的局限性,如果需要增加新的指令集,需要整體上進(jìn)行改動,不易操作。</p><p>  方案二: 自定義指令長度。由于指令長度不是8的倍數(shù),不容易存放進(jìn)Block Memory Access中。但是指令容易擴(kuò)展,編寫起來也方便。</p><p>  通過比較以上兩種方案的特點,最終

40、選用自定義指令長度。</p><p>  四、系統(tǒng)框架的設(shè)計:</p><p>  方案一:采用3級流水,取指、譯碼、執(zhí)行。</p><p>  方案二:采用4級流水,取指、譯碼、執(zhí)行、存儲。</p><p>  方案三:采用5級流水,取指、譯碼、執(zhí)行、存儲、回寫。</p><p>  綜上所述,流水線級數(shù),寄存器越多

41、,組合延時造成的延時就越低,最長路徑越短,主頻越高。所以本設(shè)計選用5級流水作為系統(tǒng)框架。</p><p><b>  2.3 流水線</b></p><p>  2.3.1 流水線的簡單介紹</p><p>  圖 2-2 五級流水線時空圖</p><p>  流水線:流水線(pipeline)技術(shù)是指在程序執(zhí)行時多條指

42、令重疊進(jìn)行操作的一種準(zhǔn)并行處理實現(xiàn)技術(shù)。流水線是Intel首次在486芯片中開始使用的。流水線的工作方式就象工業(yè)生產(chǎn)上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然后將一條X86指令分成5—6步后再由這些電路單元分別執(zhí)行,這樣就能實現(xiàn)在一個CPU時鐘周期完成一條指令,從而提高CPU的運算速度。經(jīng)典奔騰每條整數(shù)流水線都分為四級流水,即指令預(yù)取、譯碼、執(zhí)行、寫回結(jié)果,浮點流水又分為八級流水。</p>

43、;<p>  2.3.1 流水線的冒險分析及處理</p><p>  流水線處理中,由于各個階段的依賴關(guān)系、硬件資源的競爭等原因,會出現(xiàn)操作無法執(zhí)行的情況。造成流水線故障的原因成為冒險,冒險分為結(jié)構(gòu)冒險、數(shù)據(jù)冒險、Load冒險和控制冒險4種類型。</p><p>  (一)結(jié)構(gòu)冒險:結(jié)構(gòu)冒險是由于取址和存儲階段都會對存儲器進(jìn)行訪問,產(chǎn)生的沖突,如果使用哈佛結(jié)構(gòu)將程序和數(shù)據(jù)分開

44、,就不會出現(xiàn)沖突。構(gòu)造冒險是由于硬件資源的競爭,操作無法同時執(zhí)行的情況。流水線結(jié)構(gòu)中,內(nèi)存訪問會造成構(gòu)造冒險。IF階段和MEM階段都要涉及內(nèi)存訪問。由于內(nèi)存訪問使用的總線是共享資源,無法同時進(jìn)行操作。因此,如果發(fā)生IF階段和MEM階段同時訪問內(nèi)存的情況,一方需要等待另一方訪問完成。這種指令和數(shù)據(jù)使用同一通道的構(gòu)造稱為馮諾依曼架構(gòu)。如果導(dǎo)致冒險產(chǎn)生的硬件資源數(shù)量足夠多,也可以避免冒險問題的產(chǎn)生。因此,指令用的內(nèi)存和數(shù)據(jù)用的內(nèi)存分別設(shè)置,即

45、可解決構(gòu)造冒險的問題。這種物理上將指令和數(shù)據(jù)用的內(nèi)存與訪問通道分開的構(gòu)架成為哈佛架構(gòu)。哈佛構(gòu)架的優(yōu)點是,就算指令訪問和數(shù)據(jù)訪問同時發(fā)生也不會發(fā)生冒險的情況。但是,也有指令和數(shù)據(jù)地址空間不同的缺點。在哈佛構(gòu)架中,指令的0號地址和數(shù)據(jù)的0號地址指向不同的內(nèi)容。這會引起軟件設(shè)計上的問題。</p><p> ?。ǘ?shù)據(jù)冒險:數(shù)據(jù)冒險是指,由于指令執(zhí)行所需要的數(shù)據(jù)還未準(zhǔn)備好所引起的冒險情況。當(dāng)即將執(zhí)行的指令依賴于還未處理

46、完成的數(shù)據(jù)時,會導(dǎo)致指令無法立刻開始執(zhí)行,引發(fā)數(shù)據(jù)冒險。為了回避數(shù)據(jù)冒險,我們使用一種稱為直通(Forwarding)的方法。原本回寫運算結(jié)果在WB階段,但實際上決定運算結(jié)果是在EXE階段。因此直通是指在運算結(jié)果確定的EXE階段,將數(shù)據(jù)直接傳遞給下一條指令。</p><p>  直通的示例如圖2-3所示。示例中使用流水線執(zhí)行3條數(shù)據(jù)依賴關(guān)系的指令,以此說明直通的動作原理。第二條指令要使用第一條指令的結(jié)果。第一條指

47、令在EX階段可以確定運算結(jié)果后,直接將結(jié)果發(fā)送到處于ID階段的第二條指令。第三條指令同時依賴于第一和第二條指令。因此,可以直接從處于MEM階段的第一條指令和處于EX階段的第二條指令獲取數(shù)據(jù)。以這種將運算結(jié)果直通的方式,可以消除原本需要等待WB階段完成的依賴關(guān)系。</p><p>  圖 2-3 直通示例</p><p>  使用直通解決依賴關(guān)系的方法僅有一個例外,就是數(shù)據(jù)需要使用Load指

48、令從內(nèi)存調(diào)取的情況。由于內(nèi)存的訪問在MEM階段執(zhí)行,因此處理結(jié)果要在MEM階段才能夠確定。而當(dāng)前指令執(zhí)行到MEM結(jié)束時,下一條指令已經(jīng)到達(dá)EX階段執(zhí)行了。這與直通的機(jī)制不吻合。</p><p>  (三)Load冒險:如果當(dāng)前指令需要的操作數(shù)還未取出來,將產(chǎn)生Load冒險。對于Load冒險,將IF階段阻塞一個周期,將DEC階段刷新一個周期,即可解決Load冒險。這種依賴Load指令而發(fā)生的冒險成為Load冒險。L

49、oad冒險不能從根本上避免,因此要將有依賴關(guān)系的指令進(jìn)行阻塞以解決問題。阻塞是指讓流水線的特定階段停止一段時間。Load冒險發(fā)生的流水線動作如圖2-4所示。</p><p>  圖 2-4 Load冒險發(fā)生時的流水線的動作</p><p>  如果有Load冒險發(fā)生,則將有依賴關(guān)系的指令延遲一個周期執(zhí)行。如果將指令阻塞一個周期,前一條指令在MEM階段得到的數(shù)據(jù)就可以直通到正在ID階段的下

50、一條指令。這時候,流水線會浪費一個周期,這一周期讓其傳遞無效的數(shù)據(jù)即可。這個操作稱為流水線冒泡。如果Load指令和其有依賴關(guān)系的指令相差一條指令以上的距離,則不會發(fā)生Load冒險。作為有效的處理操作的方法,在編譯器中使用適當(dāng)?shù)恼{(diào)度算法也可以有效避免Load冒險。</p><p> ?。ㄋ模┛刂泼半U:控制冒險是指無法確定下一條指令而引發(fā)的冒險情況。當(dāng)不知道下一條是否執(zhí)行時,就會產(chǎn)生控制冒險。我們可以插入延時間隙來解

51、決,不管是否跳轉(zhuǎn),延時間隙一定會執(zhí)行,一般使用NOP。我們在程序中每一條跳轉(zhuǎn)指令后面添加一條NOP指令來實現(xiàn)跳轉(zhuǎn)。</p><p>  控制冒險也無法從根本上避免,但是可以盡量將分支指令安排打到流水線前段,從而減少因為控制冒險而引起的無效指令的數(shù)量。比如在ID階段判定分支后,延遲一個周期就可以開始執(zhí)行分支指向的下一條指令。</p><p>  因為在讀取下一條指令前需要確定PC寄存器的值,

52、即使在ID階段判定分支也會產(chǎn)生一個周期的延遲。延遲期間會讓流水線傳送無效數(shù)據(jù)。流水線冒泡會浪費硬件資源,因此可以采用延遲分支的方法,許可分支指令的下一條指令執(zhí)行。延遲分支是指將分支指令執(zhí)行后并不立刻跳轉(zhuǎn)到分支結(jié)果指向的指令,在分支指令的下一條指令執(zhí)行完畢后再進(jìn)行跳轉(zhuǎn)。分支指令的下一條指令被稱為延遲間隙,不論分支是否成立都會被執(zhí)行。使用延遲分支可以避免流水線冒泡,使操作的處理更有效率。一般的分支與延遲分支和采用了延遲分支的流水線執(zhí)行過程如

53、圖所示。</p><p>  圖 2-5 采用了延遲分支的流水線執(zhí)行過程</p><p>  2.4 RISC CPU的總體設(shè)計</p><p><b>  總體設(shè)計框圖</b></p><p>  圖 2-6 總體設(shè)計方案</p><p>  IF(Instruction Fetch)階段&l

54、t;/p><p>  將PC的值發(fā)送到內(nèi)存,讀取指令。</p><p>  ID(Instruction Decode)階段</p><p>  將讀取到的指令解碼并決定將要進(jìn)行的操作,從寄存器堆讀取數(shù)據(jù)。</p><p>  EX(Execution)階段</p><p>  使用運算器執(zhí)行操作。</p>

55、<p>  MEM(Memory Access)階段</p><p><b>  進(jìn)行內(nèi)存訪問。</b></p><p>  WB(Write Back)</p><p>  將結(jié)果寫回寄存器堆。 </p><p>  二、總體設(shè)計的主要內(nèi)容</p><p><b>  1指

56、令集的選取原則</b></p><p><b> ?。ㄒ唬┚喼噶钕到y(tǒng)</b></p><p> ?。ǘ┎捎眉拇嫫?-寄存器工作方式(除Load/Store指令訪問存儲器外)</p><p> ?。ㄈ┲噶钤谝粋€周期完成并采用流水線技術(shù)。</p><p> ?。ㄋ模┦褂幂^多的通用寄存器</p>

57、<p> ?。ㄎ澹┐蠖嗖捎糜策B線控制[9]。 </p><p>  2指令集的分類及格式</p><p><b>  指令集的分類</b></p><p>  ①算術(shù)邏輯運算操作指令:空操作(NOP)、寄存器間的加(ADDR)、寄存器與立即數(shù)之間的加(ADDI)、寄存器之間的減(SUBR)、寄存器與立即數(shù)之間的減(SUBI)、寄存器

58、之間的邏輯與(ANDR)、寄存器與立即數(shù)之間的邏輯與(ANDI)、寄存器之間邏輯或(ORR)、寄存器與立即數(shù)之間的邏輯或(ORI)、寄存器之間的邏輯異或(XORR)、寄存器與立即數(shù)之間的邏輯異或(XORI)、寄存器之間的賦值(MOVR)、寄存器與立即數(shù)之間的賦值(MOVI)、算數(shù)左移(ROL)、算數(shù)右移(ROR)。</p><p> ?、诖鎯ζ骱虸O操作指令:加載(LOAD)和存儲(STORE)。加載指令是把存儲

59、器或IO端口數(shù)據(jù)加載到累加器中。存儲指令把累加器數(shù)據(jù)寫到存儲器或IO端口[10]。</p><p> ?、劭刂浦噶睿簾o條件(JMP)和非零轉(zhuǎn)移(JNE)。無條件轉(zhuǎn)移指令控制程序跳轉(zhuǎn)到目的地址開始執(zhí)行。非零條件轉(zhuǎn)移指令時,先判斷累加器的值,如果不為0,則跳轉(zhuǎn)到下一條指令開始執(zhí)行,否則順序執(zhí)行。</p><p> ?、芷渌噶睿和C(jī)指令(STOP)。 </p><p&g

60、t;<b>  具體指令見表1</b></p><p>  表格 2-7 指令集

61、

62、 </p><p><b>  指令格式</b></p><p>  為了能夠擴(kuò)展更多的指令,立即數(shù)能夠表達(dá)更多的范圍,不受指令長度的限制,本課題

63、中采用了26位長的指令,指令格式見表2。</p><p>  表格 1-8 指令格式</p><p>  指令的高5位表示操作碼,最多可擴(kuò)展至32條指令;RA和RB是通用寄存器地址,通過對通用寄存器堆進(jìn)行尋址,獲取數(shù)據(jù)參與算術(shù)邏輯運算;dir、offset和imm組合用來表示立即數(shù),dir表示算術(shù)循環(huán)的方向,算數(shù)循環(huán)左移或右移,offset代表移多少位,imm代表8位位圖??偟膩碚f,立即數(shù)

64、的表示范圍為8位立即數(shù)循環(huán)左移或右移0~15位。</p><p><b>  尋址模式</b></p><p>  在本設(shè)計中,主要用到了一下兩種尋址方式:</p><p>  寄存器尋址:其操作數(shù)是某寄存器,主要用于算術(shù)邏輯運算指令;</p><p>  立即數(shù)尋址:其操作數(shù)是立即數(shù),主要用作跳轉(zhuǎn)指令的地址?;蜃鳛槌?shù)

65、參與算術(shù)邏輯運算。 </p><p><b>  3 FPGA設(shè)計</b></p><p>  3.1 頂層模塊的設(shè)計</p><p>  整個系統(tǒng)劃分為兩個部分:一部分是數(shù)據(jù)單元,另一部分是控制單元。其中數(shù)據(jù)單元包含保存運算數(shù)據(jù)和運算結(jié)果的寄存器和用來完成數(shù)據(jù)運算的執(zhí)行單元;控制

66、單元是處理器系統(tǒng)的核心單元,準(zhǔn)確無誤的產(chǎn)生數(shù)據(jù)通路所需的控制信號[11],在本設(shè)計中由于沒有實現(xiàn)中斷的功能,所以控制器的作用大大降低。</p><p>  譯碼器相當(dāng)于正真的控制器,產(chǎn)生各種控制信號。</p><p>  頂層模塊由分頻模塊、程序存儲器、取指譯碼流水線寄存器、譯碼器、通用寄存器組、譯碼寄存器、算數(shù)邏輯運算單元、執(zhí)行存儲流水線寄存器、多路選擇器、數(shù)據(jù)存儲器、存儲回寫流水線寄存

67、器、控制器組成。 </p><p>  3.1.1 分頻模塊</p><p>  圖 3-1 分頻模塊</p><p>  作用:主要是對系統(tǒng)時鐘進(jìn)行12分頻。因為CPU的主頻過高的話,刷新LCD12864的時候會出現(xiàn)亂碼,如果將主頻降低12倍之后,就不會出現(xiàn)亂碼。功能:主要是用于分頻,將系統(tǒng)的時間降下來。</p><p>  3.1

68、.2 程序存儲器</p><p>  圖 3-2 程序存儲器</p><p>  作用:程序存儲器是存放指令的地方,地址總線位寬為12位,最大尋址范圍為212=4096。指令的長度為26位。這里沒有采用調(diào)用Block ROM IP核的方式進(jìn)行存儲,而是直接使用寄存器組進(jìn)行查表的方法,二進(jìn)制代碼對于編程者可見,這樣方便編寫程序以及查找錯誤。</p><p>  功能

69、:主要是存放指令,每一個時鐘周期進(jìn)行一次取指。 </p><p>  3.1.3 IF/ID流水線寄存器</p><p>  圖 3-3 IF/ID流水線寄存器</p><p>  作用:將上一級產(chǎn)生指令insn進(jìn)行寄存。同時還接收來自ctrl控制器的刷新信號和來自ID譯碼器阻塞信號(刷新是讓所有的寄存器都復(fù)位,重新啟動流水線。阻塞是讓某個寄存器保持一個周期)。PC

70、地址更新也在這個地方。</p><p>  內(nèi)部集成了一個多路選擇器。 </p><p>  PC地址的來源有三個:</p><p> ?、俪绦蝽樞驁?zhí)行時,存放指令地址的寄存器PC;</p><p> ?、谧g碼器傳來的跳轉(zhuǎn)指令;</p><p> ?、壑袛嗟刂罚ūA?,待實現(xiàn))。</p><p>

71、;  功能:將上一級的信號進(jìn)行緩沖,PC地址更新。</p><p>  3.1.4 DEC譯碼器</p><p><b>  圖 3-4 譯碼器</b></p><p>  作用:譯碼器是CPU中最復(fù)雜的單元,主要是對上一級傳來的指令進(jìn)行譯碼,根據(jù)不同指令產(chǎn)生不同的控制信號。譯碼器在接收到指令后,首先對指令的各字段進(jìn)行分析,將指令的操作碼部分提

72、供給內(nèi)部控制單元,根據(jù)源操作數(shù)和目的操作數(shù)的地址從通過寄存器組中獲取執(zhí)行單元所需的數(shù)據(jù),并根據(jù)指令確定回寫時的目的。將立即數(shù)進(jìn)行擴(kuò)展成16位。</p><p>  主要是對來自IF階段的指令進(jìn)行解碼,同時還接收來自EXE階段和MEM階段的直通,在這里對跳轉(zhuǎn)指令進(jìn)行判斷,在下一個周期之前跳轉(zhuǎn)。</p><p>  分支的判定在ID階段進(jìn)行。我們采用了延遲分支機(jī)制,也就是說,分支指令的下一條被

73、作為延遲間隙執(zhí)行,以規(guī)避控制冒險。EX階段和MEM階段的處理結(jié)果也可以直通到ID階段,以規(guī)避數(shù)據(jù)冒險。流水線寄存器的停滯與刷新和流水線的控制操作由控制單元負(fù)責(zé)。</p><p>  26位的指令,高5位代表指令操作。對于運算類的雙操作指令來說,12~20位中包含有通用寄存器的地址,通過對通用寄存器尋址,可以得到兩個16位的數(shù)據(jù)。如果是Load指令,就是將數(shù)據(jù)存儲器中的數(shù)據(jù)載入到寄存器中。因此,低八位中包含寄存器的

74、地址和數(shù)據(jù)存儲器的地址。如果是Store指令,就是將寄存器中的數(shù)據(jù)存儲到數(shù)據(jù)存儲器中。因此,低八位中高四位作為寄存器的地址,取出一個16位的數(shù)據(jù),然后將數(shù)據(jù)傳到存儲級。 </p><p>  包括立即數(shù)生成模塊,分支處理模塊,地址生成模塊。</p><p><b>  立即數(shù)生成模塊:</b></p><p>  使用非阻塞賦值,能夠?qū)崿F(xiàn)對立即

75、數(shù)進(jìn)行擴(kuò)展。實現(xiàn)8位立即數(shù)循環(huán)左移或右移16位。</p><p>  圖 3-5 立即數(shù)生成模塊</p><p><b>  分支處理語句:</b></p><p>  當(dāng)轉(zhuǎn)移條件成立時,能夠?qū)⒎种У刂贩祷氐絀F/ID流水線寄存器。</p><p>  圖 3-6 分支跳轉(zhuǎn)代碼</p><p>&

76、lt;b>  地址生成語句:</b></p><p>  圖 3-7 地址生成代碼</p><p>  3.1.6 通用寄存器組</p><p>  圖 3-8 通用寄存器組</p><p>  作用:用于保存源操作數(shù)和運算結(jié)果。通用寄存器組包含16*16bit的數(shù)據(jù),具有兩組讀數(shù)據(jù)地址數(shù)據(jù)總線和一組寫數(shù)據(jù)地址數(shù)據(jù)總線。讀數(shù)

77、據(jù)由于使用組合邏輯,幾乎沒有延時,數(shù)據(jù)能夠及時更新。對于寫數(shù)據(jù)采用時序電路,在上升沿更新。</p><p>  主要存放臨時數(shù)據(jù),R15在函數(shù)調(diào)用時,用來存儲當(dāng)前PC的下一條指令,以供函數(shù)返回。寄存器有16個,R15在函數(shù)調(diào)用時,作為SP鏈接地址存放返回指針,函數(shù)返回時,將R15中數(shù)據(jù)加上偏移量賦給PC,跳轉(zhuǎn)到函數(shù)調(diào)用之前的下一個地址。沒有調(diào)用函數(shù)時,R15可用做通用寄存器使用,當(dāng)函數(shù)調(diào)用時,R15會將函數(shù)調(diào)用前

78、的下一條指令保存到R15寄存器中,供返回使用。由于可能會遇到多層函數(shù)調(diào)用,因此在每次進(jìn)入函數(shù)之后首先必須將R15壓棧,在返回函數(shù)執(zhí)行之前,將堆棧的中數(shù)據(jù)彈出,從而實現(xiàn)多層函數(shù)調(diào)用。</p><p>  這里設(shè)計了兩個讀端口,一個寫端口。對寄存器堆的讀寫主要通過寄存器號來進(jìn)行,讀取寄存器是不會更改其內(nèi)容的。而對于往寄存器中寫數(shù)據(jù),需控制何時寫入,所以除了寄存器號以外,所寫數(shù)據(jù)及寫控制信號也是必不可少的。核心控制單元

79、負(fù)責(zé)處理器中全部其他五個部件的協(xié)調(diào)工作,控制指令和數(shù)據(jù)流按照取值、譯碼、執(zhí)行、回寫的順序正確執(zhí)行,同時負(fù)責(zé)其他外圍信號的處理。</p><p>  3.1.7 ID/EXE流水線寄存器</p><p>  圖 1-9 ID/EXE流水線寄存器</p><p>  作用:主要是對上一級的數(shù)據(jù)進(jìn)行緩沖。譯碼執(zhí)行流水線寄存器。唯一特殊的部分是有一個刷新端。當(dāng)刷新端有效時

80、,所有的數(shù)據(jù)被賦初值。</p><p>  3.1.8 ALU算術(shù)邏輯單元:</p><p>  圖 3-10 ALU算術(shù)邏輯單元</p><p>  作用:完成對2個操作數(shù)A和B的運算,包括算術(shù)運算、邏輯運算和移位運算,輸出運算結(jié)果,比較運算,并且生成n、z、c、v標(biāo)志位控制信號[12]。執(zhí)行單元是微處理器處理數(shù)據(jù)的核心部分,數(shù)據(jù)寬度為16位,具有加、減、乘邏輯

81、運算和移位功能。</p><p>  功能:根據(jù)來自上一級寄存器中的算數(shù)邏輯操作碼,對兩個操作數(shù)進(jìn)行不同的操作。包括直通、加法、減法、與、或、非、異或、算數(shù)左移、算數(shù)右移等。</p><p>  3.1.9 EXM/MEM流水線寄存器</p><p>  圖 3-11 EXE/MEM流水線寄存器</p><p>  功能:主要是將計算得到的

82、結(jié)果進(jìn)行緩沖,以及回寫的地址和使能端、存儲的地址、數(shù)據(jù)、使能端。具有刷新端,當(dāng)刷新端有效時,所有的寄存器都被清零。</p><p>  3.1.10 RAM數(shù)據(jù)存儲器</p><p>  圖 3-12 RAM數(shù)據(jù)存儲器</p><p>  作用:存儲數(shù)據(jù),與外部進(jìn)行通信。</p><p>  GPIO作為數(shù)據(jù)存儲器的一部分被編址,GPIO可

83、以分為輸入端口、輸出端口、輸入輸出端口,本設(shè)計中只設(shè)計了輸入端口、輸出端口?;旧蠈崿F(xiàn)了與外界的通信。</p><p>  3.1.12 多路選擇器</p><p>  圖 3-13 多路選擇器</p><p>  作用:通過存儲的片選端判斷當(dāng)前的指令是算數(shù)邏輯指令還是存儲指令。</p><p>  3.1.13 MEM/WB流水線寄存器&l

84、t;/p><p>  圖 3-14 MEM/WB流水線寄存器</p><p>  存儲回寫寄存器:主要是將要回寫到通用寄存器中的數(shù)據(jù)進(jìn)行緩沖。下一個周期將其寫入指定的寄存器中。</p><p>  3.1.14 堆棧的設(shè)計:</p><p><b>  圖 3-15 堆棧</b></p><p> 

85、 作用:堆棧是用來臨時存儲數(shù)據(jù)。</p><p>  一般在對函數(shù)進(jìn)行調(diào)用時,可能會存在函數(shù)嵌套的問題,因在函數(shù)中再次調(diào)用其他函數(shù)而導(dǎo)致返回地址的丟失。如果在進(jìn)行函數(shù)之前將PC的地址進(jìn)行壓棧,函數(shù)返回之前進(jìn)行出棧,可以有效的解決函數(shù)嵌套的問題。堆棧的深度只有16級,由于沒有異常處理,因此在編程的時候需注意堆棧溢出。</p><p>  這里的堆棧只是簡單的采用了雙向移位寄存器。圖3-16為

86、堆棧的仿真測試圖,</p><p>  將4個數(shù)分別依次壓入棧中,然后依次取出,從仿真結(jié)果可知,堆棧數(shù)據(jù)無異常。</p><p>  圖 3-16 堆棧仿真測試圖</p><p>  3.1.15 控制器</p><p>  圖 3-17 控制器</p><p>  作用:控制器主要負(fù)責(zé)回寫操作。產(chǎn)生Load冒險信號。

87、</p><p>  由于沒有中斷處理機(jī)制,控制器的功能有所弱化。本設(shè)計中控制器主要用于控制通用寄存器的回寫操作?;貙憜卧谠O(shè)計中是不可見的,其功能已隱含到寄存器堆中,這樣執(zhí)行單元在接收下一個運算命令的同時,寄存器堆將上一個結(jié)果保存起來。</p><p><b>  3.2 整體測試</b></p><p>  本設(shè)計采用實驗室自主設(shè)計的SP6

88、開發(fā)板進(jìn)行硬件實現(xiàn),開發(fā)板上所使用的芯片型號為Spartan6 LX9。</p><p>  通過對在程序程序存儲器中寫程序,可以實現(xiàn)相應(yīng)的功能,再次編寫LCD12864驅(qū)動。本次測試的主要功能是簡單的計算器。鍵盤通過PS2協(xié)議與</p><p>  CPU進(jìn)行通信。調(diào)用FPGA內(nèi)部的PS2模塊來將鍵盤對應(yīng)的鍵值進(jìn)行譯碼,然后直接傳送到RISC CPU進(jìn)行相應(yīng)的操作,最終實現(xiàn)簡單的計算器功

89、能。圖3-19為初始化時的界面。</p><p>  圖 3-19 實驗現(xiàn)象</p><p><b>  結(jié)論</b></p><p>  本文主要介紹了EDA嵌入式開發(fā)板案例設(shè)計----綜合模塊之一的RISC CPU的設(shè)計。通過對RISC CPU設(shè)計過程中出現(xiàn)的流水線冒險進(jìn)行分析,并解決相應(yīng)的問題,最終實現(xiàn)了RISC CPU的設(shè)計,并在自制的

90、FPGA開發(fā)板SP6實現(xiàn)計算器的功能。通過對RISC CPU的了解,查閱大量書籍,終于明白了流水線的意義。先對指令集進(jìn)行了劃分,然后根據(jù)指令集將CPU劃分為5個階段,取指、譯碼、執(zhí)行、存儲、回寫。這5個階段。同時也對應(yīng)于5級流水。通過對RISC CPU的制作。使我對CPU有了進(jìn)一步的了解。實現(xiàn)功能:</p><p>  本文設(shè)計的RISC CPU能夠執(zhí)行簡單的算術(shù)運算(加減法運算)、邏輯運算(與、或、非、異或)、

91、跳轉(zhuǎn)(直接跳轉(zhuǎn)、條件跳轉(zhuǎn))、堆棧處理,基本上實現(xiàn)了簡單CPU的功能,能夠?qū)崿F(xiàn)函數(shù)的調(diào)用和堆棧的壓棧。當(dāng)然還有一些不完善處,本CPU沒有中斷機(jī)制,不能處理中斷。由于匯編器比較簡單,沒有使用復(fù)雜的算法,在編寫跳轉(zhuǎn)指令時,只能通過手動添加NOP指令來實現(xiàn)無延時跳轉(zhuǎn)。期望,后期能夠?qū)⒅袛嗉舆M(jìn)去,豐富指令,擴(kuò)展功能。</p><p><b>  參考文獻(xiàn)</b></p><p>

92、;  [1] 劉覽,鄭步生,施慧彬.基于FPGA的32位RISC微處理器設(shè)計 [J].數(shù)據(jù)采集與處理,20011,26(3):367-373.</p><p>  [2] 周敏,付慧生,李雪峰.基于流水線的RISC微處理器設(shè)計[J].大眾科技,</p><p>  2006,5(91):55-57.</p><p>  [3] 曲英杰.RISC處理機(jī)設(shè)計方法研究 [

93、J].科技信息,2010(33):26-26.</p><p>  [4] 汪濤,徐正安.基于FPGA的RISC的設(shè)計和仿真.微機(jī)型與應(yīng)用.2012,31(15).</p><p>  [5] 錢彬豐,汪西川.一款RISC型流水線MCU的設(shè)計與實現(xiàn) [J].儀器儀表,2008(9):20-22.</p><p>  [6] 馬軍爽.基于FPGA的16位CPU設(shè)計 [

94、J].山東工業(yè)技術(shù).2013(14):237-241.</p><p>  [7] 龍慧民,吳靜.基于FPGA的RISC CPU設(shè)計.兵工自動化.2006,25(12).</p><p>  [8] 姚愛紅,孫孟哲,吳劍.16位嵌入式微處理器核的設(shè)計及驗證.計算機(jī)工程.2010,36(23):234-239.</p><p>  [9] 雷少波,黃民. 16位嵌入式

95、RISC微處理器設(shè)計 [J]. 微型機(jī)與應(yīng)用.2013,32(7).</p><p>  [10] 王海涌,徐樹.基于FPGA的RISC CPU設(shè)計.大眾科技.2010(1):33-34.</p><p>  [11] 李麗,高明倫,張多利,程作仁.8位RISC微控制器IP軟核的設(shè)計 [J].微電子學(xué)與計算機(jī).2001(3).</p><p>  [12] 郭怡慧,

96、張立朝,戴紫彬.RISC微處理器指令擴(kuò)展接口設(shè)計.小型微型計算機(jī)系統(tǒng).2014,8(8):1827:1830.</p><p>  [13] 曹蓓,黃海生.一種基于FPGA的SOC設(shè)計與實現(xiàn) [J].電子設(shè)計工程.2014,22(2):16-19.</p><p>  [14] 水頭一壽(日),米澤遼(日),藤田裕士(日).CPU自制入門 [M]. 北京:人民郵電出版社,2014.<

97、/p><p>  [15] 王育堅.VC++面向?qū)ο缶幊探坛蘙M].清華大學(xué)出版社,2007.</p><p><b>  致謝</b></p><p>  時光飛逝,轉(zhuǎn)眼大學(xué)四年學(xué)習(xí)即將結(jié)束?;厥状髮W(xué)學(xué)習(xí)期間的校園學(xué)習(xí)生活,在知識的海洋里汲取營養(yǎng)和體味獲取知識的充實與喜悅,不禁感慨萬千。</p><p>  大學(xué)四年轉(zhuǎn)眼間

98、就過去了,回首大學(xué)四年時光,我是幸運的。</p><p>  大一的時候,我還懵懵懂懂,找不到未來的方向。大三下學(xué)期的一次校電子競賽徹底改變了我的生活。那時,我和另外2位同伴一起參加。至此我的大學(xué)生活就與其他同學(xué)完全不同。我的絕大部分時間都在實驗室度過。雖然實驗室的生活很枯燥,很單調(diào),很乏味,但那種學(xué)到手的內(nèi)心充實,是普通的玩樂所無法提供的。</p><p>  由衷感謝從始至終都教育我,

99、指導(dǎo)我的朱老師,以及和我一起學(xué)習(xí),一起在實驗室成長的同學(xué)們。謝謝大家!</p><p><b>  附錄</b></p><p>  附錄圖1 實驗平臺</p><p>  附錄圖2 頂層文件結(jié)構(gòu)框圖</p><p>  附錄圖3:實際的框圖</p><p>  附錄4 部分測試代碼

100、</p><p>  architecture Behavioral of ROM is</p><p>  type mem_program is array(0 to 188)of std_logic_vector(25 downto 0);</p><p>  signal mem : mem_program:= --地址 </p><p&

101、gt;  (--開始跳轉(zhuǎn)(0000000)</p><p>  "10010000000000000010100000",--0 JMPI MAIN; "00000000000000000000000000", --1 NOP </p><p>  --保留 (0000010)</p>

102、<p>  "10010000000000000000000000",--2 JMPI xxx 外部中斷 </p><p>  "00000000000000000000000000", -- 3 NOP </p><p>  "1001000000000000000000

103、0000",-- 4JMPI xxx串口中斷 </p><p>  "00000000000000000000000000", -- 5 NOP </p><p>  "10010000000000000000000000",--6JMPIx定時器中斷 </p>

104、<p>  "00000000000000000000000000", -- 7 NOP</p><p>  --延時函數(shù) (0001000)</p><p>  "11101111100000000000000000", -- 8 PUSH PC;</p><p>  "00010000100000

105、010110011100",--9DELAY:MOVI R1,5000; </p><p>  "00110000100000000000000001",--10LOOP1:SUBI R1,1; </p><p>  "10100000000000000000001010",--1

106、1 JNEI LOOP1; </p><p>  "00000000000000000000000000", --12 NOP; </p><p>  "00110001100000000000000001",--13 SUBI R3,1;

107、 </p><p>  "10100000000000000000001001",--14JNEI DELAY;</p><p>  "00000000000000000000000000", --15 NOP; </p><p>  "11110111100000000000000000&

108、quot;, --16 POP PC;</p><p>  "11100111100000000000000000", --17 RET R15; "00000000000000000000000000", --18 NOP; </p><p>  --發(fā)送指令 (R7)(0010011)</p><p>  &qu

109、ot;11101111100000000000000000", --19 PUSH PC;</p><p>  "00010000100000000000000000", --20 COM MOVI R1,0; </p><p>  "11010000100000000000000000", --21 STORE R1,M

110、0; </p><p>  "00010000100000000000000000", --22 MOVI R1,0; </p><p>  "11010000100010000000000000", --23 STORE R1,M1; </p><p>  "0

111、0001000101110000000000000", --24 MOVR R1,R7; </p><p>  "11010000100110000000000000", --25 STORE R1,M3; </p><p>  "00010000100000000000000001", --26 MOV

112、I R1,1;</p><p>  "11010000100100000000000000", --27 STORE R1,M2; </p><p>  "00010001100000000000000101", --28 MOVI R3,5; </p><p>  "1101100

113、0000000000000001000", --29 CALL DELAY;</p><p>  "00000000000000000000000000", --30 NOP; </p><p>  "00010000100000000000000000", --31 MOVI R1,0; </

114、p><p>  "11010000100100000000000000", --32 STORE R1,M2; </p><p>  "11110111100000000000000000", --33 POP PC;</p><p>  "11100111100000000000000000&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論