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

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設(shè)計(jì)說明書</b></p><p>  題 目: 基于FPGA和VHDL實(shí)現(xiàn)的8位通用運(yùn)算部件</p><p>  畢業(yè)論文(設(shè)計(jì))任務(wù)書</p><p>  論文(設(shè)計(jì))題目: 基于FPGA和VHDL實(shí)現(xiàn)的8位通用運(yùn)算器 </p><p>  一、主要內(nèi)容及基

2、本要求</p><p>  主要內(nèi)容: </p><p>  利用Quartus II 9.0編寫VHDL程序,在FPGA開發(fā)板實(shí)現(xiàn)一個(gè)8位可進(jìn)行加減算術(shù)運(yùn)算和與,或,非,異或等邏輯運(yùn)算的通用運(yùn)算器,并開發(fā)對(duì)此運(yùn)算器進(jìn)行測(cè)試的按鍵輸入模塊,完成對(duì)運(yùn)算器的綜合測(cè)試。

3、 </p><p>  基本要求: </p><p>  1.設(shè)計(jì)并實(shí)現(xiàn)ALU。ALU能完成對(duì)數(shù)據(jù)的基本操作,包括算術(shù)和邏輯運(yùn)算,并輸出相應(yīng)的標(biāo)志信號(hào)。 </p&

4、gt;<p>  2.設(shè)計(jì)相應(yīng)的指令格式,用于控制數(shù)據(jù)傳送,存儲(chǔ),算術(shù)邏輯運(yùn)算,移 位,輸出功能。 </p><p>  3設(shè)計(jì)按鍵和顯示模塊,用于對(duì)8位通用運(yùn)算器進(jìn)行測(cè)試。 </p><p><b>  二、重點(diǎn)研究的

5、問題</b></p><p>  1.深刻體會(huì)FPGA開發(fā)流程和VHDL與一般過程語言編程的差異,實(shí)際解決在編程中遇到的問題。 </p><p>  2.掌握8位通用運(yùn)算器的模塊構(gòu)建,對(duì)單元電路進(jìn)行電路波形仿真測(cè)試和綜合測(cè)試。

6、 </p><p>  3.開發(fā)一個(gè)按鍵輸入模塊,對(duì)8位通用運(yùn)算部件進(jìn)行測(cè)試。 </p><p><b>  進(jìn)度安排</b></p><p>  四、應(yīng)收集的資料及主要參考文獻(xiàn)</p><p>  [1]潘松,黃

7、繼業(yè). EDA技術(shù)實(shí)用教程. 北京:科學(xué)出版社,2010.11 </p><p>  [2]Kenneth L.Short. VHDL大學(xué)實(shí)用教程. 喬廬峰,尹延輝,李永成,牛燚坤譯. 北京:電子工業(yè)出版社,2011.9 </p><p>  [3]Clive "Max&qu

8、ot; Maxfield. FPGA設(shè)計(jì)指南. 杜生海,刑聞譯. 北京:人民郵電出版社,2007.12 </p><p>  [4]王誠,劉東衛(wèi),宋佳興. 計(jì)算機(jī)組成與設(shè)計(jì) 北京:清華大學(xué)出版社,2004.7 </p><p>  [5]吳厚航. 深入淺出玩轉(zhuǎn)FPGA 北京:

9、北京航空航天大學(xué)出版社,2009.1 </p><p>  [6]黃智偉,鄧月明,王彥. ARM嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)教程 北京:北京航空航天大學(xué)出版社,2008.8 </p><p>  畢業(yè)論文(設(shè)計(jì))評(píng)閱表</p><p>  畢業(yè)論文(設(shè)計(jì))題目:

10、基于FPGA和VHDL實(shí)現(xiàn)的8位通用運(yùn)算部件 </p><p>  畢業(yè)論文(設(shè)計(jì))鑒定意見</p><p>  畢業(yè)論文(設(shè)計(jì)說明書) 54 頁 圖 表 27 張</p><p><b>  目 錄</b></p><p><b>  

11、摘要1</b></p><p>  Abstract2</p><p><b>  第1章 緒論3</b></p><p>  1.1 現(xiàn)代計(jì)算機(jī)應(yīng)用系統(tǒng)3</p><p>  1.2 現(xiàn)代計(jì)算機(jī)應(yīng)用系統(tǒng)開發(fā)的一般流程4</p><p>  1.3 本文的結(jié)構(gòu)4</p

12、><p>  第2章 CPLD/FPGA基本特性6</p><p>  2.1 CPLD簡介6</p><p>  2.1.1 可編程邏輯陣列(LAB)7</p><p>  2.1.2 可編程I/O單元(IOC)7</p><p>  2.1.3 可編程內(nèi)部連線(PIA)7</p><p&g

13、t;  2.2 FPGA簡介8</p><p>  第3章 軟硬件開發(fā)環(huán)境10</p><p>  3.1 基本設(shè)計(jì)流程10</p><p>  3.2 硬件開發(fā)環(huán)境12</p><p>  第4章 8位通用運(yùn)算器設(shè)計(jì)方案14</p><p>  4.1 總體結(jié)構(gòu)圖14</p><p&g

14、t;  4.2 8位通用運(yùn)算器模塊14</p><p>  4.2.1 指令格式的設(shè)計(jì)14</p><p>  4.2.2 運(yùn)算器對(duì)外接口15</p><p>  4.2.3 8位通用運(yùn)算器內(nèi)部結(jié)構(gòu)圖16</p><p>  4.3 按鍵測(cè)試模塊17</p><p>  4.4 數(shù)碼顯示模塊18</p

15、><p>  第5章 基本模塊設(shè)計(jì)19</p><p>  5.1 ALU輸入選擇器的設(shè)計(jì)19</p><p>  5.2 ALU算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)20</p><p>  5.3 寄存器組RAM的設(shè)計(jì)22</p><p>  5.4 寄存器qreg的設(shè)計(jì)23</p><p>  5.

16、5 輸出選擇器設(shè)計(jì)24</p><p>  5.6 鍵盤測(cè)試模塊25</p><p>  5.6.1 4乘4按鍵25</p><p>  5.6.2 指令和數(shù)據(jù)生成模塊26</p><p><b>  第6章 測(cè)試29</b></p><p>  6.1 單元測(cè)試29</p>

17、;<p>  6.2 基本指令和綜合測(cè)試30</p><p>  第7章 結(jié)束語33</p><p><b>  參考文獻(xiàn)34</b></p><p><b>  致謝35</b></p><p><b>  附 錄36</b></p>&

