EDA課程設計簡易cpu設計_第1頁
EDA課程設計簡易cpu設計_第2頁
EDA課程設計簡易cpu設計_第3頁
EDA課程設計簡易cpu設計_第4頁
EDA課程設計簡易cpu設計_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDA技術課程設計任務書班級: 姓名: 學號: 設計題目: 簡易CPU系統(tǒng) 一、設計目的進一步鞏固理論知識,培養(yǎng)所學理論知識在實際中的應用能力;掌握EDA設計的一般方法;熟悉一種EDA軟件,掌握一般EDA系統(tǒng)的調(diào)試方法;利用EDA軟件設計一個電子技術綜合問題,培養(yǎng)VHDL編程、書寫技術報告的能力。為以后進行工程實際問題的研究打下設計基礎。二、設計任務用VHDL設計一個4位CPU。要求具備CPU的基本組成:運算器、控制器和寄存器;可以實現(xiàn)兩個操作數(shù)的五種基本算術運算:加法運算、帶進位的加法運算、減法運算、帶借位的減法運算和乘法運算;四種邏輯運算:與運算、或運算、非運算、異或運算;以及程序跳轉的功

2、能。對設計電路進行波形仿真、定時分析,下載電路實現(xiàn)CPU的預定功能,同時給出設計電路占用芯片資源的基本情況。三、設計要求(1)通過對相應文獻的收集、分析以及總結,給出相應課題的背景、意義及現(xiàn)狀研究分析。(2)通過課題設計,掌握計算機組成原理的分析方法和設計方法。(3)學習按要求編寫課程設計報告書,能正確闡述設計和實驗結果。(4)學生應抱著嚴謹認真的態(tài)度積極認真查閱相應文獻以及實現(xiàn),給出分析、設計。四、設計時間安排查找相關資料(1天)、設計并繪制系統(tǒng)原理圖(2天)、編寫VHDL程序(2天)、調(diào)試(2天)、編寫設計報告(2天)和答辯(1天)。五、主要參考文獻1 江國強編著. EDA技術與實用(第三

3、版). 北京:電子工業(yè)出版社,2011.2 曹昕燕,周鳳臣.EDA技術實驗與課程設計.北京:清華大學出版社,2006.53 閻石主編.數(shù)字電子技術基礎.北京:高等教育出版社,2003.指導教師簽字: 年 月 日II農(nóng)業(yè)工程學院課程設計說明書簡易cup系統(tǒng)摘 要EDA(electronic design automation)技術是現(xiàn)代電子工程領域的一門新興的電子設計技術。它大大縮短了集成電路的設計周期,提高了生產(chǎn)效率。VHDL(Very High Speed Integrated Circuit(VHSIC) Hardware Description Language)作為IEEE標準所規(guī)范的

4、硬件描述語言,目前正在電子系統(tǒng)設計領域獲得廣泛應用。Quartus II是Altera公司最新推出的EDA開發(fā)工具。Quartus II支持VHDL和Verilog硬件描述語言(HDL)的設計輸入、基于圖形的設計輸入方式。Quartus II軟件可以將設計、綜合、布局和布線以及系統(tǒng)驗證全部都整合到一個無縫的環(huán)境中。本論文主要研究的是借助Altera公司的Quartus II4.0軟件開發(fā)工具,采用VHDL硬件描述語言作為輸入方式,采用分層次,分模塊的設計方法,對CPU的各個模塊進行了描述,綜合和仿真。該4位微處理器取代了手工插線的實驗方法,采用EDA技術設計并在實驗臺上對設計進行了驗證,并最終

5、將處理器下載到實驗臺上,為硬件教學實驗改革提供了一個新的嘗試。在各個功能模塊的實現(xiàn)中主要使用了自頂向上的設計方法。先實現(xiàn)寄存器,再實現(xiàn)寄存器組,最后將各個器件和模塊之間互連,得到頂層設計圖。關鍵詞: 4位微處理器;Quartus II;VHDL;CPU系統(tǒng)目 錄第一章 緒論1§1.1 概述1§1.2 設計目的和意義1§1.3 系統(tǒng)的開發(fā)環(huán)境2§1.3.1 EDA技術簡介2§1.3.2 VHDL語言簡介3§1.3.3 QUARTUS II簡介4第二章 總體設計6§2.1微處理器技術6§2.2 CPU的結構6 

