【文章內容簡介】
(27 DOWNTO 0)。SIGNAL beep_r: STD_LOGIC。BEGIN PROCESS(clk_48M) BEGIN IF RISING_EDGE(clk_48M)THEN IF count= 1111111111111111111111111111 THEN count = 0000000000000000000000000000。 ELSE count=count+1。 END IF。 END IF。 END PROCESS。 PROCESS(count(9)) BEGIN beep_r= not (count(13) AND count(24) AND count(27))。 END PROCESS。 output=beep_r。END。(3) 選擇目標器件并對相應的引腳進行鎖定,這里選擇的器件為Altera公司的Cyclone II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。引腳鎖定方法如下表所列。表 引腳鎖定方法信號引腳信號引腳EP2C5EP1C12EP2C5EP1C12beep103119clk23153(4) 對該工程文件進行全程編譯處理,若在編譯過程中發(fā)現(xiàn)錯誤,則找出并更正錯誤,直至編譯成功為止。(5) 將JP2 和JP20的beep接上,使得蜂鳴器有效。下載程序到芯片上,將跳線短接帽接好,此時可以聽到蜂鳴器發(fā)出“滴滴”的報警聲。實驗 1位全加器的文本輸入(波形仿真用)1. 實驗目的通過此實驗讓學生逐步了解、熟悉和掌握FPGA開發(fā)軟件Quartus II的使用方法及VHDL的編程方法。學習電路的仿真方法。2. 實驗內容本實驗的內容是建立一個1位全加器。在實驗箱上的按鍵KEY1~KEY3分別為A、B和Cin,并通過LED1~LED3指示相應的狀態(tài)。輸出Sum和Cout通過LED7和LED8指示。3. 實驗原理1位全加器的真值表如下所示。表 1位全加器邏輯功能真值表ABCinSumCout00000010101001011001001100110110101111114. 實驗步驟(1) 啟動Quartus II,建立一個空白工程。(2) ,源代碼如下。然后進行綜合編譯。若在編譯過程中發(fā)現(xiàn)錯誤,則找出并更正錯誤,直到編譯成功為止。程序參考:LIBRARY IEEE。 USE 。 USE 。USE 。ENTITY full_add IS PORT(a,b,cin: IN STD_LOGIC。key1,key2,key3: OUT STD_LOGIC。 sum,cout: OUT STD_LOGIC )。END。ARCHITECTURE one OF full_add IS SIGNAL sum_r,a_r,b_r,cin_r:STD_LOGIC_VECTOR( 1 DOWNTO 0)。 BEGIN Key1=a。 a_r = 39。039。 amp。 a。 將1位矢量擴為2位 b_r = 39。039。 amp。 b。 將1位矢量擴為2位 cin_r= 39。039。 amp。 cin。 將1位矢量擴為2位 sum_r=a_r+b_r+cin_r。 sum=sum_r(0)。 cout=sum_r(1)。END。(3) 波形仿真步驟如下:① 在Quartus II主界面中選擇File→ New命名,打開新建文件對話框,從中選擇Vector Waveform File,如下圖所示。單擊OK建立一個空的波形編輯窗口。選擇File→Save as 。此時會看到窗口內出現(xiàn)如下圖所示。在空白處雙擊鼠標左鍵 圖 新建文件對話框 圖 新建波形文件界面② 在上圖所示的Name選項卡內雙擊鼠標左鍵,彈出如圖 所示的對話框。在該對話框中單擊Node Finder按鈕,彈出如圖 所示的對話框。圖 添加節(jié)點對話框③ 按照下圖所示進行選擇和設置,先按下“l(fā)ist”按鈕,再按下“”按鈕添加所有節(jié)點,最后按下“ok”按鈕。圖 添加節(jié)點④ 波形編輯器默認的仿真結束時間為1us,根據(jù)仿真需要可以設置仿真文件的結束時間。選擇Edit→ End Time命令可以更改。這里采用默認值不需更改。圖 添加完節(jié)點的波形圖⑤ 編輯輸入節(jié)點的波形。編輯時將使用到波形編輯工具欄中的各種工具。下圖顯示了工具欄中各種工具的功能。圖 波形編輯器工具條⑥ 在Quartus II主界面下選擇Processing→ Simulator Tool 命令,彈出如下圖對話框。按下圖步驟進行選擇和設置⑦ 觀察仿真結果是否與設計相符合,如果不符合,須重新設計文件,再進行綜合編譯、仿真,直到仿真結果與設計相符為止。圖 仿真設置對話框圖 1位全加器仿真波形圖(4)選擇目標器件并對相應的引腳進行鎖定,這里選擇的器件為Altera公司的Cyclone II系列的EP2C5Q208C8,或者Cyclone I系列的EP1C12Q240C8。引腳鎖定方法如下表所列。表 引腳鎖定方法信號引腳信號引腳EP2C5EP1C12EP2C5EP1C12Led0116128Key05675Led1110127Key15978Led2114126Key25777sum63122cout106121(5)P6是一個3針的插座,如果把短接帽接到下面,使下面兩個插針短接,則按鍵有效;如果把短接帽接到上面,使上面兩個插針短接,則矩陣鍵盤有效。本實驗令按鍵有效,把短接帽接到下面。把JP20的LED1~LED8的跳帽插上,使發(fā)光二極管有效。下載程序,按下KEY1~KEY3,觀察發(fā)光二極管LED1~LEDLEDLED8的狀態(tài)。實驗 直流電機PWM控制1. 實驗目的學習使用PWM對直流電機進行調速控制,掌握PWM控制的工作原理。2. 實驗內容本實驗的內容是設計使用PWM信號來控制直流電機的加速、減速,并控制其正轉、反轉、停止、啟動等操作。利用Quartus II完成設計仿真,最后在實驗箱上進行硬件測試。速度等級分為16級(0~F),用KEY1輸入并由LED1~LED4指示(LED1為最高位,LED為最低位)。Key2控制電機的停止和啟動,由LED8指示其狀態(tài),key3控制電機正反轉,電機轉到時檢測反饋回來的脈沖通過頻率計測量最后顯示在數(shù)碼管1~8上。3. 實驗原理對直流電機進行調速,可以通過PWM(PulseWidth Modulation,脈寬調制)波來控制電機調速。4. 實驗步驟LIBRARY IEEE。 USE 。 USE 。USE 。ENTITY moto_test ISPORT(clock_48M: IN STD_LOGIC。 系統(tǒng)時鐘(48MHz)key: IN STD_LOGIC_VECTOR(2 DOWNTO 0)。按鍵輸入(key1~key3)pwm_in: IN STD_LOGIC。 產(chǎn)生的PWM波輸入pwm_en: OUT STD_LOGIC。 PWM控制使能端duty_cycle: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。PWM占空比控制輸出motoa,motob:OUT STD_LOGIC。 PWM波輸出led: OUT STD_LOGIC_VECTOR(4 DOWNTO 0))。END。ARCHITECTURE one OF moto_test ISSIGNAL duty_cycle_io: STD_LOGIC_VECTOR(3 DOWNTO 0)。SIGNAL pwm_en_io: STD_LOGIC。SIGNAL count: STD_LOGIC_VECTOR(16 DOWNTO 0)。時鐘分頻計數(shù)器SIGNAL dout1,dout2,dout3:STD_LOGIC_VECTOR(2 DOWNTO 0)。消抖寄存器SIGNAL moto_dir: STD_LOGIC。電機正反轉SIGNAL k_debounce: STD_LOGIC_VECTOR(2 DOWNTO 0)。按鍵消抖輸出SIGNAL clk: STD_LOGIC。分頻時鐘SIGNAL key_edge: STD_LOGIC_VECTOR(2 DOWNTO 0)。BEGINled=NOT (pwm_en_io amp。 duty_cycle_io)。LED輸出狀態(tài)指示pwm_en = pwm_en_io。duty_cycle = duty_cycle_io。PROCESS(clock_48M)BEGIN IF RISING_EDGE(clock_48m) THEN IF count120000 THEN count=count+1。 clk=39。039。 ELSE count=B0_0000_0000_0000_0000。 clk=39。139。 END IF。 END IF。END PROCESS。 按鍵消抖部分PROCESS (clock_48m)BEGIN IF RISING_EDGE(clock_48M) THEN IF clk=39。139。 THEN dout1=key。 dout2=dout1。 dout3=dout2。 END IF。 END IF。END PROCESS。PROCESS (clock_48M)BEGIN IF RISING_EDGE(clock_48M) THEN k_debounce=dout1 OR dout2 OR dout3。按鍵消抖輸出. END IF。END PROCESS。key_edge=NOT (dout1 OR dout2 OR dout3) AND k_debounce。PROCESS(clock_48M)按鍵1 控制電動機速度BEGIN IF RISING_EDGE(clock_48M) THEN IF key_edge(0)=39。139。 THEN duty_cycle_io=duty_cycle_io+1。 END IF。 END IF。END PROCESS。PROCESS(clock_48M)按鍵2,控制電動機啟動、停止 BEGIN IF RISING_EDGE(clock_48M) THEN IF key_edge(1)=39。139。 THEN pwm_en_io=NOT pwm_en_io。 END IF。 END IF。END PROCESS。PROCESS(clock_48M)按鍵3,控制電動機正/反轉BEGIN IF RISING_EDGE(clock_48M) THEN IF key_edge(2)=39。139。 THEN moto_dir =NOT moto_dir。 END IF。 END IF。END PROCESS。motoa=pwm_in WHEN moto_dir=39。139。 ELSE 39。039。motob=39。039。 WHEN moto_dir=39。139。 ELSE pwm_in。END。實驗 用狀態(tài)機實現(xiàn)對TLC549的采樣控制(A/D實驗)1. 實驗目的熟悉串行模/數(shù)轉換芯片TLC549的使用方法,掌握利用有限狀態(tài)機實現(xiàn)一般的時序邏輯分析的方法,了解一般狀態(tài)機的設計與應用。2. 實驗內容本實驗的內容是利用狀態(tài)機實現(xiàn)對TLC549的采樣控制,制作一個簡易電壓表。在實驗箱上進行硬件測試。實驗時利用調節(jié)電位器RW1改變ADC的模擬輸入值,數(shù)據(jù)采樣讀取后由數(shù)碼管LEDD3顯示。最后用萬用表測量