名称:自动售水机设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
自动售水机
投币一块钱5升水,每次只能投币一元,可以投币多次,投一元加5升,按下开始键后出水。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
整体仿真图
上图仿真了投币3元,出水15升,投币3次后,按下start按键,开始出水。水量倒计时15~0.
分频模块
上图仿真了100Hz分频到1Hz
控制模块
上图仿真了控制模块控制投币3次后,按下start按键,开始出水。水量倒计时15~0.
显示模块
上图仿真了数码管显示模块,水量转换为十位和个位,通过2个数码管显示
部分代码展示:
//出水控制模块 module?water_ctrl( input?clk_1Hz,//1Hz input?reset,//复位按键,按下低电平 input?coin_in,//投币1元,按下低电平 input?start,//启动按键,按下低电平 output?[7:0]?rest_water//剩余出水量 ); parameter?s_idle=3'd0; parameter?s_start=3'd1;//启动 parameter?s_suspend=3'd2;//暂停 parameter?s_end=3'd3;//停止 reg?[2:0]?state=s_idle; reg?[7:0]?water_need_buf=8'd0;//剩余时间 reg?[7:0]?water_need=8'd50;//定时时间 always@(posedge?clk_1Hz?or?negedge?reset) if(!reset)//复位按键,按下低电平 state<=s_idle; else case(state)//空闲,设置定时时间 s_idle: if(!start)//启动 state<=s_start;//启动 else state<=s_idle; s_start: if(water_need_buf==8'd0)//计时结束 state<=s_end; else state<=s_start; s_end: state<=s_end; default:; endcase reg?coin_in_buf; always@(posedge?clk_1Hz?or?negedge?reset) if(!reset) coin_in_buf<=0; else
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1038
阅读全文
245