什么建设网站好,广告策划书包括哪些内容,soho做网站,安卓系统是谁开发的这几天在刷HDLBits,参考的是HDLBits中文导学专栏:HDLBits中文导学,刷到120题的时候发现缺少了中间的120题到126题的解析#xff0c;就打算自己边写边记录一下。也方便其他的同学进行参考。Problem 120 Simple FSM 1s牛刀小试一个很简单的状态机的题目#xff0c;给定一个输入…这几天在刷HDLBits,参考的是HDLBits中文导学专栏:HDLBits中文导学,刷到120题的时候发现缺少了中间的120题到126题的解析就打算自己边写边记录一下。也方便其他的同学进行参考。Problem 120 Simple FSM 1s牛刀小试一个很简单的状态机的题目给定一个输入两种状态一个输出。注意复位的时候复位成B状态复位采用同步复位。解答与分析这里我们采用三段式的写法来描述这个简单的状态机。三段式状态机基本格式是:采用组合逻辑判断状态转移条件状态触发器实现描述输出逻辑(既可以用组合电路输出也可以用时序电路输出) 状态转移条件根据输入信号以及当前的状态确定次态。 always (*) begincase(state)B:next_statein?B:A;A:next_statein?A:B;endcaseend 状态触发器实现在时钟边沿实现状态寄存器的跳变以及状态复位 always (posedge clk) beginif(reset) stateB;else statenext_state;end输出逻辑根据当前状态实现输出 assign outstate?1:0;Problem 121 Simple FSM 2牛刀小试一个很简单的状态机的题目给定两个输入两种状态一个输出。两种状态分别为开关。复位的时候复位成OFF状态。复位采用异步复位OFF状态输出0,ON状态输出1。解答与分析状态转移条件根据输入信号以及当前的状态确定次态。 always (*) begincase(state)OFF:next_statej?ON:OFF;ON:next_statek?OFF:ON;endcaseend状态触发器实现在时钟边沿实现状态寄存器的跳变以及状态复位 always (posedge clk, posedge areset) beginif(areset) stateOFF;else statenext_state;end输出逻辑根据当前状态实现输出 assign outstate?1:0;Problem 122 Simple FSM 1s牛刀小试跟上题类似只是复位方式不同而已不再赘述。Problem 123 Simple state transitions 3牛刀小试如图所示一共有A,B,C,D四种状态。需要在满足特定输出的情况下进行状态转移和输出state、next_state此时作为输入输出信号而不是内部信号。解答与分析如图所示一共有A,B,C,D四种状态。状态转移逻辑和输出也很清晰的告诉了我们了。我们只要用状态机进行实现就可以了。状态转移条件根据输入信号以及当前的状态确定次态。 always (*) begincase(state)A:next_statein?B:A;B:next_statein?B:C;C:next_statein?D:A;D:next_statein?B:C;endcaseend输出逻辑根据当前状态实现输出 assign out(stateD)?1:0;Problem 124 Simple one-hot state transitions 3牛刀小试解答与分析独热码状态机的正确写法。独热码状态机仅使用单bit表示状态是否处在某一状态仅跟一个bit有关而下个状态的转移也仅与一个bit有关。与其他bit无关。因此我们要按下面的写法写状态转移条件。状态转移条件根据输入信号以及当前的状态确定次态。 assign next_state[A] state[A](in 0) | state[C] (in 0);assign next_state[B] state[A]in | state[B]in | state[D]in;assign next_state[C] state[B](in 0) | state[D](in 0);assign next_state[D] state[C] in;输出逻辑根据当前状态实现输出 assign out(state[D])?1:0;Problem 125 Simple FSM 3牛刀小试同样是一道状态机的题目给定一个输入四种状态一个输出。复位采用异步复位复位成A状态。D状态输出1其他状态输出0解答与分析状态转移条件根据输入信号以及当前的状态确定次态。 always (*) begincase(state)A:next_statein?B:A;B:next_statein?B:C;C:next_statein?D:A;D:next_statein?B:C;endcaseend 状态触发器实现在时钟边沿实现状态寄存器的跳变以及状态复位 always (posedge clk, posedge areset) beginif(areset) stateA;else statenext_state;end输出逻辑根据当前状态实现输出 assign out(stateD)?1:0;Problem 126 Simple FSM 3s牛刀小试解答与分析跟上题类似只是复位方式不同而已不再赘述。直接给出代码module top_module(input clk,input in,input reset,output out); //reg [1:0] state,next_state;parameter A0,B1,C2,D3;always (*) begincase(state)A:next_statein?B:A;B:next_statein?B:C;C:next_statein?D:A;D:next_statein?B:C;endcaseendalways (posedge clk) beginif(reset) stateA;else statenext_state;endassign out(stateD)?1:0;
endmodule