18、lt;p>  基于FPGA和VHDL實(shí)現(xiàn)的8位通用運(yùn)算部件</p><p>  摘要:本文介紹了在現(xiàn)代EDA技術(shù)支持下、基于CPLD/FPGA和VHDL開發(fā)的一個(gè)8位通用運(yùn)算部件,系統(tǒng)討論了其設(shè)計(jì)實(shí)現(xiàn)以及在基于CPLD/FPGA的GW48GP硬件開發(fā)–測(cè)試環(huán)境中構(gòu)建與測(cè)試所涉及的系列問題、方法與技術(shù)。</p><p>  在現(xiàn)代計(jì)算機(jī)科學(xué)技術(shù)水平下,開發(fā)計(jì)算機(jī)應(yīng)用系統(tǒng)的途徑之一就是利

19、用現(xiàn)代EDA技術(shù)和超大規(guī)模的可編程器件CPLD/FPGA技術(shù)的最新成就,開發(fā)一個(gè)“片上系統(tǒng)”/“片上可編程系統(tǒng)”、制作定制/半定制的專用集成電路來實(shí)現(xiàn)其系統(tǒng)目標(biāo)。本文所介紹的就是在這種指導(dǎo)思想下完成的一個(gè)簡單的、局部性的、探索性的實(shí)例。</p><p>  文中對(duì)現(xiàn)代EDA技術(shù)、CPLD/FPGA器件及其與現(xiàn)代計(jì)算機(jī)應(yīng)用系統(tǒng)開發(fā)間的關(guān)聯(lián)作了基礎(chǔ)性的討論,對(duì)通過這種方式制作一個(gè)8位通用運(yùn)算部件的完整過程作了全面、系

20、統(tǒng)的介紹。在制作此8位通用運(yùn)算部件時(shí),應(yīng)用了廣為流行的、標(biāo)準(zhǔn)化的VHDL作為硬件描述語言。</p><p>  關(guān)鍵詞:可編程邏輯器件;VHDL;片上系統(tǒng);片上可編程系統(tǒng)</p><p>  The Realization of 8-bit ALU based on FPGA & VHDL</p><p>  Abstract:In this paper,

21、the development of an 8 bit universal computing component was introduced based on CPLD/FPGA and VHDL with the support of modern EDA technology. The design and a series of concerning questions, methods and technologies ba

22、sed on CPLD/FPGA GW48GP hardware development to build and test was discussed systematically.</p><p>  In the  modern computer science and technology, one of the ways of the deve

23、lopment of computer application systems is using  the latest achievements of modern EDA technology and ultra-large-scale programmable devices CPLD/FPGA technology to develop&#

24、160;system on a chip/system on a programmable chip and producing custom/semi-custom ASIC to achieve its system goals. Described in this paper is a simple, localized, and exploratory instance in t

25、his guiding ideology.</p><p>  The paper discussed the association between modern EDA technology,  the CPLD/FPGA devices, and modern computer application systems 

26、development briefly and made a comprehensive and systematic introduction of the complete process of designing an 8-bit universal computing unit in this way. Widely popular, the

27、0;standardization of VHDL as a hardware description language is used in the throughout the design process.</p><p>  Keywords: programmable logic device; VHDL; system on a chip; system on

28、a programmable chip</p><p><b>  第1章 緒論</b></p><p>  1.1 現(xiàn)代計(jì)算機(jī)應(yīng)用系統(tǒng)</p><p>  在現(xiàn)代,完整的計(jì)算機(jī)技術(shù)包含三個(gè)相對(duì)獨(dú)立的部分:硬件技術(shù)、軟件技術(shù)和計(jì)算機(jī)應(yīng)用技術(shù)。其中的“計(jì)算機(jī)應(yīng)用技術(shù)”主要是指應(yīng)用現(xiàn)代計(jì)算機(jī)硬件技術(shù)和軟件技術(shù)已取得的成就去解決人們生產(chǎn)、生活中的各種

29、實(shí)踐問題,即人們通常所論的“計(jì)算機(jī)應(yīng)用系統(tǒng)開發(fā)”。</p><p>  所謂“計(jì)算機(jī)應(yīng)用系統(tǒng)”,也稱為“基于計(jì)算機(jī)的系統(tǒng)”或“以計(jì)算機(jī)為基礎(chǔ)的系統(tǒng)”。它通常包含:計(jì)算機(jī)硬件、計(jì)算機(jī)軟件、信號(hào)測(cè)量裝置及將相應(yīng)測(cè)量信號(hào)轉(zhuǎn)化為計(jì)算機(jī)硬件可識(shí)別信號(hào)的裝置、控制與信號(hào)執(zhí)行裝置(它們將計(jì)算機(jī)硬件輸出轉(zhuǎn)化為系統(tǒng)所操作的設(shè)備的有效行為)。</p><p>  在現(xiàn)代,實(shí)現(xiàn)一個(gè)“計(jì)算機(jī)應(yīng)用系統(tǒng)”的典型途徑有

30、兩種:</p><p>  1. 基于一個(gè)確定的計(jì)算機(jī)系統(tǒng)來構(gòu)建。這個(gè)作為基礎(chǔ)的計(jì)算機(jī)系統(tǒng)通常被稱作待構(gòu)建的計(jì)算機(jī)應(yīng)用系統(tǒng)的“運(yùn)行平臺(tái)”?;诖_定的“運(yùn)行平臺(tái)”,擴(kuò)展其軟硬件設(shè)施和必要的其它配套裝置,即可得到所需的目標(biāo)計(jì)算機(jī)應(yīng)用系統(tǒng)。</p><p>  2. 基于現(xiàn)代超大規(guī)模的可編程器件和現(xiàn)代EDA技術(shù),開發(fā)一個(gè)“片上系統(tǒng)”/“片上可編程系統(tǒng)”,用一個(gè)“定制”/“半定制”的專用集成電路來

31、實(shí)現(xiàn)目標(biāo)計(jì)算機(jī)應(yīng)用系統(tǒng)。</p><p>  通過第一種途徑(也是傳統(tǒng)的途徑)來實(shí)現(xiàn)計(jì)算機(jī)應(yīng)用系統(tǒng),其關(guān)鍵的工作是開發(fā)面向應(yīng)用目標(biāo)的擴(kuò)展軟件-應(yīng)用軟件。目前在大型數(shù)據(jù)處理系統(tǒng)等應(yīng)用領(lǐng)域通常采用這種方式。在這種方式下,通常計(jì)算機(jī)應(yīng)用系統(tǒng)的工作環(huán)境很好、人們要求系統(tǒng)呈現(xiàn)出極大的靈活性以便適應(yīng)其系統(tǒng)環(huán)境的變化、系統(tǒng)需要擴(kuò)展的硬件設(shè)施通常都是可通過采購來獲得的、構(gòu)建系統(tǒng)所需的其它配套裝置種類較少且易于通過采購等方式獲得。

