名称:洗衣机控制器Basys2开发板verilog电子定时器倒计时
软件:ISE
语言:Verilog
代码功能:
洗衣机控制器设计要求
(1)设计一个电子定时器,控制洗衣机做如下运转:定时启动→正转25s→暂停5s→反转25s→暂停。如果定时未到,则回到“正转25s→暂停5S→…,定时到则停止
(2)若定时到,则停机发出音响信号。
(3)用两个数码管显示洗涤的预置时间(分钟数),按倒计时方式对洗涤过程作计时显示,直到时间计时结束;洗涤过程由“开始”信号开始。
(4)3只LED灯表示“正转”、“反转”、“暂停“等3个状态。
教学提示
(1)设计20s、10s定时电路。
(2)电路输出为“正转”、“反转”、“暂停“等3个状态。
(3)按照设计要求,用定时器的"时间到”信号启动相应的下一个定时器工作,直到整个过程结束
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在Basys2开发板验证,开发板如下,其他开发板可以修改管脚适配:
设计文档:
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,//数码管段选 output [1:0] SEL//数码管位选 ); 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),//数码管段选 . SEL(SEL)//数码管位选 ); endmodule