VHDL彩燈控制電路的設計與實現_第1頁
VHDL彩燈控制電路的設計與實現_第2頁
VHDL彩燈控制電路的設計與實現_第3頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、VHDL彩燈控制電路的設計與實現實驗目的1進一步了解時序電路設計方法2熟悉狀態機的設計方法實驗所用儀器及元器件1、計算機2、直流穩壓電源3、數字系統與邏輯設計實驗開發板三、實驗內容用 VHDL 語言設計并實現一個彩燈控制( 8 個發光二極管)電路,仿真并下載驗證其功能。彩燈有兩種 工作模式,可以通過撥碼開關或者按鍵進行切換。(1)單點移動模式:一個點在 8 個發光二極管上來回的亮(2)幕布模式:從中間兩個點,同時向兩邊一次點亮直至全亮,然后再向中間點滅,依次往復四、設計思路與過程根據實驗要求,需要實現在撥碼開關或者按鍵的控制下實現兩種狀態機的轉換。 首先,確定輸入輸出變量:輸入:撥碼開關a:實

2、現兩種模式的轉換;時鐘 clk: :提供有效時鐘沿;輸出:8維向量b:連接8個發光二極管。其次,確定電路工作狀態 因為在單點移動模式和幕布模式都要滿足燈來回亮,共計工作狀態23 種:a=0時,實現單點移動模式,工作狀態有 s0s13共14種狀態;a=1時,實現幕布模式,工作狀態有 s14s22共9種狀態。再次,大致確定 VHDL 編寫思路 確定好輸入輸出變量和電路狀態后, 考慮結構體中需要的進程需要完成以下兩個功能分頻和實現狀 態機,故我使用了 4 個進程。其功能分別如下:P0:分頻,將實驗板上提供的 50MHz的時鐘信號,即輸入 elk分為頻率為1Hz的低頻信號clk_out,以 便觀察現象