32、由此形成的系統(tǒng)的知識(shí)產(chǎn)權(quán)主要是所開發(fā)的應(yīng)用軟件的著作權(quán)。</p><p>  通過第二種途徑來實(shí)現(xiàn)計(jì)算機(jī)應(yīng)用系統(tǒng),其關(guān)鍵性的工作是在現(xiàn)代EDA技術(shù)的支持下在相應(yīng)可編程器件中構(gòu)建相應(yīng)系統(tǒng)的硬件(這既包括通常意義上的計(jì)算機(jī)硬件,也包括擴(kuò)展的其它數(shù)字電路)。目前在設(shè)備控制、過程控制、自動(dòng)測(cè)量、數(shù)字信號(hào)處理、嵌入式系統(tǒng)應(yīng)用等眾多應(yīng)用領(lǐng)域通常采用這種方式。在這種方式下,系統(tǒng)的軟件部分的規(guī)模通常不大,人們通常是在配套的開發(fā)平

33、臺(tái)上與硬件開發(fā)同步地開發(fā)其軟件設(shè)施并在交付前將其植入可編程芯片、完成聯(lián)機(jī)測(cè)試并制作一體化的定制電路(在現(xiàn)代,EDA技術(shù)的發(fā)展已使得制作單個(gè)專用集成電路的費(fèi)用降到了人們普遍可接受的水平)交付。由于構(gòu)建的計(jì)算機(jī)應(yīng)用系統(tǒng)是單片式的、個(gè)性化的,故形成的系統(tǒng)的知識(shí)產(chǎn)權(quán)是完整的計(jì)算機(jī)應(yīng)用系統(tǒng)產(chǎn)品。</p><p>  在EDA技術(shù)、可編程芯片技術(shù)高速發(fā)展的形勢(shì)下,人們已開始嘗試將大型信息系統(tǒng)通過上述第二種途徑來構(gòu)建并獲得了較

34、理想的結(jié)果。由此有人預(yù)言,計(jì)算機(jī)技術(shù)今后的發(fā)展將進(jìn)入一個(gè)基于可編程器件來構(gòu)建計(jì)算機(jī)系統(tǒng)的新時(shí)代。</p><p>  1.2 現(xiàn)代計(jì)算機(jī)應(yīng)用系統(tǒng)開發(fā)的一般流程</p><p>  當(dāng)一個(gè)計(jì)算機(jī)應(yīng)用系統(tǒng)采用上述第二種途徑來實(shí)現(xiàn)時(shí),相應(yīng)的系統(tǒng)開發(fā)過程可概述為:</p><p>  1. 進(jìn)行目標(biāo)系統(tǒng)的系統(tǒng)分析,確定對(duì)目標(biāo)計(jì)算機(jī)應(yīng)用系統(tǒng)的總體要求,確定目標(biāo)系統(tǒng)的系統(tǒng)環(huán)境及

35、其相互關(guān)聯(lián);</p><p>  2. 確定滿足系統(tǒng)目標(biāo)要求的硬件、軟件的總體特性以及兩者間的相互關(guān)聯(lián);</p><p>  3. 并行地完成系統(tǒng)軟硬件的開發(fā)(包括獨(dú)立的系統(tǒng)測(cè)試在內(nèi));</p><p>  4. 實(shí)現(xiàn)系統(tǒng)軟硬件在CPLD/FPGA中的系統(tǒng)集成,在相關(guān)系統(tǒng)設(shè)施(目前已有易得到的相應(yīng)設(shè)施)的支持下完成目標(biāo)系統(tǒng)的系統(tǒng)測(cè)試;</p><

36、p>  5. 將目標(biāo)系統(tǒng)制作為“專用集成電路”或“可編程的專用集成電路”交付。</p><p>  在這種計(jì)算機(jī)應(yīng)用系統(tǒng)開發(fā)模式下,系統(tǒng)硬件部分的開發(fā)過程可概述為:</p><p>  1. 進(jìn)行問題的系統(tǒng)分析,明確系統(tǒng)的目標(biāo)要求;</p><p>  2. 確定系統(tǒng)的總體結(jié)構(gòu)和系統(tǒng)開發(fā)方案;</p><p>  3. 在相應(yīng)EDA軟件

37、與硬件測(cè)試環(huán)境的支持下完成各相關(guān)部件的開發(fā)(這包括:形成部件的確定EDA描述、在EDA編輯工具的支持下將設(shè)計(jì)描述 — 原理圖/用指定“硬件描述語言”編寫的設(shè)計(jì)描述程序 — 輸入EDA系統(tǒng)、進(jìn)行部件的時(shí)序分析與仿真處理、進(jìn)行CPLD/FPGA芯片的引腳適配與重編譯、下載EDA系統(tǒng)產(chǎn)生的目標(biāo)文件到基于CPLD/FPGA的硬件測(cè)試環(huán)境、應(yīng)用相應(yīng)硬件測(cè)試環(huán)境對(duì)設(shè)計(jì)進(jìn)行測(cè)試,經(jīng)過這一系列的處理,即可得到相應(yīng)部件的設(shè)計(jì)實(shí)現(xiàn));</p>

38、<p>  4. 在現(xiàn)代EDA技術(shù)下,由此開發(fā)的部件可如軟件中的“模塊”那樣簡單地被引用以構(gòu)成更復(fù)雜的硬件的設(shè)計(jì)資源;</p><p>  5. 如開發(fā)部件那樣完成硬件的設(shè)計(jì)和基于CPLD/FPGA器件的實(shí)現(xiàn)。</p><p><b>  1.3 本文的結(jié)構(gòu)</b></p><p>  第2章簡要地介紹了CPLD/FPGA的基本知識(shí)

39、,目的是闡明這種可編程邏輯器件的基本結(jié)構(gòu)和特點(diǎn)。</p><p>  第3章為軟件開發(fā)環(huán)境Quartus II 9.0的基本知識(shí)和康芯電子有限公司的計(jì)算機(jī)組成原理試驗(yàn)箱的介紹。試驗(yàn)箱包括Altera公司的Cyclone FPGA器件和外圍按鍵,顯示模塊,可用于驗(yàn)證設(shè)計(jì)的正確性。</p><p>  第4章為8位通用運(yùn)算器和按鍵測(cè)試模塊的總體結(jié)構(gòu)設(shè)計(jì)。主要討論了運(yùn)算器的整體架構(gòu),及其用于測(cè)試

