數(shù)字邏輯電路設計實驗教案趙蕙.doc_第1頁
數(shù)字邏輯電路設計實驗教案趙蕙.doc_第2頁
數(shù)字邏輯電路設計實驗教案趙蕙.doc_第3頁
數(shù)字邏輯電路設計實驗教案趙蕙.doc_第4頁
數(shù)字邏輯電路設計實驗教案趙蕙.doc_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

VIP免費下載

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

文檔簡介

實驗一 半加器和全加器I實驗平臺實驗要求使用TTL小規(guī)模集成電路芯片74LS00搭建半加器電路和全加器電路,電路的輸入接實驗平臺開關,電路輸出接實驗平臺的發(fā)光管。希望同學們能夠通過實驗掌握使用基本門電路設計實現(xiàn)數(shù)字電路的方法。實驗原理在數(shù)字電路中,門電路就是用來實現(xiàn)基本邏輯關系的電路,比如這個實驗中的半加器和全加器。最基本的門電路是與門、或門和非門,由這些門可以組合成其它的邏輯電路。門電路最初由分立元件組成,集成電路出現(xiàn)后,我們現(xiàn)在使用的門電路都是集成門電路。半加器:完成兩個一位二進制數(shù)的相加而求得“和”及“進位”。全加器:當多位二進制數(shù)相加時,高位的相加運算除了要將本位的加數(shù)和被加數(shù)相加以外,還要考慮低位是否有向該位的進位。全加器完成將兩個一位的二進制數(shù)相加,并考慮低位來的進位,相當于三個一位二進制數(shù)相加的電路。實驗步驟1 設計根據(jù)半加器和全加器列出真值表,寫出輸出函數(shù),因為實驗要求使用“與非門”實現(xiàn),將輸出函數(shù)轉換為“與非門”形式,畫出使用與非門實現(xiàn)半加器和全加器的電路圖。&1ABSHCH&AiBiSHiCi&Ci-1Si半加器與非門電路 全加器與非門電路2 連線請?zhí)貏e注意VCC和GND的連接,不要接錯,以免芯片燒毀!所用芯片的Vcc連起來接+5V;所用芯片的GND連起來接地(GND)。電路的輸入接實驗平臺開關,電路的輸出接實驗平臺的發(fā)光管。實驗提供的74LS00芯片邏輯與引腳圖如下。每塊芯片中有四組 2 輸入端與非門(正邏輯),根據(jù)步驟1設計的電路圖,搭建半加器電路需要5個與非門( 可使用2塊74LS00芯片),搭建全加器電路需要9個與非門(可使用3塊74LS00芯片)。雙列直插封裝74LS00芯片邏輯圖和引腳圖3 驗證開關向上撥為“1”,向下?lián)転椤?”;發(fā)光管為“1”時點亮, 為“0”時熄滅。根據(jù)真值表,檢驗你所搭建的半加器和全加器電路,是否滿足設計要求。教你一招:實驗平臺上可能有個別開關、發(fā)光管故障,可以將導線一端接開關,一端接發(fā)光管,如果開關向上撥時,發(fā)光管點亮;開關向下?lián)軙r,發(fā)光管熄滅, 說明開關、發(fā)光管、導線都是好的。完成連線后的電路可能有誤,在沒有萬用表的情況下,此法也可幫你檢查電路故障。實驗報告要求1 填妥姓名、班級外,必須填寫完成報告的日期(年月日),以后的實驗報告要求里不再冗述。2 寫出使用TTL小規(guī)模集成電路芯片74LS00完成半加器的設計和實現(xiàn)的完整過程(根據(jù)功能要求列真值表-寫輸出函數(shù)-將輸出函數(shù)變換成“與非門”形式-畫出電路圖-根據(jù)芯片引腳連線-驗證結果)3 結合實驗中接觸和使用的小規(guī)模集成電路,請說說什么是集成電路?常用的中小規(guī)模集成電路產品有哪些? 4 實驗過程中你遇到了哪些問題?實驗剛開始時,你覺得計算機硬件課程的實驗最難理解的地方在哪里?5 實驗一和實驗二使用兩種不同的方式(小規(guī)模集成電路,可編程器件)實現(xiàn)全加器電路,就兩種方式談談你實驗的體會。實驗二 FPGA設計流程 全加器II實驗平臺EDA/SOPC實驗開發(fā)平臺,實驗二以后的所有實驗都使用此開發(fā)平臺。實驗要求根據(jù)實驗平臺提供的Altera公司可編程器件FPGA(現(xiàn)場可編程門陣列),使用Altera公司的EDA設計開發(fā)工具QuartusII,用原理圖方式設計實現(xiàn)全加器電路,電路的輸入接實驗平臺開關,電路輸出接實驗平臺的發(fā)光管。希望同學們能夠通過實驗掌握使用可編程器件設計實現(xiàn)數(shù)字電路的方法。實驗原理使用可編程器件進行數(shù)字電路設計,將傳統(tǒng)的“設計硬件搭試焊接”過程變?yōu)椤霸O計編譯下載”的過程,其主要工作都在計算機內完成,先將設計輸入計算機,再由開發(fā)系統(tǒng)將其轉換成編程文件下載到可編程器件中。全加器電路圖的設計同實驗一。實驗步驟1 新建工程實驗室機器安裝的設計環(huán)境為:Quartus II Version 9.0。雙擊桌面圖標,運行Quartus II軟件。用New Project Wizard工具選項創(chuàng)建此設計的工程,并設計相關信息。點擊菜單項File- new project wizard,出現(xiàn)introduction對話框,如圖 1。圖 1單擊next,進入Directory,name,Top-Level Entity設置對話框,選擇工程存放路徑(請在E盤或F盤新建一個工程相文件夾,實驗室的C盤、D盤及桌面被保護)、工程名稱和頂層模塊名稱(本例工程名和頂層模塊名均設為fadder。)注意:所有的名稱和路徑均不能包含空格和漢字。如圖 2。圖 2跳過圖 3所示Add Files對話框,該對話框設置用來將已存在的設計文件加入到工程中。圖 3點擊next,進入Family & devices settings對話框,指定FPGA器件為Cyclone系列的EP1C12F324C8,如圖 4。Cyclone系 列FPGA是Altera公司最初(2002年)的低成本FPGA。2004年和2006年,Altera公司又推出了更新的,密度更高的Cyclone II和Cyclone III系列FPGA,進一步鞏固它在大批量、低成本應用解決方案中的地位。圖 4圖 5圖 5對話框用來設置第三方EDA工具,包括綜合工具,仿真工具和時序分析工具,這里我們點擊Next跳過。圖 6信息顯示區(qū)編譯狀態(tài)區(qū)資源管理區(qū)工程工作區(qū)標題欄菜單欄工具欄圖 7最后,新建工程向導會根據(jù)你之前一步一步的設置,給出一個工程設置概述頁如圖 6,單擊finish完成工程創(chuàng)建。完成后,QuartusII界面如圖 7所示。所有在新建工程向導中進行的設置,在工程建立完成后,都可以通過QuartusII菜單項進行修改。2 設計輸入點擊菜單項File- new,出現(xiàn)新建源文件對話框如圖 8,數(shù)字電路的設計文件總的來說有兩種方式,原理圖方式和硬件描述語言方式,這次實驗我們使用原理圖方式設計電路,所以選擇新建一個“Block Diagram/Schematic File”文件,圖 8,點擊“OK”按鈕,打開原理圖編輯器。圖 8原理圖編輯器的工具欄如圖 10所示,工具欄上的按鈕作用依次分別是“分離窗口切換”、“選擇”,“添加文字”、“符號工具”、“塊工具”、“正交結點工具”、“正交總線工具”、“正交管道工具”、“橡皮筋工具”、“部分線選擇工具”、“放大縮小工具”、“全屏”、“查找工具”、“水平翻轉”、“垂直翻轉”、“逆時針90度翻轉”、“矩形工具”、“橢圓工具”、“直線工具”、“弧線工具”。圖 9QuartusII提供了許多基本庫元件給用戶使用,根據(jù)實驗一全加器的設計,共需要9個“2輸入與非門電路”模塊。在原理圖編輯區(qū)的空白處雙擊鼠標,或點擊符號工具打開Symbol對話框如圖 9。在Symbol對話框中,設計全加器電路需要的“與非門”可以通過選擇 “Primitives-logic”基本原件庫中的“nand2”模塊,點擊“OK”,將該模塊加入原理圖中。 重復該過程,或在原理圖編輯區(qū)選中已經添加好的nand2模塊,使用Ctrl+C和Ctrl+V繼續(xù)添加。全加器電路的輸出端口和輸入端口,在Symbol對話框中,使用 “Primitives-pin”庫中的“input”模塊和“output”模塊,添加到原理圖中。添加完成后,可以在原理圖中雙擊各個輸入輸出模塊,為它們改名,盡量讓端口名稱具有可讀性,本例可改為Ai、Bi、Ci-1、SHi、Si、Ci如圖 11。與非門、輸入端口、輸出端口之間的連接使用“正交結點工具”完成。完成后的原理圖如圖 11。圖 10圖 11設計輸入完成后,保存文件,將模塊名命名為頂層模塊名,即新建工程時指定的頂層模塊名,本例為:fadder.bdf。新建的文件默認情況下會自動加入到工程中。3 邏輯綜合為工程添加好設計文件以后,下一步就是對工程設計進行綜合,本例使用QuartusII軟件內嵌的分析綜合工具Analysis & Synthesis進行。點擊工具欄中按鈕,對設計進行綜合。Analysis & Synthesis將檢查工程的邏輯完整性和一致性。設計如果綜合通過,編譯狀態(tài)顯示區(qū)中Analysis & Synthesis步驟前面會顯示綠色的勾,如果設計有錯誤,會顯示紅色的叉,如圖 12,出錯行號及錯誤原因會顯示在信息顯示區(qū)中,如圖 13。圖 12圖 13根據(jù)錯誤原因提示修改設計,完成修改后,重新綜合,直到綜合通過,資源管理區(qū)中可以點擊頂層模塊名稱前的號,顯示模塊間的樹形結構,編譯狀態(tài)顯示區(qū)的Analysis & Synthesis步驟前顯示綠色的勾,如圖 14。圖 14初學者往往不習慣閱讀錯誤信息。實際上學會讀懂錯誤信息是很有用的!4 功能仿真在綜合通過以后,只能夠說明設計符合語法規(guī)范,但并不能保證設計滿足功能要求,需要通過功能仿真,來驗證電路功能是否符合設計要求,功能仿真的考察是的電路在理想環(huán)境下的行為,不考慮電路門延遲與線延遲。這里使用QuartusII自帶的波形圖仿真工具進行。1) 新建仿真波形圖文件要使用QuartusII自帶的波形圖仿真工具進行仿真,首先要新建一個波形圖文件。在File菜單中選擇New,出現(xiàn)如圖 8中所示對話框,在Verification/Debugging Files頁中選擇Vector Waveform File,點擊OK按鈕,出現(xiàn)一個空的波形圖文件,如圖 15。圖 152) 添加觀察信號結點用菜單Edit-Insert-Insert Node or Bus,打開如圖 16所示對話框??梢灾苯釉贜ame文本框中直接輸入信號名稱,也可以通過點擊按鈕Node Finder,打開結點查詢對話框來如圖 17,來添加需要觀察的信號。圖 16本例在Node Finder對話框的Filter選項下拉菜單中選擇Pins:all,然后點擊List按鈕,在Nodes Found列表中,選中Ai、Bi、Ci-1、SHi、Si、Ci信號,雙擊或使用按鈕,將它們添加到觀察信號中。最后點擊“OK”按鈕,完成觀察信號的添加。圖 173) 編輯輸入波形在Name欄中選中輸入信號的名稱,這組輸入信號所在的行將被高亮,如圖 18。通過菜單Edit-Value,或者直接使用工具欄按鈕對輸入信號的波形進行設定。圖 18如圖 19工具欄上的按鈕作用分別是“分離窗口切換”、“選擇”,“添加文字”、“編輯波形”、“放大縮小”、“全屏幕切換”、“查找”、“替換”、“設置為Unknown”、“置0”、“置1”、“設置為高阻”、“設置為Weak Unknown”、“設置為Weak Low”、“設置為Weak High”、“設置為Dont Care”、“設置為取反”、“設置計數(shù)值”、“設置時鐘”、“設置為任意值”、“設置隨機值”、“貼齊網(wǎng)格線”、“排序”。圖 19信號添加完成并且編輯好波形后,保存文件,本例為fadder.vwf。4) 在QuartusII中指定仿真文件用菜單Assignment-Setting在Simulator Settings中,設置Simulation mode為“Functional”,設置fadder.vwf為仿真輸入文件,仿真結束的條件可以根據(jù)需要在Simulation Period項中選擇,如圖 20選擇仿真運行80ns結束。點擊“OK”按鈕完成設置 。圖 205) 生成功能仿真網(wǎng)表用菜單ProcessingGenerate Functional Simulation Netlist。如果缺少這一步,在仿真運行時,QuartusII產生出錯提示:“Error: Run Generate Functional Simulation Netlist (quartus_map seven_seg -generate_functional_sim_netlist) to generate functional simulation netlist for top level entity seven_seg before running the Simulator (quartus_sim)”,無法完成仿真。6) 運行仿真通過工具欄按鈕啟動仿真。 7) 觀察分析仿真結果仿真完成后,根據(jù)生成的仿真波形圖,對比全加器真值表,分析結果是否正確。本例結果如圖 21。圖 215 布局布線1) 約束引腳FPGA電路板與實驗平臺上各個資源模塊(如本實驗的LED Switches & Buttons模塊)之間的連接是固定的,應該根據(jù)它們之間的連接關系對FPGA的引腳進行引腳約束。約束引腳是將頂層設計文件的輸入輸出端口指定到FPGA器件的實際引腳。引腳對應關系見附表。使用菜單項Assignment-Pins進入引腳分配編輯窗口,完成后的分配圖 22。圖 22不要忘記引腳約束! 在以后的設計中,如果忘記了導入引腳約束文件,編譯也不會報錯,此時由軟件自動分配未約束的引腳,但是和實際連接關系就不一致了。后果是不能通過在實驗儀上的驗證。2) 布局布線、生成編程文件引腳約束完成后,在QuartusII界面的工具欄中,點擊按鈕,對設計進行全編譯。此外,也可以使用菜單項Processing-Compiler Tool打開編譯工具對話框,如圖 23,點擊Fitter區(qū)域中的按鈕和Assembler區(qū)域中的按鈕來執(zhí)行布局布線和生成編程文件,也可以直接點擊Start按鈕來完成全編譯過程。圖 23如果設計文件或引腳約束有改動,一定要重新進行全編譯。6 時序仿真(附加題,有興趣的同學選擇完成)功能仿真不考慮傳輸延遲,主要目的是檢查邏輯功能有沒有錯誤,是否符合設計要求。時序仿真包含了延時信息,它能較好地反映芯片的工作情況。用菜單Assignment-Setting在Simulator Settings中,更改設置Simulation mode為“Timming”,設置完成后重新運行仿真,觀察結果,本例如圖 24。圖 24與功能仿真時得到的波形圖不同,在時序仿真得到的波形圖沒有那么完美,因為信號經過任何門電路和導線都存在一個時間延遲問題,,使得電路的輸入到達穩(wěn)定狀態(tài)時,輸出并不一定能立即達到穩(wěn)定狀態(tài)。觀察電路延遲的情況。7 配置器件(或稱編程、下載)對可編程器件FPGA進行配置(編程),俗稱下載,下載前打開實驗平臺電源。點擊工具欄按鈕,或使用菜單項Tool-Programmer進入器件編程話框,如圖 25。單擊按鈕,可以選擇編程電纜硬件設置,如圖 26,因為實驗設備使用的是USB-Blaster下載電纜,所以本例中使用USB-Blaster作為硬件接口。設置完編程硬件后,在編程界面,在Mode中選擇編程模式,本例使用JTAG模式。勾選Program/Configure選項框,單擊按鈕開始器件編程。在Process進度條中會顯示編程進度。完成后,在QuartusII的信息顯示區(qū)中,會報告成功或出錯信息;注意:信息顯示在QuartusII的信息顯示區(qū)中,不在編程窗口中。編程界面左側的其它按鈕分別表示停止編程;自動檢測編程硬件是否連接;刪除編程文件;更改選中的編程文件;保存文件;添加用戶自定義的器件;更改編程文件的順序。圖 25圖 268 測試驗證器件被成功配置后,就可以進行驗證了。撥動連接全加器輸入端口Ai,Bi,Ci的開關,觀察連接全加器輸出端口Si,Ci的發(fā)光管顯示是否正確。實驗三 七人表決器實驗要求使用EDA設計開發(fā)工具QuartusII,以原理圖方式設計實現(xiàn)七人表決器電路,當表決器的七個輸入中有4個以上(含4個)為“1”時,u表決器輸出為“1”,否則為“0”。用七個開關作為表決器的七個輸入,輸入為邏輯“1”時表示表決者“贊成”,輸入為“0”代表“不贊成”。用二個發(fā)光管作為表決器的輸出,發(fā)光管點亮( 邏輯1)表示表決“通過”,發(fā)光管熄滅表示表決“不通過”。實驗原理七人表決器的方案很多,這里給出一個使用多個一位全加器實現(xiàn)的電路參考,見“設計輸入”,其中的一位全加器我們利用實驗二的設計。實驗步驟1 實驗準備打開QuartusII環(huán)境,使用File-Open Project打開上一次的全加器實驗工程,雙擊頂層模塊打fadder開原理圖文件,然后使用File-Create/_Update-Create Symbol Files For Current File,將頂 層原理圖方式設計的全加器模塊轉換為符號文件fadder.bsf。在E盤或F盤新建一個文件夾(所有的名稱和路徑均不能包含空格和漢字),將實驗二全加器工程中的全加器原理圖文件fadder.bdf,以及剛才生成的全加器符號文件fadder.bsf,一起拷入新建的文件夾中。2 新建工程參考實驗二指導,在上一步新建的文件夾內創(chuàng)建QuartusII工程,工程名和頂層模塊名均設為seven。3 設計輸入點擊菜單項File- new,新建原理圖Block Diagram/Schematic文件,在空白編輯區(qū)內雙擊鼠標左鍵,或使用符號工具,打開symbol對話框。在Libraries中,除了QuartusIIa提供的庫元件外,由于在“實驗準備”步驟中,往工程文件夾內中拷入了fadder.bsf符號文件, 所以在Project樹下,可以看見當前工程路徑下自己定義的元件fadder.bsf。點擊“OK”按鈕,將fadder模塊加入原理圖中。 重復該過程,共添加4個一位全加器模塊。在Symbol對話框中,使用 “Primitives-pin”庫中的“input”模塊和“output”模塊,為設計添加輸入端口和輸出端口。使用“Primitives-logic”庫中的“not”模塊,,輸出端口pass取反后送給 輸出端口deny。模塊之間的連接使用“正交結點工具”完成。完成后的原理圖如下,保存文件(本例為seven.bdf)。4 邏輯綜合參考實驗二指導。5 布局布線使用菜單項Assignment-Pins進行引腳分配,完成后引腳分配如下圖。引腳約束完成后,在QuartusII界面的工具欄中,點擊按鈕,對設計進行全編譯。6 編程參考實驗二指導。7 驗證撥動開關,觀察發(fā)光管,驗證在所有輸入條件下的輸出結果是否正確。實驗報告要求1 完善設計:在表決通過時,用實驗平臺上的揚聲器報鳴提示;在原基礎上使用數(shù)碼管顯示贊成票數(shù),寫出設計方法。(提示:票數(shù)就是幾個一位全加器計算出來的最后的結果;想在數(shù)碼管上顯示,需要設計譯碼器電路。)2 使用VHDL 語言設計七人表決器電路。附:數(shù)碼管段碼表發(fā)光二極管組成的顯示器是嵌入式應用產品中最常用的廉價輸出設備。它由若干個發(fā)光二極管按一定的規(guī)律排列而成。當某一個發(fā)光二極管導通時,相應的一個或一筆畫被點亮,控制不同組合的二極管導通,就能顯示數(shù)字和少量字符。常用的七段顯示器如下圖。一位顯示器由八個發(fā)光二極管組成,其中七個發(fā)光二極管ag控制七個筆畫(段)的亮或暗,另一個控制一個小數(shù)點的亮和暗。實驗平臺上的七段數(shù)碼管是共陰極的(發(fā)光二極管陽極連在一起稱為共陽極顯示器,陰極連在一起稱為共陰極顯示器),也就是輸出為高電平的時候,二極管會導通。例如顯示一個“0”,就是abcdef導通,gh截止。根據(jù)表可知,段碼為3FH。實驗平臺上有八個數(shù)碼管,它們的abcdefgh都連接在一起,由用戶控制,8個數(shù)碼管的位選信號由一片74LS138譯碼器提供, 譯碼器的輸入端(SEL0,SEL1,SEL2)由用戶控制,例如SEL0,SEL1,SEL2若為為000, 就選中最右邊的數(shù)碼管,而其余數(shù)碼管關閉。表 七段數(shù)碼管段碼表顯示16進制hgfedcba03F001111111060000011025B0101101134F010011114660110011056D0110110167D011111017070000011187F0111111196F01101111A7701110111B7C01111100C3900111001D5E01011110E7901111001F7101110001數(shù)碼管譯碼顯示設計參考實驗平臺上的數(shù)碼管顯示模塊的電路原理,以及數(shù)碼管的輸入與與FPGA的管腳連接關系如下面的圖、表所示:信號名稱對應FPGA管腳名說明7SEG-AH3七段碼管A段輸入信號7SEG-BH4七段碼管B段輸入信號7SEG-CK5七段碼管C段輸入信號7SEG-DL5七段碼管D段輸入信號7SEG-EK4七段碼管E段輸入信號7SEG-FL3七段碼管F段輸入信號7SEG-GL4七段碼管G段輸入信號7SEG-DPM3七段碼管dp段輸入信號7SEG-SEL0G4七段碼管位選輸入信號7SEG-SEL1G3七段碼管位選輸入信號7SEG-SEL2F4七段碼管位選輸入信號如果只需要在數(shù)碼管上顯示16進制數(shù)據(jù)0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F,可以參考下面的代碼設計一個4-7譯碼器。同學們知道1個16進制數(shù)據(jù)可以由四個二進制位表示,設計用四位的向量輸入端口switch來表示四個二進制位;用7位的向量輸出端口ledaq來表示數(shù)碼管的七段(dp小數(shù)點段未考慮),根據(jù)七段數(shù)碼管段碼表,進行譯碼器描述。向量輸出端口sel用來選擇點亮8個數(shù)碼管中的哪一個,本例中sel2:0設置為為“000”, 點亮最右邊的數(shù)碼管,而其余數(shù)碼管關閉,同學們也可根據(jù)自己的需要選擇點亮其它數(shù)碼管。library ieee;use ieee.std_logic_1164.all;entity Decode4_7 is port( switch: in std_logic_vector(3 downto 0) ; -四位輸入信號 ledag: out std_logic_vector(6 downto 0);-8個數(shù)碼管的7段輸出 sel: out std_logic_vector(2 downto 0) - 8個數(shù)碼管的位選輸出 ); end Decode4_7;architecture behave of Decode4_7 is begin sel ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag ledag null; end case; end process; end behave;思考:1. 如果要求除了0F之外,還要能夠顯示H,如何修改設計?2. 如果希望8個數(shù)碼管同時點亮,你覺得可以怎么做? 實驗四 四位全加器實驗要求使用EDA設計開發(fā)工具QuartusII,以VHD語言方式設計實現(xiàn)組合邏輯電路四位全加器。實驗原理四位全加器可由一位全加器以串行方式連接而成,更為高效的方式是直接用VHDL語言實現(xiàn)。實驗步驟1 新建工程參考實驗二指導,,工程名和頂層模塊名均設為fadder_4。2 設計輸入點擊菜單項File- new,這次實驗我們使用VHDL描述語言方式設計電路,所以選擇新建一個“VHDL File”文件,點擊“OK”按鈕,打開代碼編輯器,將下面的代碼輸入空白編輯區(qū),輸入完成后,保存文件,文件名與實體名相同(本例為:fadder_4.vhd)。library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity fadder_4 isgeneric(DATA_WIDTH : natural := 4);port (a : in unsigned (DATA_WIDTH-1) downto 0);b : in unsigned(DATA_WIDTH-1) downto 0);result : out unsigned (DATA_WIDTH downto 0) );end entity;architecture behave of fadder_4 isbeginresult Pins進行引腳分配,完成后引腳分配如下圖。引腳約束完成后,在QuartusII界面的工具欄中,點擊按鈕,對設計進行全編譯。5 編程6 驗證根據(jù)四位全加器真值表,撥動開關,觀察發(fā)光管,驗證在所有輸入條件下的輸出結果是否正確。附:VHDL知識點1 庫的引用庫一般是一些常用的VHDL代碼的 集合,包括:數(shù)據(jù)類型的定義、函數(shù)的定義、子程序的定義、元件引用聲明、常量的定義等一些可復用或是共享的VHDL代碼。程序引用了庫就可以使用該庫中的VHDL代碼。library庫名 ;use庫名 . 庫中程序包 . 程序包中的項 ;2 實體的聲明實體的聲明用于實體與其它實體或是外部接口相關聯(lián)的說明。實體名應該與文件名一致。entity 實體名 isgeneric(參數(shù)名:數(shù)據(jù)類型 := 值) ;port(端口名 : 端口模式 數(shù)據(jù)類型) ;end 實體名 ;3 結構體的描述VHDL程序的所有邏輯功能都在結構體中實現(xiàn)。architecture 結構體名 of 實體名 is結構體說明語句;begin 結構體描述語句;end 結構體名;實驗報告要求1 畫出使用一位全加器以串行方式連接成四位全加器的原理圖。2 在四位全加器電路的基礎上,修改設計,使用VHDL 語言,設計BCD碼加法器,說明設計方案并寫出設計代碼。實驗五 序列檢測器實驗要求使用EDA設計開發(fā)工具QuartusII,以狀態(tài)圖方式設計實現(xiàn)時序邏輯電路“111”序列檢測器。實驗原理有限狀態(tài)機(Finite State Machine)是一種時序邏輯,它源于人們將一個復雜的問題分割成多個簡單的部分來處理的思想。狀態(tài)機通過時鐘驅動下的多個狀態(tài),以及狀態(tài)之間的跳轉規(guī)則來實現(xiàn)復雜的邏輯,一旦當前的狀態(tài)確定,也就明確的相關的輸入輸出。實驗步驟1 新建工程參考實驗二指導,工程名和頂層模塊名均設為sequencer。2 設計輸入點擊菜單項File- new,這次實驗我們使用狀態(tài)圖方式設計電路,所以選擇新建一個“State Machine File”文件,點擊“OK”按鈕,打開狀態(tài)圖編輯器,使用工具欄完成狀態(tài)l圖的編輯。下圖工具欄上的按鈕作用分別是“分離窗口切換”、“全屏幕切換”、“選擇”、“放大縮小”、 “查找”、“狀態(tài)工具”、“條件轉換工具”、“狀態(tài)表工具”、“狀態(tài)機生成向導”、“插入輸入端口”、“插入輸出端口”、“條件轉換等式顯示”、“生成HDL文件工具”、“橡皮筋工具”。完成后的序列檢測狀態(tài)圖如下,保存文件,本例為sequencer.smf。狀態(tài)圖完成后,使用“生成HDL文件工具”將狀態(tài)圖轉換成HDL代碼,在彈出的對話框中可以選擇生成Verilog HDL、VHDL或System Verilog,本例選擇生成VHDL代碼,一個sequencer.vhd文件會自動生成并保存在你的工程文件夾里。3 邏輯綜合參考實驗二指導。4 功能仿真參考實驗二指導,創(chuàng)建仿真波形文件,根據(jù)生成的仿真波形圖,分析結果是否正確。5 布局布線用一個開關K1(引腳號:A12)作為序列檢測器的switch輸入, 用一個發(fā)光管D1(引腳號:A0)作為序列檢測器的輸出lamp,時鐘信號可以使用開發(fā)平臺的可調數(shù)字時鐘模塊CLK(引腳號:J4),但是因為實驗平臺上沒有單拍時鐘,所以本例把時鐘信號到開關K2(引腳號:B12),通過撥動開關K2從0-1-0的變化,來模擬時鐘。詳細引腳對應關系見附錄。使用菜單項Assignment-Pins進行引腳分配,完成后點擊按鈕,對設計進行全編譯。6 編程參考實驗二指導。7 驗證實驗報告要求1 有限狀態(tài)機分為Moore狀態(tài)機和Mealy狀態(tài)機,簡述兩者的特點,分析本例的序列檢測器狀態(tài)機應該屬于哪一種?2 設計一個1010序列檢測器,畫出狀態(tài)圖。實驗六 計數(shù)器和分頻器實驗要求層次化設計方法,使用VHDL方式設計實現(xiàn)10進制加法計數(shù)器。要求計數(shù)器以1秒鐘的頻率計數(shù),具有同步計數(shù),異步清零,同步預置數(shù)功能,要求計數(shù)值同時在八個數(shù)碼管上顯示。主時鐘選擇1KHz的頻率,同時作為數(shù)碼管動態(tài)掃描時鐘,1KHz主時鐘分頻后作為10進制加法器的計數(shù)時鐘。實驗原理計數(shù)器是最常見的時序邏輯電路,從微處理器的地址發(fā)生器到頻率計都需要用到計數(shù)器。分頻器與計數(shù)器非常類似,時序電路設計中需要各種各樣的分頻器來獲得不同頻率的時鐘,其中以整數(shù)分頻器最為常見,整數(shù)分頻可以簡單地使用模n計數(shù)器實現(xiàn),即隨驅動時鐘跳動n次后就輸出一個進位脈沖,然后立即被清零或置位,再開始新一輪循環(huán)的計數(shù)器。實驗步驟1 新建工程參考實驗二指導,工程名和頂層模塊名均設為counter_TOP。2 設計輸入1) 計數(shù)器點擊菜單項File- new,新建一個“VHDL File”文件,點擊“OK”按鈕,打開代碼編輯器,將下面的代碼輸入空白編輯區(qū),輸入完成后,保存文件,文件名與實體名相同(本例為:counter.vhd)。計數(shù)器模塊采用參數(shù)化設計,從MIN_COUNT開始加1計數(shù),計到MAX_COUNT后,重新回到MIN_COUNT開始計數(shù)。使用參數(shù)化設計的最大特點在于它可以被方便地修改,所以常用來建模一些需要調整的數(shù)據(jù),以便在實例化模塊時根據(jù)需要進行配置。library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity counter isgeneric(MIN_COUNT : natural := 0;MAX_COUNT : natural := 9);port(clk : in std_logic;reset : in std_logic;load : in std_logic;enable : in std_logic;d : in integer range MIN_COUNT to MAX_COUNT;q : out integer range MIN_COUNT to MAX_COUNT);end entity;architecture behave of counter isbeginprocess (clk,reset)variable cnt : integer range MIN_COUNT to MAX_COUNT;beginif reset = 1 thencnt := 0; elsif (rising_edge(clk) then if load =1 then cnt:= d;elsif cnt=MAX_COUNT then cnt:= MIN_COUNT;elsif enable = 1 thencnt := cnt + 1;end if;end if;q MegaWizard Plug-In Manager,在彈出的對話框中選擇Create a new custom定制一個新的模塊(如果要修改一個已經編輯好的LPM模塊,則選擇Edit an exiting custom項),點擊“Next”按鈕,在后續(xù)對話框中的左欄選擇Arithmetic項下的LPM_COUNTER,在右邊選擇Cyclone器件和VHDL語言方式,最后輸入定制的LPM_COUNTER存放的路徑和文件名,本例文件名為divider.vhd,路徑選擇自己創(chuàng)建工程的路徑。 點擊“Next”,選擇計數(shù)器的位寬為10bit,加1計數(shù)。點擊“Next”,設置為模1000計數(shù),選擇輸出Carry-out信號,則計數(shù)器會從0計數(shù)到999,再回零計數(shù),當計數(shù)到999時,會產生一個時鐘的Carry-out信號。后面我們就用這個Carry-out信號來做10進制計數(shù)器的計數(shù)時鐘。依圖完成每個對話框的設置,最后點擊“Finish”,完成LPM_COUNTER定制,硬件描述語言文件divider.vhd會自動保存在你設置的路徑中。 3) 數(shù)碼管譯碼電路及動態(tài)掃描在“數(shù)碼管譯碼顯示設計參考”中,我們介紹了使用譯碼電路,控制實驗平臺中8個數(shù)碼管的段碼a-b-c-d-e-f-g,從而在數(shù)碼管上顯示16進制數(shù)據(jù)0F,由設計中8個數(shù)碼管的位選擇信號SEL0、SEL1、SEL2來決定到底哪個數(shù)碼管顯示,例如SEL0、SEL1、SEL2為“000”時,最右邊的數(shù)碼管顯示當前段碼,即在一個時刻,只能有一個數(shù)碼管被點亮。如果希望8個數(shù)碼管上分別顯示希望的數(shù)據(jù),就必須使得選通信號以較高的頻率依次選通,同時在段碼輸入口加上希望在對應數(shù)據(jù)管上顯示的數(shù)據(jù),于是隨著選通信號的掃變,就能實現(xiàn)掃描顯示的目的。點擊菜單項File- new,創(chuàng)建一個實現(xiàn)數(shù)碼管動態(tài)掃描的VHDL文件,點擊“OK”按鈕,打開代碼編輯器,將下面的代碼輸入空白編輯區(qū),輸入完成后,保存文件,文件名與實體名相同(本例為:Dynamic_Scan.vhd)。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Dynamic_Scan is port(clk : in std_logic; -定義動態(tài)掃描時鐘信號 switch: in std_logic_vector(3 downto 0); -四位輸入信號 ledag: out std_logic_vector(6 downto 0); -8個數(shù)碼管的7段輸出 sel: out std_logic_vector(2 downto 0) -8個數(shù)碼管的位選輸出 ); end Dynamic_Scan;architecture behave of Dynamic_Scan is begin-三位計數(shù)器實現(xiàn)000111計數(shù),計數(shù)器的輸出作為數(shù)碼管的SEL選通信號。 process(clk) variable count : std_logic_vector(2 downto 0); begin if clkevent and clk=1 then-檢測時鐘上升沿 count:=count+1;-計數(shù)器count累加 end if; sel new,創(chuàng)建一個頂層模塊VHDL文件,保存,文件名與實體名相同(本例為counter_TOP.vhd)。這個設計包含計數(shù)器、分頻器、數(shù)碼管動態(tài)掃描等多個模塊,頂層模塊的作用是把各個模塊連起來,形成最后完整的數(shù)字電路,作用與同學們畫原理圖時從庫里添加元件,以及在元件與元件之間連線類似。library ieee;use ieee.std_logic_1164.all; -該程序包中定義了轉換函數(shù)conv_std_loigc_vector(A,位長)use ieee.std_logic_ARITH.all; entity counter_TOP isgeneric(MIN_COUNT : natural := 0;MAX_COUNT : natural := 9;DATAWIDTH : natural := 4);port(clk : in std_logic;reset : in std_logic;load : in std_logic;enable : in std_logic;d : in integer range MIN_COUNT to MAX_COUNT;q : buffer integer range MIN_COUNT to MAX_COUNT;ledag: out std_logic_vector(6 downto 0); sel: out std_logic_vector(2 downto 0) );end entity;architecture behave of counter_

溫馨提示

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

評論

0/150

提交評論