一、题目

如图所示,需要我们设计一个可以根据传感器提供的水位变化来控制水流的装置。
二、解题过程
2.1 审题
由于前几题的思维惯性,我第一步没有关注输出的四项,而是首先考虑了不同状态的变化(这也导致我后续再单独考虑输出时,思路就比较混乱)。同时,这里我也被表格一定程度误导,以三个传感器提供的输入将本题简单考虑成了四个状态lowest、s1_a、s2_a、s3_a,分别表示水位最低,水位在s1和s2之间,水位在s2和s3之间,水位在s3上方。下一步就是先写状态转换的代码。
2.2 状态转换
parameter lowest=0, s1_a=1, s2_a=2, s3_a=3 ;
reg [1:0] state, next_state ;
always@(*)begin
case(state)
lowest : next_state = s[1] ? s1_a : lowest ;
s1_a : next_state = s[2] ? s2_a : (s[1] ? s1_a : lowest) ;
s2_a : next_state = s[3] ? s3_a : (s[2] ? s2_a : s1_a) ;
s3_a : next_state = s[3] ? s3_a : s2_a ;
endcase
end
always@(posedge clk)begin
if(reset)
state <= lowest ;
else
state <= next_state ;
end

最低0.47元/天 解锁文章
689

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