40、的按鍵模塊的接口設(shè)計(jì)。</p><p>  第5章為基本模塊的設(shè)計(jì)。該章描述了8位通用運(yùn)算器各單元模塊的設(shè)計(jì)和按鍵模塊各單元模塊的設(shè)計(jì)。</p><p>  是對(duì)8位通用運(yùn)算器的測(cè)試。它綜合了單元模塊的測(cè)試和綜合測(cè)試,并給出了該8位通用運(yùn)算器能實(shí)現(xiàn)的指令的指令表。</p><p>  為結(jié)束語。該章對(duì)畢業(yè)設(shè)計(jì)過程做了總結(jié),對(duì)設(shè)計(jì)的不足之處做了說明,并表達(dá)了對(duì)畢業(yè)設(shè)計(jì)

41、的體會(huì)。</p><p>  第2章 CPLD/FPGA基本特性</p><p>  可編程邏輯器件PLD(Programmable Logic Device)是20世紀(jì)70年代發(fā)展起來的一種新的集成器件。PLD是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,是一種半定制的集成電路,結(jié)合EDA技術(shù)可以快速方便地構(gòu)建數(shù)字系統(tǒng)。本章主要闡述幾類常用的大規(guī)??删幊踢壿嬈骷慕Y(jié)構(gòu)和工作原理。</p>

42、<p>  2.1 CPLD簡介</p><p>  現(xiàn)在的PLD以大規(guī)模,超大規(guī)模集成電路工藝制造的CPLD,F(xiàn)PGA為主。前面曾提到多種PLD器件在實(shí)用中已被淘汰,大致原因如下:(1)陣列規(guī)模較小,資源不夠用于數(shù)字系統(tǒng)。當(dāng)設(shè)計(jì)較大的數(shù)字邏輯時(shí),需要多片器件,性能,成本及設(shè)計(jì)周期都會(huì)受到影響。</p><p>  片內(nèi)寄存器資源不足,且寄存器的結(jié)構(gòu)限制較多(如有的器件要求

43、時(shí)鐘共用),難以構(gòu)成豐富的時(shí)序電路。I/O不夠靈活,如三態(tài)控制等,限制了片內(nèi)資源的利用率。</p><p>  編程不便,需要專用的編程工具,對(duì)于使用熔絲型的簡單PLD更是不便。</p><p>  上述原因?qū)е铝耍唵蜳LD退出了歷史舞臺(tái),取而代之的是CPLD和FPGA。</p><p>  CPLD由可編程邏輯的功能塊圍繞一個(gè)可編程互連矩陣構(gòu)成。由固定長度的金屬

44、線實(shí)現(xiàn)邏輯單元之間的互連,并增加了I/O控制模塊的數(shù)量和功能??梢园袰PLD的基本結(jié)構(gòu)看成由可編程邏輯陣列(LAB)、可編程I/O控制模塊和可編程內(nèi)部連線(PIA)等三部分組成。</p><p>  圖2-1 CPLD內(nèi)部結(jié)構(gòu)</p><p>  2.1.1 可編程邏輯陣列(LAB)</p><p>  可編程邏輯陣列由若干個(gè)可編程邏輯宏單元(Logic Macro

45、 Cell,LMC)組成, LMC內(nèi)部主要包括與陣列、或陣列、可編程觸發(fā)器和多路選擇器等電路,能獨(dú)立地配置為時(shí)序或組合工作方式。</p><p><b>  乘積項(xiàng)共享結(jié)構(gòu)</b></p><p>  在CPLD的宏單元中,如果輸出表達(dá)式的與項(xiàng)較多,對(duì)應(yīng)的或門輸入端不夠用時(shí),可以借助可編程開關(guān)將同一單元(或其他單元)中的其他或門與之聯(lián)合起來使用,或者在每個(gè)宏單元中提供

46、未使用的乘積項(xiàng)給其他宏單元使用。</p><p><b> ?。?)多觸發(fā)器結(jié)構(gòu)</b></p><p>  早期可編程器件的每個(gè)輸出宏單元(OLMC)只有一個(gè)觸發(fā)器,而CPLD的宏單元內(nèi)通常含兩個(gè)或兩個(gè)以上的觸發(fā)器,其中只有一個(gè)觸發(fā)器與輸出端相連,其余觸發(fā)器的輸出不與輸出端相連,但可以通過相應(yīng)的緩沖電路反饋到與陣列,從而與其他觸發(fā)器一起構(gòu)成較復(fù)雜的時(shí)序電路。這些不與

47、輸出端相連的內(nèi)部觸發(fā)器就稱為“隱埋”觸發(fā)器。這種結(jié)構(gòu)可以不增加引腳數(shù)目,而增加其內(nèi)部資源。</p><p><b>  異步時(shí)鐘</b></p><p>  早期可編程器件只能實(shí)現(xiàn)同步時(shí)序電路,在CPLD器件中各觸發(fā)器的時(shí)鐘可以異步工作,有些器件中觸發(fā)器的時(shí)鐘還可以通過數(shù)據(jù)選擇器或時(shí)鐘網(wǎng)絡(luò)進(jìn)行選擇。此外,OLMC內(nèi)觸發(fā)器的異步清零和異步置位也可以用乘積項(xiàng)進(jìn)行控制,因而

48、使用更加靈活。</p><p>  2.1.2 可編程I/O單元(IOC)</p><p>  CPLD的I/O單元(Input/Output Cell,IOC),是內(nèi)部信號(hào)到I/O引腳的接口部分。根據(jù)器件和功能的不同,各種器件的結(jié)構(gòu)也不相同。由于陣列型器件通常只有少數(shù)幾個(gè)專用輸入端,大部分端口均為I/O端,而且系統(tǒng)的輸入信號(hào)通常需要鎖存。因此I/O常作為一個(gè)獨(dú)立單元來處理。</p&

49、gt;<p>  2.1.3 可編程內(nèi)部連線(PIA)</p><p>  可編程內(nèi)部連線的作用是在各邏輯宏單元之間以及邏輯宏單元和I/O單元之間提供互連網(wǎng)絡(luò)。各邏輯宏單元通過可編程連線陣列接收來自輸入端的信號(hào),并將宏單元的信號(hào)送目的地。這種互連機(jī)制有很大的靈活性,它允許在不影響引腳分配的情況下改變內(nèi)部的設(shè)計(jì)。</p><p>  2.2 FPGA簡介</p>

50、<p>  除CPLD外,F(xiàn)PGA是大規(guī)??删幊踢壿嬈骷牧硪淮箢怭LD器件。FPGA(現(xiàn)場(chǎng)可編程門陣列)采用另一種可編程邏輯形成方式,即可編程的查找表LUT(Look Up Table)結(jié)構(gòu)。LUT是可編程的最小邏輯單元。</p><p>  圖2.-2 FPGA查找表單元</p><p>  圖2-3 FPGA查找表內(nèi)部結(jié)構(gòu)</p><p>  一個(gè)N

