国产精品久久久久永久免费看,大地资源网更新免费播放视频,国产成人久久av免费,成人欧美一区二区三区黑人免费,丁香五月天综合缴情网

  • 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

簡(jiǎn)單洗衣機(jī)控制器設(shè)計(jì)VHDL代碼Quartus仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-240116091S44B.doc

共1個(gè)文件

名稱:簡(jiǎn)單洗衣機(jī)控制器設(shè)計(jì)VHDL代碼Quartus仿真

軟件:Quartus

語(yǔ)言:VHDL

代碼功能:

洗衣機(jī)控制器設(shè)計(jì)

要求:

(1)設(shè)計(jì)一個(gè)電子定時(shí)器,控制洗衣機(jī)作如下運(yùn)轉(zhuǎn);定時(shí)啟動(dòng)→正轉(zhuǎn)20秒→暫停10秒→反轉(zhuǎn)20秒→暫停10秒→定時(shí)未到回到“正轉(zhuǎn)20秒→暫停10秒→.....定時(shí)到則停止。

(2)洗滌過(guò)程由“啟動(dòng)”信號(hào)開(kāi)始,若定時(shí)到,需發(fā)出提示音響;

(3)用兩個(gè)數(shù)碼管顯示洗滌的預(yù)置時(shí)間(分鐘數(shù)),按倒計(jì)時(shí)方式對(duì)洗滌過(guò)程作計(jì)時(shí)顯示,直到時(shí)間到停機(jī),用三只LED燈表示“正轉(zhuǎn)”,“反轉(zhuǎn)”?“暫?!比齻€(gè)狀態(tài)。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

洗衣機(jī)仿真

1.要求

2.程序文件

3.程序運(yùn)行

4.管腳設(shè)置

