




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目一軟件的安裝和使用任務(wù)一軟件的安裝一、QuartusII安裝說明:光盤路徑:quartusii\quartus\disk1中用鼠標左鍵雙擊setup.exe文件。啟動界面如圖1.1所示:圖1.1QuartusII安裝界面點擊Next后,彈出說明對話框,如圖1.2所示:圖1.2說明對話框繼續(xù)點擊Next按鈕后,彈出如圖1.3所示的對話框,在上面空白處輸入用戶名,下面的輸入公司的名字,這個可以任意填寫。寫好后Next按鈕編程可選狀態(tài)。(我的安裝軟件用戶名默認為微軟用戶,公司的名字默認為微軟中國)圖1.3用戶信息輸入對話框按下Next按鈕后,進入安裝路徑選擇界面,如圖1.4所示。(建議安裝在默認的路徑)圖1.4安裝路徑選擇對話框選擇好安裝路徑之后,點擊Next按鈕之后會看見相關(guān)的安裝信息,一直點擊Next按鈕知道進入安裝過程。安裝之后會彈出一個結(jié)束對話框,點擊finish按鈕,完成安裝。二、QuartusII軟件的授權(quán)授權(quán)過程是將光盤路徑:quartusii7\Altera-Quartus_V7_Win_Crack中的license.dat文件復制到安裝目錄下。還有在這個路徑下的sys_cpt.dll文件復制到安裝目錄下的bin的文件夾里。在開始菜單欄,選擇運行,輸入cmd,按回車彈出如下圖的對話框所示輸入ipconfig/all,彈出如下圖的對話框所示用紅色圈起來的是你自己電腦的網(wǎng)卡號。以記事本方式打開license,替換你的網(wǎng)卡號進去。打開QuartusII,導入license.dat菜單下tools/license.setup。任務(wù)二USB-Blaster快速安裝向?qū)?.通過USB電纜,將USB-Blaster與電腦相連。在設(shè)備管理器中找到USB-Blaster后,單擊右鍵選擇革新驅(qū)動軟件。2.進入界面后,選擇瀏覽計算機以查找驅(qū)動程序軟件(R)。3.進入瀏覽計算機以查找驅(qū)動程序軟件界面后,在文本輸入方框旁的單擊瀏覽進入選擇更新驅(qū)動軟件的界面。4.在該界面中選擇你軟件的安裝目錄下,比如這是在D盤的,D盤—altera—quartus—drivers—usb-blaster—x32(電腦系統(tǒng)是32位的Win7)—點擊確定。5.回到這個界面后,點擊下一步。6.系統(tǒng)會識別出該驅(qū)動,跳出該界面,詢問是否訪問,選擇始終安裝此驅(qū)動程序軟件。7.安裝成功。8.在usb-blaster連著電腦的情況下,打開quartusII,從菜單打開Tool>Programmer,從HardwareSetup設(shè)置使用usb-blaster編程器。在單擊Close就可以使用了。任務(wù)三軟件的使用主界面由3個子窗口組成,分別是設(shè)計輸入編輯窗口(完成設(shè)計描述源文件的編輯)、消息窗口(編譯/仿真過程的消息說明)和工程瀏覽窗口(快速瀏覽工程的各描述文件)。圖1.5QuartusII的系統(tǒng)主界面設(shè)計輸入QuartusII支持多種設(shè)計輸入方法,即允許用戶使用多種方法描述設(shè)計,常用的設(shè)計輸入方式有:原理圖輸入,文本輸入和第三方EDA工具輸入。創(chuàng)建新工程QuartusII有工程的概念,所謂工程就是當前設(shè)計的描述、設(shè)置、數(shù)據(jù)以及輸出的集合,QuartusII會將這些存儲在不同類型的文件中并置于同一個文件夾下。所以在設(shè)計之前,必須創(chuàng)建工程,具體步驟如下:打開QuartusII軟件,在主界面中執(zhí)行File→NewProjectWizard…命令,在彈出的對話框中指定設(shè)計工程的文件存放目錄、工程名以及最頂層的設(shè)計實體名。最上面的輸入框:在此輸入框輸入指定工程文件存放的目錄。中間的輸入框:在此對話框中輸入新建工程的名字。最下面的輸入框:在此輸入框中輸入該設(shè)計工程最頂層的設(shè)計實體名。說明:一般輸入工程名和設(shè)計頂層的實體名默認是相同。單擊【Next】按鈕,彈出如圖1.7所示的對話框。許多設(shè)計工程除了最頂層的設(shè)計文件之外,還會包含一些額外的電路模塊描述文件或者定制的功能庫。設(shè)計者可以通過如圖1.7所示的對話框?qū)⑦@些文件或者功能庫添加到設(shè)計工程中。為了方便工程設(shè)計文件公里,建議將所有的設(shè)計文件集中到工程目錄中。單擊【Next】按鈕,彈出如圖1.8所示的對話框。系統(tǒng)會要求設(shè)計者指定工程所使用的芯片系列,可以選擇自動選擇芯片型號或者設(shè)計者指定.建議選擇“Specificdeviceselectedin‘Availabledevices’list’”選項,這樣可以手動設(shè)置芯片參數(shù),這個一般是硬件設(shè)計好之后,若對參數(shù)不熟悉一定要先參考QuartusII的幫助文件,弄清封裝,管腳類型和芯片速度這3個設(shè)置項中的每個參數(shù)的具體含義。如果選項自動選擇芯片,對于絕大多數(shù)的應用只采用的默認設(shè)置即可,系統(tǒng)會根據(jù)實際的情況自動進行優(yōu)化。點擊【Next】按鈕進入EDA工具設(shè)置頁面,如圖1.9所示,用以第三方的綜合器、仿真器和時序分析工具。默認值為不使用第三方EDA工具,在本工程保持默認不變,直接點擊【Next】按鈕繼續(xù)創(chuàng)建新工程向?qū)У淖詈笠徊?,QuartusII會給出新建工程的摘要信息,點擊【Finish】按鈕即可完成向?qū)?。在完成新建工程后,所有工程設(shè)置可以通過Assignments→Settings…菜單命令或者Ctrl+Shift+E快捷啟動設(shè)置對話框進行修改。圖1.6設(shè)置工程名稱及頂層實體名稱圖1.7添加設(shè)計文件圖1.8選擇目標芯片圖1.9設(shè)置第三方EDA工具圖1.10新建工程摘要文本輸入法執(zhí)行菜單File→New…菜單命令打開新建對話框,如圖1.11所示.選中DeviceDesignFiles選項卡中的VHDLFile后點擊【OK】按鈕新建一個空白的VHDL文檔。QuartusII會自動將起命名為Vhdl1.vhd,這時執(zhí)行File→Save命令或者使用Ctrl+S快捷鍵將其保存,保存對話框如圖1.12所示QuartusII會自動保存位置定位到工程目錄并且默認命名為<頂層實體名>.vh。這里只有一個實體,故counter就是頂層。保持默認值不變,直接點擊【保存】按鈕保存文件。新建的VHDL文檔中輸入,分頻器的VHDL菜單如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityshansuoisport(clk:instd_logic;clk_out:outstd_logic;r:outstd_logic_vector(3downto0));endshansuo;architecturebehieveofshansuoissignalclk_1k:std_logic;beginr<="0111";process(clk)variablecnt1:integerrange0to2000;variablecnt2:integerrange0to1250;beginifclk'eventandclk='1'thenifcnt1=2000thencnt1:=0;ifcnt2=1250thencnt2:=0;clk_1k<=notclk_1k;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;clk_out<=clk_1k;endbehieve;如果對VHDL語言語法結(jié)構(gòu)不太了解的時候,可以通過QusrtusII提供的自動完成格式工具的插入模版。用戶可以在QuartusII界面的TextEditor工具欄中找到對應的按鈕,如圖1.13所示。完成VHDL語言輸入之后,執(zhí)行Process→AnalysisCurrentFile菜單命令,啟動QuartusII的語法檢查功能,對當前文件進行分析。如果在Message窗口中出現(xiàn)Error,在修改之后再次執(zhí)行分析,直到?jīng)]有錯誤提示為止。分配引腳 分配引腳的目的是為了設(shè)計指定輸入輸出引腳在目標芯片上的位置。分配引腳的方法有許多種,這里介紹的AssignmentEditor工具是一種比較常用的引腳分配方法。 有些書籍和資料將分配引腳放在了編譯之后進行,主要考慮到引腳需要占用片內(nèi)的IO資源,引腳分配的不同會影響QuartusII的布局布線結(jié)果,也就會影響到設(shè)計的時序仿真。而且QuartusII支持預先的I/O分配和確定操作(無論頂層的模塊是否完成),這樣可以在整個設(shè)計流程中盡早開始印制電路板(PCB)的布線設(shè)計工作。同樣,設(shè)計人員可以在任何時間對引腳的分配進行修改和確認,無需再進行一次編譯。 在進行完設(shè)計分析以及語法檢查后,可以執(zhí)行Assignment→AssignmentEditor,點擊窗口上面的Pin按鈕進行引腳分配,左側(cè)的工具欄中的ShowAllKnownPinName按鈕可以列出所有已知的引腳名稱,所得界面如圖1.14所示。圖1.14AssignmentEditor對話框編譯 在標準PLD設(shè)計流程中,編譯(Compilation)包括綜合(Synthesis)和布局布線(Place&Route)兩個階段。在綜合階段,綜合器將HDL描述翻譯成基本的邏輯門、存儲器、觸發(fā)器等基本邏輯單元的連接關(guān)系。在這個過程中,綜合器會根據(jù)用戶的約束與本身的算法優(yōu)化生成的網(wǎng)表,目的是讓生成的設(shè)計擁有更快的速度并占用最好的資源。完成綜合后需要根據(jù)目標器件進行布局布線,利用芯片內(nèi)的可用邏輯資源最終將涉及在物理層次上實現(xiàn)。 在QuartusII界面執(zhí)行菜單Processing→StartCompilation或者使用Ctrl+L快捷鍵啟動QuartusII的全編譯??梢栽跔顟B(tài)窗口上看到當前編譯的運行狀態(tài),QuartusII將編譯劃分為Analysis&Synthesis、Fitter、Assembler和TimingAnalyzer4個階段。其中Analysis&Synthesis就是綜合,F(xiàn)itter為布線布局;后面得Assembler用于生成編譯輸出文件,而TimingAnalyzer是時序分析流程。 在編譯過程中QuartusII會在消息框中顯示編譯的警告、錯誤和消息,并在編譯結(jié)束后給出完成報告。遇到編譯錯誤,QuartusII會立即終止編譯流程,并給出錯誤信息,雙擊錯誤名稱,QuartusII會自動在HDL代碼等設(shè)計源描述中定位出錯位置。 在完成編譯之后,通過執(zhí)行Tools→NetlistViewers→RTLViewer菜單命令可以觀察到設(shè)計的RTL視圖如圖1.15所示。在QuartusII中,執(zhí)行AnalysisandElaboration流程后即可以觀察RTL電路圖,所以RTL電路圖是在綜合及布局布線前生成的,并非設(shè)計的最終電路結(jié)構(gòu)。RTL視圖是設(shè)計的寄存器傳輸級展現(xiàn),作為設(shè)計輸入最忠實的體現(xiàn),RTL視圖的主要作用是幫助設(shè)計者檢查設(shè)計輸入中的問題。圖1.15RLT視圖仿真 對工程的編譯通過后,必須對其功能進行仿真和時序性質(zhì)進行仿真測試,以了解設(shè)計結(jié)果是否滿足愿設(shè)計要求。再把設(shè)計配置到器件之前,可以通過仿真對設(shè)計進行全面的測試,保證設(shè)計在各種條件下都能有正確的響應。本例是編譯后進行仿真,具體步驟如下:新建波形文件 在QuartusII界面中執(zhí)行File→New菜單命令,在彈出新建對話框中選擇OtherFiles選項卡,選擇VectorWaveformFile項目,如圖1.16所示。 點擊【OK】可以看到QuartusII創(chuàng)建的名為Waveform1.vwf的仿真波形文件,使用File→SaveAs…命令將其另存為div,如圖1.17所示。圖1.16新建仿真波形文件圖1.17另存仿真波形文件添加仿真信號在進行仿真之前必須添加仿真信號,即仿真中的激勵及所要觀察的信號。在QuartusII中添加仿真信號有多種辦法,這里可以通過執(zhí)行Edit→InsertNodeorBus菜單命令打開InsertNodeorBus對話框,如圖1.18所示。圖1.18添加仿真信號 在Name欄中填入設(shè)計中需要觀察端口型號,QuartusII會自動給出輸入輸出類型與其他參數(shù),如果要一次加入很多觀察腳可以通過NodeFinder…按鈕實現(xiàn),選擇點擊【OK】即可將其添加到波形文件中。設(shè)置仿真激勵 根據(jù)VHDL描述,本例是一個1000分頻的程序,仿真需要賦予激勵信號,首先需要設(shè)置仿真時間(Endtime)和最小變化時間(GirdSize),在編輯菜單下可以找到相應的命令,會彈出如圖1.19和圖1.20的對話框。圖1.19Endtime設(shè)置對話框圖1.20GirdSize設(shè)置對話框通過仿真工具欄可以設(shè)置激勵信號的值,仿真工具欄就是左邊的一條狀態(tài)欄。最終設(shè)置完成的激勵。啟動仿真執(zhí)行QuartusII菜單中的Processing→StartSimulation命令或者Ctrl+I快捷鍵即可啟動仿真。QuartusII會在狀態(tài)窗口限制仿真運行狀態(tài),并在消息窗口給出的仿真過程中的警告、錯誤和信息。完成仿真后彈出對話框。完成仿真后QuartusII會自動彈出仿真報告,如果沒有自動彈出頁可以執(zhí)行Processing→SimulationReport手動打開。這個報告中的波形窗口與剛才輸入仿真激勵的波形文件窗口時不同的,本例的仿真報告。需要注意的是,QuartusII并不允許直接在仿真報告的波形圖中修改仿真激勵。配置器件 在完成設(shè)計輸入以及成功的編譯、仿真設(shè)計之后,配置器件是QuartusII設(shè)計流程的最后一步,目的是將設(shè)計配置到目標器件中進行硬件驗證。在編譯中的Assembler階段QuartusII會針對目標器件生成配置文件:ROM對象文件(.pof)和編程器對象文件(.pdf)。由QuartusII提供Programmer工具使用這些文件對器件進行配置,執(zhí)行Tools→Programmer菜單命令可以驅(qū)動Programmer工具,界面如圖1.21所示。圖1.21配置工具設(shè)置配置電纜 配置電纜用于連接運行QuartusII的PC與目標器件,將配置指令與數(shù)據(jù)傳送到FPGA/CPLD。Altera提供的配置電纜主要有以下幾種:ByteBlaster:Altera較早的配置電纜類型,使用并行口對器件進行配置。ByteBlasterMV:提供混合電壓支持,其余與ByteBlaster相同。ByteBlasterII:Altera新型的配置電纜,對SinalTapII等反饋手段提供了支持,同樣是使用并口對器件進行配置。MasterBlaster:使用RS232串行口的配置電纜。USB-Blaster:使用USB接口的配置電纜。EthermetBlaster:使用RJ45網(wǎng)絡(luò)接口的配置電纜。 Programmer窗口中必須設(shè)置了配置電纜才能進行配置,在圖1.22中看到,左上角的信息框中顯示“NoHardware”即硬件沒有安裝,點擊【HardwareSetup…】按鈕設(shè)置下載電纜。圖1.22設(shè)置配置電纜 在QuartusII彈出的HardwareSetup對話框中點擊【AddHardware】按鈕,打開AddHardware對話框。Hardwaretype欄中選擇合適的下載電纜類型,對于使用串行口得MasterBlaster等配置電纜類型還需要設(shè)置串行口和波特率等信息。本例使用ByteBlasterMV端口自動選擇為LPT1。點擊【OK】按鈕和【Finish】按鈕完成設(shè)置,可以在Programmer窗口的硬件信息框中看到設(shè)置的配置電纜類型。選擇配置方式 QuartusII的Programmer配置工具會根據(jù)選擇的器件類型給出器件的配置模式,通過Mode欄的下拉菜單進行選擇。本例中的目標器件是MAXII系列??梢赃x擇的配置模式有以下幾種:JTAG:使用IEEE1149.1標準JTAG端口與時序?qū)PGA進行配置,優(yōu)先級最高。In-SocketProgramming:Altera編程單元(APU)的專用配置模式。PassiveSerial:PS模式即被動串行模式,在這種模式下FPGA處于被動方式,只是被動的接受配置數(shù)據(jù),可對單個或者多個器件進行編程。ActiveSerialProgramming:AS模式即主動串行模式,F(xiàn)PGA處于主動地位。由于FPGA控制配置過程,負責輸出控制的同步信號給出外部配置芯片,接受配置數(shù)據(jù)以完成配置。主要用于對EPCS1/EPCS4等串行配置器件進行編程與測試。開始配置 首先保證已經(jīng)連接號配置電纜,ByteBlaster、ByteBlasterMV、ByteBlasterII需要與25針并口相連;其他類型的下載電纜也需要連接到PC的相應端口上。 完成點擊在Programmer界面中點擊【Start】按鈕,當彈出配置完成對話框時,點擊【OK】按鈕確定即完成器件配置。項目二信號分頻1.設(shè)計要求用VHDL語言設(shè)計出一個燈自動的每1秒閃爍一次。2.任務(wù)分析將系統(tǒng)的主時鐘50MHz分成1Hz的時鐘頻率,用該信號輸出到燈上,使其在1Hz的信號上高電平時為亮、低電平時為滅,從而實現(xiàn)閃爍。3.設(shè)計原理圖2.1設(shè)計原理圖4.硬件要求..含有芯片EPM240T100C5的開發(fā)板和下載線與電源線。輸入信號為系統(tǒng)自帶主時鐘,輸出為開發(fā)板上任意一個LED燈5.源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityfpisport(clk:instd_logic;shuchu:outstd_logic);endfp;architecturefenpinoffpissignalclk_1s:std_logic;beginprocess(clk)variablecnt1:integerrange0to2000;variablecnt2:integerrange0to12500;beginifrising_edge(clk)thenifcnt1=2000thencnt1:=0;ifcnt2=12500thencnt2:=0;clk_1s<=notclk_1s;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;shuchu<=clk_1s;endprocess;endfenpin;6.接線圖圖2.2引腳分配圖7.思考與練習1)設(shè)計出一個燈每2秒閃爍一次;再設(shè)計另外一個燈每1秒閃爍兩次。項目三編碼器任務(wù)一普通8—3編碼器1.任務(wù)要求1)用VHDL語言設(shè)計一個普通8—3編碼器的程序,輸入是十進制0-7,輸出是對應的是三位二進制數(shù)。2)編寫完程序之后并在開發(fā)系統(tǒng)上進行硬件測試。2.任務(wù)分析用一定位數(shù)的二進制數(shù)來表示十進制數(shù)碼,字母,符號等信息稱為編碼。實現(xiàn)編碼操作的電路稱為編碼器。編碼器分為普通編碼器和優(yōu)先編碼器。普通編碼器任何時刻只允許一個輸入有效。特點為“或”邏輯關(guān)系。以普通8—3編碼器為例:(如下圖是普通8—3編碼器真值表)圖3.1普通8—3編碼器真值表其中:輸入8個互斥的信號,輸出3位二進制代碼3.設(shè)計原理圖3.2設(shè)計原理圖4.硬件要求在硬件方面,主要是含有芯片EPM240T100C5的開發(fā)板和下載線與電源線。而我們只要用到八個開關(guān),三個LED燈(開關(guān)是撥碼開關(guān),由于EPM240開發(fā)板上沒有獨立的LED燈,我們只好用三個數(shù)碼管a,b,c代替三個LED燈)。5.源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;entitybianma_3isport(i:instd_logic_vector(7downto0);y:outstd_logic_vector(2downto0));endbianma_3;architectureoneofbianma_3isbeginprocess(i)begincaseiiswhen"00000001"=>y<="000";when"00000010"=>y<="001";when"00000100"=>y<="010";when"00001000"=>y<="011";when"00010000"=>y<="100";when"00100000"=>y<="101";when"01000000"=>y<="110";when"10000000"=>y<="111";whenothers=>y<="000";endcase;endprocess;endone;6.接線圖:圖3.3引腳分配圖(在這里,由于天祥EPM240實驗板上沒有LED獨立燈,只好用三個數(shù)碼管來表示)7.思考與練習1)如果用彩燈LED來代替數(shù)碼管,程序該做如何改動?任務(wù)二8—3優(yōu)先編碼器1.任務(wù)要求1)用VHDL語言設(shè)計一個優(yōu)先8—3編碼器的程序,輸入是十進制0-7,輸出是對應的是三位二進制數(shù),但當多個輸入時,優(yōu)先輸出大的數(shù)對應的二進制數(shù)。2)編寫完程序之后并在開發(fā)系統(tǒng)上進行硬件測試。2.任務(wù)分析優(yōu)先編碼器允許多個輸入信號同時有效。設(shè)計時所有輸入信號已按優(yōu)先順序排隊。其中優(yōu)先級別高的信號排斥級別低的,則具有單方面排斥的特性。以8-3優(yōu)先編碼器為例:設(shè)I7的優(yōu)先級別最高,I6次之,依此類,I0最低。圖3.38-3優(yōu)先編碼器真值表3.設(shè)計原理 圖3.4設(shè)計原理圖4.硬件要求在硬件方面,主要是含有芯片EPM240T100C5的開發(fā)板和下載線與電源線。而我們只要用到八個開關(guān),三個LED燈(開關(guān)是撥碼開關(guān),由于EPM240開發(fā)板上沒有獨立的LED燈,我們只好用三個數(shù)碼管a,b,c代替三個LED燈)。5.源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;entitybianma_3isport(i:instd_logic_vector(7downto0);y:outstd_logic_vector(2downto0));endbianma_3;architectureoneofbianma_3isbeginprocess(i)beginifi(7)='1'theny<="111";elsifi(6)='1'theny<="110";elsifi(5)='1'theny<="101";elsifi(4)='1'theny<="100";elsifi(3)='1'theny<="011";elsifi(2)='1'theny<="010";elsifi(1)='1'theny<="001";elsifi(0)='1'theny<="000";endif;endprocess;endone;6.接線圖:圖3.5引腳分配圖(在這里,由于天祥EPM240實驗板上沒有LED獨立燈,只好用三個數(shù)碼管來表示)7.思考與練習1)如果用彩燈LED來代替數(shù)碼管,程序該做如何改動?相關(guān)知識1進程語句(PROCESS) 進程語句是VHDL程序中用來描述硬件電路工作行為的最常用,最基本的語句。進程語句本身是并行語句,即一個結(jié)構(gòu)體中多個進程之間是并行關(guān)系,各個進程之間可以通過信號進行通信。進程內(nèi)部只能使用順序語句。 進程語句不是單條語句,而是由順序語句組成的程序結(jié)構(gòu),其基本格式如下: PROCESS[(敏感信號表)]IS [進程說明部分] BEGIN 順序語句 ENDPROCESS; 可見,PROCESS語句是由三個部分組成的,即進程說明部分,順序語句描述部分和敏感信號表。 說明部分可以定義一些局部量,包括數(shù)據(jù)類型,變量,常數(shù),屬性,子程序等,但要注意,在進程中不允許定義信號。 敏感信號表中需列出用于啟動本進程的信號,一旦其中的任意一個信號發(fā)生變化,進程就被啟動,進程中的語句就執(zhí)行一遍。注意;一般將進程中的所有輸入信號都列入敏感表中。2.IF語句 IF語句是VHDL中最重要的語句結(jié)構(gòu)之一,它根據(jù)語句中設(shè)置的一種或多和種條件,有選擇地執(zhí)行指定的順序語句。IF語句的基本結(jié)構(gòu)有以下4種: (1)IF條件句THEN 順序語句; ENDIF; (2)IF條件句THEN 順序語句; ELSE 順序語句; ENDIF;(3)IF條件句THEN 順序語句; ELSIF條件句THEN 順序語句; ENDIF;(4)IF條件句THEN IF條件句THEN 順序語句; ENDIF; ENDIF;IF語句中至少要有一個條件句,條件句必須是BOOLEAN表達式,即結(jié)果只能是TRUE或FALSE。IF語句根據(jù)條件句的結(jié)果,選擇執(zhí)行其后的順序語句。3.CASE語句CASE語句根據(jù)滿足的條件直接選擇多項順序語句的一項執(zhí)行。 格式如下: CASE表達式IS WHEN選擇值=>順序語句;“=>”不是操作符,相當于THEN的作用 WHEN選擇值=>順序語句; ... ENDCASE; CASE語句執(zhí)行時,首先計算表達式的值,然后選擇條件語句中與之相同的選擇值,執(zhí)行對應的順序語句。條件句的次序是不重要的,它的執(zhí)行更接近于并行方式。選擇值可以有4種不同的表達方式:單個普通數(shù)值,如4;數(shù)值選擇范圍,如(2to4),表示取值為2,3或4;并列數(shù)值,如3|5,表示取值為3或者5;混合方式,以上3種方式的組合;使用CASE 語句時應注意;條件句中的選擇值必在表達式的取值范圍內(nèi);每一個選擇值只能出現(xiàn)一次,即可執(zhí)行條件不能有重疊,選擇值要包含表達式所有可能的取值,否則在最后用“OTHERS”表示。在CASE語句中,OTHERS只能出現(xiàn)一次。且只能作為最后一種條件取值。 CASE語句執(zhí)行中必須選中,且只能選中條件句中的一條,即CASE語句中至少包含一個條件句。 與IF語句相比,CASE語句的特點是可讀性比較好,它有所有可能出現(xiàn)的情況都列出來了,可執(zhí)行條件一目了然。 有的邏輯功能既可以用IF語句描述,也可以用CASE語句描述,但有些邏輯CASE語句無法描述,只能用IF語句描述,這是因為IF-THEN-ELSE語句具有條件相與的功能和自動將邏輯“—”包括進去的功能(“—”有利于邏輯的化簡),而CASE語句只有條件相或的功能。項目四譯碼器任務(wù)一3—8譯碼器1.設(shè)計要求1)用VHDL語言設(shè)計一個3—8譯碼器的程序,輸入是三位二進制數(shù),輸出是對應的是十進制0-7。2)編寫完程序之后并在開發(fā)系統(tǒng)上進行硬件測試。2.任務(wù)分析將輸入的二值代碼轉(zhuǎn)換成對應的高低電平信號,稱為譯碼。它是編碼的反操作。實現(xiàn)譯碼操作的電稱為譯碼器。譯碼器分二進制譯碼器,十進制譯碼器及字符顯示譯碼器,各種譯碼器的工作原理類似,設(shè)計方法也相同。設(shè)二進制譯碼器的輸入端為N個,則輸出端為2N個,且對奕于輸入代碼的每一種 態(tài),2N個輸出中只有一個為1(或為0),其佘全為0(或為1)。以3-8譯碼器為例:表4.13-8譯碼器真值表3.設(shè)計原理圖4.13-8譯碼器設(shè)計原理4.硬件要求主芯片EPM240T100C5,3個開關(guān),8個LED燈。5.源程序(*.vhd).libraryieee;useieee.std_logic_1164.all;entityyima3_8isport(a:instd_logic_vector(2downto0);y:outstd_logic_vector(7downto0));endyima3_8;architecturebehavofyima3_8isbeginwithaselecty<="00000001"when"000","00000010"when"001","00000100"when"010","00001000"when"011","00010000"when"100","00100000"when"101","01000000"when"110","10000000"when"111","00000000"whenothers;endbehav;6.接線圖圖4.2引腳分配圖(在這里,由于在EMP240天祥板上沒有8個LED燈,所以在這里用8段數(shù)碼管代替,每1段數(shù)碼管代表1個LED燈)7.思考與練習1)這個程序只能數(shù)碼管的段顯示,如果用數(shù)碼管顯示對應的數(shù)字呢,該如改動?任務(wù)二七段數(shù)碼管顯示譯碼器1.設(shè)計要求1)用VHDL語言設(shè)計一個可以實現(xiàn)以下功能的程序:輸入是四位二進制數(shù),輸出是對應的是十進制。2)用四個開關(guān)代表四位二進制數(shù),單個數(shù)碼管顯示對應的十進制數(shù)。3)編寫完程序之后并在開發(fā)系統(tǒng)上進行硬件測試。2.任務(wù)分析用來驅(qū)動各種顯示器件,從而將用二進制代碼表示的數(shù)字,文字,符號翻譯成人們習慣的形式直觀地顯示出來的電路,稱為顯示譯碼器。 這種顯示器可用多種發(fā)光器件構(gòu)成。例如半導體發(fā)光二極管,液晶等。 以發(fā)光二極管的七段數(shù)碼管顯示譯碼器為例進行說明。圖4.3七段數(shù)碼管表4.2七段數(shù)碼顯示譯碼器真值表3.設(shè)計原理圖4.4七段數(shù)碼管顯示譯碼器原理圖4.硬件要求主芯片EPM240T100C5,4個開關(guān),1個共陰七段數(shù)碼管。5源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;entityyimaisport(l:outstd_logic_vector(5downto0);d0,d1,d2,d3:instd_logic;a,b,c,d,e,f,g:outstd_logic);endyima;architecturebehavofyimaissignalm:std_logic_vector(3downto0);signalseg7:std_logic_vector(6downto0);beginl<="011111";m<=d3&d2&d1&d0;withmselectseg7<="0111111"when"0000","0000110"when"0001","1011011"when"0010","1001111"when"0011","1100110"when"0100","1101101"when"0101","1111101"when"0110","0000111"when"0111","1111111"when"1000","1100111"when"1001","1110111"when"1010","0111001"when"1011","0111001"when"1100","1011110"when"1101","1111001"when"1110","1110001"when"1111","0000000"whenothers;g<=seg7(6);f<=seg7(5);e<=seg7(4);d<=seg7(3);c<=seg7(2);b<=seg7(1);a<=seg7(0);endbehav;6.接線圖圖4.5引腳分配圖7.思考與練習1)如果用兩個數(shù)碼管顯示0101—1111對應的數(shù)字10—15,該如何操作?2)如果是八位二進制的輸入時,對應顯示十進制,該如何寫程序?任務(wù)三六位數(shù)碼管動態(tài)掃描顯示電路設(shè)計與實現(xiàn)一、目的(1)設(shè)計6位掃描數(shù)碼管顯示器。(2)將前面完成的六進制計數(shù)器、3-8譯碼器、BCD-七段顯示譯碼器設(shè)計和24選4多路數(shù)據(jù)開關(guān)集成在一起,實現(xiàn)兩個6位的掃描數(shù)碼顯示器。(3)學習功能集成的設(shè)計方法。二、教學提示(1)動態(tài)掃描顯示其實就是利用了時分原理和人的視覺暫留現(xiàn)象。(2)6位掃描數(shù)碼顯示器將時間劃分為6個掃描周期:周期1→周期2→周期3→周期4→周期5→周期6(3)每個周期只選通一位數(shù)據(jù)。在周期1顯示第1個數(shù)碼,周期2顯示第2個數(shù)碼。在掃描6個周期后,又重新按順序循環(huán)。如果掃描的速度足夠快,人的感覺就像6個數(shù)碼同時顯示。(4)6位的掃描數(shù)碼顯示器共有6組BCD碼(4位)輸入線、七根七段譯碼輸出線和6根位選通線。進入工作過程時,先從6組BCD數(shù)據(jù)中選出一組,通過BCD-七段顯示譯碼器譯碼后輸出,然后選出下一組數(shù)據(jù)譯碼后輸出。數(shù)據(jù)選擇的時序和順序由六進制計數(shù)器控制。與此同時,3-8譯碼器產(chǎn)生位選通信號。三、設(shè)計要求(1)輸入24選4數(shù)據(jù)開關(guān)的VHDL文件,并進行仿真;(2)通過建立一個頂層電路圖實現(xiàn)6位動態(tài)數(shù)碼管顯示器;(3)應用仿真和編程兩種手段調(diào)試設(shè)計文件;修改電路圖實現(xiàn)8位動態(tài)數(shù)碼管顯示器。四、總結(jié)報告要求(1)畫出功能模塊圖,標明模塊輸入輸出信號、連接關(guān)系和接口關(guān)系;(2)打印頂層電路圖;(3)說明如何用功能集成的方法完成一個設(shè)計。任務(wù)串行連接的七段數(shù)碼管1.設(shè)計要求1)用VHDL語言設(shè)計一個可以實現(xiàn)以下功能的程序:六個數(shù)碼管可以同時工作,顯示不同的數(shù)字。2)編寫完程序之后并在開發(fā)系統(tǒng)上進行硬件測試。2.任務(wù)分析串行連接,即每個數(shù)碼管對應的引腳都連接在一起(如每個數(shù)碼管的a引腳都接到一起,然后再接到CPLD/FPGA上的一個引腳上),通過控制公共端(圖5中的K端)控制相應數(shù)碼管的亮、滅(共陰極數(shù)碼管的公共端為高電平時,LED不亮;共陽極的公共端為低電平時,LED不亮)。串行法的優(yōu)點在于消耗的系統(tǒng)資源少,占用的I/O口少,N個數(shù)碼管只需要(7+N)個引腳(如果需要小數(shù)點,則是(8+N)個引腳)。其缺點是控制起來不如并行法容易。下面給出一個串行連接的七段數(shù)碼管驅(qū)動程序,此例中使用了6個數(shù)碼管。3.設(shè)計原理圖4.6設(shè)計原理圖4.硬件要求主芯片EPM240T100C5,6個共陰七段數(shù)碼管。5.源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydisplay3isport(clock:instd_logic;numa,numb,numc,numd,nume,numf:inintegerrange0to9;en:outstd_logic_vector(0to5);display:outstd_logic_vector(0to6)--(a~g));end;architecturedecoderofdisplay3issignalcounter:integerrange0to5;beginprocess(clock)variablenum:integerrange0to9;beginifrising_edge(clock)thenifcounter=5thencounter<=0;elsecounter<=counter+1;endif;casecounteriswhen0=>en<="011111";num:=numa;when1=>en<="101111";num:=numb;when2=>en<="110111";num:=numc;when3=>en<="111011";num:=numd;when4=>en<="111101";num:=nume;when5=>en<="111110";num:=numf;whenothers=>en<="000000";num:=0;endcase;casenumiswhen0=>display<="1111110";when1=>display<="0110000";when2=>display<="1101101";when3=>display<="1111001";when4=>display<="0110011";when5=>display<="1011011";when6=>display<="0011111";when7=>display<="1110000";when8=>display<="1111111";when9=>display<="1110011";whenothers=>display<="0000000";endcase;endif;endprocess;end;6.接線圖圖4.7引腳分配圖7.思考與練習1)如果用這六個數(shù)碼管同時顯示123456,程序該怎么改動?2)手動使得不同時間亮一個不同的數(shù)碼管呢(帶使能端的六位數(shù)碼管動態(tài)掃描)?3)參考串行連接的七段數(shù)碼管的程序,請寫出并行連接的七段數(shù)碼管程序。(并行連接的七段數(shù)碼管分析:并行連接,即每個數(shù)碼管都由單獨的譯碼電路控制,各數(shù)碼管之間除地端GND接在一起外,其余引腳各不相關(guān)。并行法的優(yōu)點是控制簡單,有幾個數(shù)碼管就用幾個譯碼管,不必修改程序,十分簡便。但當系統(tǒng)所需數(shù)碼管較多時,這種方法既耗資源,又占用較多的I/O口,N個數(shù)碼管需占用7N個引腳(若需要小數(shù)點,則是8N個引腳)。因此,此接法適合于系統(tǒng)中數(shù)碼管數(shù)量不多的應用場合。)任務(wù)四十進制計數(shù)器1.設(shè)計要求運用VHDL語言設(shè)計一個簡單的十進制計數(shù)器,用一個數(shù)碼管顯示0-9;2.任務(wù)分析 簡單的十進制計數(shù)器相當于數(shù)字電子鐘所學的芯片74LS192等計數(shù)一樣,主要是對脈沖的計數(shù),并通過程序里的“譯碼器”輸送給數(shù)碼管,在數(shù)碼管顯示出相應的是數(shù)字。3.設(shè)計原理圖4.8設(shè)計原理圖4.硬件要求主芯片EPM240T100C5,1個共陰七段數(shù)碼管。5.源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityjishuisport(clk:instd_logic;l:outstd_logic_vector(5downto0);y:outstd_logic_vector(6downto0));endjishu;architecturebehieveofjishuissignali:integerrange0to9;signalclk_1k:std_logic;beginl<="111110";process(clk)variablecnt1:integerrange0to2000;variablecnt2:integerrange0to12500;beginifclk'eventandclk='1'thenifcnt1=2000thencnt1:=0;ifcnt2=12500thencnt2:=0;clk_1k<=notclk_1k;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(clk_1k)begin ifclk_1k'eventandclk_1k='1'thenif(i=9)theni<=0;elsei<=i+1;endif;endif;endprocess;process(i)begincaseiiswhen0=>y<="0111111";when1=>y<="0000110";when2=>y<="1011011";when3=>y<="1001111";when4=>y<="1100110";when5=>y<="1101101";when6=>y<="1111101";when7=>y<="0000111";when8=>y<="1111111";when9=>y<="1101111";endcase;endprocess;endbehieve;6.接線圖圖4.9引腳分配圖7.思考與練習1)模擬生活中的計數(shù)器,試著給這個計數(shù)器加上工作開關(guān),清零開關(guān),暫停功能,就上面的程序該做何改動?2)如果是60進制計數(shù)器呢?相關(guān)知識簡單信號賦值語句賦值目標<=表達式;注意賦值目標必須是信號,兩邊的數(shù)據(jù)類型必須一致。特點:并行語句在結(jié)構(gòu)體中的執(zhí)行是同時進行的,與書寫順序無在。一條并行人號代入語句實際上就是一個進程語句的縮寫。條件信號賦值語句條件信號賦值語句的功能與進程中的IF語句相似格式:賦值目標<=表達式WHEN賦值條件ELSE–條件信號賦值語句每一<=表達式WHEN賦值條件ELSE–子句的結(jié)尾沒有標點,…--只有最后一句有分號.<=表達式;(1).條件信號賦值語句不能在進程中使用(2).條件語句測試具有順序性,第一子句具有最高賦值優(yōu)先級;(3).執(zhí)行時按書寫的先后順序逐條測定賦值條件,一旦賦值條件為TURE,就立即將表達式的值賦給賦值目標.最后一個表達式可以不跟條件句,表示以上條件都不滿足時,將此表達式的值賦予賦值目標.注意:條件信號語句允許有重疊現(xiàn)象,這與CASE語句不同.3.選擇信號賦值語句選擇信號賦值語句的功能與進程中的CASE語句相似格式:WITH選擇表達式SELECT賦值目標信號<=表達式WHEN選擇值,--選擇信號賦值語句的每一表達式WHEN選擇值,--子句結(jié)尾是逗號,最后一句…--是分號;選擇信號賦值語句不能在進程中使用與條件信號賦值語句不同,選擇值(賦值條件)的測試不是順序進行,而是同時進行的。功能和進程中的CASE語句相似,各子句的條件(選擇值)不能有重疊,且必須包容所有的條件。選擇信號賦值語句也有敏感量,就是WITH旁的選擇表達式,每當選擇表達式的值發(fā)生變化就啟動語句,將選擇表達式的值與各選擇值進行對比,一旦相符就將對應表達式的值賦給賦值目標。項目五組合邏輯電路設(shè)計設(shè)計目的:掌握傳統(tǒng)組合邏輯電路的設(shè)計方法;掌握與門、非門、或門、或非門、異或門以及與或門等最基本的組合邏輯單元。掌握位選端選取的知識。任務(wù)一四舍五入判別電路1.設(shè)計要求:電路基本功能:其輸入為8421BCD碼,要求輸入大于或等于5時,判別電路輸出為1,反之為0。2.任務(wù)分析。1)組合電路:輸出僅由輸入決定,與電路當前狀態(tài)無關(guān);電路結(jié)構(gòu)中無反饋環(huán)路。組合邏輯電路組合邏輯電路…………I0I1In-1Y0Y1Ym-1輸入輸出圖5.1組合電路簡圖2)傳統(tǒng)組合邏輯的設(shè)計方法:電路功電路功能描述真值表邏輯表達式或卡諾圖最簡與或表達邏輯變換邏輯電路圖5.2傳統(tǒng)組合邏輯設(shè)計步驟圖3.設(shè)計原理:分析電路功能得出電路真值表;DCBAYDCBAY00000110010001010111001001101101000111010011011111100010111110011010111010101101圖5.3真值表簡化真值表得出邏輯關(guān)系式:Y=D+AC+BC圖5.4原理圖4.硬件要求:1)主芯片AlteraEPM240T100C5。2)LED彩燈(接輸出,觀察現(xiàn)象)。3)四個撥碼開關(guān)(四位輸入)。4)電源模板。5.參考源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;entityaaisport(a,b,c,d:instd_logic;y:outstd_logic;r:outstd_logic_vector(3downto0));endaa;architecturebehavofaaisbeginr<="1110";y<=dor(aandc)or(bandc);endbehav;6.引腳分配圖5.5引腳分配圖任務(wù)二舉重裁判表決電路1.設(shè)計要求:1)設(shè)舉重比賽有3個裁判,一個主裁判和兩個副裁判。2杠鈴完全舉上的裁決由每個裁判按下自己面前的按鈕來確定。只有當兩個或兩個以上裁判判明成功,并且其中有一個為主裁判時,表明成功的燈才亮。2.任務(wù)分析判定成功有兩個條件:1)有兩個或兩個以上裁判判明成功;2)判明成功的裁判中有一個為主裁判時;3.設(shè)計原理:1)設(shè)主裁判為變量A,副裁判分別為B和C;表明成功與否的燈為Y。分析電路功能得出電路真值表;ABCYABCY00001000001010110100110101101111圖5.6真值表2)簡化真值表得出邏輯關(guān)系式:Y=AB+AC圖5.7原理圖4.硬件要求:1)主芯片AlteraEPM240T100C5。2)LED彩燈(接輸出,觀察現(xiàn)象)。3)三個撥碼開關(guān)(三位輸入)。4)電源模板。5.參考源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;entityaaisport(a,b,c:instd_logic;y:outstd_logic;r:outstd_logic_vector(3downto0));endaa;architecturebehavofaaisbeginr<="1110";y<=(aandb)or(aandc);endbehav;6.引腳分配圖5.8引腳分配圖任務(wù)三加法器任務(wù)(一)四位加法器1.設(shè)計要求設(shè)計一個四位加法器,要求輸入兩個4位的二進制數(shù),并考慮低位來的進位,再求得和及進位。2.任務(wù)分析能對兩個1位二進制數(shù)進行相加而求得和及進位的邏輯電路和為半加器能對兩個1位二進制數(shù)進行相加并考慮低位來的進位,即相當于3個1位二進制數(shù)相加,求得和及進位邏輯電路稱為全加器。實現(xiàn)多位二進制數(shù)相加的電路稱為加法器。按照進位方式的不同,加法器分為串行進位加法器和超前進位加法器兩種。串行進位加法器電路簡單,但速度較慢,超前進位加法器速度較快,但電路復雜。加法器除用來實現(xiàn)兩個二進制數(shù)相加外,還可用來設(shè)計代碼轉(zhuǎn)換電路,二進制減法器和十進制加法器等。3.設(shè)計原理1)設(shè)兩個四位輸入為a、b,低位進位為cin,四位輸出為s,輸出滿值進位為cout。根據(jù)電路要求列出真值表a[3..0]b[3..0]cins[3..0]coutab低位進位a+b+cin滿值進位圖5.9四位加法器真值表2)分析真值表:例:輸入a<=”1001”,b<=”1010”,低位進位cin<=’1’(“0001”),可以得到輸出s<=”0100”,滿值進位cout<=’1’。(這里,我們可以將cout看做s(4))4.硬件要求:1)主芯片AlteraEPM240T100C5。2)8×8矩形點陣(接輸出,觀察現(xiàn)象)。3)八個撥碼開關(guān),一個按鍵開關(guān)(需要注意的是,按鍵開關(guān)在正常情況下為高電平,按下為低電平)。4)電源模板。5.參考源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityaaisport(cint:instd_logic;a,b:instd_logic_vector(3downto0);row1:outstd_logic_vector(7downto0);row2:outstd_logic_vector(2downto0);s:outstd_logic_vector(3downto0);cout:outstd_logic);endaa;architectureoneofaaissignalsint,aa,bb:std_logic_vector(4downto0);beginrow1<="11111110";row2<="000";aa<='0'&a(3downto0);bb<='0'&b(3downto0);sint<=aa+bb+cint;s(3downto0)<=sint(3downto0);cout<=sint(4);end;6.引腳分配圖5.10引腳分配圖任務(wù)(二)8421BCD碼轉(zhuǎn)換為余3碼電路1.設(shè)計要求設(shè)計一個8421BCD碼轉(zhuǎn)換為余3碼電路,要求輸入一個8421BCD碼,輸出它的余三碼。2.任務(wù)分析輸入8421碼,輸出余3碼。余3碼:8421碼加上常數(shù)3即可得余3碼,即自動加上3(0011)。3.設(shè)計原理1)設(shè)輸入的8421碼為a,輸出的余3碼為s,由邏輯電路功能得出真值表a[3..0]S[3..0]8421碼余3碼圖5.118421BCD碼轉(zhuǎn)余3碼真值表2)得出邏輯關(guān)系表達式:s=a+“0011”4.硬件要求:1)主芯片AlteraEPM240T100C5。2)8×8矩形點陣(接輸出,觀察現(xiàn)象)。3)四個撥碼開關(guān)。4)電源模板。5.參考源程序(*.vhd)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitybbisport(a:instd_logic_vector(3downto0);row1:outstd_logic_vector(7downto0);row2:outstd_logic_vector(3downto0);s:outstd_logic_vector(3downto0));endbb;architectureoneofbbisbeginrow1<="11111110";row2<="0000";s<=a+"0011";end;6.引腳分配圖5.12引腳分配圖相關(guān)知識點1、彩燈位選端的選取例:row<=”1110”,y<=’1’,選取的是69位選端的黃燈亮。6969686766(‘0有效’)727071紅黃綠(‘1’有效)圖5.13實驗板彩燈布圖2、點陣的使用及位選端的控制。●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●8390(高電平有效)(低電平有效)8273圖5.14實驗板點陣分布圖3、簡單信號賦值語句賦值目標<=表達式;注意賦值目標必須是信號,兩邊的數(shù)據(jù)類型必須一致。特點:并行語句在結(jié)構(gòu)體中的執(zhí)行是同時進行的,與書寫順序無在。一條并行人號代入語句實際上就是一個進程語句的縮寫。4、條件信號賦值語句條件信號賦值語句的功能與進程中的IF語句相似格式:賦值目標<=表達式WHEN賦值條件ELSE–條件信號賦值語句每一<=表達式WHEN賦值條件ELSE–子句的結(jié)尾沒有標點,…--只有最后一句有分號.<=表達式;(1).條件信號賦值語句不能在進程中使用(2).條件語句測試具有順序性,第一子句具有最高賦值優(yōu)先級;(3).執(zhí)行時按書寫的先后順序逐條測定賦值條件,一旦賦值條件為TURE,就立即將表達式的值賦給賦值目標.最后一個表達式可以不跟條件句,表示以上條件都不滿足時,將此表達式的值賦予賦值目標.注意:條件信號語句允許有重疊現(xiàn)象,這與CASE語句不同.5、選擇信號賦值語句選擇信號賦值語句的功能與進程中的CASE語句相似格式:WITH選擇表達式SELECT賦值目標信號<=表達式WHEN選擇值,--選擇信號賦值語句的每一表達式WHEN選擇值,--子句結(jié)尾是逗號,最后一句…--是分號;選擇信號賦值語句不能在進程中使用與條件信號賦值語句不同,選擇值(賦值條件)的測試不是順序進行,而是同時進行的。功能和進程中的CASE語句相似,各子句的條件(選擇值)不能有重疊,且必須包容所有的條件。選擇信號賦值語句也有敏感量,就是WITH旁的選擇表達式,每當選擇表達式的值發(fā)生變化就啟動語句,將選擇表達式的值與各選擇值進行對比,一旦相符就將對應表達式的值賦給賦值目標。項目六時序邏輯電路設(shè)計設(shè)計目的:1.掌握觸發(fā)器的設(shè)計以及應用;2.掌握分頻的應用;任務(wù)一觸發(fā)器任務(wù)(一)邊沿D觸發(fā)器1.設(shè)計要求設(shè)計一個邊沿D觸發(fā)器,以開關(guān)輸入初值,以彩燈的亮滅反映輸出的變化。2.任務(wù)分析觸發(fā)器:(Flip-Flop)能存儲一位二進制信號的基本單元,用FF表示。觸發(fā)器是構(gòu)成時序邏輯電路的基本邏輯部件。D觸發(fā)器的特點:1)有兩個穩(wěn)定的狀態(tài),用0和1表示;2)輸入信號可以改變其狀態(tài),且輸入信號撤銷后,其改變后的狀態(tài)可保留下來。邊沿觸發(fā)器:次態(tài)只取決于時鐘信號的上升沿(或下降沿)達到時刻的輸入信號的狀態(tài)。3.設(shè)計原理列出邊沿D觸發(fā)器的特性表表6.1邊沿D觸發(fā)器特性表圖6.1邊沿D觸發(fā)器狀態(tài)圖4.硬件要求:1)主芯片AlteraEPM240T100C5。2)LED彩燈(接輸出,觀察現(xiàn)象)。3)1個撥碼開關(guān)。4)電源模板和晶振模塊(實驗板配有50MH晶振,12號引腳為脈沖輸出口)。5.參考源程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityaaisport(cp,d:instd_logic;u:outstd_logic_vector(3downto0);q:bufferstd_logic);endaa;architectureoneofaaissignalcp1:std_logic;beginu<="0111";process(cp)0.5hz,2svariablecnt1:integerrange0to20000;variablecnt2:integerrange0to2500;beginifcp'eventandcp='1'thenifcnt1=20000thencnt1:=0;ifcnt2=2500thencnt2:=0;cp1<=notcp1;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(cp1,d)beginifcp1'eventandcp1='1'then上升沿有效q<=d;endif;endprocess;endone;6.引腳分配圖6.2引腳分配圖7.思考與練習1)為什么要進行分頻?任務(wù)(二)邊沿JK觸發(fā)器1.設(shè)計原理列出邊沿JK觸發(fā)器的特性表表6.2邊沿JK觸發(fā)器的特性表圖6.3邊沿JK觸發(fā)器的狀態(tài)圖2.硬件要求:1)主芯片AlteraEPM240T100C5。2)LED彩燈(接輸出,觀察現(xiàn)象)。3)1個撥碼開關(guān)。4)電源模板和晶振模塊(實驗板配有50MH晶振,12號引腳為脈沖輸出口)。3.參考源程序libraryieee;useieee.std_logic_1164.all;entityaaisport(cp,j,k:instd_logic;u:outstd_logic_vector(3downto0);q:bufferstd_logic);endaa;architectureoneofaaissignalcp1:std_logic;beginu<="1110";process(cp)0.5hz,2svariablecnt1:integerrange0to20000;variablecnt2:integerrange0to2500;beginifcp'eventandcp='1'thenifcnt1=20000thencnt1:=0;ifcnt2=2500thencnt2:=0;cp1<=notcp1;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(cp1,j,k)beginifcp1'eventandcp1='0'then下降沿有效ifj='1'andk='0'thenq<='1';elsifj='0'andk='1'thenq<='0';elsifj='1'andk='1'thenq<=notq;endif;endif;endprocess;endone;4.引腳分配圖6.4引腳分配圖任務(wù)二單向移位寄存器設(shè)計資料:在數(shù)字電路中,用來存放二進制數(shù)據(jù)或代碼的電路稱為寄存器。寄存器是由具有存儲功能的觸發(fā)器組合起來構(gòu)成的。一個觸發(fā)器可以存儲1位二進制代碼,存放N位二進制代碼的寄存器,需由N個觸發(fā)器來構(gòu)成。按照功能的不同,可將寄存器分為基本寄存器和移位寄存兩大類?;炯拇嫫髦荒懿⑿兴腿霐?shù)據(jù),需要時也能并行輸出。移位寄存器中的數(shù)據(jù)可以在移位脈沖作用下依次逐位右移可左移,數(shù)據(jù)既可以并行輸入,并行輸出;也可以串行輸入,串行輸出;還可以并行輸入,串行輸出;串行輸入,并行輸出;十分靈活,用途也很廣。1.設(shè)計要求結(jié)合點陣來體現(xiàn)數(shù)據(jù)移位的現(xiàn)象,移位的時間間隔為1s。設(shè)一個開關(guān),當開關(guān)閉合時,可以用4個開關(guān)設(shè)定移位的初值。當開關(guān)打開時,點陣移位(即數(shù)據(jù)移位)。2.任務(wù)分析單向移位寄存器具有以下主要特點:1)單向移位寄存器中的數(shù)碼,在CP脈沖操作下,可以依次右移或左移。2)N個單向移位寄存器可以寄存N位二進制代碼。N個CP脈沖即可完成串行輸入工作,此后可從Q0~Qn-1端獲得并行的N位二進制數(shù)碼,再用N個脈沖又可以實現(xiàn)串行輸出操作。3)若串行輸入端狀態(tài)為0,剛N個CP脈沖后,寄存器便被清零。以四位右移位寄存器為例:表6.3右移移位寄存器特性表3.設(shè)計原理移位寄存器輸出數(shù)據(jù)移位的體現(xiàn):點陣,可用點陣上的LED燈亮滅轉(zhuǎn)換來表現(xiàn)數(shù)據(jù)移位。拓展:數(shù)據(jù)的移位用數(shù)碼管來顯示,例如:輸出為“0001”時,數(shù)碼管對應顯示字形0001,數(shù)據(jù)移位,字形跟著改變。4.硬件要求:1)主芯片AlteraEPM240T100C5。2)8×8矩形點陣(接輸出,觀察現(xiàn)象)。3)五個撥碼開關(guān)。(一個控制開關(guān),四個賦值調(diào)節(jié)開關(guān))4)電源模板和晶振模塊(實驗板配有50MH晶振,12號引腳為脈沖輸出口)。5.參考源程序libraryieee;libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityaaisport(cp:instd_logic;k:instd_logic;q:instd_logic_vector(3downto0);n1:outstd_logic_vector(7downto0);b:bufferstd_logic_vector(3downto0);p:outstd_logic_vector(3downto0));endaa;architectureoneofaaissignalcp1:std_logic;beginn1<="11111110";p<="0000";脈沖分頻process(cp)--1hzvariablecnt1:integerrange0to10000;variablecnt2:integerrange0to2500;beginifcp'eventandcp='1'thenifcnt1=10000thencnt1:=0;ifcnt2=2500thencnt2:=0;cp1<=notcp1;elsecnt2:=cnt2+1;endif;elsecnt1:=cnt1+1;endif;endif;endprocess;process(k,cp1,q)variabledd:std_logic_vector(3downto0);beginifk='1'thenb<=q;elsifcp1'eventandcp1='1'thendd(2downto0):=b(3downto1);b<=dd;endif;endprocess;endone;6.引腳分配圖6.5引腳分配圖7.思考與練習1)怎樣讓移位循環(huán)?2)以數(shù)碼管的形式顯示字形,并移位。(提示:1、數(shù)碼管的動態(tài)掃描;2、基本字形‘0’、‘1’的字形代碼;)參考:libraryieee;useieee.std_logic_1164.all;useieee.std
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中高能力測試題及答案
- 2025年益陽生地會考試題及答案
- 2025年藥學醫(yī)院筆試題型及答案
- 2025年重慶柜員面試試題及答案
- 2025年大學國畫考試題及答案
- 2025年辨證類面試題思路及答案
- 2025年湖州工會面試題及答案
- 2025年個人誠信面試試題及答案
- 2025年c語言試題及答案
- 2025年初三學生試題及答案
- 腎病專業(yè)醫(yī)療質(zhì)量控制指標(2020年版)
- 《Wallpaper Engine》隨時間變化壁紙怎么設(shè)置
- 《民航地面服務(wù)與管理》項目二
- 部編版七年級道德與法治上冊第一單元復習教案
- 壓力管道安全風險管控清單格式
- 華中師范大學矢量logo課件
- 部編版五年級下冊語文【第三單元】全單元課件
- 培訓績效管理與績效評價課件
- 輸血相關(guān)制度及流程-課件
- 零售藥店實施情況內(nèi)審報告
- 張元鵬《微觀經(jīng)濟學》(中級教程)筆記和課后習題詳解
評論
0/150
提交評論