51、輸入查找表 (LUT,Look Up Table)可以實(shí)現(xiàn)N個(gè)輸入變量的任何邏輯功能,如 N輸入“與”、 N輸入“異或”等。輸入多于N個(gè)的函數(shù)、方程必須分開用幾個(gè)查找表(LUT)實(shí)現(xiàn)。</p><p>  圖2-4查找表“與”邏輯</p><p>  N個(gè)輸入的邏輯函數(shù)需要2的N次方的容量的SRAM來實(shí)現(xiàn),一般輸入多于N個(gè)的邏輯函數(shù),其查找表采用多個(gè)邏輯塊級(jí)連的方式。N個(gè)輸入的邏輯函數(shù)需

52、要2的N次方的容量的SRAM來實(shí)現(xiàn),一般輸入多于N個(gè)的邏輯函數(shù),其查找表采用多個(gè)邏輯塊級(jí)連的方式。</p><p>  圖2-5 查找表的級(jí)聯(lián)方式</p><p>  查找表中的數(shù)就是SRAM陣列中所存邏輯函數(shù)的真值,查找表的輸入就是SRAM的地址輸入。</p><p>  用LUT實(shí)現(xiàn)邏輯函數(shù)的過程:</p><p>  將邏輯函數(shù)的真值表

53、事先存儲(chǔ)在LUT的存儲(chǔ)單元中,當(dāng)邏輯函數(shù)的輸入變量取不同組態(tài)時(shí),相應(yīng)組態(tài)的二進(jìn)制取值構(gòu)成SRAM的地址,選中相應(yīng)地址對(duì)應(yīng)的SRAM單元,也就得到了輸入變量組合對(duì)應(yīng)的邏輯值。</p><p>  第3章 軟硬件開發(fā)環(huán)境</p><p>  在EDA工具的設(shè)計(jì)環(huán)境中,有多種途徑來完成目標(biāo)系統(tǒng)的表達(dá)和輸入,如HDL的文本輸入方式,原理圖輸入方式,狀態(tài)圖輸入方式,以及混合輸入方式等。相比之下,HD

54、L文本輸入方式最基本,最直接。本章將討論基于Quartus II 9.0的VHDL文本輸入設(shè)計(jì)流程,包括設(shè)計(jì)輸入,綜合,適配,仿真測(cè)試和編程下載等重要方法。硬件平臺(tái)選取的是杭州康芯電子有限公司的現(xiàn)代計(jì)算機(jī)組成原理實(shí)驗(yàn)系統(tǒng)。</p><p>  3.1 基本設(shè)計(jì)流程</p><p>  Quartus II 是Altera公司繼Max+plus II之后開發(fā)的一種針對(duì)其公司生產(chǎn)的系列CPLD

55、/PGFA器件的綜合性開發(fā)軟件,它的版本不斷升級(jí),從4.0版到10.0版,這里介紹的是Quartus II 9.0版,該軟件有如下幾個(gè)顯著的特點(diǎn):</p><p>  1、Quartus II 的優(yōu)點(diǎn)</p><p>  該軟件界面友好,使用便捷,功能強(qiáng)大,是一個(gè)完全集成化的可編程邏輯設(shè)計(jì)環(huán)境,是先進(jìn)的EDA工具軟件。該軟件具有開放性、與結(jié)構(gòu)無關(guān)、多平臺(tái)、完全集成化、豐富的設(shè)計(jì)庫、模塊化工

56、具等特點(diǎn),支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。</p><p>  Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)

57、一,功能集中,易學(xué)易用等特點(diǎn)。</p><p>  2、Quartus II對(duì)器件的支持</p><p>  Quartus II支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘積項(xiàng)器件。支持MAX II

58、 CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含LPM/MegaFunction宏功能模塊庫,用戶可以充分利用成熟的模塊,簡化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入

59、式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺(tái)。</p><p>  3、Quartus II對(duì)第三方EDA工具的支持</p><p>  對(duì)第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。</p><p>  Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺(tái)。該平臺(tái)支持一個(gè)工作組環(huán)境下的設(shè)計(jì)要

60、求,其中包括支持基于Internet的協(xié)作設(shè)計(jì)。Quartus平臺(tái)與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應(yīng)商的開發(fā)工具相兼容。改進(jìn)了軟件的LogicLock模塊設(shè)計(jì)功能,增添了FastFit編譯選項(xiàng),推進(jìn)了網(wǎng)絡(luò)編輯性能,而且提升了調(diào)試能力。</p><p>  用Quartus II軟件進(jìn)行數(shù)字系統(tǒng)開發(fā)的流程如圖3-1所示,包

61、括以下步驟。</p><p>  圖 3-1 Quartus II設(shè)計(jì)開發(fā)流程</p><p> ?。?)設(shè)計(jì)輸入:包括原理圖輸入、HDL文本輸入、EDIF網(wǎng)表輸入、波形輸入等幾種方式。</p><p> ?。?)編譯:先根據(jù)設(shè)計(jì)要求設(shè)定編譯方式和編譯策略,如器件的選擇、邏輯綜合方式的選擇等;然后根據(jù)設(shè)定的參數(shù)和策略對(duì)設(shè)計(jì)項(xiàng)目進(jìn)行網(wǎng)表提取、邏輯綜合、器件適配,并產(chǎn)生

62、報(bào)告文件、延時(shí)信息文件及編程文件,供分析、仿真和編程使用。</p><p> ?。?)仿真與定時(shí)分析:仿真和定時(shí)分析均屬于設(shè)計(jì)校驗(yàn),其作用是測(cè)試設(shè)計(jì)的邏輯功能和延時(shí)特性。仿真包括功能仿真和時(shí)序仿真。定時(shí)分析器可通過三種不同的分析模式分別對(duì)傳播延時(shí)、時(shí)序邏輯性能和建立/保持時(shí)間進(jìn)行分析。</p><p> ?。?)編程與驗(yàn)證:用得到的編程文件通過編程電纜配置PLD,加入實(shí)際激勵(lì),進(jìn)行在線測(cè)試

63、。</p><p>  在設(shè)計(jì)過程中,如果出現(xiàn)錯(cuò)誤,則需重新回到設(shè)計(jì)輸入階段,改正錯(cuò)誤或調(diào)整電路后重新測(cè)試。</p><p>  圖3-2 Qurartus II 9.0開發(fā)環(huán)境</p><p>  3.2 硬件開發(fā)環(huán)境</p><p>  本系統(tǒng)硬件開發(fā)環(huán)境選擇的是杭州康芯電子有限公司的現(xiàn)代計(jì)算機(jī)組成原理實(shí)驗(yàn)系統(tǒng)。除按鍵模塊和GWA1C6A

