歡迎來到天天文庫
瀏覽記錄
ID:11910937
大小:44.00 KB
頁數:4頁
時間:2018-07-14
《可控脈沖發(fā)生器的設計》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、可控脈沖發(fā)生器的設計一、實驗目的1、了解可控脈沖發(fā)生器的實現機理。2、學會用示波器觀察FPGA產生的信號。3、學習用VHDL編寫復雜功能的代碼。二、實驗原理脈沖發(fā)生器就是要產生一個脈沖波形,而可控脈沖發(fā)生器則是要產生一個周期和占空比可變的脈沖波形。可控脈沖發(fā)生器的實現原理比較簡單,可以簡單的理解為一個計數器對輸入的時鐘信號進行分頻的過程。通過改變計數器的上限值來達到改變周期的目的,通過改變電平翻轉的閾值來達到改變占空比的目的。下面舉個簡單的例子來說明其工作原理。假如有一個計數器T對時鐘分頻,其計數的范圍是從0~N,另取一個M(0≤M≤N),若輸出為Q,那么Q
2、只要滿足條件時,通過改變N值,即可改變輸出的脈沖波的周期;改變M值,即可改變脈沖波的占空比。這樣輸出的脈沖波的周期和占空比分別為:三、實驗內容編寫實現可控脈沖發(fā)生器程序,通過脈沖周期和占空比改變實現不同脈沖的輸出。用Quartus軟件對設計進行編譯、綜合、仿真,給出相應的時序仿真波形和硬件電路圖。四、實驗程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entityexp10isport(Clk:instd_l
3、ogic;--時鐘輸入Rst:instd_logic;--復位輸入NU,ND:instd_logic;--輸入:控制頻率的改變MU,MD:instd_logic;--輸入:控制占空比的改變Fout:outstd_logic--波形輸出);endexp10;architecturebehaveofexp10issignalN_Buffer,M_Buffer:std_logic_vector(10downto0);signalN_Count:std_logic_vector(10downto0);signalclkin:std_logic;signalClk_C
4、ount:std_logic_vector(12downto0);--產生一個低速時鐘,用于按鍵判斷beginprocess(Clk)--計數器累加beginif(Clk'eventandClk='1')thenif(N_Count=N_Buffer)thenN_Count<="00000000000";elseN_Count<=N_Count+1;endif;endif;endprocess;process(Clk)--波形判斷beginif(Clk'eventandClk='1')thenif(N_Count5、;elsif(N_Count>M_BufferandN_Count6、00";N_Buffer<="10000000000";elsif(NU='0')thenN_Buffer<=N_Buffer+1;elsif(ND='0')thenN_Buffer<=N_Buffer-1;elsif(MU='0')thenM_Buffer<=M_Buffer+1;elsif(MD='0')thenM_Buffer<=M_Buffer-1;endif;endif;endprocess;endbehave;一、時序仿真圖
5、;elsif(N_Count>M_BufferandN_Count6、00";N_Buffer<="10000000000";elsif(NU='0')thenN_Buffer<=N_Buffer+1;elsif(ND='0')thenN_Buffer<=N_Buffer-1;elsif(MU='0')thenM_Buffer<=M_Buffer+1;elsif(MD='0')thenM_Buffer<=M_Buffer-1;endif;endif;endprocess;endbehave;一、時序仿真圖
6、00";N_Buffer<="10000000000";elsif(NU='0')thenN_Buffer<=N_Buffer+1;elsif(ND='0')thenN_Buffer<=N_Buffer-1;elsif(MU='0')thenM_Buffer<=M_Buffer+1;elsif(MD='0')thenM_Buffer<=M_Buffer-1;endif;endif;endprocess;endbehave;一、時序仿真圖
此文檔下載收益歸作者所有