十大知名平面设计公司,廊坊优化网站排名,wms仓储管理系统,有什么网站可以接淘宝设计单做本题目理解起来有点难#xff0c;要观察题目中给的三个时序图#xff0c;通过时序图可以发现#xff0c;状态有四个#xff1a;byte1、byte2、byte3#xff0c;还有一个“#xff1f;”状态。其中#xff0c;byte1的下一个状态一定是byte2#xff0c;byte2的下一个状态…本题目理解起来有点难要观察题目中给的三个时序图通过时序图可以发现状态有四个byte1、byte2、byte3还有一个“”状态。其中byte1的下一个状态一定是byte2byte2的下一个状态一定是byte3但是byte3的下一个状态可能是“”需要通过in[3]来确定。于是先写出下面的代码运行错误
module top_module(input clk,input [7:0] in,input reset, // Synchronous resetoutput done); //parameter byte14b0001, byte24b0010, byte34b0100, byte_fault4b1000;reg [3:0] state,next_state;// State transition logic (combinational)always(*)begincase(state)byte1: next_state byte2;byte2: next_state byte3;byte3: next_state in[3]?byte1:byte_fault;byte_fault: next_state in[3]?byte1:byte_fault; default: next_state byte1;endcaseend// State flip-flops (sequential)always(posedge clk)beginif(reset)state byte1;elsestate next_state;endalways(posedge clk)beginif(state byte3)done 1;elsedone 0;end// Output logic//assign done (state byte3);endmodule通过对比大神写的代码发现两个问题1、reset时state不是byte1而是byte_fault这一点题目没说明白。2、done判断条件为什么不能用我写的always块而是assign
module top_module(input clk,input [7:0] in,input reset, // Synchronous resetoutput done); //parameter byte14b0001, byte24b0010, byte34b0100, byte_fault4b1000;reg [3:0] state,next_state;// State transition logic (combinational)always(*)begincase(state)byte1: next_state byte2;byte2: next_state byte3;byte3: next_state in[3]?byte1:byte_fault;byte_fault: next_state in[3]?byte1:byte_fault; default: next_state byte1;endcaseend// State flip-flops (sequential)always(posedge clk)beginif(reset)state byte_fault;elsestate next_state;end// Output logicassign done (state byte3);endmodule