軟件:Quartus
語言:Verilog
代碼功能:
(1)能顯示當前模式:1—洗滌定時,2—洗滌工作,3—甩干定時,4—甩干工作;顯示洗滌剩余時間、甩干剩余時間,單位為分鐘;
(2)功能選擇鍵,可在模式1~4之間輪流切換;在定時模式下,由上下鍵對定時進行±調整;啟動/暫停鍵;啟動暫停工作;
(3)在洗滌工作模式下,先按洗滌運轉流程工作;定時啟動→正轉20秒→暫停10秒→反轉20秒→暫停10秒→定時未到回到“正轉20秒→暫停10秒→……”,定時時間到則自動進入甩干流程,直到甩干定時時間到之后停止;在甩干模式下,只進行甩干流程;工作過程中能進行對應的倒計時顯示;
(4)工作過程由“啟動”信號開始,直到定時結束;結束時通過指示燈閃爍10s進行提醒;
(5)對工作流程中的“正轉”、“反轉”、“暫?!?、“甩干”等狀態(tài)通過多個指示燈以流水燈形式加以體現(xiàn)。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設計文檔:
1、工程文件
2、程序文件
3、程序編譯
4、RTL圖
5、仿真圖
Testbench
頂層仿真圖
按鍵檢測模塊
洗衣機控制模塊
流水燈控制模塊
部分代碼展示:
//洗衣機 module?wash_machine?( ????input?wire?clk,??????????????//?100Hz時鐘 ????input?wire?rst,??????????????//?復位信號(高電平復位) ????input?wire?mode_select_key,??????//?模式選擇鍵 ????input?wire?up_key,???????????????//?增加時間 ????input?wire?down_key,?????????????//?減少時間 ????input?wire?start_pause_key,??????//?啟動/暫停鍵 ????output?[1:0]?mode,???????//?當前模式:00-洗滌定時,01-洗滌工作,10-甩干定時,11-甩干工作 ????output?[5:0]?wash_min,???//?洗滌剩余分鐘 ????output?[5:0]?dry_min,????//?甩干剩余分鐘 ?output?[7:0]?water_led,??//?流水燈?led ????output?finish_flash??????//?結束閃爍提示(1Hz閃爍) ); ?wire?[3:0]?state_leds;?//?狀態(tài)指示:正轉(bit3)、反轉(bit2)、暫停(bit1)、甩干(bit0) ?wire?mode_select;??????//?模式選擇鍵 ?wire?up;???????????????//?增加時間 ?wire?down;?????????????//?減少時間 ?wire?start_pause;??????//?啟動/暫停鍵 ? ? //按鍵檢測 key_rise?i0_key_rise?( ????.?clk(clk),??????????????//?100Hz時鐘 ????.?key_in(mode_select_key),??????????????//?按鍵輸入 ????.?key_out(mode_select)??????//按鍵脈沖輸出 );? ? //按鍵檢測 key_rise?i1_key_rise?( ????.?clk(clk),??????????????//?100Hz時鐘 ????.?key_in(up_key),??????????????//?按鍵輸入 ????.?key_out(up)??????//按鍵脈沖輸出 );? //按鍵檢測 key_rise?i2_key_rise?( ????.?clk(clk),??????????????//?100Hz時鐘 ????.?key_in(down_key),??????????????//?按鍵輸入 ????.?key_out(down)??????//按鍵脈沖輸出 );
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1509