名称:洗衣机控制器Verilog代码vivado ego1开发板
软件:vivado
语言:Verilog
代码功能:
洗衣机控制器
(1)设计一个洗衣机控制器,使洗衣机作如下运转:定时启动—〉正转20秒—〉暂停10秒—〉反转20秒—〉暂停10秒—〉定时不到,重复上面过程。
(2)若定时到,则停止,并发出提示信号。
(3)用两个数码管显示洗涤的预置时间(15分钟),按倒计时方式对洗涤过程作计时显示,直到时间到停机;洗涤过程由开始信号开始。
(4)三只LED灯表示正转、反转、暂停三个状态。
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
1. 工程文件
2. 程序文件
3. FPGA型号
4. 程序编译
5. Testbench
6. 仿真图
Washing_time是剩余时间倒计时,程序内预置时间15分钟倒计时,洗衣结束后end_led信号拉高,表示洗衣结束信号
Led[2:0] 是正转反转暂停信号,led[2]为正转,led[1]为暂停,led[0]为反转
数码管显示,首先把Washing_time转换为十位ten_wei和个位one_wei,然后分别扫描显示,
下图中十位=1,个位=5,1对应数码管码字为8'hf9,5对应数码管码字为8'h92,所以下图f9,92依次显示。
部分代码展示:
`timescale 1ns / 1ps //testbench module wash_machine_test(); reg clk_in;//50Hz reg start_key;//启动按键 wire [2:0] led;//正转,反转,暂停 wire end_led; //洗衣结束信号 wire [1:0] bit_select;// wire [7:0] dig_led2;//数码管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;//开始按键按下 #50; start_key=0; #100; end //产生时钟 always begin clk_in=1; #10; clk_in=0; #10; end endmodule
源代码
扫描文章末尾的公众号二维码