6、7;2.2.1算術邏輯單元ALU6 §2.2.2寄存器組RS6 §2.2.3控制單元7 §2.2.4總線7§2.3 指令系統(tǒng)的設計7§2.4數(shù)據(jù)通路的設計9§2.5微命令設計9第三章 微處理器各個模塊的設計與實現(xiàn)10§3.1指令寄存器IR的設計10§3.2程序計數(shù)器PC的設計12§3.3算術邏輯單元ALU模塊的設計13§3.4 內(nèi)存儲器RAM模塊的設計14§3.5控制器SEQUENCER模塊的設計15第四章 設計結論22參考文獻23第一章 緒論§1.1 概述 EDA是電子設計

7、自動化(Electronic Design Automation)縮寫,是90年代初從CAD(計算機輔助設計)、CAM(計算機輔助制造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發(fā)展而來的。EDA技術是以計算機為工具,根據(jù)硬件描述語言HDL( Hardware Description language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。硬件描述語言HDL是相對于一般的計算機軟件語言。 HDL語言使用與設計硬件電子系統(tǒng)的計算機語言,它能描述電子系統(tǒng)的邏輯功能、電路結構和連接方式。設計者可利用H

8、DL程序來描述所希望的電路系統(tǒng),規(guī)定器件結構特征和電路的行為方式;然后利用綜合器和適配器將此程序編程能控制FPGA和CPLD內(nèi)部結構,并實現(xiàn)相應邏輯功能的門級或更底層的結構網(wǎng)表文件或下載文件。目前,就FPGA/CPLD開發(fā)來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL、Verilog和VHDL。VHDL語言是美國國防部在1981年提出的,并于1987年成為IEEE 1076標準。VHDL語言成為世界標準后,很快在世界各地得到了廣泛的應用,這為電子設計自動化的普及和推廣奠定了堅實的基礎。1995年中國國家技術監(jiān)督局制定的 CAD通用技術規(guī)范推薦使用VHDL語言作為我國電子設計自動化

9、硬件描述語言的國家標準。§1.2 設計目的和意義當前是知識經(jīng)濟時代,更是知識爆炸的時代。特別是信息技術產(chǎn)業(yè),更是日新月異。而相比之下,教學實驗的改革則顯得相形見絀,許多學習內(nèi)容都大大落后于時代的要求,教學實驗對于培養(yǎng)學生的動手能力、實踐能力有著非常重要的作用,但教學實驗大大滯后于實際中應用的技術也進一個不爭的事實。特是別是在計算機科學與技術方面,新技術層出不窮,更要求計算機教學實驗與時俱進。為了提高學生的實踐能力,提高學生的動手能力,計算機組成原理教學改革勢在必行。本次設計的內(nèi)容就是要利用EDA開發(fā)工具,設計一個新的組成原理實驗,來取代現(xiàn)行的組成原理實驗。使進一步鞏固理論知識,培養(yǎng)所

10、學理論知識在實際中的應用能力;掌握EDA設計的一般方法;熟悉一種EDA軟件,掌握一般EDA系統(tǒng)的調(diào)試方法;利用EDA軟件設計一個電子技術綜合問題,培養(yǎng)VHDL編程、書寫技術報告的能力。為以后進行工程實際問題的研究打下設計基礎。§1.3 系統(tǒng)的開發(fā)環(huán)境§1.3.1 EDA技術簡介 EDA(Electronics Design Automation)即電子設計自動化。EDA技術是一種以計算機為基本工作平臺,利用計算機圖形學,拓撲邏輯學,計算數(shù)學以及人工智能學等多種計算機應用學科的最新成果而開發(fā)的技術,是一種幫助電子設計工程師從事電子元件產(chǎn)品和系統(tǒng)設計的綜合技術。本次畢業(yè)設計的F

11、PGA平臺也是EDA電子設計自動化的一種。§1.3.2 VHDL語言簡介 VHDL的英文全名是Very - High- Speed Integrated Circuit Hardware Description Language 。自IEEE公布了VHDL的標準之后,各EDA開發(fā)公司相繼推出了自己的EDA設計環(huán)境,或宣布自己的設計工具可以和EDA接口。此后VHDL在電子設計領域得到了廣泛的接受,并逐步取代了原有的非標準硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版

12、本?,F(xiàn)在VHDL和Verilog作為IEEE的工業(yè)標準硬件描述,描述以得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬件描述語言。 VHDL主要用于描述數(shù)字系統(tǒng)的結構,行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風格與句法是十分類似于一般的計算機程序設計語言。VHDL的程序結構特點是將一項工程設計為實體(可以是一個元件,一個電路模塊或一個系統(tǒng)),分成外部(或稱可視部分)和內(nèi)部(或稱不可視部分)。在一個設計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成后,其他的設計就可以直接調(diào)用這個模塊。這種將實體設計分成為內(nèi)外部分是VHDL系統(tǒng)設計的基本點。應用VHDL

13、進行工程設計的優(yōu)點是多方面的:(1)VHDL語言功能強大,設計方式多樣。(2)VHDL語言具有強大的硬件描述能力。(3)VHDL語言具有很強的移植性。(4)VHDL語言的設計描述與具體的器件無關。(5)VHDL語言易于實現(xiàn)IP設計的共享和復用。§1.3.3 QUARTUS II簡介Quartus II軟件支持VHDL和Verilog的設計輸入、基于圖形的設計輸入方式以及集成的系統(tǒng)級設計工具。Quartus II軟件可以將設計、綜合、布局、布線以及系統(tǒng)驗證全部都整合到一個無縫的環(huán)境中,其中還包括第三方EDA工具的借口。Quartus II的主要設計特性如下:1.基于模塊的設計方法提高工

14、作效率。2.更快集成IP。3.在設計的早期對I/O引腳進行分配和驗證。4.存儲器編譯器使存儲器的設計更為高效。5.支持CPLD、FPGA和基于HardCopy的ASIC。6.使用全新的命令行和腳本功能自動化設計流程。7.高級教程幫助深入了解Quartus II的功能特性。第二章 總體設計§2.1微處理器技術中央處理器(CPU)是驅動計算機技術和產(chǎn)業(yè)發(fā)展的火車頭,CPU和操作系統(tǒng)的配合又組成了計算機系統(tǒng)的平臺。中國是一個信息化大國,但不是一個信息化強國。中國在信息技術的基礎方面還很薄弱,其中發(fā)展和加強CPU的設計和制造技術是信息技術和科技界與教育界的一項重要任務。當然CPU設計本身是很

15、復雜的,目前先進的CPU芯片上的晶體管數(shù)已經(jīng)達到數(shù)億個;先進的CPU還有很多復雜技術,如多發(fā)射,亂序執(zhí)行,多線程,向量與標量部件的混合以及多樣的執(zhí)行預測技術等;現(xiàn)在的CPU還在向多核心芯片發(fā)展。芯片上具有10億個晶體管的CPU已經(jīng)離我們不遠。此外,CPU的自檢測設計技術也很復雜,高級CPU套片(CHIP SET)的復雜程度一點也不亞于CPU中央處理器簡稱CPU(Central Processing Unit),它是計算機系統(tǒng)的核心,主要包括運算器和控制器兩個部件。 §2.2 CPU的結構§2.2.1算術邏輯單元ALU ALU是運算器的核心。它是以全加器為基礎,輔之以移位寄存

16、器及相應控制邏輯組合而成的電路,在控制信號的作用下可完成加、減、乘、除四則運算和各種邏輯運算。就像剛才提到的,這里就相當于工廠中的生產(chǎn)線,負責運算數(shù)據(jù)。§2.2.2寄存器組RS RS實質上是CPU中暫時存放數(shù)據(jù)的地方,里面保存著那些等待處理的數(shù)據(jù),或已經(jīng)處理過的數(shù)據(jù),CPU訪問寄存器所用的時間要比訪問內(nèi)存的時間短。采用寄存器,可以減少CPU訪問內(nèi)存的次數(shù),從而提高了CPU的工作速度。但因為受到芯片面積和集成度所限,寄存器組的容量不可能很大。寄存器組可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應的數(shù)據(jù)。而通用寄存器用途廣泛并可由程序員規(guī)定其用途。通用寄存器的數(shù)目因

17、微處理器而異。§2.2.3控制單元 正如工廠的物流分配部門,控制單元是整個CPU的指揮控制中心,由指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)和操作控制器0C(Operation Controller)三個部件組成,對協(xié)調(diào)整個電腦有序工作極為重要。它根據(jù)用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令譯碼(分析)確定應該進行什么操作,然后通過操作控制器OC,按確定的時序,向相應的部件發(fā)出微操作控制信號。操作控制器OC中主要包括節(jié)拍脈沖發(fā)生器、控制矩陣、時鐘脈沖發(fā)生器、復位電路和啟停電

18、路等控制邏輯。§2.2.4總線 就像工廠中各部位之間的聯(lián)系渠道,總線實際上是一組導線,是各種公共信號線的集合,用于作為電腦中所有各組成部分傳輸信息共同使用的“公路”。直接和CPU相連的總線可稱為局部總線。其中包括: 數(shù)據(jù)總線DB(Data Bus)、地址總線AB(Address Bus) 、控制總線CB(Control Bus)。其中,數(shù)據(jù)總線用來傳輸數(shù)據(jù)信息;地址總線用于傳送CPU發(fā)出的地址信息;控制總線用來傳送控制信號、時序信號和狀態(tài)信息等。§2.3 指令系統(tǒng)的設計計算機的操作基本上可歸結為信息傳送。所以在邏輯結構上,關鍵在于如何實現(xiàn)數(shù)據(jù)信息的傳送,即數(shù)據(jù)的通路結構。在

19、現(xiàn)代計算機中,普遍采用總線結構。總線是一組能為多個部件共享的公共信息傳送通路,可以分時的接收與發(fā)送各個部件的信息。總線可以分為4種:(1)CPU內(nèi)部總線。(2)部件內(nèi)總線。(3)系統(tǒng)總線。(4)外總線。在本畢業(yè)設計中,也采用了總線結構。計算機的基本功能是進行各種運算,包括算術運算與邏輯運算。計算機的工作,基本上體現(xiàn)為執(zhí)行指令,一臺計算機所能執(zhí)行的全部指令,稱為該機的系統(tǒng)或稱為指令集合。指令系統(tǒng)是程序員編制程序的基礎,雖然現(xiàn)在已經(jīng)廣泛應用各種程序設計編程,但需要通過解釋或編譯轉換為機器可以識別與執(zhí)行的指令序列。指令系統(tǒng)表明一臺計算機具有哪些功能,因而在很大程度上決定著如何使用計算機。CPU的基本

20、任務是解釋執(zhí)行指令代碼,所以指令系統(tǒng)又在很大程度上決定著計算機如何工作,它是硬件邏輯設計的基礎,與CPU的總體結構及整機設計思想密切相關。指令系統(tǒng)是CPU的硬件與軟件的分界面,是設計和利用CPU的出發(fā)點。本處理器字長為4位。指令系統(tǒng)如下: Load指令:用來將數(shù)據(jù)從內(nèi)存中讀到CPU的寄存器中。 Add指令:做一次加法運算。 Sub指令:做一次減法運算。 Store指令:存儲指令,將數(shù)據(jù)存入RAM中。 Jmp指令:無條件轉移指令。 Load_far指令:將內(nèi)存中的數(shù)據(jù)讀入到CPU中。由于本處理是用來做組成原理實驗的,在實現(xiàn)上與原來的實驗保持了基本的一致。并且增加了一種尋址方式。對于CPU指令的設

21、計來講,主要考慮的指令的字長,地址結構與尋址方式。由于受處理器字長的限制,設計的指令為固定的字長,并且每條指令占用兩個字,第一個機器字為操作碼(OPCODE),后一個指令字為操作數(shù)(OPRAND)。微處理器的總體結構與數(shù)據(jù)通路如圖所示: 圖2-1處理器的數(shù)據(jù)通路結構§2.4數(shù)據(jù)通路的設計在上幾節(jié)中,給出了微處理器的通路結構和模塊的劃分,在數(shù)據(jù)通路結構確定之后,下面將給出它們之間通過總線傳送的路徑。指令的執(zhí)行基本上可以歸結為信息的傳送,即控制流和數(shù)據(jù)流兩大信息流??刂屏鞅憩F(xiàn)為指令信息的傳送,及由此產(chǎn)生微命令序列。指令信息與數(shù)據(jù)信息讀取,以依賴于地址信息。弄清各類信息的傳送路徑,有助于從

22、邏輯結構的角度了解指令是如何執(zhí)行的,以及需要為此發(fā)出那些微命令。(1)指令信息的傳送: RAM 系統(tǒng)總線 IR(2)地址信息傳送: PC 系統(tǒng)總線 MAR ADDR 系統(tǒng)總線 MARRAM MDR 系統(tǒng)總線 ADDREG(3)數(shù)據(jù)信息傳送:RAM MDR 系統(tǒng)總線 ACCACC+MDR ACCACC-MDR ACCACC 數(shù)據(jù)總線 MDR RAM§2.5微命令設計在全面分析了各類信息的傳送路徑以后,對指令如何執(zhí)行就有了進一步的了解,并為時序的安排和相應的微命令的設置打下了基礎。在本微處理器的設計中,設置了以下微命令:微處理器的控制信號:ACC_bus 用ACC的內(nèi)容驅動總線,三態(tài)輸出

23、Load_ACC 將總線上的數(shù)據(jù)放入ACC中PC_bus 用PC的內(nèi)容驅動總線Load_IR 將總線內(nèi)容裝入IRLoad_MAR 將總線內(nèi)容裝入MARMDR_bus 用MDR的內(nèi)容驅動總線Load_MDR 將總線上的數(shù)據(jù)裝入MDRALU_ACC 將ALU的結果送ACCINC_PC PC+1->PCAddr_bus 用ADDREG的內(nèi)容來驅動總線Load_Addr 用總線的內(nèi)容來裝載ADDREGCS 片選,用MAR設置存儲器地址R_NW 讀取,不可寫ALU_add 做加法運算ALU_sub 做減法運算在確定了微指令和數(shù)據(jù)的傳送路徑之后,就可以根據(jù)指令的功能需要選擇上述微命令中的有關部分,形

24、成微操作命令序列,實現(xiàn)指令功能。第三章 微處理器各個模塊的設計與實現(xiàn)§3.1指令寄存器IR的設計IR是用來保存從內(nèi)存中取來的指令,IR基本上是一個帶有使能控制端的寄存器,在時鐘的上升沿對輸入的數(shù)據(jù)進行鎖存??偩€連接到IR的輸入端,其輸出連到控制器輸入端。對于總線數(shù)據(jù),使用IEEE的庫來進行描述。具體名稱為IEEE.STD_LOIC_1164.ALL,可以用它來定義位或位向量。由以上的介紹,給出了接口信號與描述的方法,也就不難用VHDL語言來實現(xiàn)。在Quartus II4.0 中可以新建一個工程,名字為IR,新建一個VHDL文件名字也為IR,在其中用VHDL來描述該寄存器。在Quart

25、us II4.0 中,它支持層次化的設計。在編譯并綜合后,綜合后得到其RTL視圖。圖3-1 RTL視圖圖3-2 IR的波形文件§3.2程序計數(shù)器PC的設計程序計數(shù)器是一個有復位端的、可以裝入計數(shù)初值的通用計數(shù)器。由于機器的字長為4位,因而它的計數(shù)范圍從0到15。也就是說它的尋址能力只有16個單元。因而存儲器的大小為16個機器字。當然,這樣做的最大的優(yōu)點是可以簡化設計,缺點是在很多地方要受尋址能力和存儲能力的約束。改進的方向是增加指令字長,比如8位,16位,32位等和改進處理器的體系結構。VHDL語言來描述電路,必須要包含相應的庫文件。本模塊的設計中除了包含最基本的ieee.

26、std_logic庫外,還必須包含ieee.numeric_std和ieee.unsigned庫。在這兩個庫中定義了無符號數(shù)的加法。調(diào)用這兩個庫以實現(xiàn)PC<-PC+1的運算。圖3-3 程序計數(shù)器的設計§3.3算術邏輯單元ALU模塊的設計ALU是算術邏輯單元,中規(guī)模集成器件如74LS181就是一個典型的ALU。ALU是用來完成算術邏輯運算的。對于組合邏輯實現(xiàn)來講,最基本的單元是全加器。而對于FPGA實現(xiàn)的器件來講,實現(xiàn)一個運算器變得非常的簡單,只要用一個運算符并在頭文件中包含相應的庫及可。邏輯綜合工具會自動的生成對應的運算單元。這樣設計出來的模塊就有很強的移植性,可以在不同的硬件

27、上進行實現(xiàn),而且易于修改。不足是可能綜合的結果在資源和面積功耗方面不滿中要求。比如對于4位全加器,是采用并行進位鏈還是采用串行進位鏈在用硬件是實現(xiàn)進是必須要考慮的。但對于FPGA則可將這個工作交給綜合工具去做,用戶只要指定要求就可以了。圖3-4 PC的RTL視圖§3.4 內(nèi)存儲器RAM模塊的設計存儲器是計算機系統(tǒng)的五大部件之一。在處理器的構造中,一般只在片內(nèi)集成小容量、高速的Cache比如80386、486、pentium等,RAM獨立于處理器之外。在本畢業(yè)設計中,充分利用FPGA的可配置性,在FPGA上集成了一小塊片內(nèi)RAM。并在復位的時候利用FPGA的可配置性引入了一小段程序。這

28、樣就避開了程序的初始引入問題,也就避開了中斷等復雜的問題。為了不拘泥于一個具體的片內(nèi)RAM,用寄存器堆來實現(xiàn)一個16個字的RAM。RAM與外界的接口是MDR和MAR。其中MAR有來保存地址,MDR用來保存數(shù)據(jù)。RAM與外界的接口比較復雜,對時序的要求較強。其接口如下定義:Load_MAR:用總線上的數(shù)據(jù)裝載MAR。送地址。Load_MDR:將總線上的數(shù)據(jù)送到MDR。MDR_bus:用MDR的內(nèi)容來驅動總線。也就是讀出數(shù)據(jù)。CS:RAM選中信號,使能控制信號。R_NW:對RAM的讀控制信號。圖3-5 RAM的仿真波形圖圖3-6 RAM的RTL圖§3.5控制器SEQUENCER模塊的設計

29、Sequencer是處理器的核心模塊,是整個設計的重點也是整個設計的難點。在前面的小節(jié)中,已經(jīng)將各個模塊的功能與接口做了比較詳細的說明。如何將各個模塊合理的組織起來,使處理器可以正確的運行,進而得到結果是控制器的任務。微操作命令是最基本的控制命令,如開門關門等電平型命令,多路選擇定時脈沖等??刂破鞯娜蝿帐菦Q定在什么時刻、根據(jù)什么條件、發(fā)什么命令。做什么事。因此,產(chǎn)生微命令的基本依據(jù)是時間(如周期節(jié)拍、脈沖等時序信號)、指令代碼(如操作在碼、尋址方式、寄存器號等)、狀態(tài)(如CPU的內(nèi)部狀態(tài)字、控制設備要考慮的外部狀態(tài))、外部請求(如控制請求、外部中斷請求、DMA請求)等。這些信息稱為邏輯變量,經(jīng)

30、組合邏輯產(chǎn)生的微操作命令序列,或形成相應的微程序地址,通過微程序中的微指令直接產(chǎn)生微操作命令序列。按照微命令的形成方法,控制器可以分為組合邏輯控制器和微程序控制器兩種。由于在FPGA中實現(xiàn)組合邏輯控制是比較簡單的,而且硬連邏輯有著速度上的優(yōu)勢。因此在本本設計中,采用了組合邏輯控制器。在處理器中,由于其速度高,一般采用同步時序邏輯,因而在本設計中也采用了同步時序。在大規(guī)模集成電路的設計中,使用狀態(tài)機來進行設計是電子工程師經(jīng)常采用的手段。VHDL語言支持有限狀態(tài)機的描述。一個控制器可以將它的每一條命令分成若干個狀態(tài),這些狀態(tài)中有許多是相同的,這樣就利于采用狀態(tài)機來進行實現(xiàn)。關鍵源程序LIBRARY

31、 IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX5 ISPORT(       R0_B,R1_B,R2_B,R3_B,ALU_B:IN STD_LOGIC;    R0_IN,R1_IN,R2_IN,R3_IN,ALU_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);       MUX5OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)  

