这是一个水位控制系统,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
FPGA水位控制系统解析:S1-S3传感器与FR1-FR3开关

博客探讨了一个水位控制系统的原理,其中S1、S2、S3传感器监测水位,FR3、FR2、FR1开关调节水流。ΔFR用于标记水位下降,系统根据水位状态分为四类:低于S1、S1到S2之间、S2到S3之间以及超过S3。目前对ΔFR的处理策略还在探讨中。
最低0.47元/天 解锁文章
845

被折叠的 条评论
为什么被折叠?