3、;P1:為當前狀態儲存的下一狀態;P2:當時鐘有效沿到來時,當前狀態轉入下一狀態; (P1、P2 共同實現狀態機的轉換)P3 :控制LED燈的輸出,達到實驗要求效果具體程序如下。五、VHDL 程序library ieee;use ieee.std_logic_1164.all;entity light isport (clk: in std_logic;a: in std_logic;b:out std_logic_vector(7 downto 0);end light;architecture light_1 of light istype state_type is(s0,s1,s2,s

4、3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22); signal current_state,next_state: state_type;signal clk_out:std_logic;signal tmp: integer range 0 to ;beginp0:process(clk)- 分頻器,把 50MHz 的時鐘 clk 分為 1Hz 的時鐘 clk_outbeginif clk'event and clk='1' thenif tmp= thentmp<

5、=0;elsetmp<=tmp+1;end if;if tmp= thenclk_out<='1'elseclk_out<='0'end if;end if;end process;p1:process(current_state,a)-當前狀態在開關函數 a 作用下所儲存的下一狀態begincase current_state iswhen s0=> if(a='0') then next_state<=s1;else next_state<=s14; end if;when s1=> if(a=

6、9;0') then next_state<=s2;else next_state<=s14; end if;when s2=> if(a='0') then next_state<=s3;else next_state<=s14; end if;when s3=> if(a='0') then next_state<=s4;else next_state<=s14; end if;when s4=> if(a='0') then next_state<=s5;else next

7、_state<=s14; end if;when s5=> if(a='0') then next_state<=s6;else next_state<=s14; end if;when s6=> if(a='0') then next_state<=s7;else next_state<=s14; end if; when s7=> if(a='0') then next_state<=s8;else next_state<=s14; end if; when s8=> if(a

8、='0') then next_state<=s9;else next_state<=s14; end if; when s9=> if(a='0') then next_state<=s10;else next_state<=s14; end if; when s10=> if(a='0') then next_state<=s11;else next_state<=s14; end if; when s11=> if(a='0') then next_state<=s

9、12;else next_state<=s14; end if; when s12=> if(a='0') then next_state<=s13;else next_state<=s14; end if; when s13=> if(a='0') then next_state<=s0;else next_state<=s14; end if; when s14=> if(a='1') then next_state<=s15;else next_state<=s0; end if;

10、when s15=> if(a='1') then next_state<=s16;else next_state<=s0; end if;when s16=> if(a='1') then next_state<=s17;else next_state<=s0; end if;when s17=> if(a='1') then next_state<=s18;else next_state<=s0; end if;when s18=> if(a='1') then ne

11、xt_state<=s19;else next_state<=s0; end if;when s19=> if(a='1') then next_state<=s20;else next_state<=s0; end if; when s20=> if(a='1') then next_state<=s21;else next_state<=s0; end if;when s21=> if(a='1') then next_state<=s22;else next_state<=s

12、0; end if;when s22=> if(a='1') then next_state<=s14;else next_state<=s0; end if;end case;end process;p2:process(clk_out) - 時鐘 clk_out 作用下的狀態轉換函數 beginif(clk_out'event and clk_out='1') then current_state<=next_state;end if;end process;p3:process(current_state)- 當前狀態所對應

13、的輸出函數begincase current_state iswhe n s0=>b<=""whe n s1=>b<=""when s2=>b<=""when s3=>b<=""whe n s4=>b<=""whe n s5=>b<=""when s6=>b<=""whe n s7=>b<=""whe n s8=>b<="

14、;"whe n s9=>b<=""when s10=>b<=""whe n s11=>b<=""when s12=>b<=""when s13=>b<=""whe n s14=>b<=""when s15=>b<=""when s16=>b<=""when s17=>b<=""when s18=>

15、;b<=""when s19=>b<=""when s20=>b<=""when s21= >b<=""when s22=>b<="" end case;end process;end light_1;六、仿真波形其中:End time=2ms a period time=60us clk period time=2us七、故障及問題分析本次實驗整體比較順利,但仍舊出現了幾個問題: 開始并未設置分頻器, clk 的頻率為 50MHz ,這個頻

16、率過高,若是直接用于提供時鐘,不但不能看清現象,還 會因為周期過短(可能會短于電路的延遲時間) ,導致輸出錯誤。故加了一個 50M 的分頻器,使作用的有效時 鐘信號為 1Hz 。其他未出現什么問題,順利地完成了實驗。八、總結和結論本學期數電實驗共完成了 4 次實驗,分別完成了以下四項任務: 對實驗板的熟悉;對 Quarter 的初步認識,并熟悉掌握其圖形編譯功能;對 Quarter 的進一步了解,初步結識 VHDL 語言,并用其實現了簡單的計數器和譯碼器的功能,為最后一 次實驗打下基礎;進一步熟悉 VHDL 語言,并用其實現實際電路設計; 縱觀四次實驗,讓我感觸頗深的就是,預習對實驗的重要性。

17、 QuarterII 對我們來說是一個全新的東西,一 切操作都得從頭來學,好在它的界面友善,操作簡單易懂,只是在編寫 VHDL 程序的時候,需要事先學習其語 言習慣。如果預習充分,就能很順利地完成實驗任務,還留有時間思考其它問題,完成額外的題目。實驗要想仿真并下載成功,需要注意的細節很多,如,引腳設置、輸入變量的周期設置等。在第三次實驗 時,我犯了個很愚蠢的錯誤鎖定引腳后沒有讓程序再運行 compilation 一遍,導致的結果就是,仿真完全正 確,但下載到實驗板上怎么就不能正確工作,白白耽誤了很長時間。所以按部就班的操作是很必要的。實驗中還有一些細節,在預習時并未注意,只有去實驗室實際操作時

18、才發現。如第三次實驗實現 7 段數碼 譯碼器并用數碼顯示管顯示時,預習時,并不知道,通過用一個八維向量 c 來控制 8 個數碼顯示管亮的管子的 數量;再如第四次實驗, 預習的時候并不知道, 板子上提供的時鐘是 50MHz ,必須通過分頻才能看清實驗現象, 就臨場模仿書上例子做了分頻器。四次實驗,對我最有啟發的是第四次實驗。完成這次實驗,需要思考實驗需要完成的具體部分,將功能分 成塊,通過幾個process分別完成。這種設計方法對我很有啟發。相信在完成更大型的電路時,這種思想將起到 很關鍵的作用。本學期的數電實驗,完成了理論與實驗的結合,將一些很抽象的理論概念具體地體現出來,如,門的延遲 對輸出

19、波形的影響,冒險現象的產生原因等等。與此同時,我們學會了仿真工具QuarterII, 初步掌握了 VHDL語言,為理論學習提供了便利。這些都使數字電路的學習更具趣味性,同時更可以增強我們的動手動腦能力, 從而達到學以致用的目的。附錄:第二、三次實驗編程部分及仿真波形1. 用Quartern原理圖輸入法實現一個全加器,仿真驗證其功能,并下載到實驗板上測試,要求用撥碼開關 (SW1SW3作為輸入,發光二極管(LD1LD2作為輸出。2. 用VHDL語言設計實現一個 7段數碼管譯碼器。實驗內容及要求:在 QuartusII平臺上設計程序和仿真題目要求,并下載到實驗板上驗證實驗結果。a)用撥碼開關輸入二

20、進制數 00001001;b)用數碼顯示管顯示譯碼結果3. 用VHDL語言設計并實現一個 8421碼十進制計數器。實驗內容及要求:在 QuartusII平臺上設計程序和仿真題目要求,并下載到實驗板上驗證實驗結果,用 發光二極管顯示計數值。實驗1仿真波形實驗2 VHDL語言LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY segl ISPORT(a:IN STD_LOGIC_VECTOR (3 dow nto 0); b:OUT STD_LOGIC_VECTOR (6 dow nto 0); c:OUT STD_LOGIC_VECTOR (5 dow

21、 nto 0);end seg1;ARCHITECTURE seg_m OF seg1 IS BEGINPROCESS(a)BEGINCASE a ISWHEN "0000" => b<="" -0WHEN "0001" => b<="" -1WHEN "0010" => b<="" -2WHEN "0011" => b<="" -3WHEN "0100" =>

22、b<="" -4WHEN "0101" => b<="" -5WHEN "0110" => b<="" -6WHEN "0111" => b<="" -7WHEN "1000" => b<="" -8WHEN "1001" => b<="" -9 WHEN OTHERS => b<="&qu

23、ot; END CASE; c<=""END PROCESS;END;實驗1仿真波形圖Nane叮2 20空甲/2空於5日2r-41-iCS i-H6:A lA 'ir ,f.53 he 10.09 ue12.65 nsValue 1115.9;_/11<$12<4仃75-b<-痕-tlt0rrrlAAAAAA I一 LT實驗3 VHDL程序LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cou nt1 ISPORT( clk,clear: IN STD_LOGIC;q: OUT STD_L0GIC_VECT0R(3 DO

溫馨提示

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

評論

0/150

提交評論