32、   );END MUX5;ARCHITECTURE A OF MUX5 ISBEGIN  PROCESS(ALU_B,R3_B,R2_B,R1_B,R0_B)  BEGIN    IF(ALU_B='1' AND R3_B='1' AND R2_B='1' AND R1_B='1' AND R0_B='0') THEN      MUX5OUT<=R0_IN;    E

33、LSIF(ALU_B='1' AND R3_B='1' AND R2_B='1' AND R1_B='0' AND R0_B='1') THEN      MUX5OUT<=R1_IN;      ELSIF(ALU_B='1' AND R3_B='1' AND R2_B='0' AND R1_B='1' AND R0_B='1')

34、 THEN      MUX5OUT<=R2_IN;       ELSIF(ALU_B='1' AND R3_B='0' AND R2_B='1' AND R1_B='1' AND R0_B='1') THEN      MUX5OUT<=R3_IN;       ELSIF(ALU_

35、B='0' AND R3_B='1' AND R2_B='1' AND R1_B='1' AND R0_B='1') THEN      MUX5OUT<=ALU_IN;    ELSE MUX5OUT<=ALU_IN;    END IF;  END PROCESS;END A; LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3

36、 ISPORT(     SW_B,CS:IN STD_LOGIC;     FEN2_IN,MUX2_2IN,SW_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);     MUX3OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)    );END MUX3;ARCHITECTURE A OF MUX3 ISBEGINPROCESS(SW_B,CS)  BEGIN  &

