这是一个水位控制系统,S1,S2,S3是三个水位传感器。FR3,FR2,FR1为三个控制水流量的开关,开得越多流量越大。ΔFR是检测水位变化的标志,若前一时间的水位高于当前时间的水位就置1.
一共四种状态低于s1,s1与s2之间,s2与s3之间,超过s3.
dfr还没想到怎么处理。。。
module top_module (
input clk,
input reset,
input [3:1] s,
output fr3,
output fr2,
output fr1,
output dfr
);
parameter A=0,B=1,C=2,D=3;
reg [1:0] state,next;
always @(*) begin
case(state)
A: next = s[1] ? B : A;
B: next = s[2] ? C : (s[1] ? B : A);
C: next = s[3] ? D : (s[2] ? C : B);
D: next = s[3] ? D : C;
endcase
end
always @(posedge clk) begin
if(reset)
state <= A;
else
state <= next;
end
assign
fr3 = state==A,
fr2 = state==B | state==A,
fr1 = state==C | state==B | state==A,
dfr = (state<next);//dfr不对未找到解决办法
endmodule
版权声明:本文为weixin_43291010原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。