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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

22、邏輯結(jié)構(gòu)的角度了解指令是如何執(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微命令設(shè)計(jì)在全面分析了各類信息的傳送路徑以后,對指令如何執(zhí)行就有了進(jìn)一步的了解,并為時(shí)序的安排和相應(yīng)的微命令的設(shè)置打下了基礎(chǔ)。在本微處理器的設(shè)計(jì)中,設(shè)置了以下微命令:微處理器的控制信號:ACC_bus 用ACC的內(nèi)容驅(qū)動總線,三態(tài)輸出

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

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

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

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

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

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

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

30、組合邏輯產(chǎn)生的微操作命令序列,或形成相應(yīng)的微程序地址,通過微程序中的微指令直接產(chǎn)生微操作命令序列。按照微命令的形成方法,控制器可以分為組合邏輯控制器和微程序控制器兩種。由于在FPGA中實(shí)現(xiàn)組合邏輯控制是比較簡單的,而且硬連邏輯有著速度上的優(yōu)勢。因此在本本設(shè)計(jì)中,采用了組合邏輯控制器。在處理器中,由于其速度高,一般采用同步時(shí)序邏輯,因而在本設(shè)計(jì)中也采用了同步時(shí)序。在大規(guī)模集成電路的設(shè)計(jì)中,使用狀態(tài)機(jī)來進(jìn)行設(shè)計(jì)是電子工程師經(jīng)常采用的手段。VHDL語言支持有限狀態(tài)機(jī)的描述。一個(gè)控制器可以將它的每一條命令分成若干個(gè)狀態(tài),這些狀態(tài)中有許多是相同的,這樣就利于采用狀態(tài)機(jī)來進(jìn)行實(shí)現(xiàn)。關(guā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)系上傳者。文件的所有權(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論