【正文】
6):12— 16)。 總結 經(jīng) 過仿真測試, 本設計可以完成以下指令功能: 算術運算類指令 可以完成兩個 8位操作數(shù)的 加 ( ADD) 、減 (SUB)、與(AND)、 或 (OR)運算 并輸出結果 。 0111000110000010 ADD R1 , R2。 frompc_inc : IN STD_LOGIC 。 // 當寫信號有效時程序?qū)懭?,此時狀態(tài)機保持待機 elsif ( rising_edge(clk)) then case state is when exe= // 利用 case語句對每一個狀態(tài)建立一項 case語句的分支 If input =39。為了實現(xiàn)控制模塊的功能,可以將該模塊細化為兩個部分,即 控制指令操作的控制器和控制狀態(tài)轉(zhuǎn)換的有限狀態(tài)機 (FSM)。 case fromlogic is 山東大學威海分校畢業(yè)設計(論文) 17 … end case。 山東大學威海分校畢業(yè)設計(論文) 16 ALU 模塊 ALU 單元即算術運算單元,是 CPU 的核心處理的單元,不但能完成算術和邏輯運算,而且很多數(shù)據(jù)都要通過 ALU 送出到輸出端口并輸出。 圖 34指令寄存器外部接口 圖 34所示,指令寄存器的指令流向是: 4位操作碼 IR指令送往控制單元已做譯碼使用,而根據(jù)不同指令分離出來的要操作的立即數(shù) DATA、源操作寄存器RR、目的操作寄存器 RD送到寄存器堆 TRAM模塊。 PC_INC 控制信號來自控制單元,若 PC_INC 有效則 PC將執(zhí)行加 1 操作。 山東大學威海分校畢業(yè)設計(論文) 12 第三章 CPU 數(shù)據(jù)通路設計 從這一章開始將詳細介紹整 個 CPU 的 細化設計模塊。它們的輸出僅僅依賴于當前的輸入狀態(tài),沒有內(nèi)部存儲功能; ( 2) 寄存器堆、臨時寄存器都是狀態(tài)單元,它的輸出不僅依賴于輸入,還有其自身內(nèi)部的狀態(tài)。同時,程序計數(shù)器也是和流水線密切相關的單元。這種指令格式包括 LD, LSL, LSR 指令。這對現(xiàn)代微控制器應用十分重要,因為為了使掉電 后數(shù)據(jù)表不丟失,就要將它放在程序存儲器中, RISC 架構很好地解 決了這個問題。 山東大學威海分校畢業(yè)設計(論文) 4 第二章 微處理器體系結構 CPU 的功能和構成 CPU 是計算機的核心組成部分。典型的 RISC 處理器具有以下特點: ( 1) 指令功能簡單,各指令的復雜度分布均衡,有利于形成流水線; ( 2) 控制電路簡單,多采用硬連線方式來實現(xiàn)。不難看出,采用自頂向下的設計方法實際上就是基于芯片的系統(tǒng)設計方法,這種方法有助于在設計早期發(fā)現(xiàn)結構設計中的錯誤,提高設計成功率。簡單來說, SOC是一種將多個獨立的 VLSI設計拼合在一起,來形成某一應用所需的全部功能的集成電路,以其高集成度、低功耗等優(yōu)點越來越受歡迎 [1]。其中 CPU是 SOC的重要組成部分,可以完成簡單的數(shù)據(jù)處理,內(nèi)存的調(diào)度,中斷處理等操作。 ( 4) 具有良好的可移植能力 。 山東大學威海分校畢業(yè)設計(論文) 3 課題 工作內(nèi)容 本文一共分為七章。 執(zhí)行指令:根據(jù)分析指令時產(chǎn)生的“操作命令”形成相應的操作控制序列, 通過運算器、存儲器及輸入輸出的執(zhí)行,實現(xiàn)每條指令的功能,其中包括對運算結果的處理及下條指令地址的形成。再次,該微處理器采用了硬布線邏輯代替微程序控制的方法,提高了指令的執(zhí)行速度和效 率。 表 2 指令編碼 指令類型 指令機器碼 ADD 0001 0000 r r r r d d d d SUB 0010 0000 r r r r d d d d AND 0011 0000 r r r r d d d d OR 0100 0000 r r r r d d d d LSL 0101 0000 0000 d d d d LSR 0110 0000 0000 d d d d MOV 0111 LLLL HHHH d d d d ST 1000 0000 0000 d d d d LD 1001 0000 0000 d d d d SLEEP 1011 0000 0000 0000 山東大學威海分校畢業(yè)設計(論文) 8 指令時序分析 RISC 與流水線 指令的執(zhí)行分成兩個階段:取指階段和執(zhí)行階段。 CPU 整體結構即設計思想 在設計 CPU 之前整個結構的特性及由哪些模塊組成,這些模塊之間的 互連關系以及整個 CPU 的最后輸出信號等都是要事先定義好的 .。取指單元和執(zhí)行單元共同構成了 CPU 的微控制單元。第一種是在所有需要傳送數(shù)據(jù)的部件創(chuàng)建一條直接通路,采用多路選擇器或者緩沖器為那些有多個數(shù)據(jù)源的寄存器從多個可能的輸入中選擇一個,這種方案適用于規(guī)模比較小的微處理器設計。因為程序計數(shù)器可以尋址到 256條指令,所以程序存儲器也必需可以至少存放 128 條 16 位的指令 ,這樣只需申請一個變量 Ram,有 256個元素 ,每個元素 16 位即可。 時鐘發(fā)生器的外部接口如圖 35。取操作數(shù)單元在數(shù)據(jù)選擇的控制信號控制下,可以選取一個或者兩個操作數(shù)輸入執(zhí)行單元。 elsif fload =39。狀態(tài)機FSM的當前狀態(tài),由變量 state記錄。 //通過 ifthenelse語句指定相應次態(tài) when sp = when tj = end case。 SIGNAL en, nrst ,clkr: STD_LOGIC。算術運算指令后 8位分別是源操作數(shù)地址和目的操作數(shù)地址,將操作數(shù) 136和 129取出送入運算器中進行加法運算,最后結果輸出 165。 經(jīng)過對全部指令的簡單仿真測試 ,測試結果顯示, 本設計 能夠很好的執(zhí)行指令的預期功能,指令的時序和流水線操作與設計一致, 正確地實現(xiàn) 了 CPU的功 能 。 USE 。 fromen : IN STD_LOGIC 。 waddr : in unsigned(7 downto 0)。為了更深入的研究 CPU的設計就需要我更多的掌握知識,不斷學習才能更好的實現(xiàn) CPU的功能。 0001000000010010 ST R2; 1001000000000010 圖 56 存儲運算結果仿真 山東大學威海分校畢業(yè)設計(論文) 27 仿真結果如圖所示,算術加法指令將兩個操作數(shù) 36和 129執(zhí)行加法運算后,得 到結果 165,下一條指令時運算結果存儲指令,將上條指令得到的結果存到指定寄存器中,圖中 R2內(nèi)的值改變?yōu)?165,說明數(shù)據(jù)存儲成功。 0111010000100001 MOV R2, 129。 fromnrst : IN STD_LOGIC 。 then state = sp??刂茊卧淖饔镁褪菍χ噶钭g碼,在不同的狀態(tài)發(fā)出不同的控制信號來處理流水線過程,另一方面在合適的時間對數(shù)據(jù)通路發(fā)出正確的控制信號來控制指令的正確執(zhí)行。 Process (a1, b1, fromalu_ctrl , fromlogic) Begin case fromalu_ctrl is … … end case。 // 存儲立即數(shù)到目的寄存器 從這段代碼可以看出,當控制信號 store有效時, TRAM可以完成將運算器的結果寫入目的操作寄存器中,若 無效 ,則判斷控制信號 ram_ctrl的值,根據(jù)不同的控制值可以將寄存器的儲存值分別寫入目的操作寄存器和源操作寄存器中,可以將立即數(shù)寫入目的操作寄存器中,可以讀出指定寄存器的值并輸出。這是由兩級流水線的架構決定的,在兩級流水線中, CPU在執(zhí)行當前指令的同時指令寄存器取到下一條指令,并且控制器將下一條指令進行譯碼。 PC_OUT 地址輸出信號是直接與程序存儲器 PCRAM 相連的。具體的模塊功能實現(xiàn)將在下面兩章中詳細介紹。 微處理器中有兩種不同的邏輯元件: ( 1) ALU、 MUX、 CONCROL單元的元件都是組合邏輯電路。正是靠 PC的移動,CPU才能一條一條的執(zhí)行指令。 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 r r r r d d d d 對于僅需要一個寄存器的指令, d 用來尋址目標寄存器。 圖 23 哈佛結構圖 山東大學威海分校畢業(yè)設計(論文) 6 這種結構的優(yōu)點是: ( 1) 允許數(shù)據(jù)從程序存儲器傳遞到 SRAM,該功能也允許從程序存儲器 中讀取數(shù)據(jù)表。 第六章 總結和展望。 1975 年, IBM 的設計師提出了一種新的體系結構和指令集設計方案,這就是 RISC 體系結構。自頂向下的設計方法就 是設計者首先從整體上規(guī)劃整個系統(tǒng)的功能和性能,然后利用功能分割手段對系統(tǒng)進行劃分,分解為規(guī)模較小、功能較簡單的局部模塊,并確立它們之間的相互關系,將設計由上至下進行層次化和模塊化,即分層次、分模塊地對電子系統(tǒng)進行設計和仿真。 附錄 ............................................................................................................................... 30 山東大學威海分校畢業(yè)設計(論文) 1 第 1 章 緒論 背景 隨著數(shù)字通信和工業(yè)控制領域的高速發(fā)展,超大規(guī)模集成電路的集成度和工藝水平不斷提高,要求專用集成電路 (ASIC)的功能越來越強,功耗越來越低,生產(chǎn)周期越來越短,這些都對芯片設計提出了巨大的挑戰(zhàn),傳統(tǒng)的芯片設計方法已經(jīng)不能適應復雜的應用需求了,將整個應用電子系統(tǒng)集成在一個芯片中 (SOC), 已成為現(xiàn)代電子系統(tǒng)設計的趨勢。隨著百萬門級的 FPGA芯片、功能復雜的 IP核、可重構的嵌入式處理器核以及各種強大 EDA的開發(fā)工具的迅速發(fā)展,使得設計者在 EDA工具的幫助下完成整個系統(tǒng)從行為算法級到物理結構級的全部設計,并最終將一個電子系統(tǒng)集成到一片 FPGA中,即SOPC。 VHDL的可移植性源于它是一種標準化得硬件語言,因此同一個設計描述可以被不同的工具所支持。各章節(jié)內(nèi)容安排如下 : 第一章 緒論。 將 CPU 的功能進一步細化,可以概括如下。 指令系統(tǒng) 本文設計的微控制器采用兩級流水 線 、指令長固定、指令密度適中、控制單元簡單的類似 RISC指令集,本文自定義指令集,該指令集僅有 20條指令,尋址方式簡單。在取指階段,指令機器碼被取到指令寄存器,控制單元通過譯碼知道這是個什么樣的指令,需要執(zhí)行什 么樣的操作,需要什么操作數(shù);在執(zhí)行階段當前指令以及 取指完畢, 上一條 指令被執(zhí)行。 CPU 的外部引腳規(guī)劃 從 CPU 外部看整個輸入輸出如圖 25 圖 25 CPU 外部引腳信號 該 CPU 有 5 個輸入引腳, 1 個結果輸出端口以及一個運算溢出信號。取指單元的第一個模 塊是程序計數(shù)器 (PC), PC 中是下條要執(zhí)行的指令的地址,它是指向程序存儲器單元 (PROM)來尋址指令的。另一種方案是在微處理器內(nèi)部創(chuàng)建一條總線,并且在各個部件之間使用總線傳數(shù)據(jù)。第一個數(shù)組元素下標表示存貯器的 0 號地址,第二個數(shù)組元素下標表示 1 號地址 ,以此類推至第 256個數(shù)組元素的下標 ,即 11111111 號存貯器地址。 圖 35 時鐘發(fā)生器的外部接口 山東大學威海分校畢業(yè)設計(論文) 15 寄存器堆 TRAM 寄存器堆與程序存儲器設計相同,都是直接使用一個數(shù)組存放二進制數(shù)據(jù),通過 VHDL 編寫一個一定長度的數(shù)組實現(xiàn),同樣可以通過集成器數(shù)組元素和輸入地址間的相互賦值實現(xiàn)“讀存儲器”,“寫存儲器”。在執(zhí)行運算單元中,根據(jù)指令的類型對兩個或一個 8 位輸入數(shù)據(jù)進行運算。039。 從狀態(tài)機的信號輸出上分,有 Moore型和 Mealy型兩種狀態(tài)機。 end if。 SIGNAL outen :STD_LOGIC。停機指令將程序寄存器和指令寄存器復位清零。 山東大學威海分校畢業(yè)設計(論文) 28 第六章