经典!也同意二楼的说法 这些都是我从书上得到的一些东西,想请教下面一个例子,一个两段式的fsm设计 always @ (posedge clk or negedge nrst) if (!nrst) CS <= IDLE; --这个我可以理解用时序逻辑 else CS <=NS; always @ (CS or i1 or i2) begin NS = 3'bx; case (CS) IDLE: begin IDLE_out; if (~i1) NS = IDLE; --这个always语句为什么用组合逻辑?ns也跟状态cs有关阿!请高手指点 case (CS) if (i1 && i2) NS = S1; if (i1 && ~i2) NS = ERROR; end S1: begin S1_out; if (~i2) NS = S1; if (i2 && i1) NS = S2; if (i2 && (~i1)) NS = ERROR; end S2: begin S2_out; if (i2) NS = S2; if (~i2 && i1) NS = IDLE; if (~i2 && (~i1)) NS = ERROR; end ERROR: begin ERROR_out; if (i1) NS = ERROR; if (~i1) NS = IDLE; end endcase end