名稱:洗衣機控制器Basys2開發(fā)板verilog電子定時器倒計時(代碼在文末下載)
軟件:ISE
語言:Verilog
代碼功能:
洗衣機控制器設計要求
(1)設計一個電子定時器,控制洗衣機做如下運轉:定時啟動→正轉25s→暫停5s→反轉25s→暫停。如果定時未到,則回到“正轉25s→暫停5S→…,定時到則停止。
(2)若定時到,則停機發(fā)出音響信號。
(3)用兩個數(shù)碼管顯示洗滌的預置時間(分鐘數(shù)),按倒計時方式對洗滌過程作計時顯示,直到時間計時結束;洗滌過程由“開始”信號開始。
(4)3只LED燈表示“正轉”、“反轉”、“暫?!暗?個狀態(tài)。
教學提示
(1)設計20s、10s定時電路。
(2)電路輸出為“正轉”、“反轉”、“暫?!暗?個狀態(tài)。
(3)按照設計要求,用定時器的"時間到”信號啟動相應的下一個定時器工作,直到整個過程結束。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在Basys2開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設計文檔:
1. 工程文件
2. 程序文件
3. 管腳約束
4. 程序編譯
5. RTL圖
6. Testbench
7. 仿真圖
7.1 整體仿真圖
7.2 div_to_1K模塊
7.3 div_to_1模塊
7.4 control模塊
7.5 display模塊
部分代碼展示:
module?wash_machine( input?clk,//50MHz input?key_add,//加按鍵,設置時間 input?key_sub,//減按鍵,設置時間 input?key_start,//啟動按鍵 input?key_reset,//復位按鍵 output?D1,//正轉 output?D2,//反轉 output?D3,//暫停 output?end_led,//結束指示燈 output?[7:0]?SEG,//數(shù)碼管段選 output?[1:0]?SEL//數(shù)碼管位選 ); wire?clk_1Hz; wire?clk_1K; wire?[7:0]?time_data;//剩余時間 //50M分頻到1K div_to_1K?i_div_to_1K( .?clk(clk),//50MHz .?key_reset(key_reset),//按鍵,按下高電平 .?clk_1K(clk_1K)//1KHz信號 ); //1K分頻到1Hz div_to_1?i_div_to_1( .?clk_1K(clk_1K),//1KHz .?key_reset(key_reset),//按鍵,按下高電平 .?clk_1Hz(clk_1Hz)//1Hz信號 ); //控制模塊 control?i_control( .?clk_1Hz(clk_1Hz),//1Hz .?key_add(key_add),//加按鍵,按下高電平 .?key_sub(key_sub),//減按鍵,按下高電平 .?key_start(key_start),//啟動暫停按鍵,按下高電平 .?key_reset(key_reset),//復位按鍵,按下高電平 .?end_led(end_led), .?D1(D1),//正轉 .?D2(D2),//反轉 .?D3(D3),//暫停 .?time_data(time_data)//剩余時間 ); display?i_display( .?clk_1K(clk_1K),//1000Hz .?time_data(time_data),//剩余時間 .?SEG(SEG),//數(shù)碼管段選 .?SEL(SEL)//數(shù)碼管位選 ); endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=267