名稱:洗衣機(jī)控制器Verilog代碼vivado? ego1開(kāi)發(fā)板
軟件:vivado
語(yǔ)言:Verilog
代碼功能:
洗衣機(jī)控制器
(1)設(shè)計(jì)一個(gè)洗衣機(jī)控制器,使洗衣機(jī)作如下運(yùn)轉(zhuǎn):定時(shí)啟動(dòng)—〉正轉(zhuǎn)20秒—〉暫停10秒—〉反轉(zhuǎn)20秒—〉暫停10秒—〉定時(shí)不到,重復(fù)上面過(guò)程。
(2)若定時(shí)到,則停止,并發(fā)出提示信號(hào)。
(3)用兩個(gè)數(shù)碼管顯示洗滌的預(yù)置時(shí)間(15分鐘),按倒計(jì)時(shí)方式對(duì)洗滌過(guò)程作計(jì)時(shí)顯示,直到時(shí)間到停機(jī);洗滌過(guò)程由開(kāi)始信號(hào)開(kāi)始。
(4)三只LED燈表示正轉(zhuǎn)、反轉(zhuǎn)、暫停三個(gè)狀態(tài)。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開(kāi)發(fā)板驗(yàn)證,ego1開(kāi)發(fā)板如下,其他開(kāi)發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. FPGA型號(hào)
4. 程序編譯
5. Testbench
6. 仿真圖
Washing_time是剩余時(shí)間倒計(jì)時(shí),程序內(nèi)預(yù)置時(shí)間15分鐘倒計(jì)時(shí),洗衣結(jié)束后end_led信號(hào)拉高,表示洗衣結(jié)束信號(hào)
Led[2:0] 是正轉(zhuǎn)反轉(zhuǎn)暫停信號(hào),led[2]為正轉(zhuǎn),led[1]為暫停,led[0]為反轉(zhuǎn)
數(shù)碼管顯示,首先把Washing_time轉(zhuǎn)換為十位ten_wei和個(gè)位one_wei,然后分別掃描顯示,
下圖中十位=1,個(gè)位=5,1對(duì)應(yīng)數(shù)碼管碼字為8'hf9,5對(duì)應(yīng)數(shù)碼管碼字為8'h92,所以下圖f9,92依次顯示。
部分代碼展示:
`timescale?1ns?/?1ps //testbench module?wash_machine_test(); reg????????clk_in;//50Hz reg????????start_key;//啟動(dòng)按鍵 wire?[2:0]?led;//正轉(zhuǎn),反轉(zhuǎn),暫停 wire???????end_led;?//洗衣結(jié)束信號(hào) wire?[1:0]?bit_select;// wire?[7:0]?dig_led2;//數(shù)碼管2 washing_machine?i_washing_machine ( .clk_in(clk_in),? .start_key(start_key),? .led(led),? .end_led(end_led),? .bit_select(bit_select),? .dig_led2(dig_led2) ); initial?begin start_key=0; #200; start_key=1;//開(kāi)始按鍵按下 #50; start_key=0; #100; end //產(chǎn)生時(shí)鐘 always?begin clk_in=1; #10; clk_in=0; #10; end endmodule
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=457