北郵數電實驗_第1頁
北郵數電實驗_第2頁
北郵數電實驗_第3頁
北郵數電實驗_第4頁
北郵數電實驗_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、北京郵電大學數字電路與邏輯設計實驗報告(實驗 2)電子202-趙依然-2018212048 摘要:本次數字電路與邏輯設計實驗以初步掌握 VHDL 語言設計簡 單的數字電路,并且在Quartus口上仿真為目的,加深組合邏輯電路 和時序邏輯電路的基本原理、設計理念、運轉方式。關鍵詞:組合邏輯電路 時序邏輯電路VHDL QuartusH仿真一:實驗1實驗內容11.1.1實驗名稱:VHDL組合邏輯電路設計-4選1數據選擇器1.1.2實驗任務要求:用VHDL語言設計實現一個4選1數據選擇器,根據地址端的不同取值選擇不同的數據端到輸出端,仿真驗證其功能。1.2電路設計及VHDL代碼及注釋1.2.1設計原理

2、:利用功能表進行判斷。設計數據輸入端a3-a0和地 址端s1-s0 ,輸出端c,當地址端為11時c端輸出a3的值,當地址 端為10時c端輸出a2的值,當地址端為01時c端輸出a1的值, 當地址端為00時c端輸出a0的值。這樣就確定了電路的邏輯。VHDL代碼及注釋:library ieee;use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_arith.all;use ieee.STD_LOGIC_unsigned.all;entity mux4 isport(a:in std_logic_vector(3 downto 0);s:in std_logi

3、c_vector(1 downto 0);c:out std_logic);end mux4;architecture mux4_arch of mux4 isbeginprocess(s)begincase s iswhen 00 = cccc=a(3);end case;end process;end;1.3仿真波形圖(請放大查看)B01000 mIMnstfir lime3. 0, y19.175 ns1 Lj Pointer1.3仿真波形圖(請放大查看)B01000 mIMnstfir lime3. 0, y19.175 ns1 Lj Pointer105.G nslintRrvfll

4、!166.43 ns汕Ft3 106 us1.4 仿真波形圖分析由圖可知,當s端地址端輸入11, c端輸出和a3 一致,s端輸入10,c端輸出和a2 一致,s端輸入01,c端輸出和al 一致,s端輸入00,c 端輸出和 a0 一致。可見設計的邏輯滿足要求,仿真正確,電路實 現了4選1數據選擇器的功能二:實驗2實驗內容22.1.1實驗名稱:VHDL組合邏輯電路設計-共陰極7段數碼管譯碼器2.1.2實驗任務要求:用 VHDL 語言設計實現一個共陰極 7 段數碼 管譯碼器,仿真驗證其功能,并下載到實驗板測試。要求用撥碼開關 設定輸入信號,7 段數碼管顯示輸出信號。2.2電路設計及VHDL代碼及注釋a

5、bgeda bg f2.2電路設計及VHDL代碼及注釋abgeda bg fe dc P2.2.1設計原理:我們知道,七段共陰極數碼管是這樣的,也就是通過點亮各個數碼管來實現數字的顯示。輸入端為a3-a0 ,輸出端為b6-b0 (控制7段 數碼管用),c7-c0 (用來控制板子上哪個數碼管進行顯示)。功能表由數碼管的原理確定如當輸入為0000時,數碼管點亮B6 B5 B4 B3 B2 B1,這樣就顯示出0這個數字。再比如輸入為1001時, 數碼管點亮B6 B5 B4 B3 B1 B0則點亮9這個數字。如下表所示。 其他情況下則輸出高阻。LIBRARY IEEE;USE IEEE.STD_LOG