64、型適配板外,本設(shè)計(jì)所用到的實(shí)驗(yàn)系統(tǒng)主要模塊如圖3-3。</p><p>  圖3-3 現(xiàn)代計(jì)算機(jī)組成原理實(shí)驗(yàn)系統(tǒng)</p><p>  GWA1C6A適配板包含F(xiàn)PGA芯片。該芯片是Altera公司生產(chǎn)的Cyclone系列芯片,型號(hào)為EP1C12Q240C8,有240個(gè)引腳。</p><p>  在設(shè)計(jì)8位通用運(yùn)算器使用到的實(shí)驗(yàn)系統(tǒng)包括輸入指令和數(shù)據(jù)的4乘4鍵盤,GW

65、A1C6A型適配板(未插RAM/Flash板和高速DAC/DAC板),用于顯示指令和數(shù)據(jù)流動(dòng)的全部的數(shù)碼管,顯示運(yùn)算結(jié)果標(biāo)志的LED燈,時(shí)序控制的按鍵等。</p><p>  除此之外,硬件平臺(tái)還要用到用于下載程序的下載器USB Blaster。</p><p>  第4章 8位通用運(yùn)算器設(shè)計(jì)方案</p><p>  本章對(duì)8位通用運(yùn)算器將描繪出其系統(tǒng)框圖,并對(duì)其各

66、功能部件及其作用進(jìn)行具體介紹。此外,本章還描述了用于測(cè)試運(yùn)算器的按鍵測(cè)試模塊。</p><p><b>  4.1 總體結(jié)構(gòu)圖</b></p><p>  圖4-1 總體結(jié)構(gòu)圖</p><p>  本設(shè)計(jì)的結(jié)構(gòu)框圖如圖4-1所示。主要包括按鍵模塊,8位通用運(yùn)算器模塊,數(shù)碼顯示模塊,及用于控制輸入的輸入控制信號(hào)。</p><p

67、>  8位通用運(yùn)算器模塊接受來自按鍵的指令信號(hào)和數(shù)據(jù)信號(hào),內(nèi)部包括算術(shù)邏輯ALU,通用寄存器組,Q寄存器,ALU輸入多路選擇,輸出選擇器等5個(gè)模塊。</p><p>  按鍵模塊接收16進(jìn)制輸入信號(hào),并在輸入控制信號(hào)的控制下,完成指令輸入和數(shù)據(jù)輸入。</p><p>  數(shù)碼顯示模塊共8個(gè)數(shù)碼顯示器,前4個(gè)數(shù)碼顯示管用于顯示輸入的指令,中間兩個(gè)數(shù)碼管用于顯示輸入的數(shù)據(jù),最后兩個(gè)數(shù)碼管

68、顯示輸出數(shù)據(jù)結(jié)果,另外還有4個(gè)指示燈,在做算術(shù)運(yùn)算時(shí),其中1個(gè)表示結(jié)果為零標(biāo)志,1個(gè)表示結(jié)果為負(fù)標(biāo)志,1個(gè)表示溢出信號(hào),1個(gè)表示進(jìn)位信號(hào)。</p><p>  4.2 8位通用運(yùn)算器模塊</p><p>  本節(jié)先介紹8位通用運(yùn)算器的指令,然后給出8位通用運(yùn)算器的對(duì)外接口,最后給出8位通用運(yùn)算器內(nèi)部結(jié)構(gòu)框圖。</p><p>  4.2.1 指令格式的設(shè)計(jì)</

69、p><p>  這里所指的指令是控制器所發(fā)出的一系列信號(hào)的集合。此8位通用運(yùn)算器的指令包含寄存器R1地址(IR[2,0]),寄存器R2的地址(IR[5,3]),低位進(jìn)位C,數(shù)據(jù)來源選擇(IR[9-7]),功能選擇(IR[12-10]),輸出選擇(IR[15-13])。</p><p>  表4-1 指令格式的設(shè)計(jì)</p><p><b>  其中C表示進(jìn)位輸入

70、</b></p><p>  4.2.2 運(yùn)算器對(duì)外接口</p><p>  圖4-2 8位通用運(yùn)算器對(duì)外接口</p><p>  圖4-2是8位通用運(yùn)算器的對(duì)外接口圖,對(duì)其說明如下:</p><p>  clk--時(shí)鐘信號(hào)輸入</p><p>  aaddr[2..0]--第一操作數(shù)寄存器

71、地址輸入</p><p>  baddr[2..0]--第二操作數(shù)寄存器地址輸入</p><p>  d[7..0]--8位數(shù)據(jù)輸入</p><p>  i[8..0]--9位指令輸入</p><p>  cin--進(jìn)位輸入</p><p>  y[7..0]--8位結(jié)果輸出&l

72、t;/p><p>  feq0--零標(biāo)志輸出</p><p>  f7--負(fù)標(biāo)志輸出</p><p>  c8--進(jìn)位標(biāo)志輸出</p><p>  ovr--溢出標(biāo)志輸出</p><p>  4.2.3 8位通用運(yùn)算器內(nèi)部結(jié)構(gòu)圖</p><p>  圖4-3 8

73、位通用運(yùn)算器內(nèi)部結(jié)構(gòu)圖</p><p>  從圖上可以看出R寄存器數(shù)據(jù)來源有寄存器組,D寄存器;S寄存器數(shù)據(jù)來源有寄存器組,Q寄存器;數(shù)據(jù)來源由指令I(lǐng)2-I0控制,而ALU執(zhí)行的運(yùn)算由I5-I3控制,ALU的輸出由I8-I6控制;指令I(lǐng)8-I0,進(jìn)位信號(hào)cin,寄存器地址baddr,aaddr及D數(shù)據(jù)都來自鍵盤輸入。</p><p>  圖4-4是寄存器組輸出結(jié)構(gòu)圖,地址由譯碼器進(jìn)行譯碼,

74、通過脈沖控制門將寄存器組的內(nèi)容輸出到R,S寄存器。寄存器寫入也是以類似的方式將運(yùn)算結(jié)果傳送回相關(guān)寄存器。</p><p>  圖4-4 寄存器輸出</p><p><b>  圖4-5寄存器寫入</b></p><p>  4.3 按鍵測(cè)試模塊</p><p>  由于對(duì)8位通用運(yùn)算器的測(cè)試要求,所以,除了8位通用運(yùn)算器

75、之外還特別設(shè)計(jì)了鍵盤模塊和顯示模塊。</p><p>  按鍵測(cè)試模塊分為按鍵模塊及指令和數(shù)據(jù)生成模塊。按鍵模塊完成對(duì)按鍵信號(hào)的檢測(cè)和編碼。指令和數(shù)據(jù)生成模塊在計(jì)數(shù)器的控制下,完成將鍵值通過移位的方式輸出為16位指令信號(hào)和8位數(shù)據(jù)信號(hào)。</p><p>  圖4-6 按鍵測(cè)試模塊視圖</p><p>  4.4 數(shù)碼顯示模塊</p><p>