37、#160; IF(SW_B='0' AND CS='1') THEN      MUX3OUT<=SW_IN;    ELSIF(SW_B='1' AND CS='0') THEN      MUX3OUT<=MUX2_2IN;    ELSIF(SW_B='0' AND CS='0') THEN   

38、;   MUX3OUT<=FEN2_IN;    ELSE      MUX3OUT<="11101110"    END IF;  END PROCESS;END A;圖3-7 部分波形圖部分程序清單:1 ALU子模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;EN

39、TITY ALU ISPORT(       AC, DR: IN STD_LOGIC_VECTOR(7 DOWNTO 0);       S1, S0: IN STD_LOGIC;       BCDOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);       CY,ZI:  OUT STD_LOGIC &#

40、160;     );END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP: STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN       PROCESS(S1,S0)         BEGIN              IF(S1

41、='0' AND S0='0') THEN                     BCDOUT <= AC + DR;            AA<='0'&AC;    

42、0;       BB<='0'&DR;                     TEMP <= AA + BB;            CY<=TEMP(8);  &

43、#160;                         IF( TEMP ="100000000") THEN                   

44、;                ZI <= '1'                            ELSE   

45、60;                               ZI <= '0'                

46、            END IF;              ELSIF(S1='0' AND S0='1') THEN                 