6、IC_1164.ALL;USE IEEE.STD_LOGIC_arith.ALL;USE IEEE.STD_LOGIC_unsigned.ALL;entity qiduan isport(a:in std_logic_vector(3 downto 0); b:out std_logic_vector(6 downto 0);c:out std_logic_vector(7 downto 0);-控制顯示板子上哪個數碼管end qiduan;architecture qiduanyima of qiduan isbeginprocess(a)beginc b b b b b b b b b b

7、 b=ZZZZZZZ;-輸出高阻 end case;end process;end qiduanyima;2.3 仿真波形圖(請放大查看)2.3 仿真波形圖(請放大查看)33JCTHTQL HMdbter Tlmr:2JZ右為1 乩E M.* | Rainie r15.77 Ufi33JCTHTQL HMdbter Tlmr:2JZ右為1 乩E M.* | Rainie r15.77 UfiiBtervAl:I5.T5 11DSlHrt:DI. IQWOILOUO1吐 山 H.3-fci Liim仿真波形圖分析:由圖可知,當輸入端輸入0000時,可輸出b端1111110 ,即在數 碼管上顯示數

8、字0 ,輸入0000-1001都可顯示真值表中相應的輸出, 可顯示對應的數字。當不在這個輸入的范圍內,輸出高阻。同時c端 一直輸出 01111111,即使用板子上第一個數碼管器。由分析可知, 設計的邏輯滿足要求,仿真正確,電路實現了共陰極 7 段數碼管譯 碼器的功能。三:實驗3實驗內容3實驗名稱:VHDL 組合時序電路設計-分頻器實驗任務要求:用 VHDL 語言設計實現一個分頻系數為10,分頻輸出信號占空比為50% 的分頻器,仿真驗證設計。3.2電路設計及VHDL代碼及注釋設計原理:分頻系數為10.輸出信號占空比為50%,則可用一個時鐘信號elk , 異步置零信號clear作為輸入端,elko

9、ut作為輸出端,定義一個信號 temp,異步置零時信號為0,同時傳遞給輸出端。當異步置零時信 號不為0時,則利用一個eount變量進行計數。Count小于4時, 則 eount 遇到上升沿變加一,記錄上升沿變化,同時信號保持原來 狀態(tài)不變。當等于4時,則使信號發(fā)生翻轉,貝elkout也發(fā)生變化, 同時count置零,重新開始計數。這樣滿5個上升沿就讓elkout變 化一次,實現了10分頻功能,同時還實現了占空比為50%的功能。3.2.2VHDL代碼及注釋library ieee;use ieee.std_logie_1164.all;use ieee.std_logie_unsigned.al

10、l;entity div10 isport(elk,elear:in std_logie;elkout:out std_logie);end div10;arehiteeture div of div10 issignal temp:std_logie;beginprocess(clk,clear)variable count:integer range 0 to 9;beginif clear=0 thentemp=clear;-異步置零elsif(clkevent and clk=1) thenif(count=4) thencou nt:=0;-計數器count從0到了 4則置零,重新計

11、數temp= not temp;-信號翻轉else count:=count+1;end if;end if;end process;clkout=temp;end;3.3波形圖仿真(請放大查看)波形圖仿真結果分析 由仿真結果可以看到,該電路實現了每經過 5 個時鐘的上升沿才會進 行一次信號的翻轉,即頻率變?yōu)樵瓉淼氖种弧M瑫r低電平和高電 平保持的時間均占一個周期內的百分之五十,實現了占空比為 50%。同時,當外部clear置0則信號置0,實現了異步復位。由分析可知, 設計的邏輯滿足要求,仿真正確,電路實現了分頻系數為 10、信號 占空比為 50%、帶異步復位的分頻器功能。四:實驗 4實驗內

12、容4實驗名稱:VHDL組合時序電路設計-帶異步復位8421十進制計數器4.1.2實驗任務要求:用 VHDL 語言設計實現一個帶異步復位的 8421 碼十進制計數器,仿真驗證其功能。4.2電路設計及VHDL代碼及注釋設計原理設計一個外部的Clk時鐘信號,clear異步復位信號,作為輸入端, c3-cO作為輸出信號,用一個信號temp,當clear置0時讓temp 也置0,同時將temp傳輸給c3-c0輸出。當clear處于高電平則看 是否有上升沿,當遇到上升沿,temp加1,將temp傳到輸出端, 當temp到9時,表示已經經過10個數,則temp置0,即實現十 進制計數,滿 9 后歸 0。將

