HDLBits Verilog编程题127 存水放水状态机

本文介绍了如何使用Verilog编程实现一个存水放水状态机。该状态机根据水位S1、S2、S3的状态来控制fr1、fr2、fr3和dfr信号,当水位变化时,dfr指示放水过程。设计中采用了6个状态位,并清晰地定义了状态转换条件。
摘要由CSDN通过智能技术生成

HDLBits 存水放水状态机-Exams/ece241 2013 q4

状态转换图
状态转换图
原题链接:https://hdlbits.01xz.net/wiki/Exams/ece241_2013_q4
说明:
水位在S1下(S1,S2,S3=0):fr1,fr2,fr3,dfr=1;
水位在S2和S1之间(S1=1,S2,S3=0):fr1, fr2=1;
水位在S3和S2之间(S1,S2=1,S3=0):fr1=1;
水位超过S3(S1,S2,S3=1):fr1,fr2,fr3,dfr=0。
并要求前一时刻的水位高于当前时刻水位时(即放水过程)dfr=1。
本思路中使用了6个状态位,为直观方便将转换条件单独提出。

module top_module (
    input clk,
    input reset,
    input [3:1] s,
    output fr3,
    output fr2,
    output fr1,
    output dfr
); 
    
    parameter S0 = 4'd0;
    parameter S1 = 4'd1;
    parameter S2 = 4'd2;
    parameter S3 = 4'd3;
    parameter S4 = 4'd4;
    parameter S5 = 4'd5;

    reg [2:0] state_c, state_n;
    wire S02S1, S12S0, S12S2, S22S3, S22S5, S32S4, S42S5, S42S3,<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值