47、    BCDOUT <= AC - DR;                     AA<='0'&AC;            BB<='0'&DR;   &#

48、160;                 TEMP <= AA - BB;            CY<=TEMP(8);                &#

49、160;           IF( TEMP ="000000000") THEN                                 

50、  ZI <= '1'                            ELSE                  

51、60;                ZI <= '0'                            END IF;  

52、0;           ELSIF(S1='1' AND S0='0') THEN            AA<='0'&AC;            TEMP<=AA+1;   

53、                  BCDOUT<=TEMP(7 DOWNTO 0);                     CY<=TEMP(8);     

54、60;                      IF( TEMP ="100000000") THEN                      &

55、#160;            ZI <= '1'                            ELSE       

56、;                            ZI <= '0'                   &#

57、160;        END IF;        ELSIF(S1='1' AND S0='1') THEN            AA<='0'&AC;           

58、; TEMP<=AA-1;                     BCDOUT<=TEMP(7 DOWNTO 0);                     CY<=TEMP(8)

59、;                            IF( TEMP ="000000000") THEN                

60、60;                  ZI <= '1'                            ELSE &

61、#160;                                 ZI <= '0'             

62、0;              END IF;              ELSE                     BCDOUT &

63、lt;= "00000000"                     CY <= '0'            ZI <= '0'        