13、temp 傳遞到輸出端時,利用 conv_std_logic_vector(,)函數將temp從0-9的整型轉化為4位二 進制數。這樣就實現了帶異步復位的8421十進制計數器。VHDL代碼及注釋library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity count8421 isport(clk,clear:in std_logic;c :out std_logic_vector (3 downto 0);end count8421;architecture count of count8421 is

14、signal temp:integer range 0 to 9;beginprocess(clk)beginif clear=0 thentemp=0;elsif(clkevent and clk=1) thenif (temp=9) then temp=0;-滿9置0else temp=temp+1;end if;end if;end process;c351國町114.,0 QE1毀 p 1%.f M伺 9 l as歐 p vsp usus曲ir.Tjuuuuuuuinjuuuinnrjuuiuuuuuin血ruuu;RRpui” rmjunnnnimjuir. rxnnjujuuuuu

15、uuinnruuuuuuuuLTuuuumnnrnllLlOi:i k0ILC4L1J1laalLlI$LL1KD)MLllidXILS1431KlILjlLJQUOXO IlQLiDI.CILJILn仿真波形圖結果分析 由仿真波形圖可知,每 10 個時鐘上升沿,數碼管輸出從 1111110 到1111011(即0-9)循環(huán)發(fā)生變化,同時當異步置位端為0時, 輸出 11111110)即數字0 ,實現了異步置0的功能。可知,上述的 電路實現了10分頻器、8421十進制計數器、數碼管譯碼器的功能, 設計的邏輯滿足要求,仿真正確,實現了所要求的功能。六:故障問題及分析故障:圖形法設計頂層文件時,出現

16、管腳未定義的情況。這是因為,在頂層的工程文件夾中,需要我們把各個模塊的VHDL文件 加進去才可以實現引腳成功定義。在采用圖形法設計時,有時出現引腳未定義的情況。原因:必須 讓粗線所連接的兩端格式完全一樣,包括性質,位數寬度。如果 是連接輸入或輸出時,要把相應的輸入或輸出的名字修改成要連 接的信號名字即可,但必須是完全一樣, 包括中括號“”“”, 數字的順序,以及數字之間的兩個點“.”編譯過程中出現多次單詞打錯的情況導致編譯久久不能完成。如 architecture這個詞,前后多次打錯,導致編譯不通過。這告訴 我們編程時需要注意自己的英語功底,多背單詞。信號在賦值的時候產生了編譯錯誤。原因是將信

17、號設置為Std_logic 格式,而后面就不能將信號直接設置成0,因為只有integer整形才能進行0或者1這樣的賦值。解決方法: 將信號賦值為另一個信號即可,不能賦值為整形的數。編程時要注意每個訐process都要用end結尾。If要在process 中進行。進行仿真時要注意截取至少一個周期的過程,最好再多一些,否 則仿真結果不完整。注意信號是=變量是:=,否則會出現編譯錯誤注意 process 里的敏感信號,當檢測到這個信號發(fā)生變化時進行 處理,如果相應的敏感信號不對的話,則做不到相應的信號變化 時做出反應。編譯時不要出現中文符號。七:總結和結論在本次實驗中,我將五個實驗要求的功能都實現了出來,包括4選1 數據選擇器,共陰極 7 段數碼管譯碼器,帶異步復位 8421 十進制 計數器,分頻系數為 10,分頻輸出信號占空比為 50% 的分頻器, 以及將分頻器、計數器和數碼管譯碼器 3 個電路進行連接,實現一 個加 1 的計數器,并在數碼管上顯示計數結果。通過這次實驗,我更好的了解了組合邏輯電路和時序邏輯電路的組成 原理和特點,以及如何使用 VHDL 語言對其進行描述。在一系列的 設計、編程、測試、糾錯

溫馨提示

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

評論

0/150

提交評論