76、  圖4-7 數(shù)碼顯示模塊</p><p>  前4個(gè)數(shù)碼管顯示的是指令碼,第5,6個(gè)數(shù)碼管顯示的是輸入數(shù)據(jù),最后兩個(gè)數(shù)碼管顯示運(yùn)算結(jié)果。</p><p>  4個(gè)指示燈依次為運(yùn)算結(jié)果為零標(biāo)志,運(yùn)算結(jié)果為負(fù)標(biāo)志,溢出標(biāo)志,進(jìn)位標(biāo)志。</p><p>  第5章 基本模塊設(shè)計(jì)</p><p>  本設(shè)計(jì)為一個(gè)基于VHDL語言的9位簡單指令,微處

77、理器的設(shè)計(jì)流程,包括微處理器的ALU操作數(shù)選擇、ALU功能選擇、RAM輸入輸出及移位操作,最后用頂層設(shè)計(jì)進(jìn)行元件例化。通過編譯、仿真檢查程序,最后在FPGA芯片上實(shí)現(xiàn)下載。</p><p>  5.1 ALU輸入選擇器的設(shè)計(jì)</p><p>  指令的編碼方式如表5-1:</p><p>  表5-1 ALU輸入選擇 </p><p>  

78、其中,ALU輸入選擇,可以對(duì)ALU中運(yùn)算的操作數(shù)進(jìn)行選擇,即R和S,選擇信號(hào)A、B、D、Q、0到ALU。</p><p>  ALU輸入選擇器是由微處理器指令中的源操作數(shù)所控制的兩個(gè)多路選擇器構(gòu)成的。輸出信號(hào)R在A、D和0之間選擇,S信號(hào)在A、B、Q和0之間選擇。其VHDL源程序如下:</p><p><b>  --端口聲明</b></p><p

79、>  entity alumux is</p><p>  port(d,q,a,b:in unsigned(7 downto 0);</p><p>  aluin_ctrl:in std_logic_vector(2 downto 0);--輸入選擇控制信號(hào)I2-I0</p><p>  r,s:buffer unsigned(7 downto 0));

80、--r,s寄存器</p><p>  end alumux;</p><p>  architecture behavioral of alumux is</p><p><b>  begin</b></p><p>  with aluin_ctrl select--R寄存器數(shù)據(jù)來源選擇</p>

81、<p>  r<=a when "000"|"001",</p><p>  "00000000" when "010"|"011"|"100",</p><p>  d when others;</p><p>  with

82、aluin_ctrl select--S寄存器數(shù)據(jù)來源選擇</p><p>  s<=q when "000"|"010"|"110",</p><p>  b when "001"|"011",</p><p>  a when "100&quo

83、t;|"101",</p><p>  "00000000" when others;</p><p>  end behavioral;</p><p>  5.2 ALU算術(shù)邏輯運(yùn)算單元的設(shè)計(jì)</p><p>  ALU算術(shù)運(yùn)算邏輯單元,可以對(duì)兩個(gè)8位操作數(shù)執(zhí)行3種算術(shù)運(yùn)算和5中邏輯運(yùn)算。輸入信號(hào)為

84、8位R信號(hào),8位S信號(hào)以及進(jìn)位信號(hào)cin,輸出信號(hào)為f[3..0]、運(yùn)算結(jié)果為零標(biāo)志,負(fù)標(biāo)志,進(jìn)位輸出信號(hào)c8、和溢出標(biāo)志ovr。ALU的輸出信號(hào)f[7..0]還反饋到寄存器和存儲(chǔ)器。</p><p>  表5-2 ALU功能選擇</p><p>  ALU算術(shù)邏輯運(yùn)算單元的主要功能是根據(jù)指令碼的要求。其VHDL源程序如下:</p><p>  entity alu

85、 is</p><p>  port(clk:in std_logic;--時(shí)鐘信號(hào)</p><p>  r,s:in unsigned(7 downto 0);--r,s端輸入信號(hào)</p><p>  alu_ctrl:in std_logic_vector(2 downto 0);--功能選擇信號(hào)</p><p&g

86、t;  cin:in std_logic;--低位進(jìn)位輸入</p><p>  f:buffer unsigned(7 downto 0);--結(jié)果輸出</p><p>  feq0:buffer std_logic;--運(yùn)算結(jié)果為零輸出</p><p>  f7:buffer std_logic;--負(fù)標(biāo)志輸出<

87、;/p><p>  c8:buffer std_logic;--進(jìn)位輸出</p><p>  ovr:buffer std_logic);--溢出輸出</p><p><b>  end alu;</b></p><p>  architecture behavioral of alu is<

88、/p><p>  signal tr,ts,tf:unsigned(8 downto 0);</p><p>  signal feq0_t,f7_t,c8_t,ovr_t:std_logic;</p><p><b>  begin</b></p><p>  tr<='0'&r;

89、-</p><p>  ts<='0'&s;</p><p>  process(tr,ts,cin,alu_ctrl)</p><p><b>  begin</b></p><p>  case alu_ctrl is</p><p> 

90、 when "000"=>---加運(yùn)算r+s</p><p>  if cin='0' then</p><p>  tf<=tr+ts;</p><p><b>  else</b></p><p>  tf<=tr+ts+1;&

91、lt;/p><p><b>  end if;</b></p><p>  when "001"=>--減運(yùn)算s-r</p><p>  if cin='0' then</p><p>  tr<=(not tr)+1;</p><p> 

92、 tf<=tr+ts;</p><p><b>  else</b></p><p>  tr<=not tr;</p><p>  tf<=tr+ts;</p><p><b>  end if;</b></p><p>  when "0

93、10"=>--減運(yùn)算r-s</p><p>  if cin='0' then</p><p>  ts<=(not ts)+1;</p><p>  tf<=tr+ts;</p><p><b>  else</b></p><p>

94、;  ts<=not ts;</p><p>  tf<=tr+ts;</p><p><b>  end if;</b></p><p>  when "011"=>--或運(yùn)算</p><p>  tf<=tr or ts;</p><p&g

95、t;  when "100"=>--與運(yùn)算</p><p>  tf<=tr and ts;</p><p>  when "101"=>--非r</p><p>  tf<=not tr;</p><p>  when "110"

96、=>--異或運(yùn)算</p><p>  tf<=tr xor ts;</p><p>  when "111"=>--同或運(yùn)算</p><p>  tf<=not(tr xor ts);</p><p>  when others=>null;</p>

97、<p><b>  end case;</b></p><p>  end process;</p><p>  f<=tf(7 downto 0);--運(yùn)算結(jié)果f</p><p>  c8_t<=tf(8);--進(jìn)位信號(hào)</p><p>  ovr_t<=&