64、;      END IF;       END PROCESS;END A;2, ROM子模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ROM16 ISPORT(       ROMOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0

65、);       ADDR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);       RE,CS_I: IN STD_LOGIC);END ROM16;ARCHITECTURE A OF ROM16 ISBEGIN  PROCESS(RE,CS_I)    BEGIN       IF (RE='0' AND CS_I='0') THE

66、N       CASE ADDR IS         WHEN "00000000" => ROMOUT <= "10010000"        -MOV   0AH   R0       WHEN "00000001" => ROMO

67、UT <= "00001010"      WHEN "00000010" => ROMOUT <= "10010001"        -MOV   00H   R1        WHEN "00000011" => ROMOUT <= "00000000

68、"      WHEN "00000100" => ROMOUT <= "10000010"  -L1:   IN1     R2             WHEN "00000101" => ROMOUT <= "10101001"  

69、0;     -MOV1   R2   R1        WHEN "00000110" => ROMOUT <= "11110001"         -INC     R1         &

70、#160;    WHEN "00000111" => ROMOUT <= "11010100"         -CMP    R1    RO         WHEN "00001000" => ROMOUT <= "01110000" 

71、       -JB      L1              WHEN "00001001" => ROMOUT <= "00000100"          WHEN "00001010" => ROMOUT

