在本文中 Clemford E. Cummings的具有合成优化,无毛刺输出的FSM设计的编码和脚本技术
对于无故障状态机,它是指将状态寄存器(即复位块)与状态转换块分开:
我的问题是,就现实行为而言(不是模拟,因为模拟不会描绘故障),它等于以下内容:
always@(posedge clk or negedge rst_n or ws or go)
if( !rst_n)
state<= IDLE; // initializing the state
else begin
case(state)
IDLE: begin
if(go) state<= read;
else state<= idle;
end
// rest of state transition code
endcase
end
// the *registered outputs sequential always block* goes here
答案 0 :(得分:1)
是不同的。至少是一件事。在您的示例中
if( !rst_n)
state<= IDLE; // initializing the state
else begin
case(state)
当state
重置为IDLE时,在rst_n为低(并且不是在相同的时钟脉冲)下,将不执行else
部分,也不会执行case
语句。
在Cummings的示例中,state
将在相同的时钟沿求值,尽管由
always @(state, ...)
阻止