|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
我看资料上FSM的状态编码使用one-hot编码时,在写下一状态产生逻辑时,通常用的是这样一个语句:case(1'b1).我有些不明白case(1'b1)是什么意思呢?是遇到一个1位的1就执行case 语句吗?如果是那样的话,那么这里的case(1'b1)能不能换成case(cur_state)?
还有一个问题就是假如这时cur_state是4'b0,而N或D是1'b1,那么case语句是不是就会去执行default语句?如果这样的话,会不会有潜在的危险?
部分代码:
always @(cur_state or N or D)
begin
next_state = 4'b0 ;
case(1'b1)
cur_state[Idle]:
if(N)
next_state[State5] = 1'b1 ;
else if(D)
next_state[State10] = 1'b1 ;
else
next_state[Idle] = 1'b1 ;
cur_state[State5]:
if(N)
next_state[State10] = 1'b1 ;
else if(D)
next_state[State15] = 1'b1 ;
else
next_state[State5] = 1'b1 ;
cur_state[State10]:
if(N || D)
next_state[State15] = 1'b1 ;
else
next_state[State10] = 1'b1 ;
cur_state[State15]:
next_state[Idle] = 1'b1 ;
default:
next_state[Idle] = 1'b1 ;
endcase
end |
|