版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(論文)</b></p><p> 題 目:EDA嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊</p><p> ?! I(yè): 電子信息工程 </p><p> EDA嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊</p><p><b> 摘 要&
2、lt;/b></p><p> 基于自主設(shè)計的FPGA---SP6開發(fā)板的綜合模塊設(shè)計。本論文主要介紹一款采用自定義指令集的16位RISC MCU的設(shè)計與實現(xiàn)。采用硬件描述語言VHDL進行RTL級描述,自頂向下流程和模塊化的方法進行設(shè)計。整體上分為5級流水:取指、譯碼、執(zhí)行、存儲、回寫??梢詧?zhí)行算術(shù)運算、邏輯運算、讀寫存儲器、IO口操作。設(shè)計了16級堆棧,可實現(xiàn)函數(shù)多級調(diào)用。該RISC CPU采用哈佛結(jié)構(gòu)
3、,有效的避免了流水線中的結(jié)構(gòu)冒險。分析了該設(shè)計中的流水線所遇到的冒險問題,采取了一定的解決方案。并使用仿真工具Modelsim對個別模塊進行了前、后仿真,ISE軟件綜合布局布線,并在Xilinx Spartan6 LX9芯片上經(jīng)過驗證。實現(xiàn)簡易計算器效果。</p><p> 關(guān)鍵詞:FPGA,spartan6,綜合模塊,RISC,流水線,VHDL,EDA案例設(shè)計</p><p> Th
4、e case design Based on embedded experimental board of EDA---Integrated design</p><p><b> Abstract</b></p><p> The Integrated design based on the FPGA experimental board which desi
5、- gned by ourself. This paper mainly introduces the principle and implementation</p><p> of a 16 bit RISC MCU with self-defined instruction set. Using a hardware des
6、cription language VHDL to RTL description, top-down flow and modular de-sign. On the whole the CPU is divided into five levels pipeline : Instruction Fetch, Instruction Decode,execution,Memory A
7、ccess, Write Back.You can perform arithmetic, logic, read and write memory,IO operation. The design have 16 level stack which can realize the function of Nested functio
8、ns.The RISC CPU adop-te the Harvard structure, effec</p><p> Keywords: FPGA,spartan6,integrated modules,RISC,pipeline,VHDL</p><p><b> 目錄</b></p><p><
9、;b> 摘 要III</b></p><p> AbstractIV</p><p><b> 目錄V</b></p><p><b> 1 緒論7</b></p><p> 1.1課題的來源7</p><p> 1.2課題的意義7
10、</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><p> 2方案設(shè)計與總體設(shè)計10</p><p> 2.1 RISC CPU的方案設(shè)計10</p><
11、p> 2.2方案評價10</p><p> 2.3 流水線11</p><p> 2.3.1 流水線的簡單介紹11</p><p> 2.3.1 流水線的冒險分析及處理12</p><p> 2.4 RISC CPU的總體設(shè)計14</p><p> 3 FPGA設(shè)計17</p>
12、;<p> 3.1 頂層模塊的設(shè)計17</p><p> 3.1.1 分頻模塊18</p><p> 3.1.2 程序存儲器18</p><p> 3.1.3 IF/ID流水線寄存器18</p><p> 3.1.4 DEC解碼器19</p><p> 3.1.7 ID/EXE流水線
13、寄存器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ù)存儲器23</p><p> 3.1.12 多路選擇器23</p><p> 3.1.13 MEM/WB流水線寄存器24<
14、;/p><p> 3.1.14 堆棧的設(shè)計:24</p><p> 3.1.15 控制器25</p><p> 3.2 整體測試25</p><p><b> 結(jié)論26</b></p><p><b> 參考文獻27</b></p><p&
15、gt;<b> 致謝28</b></p><p><b> 附錄29</b></p><p><b> 1 緒論</b></p><p><b> 1.1課題的來源</b></p><p> 隨著計算機科技的發(fā)展,在計算機指令系統(tǒng)的發(fā)展與優(yōu)化
16、過程中,出現(xiàn)了兩種不同的優(yōu)化方向,一個方向為CISC,另一個方向為RISC。CISC(復(fù)雜指令系統(tǒng)計算機)是早期大多數(shù)微處理器所采用的體系,如摩托羅拉公司的68k系列和Intel公司的80x86等。早期的電腦所使用的是組合語言編程,價格昂貴記憶體速度又慢,這也是CISC得以發(fā)展的一個重要原因。</p><p> 自20世紀70年代中期就職于IBM公司的John Cocke(約翰·科克,IBM的資深研究
17、員,為IBM計算機市場的開拓和計算機科學(xué)技術(shù)的發(fā)展起到至關(guān)重要的作用)首先提出著名的28定律之后,這一理論得到了加州大學(xué)伯克利分校的D Patterson和斯坦福大學(xué)的J Hennessy關(guān)注,他們對此定律、想法作了進一步研究,提出了一種有別于傳統(tǒng)CISC構(gòu)架的新型計算機體系結(jié)構(gòu),即RISC構(gòu)架。RISC是一種新的芯片體系,目的是為了提高處理器運行的速度。并且它的關(guān)鍵在于流水線的操作,使得一個時鐘周期內(nèi)可以完成多條指令,這是提高處理速度
18、的本質(zhì)原因。從20世紀80年初興起至今,RISC技術(shù)在計算機領(lǐng)域一直伴隨著其發(fā)展,尤其是在嵌入式微處理器方面,RISC體系結(jié)構(gòu)無論是在深度還是廣度上都得以充分的應(yīng)用。這些嵌入式微處理器在工業(yè)控制、無線網(wǎng)絡(luò)、多媒體處理等實時系統(tǒng)中被廣泛地應(yīng)用,并且扮演著重要的角色[1]。</p><p> FPGA現(xiàn)場可編程門陣列,憑借著其強大的功能和并行處理優(yōu)勢被稱為在CPU、DSP之后又一系統(tǒng)核心。FPGA直接操控邏輯門級,
19、操控的層次更加深入,設(shè)計的自由度也更大,理論上只要FPGA里面的集成規(guī)模足夠大,它可以實現(xiàn)任何的數(shù)字系統(tǒng),當(dāng)然也包括單片機甚至是CPU,因此本文基于此用FPGA實現(xiàn)一個簡單的自制CPU。</p><p><b> 1.2課題的意義</b></p><p> 數(shù)字電路的發(fā)展速度已經(jīng)是其他事物所不能比擬的,大容量并輔以高速度的可編程邏輯器件不斷的推陳出新,使得SOC(
20、片上操作系統(tǒng))系統(tǒng)成為了新寵,它是將整個應(yīng)用電子系統(tǒng)集成在一塊面積相當(dāng)小的硅芯片上。另一方面,相應(yīng)公司所推出的各樣開發(fā)平臺越來越人性化,只要掌握一種硬件描述語言就能夠在較短的時間內(nèi)設(shè)計出較為復(fù)雜的電子系統(tǒng),這有利于縮短設(shè)計周期,加快產(chǎn)品的上市速度,給電子市場帶來了巨大的變革。嵌入式系統(tǒng)由于其明顯的優(yōu)勢已經(jīng)在各行各業(yè)得到廣泛應(yīng)用,在軍事領(lǐng)域,醫(yī)療影像,數(shù)字通信,工業(yè)控制等方面都能看到嵌入式系統(tǒng)的身影。SOC模塊化設(shè)計的關(guān)鍵乃在于各類嵌入式
21、核、IP模塊的實現(xiàn),而在這其中MCU核的設(shè)計占據(jù)了舉足輕重的地位,因為幾乎在所有的系統(tǒng)應(yīng)用中,都會以MCU為控制的核心[2]。RISC(Reduced Instruction Set Computer,精簡指令集計算機)處理機經(jīng)常作為核心部件廣泛應(yīng)用于嵌入式系統(tǒng)和SOC(System on Chip,片上系統(tǒng))等信息系統(tǒng)中,因此其設(shè)計技術(shù)也是集成電路設(shè)計領(lǐng)域的核心技術(shù)而受到廣泛重視[3]。</p><p> R
22、ISC CPU與生活密切相關(guān),它已經(jīng)進入消費電子的各個領(lǐng)域,ARM、MIPS、PowerPC等處理器都屬于RISC家族的一部分,在國際市場上RISC處理器占有巨大的份額,RISC的研發(fā)也是一個非常熱門的領(lǐng)域,只有理解RISC的原理才能更好地認識和掌握已有的RISC架構(gòu)的處理器[4]。</p><p> 1.3 FPG案例開發(fā)國內(nèi)外發(fā)展現(xiàn)狀 </p><p> 近年來,電子設(shè)計自動化(E
23、DA,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)今電子設(shè)計領(lǐng)域中應(yīng)用最廣泛的可編程邏輯器件之一。由于FPGA具有編程靈活、設(shè)計周期短、可靠性高、開發(fā)費用低、風(fēng)險小等優(yōu)點,所以非常適合在實驗室中使用[5]。 </p>
24、<p> 由于傳統(tǒ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)中,并公開了FPGA芯片的研究方法和相關(guān)的工具;美國斯坦福大學(xué)直接用Xilinx大學(xué)計劃提供的開發(fā)板進行教學(xué)研究;麻省理工大學(xué)根據(jù)自身要求,開發(fā)出了一款基于Xilinx芯片的FP
25、GA實驗板,供學(xué)生使用;伯克利大學(xué)的天文望遠鏡系統(tǒng)采用FPGA技術(shù)分析搜集到的無線電,來判斷是否有外星人;亞利桑那大學(xué)也在硬件教學(xué)實驗中加入了FPGA和EDA的內(nèi)容。</p><p> 在國內(nèi),由于種種原因,F(xiàn)PGA的研究仍處于起步階段,但是很多大學(xué)已經(jīng)開設(shè)了FPGA相關(guān)課程。它們主要是和Xilinx公司組建聯(lián)合實驗室,由Xilinx公司免費提供大量的FPGA開發(fā)平臺及套件,給學(xué)生進行FPGA基礎(chǔ)教學(xué)實驗,比如
26、浙江大學(xué)、清華大學(xué)、復(fù)旦大學(xué)等知名學(xué)府。隨著FPGA知識的普及, 大多數(shù)高校開始了從事FPGA應(yīng)用方面的研究,比如上海交通大學(xué)用FPGA做人臉識別的項目,西安交通大學(xué)用FPGA來做機器人,北京工業(yè)大學(xué)用FPGA給玩具做語音識別,天津工業(yè)大學(xué)用FPGA進行信號傳輸與處理,等等。</p><p> 1.4 RISC CPU 國內(nèi)外發(fā)展現(xiàn)狀 </p><p> 1964年CDC公司推出的
27、CDC6600是第一個超級計算機,具備了RISC的一些基本特征。1975年Cocke到IBM的Yorktown研究中心開始研制IBM 801,801是最早開始設(shè)計的RISC處理器,Cocke獲得了Eckert-Mauchly和Turing獎。 </p><p> 經(jīng)過半個世紀的發(fā)展。目前,比較有影響的 RISC 處理器產(chǎn)品有 Compaq 公司的 Alpha,HP 公司的 PA-RISC,IBM 公司的 Pow
28、er PC,MIPS 公司的 MIPS 和 Sun 公司的 Sparc。</p><p> 隨著我國信息化進程的不斷推進,計算機技術(shù)還將對我國的生產(chǎn)力的發(fā)展產(chǎn)生日益深遠的影響。近年來我國在CPU設(shè)計領(lǐng)域取得了一些重大突破,相繼研制出龍芯系列、方舟系列高性能CPU,此外位于臺灣的威盛電子也是較大的處理器生產(chǎn)商。然而我國的CPU設(shè)計及制造技術(shù)與國外相比還有很大差距,我國信息產(chǎn)業(yè)中與 CPU 相關(guān)的許多核心技術(shù)及產(chǎn)品
29、仍然主要依賴進口,不僅經(jīng)濟上受制于人,而且信息系統(tǒng)的安全乃至國家安全也面臨威脅。FPGA 技術(shù)自20世紀80年代中期出現(xiàn)至今,引起了電子設(shè)計技術(shù)的深刻變革,也成為現(xiàn)代電子設(shè)計技術(shù)的核心。因此,基于FPGA技術(shù)的CPU設(shè)計具有較高的研究價值[6]。</p><p> 1.5課題研究的主要內(nèi)容 </p><p> 本課題擬在FPGA開發(fā)板上設(shè)計一個RISC CPU,一個五級流水線的RISC
30、 CPU。設(shè)計包括主體設(shè)計,指令集設(shè)計,流水線冒險分析與解決,各功能模塊的簡要說明。最終實現(xiàn)一個簡單的計算器。</p><p> 1、流水線冒險分析及處理。</p><p> 2、設(shè)計五級流水的RISC CPU。</p><p> 3、LCD12864顯示實驗。簡單計算器的實現(xiàn)。</p><p> 2方案設(shè)計與總體設(shè)計</p&g
31、t;<p> 2.1 RISC CPU的方案設(shè)計</p><p> 圖 2-1 總體設(shè)計方案圖</p><p> SOC包括硬件和軟件設(shè)計兩部分,在硬件設(shè)計中,一般采用Top-down的流程進行設(shè)計,將系統(tǒng)按功能進行劃分,在確定各個模塊的功能后,開始編寫代碼實現(xiàn)相應(yīng)的功能,并進行功能驗證,當(dāng)所有模塊的功能符合要求后,依據(jù)頂層總體設(shè)計框圖,將各功能模塊連接起來,最后通
32、過軟硬件的協(xié)同調(diào)試,證明系統(tǒng)功能的完備性[8]。</p><p><b> 2.2方案評價</b></p><p><b> 一、CPU的選取</b></p><p> 方案一:選用8位的字長,數(shù)據(jù)總線為8位。數(shù)據(jù)處理的能力較弱,性能較差,資源占有率較小。</p><p> 方案二:選用16
33、位的字長,數(shù)據(jù)總線為16位。數(shù)據(jù)處理的能力較強,性能較好,資源占有率適中。</p><p> 方案三:選用32位的字長,數(shù)據(jù)總線為32位。數(shù)據(jù)處理的能力最強,性能最好,資源占有率較大。</p><p> 通過比較三個方案的特點,最終選用16位CPU。</p><p><b> 二、指令的選取</b></p><p>
34、; 方案一:選用已有的指令集,比如ARM指令集或MIPS指令集。采用已有的指令集可以直接使用現(xiàn)成的編譯環(huán)境,指令比較豐富、全面。但是部分指令較為復(fù)雜,不易實現(xiàn),或能被別的指令組合代替,有一定的局限性。</p><p> 方案二:選用自定義指令集,即選取最常用的指令。針對具體的功能,設(shè)計指令集。這種方式實現(xiàn)起來比較方便,編程能夠做到心中有數(shù)。</p><p> 通過比較兩種方案的特點,
35、最終選用自定義指令集。</p><p><b> 三、指令長度的選定</b></p><p> 方案一:選用固定的指令長度。一般的CPU的指令長度都是固定的,如8位、16位、32位等。這些指令長度都是8的倍數(shù),這樣便于數(shù)據(jù)存儲在數(shù)據(jù)存儲器中,也便于地址對齊。但使用固定指令長度,CPU設(shè)計中就會有一定的局限性,如果需要增加新的指令集,需要整體上進行改動,不易操作。&
36、lt;/p><p> 方案二: 自定義指令長度。由于指令長度不是8的倍數(shù),不容易存放進Block Memory Access中。但是指令容易擴展,編寫起來也方便。</p><p> 通過比較以上兩種方案的特點,最終選用自定義指令長度。</p><p> 四、系統(tǒng)框架的設(shè)計:</p><p> 方案一:采用3級流水,取指、譯碼、執(zhí)行。<
37、;/p><p> 方案二:采用4級流水,取指、譯碼、執(zhí)行、存儲。</p><p> 方案三:采用5級流水,取指、譯碼、執(zhí)行、存儲、回寫。</p><p> 綜上所述,流水線級數(shù),寄存器越多,組合延時造成的延時就越低,最長路徑越短,主頻越高。所以本設(shè)計選用5級流水作為系統(tǒng)框架。</p><p><b> 2.3 流水線</b
38、></p><p> 2.3.1 流水線的簡單介紹</p><p> 圖 2-2 五級流水線時空圖</p><p> 流水線:流水線(pipeline)技術(shù)是指在程序執(zhí)行時多條指令重疊進行操作的一種準并行處理實現(xiàn)技術(shù)。流水線是Intel首次在486芯片中開始使用的。流水線的工作方式就象工業(yè)生產(chǎn)上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條
39、指令處理流水線,然后將一條X86指令分成5—6步后再由這些電路單元分別執(zhí)行,這樣就能實現(xiàn)在一個CPU時鐘周期完成一條指令,從而提高CPU的運算速度。經(jīng)典奔騰每條整數(shù)流水線都分為四級流水,即指令預(yù)取、譯碼、執(zhí)行、寫回結(jié)果,浮點流水又分為八級流水。</p><p> 2.3.1 流水線的冒險分析及處理</p><p> 流水線處理中,由于各個階段的依賴關(guān)系、硬件資源的競爭等原因,會出現(xiàn)操作
40、無法執(zhí)行的情況。造成流水線故障的原因成為冒險,冒險分為結(jié)構(gòu)冒險、數(shù)據(jù)冒險、Load冒險和控制冒險4種類型。</p><p> ?。ㄒ唬┙Y(jié)構(gòu)冒險:結(jié)構(gòu)冒險是由于取址和存儲階段都會對存儲器進行訪問,產(chǎn)生的沖突,如果使用哈佛結(jié)構(gòu)將程序和數(shù)據(jù)分開,就不會出現(xiàn)沖突。構(gòu)造冒險是由于硬件資源的競爭,操作無法同時執(zhí)行的情況。流水線結(jié)構(gòu)中,內(nèi)存訪問會造成構(gòu)造冒險。IF階段和MEM階段都要涉及內(nèi)存訪問。由于內(nèi)存訪問使用的總線是共享資
41、源,無法同時進行操作。因此,如果發(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è)置,即可解決構(gòu)造冒險的問題。這種物理上將指令和數(shù)據(jù)用的內(nèi)存與訪問通道分開的構(gòu)架成為哈佛架構(gòu)。哈佛構(gòu)架的優(yōu)點是,就算指令訪問和數(shù)據(jù)訪問同時發(fā)生也不會發(fā)生冒險的情況。但是,也有指令和數(shù)據(jù)地
42、址空間不同的缺點。在哈佛構(gòu)架中,指令的0號地址和數(shù)據(jù)的0號地址指向不同的內(nèi)容。這會引起軟件設(shè)計上的問題。</p><p> ?。ǘ?shù)據(jù)冒險:數(shù)據(jù)冒險是指,由于指令執(zhí)行所需要的數(shù)據(jù)還未準備好所引起的冒險情況。當(dāng)即將執(zhí)行的指令依賴于還未處理完成的數(shù)據(jù)時,會導(dǎo)致指令無法立刻開始執(zhí)行,引發(fā)數(shù)據(jù)冒險。為了回避數(shù)據(jù)冒險,我們使用一種稱為直通(Forwarding)的方法。原本回寫運算結(jié)果在WB階段,但實際上決定運算結(jié)果是在
43、EXE階段。因此直通是指在運算結(jié)果確定的EXE階段,將數(shù)據(jù)直接傳遞給下一條指令。</p><p> 直通的示例如圖2-3所示。示例中使用流水線執(zhí)行3條數(shù)據(jù)依賴關(guān)系的指令,以此說明直通的動作原理。第二條指令要使用第一條指令的結(jié)果。第一條指令在EX階段可以確定運算結(jié)果后,直接將結(jié)果發(fā)送到處于ID階段的第二條指令。第三條指令同時依賴于第一和第二條指令。因此,可以直接從處于MEM階段的第一條指令和處于EX階段的第二條指
44、令獲取數(shù)據(jù)。以這種將運算結(jié)果直通的方式,可以消除原本需要等待WB階段完成的依賴關(guān)系。</p><p> 圖 2-3 直通示例</p><p> 使用直通解決依賴關(guān)系的方法僅有一個例外,就是數(shù)據(jù)需要使用Load指令從內(nèi)存調(diào)取的情況。由于內(nèi)存的訪問在MEM階段執(zhí)行,因此處理結(jié)果要在MEM階段才能夠確定。而當(dāng)前指令執(zhí)行到MEM結(jié)束時,下一條指令已經(jīng)到達EX階段執(zhí)行了。這與直通的機制不吻合。&
45、lt;/p><p> ?。ㄈ㎜oad冒險:如果當(dāng)前指令需要的操作數(shù)還未取出來,將產(chǎn)生Load冒險。對于Load冒險,將IF階段阻塞一個周期,將DEC階段刷新一個周期,即可解決Load冒險。這種依賴Load指令而發(fā)生的冒險成為Load冒險。Load冒險不能從根本上避免,因此要將有依賴關(guān)系的指令進行阻塞以解決問題。阻塞是指讓流水線的特定階段停止一段時間。Load冒險發(fā)生的流水線動作如圖2-4所示。</p>
46、<p> 圖 2-4 Load冒險發(fā)生時的流水線的動作</p><p> 如果有Load冒險發(fā)生,則將有依賴關(guān)系的指令延遲一個周期執(zhí)行。如果將指令阻塞一個周期,前一條指令在MEM階段得到的數(shù)據(jù)就可以直通到正在ID階段的下一條指令。這時候,流水線會浪費一個周期,這一周期讓其傳遞無效的數(shù)據(jù)即可。這個操作稱為流水線冒泡。如果Load指令和其有依賴關(guān)系的指令相差一條指令以上的距離,則不會發(fā)生Load冒險
47、。作為有效的處理操作的方法,在編譯器中使用適當(dāng)?shù)恼{(diào)度算法也可以有效避免Load冒險。</p><p> ?。ㄋ模┛刂泼半U:控制冒險是指無法確定下一條指令而引發(fā)的冒險情況。當(dāng)不知道下一條是否執(zhí)行時,就會產(chǎn)生控制冒險。我們可以插入延時間隙來解決,不管是否跳轉(zhuǎn),延時間隙一定會執(zhí)行,一般使用NOP。我們在程序中每一條跳轉(zhuǎn)指令后面添加一條NOP指令來實現(xiàn)跳轉(zhuǎn)。</p><p> 控制冒險也無法從根
48、本上避免,但是可以盡量將分支指令安排打到流水線前段,從而減少因為控制冒險而引起的無效指令的數(shù)量。比如在ID階段判定分支后,延遲一個周期就可以開始執(zhí)行分支指向的下一條指令。</p><p> 因為在讀取下一條指令前需要確定PC寄存器的值,即使在ID階段判定分支也會產(chǎn)生一個周期的延遲。延遲期間會讓流水線傳送無效數(shù)據(jù)。流水線冒泡會浪費硬件資源,因此可以采用延遲分支的方法,許可分支指令的下一條指令執(zhí)行。延遲分支是指將分
49、支指令執(zhí)行后并不立刻跳轉(zhuǎn)到分支結(jié)果指向的指令,在分支指令的下一條指令執(zhí)行完畢后再進行跳轉(zhuǎn)。分支指令的下一條指令被稱為延遲間隙,不論分支是否成立都會被執(zhí)行。使用延遲分支可以避免流水線冒泡,使操作的處理更有效率。一般的分支與延遲分支和采用了延遲分支的流水線執(zhí)行過程如圖所示。</p><p> 圖 2-5 采用了延遲分支的流水線執(zhí)行過程</p><p> 2.4 RISC CPU的總體設(shè)計
50、</p><p><b> 總體設(shè)計框圖</b></p><p> 圖 2-6 總體設(shè)計方案</p><p> IF(Instruction Fetch)階段</p><p> 將PC的值發(fā)送到內(nèi)存,讀取指令。</p><p> ID(Instruction Decode)階段</
51、p><p> 將讀取到的指令解碼并決定將要進行的操作,從寄存器堆讀取數(shù)據(jù)。</p><p> EX(Execution)階段</p><p> 使用運算器執(zhí)行操作。</p><p> MEM(Memory Access)階段</p><p><b> 進行內(nèi)存訪問。</b></p>
52、;<p> WB(Write Back)</p><p> 將結(jié)果寫回寄存器堆。 </p><p> 二、總體設(shè)計的主要內(nèi)容</p><p><b> 1指令集的選取原則</b></p><p><b> ?。ㄒ唬┚喼噶钕到y(tǒng)</b></p><p>
53、 ?。ǘ┎捎眉拇嫫?-寄存器工作方式(除Load/Store指令訪問存儲器外)</p><p> ?。ㄈ┲噶钤谝粋€周期完成并采用流水線技術(shù)。</p><p> ?。ㄋ模┦褂幂^多的通用寄存器</p><p> ?。ㄎ澹┐蠖嗖捎糜策B線控制[9]。 </p><p> 2指令集的分類及格式</p><p><b&
54、gt; 指令集的分類</b></p><p> ?、偎阈g(shù)邏輯運算操作指令:空操作(NOP)、寄存器間的加(ADDR)、寄存器與立即數(shù)之間的加(ADDI)、寄存器之間的減(SUBR)、寄存器與立即數(shù)之間的減(SUBI)、寄存器之間的邏輯與(ANDR)、寄存器與立即數(shù)之間的邏輯與(ANDI)、寄存器之間邏輯或(ORR)、寄存器與立即數(shù)之間的邏輯或(ORI)、寄存器之間的邏輯異或(XORR)、寄存器與立即
55、數(shù)之間的邏輯異或(XORI)、寄存器之間的賦值(MOVR)、寄存器與立即數(shù)之間的賦值(MOVI)、算數(shù)左移(ROL)、算數(shù)右移(ROR)。</p><p> ?、诖鎯ζ骱虸O操作指令:加載(LOAD)和存儲(STORE)。加載指令是把存儲器或IO端口數(shù)據(jù)加載到累加器中。存儲指令把累加器數(shù)據(jù)寫到存儲器或IO端口[10]。</p><p> ?、劭刂浦噶睿簾o條件(JMP)和非零轉(zhuǎn)移(JNE)。
56、無條件轉(zhuǎn)移指令控制程序跳轉(zhuǎn)到目的地址開始執(zhí)行。非零條件轉(zhuǎn)移指令時,先判斷累加器的值,如果不為0,則跳轉(zhuǎn)到下一條指令開始執(zhí)行,否則順序執(zhí)行。</p><p> ④其他指令:停機指令(STOP)。 </p><p><b> 具體指令見表1</b></p><p> 表格 2-7 指令集
57、
58、
59、 </p><p><b> 指令格式</b></p><p> 為了能夠擴展更多的指令,立即數(shù)能夠表達更多的范圍,不受指令長度的限制,本課題中采用了26位長的指令,指令格式見表2。</p><p> 表格 1-8 指令格式</p><p> 指令的高5位表示操作碼,
60、最多可擴展至32條指令;RA和RB是通用寄存器地址,通過對通用寄存器堆進行尋址,獲取數(shù)據(jù)參與算術(shù)邏輯運算;dir、offset和imm組合用來表示立即數(shù),dir表示算術(shù)循環(huán)的方向,算數(shù)循環(huán)左移或右移,offset代表移多少位,imm代表8位位圖??偟膩碚f,立即數(shù)的表示范圍為8位立即數(shù)循環(huán)左移或右移0~15位。</p><p><b> 尋址模式</b></p><p&g
61、t; 在本設(shè)計中,主要用到了一下兩種尋址方式:</p><p> 寄存器尋址:其操作數(shù)是某寄存器,主要用于算術(shù)邏輯運算指令;</p><p> 立即數(shù)尋址:其操作數(shù)是立即數(shù),主要用作跳轉(zhuǎn)指令的地址?;蜃鳛槌?shù)參與算術(shù)邏輯運算。 </p><p><b> 3 FPGA設(shè)計</b&
62、gt;</p><p> 3.1 頂層模塊的設(shè)計</p><p> 整個系統(tǒng)劃分為兩個部分:一部分是數(shù)據(jù)單元,另一部分是控制單元。其中數(shù)據(jù)單元包含保存運算數(shù)據(jù)和運算結(jié)果的寄存器和用來完成數(shù)據(jù)運算的執(zhí)行單元;控制單元是處理器系統(tǒng)的核心單元,準確無誤的產(chǎn)生數(shù)據(jù)通路所需的控制信號[11],在本設(shè)計中由于沒有實現(xiàn)中斷的功能,所以控制器的作用大大降低。</p><p>
63、 譯碼器相當(dāng)于正真的控制器,產(chǎn)生各種控制信號。</p><p> 頂層模塊由分頻模塊、程序存儲器、取指譯碼流水線寄存器、譯碼器、通用寄存器組、譯碼寄存器、算數(shù)邏輯運算單元、執(zhí)行存儲流水線寄存器、多路選擇器、數(shù)據(jù)存儲器、存儲回寫流水線寄存器、控制器組成。 </p><p> 3.1.1 分頻模塊</p><p> 圖 3-1 分頻模塊</p>
64、<p> 作用:主要是對系統(tǒng)時鐘進行12分頻。因為CPU的主頻過高的話,刷新LCD12864的時候會出現(xiàn)亂碼,如果將主頻降低12倍之后,就不會出現(xiàn)亂碼。功能:主要是用于分頻,將系統(tǒng)的時間降下來。</p><p> 3.1.2 程序存儲器</p><p> 圖 3-2 程序存儲器</p><p> 作用:程序存儲器是存放指令的地方,地址總線位寬為
65、12位,最大尋址范圍為212=4096。指令的長度為26位。這里沒有采用調(diào)用Block ROM IP核的方式進行存儲,而是直接使用寄存器組進行查表的方法,二進制代碼對于編程者可見,這樣方便編寫程序以及查找錯誤。</p><p> 功能:主要是存放指令,每一個時鐘周期進行一次取指。 </p><p> 3.1.3 IF/ID流水線寄存器</p><p> 圖
66、3-3 IF/ID流水線寄存器</p><p> 作用:將上一級產(chǎn)生指令insn進行寄存。同時還接收來自ctrl控制器的刷新信號和來自ID譯碼器阻塞信號(刷新是讓所有的寄存器都復(fù)位,重新啟動流水線。阻塞是讓某個寄存器保持一個周期)。PC地址更新也在這個地方。</p><p> 內(nèi)部集成了一個多路選擇器。 </p><p> PC地址的來源有三個:</p
67、><p> ?、俪绦蝽樞驁?zhí)行時,存放指令地址的寄存器PC;</p><p> ②譯碼器傳來的跳轉(zhuǎn)指令;</p><p> ?、壑袛嗟刂罚ūA?,待實現(xiàn))。</p><p> 功能:將上一級的信號進行緩沖,PC地址更新。</p><p> 3.1.4 DEC譯碼器</p><p><b>
68、; 圖 3-4 譯碼器</b></p><p> 作用:譯碼器是CPU中最復(fù)雜的單元,主要是對上一級傳來的指令進行譯碼,根據(jù)不同指令產(chǎn)生不同的控制信號。譯碼器在接收到指令后,首先對指令的各字段進行分析,將指令的操作碼部分提供給內(nèi)部控制單元,根據(jù)源操作數(shù)和目的操作數(shù)的地址從通過寄存器組中獲取執(zhí)行單元所需的數(shù)據(jù),并根據(jù)指令確定回寫時的目的。將立即數(shù)進行擴展成16位。</p><p&
69、gt; 主要是對來自IF階段的指令進行解碼,同時還接收來自EXE階段和MEM階段的直通,在這里對跳轉(zhuǎn)指令進行判斷,在下一個周期之前跳轉(zhuǎn)。</p><p> 分支的判定在ID階段進行。我們采用了延遲分支機制,也就是說,分支指令的下一條被作為延遲間隙執(zhí)行,以規(guī)避控制冒險。EX階段和MEM階段的處理結(jié)果也可以直通到ID階段,以規(guī)避數(shù)據(jù)冒險。流水線寄存器的停滯與刷新和流水線的控制操作由控制單元負責(zé)。</p>
70、;<p> 26位的指令,高5位代表指令操作。對于運算類的雙操作指令來說,12~20位中包含有通用寄存器的地址,通過對通用寄存器尋址,可以得到兩個16位的數(shù)據(jù)。如果是Load指令,就是將數(shù)據(jù)存儲器中的數(shù)據(jù)載入到寄存器中。因此,低八位中包含寄存器的地址和數(shù)據(jù)存儲器的地址。如果是Store指令,就是將寄存器中的數(shù)據(jù)存儲到數(shù)據(jù)存儲器中。因此,低八位中高四位作為寄存器的地址,取出一個16位的數(shù)據(jù),然后將數(shù)據(jù)傳到存儲級。 <
71、/p><p> 包括立即數(shù)生成模塊,分支處理模塊,地址生成模塊。</p><p><b> 立即數(shù)生成模塊:</b></p><p> 使用非阻塞賦值,能夠?qū)崿F(xiàn)對立即數(shù)進行擴展。實現(xiàn)8位立即數(shù)循環(huán)左移或右移16位。</p><p> 圖 3-5 立即數(shù)生成模塊</p><p><b>
72、; 分支處理語句:</b></p><p> 當(dāng)轉(zhuǎn)移條件成立時,能夠?qū)⒎种У刂贩祷氐絀F/ID流水線寄存器。</p><p> 圖 3-6 分支跳轉(zhuǎn)代碼</p><p><b> 地址生成語句:</b></p><p> 圖 3-7 地址生成代碼</p><p> 3.1.
73、6 通用寄存器組</p><p> 圖 3-8 通用寄存器組</p><p> 作用:用于保存源操作數(shù)和運算結(jié)果。通用寄存器組包含16*16bit的數(shù)據(jù),具有兩組讀數(shù)據(jù)地址數(shù)據(jù)總線和一組寫數(shù)據(jù)地址數(shù)據(jù)總線。讀數(shù)據(jù)由于使用組合邏輯,幾乎沒有延時,數(shù)據(jù)能夠及時更新。對于寫數(shù)據(jù)采用時序電路,在上升沿更新。</p><p> 主要存放臨時數(shù)據(jù),R15在函數(shù)調(diào)用時,用來
74、存儲當(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)用前的下一條指令保存到R15寄存器中,供返回使用。由于可能會遇到多層函數(shù)調(diào)用,因此在每次進入函數(shù)之后首先必須將R15壓棧,在返回函數(shù)執(zhí)行之前,將堆棧的中數(shù)據(jù)彈出,從而實現(xiàn)多層函數(shù)調(diào)用
75、。</p><p> 這里設(shè)計了兩個讀端口,一個寫端口。對寄存器堆的讀寫主要通過寄存器號來進行,讀取寄存器是不會更改其內(nèi)容的。而對于往寄存器中寫數(shù)據(jù),需控制何時寫入,所以除了寄存器號以外,所寫數(shù)據(jù)及寫控制信號也是必不可少的。核心控制單元負責(zé)處理器中全部其他五個部件的協(xié)調(diào)工作,控制指令和數(shù)據(jù)流按照取值、譯碼、執(zhí)行、回寫的順序正確執(zhí)行,同時負責(zé)其他外圍信號的處理。</p><p> 3.1
76、.7 ID/EXE流水線寄存器</p><p> 圖 1-9 ID/EXE流水線寄存器</p><p> 作用:主要是對上一級的數(shù)據(jù)進行緩沖。譯碼執(zhí)行流水線寄存器。唯一特殊的部分是有一個刷新端。當(dāng)刷新端有效時,所有的數(shù)據(jù)被賦初值。</p><p> 3.1.8 ALU算術(shù)邏輯單元:</p><p> 圖 3-10 ALU算術(shù)邏輯單
77、元</p><p> 作用:完成對2個操作數(shù)A和B的運算,包括算術(shù)運算、邏輯運算和移位運算,輸出運算結(jié)果,比較運算,并且生成n、z、c、v標志位控制信號[12]。執(zhí)行單元是微處理器處理數(shù)據(jù)的核心部分,數(shù)據(jù)寬度為16位,具有加、減、乘邏輯運算和移位功能。</p><p> 功能:根據(jù)來自上一級寄存器中的算數(shù)邏輯操作碼,對兩個操作數(shù)進行不同的操作。包括直通、加法、減法、與、或、非、異或、算
78、數(shù)左移、算數(shù)右移等。</p><p> 3.1.9 EXM/MEM流水線寄存器</p><p> 圖 3-11 EXE/MEM流水線寄存器</p><p> 功能:主要是將計算得到的結(jié)果進行緩沖,以及回寫的地址和使能端、存儲的地址、數(shù)據(jù)、使能端。具有刷新端,當(dāng)刷新端有效時,所有的寄存器都被清零。</p><p> 3.1.10 RA
79、M數(shù)據(jù)存儲器</p><p> 圖 3-12 RAM數(shù)據(jù)存儲器</p><p> 作用:存儲數(shù)據(jù),與外部進行通信。</p><p> GPIO作為數(shù)據(jù)存儲器的一部分被編址,GPIO可以分為輸入端口、輸出端口、輸入輸出端口,本設(shè)計中只設(shè)計了輸入端口、輸出端口。基本上實現(xiàn)了與外界的通信。</p><p> 3.1.12 多路選擇器<
80、;/p><p> 圖 3-13 多路選擇器</p><p> 作用:通過存儲的片選端判斷當(dāng)前的指令是算數(shù)邏輯指令還是存儲指令。</p><p> 3.1.13 MEM/WB流水線寄存器</p><p> 圖 3-14 MEM/WB流水線寄存器</p><p> 存儲回寫寄存器:主要是將要回寫到通用寄存器中的數(shù)據(jù)
81、進行緩沖。下一個周期將其寫入指定的寄存器中。</p><p> 3.1.14 堆棧的設(shè)計:</p><p><b> 圖 3-15 堆棧</b></p><p> 作用:堆棧是用來臨時存儲數(shù)據(jù)。</p><p> 一般在對函數(shù)進行調(diào)用時,可能會存在函數(shù)嵌套的問題,因在函數(shù)中再次調(diào)用其他函數(shù)而導(dǎo)致返回地址的丟失。如
82、果在進行函數(shù)之前將PC的地址進行壓棧,函數(shù)返回之前進行出棧,可以有效的解決函數(shù)嵌套的問題。堆棧的深度只有16級,由于沒有異常處理,因此在編程的時候需注意堆棧溢出。</p><p> 這里的堆棧只是簡單的采用了雙向移位寄存器。圖3-16為堆棧的仿真測試圖,</p><p> 將4個數(shù)分別依次壓入棧中,然后依次取出,從仿真結(jié)果可知,堆棧數(shù)據(jù)無異常。</p><p>
83、 圖 3-16 堆棧仿真測試圖</p><p> 3.1.15 控制器</p><p> 圖 3-17 控制器</p><p> 作用:控制器主要負責(zé)回寫操作。產(chǎn)生Load冒險信號。</p><p> 由于沒有中斷處理機制,控制器的功能有所弱化。本設(shè)計中控制器主要用于控制通用寄存器的回寫操作?;貙憜卧谠O(shè)計中是不可見的,其功能已隱含
84、到寄存器堆中,這樣執(zhí)行單元在接收下一個運算命令的同時,寄存器堆將上一個結(jié)果保存起來。</p><p><b> 3.2 整體測試</b></p><p> 本設(shè)計采用實驗室自主設(shè)計的SP6開發(fā)板進行硬件實現(xiàn),開發(fā)板上所使用的芯片型號為Spartan6 LX9。</p><p> 通過對在程序程序存儲器中寫程序,可以實現(xiàn)相應(yīng)的功能,再次編寫
85、LCD12864驅(qū)動。本次測試的主要功能是簡單的計算器。鍵盤通過PS2協(xié)議與</p><p> CPU進行通信。調(diào)用FPGA內(nèi)部的PS2模塊來將鍵盤對應(yīng)的鍵值進行譯碼,然后直接傳送到RISC CPU進行相應(yīng)的操作,最終實現(xiàn)簡單的計算器功能。圖3-19為初始化時的界面。</p><p> 圖 3-19 實驗現(xiàn)象</p><p><b> 結(jié)論</
86、b></p><p> 本文主要介紹了EDA嵌入式開發(fā)板案例設(shè)計----綜合模塊之一的RISC CPU的設(shè)計。通過對RISC CPU設(shè)計過程中出現(xiàn)的流水線冒險進行分析,并解決相應(yīng)的問題,最終實現(xiàn)了RISC CPU的設(shè)計,并在自制的FPGA開發(fā)板SP6實現(xiàn)計算器的功能。通過對RISC CPU的了解,查閱大量書籍,終于明白了流水線的意義。先對指令集進行了劃分,然后根據(jù)指令集將CPU劃分為5個階段,取指、譯碼、
87、執(zhí)行、存儲、回寫。這5個階段。同時也對應(yīng)于5級流水。通過對RISC CPU的制作。使我對CPU有了進一步的了解。實現(xiàn)功能:</p><p> 本文設(shè)計的RISC CPU能夠執(zhí)行簡單的算術(shù)運算(加減法運算)、邏輯運算(與、或、非、異或)、跳轉(zhuǎn)(直接跳轉(zhuǎn)、條件跳轉(zhuǎn))、堆棧處理,基本上實現(xiàn)了簡單CPU的功能,能夠?qū)崿F(xiàn)函數(shù)的調(diào)用和堆棧的壓棧。當(dāng)然還有一些不完善處,本CPU沒有中斷機制,不能處理中斷。由于匯編器比較簡單,
88、沒有使用復(fù)雜的算法,在編寫跳轉(zhuǎn)指令時,只能通過手動添加NOP指令來實現(xiàn)無延時跳轉(zhuǎn)。期望,后期能夠?qū)⒅袛嗉舆M去,豐富指令,擴展功能。</p><p><b> 參考文獻</b></p><p> [1] 劉覽,鄭步生,施慧彬.基于FPGA的32位RISC微處理器設(shè)計 [J].數(shù)據(jù)采集與處理,20011,26(3):367-373.</p><p&
89、gt; [2] 周敏,付慧生,李雪峰.基于流水線的RISC微處理器設(shè)計[J].大眾科技,</p><p> 2006,5(91):55-57.</p><p> [3] 曲英杰.RISC處理機設(shè)計方法研究 [J].科技信息,2010(33):26-26.</p><p> [4] 汪濤,徐正安.基于FPGA的RISC的設(shè)計和仿真.微機型與應(yīng)用.2012,31
90、(15).</p><p> [5] 錢彬豐,汪西川.一款RISC型流水線MCU的設(shè)計與實現(xiàn) [J].儀器儀表,2008(9):20-22.</p><p> [6] 馬軍爽.基于FPGA的16位CPU設(shè)計 [J].山東工業(yè)技術(shù).2013(14):237-241.</p><p> [7] 龍慧民,吳靜.基于FPGA的RISC CPU設(shè)計.兵工自動化.2006
91、,25(12).</p><p> [8] 姚愛紅,孫孟哲,吳劍.16位嵌入式微處理器核的設(shè)計及驗證.計算機工程.2010,36(23):234-239.</p><p> [9] 雷少波,黃民. 16位嵌入式RISC微處理器設(shè)計 [J]. 微型機與應(yīng)用.2013,32(7).</p><p> [10] 王海涌,徐樹.基于FPGA的RISC CPU設(shè)計.大眾
92、科技.2010(1):33-34.</p><p> [11] 李麗,高明倫,張多利,程作仁.8位RISC微控制器IP軟核的設(shè)計 [J].微電子學(xué)與計算機.2001(3).</p><p> [12] 郭怡慧,張立朝,戴紫彬.RISC微處理器指令擴展接口設(shè)計.小型微型計算機系統(tǒng).2014,8(8):1827:1830.</p><p> [13] 曹蓓,黃海生
93、.一種基于FPGA的SOC設(shè)計與實現(xiàn) [J].電子設(shè)計工程.2014,22(2):16-19.</p><p> [14] 水頭一壽(日),米澤遼(日),藤田裕士(日).CPU自制入門 [M]. 北京:人民郵電出版社,2014.</p><p> [15] 王育堅.VC++面向?qū)ο缶幊探坛蘙M].清華大學(xué)出版社,2007.</p><p><b>
94、致謝</b></p><p> 時光飛逝,轉(zhuǎn)眼大學(xué)四年學(xué)習(xí)即將結(jié)束?;厥状髮W(xué)學(xué)習(xí)期間的校園學(xué)習(xí)生活,在知識的海洋里汲取營養(yǎng)和體味獲取知識的充實與喜悅,不禁感慨萬千。</p><p> 大學(xué)四年轉(zhuǎn)眼間就過去了,回首大學(xué)四年時光,我是幸運的。</p><p> 大一的時候,我還懵懵懂懂,找不到未來的方向。大三下學(xué)期的一次校電子競賽徹底改變了我的生活。那
95、時,我和另外2位同伴一起參加。至此我的大學(xué)生活就與其他同學(xué)完全不同。我的絕大部分時間都在實驗室度過。雖然實驗室的生活很枯燥,很單調(diào),很乏味,但那種學(xué)到手的內(nèi)心充實,是普通的玩樂所無法提供的。</p><p> 由衷感謝從始至終都教育我,指導(dǎo)我的朱耀東老師,以及和我一起學(xué)習(xí),一起在實驗室成長的同學(xué)們。謝謝大家!</p><p><b> 附錄</b></p&g
96、t;<p> 附錄圖1 實驗平臺</p><p> 附錄圖2 頂層文件結(jié)構(gòu)框圖</p><p> 附錄圖3:實際的框圖</p><p> 附錄4 部分測試代碼</p><p> architecture Behavioral of ROM is</p><p> type mem
97、_program is array(0 to 188)of std_logic_vector(25 downto 0);</p><p> signal mem : mem_program:= --地址 </p><p> (--開始跳轉(zhuǎn)(0000000)</p><p> "10010000000000000010100000",--0
98、JMPI MAIN; "00000000000000000000000000", --1 NOP </p><p> --保留 (0000010)</p><p> "10010000000000000000000000",--2 JMPI xxx 外部中斷 </p>
99、<p> "00000000000000000000000000", -- 3 NOP </p><p> "10010000000000000000000000",-- 4JMPI xxx串口中斷 </p><p> "00000000000000000000000
100、000", -- 5 NOP </p><p> "10010000000000000000000000",--6JMPIx定時器中斷 </p><p> "00000000000000000000000000", -- 7 NOP</p><p> --
101、延時函數(shù) (0001000)</p><p> "11101111100000000000000000", -- 8 PUSH PC;</p><p> "00010000100000010110011100",--9DELAY:MOVI R1,5000; </p><p> "001100001000
102、00000000000001",--10LOOP1:SUBI R1,1; </p><p> "10100000000000000000001010",--11 JNEI LOOP1; </p><p> "00000000000000000000000000"
103、, --12 NOP; </p><p> "00110001100000000000000001",--13 SUBI R3,1; </p><p> "10100000000000000000001001",--14JNEI DELA
104、Y;</p><p> "00000000000000000000000000", --15 NOP; </p><p> "11110111100000000000000000", --16 POP PC;</p><p> "11100111100000000000000000", --17
105、RET R15; "00000000000000000000000000", --18 NOP; </p><p> --發(fā)送指令 (R7)(0010011)</p><p> "11101111100000000000000000", --19 PUSH PC;</p><p> "0001000
106、0100000000000000000", --20 COM MOVI R1,0; </p><p> "11010000100000000000000000", --21 STORE R1,M0; </p><p> "00010000100000000000000000", --22 MO
107、VI R1,0; </p><p> "11010000100010000000000000", --23 STORE R1,M1; </p><p> "00001000101110000000000000", --24 MOVR R1,R7; </p><p> "11010
108、000100110000000000000", --25 STORE R1,M3; </p><p> "00010000100000000000000001", --26 MOVI R1,1;</p><p> "11010000100100000000000000", --27 STORE R1,M2
109、; </p><p> "00010001100000000000000101", --28 MOVI R3,5; </p><p> "11011000000000000000001000", --29 CALL DELAY;</p><p> "00000000000000
110、000000000000", --30 NOP; </p><p> "00010000100000000000000000", --31 MOVI R1,0; </p><p> "11010000100100000000000000", --32 STORE R1,M2;
111、 </p><p> "11110111100000000000000000", --33 POP PC;</p><p> "11100111100000000000000000", --34 RET R15; </p><p> "000000000000000000
112、00000000", --35 NOP; </p><p> --發(fā)送數(shù)據(jù) (R7)(100100)</p><p> "11101111100000000000000000", --36 PUSH PC;</p><p> "00010000100000000000000001", --3
113、7 DAT: MOVI R1,1; </p><p> "11010000100000000000000000", --38 STORE R1,M0; </p><p> "00010000100000000000000000", --39 MOVI R1,0; </p><p>
114、 "11010000100010000000000000",--40 STORE R1,M1; </p><p> "00001000101110000000000000", --41 MOVR R1,R7; </p><p> "11010000100110000000000000", -
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文——eda嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊
- 電子信息工程畢業(yè)設(shè)計eda嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊
- 電子信息工程畢業(yè)論文eda嵌入式實驗開發(fā)板案例設(shè)計---綜合模塊
- eda開發(fā)板經(jīng)費
- 嵌入式開發(fā)板測試項目管理模型.pdf
- eda開發(fā)板經(jīng)費
- 基于s3c2410x嵌入式教學(xué)實驗開發(fā)板的設(shè)計與制作
- CK510嵌入式軟件開發(fā)板的設(shè)計與實現(xiàn).pdf
- 基于Cortex-A8架構(gòu)嵌入式開發(fā)板的設(shè)計與實現(xiàn).pdf
- 基于國產(chǎn)龍芯GS32I的開發(fā)板的設(shè)計與嵌入式Linux的移植.pdf
- 嵌入式視頻模塊的研究與開發(fā).pdf
- ARM9實驗開發(fā)板設(shè)計.pdf
- 嵌入式實驗
- 【嵌入式】android嵌入式底層開發(fā)大綱
- 嵌入式醫(yī)用儀器測量模塊開發(fā)平臺.pdf
- 模塊式電源嵌入式監(jiān)控系統(tǒng)設(shè)計.pdf
- 基于dsp2812的實驗開發(fā)板設(shè)計
- 嵌入式驅(qū)動開發(fā)實驗指導(dǎo)書
- 試析飛思卡爾嵌入式教學(xué)綜合實驗的開發(fā)研究
- 嵌入式高速接口模塊的設(shè)計.pdf
評論
0/150
提交評論