版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設計說明書</b></p><p> 題 目: 基于FPGA和VHDL實現(xiàn)的8位通用運算部件</p><p> 畢業(yè)論文(設計)任務書</p><p> 論文(設計)題目: 基于FPGA和VHDL實現(xiàn)的8位通用運算器 </p><p> 一、主要內(nèi)容及基
2、本要求</p><p> 主要內(nèi)容: </p><p> 利用Quartus II 9.0編寫VHDL程序,在FPGA開發(fā)板實現(xiàn)一個8位可進行加減算術(shù)運算和與,或,非,異或等邏輯運算的通用運算器,并開發(fā)對此運算器進行測試的按鍵輸入模塊,完成對運算器的綜合測試。
3、 </p><p> 基本要求: </p><p> 1.設計并實現(xiàn)ALU。ALU能完成對數(shù)據(jù)的基本操作,包括算術(shù)和邏輯運算,并輸出相應的標志信號。 </p&
4、gt;<p> 2.設計相應的指令格式,用于控制數(shù)據(jù)傳送,存儲,算術(shù)邏輯運算,移 位,輸出功能。 </p><p> 3設計按鍵和顯示模塊,用于對8位通用運算器進行測試。 </p><p><b> 二、重點研究的
5、問題</b></p><p> 1.深刻體會FPGA開發(fā)流程和VHDL與一般過程語言編程的差異,實際解決在編程中遇到的問題。 </p><p> 2.掌握8位通用運算器的模塊構(gòu)建,對單元電路進行電路波形仿真測試和綜合測試。
6、 </p><p> 3.開發(fā)一個按鍵輸入模塊,對8位通用運算部件進行測試。 </p><p><b> 進度安排</b></p><p> 四、應收集的資料及主要參考文獻</p><p> [1]潘松,黃
7、繼業(yè). EDA技術(shù)實用教程. 北京:科學出版社,2010.11 </p><p> [2]Kenneth L.Short. VHDL大學實用教程. 喬廬峰,尹延輝,李永成,牛燚坤譯. 北京:電子工業(yè)出版社,2011.9 </p><p> [3]Clive "Max&qu
8、ot; Maxfield. FPGA設計指南. 杜生海,刑聞譯. 北京:人民郵電出版社,2007.12 </p><p> [4]王誠,劉東衛(wèi),宋佳興. 計算機組成與設計 北京:清華大學出版社,2004.7 </p><p> [5]吳厚航. 深入淺出玩轉(zhuǎn)FPGA 北京:
9、北京航空航天大學出版社,2009.1 </p><p> [6]黃智偉,鄧月明,王彥. ARM嵌入式系統(tǒng)設計基礎教程 北京:北京航空航天大學出版社,2008.8 </p><p> 畢業(yè)論文(設計)評閱表</p><p> 畢業(yè)論文(設計)題目:
10、基于FPGA和VHDL實現(xiàn)的8位通用運算部件 </p><p> 畢業(yè)論文(設計)鑒定意見</p><p> 畢業(yè)論文(設計說明書) 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)代計算機應用系統(tǒng)3</p><p> 1.2 現(xiàn)代計算機應用系統(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 基本設計流程10</p><p> 3.2 硬件開發(fā)環(huán)境12</p><p> 第4章 8位通用運算器設計方案14</p><p> 4.1 總體結(jié)構(gòu)圖14</p><p&g
14、t; 4.2 8位通用運算器模塊14</p><p> 4.2.1 指令格式的設計14</p><p> 4.2.2 運算器對外接口15</p><p> 4.2.3 8位通用運算器內(nèi)部結(jié)構(gòu)圖16</p><p> 4.3 按鍵測試模塊17</p><p> 4.4 數(shù)碼顯示模塊18</p
15、><p> 第5章 基本模塊設計19</p><p> 5.1 ALU輸入選擇器的設計19</p><p> 5.2 ALU算術(shù)邏輯運算單元的設計20</p><p> 5.3 寄存器組RAM的設計22</p><p> 5.4 寄存器qreg的設計23</p><p> 5.
16、5 輸出選擇器設計24</p><p> 5.6 鍵盤測試模塊25</p><p> 5.6.1 4乘4按鍵25</p><p> 5.6.2 指令和數(shù)據(jù)生成模塊26</p><p><b> 第6章 測試29</b></p><p> 6.1 單元測試29</p>
17、;<p> 6.2 基本指令和綜合測試30</p><p> 第7章 結(jié)束語33</p><p><b> 參考文獻34</b></p><p><b> 致謝35</b></p><p><b> 附 錄36</b></p>&
18、lt;p> 基于FPGA和VHDL實現(xiàn)的8位通用運算部件</p><p> 摘要:本文介紹了在現(xiàn)代EDA技術(shù)支持下、基于CPLD/FPGA和VHDL開發(fā)的一個8位通用運算部件,系統(tǒng)討論了其設計實現(xiàn)以及在基于CPLD/FPGA的GW48GP硬件開發(fā)–測試環(huán)境中構(gòu)建與測試所涉及的系列問題、方法與技術(shù)。</p><p> 在現(xiàn)代計算機科學技術(shù)水平下,開發(fā)計算機應用系統(tǒng)的途徑之一就是利
19、用現(xiàn)代EDA技術(shù)和超大規(guī)模的可編程器件CPLD/FPGA技術(shù)的最新成就,開發(fā)一個“片上系統(tǒng)”/“片上可編程系統(tǒng)”、制作定制/半定制的專用集成電路來實現(xiàn)其系統(tǒng)目標。本文所介紹的就是在這種指導思想下完成的一個簡單的、局部性的、探索性的實例。</p><p> 文中對現(xiàn)代EDA技術(shù)、CPLD/FPGA器件及其與現(xiàn)代計算機應用系統(tǒng)開發(fā)間的關(guān)聯(lián)作了基礎性的討論,對通過這種方式制作一個8位通用運算部件的完整過程作了全面、系
20、統(tǒng)的介紹。在制作此8位通用運算部件時,應用了廣為流行的、標準化的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)代計算機應用系統(tǒng)</p><p> 在現(xiàn)代,完整的計算機技術(shù)包含三個相對獨立的部分:硬件技術(shù)、軟件技術(shù)和計算機應用技術(shù)。其中的“計算機應用技術(shù)”主要是指應用現(xiàn)代計算機硬件技術(shù)和軟件技術(shù)已取得的成就去解決人們生產(chǎn)、生活中的各種
29、實踐問題,即人們通常所論的“計算機應用系統(tǒng)開發(fā)”。</p><p> 所謂“計算機應用系統(tǒng)”,也稱為“基于計算機的系統(tǒng)”或“以計算機為基礎的系統(tǒng)”。它通常包含:計算機硬件、計算機軟件、信號測量裝置及將相應測量信號轉(zhuǎn)化為計算機硬件可識別信號的裝置、控制與信號執(zhí)行裝置(它們將計算機硬件輸出轉(zhuǎn)化為系統(tǒng)所操作的設備的有效行為)。</p><p> 在現(xiàn)代,實現(xiàn)一個“計算機應用系統(tǒng)”的典型途徑有
30、兩種:</p><p> 1. 基于一個確定的計算機系統(tǒng)來構(gòu)建。這個作為基礎的計算機系統(tǒng)通常被稱作待構(gòu)建的計算機應用系統(tǒng)的“運行平臺”?;诖_定的“運行平臺”,擴展其軟硬件設施和必要的其它配套裝置,即可得到所需的目標計算機應用系統(tǒng)。</p><p> 2. 基于現(xiàn)代超大規(guī)模的可編程器件和現(xiàn)代EDA技術(shù),開發(fā)一個“片上系統(tǒng)”/“片上可編程系統(tǒng)”,用一個“定制”/“半定制”的專用集成電路來
31、實現(xiàn)目標計算機應用系統(tǒng)。</p><p> 通過第一種途徑(也是傳統(tǒng)的途徑)來實現(xiàn)計算機應用系統(tǒng),其關(guān)鍵的工作是開發(fā)面向應用目標的擴展軟件-應用軟件。目前在大型數(shù)據(jù)處理系統(tǒng)等應用領(lǐng)域通常采用這種方式。在這種方式下,通常計算機應用系統(tǒng)的工作環(huán)境很好、人們要求系統(tǒng)呈現(xiàn)出極大的靈活性以便適應其系統(tǒng)環(huán)境的變化、系統(tǒng)需要擴展的硬件設施通常都是可通過采購來獲得的、構(gòu)建系統(tǒng)所需的其它配套裝置種類較少且易于通過采購等方式獲得。
32、由此形成的系統(tǒng)的知識產(chǎn)權(quán)主要是所開發(fā)的應用軟件的著作權(quán)。</p><p> 通過第二種途徑來實現(xiàn)計算機應用系統(tǒng),其關(guān)鍵性的工作是在現(xiàn)代EDA技術(shù)的支持下在相應可編程器件中構(gòu)建相應系統(tǒng)的硬件(這既包括通常意義上的計算機硬件,也包括擴展的其它數(shù)字電路)。目前在設備控制、過程控制、自動測量、數(shù)字信號處理、嵌入式系統(tǒng)應用等眾多應用領(lǐng)域通常采用這種方式。在這種方式下,系統(tǒng)的軟件部分的規(guī)模通常不大,人們通常是在配套的開發(fā)平
33、臺上與硬件開發(fā)同步地開發(fā)其軟件設施并在交付前將其植入可編程芯片、完成聯(lián)機測試并制作一體化的定制電路(在現(xiàn)代,EDA技術(shù)的發(fā)展已使得制作單個專用集成電路的費用降到了人們普遍可接受的水平)交付。由于構(gòu)建的計算機應用系統(tǒng)是單片式的、個性化的,故形成的系統(tǒng)的知識產(chǎn)權(quán)是完整的計算機應用系統(tǒng)產(chǎn)品。</p><p> 在EDA技術(shù)、可編程芯片技術(shù)高速發(fā)展的形勢下,人們已開始嘗試將大型信息系統(tǒng)通過上述第二種途徑來構(gòu)建并獲得了較
34、理想的結(jié)果。由此有人預言,計算機技術(shù)今后的發(fā)展將進入一個基于可編程器件來構(gòu)建計算機系統(tǒng)的新時代。</p><p> 1.2 現(xiàn)代計算機應用系統(tǒng)開發(fā)的一般流程</p><p> 當一個計算機應用系統(tǒng)采用上述第二種途徑來實現(xiàn)時,相應的系統(tǒng)開發(fā)過程可概述為:</p><p> 1. 進行目標系統(tǒng)的系統(tǒng)分析,確定對目標計算機應用系統(tǒng)的總體要求,確定目標系統(tǒng)的系統(tǒng)環(huán)境及
35、其相互關(guān)聯(lián);</p><p> 2. 確定滿足系統(tǒng)目標要求的硬件、軟件的總體特性以及兩者間的相互關(guān)聯(lián);</p><p> 3. 并行地完成系統(tǒng)軟硬件的開發(fā)(包括獨立的系統(tǒng)測試在內(nèi));</p><p> 4. 實現(xiàn)系統(tǒng)軟硬件在CPLD/FPGA中的系統(tǒng)集成,在相關(guān)系統(tǒng)設施(目前已有易得到的相應設施)的支持下完成目標系統(tǒng)的系統(tǒng)測試;</p><
36、p> 5. 將目標系統(tǒng)制作為“專用集成電路”或“可編程的專用集成電路”交付。</p><p> 在這種計算機應用系統(tǒng)開發(fā)模式下,系統(tǒng)硬件部分的開發(fā)過程可概述為:</p><p> 1. 進行問題的系統(tǒng)分析,明確系統(tǒng)的目標要求;</p><p> 2. 確定系統(tǒng)的總體結(jié)構(gòu)和系統(tǒng)開發(fā)方案;</p><p> 3. 在相應EDA軟件
37、與硬件測試環(huán)境的支持下完成各相關(guān)部件的開發(fā)(這包括:形成部件的確定EDA描述、在EDA編輯工具的支持下將設計描述 — 原理圖/用指定“硬件描述語言”編寫的設計描述程序 — 輸入EDA系統(tǒng)、進行部件的時序分析與仿真處理、進行CPLD/FPGA芯片的引腳適配與重編譯、下載EDA系統(tǒng)產(chǎn)生的目標文件到基于CPLD/FPGA的硬件測試環(huán)境、應用相應硬件測試環(huán)境對設計進行測試,經(jīng)過這一系列的處理,即可得到相應部件的設計實現(xiàn));</p>
38、<p> 4. 在現(xiàn)代EDA技術(shù)下,由此開發(fā)的部件可如軟件中的“模塊”那樣簡單地被引用以構(gòu)成更復雜的硬件的設計資源;</p><p> 5. 如開發(fā)部件那樣完成硬件的設計和基于CPLD/FPGA器件的實現(xiàn)。</p><p><b> 1.3 本文的結(jié)構(gòu)</b></p><p> 第2章簡要地介紹了CPLD/FPGA的基本知識
39、,目的是闡明這種可編程邏輯器件的基本結(jié)構(gòu)和特點。</p><p> 第3章為軟件開發(fā)環(huán)境Quartus II 9.0的基本知識和康芯電子有限公司的計算機組成原理試驗箱的介紹。試驗箱包括Altera公司的Cyclone FPGA器件和外圍按鍵,顯示模塊,可用于驗證設計的正確性。</p><p> 第4章為8位通用運算器和按鍵測試模塊的總體結(jié)構(gòu)設計。主要討論了運算器的整體架構(gòu),及其用于測試
40、的按鍵模塊的接口設計。</p><p> 第5章為基本模塊的設計。該章描述了8位通用運算器各單元模塊的設計和按鍵模塊各單元模塊的設計。</p><p> 是對8位通用運算器的測試。它綜合了單元模塊的測試和綜合測試,并給出了該8位通用運算器能實現(xiàn)的指令的指令表。</p><p> 為結(jié)束語。該章對畢業(yè)設計過程做了總結(jié),對設計的不足之處做了說明,并表達了對畢業(yè)設計
41、的體會。</p><p> 第2章 CPLD/FPGA基本特性</p><p> 可編程邏輯器件PLD(Programmable Logic Device)是20世紀70年代發(fā)展起來的一種新的集成器件。PLD是大規(guī)模集成電路技術(shù)發(fā)展的產(chǎn)物,是一種半定制的集成電路,結(jié)合EDA技術(shù)可以快速方便地構(gòu)建數(shù)字系統(tǒng)。本章主要闡述幾類常用的大規(guī)模可編程邏輯器件的結(jié)構(gòu)和工作原理。</p>
42、<p> 2.1 CPLD簡介</p><p> 現(xiàn)在的PLD以大規(guī)模,超大規(guī)模集成電路工藝制造的CPLD,F(xiàn)PGA為主。前面曾提到多種PLD器件在實用中已被淘汰,大致原因如下:(1)陣列規(guī)模較小,資源不夠用于數(shù)字系統(tǒng)。當設計較大的數(shù)字邏輯時,需要多片器件,性能,成本及設計周期都會受到影響。</p><p> 片內(nèi)寄存器資源不足,且寄存器的結(jié)構(gòu)限制較多(如有的器件要求
43、時鐘共用),難以構(gòu)成豐富的時序電路。I/O不夠靈活,如三態(tài)控制等,限制了片內(nèi)資源的利用率。</p><p> 編程不便,需要專用的編程工具,對于使用熔絲型的簡單PLD更是不便。</p><p> 上述原因?qū)е铝耍唵蜳LD退出了歷史舞臺,取而代之的是CPLD和FPGA。</p><p> CPLD由可編程邏輯的功能塊圍繞一個可編程互連矩陣構(gòu)成。由固定長度的金屬
44、線實現(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> 可編程邏輯陣列由若干個可編程邏輯宏單元(Logic Macro
45、 Cell,LMC)組成, LMC內(nèi)部主要包括與陣列、或陣列、可編程觸發(fā)器和多路選擇器等電路,能獨立地配置為時序或組合工作方式。</p><p><b> 乘積項共享結(jié)構(gòu)</b></p><p> 在CPLD的宏單元中,如果輸出表達式的與項較多,對應的或門輸入端不夠用時,可以借助可編程開關(guān)將同一單元(或其他單元)中的其他或門與之聯(lián)合起來使用,或者在每個宏單元中提供
46、未使用的乘積項給其他宏單元使用。</p><p><b> ?。?)多觸發(fā)器結(jié)構(gòu)</b></p><p> 早期可編程器件的每個輸出宏單元(OLMC)只有一個觸發(fā)器,而CPLD的宏單元內(nèi)通常含兩個或兩個以上的觸發(fā)器,其中只有一個觸發(fā)器與輸出端相連,其余觸發(fā)器的輸出不與輸出端相連,但可以通過相應的緩沖電路反饋到與陣列,從而與其他觸發(fā)器一起構(gòu)成較復雜的時序電路。這些不與
47、輸出端相連的內(nèi)部觸發(fā)器就稱為“隱埋”觸發(fā)器。這種結(jié)構(gòu)可以不增加引腳數(shù)目,而增加其內(nèi)部資源。</p><p><b> 異步時鐘</b></p><p> 早期可編程器件只能實現(xiàn)同步時序電路,在CPLD器件中各觸發(fā)器的時鐘可以異步工作,有些器件中觸發(fā)器的時鐘還可以通過數(shù)據(jù)選擇器或時鐘網(wǎng)絡進行選擇。此外,OLMC內(nèi)觸發(fā)器的異步清零和異步置位也可以用乘積項進行控制,因而
48、使用更加靈活。</p><p> 2.1.2 可編程I/O單元(IOC)</p><p> CPLD的I/O單元(Input/Output Cell,IOC),是內(nèi)部信號到I/O引腳的接口部分。根據(jù)器件和功能的不同,各種器件的結(jié)構(gòu)也不相同。由于陣列型器件通常只有少數(shù)幾個專用輸入端,大部分端口均為I/O端,而且系統(tǒng)的輸入信號通常需要鎖存。因此I/O常作為一個獨立單元來處理。</p&
49、gt;<p> 2.1.3 可編程內(nèi)部連線(PIA)</p><p> 可編程內(nèi)部連線的作用是在各邏輯宏單元之間以及邏輯宏單元和I/O單元之間提供互連網(wǎng)絡。各邏輯宏單元通過可編程連線陣列接收來自輸入端的信號,并將宏單元的信號送目的地。這種互連機制有很大的靈活性,它允許在不影響引腳分配的情況下改變內(nèi)部的設計。</p><p> 2.2 FPGA簡介</p>
50、<p> 除CPLD外,F(xiàn)PGA是大規(guī)模可編程邏輯器件的另一大類PLD器件。FPGA(現(xiàn)場可編程門陣列)采用另一種可編程邏輯形成方式,即可編程的查找表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> 一個N
51、輸入查找表 (LUT,Look Up Table)可以實現(xiàn)N個輸入變量的任何邏輯功能,如 N輸入“與”、 N輸入“異或”等。輸入多于N個的函數(shù)、方程必須分開用幾個查找表(LUT)實現(xiàn)。</p><p> 圖2-4查找表“與”邏輯</p><p> N個輸入的邏輯函數(shù)需要2的N次方的容量的SRAM來實現(xiàn),一般輸入多于N個的邏輯函數(shù),其查找表采用多個邏輯塊級連的方式。N個輸入的邏輯函數(shù)需
52、要2的N次方的容量的SRAM來實現(xiàn),一般輸入多于N個的邏輯函數(shù),其查找表采用多個邏輯塊級連的方式。</p><p> 圖2-5 查找表的級聯(lián)方式</p><p> 查找表中的數(shù)就是SRAM陣列中所存邏輯函數(shù)的真值,查找表的輸入就是SRAM的地址輸入。</p><p> 用LUT實現(xiàn)邏輯函數(shù)的過程:</p><p> 將邏輯函數(shù)的真值表
53、事先存儲在LUT的存儲單元中,當邏輯函數(shù)的輸入變量取不同組態(tài)時,相應組態(tài)的二進制取值構(gòu)成SRAM的地址,選中相應地址對應的SRAM單元,也就得到了輸入變量組合對應的邏輯值。</p><p> 第3章 軟硬件開發(fā)環(huán)境</p><p> 在EDA工具的設計環(huán)境中,有多種途徑來完成目標系統(tǒng)的表達和輸入,如HDL的文本輸入方式,原理圖輸入方式,狀態(tài)圖輸入方式,以及混合輸入方式等。相比之下,HD
54、L文本輸入方式最基本,最直接。本章將討論基于Quartus II 9.0的VHDL文本輸入設計流程,包括設計輸入,綜合,適配,仿真測試和編程下載等重要方法。硬件平臺選取的是杭州康芯電子有限公司的現(xiàn)代計算機組成原理實驗系統(tǒng)。</p><p> 3.1 基本設計流程</p><p> Quartus II 是Altera公司繼Max+plus II之后開發(fā)的一種針對其公司生產(chǎn)的系列CPLD
55、/PGFA器件的綜合性開發(fā)軟件,它的版本不斷升級,從4.0版到10.0版,這里介紹的是Quartus II 9.0版,該軟件有如下幾個顯著的特點:</p><p> 1、Quartus II 的優(yōu)點</p><p> 該軟件界面友好,使用便捷,功能強大,是一個完全集成化的可編程邏輯設計環(huán)境,是先進的EDA工具軟件。該軟件具有開放性、與結(jié)構(gòu)無關(guān)、多平臺、完全集成化、豐富的設計庫、模塊化工
56、具等特點,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。</p><p> Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設計流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統(tǒng)
57、一,功能集中,易學易用等特點。</p><p> 2、Quartus II對器件的支持</p><p> Quartus II支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘積項器件。支持MAX II
58、 CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含LPM/MegaFunction宏功能模塊庫,用戶可以充分利用成熟的模塊,簡化了設計的復雜性、加快了設計速度。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實現(xiàn)各種DSP應用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設計、嵌入
59、式軟件開發(fā)、可編程邏輯設計于一體,是一種綜合性的開發(fā)平臺。</p><p> 3、Quartus II對第三方EDA工具的支持</p><p> 對第三方EDA工具的良好支持也使用戶可以在設計流程的各個階段使用熟悉的第三放EDA工具。</p><p> Altera的Quartus II可編程邏輯軟件屬于第四代PLD開發(fā)平臺。該平臺支持一個工作組環(huán)境下的設計要
60、求,其中包括支持基于Internet的協(xié)作設計。Quartus平臺與Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供應商的開發(fā)工具相兼容。改進了軟件的LogicLock模塊設計功能,增添了FastFit編譯選項,推進了網(wǎng)絡編輯性能,而且提升了調(diào)試能力。</p><p> 用Quartus II軟件進行數(shù)字系統(tǒng)開發(fā)的流程如圖3-1所示,包
61、括以下步驟。</p><p> 圖 3-1 Quartus II設計開發(fā)流程</p><p> ?。?)設計輸入:包括原理圖輸入、HDL文本輸入、EDIF網(wǎng)表輸入、波形輸入等幾種方式。</p><p> ?。?)編譯:先根據(jù)設計要求設定編譯方式和編譯策略,如器件的選擇、邏輯綜合方式的選擇等;然后根據(jù)設定的參數(shù)和策略對設計項目進行網(wǎng)表提取、邏輯綜合、器件適配,并產(chǎn)生
62、報告文件、延時信息文件及編程文件,供分析、仿真和編程使用。</p><p> ?。?)仿真與定時分析:仿真和定時分析均屬于設計校驗,其作用是測試設計的邏輯功能和延時特性。仿真包括功能仿真和時序仿真。定時分析器可通過三種不同的分析模式分別對傳播延時、時序邏輯性能和建立/保持時間進行分析。</p><p> ?。?)編程與驗證:用得到的編程文件通過編程電纜配置PLD,加入實際激勵,進行在線測試
63、。</p><p> 在設計過程中,如果出現(xiàn)錯誤,則需重新回到設計輸入階段,改正錯誤或調(diào)整電路后重新測試。</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)代計算機組成原理實驗系統(tǒng)。除按鍵模塊和GWA1C6A
64、型適配板外,本設計所用到的實驗系統(tǒng)主要模塊如圖3-3。</p><p> 圖3-3 現(xiàn)代計算機組成原理實驗系統(tǒng)</p><p> GWA1C6A適配板包含F(xiàn)PGA芯片。該芯片是Altera公司生產(chǎn)的Cyclone系列芯片,型號為EP1C12Q240C8,有240個引腳。</p><p> 在設計8位通用運算器使用到的實驗系統(tǒng)包括輸入指令和數(shù)據(jù)的4乘4鍵盤,GW
65、A1C6A型適配板(未插RAM/Flash板和高速DAC/DAC板),用于顯示指令和數(shù)據(jù)流動的全部的數(shù)碼管,顯示運算結(jié)果標志的LED燈,時序控制的按鍵等。</p><p> 除此之外,硬件平臺還要用到用于下載程序的下載器USB Blaster。</p><p> 第4章 8位通用運算器設計方案</p><p> 本章對8位通用運算器將描繪出其系統(tǒng)框圖,并對其各
66、功能部件及其作用進行具體介紹。此外,本章還描述了用于測試運算器的按鍵測試模塊。</p><p><b> 4.1 總體結(jié)構(gòu)圖</b></p><p> 圖4-1 總體結(jié)構(gòu)圖</p><p> 本設計的結(jié)構(gòu)框圖如圖4-1所示。主要包括按鍵模塊,8位通用運算器模塊,數(shù)碼顯示模塊,及用于控制輸入的輸入控制信號。</p><p
67、> 8位通用運算器模塊接受來自按鍵的指令信號和數(shù)據(jù)信號,內(nèi)部包括算術(shù)邏輯ALU,通用寄存器組,Q寄存器,ALU輸入多路選擇,輸出選擇器等5個模塊。</p><p> 按鍵模塊接收16進制輸入信號,并在輸入控制信號的控制下,完成指令輸入和數(shù)據(jù)輸入。</p><p> 數(shù)碼顯示模塊共8個數(shù)碼顯示器,前4個數(shù)碼顯示管用于顯示輸入的指令,中間兩個數(shù)碼管用于顯示輸入的數(shù)據(jù),最后兩個數(shù)碼管
68、顯示輸出數(shù)據(jù)結(jié)果,另外還有4個指示燈,在做算術(shù)運算時,其中1個表示結(jié)果為零標志,1個表示結(jié)果為負標志,1個表示溢出信號,1個表示進位信號。</p><p> 4.2 8位通用運算器模塊</p><p> 本節(jié)先介紹8位通用運算器的指令,然后給出8位通用運算器的對外接口,最后給出8位通用運算器內(nèi)部結(jié)構(gòu)框圖。</p><p> 4.2.1 指令格式的設計</
69、p><p> 這里所指的指令是控制器所發(fā)出的一系列信號的集合。此8位通用運算器的指令包含寄存器R1地址(IR[2,0]),寄存器R2的地址(IR[5,3]),低位進位C,數(shù)據(jù)來源選擇(IR[9-7]),功能選擇(IR[12-10]),輸出選擇(IR[15-13])。</p><p> 表4-1 指令格式的設計</p><p><b> 其中C表示進位輸入
70、</b></p><p> 4.2.2 運算器對外接口</p><p> 圖4-2 8位通用運算器對外接口</p><p> 圖4-2是8位通用運算器的對外接口圖,對其說明如下:</p><p> clk--時鐘信號輸入</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--進位輸入</p><p> y[7..0]--8位結(jié)果輸出&l
72、t;/p><p> feq0--零標志輸出</p><p> f7--負標志輸出</p><p> c8--進位標志輸出</p><p> ovr--溢出標志輸出</p><p> 4.2.3 8位通用運算器內(nèi)部結(jié)構(gòu)圖</p><p> 圖4-3 8
73、位通用運算器內(nèi)部結(jié)構(gòu)圖</p><p> 從圖上可以看出R寄存器數(shù)據(jù)來源有寄存器組,D寄存器;S寄存器數(shù)據(jù)來源有寄存器組,Q寄存器;數(shù)據(jù)來源由指令I(lǐng)2-I0控制,而ALU執(zhí)行的運算由I5-I3控制,ALU的輸出由I8-I6控制;指令I(lǐng)8-I0,進位信號cin,寄存器地址baddr,aaddr及D數(shù)據(jù)都來自鍵盤輸入。</p><p> 圖4-4是寄存器組輸出結(jié)構(gòu)圖,地址由譯碼器進行譯碼,
74、通過脈沖控制門將寄存器組的內(nèi)容輸出到R,S寄存器。寄存器寫入也是以類似的方式將運算結(jié)果傳送回相關(guān)寄存器。</p><p> 圖4-4 寄存器輸出</p><p><b> 圖4-5寄存器寫入</b></p><p> 4.3 按鍵測試模塊</p><p> 由于對8位通用運算器的測試要求,所以,除了8位通用運算器
75、之外還特別設計了鍵盤模塊和顯示模塊。</p><p> 按鍵測試模塊分為按鍵模塊及指令和數(shù)據(jù)生成模塊。按鍵模塊完成對按鍵信號的檢測和編碼。指令和數(shù)據(jù)生成模塊在計數(shù)器的控制下,完成將鍵值通過移位的方式輸出為16位指令信號和8位數(shù)據(jù)信號。</p><p> 圖4-6 按鍵測試模塊視圖</p><p> 4.4 數(shù)碼顯示模塊</p><p>
76、 圖4-7 數(shù)碼顯示模塊</p><p> 前4個數(shù)碼管顯示的是指令碼,第5,6個數(shù)碼管顯示的是輸入數(shù)據(jù),最后兩個數(shù)碼管顯示運算結(jié)果。</p><p> 4個指示燈依次為運算結(jié)果為零標志,運算結(jié)果為負標志,溢出標志,進位標志。</p><p> 第5章 基本模塊設計</p><p> 本設計為一個基于VHDL語言的9位簡單指令,微處
77、理器的設計流程,包括微處理器的ALU操作數(shù)選擇、ALU功能選擇、RAM輸入輸出及移位操作,最后用頂層設計進行元件例化。通過編譯、仿真檢查程序,最后在FPGA芯片上實現(xiàn)下載。</p><p> 5.1 ALU輸入選擇器的設計</p><p> 指令的編碼方式如表5-1:</p><p> 表5-1 ALU輸入選擇 </p><p>
78、其中,ALU輸入選擇,可以對ALU中運算的操作數(shù)進行選擇,即R和S,選擇信號A、B、D、Q、0到ALU。</p><p> ALU輸入選擇器是由微處理器指令中的源操作數(shù)所控制的兩個多路選擇器構(gòu)成的。輸出信號R在A、D和0之間選擇,S信號在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);--輸入選擇控制信號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ù)邏輯運算單元的設計</p><p> ALU算術(shù)運算邏輯單元,可以對兩個8位操作數(shù)執(zhí)行3種算術(shù)運算和5中邏輯運算。輸入信號為
84、8位R信號,8位S信號以及進位信號cin,輸出信號為f[3..0]、運算結(jié)果為零標志,負標志,進位輸出信號c8、和溢出標志ovr。ALU的輸出信號f[7..0]還反饋到寄存器和存儲器。</p><p> 表5-2 ALU功能選擇</p><p> ALU算術(shù)邏輯運算單元的主要功能是根據(jù)指令碼的要求。其VHDL源程序如下:</p><p> entity alu
85、 is</p><p> port(clk:in std_logic;--時鐘信號</p><p> r,s:in unsigned(7 downto 0);--r,s端輸入信號</p><p> alu_ctrl:in std_logic_vector(2 downto 0);--功能選擇信號</p><p&g
86、t; cin:in std_logic;--低位進位輸入</p><p> f:buffer unsigned(7 downto 0);--結(jié)果輸出</p><p> feq0:buffer std_logic;--運算結(jié)果為零輸出</p><p> f7:buffer std_logic;--負標志輸出<
87、;/p><p> c8:buffer std_logic;--進位輸出</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"=>---加運算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"=>--減運算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"=>--減運算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"=>--或運算</p><p> tf<=tr or ts;</p><p&g
95、t; when "100"=>--與運算</p><p> tf<=tr and ts;</p><p> when "101"=>--非r</p><p> tf<=not tr;</p><p> when "110"
96、=>--異或運算</p><p> tf<=tr xor ts;</p><p> when "111"=>--同或運算</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);--運算結(jié)果f</p><p> c8_t<=tf(8);--進位信號</p><p> ovr_t<=&
98、#39;1' when ((tf(8)/=tf(7))and(tr(7)=ts(7))) else '0';--溢出信號</p><p> feq0_t<='1' when f="00000000" else '0';--運算結(jié)果為零標志</p><p> f7_t<=tf(7);
99、--負標志</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;--進位信號鎖存<
100、/p><p> ovr<=ovr_t;--溢出信號鎖存</p><p> feq0<=feq0_t;--運算結(jié)果為零標志鎖存</p><p> f7<=f7_t;--負標志鎖存</p><p><b> end if;</b></p><
101、;p> end process;</p><p> end behavioral;</p><p> 5.3 寄存器組RAM的設計</p><p> 寄存器組RAM用于讀寫數(shù)據(jù)的雙端口存儲器。3位aaddr信號和baddr信號對包含8個寄存器的寄存器組進行尋址,決定了輸出線A、B的讀出數(shù)據(jù)。</p><p> 表5-3 輸入
102、輸出及移位操作</p><p> 對寄存器組的操作包括在給定的地址信號作用下,實現(xiàn)數(shù)據(jù)的輸入和輸出。在本模塊中,數(shù)據(jù)的數(shù)入有3種不同的方式,由指令碼I[8..6]所示的方式進行控制。其VHDL源程序如下:</p><p><b> --端口聲明</b></p><p> entity ram is</p><p>
103、 port(clk:in std_logic;--時鐘信號</p><p> aaddr,baddr:in unsigned(3 downto 0);--寄存器組地址信號</p><p> f:in unsigned(7 downto 0);--結(jié)果輸出回送信號</p><p> ram_ctrl:in std_logic_vecto
104、r(2 downto 0);--輸出結(jié)果回送的輸入信號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的設計</p><p> 表5-4 Q寄存器輸入輸出及移位操作</p><p> 寄存器的操作與RAM的操作類似,也具有保持、接收、左移和右移等功能,操作受時鐘信號CLK控制,其VHDL源程序如下:</p><p><b>
112、--端口聲明</b></p><p> entity qreg is</p><p> port(clk:in std_logic;--時鐘信號輸入</p><p> f:in unsigned(7 downto 0);--運算結(jié)果回送輸入信號</p><p> q_ctrl:in std_logi
113、c_vector(2 downto 0);--Q寄存器控制信號</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 輸出選擇器設計</p>&l
119、t;p> 綜合本小節(jié)和上兩個小節(jié),得到的是數(shù)據(jù)的處理方式。如表5-5。</p><p> 表5-5 數(shù)據(jù)處理方式選擇說明</p><p> 輸出選擇器選擇將A信號或f信號輸出,用于選擇ALU輸出或者寄存器信號作為對外輸出信號。輸出選擇模塊主要是經(jīng)多路選擇器將輸出信號傳送到輸出總線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);--輸入信號,第一操作數(shù),結(jié)果</p><p> mux_ctrl:in std_logic_vector(2 d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設計---基于fpga和vhdl實現(xiàn)的8位通用運算部件
- 畢業(yè)設計---基于FPGA和VHDL實現(xiàn)的8位通用運算部件.doc
- 基于FPGA的8位模型機的設計與實現(xiàn).pdf
- 基于OR1200通用FPGA快速原型的搭建.pdf
- 通信畢業(yè)設計----基于vhdl的ask調(diào)制與解調(diào)設計與實現(xiàn)
- 畢業(yè)設計(論文)-基于fpga的信號發(fā)生器的設計和實現(xiàn)
- 基于FPGA的矩陣運算實現(xiàn).pdf
- 畢業(yè)設計---基于fpga的數(shù)據(jù)采集和回放
- tecplot2013安裝教程-32位64位通用
- 基于vhdl的電梯控制系統(tǒng)畢業(yè)設計
- 基于fpga的基帶信號的位同步信號提取畢業(yè)設計
- 基于單片機和fpga的位同步信號提取(附程序)【畢業(yè)設計論文】
- 基于8位通用微處理器和SPI總線單軸插補控制器的研究.pdf
- 用vhdl設計led+漢字滾動顯示器畢業(yè)設計
- 基于fpga的數(shù)字電子時鐘設計-vhdl
- 基于fpga的差錯控制編碼的設計與實現(xiàn)【畢業(yè)設計】
- 用vhdl設計led+漢字滾動顯示器畢業(yè)設計
- 畢業(yè)設計---基于fpga技術(shù)實現(xiàn)usb通信-軟件
- OFDM信道估計模塊運算部件的FPGA設計.pdf
- 畢業(yè)設計(論文)基于fpga的fft算法設計與實現(xiàn)
評論
0/150
提交評論