5.仿真

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?washing_machine?IS
???PORT?(
??????clk_in?????:?IN?STD_LOGIC;--50Hz
??????start_key??:?IN?STD_LOGIC;--啟動(dòng)按鍵
??????
??????led????????:?OUT?STD_LOGIC_VECTOR(2?DOWNTO?0);--正轉(zhuǎn),反轉(zhuǎn),暫停
??????end_led????:?OUT?STD_LOGIC;--洗衣結(jié)束信號(hào)
??????
??????dig_led1????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);--數(shù)碼管1
??????dig_led2???:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管2
???);
END?washing_machine;
ARCHITECTURE?trans?OF?washing_machine?IS
???
???SIGNAL?state???????????????:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"01";
???
???SIGNAL?start_key_rise??????:?STD_LOGIC;
???SIGNAL?start_key_1?????????:?STD_LOGIC?:=?'0';
???SIGNAL?start_key_2?????????:?STD_LOGIC?:=?'0';
???
???SIGNAL?washing_time????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00001111";--預(yù)置洗衣時(shí)間15分鐘
???
???SIGNAL?end_led_buf?????????:?STD_LOGIC?:=?'1';
???
???SIGNAL?end_led_buf2????????:?STD_LOGIC?:=?'1';
???
???SIGNAL?end_led_rise????????:?STD_LOGIC;
???
???SIGNAL?bell_cnt????????????:?STD_LOGIC_VECTOR(27?DOWNTO?0)?:=?"0101111101011110000100000000";
???
???SIGNAL?bell_flag???????????:?STD_LOGIC;
???
???SIGNAL?bell_clk????????????:?STD_LOGIC?:=?'0';
???SIGNAL?bell_clk_cnt????????:?STD_LOGIC_VECTOR(16?DOWNTO?0)?:=?"00000000000000000";
???
???SIGNAL?second_cnt??????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?min_en??????????????:?STD_LOGIC?:=?'0';
???
???SIGNAL?min_en_buf??????????:?STD_LOGIC?:=?'0';
???
???SIGNAL?min_en_rise?????????:?STD_LOGIC;
???
???SIGNAL?second_en_fast??????:?STD_LOGIC?:=?'0';
???SIGNAL?second_en_1s????????:?STD_LOGIC?:=?'0';
???SIGNAL?second_en???????????:?STD_LOGIC;
???
???SIGNAL?second_div_cnt_fast?:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???
???SIGNAL?second_div_cnt??????:?STD_LOGIC_VECTOR(9?DOWNTO?0)?:=?"0000000000";
???
???SIGNAL?jishu???????????????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";
???
???SIGNAL?shang???????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?yushu???????????????:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???
???SIGNAL?state_div???????????:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"00";
???SIGNAL?data_buf????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?shang_buf???????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?yushu_buf???????????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";
???
???SIGNAL?display_data????????:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";
???
???SIGNAL?duanxuan2?????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
???SIGNAL?duanxuan1????????????:?STD_LOGIC_VECTOR(7?DOWNTO?0)?:=?"00000000";
BEGIN
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????start_key_1?<=?start_key;
?????????start_key_2?<=?start_key_1;--?啟動(dòng)按鈕寄存器緩存
??????END?IF;
???END?PROCESS;
???
???start_key_rise?<=?start_key_1?AND?(NOT(start_key_2));--chenck?the?rise?EVENT?of?start_key--start_key上升沿
???
???PROCESS?(clk_in)--狀態(tài)機(jī)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????CASE?state?IS
????????????WHEN?"00"?=>--狀態(tài)00,等待狀態(tài),若有啟動(dòng)信號(hào)則到狀態(tài)01
???????????????IF?(start_key_rise?=?'1')?THEN
??????????????????state?<=?"01";
???????????????ELSE
??????????????????state?<=?"00";
???????????????END?IF;
????????????WHEN?"01"?=>--狀態(tài)01,倒計(jì)時(shí)狀態(tài),直到計(jì)時(shí)到0,到狀態(tài)01
???????????????IF?(washing_time?>?"00000000")?THEN
??????????????????state?<=?"01";
???????????????ELSE
??????????????????state?<=?"10";
???????????????END?IF;
????????????WHEN?"10"?=>--結(jié)束狀態(tài),返回00
???????????????state?<=?"00";
????????????WHEN?OTHERS?=>
???????????????state?<=?"00";
?????????END?CASE;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(state?=?"00")?THEN
????????????end_led_buf?<=?'1';--狀態(tài)00,提示洗衣結(jié)束
?????????ELSE
????????????end_led_buf?<=?'0';
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???end_led?<=?end_led_buf;
???
???PROCESS?(clk_in)--設(shè)輸入clk為50Hz,分頻到1Hz
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(second_div_cnt?>=?"0000110010")?THEN--50
????????????second_div_cnt?<=?"0000000000";
????????????second_en_1s?<=?'1';--1S脈沖信號(hào)
?????????ELSE
????????????second_div_cnt?<=?second_div_cnt?+?"0000000001";
????????????second_en_1s?<=?'0';
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(second_cnt?=?"00111011")?THEN--秒計(jì)時(shí)到59,生產(chǎn)分計(jì)時(shí)脈沖
????????????min_en?<=?'1';
?????????ELSE
????????????min_en?<=?'0';
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????min_en_buf?<=?min_en;
??????END?IF;
???END?PROCESS;
???
???min_en_rise?<=?min_en?AND?(NOT(min_en_buf));
???PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(start_key_rise?=?'1')?THEN
????????????washing_time?<=?"00001111";--?預(yù)置計(jì)時(shí)時(shí)間15分鐘
?????????ELSIF?(min_en_rise?=?'1')?THEN--分鐘脈沖到了,分鐘時(shí)間減1
????????????IF?(washing_time?>?"00000000")?THEN
???????????????washing_time?<=?washing_time?-?"00000001";
????????????ELSE
???????????????washing_time?<=?"00000000";
????????????END?IF;
?????????ELSE
????????????washing_time?<=?washing_time;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???second_en?<=?second_en_1s;
--???second_en?<=?second_en_1s;
PROCESS?(clk_in)
???BEGIN
??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN
?????????IF?(start_key_rise?=?'1')?THEN
????????????second_cnt?<=?"00000000";
?????????ELSIF?(second_en?=?'1')?THEN
????????????IF?(second_cnt?>=?"00111011")?THEN--秒計(jì)時(shí)到59返回0
???????????????second_cnt?<=?"00000000";
????????????ELSE
???????????????second_cnt?<=?second_cnt?+?"00000001";
????????????END?IF;
?????????ELSE
????????????second_cnt?<=?second_cnt;
?????????END?IF;
??????END?IF;
???END?PROCESS;

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=572

  • 2-240116091S44B.doc
    下載

相關(guān)推薦