98、#39;1' when ((tf(8)/=tf(7))and(tr(7)=ts(7))) else '0';--溢出信號(hào)</p><p>  feq0_t<='1' when f="00000000" else '0';--運(yùn)算結(jié)果為零標(biāo)志</p><p>  f7_t<=tf(7);

99、--負(fù)標(biāo)志</p><p>  process(clk,c8_t,ovr_t)</p><p><b>  begin</b></p><p>  if clk'event and clk='1' then</p><p>  c8<=c8_t;--進(jìn)位信號(hào)鎖存<

100、/p><p>  ovr<=ovr_t;--溢出信號(hào)鎖存</p><p>  feq0<=feq0_t;--運(yùn)算結(jié)果為零標(biāo)志鎖存</p><p>  f7<=f7_t;--負(fù)標(biāo)志鎖存</p><p><b>  end if;</b></p><

101、;p>  end process;</p><p>  end behavioral;</p><p>  5.3 寄存器組RAM的設(shè)計(jì)</p><p>  寄存器組RAM用于讀寫數(shù)據(jù)的雙端口存儲(chǔ)器。3位aaddr信號(hào)和baddr信號(hào)對(duì)包含8個(gè)寄存器的寄存器組進(jìn)行尋址,決定了輸出線A、B的讀出數(shù)據(jù)。</p><p>  表5-3 輸入

102、輸出及移位操作</p><p>  對(duì)寄存器組的操作包括在給定的地址信號(hào)作用下,實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出。在本模塊中,數(shù)據(jù)的數(shù)入有3種不同的方式,由指令碼I[8..6]所示的方式進(jìn)行控制。其VHDL源程序如下:</p><p><b>  --端口聲明</b></p><p>  entity ram is</p><p>

103、  port(clk:in std_logic;--時(shí)鐘信號(hào)</p><p>  aaddr,baddr:in unsigned(3 downto 0);--寄存器組地址信號(hào)</p><p>  f:in unsigned(7 downto 0);--結(jié)果輸出回送信號(hào)</p><p>  ram_ctrl:in std_logic_vecto

104、r(2 downto 0);--輸出結(jié)果回送的輸入信號(hào)I8-I6</p><p>  a,b:buffer unsigned(7 downto 0));--R,S輸入端緩沖器</p><p><b>  end ram;</b></p><p>  architecture behavioral of ram is</p>

105、;<p>  type ram_type is array(15 downto 0) of unsigned(7 downto 0);</p><p>  signal ab_data:ram_type;--ab_data寄存器組變量定義</p><p>  signal ctrl:std_logic_vector(1 downto 0);</p>&

106、lt;p>  signal ram0,ram7:std_logic;</p><p><b>  begin</b></p><p>  ctrl<=ram_ctrl(2)&ram_ctrl(1);</p><p>  process(clk,baddr)</p><p><b>  beg

107、in</b></p><p>  if clk'event and clk='1' then</p><p>  case ctrl is</p><p>  when "01"=>--輸出結(jié)果回送到寄存器組</p><p>  ab_data(to_integer(baddr)

108、)<=f;</p><p>  when "10"=>--右移</p><p>  ab_data(to_integer(baddr))<=f(7)&f(7 downto 1);</p><p>  when "11"=>--左移</p><p>  ab_data(

109、to_integer(baddr))<=f(6 downto 0)&f(0);</p><p>  when others=></p><p>  ab_data(to_integer(baddr))<=ab_data(to_integer(baddr));</p><p><b>  end case;</b><

110、;/p><p><b>  end if;</b></p><p>  end process;</p><p>  a<=ab_data(to_integer(aaddr));--讀第一操作數(shù)</p><p>  b<=ab_data(to_integer(baddr));--讀第二操作數(shù)</p>

111、;<p>  end behavioral;</p><p>  5.4 寄存器qreg的設(shè)計(jì)</p><p>  表5-4 Q寄存器輸入輸出及移位操作</p><p>  寄存器的操作與RAM的操作類似,也具有保持、接收、左移和右移等功能,操作受時(shí)鐘信號(hào)CLK控制,其VHDL源程序如下:</p><p><b>  

112、--端口聲明</b></p><p>  entity qreg is</p><p>  port(clk:in std_logic;--時(shí)鐘信號(hào)輸入</p><p>  f:in unsigned(7 downto 0);--運(yùn)算結(jié)果回送輸入信號(hào)</p><p>  q_ctrl:in std_logi

113、c_vector(2 downto 0);--Q寄存器控制信號(hào)</p><p>  q:buffer unsigned(7 downto 0));--Q寄存器輸入緩沖器</p><p><b>  end qreg;</b></p><p>  architecture behavioral of qreg is</p>

114、;<p>  signal q_data:unsigned(7 downto 0);</p><p>  signal q0,q7:std_logic;</p><p><b>  begin</b></p><p>  process(clk)</p><p><b>  begin</b

115、></p><p>  if clk'event and clk='1' then</p><p>  case q_ctrl is</p><p>  when "000"=>q_data<=f;--結(jié)果送入Q寄存器</p><p>  when "100&qu

116、ot;=>q_data<=q7&q(7 downto 1);--右移</p><p>  when "110"=>q_data<=q(6 downto 0)&q0;--左移</p><p>  when others=>q_data<=q_data;</p><p><b>  e

117、nd case;</b></p><p>  q<=q_data;</p><p><b>  end if;</b></p><p>  end process;</p><p>  q7<=f(7) when (q_ctrl="110" or q_ctrl="11

118、1") else 'Z';</p><p>  q0<=f(0) when (q_ctrl="100" or q_ctrl="101") else 'Z';</p><p>  end behavioral;</p><p>  5.5 輸出選擇器設(shè)計(jì)</p>&l

119、t;p>  綜合本小節(jié)和上兩個(gè)小節(jié),得到的是數(shù)據(jù)的處理方式。如表5-5。</p><p>  表5-5 數(shù)據(jù)處理方式選擇說明</p><p>  輸出選擇器選擇將A信號(hào)或f信號(hào)輸出,用于選擇ALU輸出或者寄存器信號(hào)作為對(duì)外輸出信號(hào)。輸出選擇模塊主要是經(jīng)多路選擇器將輸出信號(hào)傳送到輸出總線y[7..0],輸出信的選擇受指令碼控制,輸出總線構(gòu)成三態(tài)結(jié)構(gòu),受控制端OE的控制。其VHDL源程序

120、如下:</p><p><b>  --端口聲明</b></p><p>  entity outmux is</p><p>  port(a,f:in unsigned(7 downto 0);--輸入信號(hào),第一操作數(shù),結(jié)果</p><p>  mux_ctrl:in std_logic_vector(2 d

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論