72、 <= "10010000"        -MOV   09H   R0         WHEN "00001011" => ROMOUT <= "00001001"        WHEN "00001100" => ROMOUT <= &qu

73、ot;10010001"        -MOV   00H   R1        WHEN "00001101" => ROMOUT <= "00000000"      WHEN "00001110" => ROMOUT <= "10110110" 

74、 -L2:   MOV2  R1   R2        WHEN "00001111" => ROMOUT <= "11110001"          -INC    R1              WH

75、EN "00010000" => ROMOUT <= "11010001"        -CMP   R0     R1         WHEN "00010001" => ROMOUT <= "01110000"       &#

76、160;-JB     L4              WHEN "00010010" => ROMOUT <= "00011111"         WHEN "00010011" => ROMOUT <= "10110111"    

77、;     -MOV2  R1   R3         WHEN "00010100" => ROMOUT <= "11011110"          -CMP    R3    R2      

78、0; WHEN "00010101" => ROMOUT <= "01110000"        -JB      L3              WHEN "00010110" => ROMOUT <= "00011001"  &#

79、160;   WHEN "00010111" => ROMOUT <= "01100000"         -JMP     L2           WHEN "00011000" => ROMOUT <= "00001110"   

80、;   WHEN "00011001" => ROMOUT <= "10101001"  -L3:  MOV1   R2   R1        WHEN "00011010" => ROMOUT <= "11100001"        -DEC   

81、R1              WHEN "00011011" => ROMOUT <= "10101101"       -MOV1  R3   R1       WHEN "00011100" => ROMOUT <= "11110001&q

82、uot;         -INC    R1              WHEN "00011101" => ROMOUT <= "01100000"         -JMP    L2   &

83、#160;        WHEN "00011110" => ROMOUT <= "00001110"      WHEN "00011111" => ROMOUT <= "11100000"  -L4: DEC    R0           

84、; WHEN "00100000" => ROMOUT <= "10010001"       -MOV    00H  R1      WHEN "00100001" => ROMOUT <= "00000000"      WHEN "00100010" => RO

85、MOUT <= "11010100"        -CMP    R1   R0        WHEN "00100011" => ROMOUT <= "01110000"        -JB     L2  

86、60;          WHEN "00100100" => ROMOUT <= "00001110"      WHEN "00100101" => ROMOUT <= "10010000"        -MOV    0AH  R0       WHEN "00100110" =&g

溫馨提示

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

評論

0/150

提交評論